/*
 * Proyecto 83 - http://proyecto83.com - "Simplify, simplify, simplify"
 * Copyright (C) 2008 Emilio Mariscal
 * 
 * == BEGIN LICENSE ==
 * 
 * Licensed under the terms of any of the following licenses at your
 * choice:
 * 
 *  - GNU General Public License Version 2 or later (the "GPL")
 *    http://www.gnu.org/licenses/gpl.html
 * 
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 *    http://www.gnu.org/licenses/lgpl.html
 * 
 * == END LICENSE ==
 * 
 * 	File Name  :
 *
 * 	visualfx.js
 *
 * File Authors :
 * 		Emilio Mariscal ( emi420@gmail.com )
 */
 
var visualFX = {

	/*** DropDown menus ( menus desplegables )***/

	ConfigMenuTimeOut : 1500,		 // 1500 = 1.5 seg para esconder el menu
	
	eMenu : null,		// Elemento menu
	aMenuList : null,	// Array menu (listado)
	cMenu : 0,			//  Control menu 
	
	loadMenu: function( eId ) {
		
		eMenu = document.getElementById(eId) ;
		aMenuList = eMenu.getElementsByTagName('li') ;
	
		for( var i = 0 ; i < aMenuList.length ; i++ ) {
		
			if( ( aMenuList[i].className == 'dw-menu') || (aMenuList[i].className == 'dw-menu on' ) ) {

			var aMenuListElements = aMenuList[i].getElementsByTagName('li') ;
				
				for( var j = 0 ; j < aMenuListElements.length ; j++ ) {
				
					aMenuListElements[j].onmouseover = function() {
						visualFX.cMenu = 1 ;
					}

					aMenuListElements[j].onmouseout = function() {
						visualFX.cMenu = 0 ;
						setTimeout( "if(visualFX.cMenu==0) visualFX.hideMenus()" , visualFX.ConfigMenuTimeOut );
					} 						
				
					if( aMenuListElements[j].className == 'dw-submenu' ) {
					
						var aSubMenuListElements = aMenuListElements[j].getElementsByTagName('li') ;
						for( var k = 0 ; k < aSubMenuListElements.length ; k++ ) {
						
							aSubMenuListElements[k].onmouseover = function() {
								this.className = 'on' ;
							}
							
							aSubMenuListElements[k].onmouseout = function() {
								this.className = null ;
							}
							
						}
						
					} else {
						aMenuListElements[0].getElementsByTagName('a')[0].onmouseover = function() {
							visualFX.cMenu = 1 ;
							currentMenu = this.parentNode.parentNode.parentNode ;
							aSubMenu = this.parentNode.parentNode.getElementsByTagName('li') ;
							if( aSubMenu[1].className != 'dw-submenu' ) {
								visualFX.hideMenus() ;
								aSubMenu[1].className = 'dw-submenu' ; 
								this.parentNode.className = 'on' ;
								currentMenu.className = 'dw-menu on' ;
							}
							document.getElementById('cabecera').className = 'cabecera menu-activo' ;
						} 		
						aMenuListElements[0].getElementsByTagName('a')[0].onmouseout = function() {
							visualFX.cMenu = 0
							setTimeout( "if(visualFX.cMenu==0) visualFX.hideMenus()" , 3000);
						} 							
					}
				}
			}
			
		}
	
	},
	
	/*** Esconder menus desplegables ***/	
		
	hideMenus: function() {
		for( var i = 0 ; i < aMenuList.length ; i++ ) {
			if( aMenuList[i].className == 'dw-submenu' ) {
				aMenuList[i].className = 'dw-submenu hidden';
			} else if ( aMenuList[i].className == 'on' ) {
				aMenuList[i].className = '' ;
			} else if ( aMenuList[i].className == 'dw-menu on' ) {
				aMenuList[i].className = 'dw-menu' ;
			}
		}
		document.getElementById('cabecera').className = 'cabecera' ;
	},

	/*** DropDown box (caja desplegable) ***/
	
	loadDDBox: function( eId ) {
	
		eBox = document.getElementById(eId) ;
		
		eBox.childNodes[0].onclick = function () { 
		
			eBoxContent = document.getElementById( this.parentNode.id + '_c' ) ;
			eBox = document.getElementById( this.parentNode.id ) ;
			
			if(eBoxContent.style.display == 'none') {
				eBox.className = 'menu-expandido' ;
				eBoxContent.style.display = 'block' ;
			} else {
				eBox.className = 'menu' ;
				eBoxContent.style.display = 'none' ;
			}
		} ;
	},
	
	/*** DropDown menu (menu desplegable de un elemento) ***/
	
	cDDMenu: 0,
	aDDMenu: null, 

	loadDDMenu: function( eId ) {
	
		if ( !visualFX.aDDMenu )
			visualFX.aDDMenu = new Array() ;
		var eMenu = document.getElementById(eId) ;		
		var eMenuContent = document.getElementById( eMenu.id + '_c' ) ;

		visualFX.aDDMenu[visualFX.aDDMenu.length] = eMenuContent ;

		// Posicion del menu
		
		var leftPos = visualFX.getLeftPos(eMenu)  ;
		eMenuContent.style.left = leftPos + 'px';
		
		// Correccion OnResize		
		
		window.onresize = function() { 
			for(i = 0; i < visualFX.aDDMenu.length ; i++ ) {
				var leftPos = visualFX.getLeftPos( document.getElementById( visualFX.aDDMenu[i].id.replace('_c','') )  )  ;
				visualFX.aDDMenu[i].style.left = leftPos + 'px';
			}
		} 
		
		// Eventos: OnClick, OnMouseOver, OnMouseOut

		eMenu.onclick = function () { 

			var eMenuContent = document.getElementById( this.id + '_c' ) ;
			var eMenu = document.getElementById( this.id ) ;
			visualFX.hideDDMenus() ;
			
			visualFX.cDDMenu = 1 ;
			
			if(eMenuContent.style.display == 'none') {
				eMenuContent.style.display = 'block' ;
			} else {
				eMenuContent.style.display = 'none' ;
			}
		} ;
		
		var aMenuElements = eMenuContent.getElementsByTagName('li') ;
		
		for(i = 0 ; i < aMenuElements.length ; i++ ) {
			aMenuElements[i].onmouseover = function() {
				visualFX.cDDMenu = 1 ;
			} ;
		}
		
		for(i = 0 ; i < aMenuElements.length ; i++ ) {
			aMenuElements[i].onmouseout = function() {
				visualFX.cDDMenu = 0 ;
				setTimeout( "if(visualFX.cDDMenu==0) visualFX.hideDDMenus() ;" , visualFX.ConfigMenuTimeOut ); 
			} ;
		}
		
	},
	
	/*** Esconder todos los menus desplegables ***/	
		
	hideDDMenus: function() {
		for(i = 0; i < visualFX.aDDMenu.length; i++ )
			visualFX.aDDMenu[i].style.display = 'none' ;
	},
	
	/*** Tooltips ***/
	
	tooltipObj : new Array,
	tooltipIndex : 0,
	activeTooltip : 0,
	
	loadTooltip: function( eId ) {

		if( document.getElementById(eId).hasChildNodes()  ) {
			
			var eTooltip = document.getElementById(eId).firstChild  ;
			var tooltipObj = document.getElementById(document.getElementById(eId).id + '_t') ;
			var msg = '<p>' + tooltipObj.innerHTML + '</p>' ;
			visualFX.tooltip( msg, document.getElementById(eId).id ) ;	
			
			// eventos
	
			document.getElementById(eId).onmouseover = function () { 
				visualFX.activeTooltip = 1 ;
				visualFX.fadeIn(document.getElementById('tooltip_content_' + this.id));
			} ;

			document.getElementById(eId).onmouseout = function() {
				visualFX.activeTooltip = 0 ;			
				visualFX.hideAllTooltips() 
			} ;

		} else {
			var eTooltip = document.getElementById(eId) ;
			var tooltipObj = document.getElementById(eTooltip.id + '_t') ;
			var msg = '<p>' + tooltipObj.innerHTML + '</p>' ;
			
			visualFX.tooltip( msg, eTooltip.id ) ;		

			// eventos
	
			eTooltip.onmouseover = function () { 
				visualFX.activeTooltip = 1 ;
				visualFX.fadeIn(document.getElementById('tooltip_content_' + this.id));
			} ;

			eTooltip.onmouseout = function() { 
				visualFX.activeTooltip = 0 ;	
				visualFX.hideAllTooltips() 
			} ;	
		}	
		
	},	

	tooltip: function( msg, objId ) {

		var inputObj = document.getElementById(objId) ;
		var tooltipIndex = visualFX.tooltipObj.length ;
			
		// Elemento tooltip
		
		
		var tooltipObj = document.createElement('div');
		tooltipObj.style.position = 'absolute';
		
		document.body.appendChild(tooltipObj);
		tooltipObj.id = 'tooltip_content_' + objId;
		
		// Contenido
		var contentDiv = document.createElement('div'); 
		contentDiv.className = 'tooltip_content';
		tooltipObj.appendChild(contentDiv);
		contentDiv.innerHTML = msg ;
		
		visualFX.tooltipObj[ visualFX.tooltipObj.length ] = tooltipObj
		
		// Posicion / estilos
		visualFX.posTooltip(inputObj, visualFX.tooltipObj.length - 1);	
		window.onresize = function() { visualFX.posAllTooltips() } ;
		tooltipObj.xOpacity = 0 ;
		visualFX.setOpacity(tooltipObj);
		tooltipObj.style.display='block';	
		
	},
	
	/*** Reposicionar tooltips ***/	
		
	posAllTooltips: function() {
		for( i = 0 ; i < visualFX.tooltipObj.length ; i++ ) {
			var inputObj = document.getElementById(visualFX.tooltipObj[ i ].id.replace('tooltip_content_',''))
			visualFX.posTooltip( inputObj, i );
		}
	},
	
	/*** Esconder todos los tooltips ***/	
		
	hideAllTooltips: function() {
		for( i = 0 ; i < visualFX.tooltipObj.length ; i++ ) {
			if( visualFX.tooltipObj[i].style.display == 'block' )
				visualFX.tooltipObj[i].style.display = 'none' ;
			visualFX.tooltipObj[i].xOpacity = 0 ;
			visualFX.setOpacity(visualFX.tooltipObj[i]);
		}
	},
	
	/*** Efecto FadeIn ***/
	
	fadeIn: function( obj ) {
		if( obj.style.display == 'none' )
			obj.style.display = 'block' ;
		obj.xOpacity+=.075;
		visualFX.setOpacity(obj);
		if( obj.xOpacity < .99 && visualFX.activeTooltip ) {
			setTimeout("visualFX.fadeIn(document.getElementById('" + obj.id + "'))", 20);
		} else if ( !visualFX.activeTooltip ) {
			obj.xOpacity = 0 ;
			visualFX.setOpacity(obj);
		}
			
	},
		
	/*** Posicionar un tooltip ***/	
		
	posTooltip: function posTooltip( inputObj, tooltipIndex ) {
		
		var oTooltip = visualFX.tooltipObj[tooltipIndex] ;
		var leftPos = visualFX.getLeftPos(inputObj) + inputObj.offsetWidth  ;
		var topPos = visualFX.getTopPos(inputObj)  ;

		var contenedor = document.getElementById('');
		
		if (inputObj.className != 'texto') {
			leftPos = leftPos - inputObj.offsetWidth ;
			oTooltip.style.marginLeft = "-36.5em" ;
			oTooltip.className = 'tooltip derecha' ;
		
		} else {
			oTooltip.className = 'tooltip' ;
		}
		
		oTooltip.style.left = leftPos + 'px';
		oTooltip.style.top = topPos + 'px';
		
		
	},
		
	/*** Opacidad ***/
	
	setOpacity: function ( obj ) {

		if(obj.xOpacity>.99)
		{
			obj.xOpacity = .99;
			return;
		}

		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = 'alpha(opacity=' + (obj.xOpacity*100) + ')';
	},
		

	/*** Posicion vertical ***/	
		
	getTopPos: function ( inputObj ) {
	
	  var returnValue = inputObj.offsetTop;
	  while((inputObj = inputObj.offsetParent) != null){
	  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
	  }
	  return returnValue;
	},

	/*** Posicion horizontal ***/	
		
	getLeftPos: function ( inputObj ) {
	
	  var returnValue = inputObj.offsetLeft;
	  while((inputObj = inputObj.offsetParent) != null){
	  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
	  }
	  return returnValue;
	},
	
	/*** Efectos varios ***/
		
	loadFX: function ( containerDivId, childDivClass, event ) {

	var objContainer = document.getElementById( containerDivId ) ;

	
		 for( var i = 0 ; i < objContainer.childNodes.length ; i++ ) {
		 
			className = objContainer.childNodes[i].className;
			
			if ( className == childDivClass ) {
				
				objContainer.childNodes[i].onmouseover = function() {
					arrclassName = this.className.split(' ') ;
					if( arrclassName[arrclassName.length] != 'on' )
						this.className = arrclassName[0] + ' ' + arrclassName[1] + ' on' ;					
				} ;
				
				objContainer.childNodes[i].onmouseout = function() {
					arrclassName = this.className.split(' ') ;
					if( arrclassName[arrclassName.length-1] == 'on' ) {
						this.className = arrclassName[0]  ;
						if ( arrclassName[1] )
							this.className += ' ' + arrclassName[1]
							
					}
				} ;
				
			}
		}
	},

	/*** Efectos para inputs de texto ***/
	
	loadFormFX: function () {
		try {
			var aInputs = document.getElementsByTagName('input') ;
			var aTextareas = document.getElementsByTagName('textarea') ;
			
			for ( var i = 0 ; i < aInputs.length ; i++) {
				if( aInputs[i].className == 'texto' ) {
					aInputs[i].onfocus = function() {
						this.className = this.className + ' selected' ;
					}
					aInputs[i].onblur = function() {
						this.className = this.className.replace(' selected', '') ;
						timeout = setTimeout("jQuery('#suggestions').hide();", 200);
					}
				}
			}
			
			for ( var i = 0 ; i < aTextareas.length ; i++) {
				if( aTextareas[i].className == 'texto' ) {
					aTextareas[i].onfocus = function() {
						this.className = this.className + ' selected' ;
					}
					aTextareas[i].onblur = function() {
						this.className = this.className.replace(' selected', '') ;
					}
				}
			} 

		} catch (e) { 
			return(0) 
		}
	}
	
}
		
/*** Lightbox ***/

function htmlLightbox(url){
	MOOdalBox.open(url, "", "700 340");
}

function agregar(url){
	MOOdalBox.open(url, "", "700 340");
	setTimeOut("agregar();",5000);
}

function cerrar(){
	MOOdalBox.close();
}

function checkBusqueda(idElemento){ 
	var buscar = document.getElementById(idElemento);	
	if( buscar.value.indexOf( "Ej: python" ) > 0 )
		buscar.value="python";		
}