// inicialización de variables globales
var mainLayer = new Object();
var hMain = 1; 			// altura inicial del div contenedor (panel)
var hMainMax = 1;		// altura del div contenedor + altura del div contenido, se utiliza para la función de desplegado
var hChild = 1; 		// altura del div contenido
var delay =10; 			// retardo en cada iteración de plegado o desplegado
var pxStep=10;			// pasos de la animación (en pixels), son los pixels que se suman (caso de desplegar) o se restan (plegado)
var moving= false; 		// variable de seguridad. Evita que se ejecute el plegado o desplegado mientras sea "true"
var footerLayer = new Object(); // div inferior del panel - se oculta antes de plegar y se muestra al final del desplegado
var otherLayer; 		// div adicional (cualquier otro nque sea necesario) - se oculta antes de plegar y se muestra al final del desplegado
var cookieName = "";
var expiration = new Date();
var interval;

function simpleToggleCollapse(ID){
var collapsableObj = document.getElementById(ID);
var collapsableObjStatus = collapsableObj.style.display;
//alert(collapsableObjStatus);
if (collapsableObjStatus == "block") { 
	collapsableObj.style.display="none";
	expiration.setTime(expiration.getTime() + 8640000000);
	setCookie(ID,'plegado',expiration);
	}
	else {
	collapsableObj.style.display="block";
	expiration.setTime(expiration.getTime() + 8640000000);
 	setCookie(ID,'desplegado',expiration);
 	}
}

function toggleCollapse(ID, IDchild, IDfooter,IDother, ms, step){
if (moving) return;			// comprobación de seguridad, si ya hay una animación en curso no se continúa con la ejecución
delay=ms;
pxStep=step;
cookieName = ID;
mainLayer = document.getElementById(ID);
footerLayer = document.getElementById(IDfooter);
otherLayer = document.getElementById(IDother);
var childLayer = document.getElementById(IDchild);
hChild = childLayer.offsetHeight;	// altura real del div contenido
hMain = mainLayer.offsetHeight;		// altura real del div contenedor (panel)
hMainMax = hMain + hChild		// suma del alturas del contenedor y el contenido
hTitle = hMain - hChild;		// la altura del título es la resta del contenedor - contenido
if(detectBrowser()=="no") pxStep=100;	// si IE no renderiza rápido usamos este valor
if(detectBrowser()=="ie6") pxStep=380;	// IE6 (es muy lento) --- antes 80
if(detectBrowser()=="ie7") {pxStep=380; delay=5;}	// IE7 es un poco más rápido de IE6 pero no tanto como Safari o FF --- antes step 30
//pxStep= Math.round(hChild/5);
if (hMain>"30") 			// revisamos si el contenedor está desplegado (si está plegado será de <=31px)
	{
	footerLayer.style.visibility="hidden";				// escondemos la parte inferior del panel
	if (!(otherLayer==null))otherLayer.style.visibility="hidden";	// si hemos pasado un div adicional para esconderlo, aquí lo verificamos y escondemos
	moving=true;							// activamos la variable de seguridad
	plegar(mainLayer,hMain,cookieName);
	}
		else {							// el panel está plegado 
				moving=true;				// activamos la variable de seguridad
				desplegar(mainLayer,hMain,cookieName);
			 }
//	else {alert(mainLayer.style.height);}
}

function plegar(obj,value,cooki){
	//obj.style.height=value+"px";		// asignamos la nueva altura de panel
	if (hMain-pxStep<=hTitle) {
		hMain=hTitle;	// si la resta de la altura del panel menos los pasos es inferior a la barra de título, entonces dejamos la altura de la barra de título
		obj.style.height=hMain+"px" }
	else { hMain=hMain-pxStep;		// sino, aceptamos el nuevo valor
			obj.style.height=hMain+"px" }
	if (hMain>hTitle){setTimeout("plegar(mainLayer,hMain,cookieName)",delay)}	// si la altura del div contenedor (panel) es mayor que la barra de título, repetimos el ciclo con la nueva altura
	else { obj.style.height=hTitle+'px';						// sino, finalizamos asignando la altura de la barra de título (plegado completo)
			expiration.setTime(expiration.getTime() + 8640000000);
			setCookie(cooki,'plegado',expiration);
			//setTimeout("movingDisable(mainLayer)", delay);
			movingDisable(mainLayer);
			}			// desactivamos la variable de seguridad
}

function desplegar(obj,value,cooki){
//obj.style.height=value+"px";			// asignamos la nueva altura de panel
if (hMain+pxStep>=hMainMax) { 
		hMain=hMainMax;	// si la suma de la altura del panel más los pasos supera la altura total, entonces asignamos la altura total
		obj.style.height=hMain+"px";}		
else { hMain=hMain+pxStep;			// sino, aceptamos el nuevo valor
		obj.style.height=hMain+"px";}		
if (hMainMax>hMain){setTimeout("desplegar(mainLayer,hMain,cookieName)",delay)}		// si la altura máxima sigue siendo superior a la del div contenedor (panel), repetimos el ciclo con la nueva altura
else {obj.style.height=hMainMax+"px"; 							// sino, finalizamos asignando la altura máxima (desplegado completo)
	  expiration.setTime(expiration.getTime() + 8640000000);
 	  setCookie(cooki,'desplegado',expiration);
	  //setTimeout("movingDisable(mainLayer)", delay);				// desactivamos la variable de seguridad
	  footerLayer.style.visibility="visible";					// volvemos a mostrar la parte inferior del panel
	  if(!(otherLayer==null)){									// si existe un div adicional que volver a mostrar lo verificamos y activamos
	  otherLayer.style.visibility="visible";}	  
	  movingDisable(mainLayer);
	  }
}

function movingDisable(obj){moving=false}

function hideForced(ID,IDchild,IDfooter,IDother,forced){
if (ID==null) return;
if (document.getElementById(ID)==null) return;
var mainLayer = document.getElementById(ID);
var childLayer = document.getElementById(IDchild);
var footerLayer = document.getElementById(IDfooter);
var otherLayer = document.getElementById(IDother);
var hChild = childLayer.offsetHeight;
var hMain = mainLayer.offsetHeight;
var hTitle = hMain - hChild;
var myCookie = getCookie(ID);
if (myCookie == "plegado"||forced=="cerrar") {		// cerramos si existe una cookie para esa zona, con valor "plegado" o si la variable "forced"="cerrar"
//alert(myCookie);
mainLayer.style.height=hTitle+"px";
footerLayer.style.visibility="hidden";
if(!(otherLayer==null))otherLayer.style.visibility="hidden";}
}

function simpleHideForced(ID){
if (ID==null) return;
if (document.getElementById(ID)==null) return;
var collapsableObj = document.getElementById(ID);
var myCookie = getCookie(ID);
if (myCookie == "plegado") 
collapsableObj.style.display="none";
else collapsableObj.style.display="block";
}
