/**
 * @author F�bio Miranda Costa <fabiomcosta@gmail.com>
 * http://www.meiocodigo.com
 */
 
var bottomTips,topTips;

Element.implement({
	/*
	 *	Fun��o para apagar o valor de um input onFocus e recolocar o valor onBlur.
	 *  @param valueString - o value que deve aparecer no input
	 *  Exemplo de uso: $('informativo_email').clearFocusResetBlur('DIGITE SEU E-MAIL');
	 *  deve ser sempre usado em scripts.php
	 */
	clearFocusResetBlur:
		function(valueString){
			this.onfocus = function(){
				if( this.get('value') == valueString ) this.set('value','');
			}
			this.onblur = function(){
				if( this.get('value') == "" ) this.set('value',valueString);
			}
		}
	,
	addMenuEvents:
		function($el){
			this.addEvent('mouseenter',function(){
				$el.fade('in');
			});
			this.addEvent('mouseleave',function(){
				$el.fade('out');
			});
		}
	,
	setFavoritePage:
		function(pagePath){
			
			var favoriteCookie = new Hash.Cookie('unimedFavoritos', {duration: 365,path: '/'});
			var portalId = $('portal_id').get('value'),
				pageId = $('pagina_id').get('value');
			
			if( favoriteCookie.has(portalId) ){
				var pages = favoriteCookie.get(portalId);

				if( pages.contains(pageId) ){
					pages = pages.erase(pageId);
					this.store('tip:title','ADICIONAR AO FAVORITOS');
					this.removeClass('selected_fav_star');
				}
				else{
					
					addPageTipEffect();
					
					pages.push(pageId);
					this.store('tip:title','REMOVER DOS FAVORITOS');
					this.addClass('selected_fav_star');
				}
				if( pages.length == 0 ){
					favoriteCookie.erase(portalId);
				}
				else{
					favoriteCookie.set(portalId,pages);
				}
			}else{
				
				addPageTipEffect();
				
				favoriteCookie.set(portalId,[pageId]);
				this.store('tip:title','REMOVER DOS FAVORITOS');
				this.addClass('selected_fav_star');
			}
			
			new Request({
				url: pagePath+'nav/teste.php?idPortal='+portalId+'&idPagina='+pageId,
				onSuccess: function(txt){
					$('aqui').set('html', txt);
					unimed.setFavItemsEffects( $('fav_scroller').getElements('li') , pagePath );
				}
			}).send();
			
			return false;
			
			
		}
});

function addPageTipEffect(){
	var $favTip;
	// setar tooltip de adicionado ao botao do favoritos
	$favTip = $('tip_adicionar_favoritos');
	if( $favTip == null ){
		var favPos = $('seta_fav').getPosition();
		$favTip = $$('.toptips')[0].clone().set('id','tip_adicionar_favoritos').setStyles({left:favPos.x+10,top:favPos.y-25}).fade('hide').inject($(document.body));
		$favTip.getElement('.tip').getElement('.tip-title').set('html','PÁGINA ADICIONADA!');
	}
	$favTip.fade('in');
	setTimeout(function(){ $favTip.fade('out'); },5000);
}

var unimed = {
	treeLevel: 1,
	setSubmenus:
		function(){
			var $liMenus = $$('li.menu');
			var nMenus = $liMenus.length;
			var i;
			var $subm;
			for(i=1;i<=nMenus;i++){
				if( $liMenus[i-1].hasClass('sesq') ){
					$subm = $liMenus[i-1].getElement('div.subm');
					$liMenus[i-1].addMenuEvents( $subm );
					$subm.fade('hide');
					this.setMenuStructure($liMenus[i-1],'left',i);
				}
				else if( $liMenus[i-1].hasClass('sdir') ){
					$subm = $liMenus[i-1].getElement('div.subm');
					$liMenus[i-1].addMenuEvents( $subm );
					$subm.fade('hide');
					this.setMenuStructure($liMenus[i-1],'right',i);
				}
				this.treeLevel = 1;
			}
		}
	,
	setMenuStructure:
		function($root,styleToChange,i){
			
			var $lis = $root.getElements('li.s'+i+'_n'+this.treeLevel);
			var maxLiWidth = 0;
			var elWidth;
			var _this = this;
			var $divss = null;
			if( $lis.length > 0 ){
				//pegando largura maxima dos menus
				$lis.each(function($el){
					elWidth = $el.getStyle('width').toInt();				
					if( elWidth > maxLiWidth ){
						maxLiWidth = elWidth;
					}
				});
				//setando largura dos menus
				$lis.each(function($el){
					//bug do ie
					if(maxLiWidth%2!=0) maxLiWidth++;
					$el.setStyle('width',maxLiWidth);
					$divss = $el.getElement('div.s'+i+'_n'+(_this.treeLevel+1));
					if($divss != null){
						$el.addMenuEvents($divss);
						$divss.fade('hide');
						$divss.setStyle(styleToChange,maxLiWidth+9);
						_this.treeLevel++;
						_this.setMenuStructure($divss,styleToChange,i);
					}
				});
			}
			this.treeLevel--;
		}
	,
	/*
	 * Seta efeitos do favoritos
	 */
	setFavoritesEffects:
		function(imgsFolder,pagePath){
			var _this = this;
			var $setaFav = $('seta_fav');
			var $fecharFav = $('fechar_fav');
			var $mosaico_fav = $('mosaico_fav');
			
			var tweenMosaicShow = new Fx.Tween($mosaico_fav,{duration:500,
				property:'left',
				transition:Fx.Transitions.Expo.easeOut,
				onComplete:function(){
					$fecharFav.addEvent('click',hideFavorites);
				}
			});
			
			var tweenMosaicHide = new Fx.Tween($mosaico_fav,{duration:1400,
				property:'left',
				transition:Fx.Transitions.Expo.easeOut,
				onComplete:function(){
					$setaFav.addEvent('click',showFavorites);
				}
			});
				
			var showFavorites = function(){
				tweenMosaicShow.start('0px');
				$setaFav.setStyle('visibility','hidden');
				$setaFav.removeEvent('click',showFavorites);
			}
			
			var hideFavorites = function(){
				tweenMosaicHide.start('-422px');
				$setaFav.setStyle('visibility','visible');
				$fecharFav.removeEvent('click',hideFavorites);
			}
			
			$setaFav.addEvent('click',showFavorites);
			
			//setando fun��es hover dos icones favoritos
			var $favScroller = $('fav_scroller');
			var $favPagUl = $('fav_paginacao_ul');
			var $favItems = $favScroller.getElements('li');
			
			// ajeita a largura da pagina��o para centralizar
			var $favPaginacao = $('fav_paginacao');
			$favPaginacao.setStyle('width',$favPagUl.getStyle('width'));
			
			
			this.setFavItemsEffects($favItems,pagePath);
			
			
			//paginacao
			var currentPage = 1;
			var $setaEsq = $('fav_pag_esq');
			var $setaDir = $('fav_pag_dir');

			var $aPag = $favPagUl.getElements('a.fav_pag');
			var nPags = $aPag.length;
			
			var INI_POS = $favScroller.getStyle('left').toInt();
			// quantidade em pixels da movimentacao da caixa em x
			var deltaX = 390;
			var $fxFavScroller = new Fx.Tween($favScroller,{property:'left'});
			
			var changePage = function(pageNumber){
				$fxFavScroller.start(INI_POS-((pageNumber-1)*deltaX));
				$aPag.each(function($el,i){
					if( i == pageNumber-1 ) $el.addClass('pg_atual');
					else $el.removeClass('pg_atual');
				});
			};
			
			$aPag.each(function($el,i){
				$el.addEvent('click',function(){
					currentPage = this.get('text');
					changePage(currentPage);
					return false;
				});
			});
			
			$setaDir.addEvent('click',function(){
				if( currentPage < nPags )
					changePage(++currentPage);
				return false;
			});
			$setaEsq.addEvent('click',function(){
				if( currentPage > 1 )
					changePage(--currentPage); 
				return false;
			});
		}
	,
	
	/*
	 * Seta efeitos nos items dos favoritos
	 */
	
	setFavItemsEffects:
		function($favItems,pagePath){
			var $tmpImg = null;
			var portalId = $('portal_id').get('value');
			var thisPageId = $('pagina_id').get('value');
			
			$favItems.each(
				function($el,i){
					$el.addEvent('mouseenter',function(){
						this.addClass('fav_icon_hover');
					});
					$el.addEvent('mouseleave',function(){
						this.removeClass('fav_icon_hover');
					});
					if( Browser.Engine.trident4 ){
						$tmpImg = $el.getElement('img');
						if( $tmpImg.get('src').match(/\.png$/) !== null ){
							$tmpImg.style.width = $tmpImg.width + "px";
							$tmpImg.style.height = $tmpImg.height + "px";
							$tmpImg.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + $tmpImg.get('src') + "', sizingMethod='crop')";
							$tmpImg.src = imgsFolder+'x.gif';
						}
					}
					$el.getElement('.remover').addEvent('click',function(){
						var $thisUl = this.getParent('ul');
						var $nextUls = $thisUl.getAllNext('ul');
						this.getParent('li').dispose();
						$nextUls.each(function($el,i){
							var $firstEl = $el.getFirst('li');
							if( $firstEl == null ){
								$el.dispose();
								var $pageButtons = $('fav_paginacao_ul').getElements('li');
								$pageButtons[$pageButtons.length-2].dispose();
								$favPaginacao.setStyle('width',$favPagUl.getStyle('width'));
							}
							else{
								if( i==0 ){
									$thisUl.grab($firstEl);
								}
								else{
									$nextUls[i-1].grab($firstEl);
								}
							}
						});
						// remover dos cookies
						var pageId = this.get('rel');
						var favoriteCookie = new Hash.Cookie('unimedFavoritos', {duration: 365, path: '/'});
						var pages = favoriteCookie.get(portalId);
						if( pages.length > 0 ){
							if( pages.contains(pageId) ){
								pages = pages.erase(pageId);
							}
							if( pages.length == 0 ){
								favoriteCookie.erase(portalId);
							}
							else{
								favoriteCookie.set(portalId,pages);
							}
						}
						
						// modificar status da estrela de favoritos da página
						// se esta for a pagina queestao tentando remover do favoritos
						if( pageId == thisPageId ){
							try{
								$('add_fav').removeClass('selected_fav_star');
								this.store('tip:title','ADICIONAR AO FAVORITOS');
							}catch(e){}
						}
						return false;
					});
				}
			);
		}
	,
	/*
	 * Seta efeitos do menu e drag and drop do mosaico
	 */
	setDragAndDrop:
		function(completeImgPath){
			
			var $menu = $('menu');
			
			// ajeita a largura do menu
			//$menu.setStyle('width',$menu.getElement('ul').getStyle('width'));
			
			var $mosaic = $('mosaico');
			var $droppables = $mosaic.getElements('.link');
			var $draggables = $menu.getElements('a');
			var $elClone = null;
			
			var $submenus = $menu.getElements('.menu');
			
			var coordMosaic = $mosaic.getCoordinates();
			var mosaicMiddle = coordMosaic.left+(coordMosaic.width/2);
			var portalIdNode = $('portal_id');
			var portalId = (portalIdNode)?portalIdNode.get('value'):'';
			var unimedCookie = new Hash.Cookie('unimedMosaico_Portal_'+portalId, {duration: 365});
			
			
			/*var setLeftOrRight = function($el){
				if( $el.hasClass('sesq') || $el.hasClass('sdir') ){
					var posEl = $el.getPosition();
					if( posEl.x < mosaicMiddle ){
						if( $el.hasClass('sdir') ){
							$el.removeClass('sdir').addClass('sesq');
							$el.getElements('div.sub').each(function(el,i){
								var temp = el.getStyle('left');
								el.setStyle('left',null);
								el.setStyle('right',temp);
							});
						}
					}
					else{
						if( $el.hasClass('sesq') ){
							$el.removeClass('sesq').addClass('sdir');
							$el.getElements('div.sub').each(function(el,i){
								var temp = el.getStyle('right');
								el.setStyle('right',null);
								el.setStyle('left',temp);
							});
						}
					}
				}
			}
			
			var fixSubmenus = function(){
				$submenus.each(function($el,i){
					setLeftOrRight($el);
				});
			};*/
			
			var fabDrag = new Class({
				Extends: Drag.Move,
				initialize: function(element,options){
					this.parent(element, options);
					if(Browser.Engine.trident5)this.handles.ondragstart=function(){return false};
				}
			});
			
			var initializeDrag = function($el){
				new fabDrag($el, {
					droppables: $droppables,
					
					onStart:function($el){
						//$parentContainer = $el.getParent();
						//$el.setStyle('color','#cccccc');
						$elClone = $el.clone();
						//$el.addEvent('click',$lambda(false));
						$elClone.setStyle('color','#cccccc');
						if($elClone.hasClass('a_menu')) $elClone.setStyles({position:'absolute',left:'4px'});
						else $elClone.setStyles({position:'absolute',left:'0',top:'5px'});
						$el.getParent().grab($elClone);
					},
					
					onDrop: function($el, $drop){
						//$el.removeEvent('click');
						if ($drop){
							//var $aEl = $drop.getFirst();
							//$aEl.set('html',$aEl.get('title'));
							var imgName = $el.get('name');
							//coloca nova imagem
							if(imgName!=null){
								var $imgReceiver = $('b'+$drop.get('id'));
								if( $imgReceiver.hasClass('h2') ) imgName += 'h';
								else if( $imgReceiver.hasClass('v2') ) imgName += 'v';
								$imgReceiver.empty();
								var newImg = new Element('img',{src:completeImgPath+imgName+'.jpg',alt:$el.get('title')}).inject($imgReceiver);
							}
							var imgName = imgName?imgName:'';
							//initializeDrag($aEl);
							//$aEl.erase('style');
							//$parentContainer.grab($aEl);
							$drop.empty();
							var elHtml = $el.get('html');
							$el.empty();
							var $spanMiddle = new Element('span',{'class':'middle'});
							var $span = new Element('span',{'html':elHtml});
							$spanMiddle.grab($span);
							$el.grab($spanMiddle);
							$drop.grab($el);
							$el.erase('style');
							$drop.setStyle('border','1px solid #ffffff');
							initializeDrag($elClone);
							$elClone.erase('style');
							unimedCookie.set( $drop.get('id') , [$el.get('title'),$el.get('href'),imgName] );
							//fixSubmenus();
						}
						else{
							$el.erase('style');
							$elClone.dispose();
						}
					},
				 
					onEnter: function(el, drop){
						drop.setStyle('border','1px dashed #136734');
					},
				 
					onLeave: function(el, drop){
						drop.setStyle('border','1px solid #ffffff');
					}
					
				});
			}
			
			$draggables.each(function($el,i){
				initializeDrag($el);
			});	
		}
	,
	setToolTips:
		function(){
			topTips = new Tips('a.ttipcima',{className:'toptips',offsets:{x:0,y:-35}});
			bottomTips = new Tips('a.ttipbaixo',{className:'bottomtips'});
		}
	,
	setCarousel:
		function(){
			var $menuPortais = $('menu_portais_cont');
			var _this = null;
			var $aba = $('menu_portais_aba');
			var $fxMenuPortais = new Fx.Tween($menuPortais,{property:'top',link:'cancel'});
			$menuPortais.addEvents({
				'mouseenter':
			   		function(){
						$fxMenuPortais.start(0);
					}
				,
				'mouseleave':
					function(){
						$fxMenuPortais.start(-72);
					}
				}
			);
			
			var mf = new MooFlow($('menu_portais_carrossel'), {
				startIndex: 0,
				bgColor:'transparent',
				useSlider: true,
				useAutoPlay: false,
				useCaption: false,
				useResize: false,
				useWindowResize: false,
				useMouseWheel: true,
				useKeyInput: true,
				factor:46,
				reflection:0,
				heightRatio:0.13,
				offsetY:-145,
				onStart:function(){ new Tips('div#menu_portais_carrossel img',{className:'bottomtips',showDelay:0}); },
				onClickView:function($obj){
					if( $obj.rel && $obj.rel.contains('shadowbox') ){
						Shadowbox.open({
							player:     'iframe',
							title:      $obj.title,
							content:	$obj.href,
							width:      360,
							height:     302
						});
					}
					else{
						window.location.href = $obj.href;
					}
				}
				
			});
			
		}
	,
	setSubMenuIndex:
		function(){
			var $subMenu = $('mais_links_index');
			$subMenu.fade('hide');
			$('mais_link_index').addEvents({
				mouseenter:
					function(){$subMenu.fade('in')}
				,
				mouseleave:
					function(){$subMenu.fade('out')}
			});
		}
	,
	setAddToFavorite:
		function(pagePath){
			$('add_fav').addEvent('click',function(){
				this.setFavoritePage(pagePath);
				return false;
			});
		}
	,
	setGallerySlide:
		function(){
			/* SLIDE SHOW DA GALERIA */
			var $galeria = $$('.galeria_thumbs')[0],
				$setaEsq = $galeria.getElement('.seta_esq'),
				$setaDir = $galeria.getElement('.seta_dir'),
				$galeriaScroll = $galeria.getElement('.galeria_scroll'),
				$scroll = $galeriaScroll.getElement('ul'),
				$lis = $scroll.getElements('li'),
				nPages = Math.ceil($lis.length/3),
				fxScroll = new Fx.Tween($scroll,{property:'left',duration:600,link:'cancel',transition:Fx.Transitions.Expo.easeOut}),
				startX = $scroll.getStyle('left').toInt(),
				deltaX = $scroll.getParent('div').getStyle('width').toInt()+$lis[0].getStyle('paddingRight').toInt(),
				currentPage = Math.floor( (startX/deltaX) );
			$setaEsq.addEvent('click',function(){
				if( currentPage > 0 ){
					currentPage--;
					fxScroll.start(-(currentPage*deltaX));
				}
				return false;
			});
			$setaDir.addEvent('click',function(){
				if( currentPage < (nPages-1) ){
					currentPage++;
					fxScroll.start(-(currentPage*deltaX));
				}
				return false;
			});
		}
};
