// 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 plegarLayer = new Object(); // div inferior del panel - se oculta antes de plegar y se muestra al final del desplegado
var desplegarLayer; 		// 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;
var slideDiv;
var slideStep;
var slideMaxValue;
var slideMinValue;

function slide(innerID,outerID,direction) {
var innerDiv = document.getElementById(innerID);
var outerDiv = document.getElementById(outerID);
var thumbs = innerDiv.getElementsByTagName("li");
//fix DIV width and height
innerDiv.style.width=thumbs.length*thumbs[0].offsetWidth+'px';
innerDiv.style.height=thumbs.length*thumbs[0].offsetHeight+'px';
slideStep = 50; // segundo parámetro de velocidad
slideDiv = innerDiv;
//alert(innerDiv.offsetLeft);
switch(direction)
	{
	case 1:
	if (innerDiv.offsetLeft==0 && ((thumbs.length*thumbs[0].offsetWidth)>outerDiv.offsetWidth))
		{
		slideMaxValue =(thumbs.length*thumbs[0].offsetWidth)-outerDiv.offsetWidth;
		slideMinValue = 1;
		slideMoveLeft(slideDiv,slideMaxValue,slideMinValue);
		}
	break
	
	case 0:
	if (innerDiv.offsetLeft<0)
		{
		slideMaxValue = 0;
		slideMinValue = innerDiv.offsetLeft;
		slideMoveRight(slideDiv,slideMaxValue,slideMinValue);
		}
	break
	}
}

function slideMoveLeft(obj,maxValue,minValue){
if (minValue + slideStep < maxValue ){
	obj.style.left='-'+(minValue+slideStep)+'px';
	slideMinValue=minValue+slideStep;
	slideStep=Math.round(slideStep*0.95);
	}
if (minValue + slideStep >= maxValue) {
	obj.style.left='-'+maxValue+'px';
	slideMinValue=maxValue;
	checkArrowButtons();
	}
if (minValue<maxValue) {setTimeout("slideMoveLeft(slideDiv,slideMaxValue,slideMinValue)",12)}
}

function slideMoveRight(obj,maxValue,minValue){
if (minValue + slideStep < maxValue ){
	obj.style.left=(minValue+slideStep)+'px';
	slideMinValue=minValue+slideStep;
	slideStep=Math.round(slideStep*0.95);
	}
if (minValue + slideStep >= maxValue) {
	obj.style.left=maxValue+'px';
	slideMinValue=maxValue;
	checkArrowButtons();
	}
if (minValue<maxValue) {setTimeout("slideMoveRight(slideDiv,slideMaxValue,slideMinValue)",12)}
}

function checkArrowButtons(){
	var arrowLeft = document.getElementById('relatedVideosLeftArrow');
	var arrowRight = document.getElementById('relatedVideosRightArrow');
	var slideDiv = document.getElementById('relatedVideosThumb');
	if (slideDiv.offsetLeft<0) { 
		//arrowLeft.style.visibility='visible'; 
		document.getElementById('arrowLeftActive').style.display='block';
		document.getElementById('arrowLeftInactive').style.display='none';
		//arrowRight.style.visibility='hidden';
		document.getElementById('arrowRightActive').style.display='none';
		document.getElementById('arrowRightInactive').style.display='block';
		}
		else {
		//arrowLeft.style.visibility='hidden'; 
		document.getElementById('arrowLeftActive').style.display='none';
		document.getElementById('arrowLeftInactive').style.display='block';
		//arrowRight.style.visibility='visible';
		document.getElementById('arrowRightActive').style.display='block';
		document.getElementById('arrowRightInactive').style.display='none';
		}
	}

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, IDPlegar,IDDesplegar, 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);
plegarLayer = document.getElementById(IDPlegar);
desplegarLayer = document.getElementById(IDDesplegar);
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
//alert('hMain:'+hMain+' hChild:'+hChild+' hTitle:'+hTitle);
//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>0) 			// revisamos si el contenedor está desplegado (si está plegado será de <=31px)
	{
	if (!(desplegarLayer==null))desplegarLayer.style.display="block";	// si hemos pasado un div adicional para esconderlo, aquí lo verificamos y escondemos
	if (!(plegarLayer==null))plegarLayer.style.display="none";				// escondemos la parte inferior del panel
	moving=true;							// activamos la variable de seguridad
	plegar(mainLayer,hMain,cookieName);
	}
		else {							// el panel está plegado 
				if (!(desplegarLayer==null))desplegarLayer.style.display="none";	// si hemos pasado un div adicional para esconderlo, aquí lo verificamos y escondemos
				if (!(plegarLayer==null))plegarLayer.style.display="block";				// escondemos la parte inferior del panel
				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
	//window.status=hMain;
	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
	  if(!(plegarLayer==null)){									// si existe un div adicional que volver a mostrar lo verificamos y activamos
	  plegarLayer.style.visibility="visible";}					// volvemos a mostrar la parte inferior del panel
	  if(!(desplegarLayer==null)){									// si existe un div adicional que volver a mostrar lo verificamos y activamos
	  desplegarLayer.style.visibility="visible";}	  
	  movingDisable(mainLayer);
	  }
}

function movingDisable(obj){moving=false}

function hideForced(ID,IDchild,IDPlegar,IDDesplegar,forced){
if (ID==null) return;
if (document.getElementById(ID)==null) return;
var mainLayer = document.getElementById(ID);
var childLayer = document.getElementById(IDchild);
var plegarLayer = document.getElementById(IDPlegar);
var desplegarLayer = document.getElementById(IDDesplegar);
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"
	if (!(desplegarLayer==null))desplegarLayer.style.display="block";
	if (!(plegarLayer==null))plegarLayer.style.display="none";
	//alert(myCookie);
	mainLayer.style.height=hTitle+"px";
	plegarLayer.style.visibility="hidden";}
	else {	if (!(desplegarLayer==null))desplegarLayer.style.display="none";
			if (!(plegarLayer==null))plegarLayer.style.display="block";
 } 
}

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";
}

function getCookie(name){
  var cname = name + "=";               
  var dc = document.cookie;             
  if (dc.length > 0) {              
    begin = dc.indexOf(cname);       
    if (begin != -1) {           
      begin += cname.length;       
      end = dc.indexOf(";", begin);
      if (end == -1) end = dc.length;
        return unescape(dc.substring(begin, end));
    } 
  }
  return null;
}

function setCookie(name, value, expires, path, domain, secure) {
  document.cookie = name + "=" + escape(value) + 
  ((expires == null) ? "" : "; expires=" + expires.toGMTString()) +
  ((path == null) ? "" : "; path=" + path) +
  ((domain == null) ? "" : "; domain=" + domain) +
  ((secure == null) ? "" : "; secure");
}

function detectBrowser(){	// detecta la versión del explorer y la devuelve de manera amigable
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=8)
  return("ok");
 else if (ieversion>=7)
    return("ie7");
 else if (ieversion>=6)
  return("ie6");
 else if (ieversion>=5)
  return("no");
}
else 
  return("ok");
}