/* *****************Explicacion de las funciones **************************
	CARACTERISTICAS PRINCIPALES
		- Todas las capas las cuales vayan a utilizar al libreria tienen que tener
		el id acabado en Div
		
		- Todas las funciones que recojan un parámetro id_capa, este debe ser pasado
		como un String que contendrá el nombre de la capa sin el Div.
		
	FUNCIONES
	
	- init() 
		Sin parámetros
		Será llamada preferiblemente después de la declaración de todas las capas.
		Es la encargada de convertir las capas a objetos.
	
	- objeto generar(String id_capa)
		Esta funcion es de uso interno de la libreria, devuelve el objeto capa a
		partir de su nombre
	
	- objeto generardiv(String id_capa)
		Esta funcion es de uso interno de la libreria, devuelve el objeto capadiv a
		partir de su nombre, se utiliza en las funciones que modifica propiedades
		que no pertenecen al Style.		
	
	- mostrar (String capa)
		Mostrara la capa que le pasemos como parámetro
		
	- ocultar (String capa)
		Ocultara la capa que le pasemos como parámetro
	
	- mover(String id_capa, int left, int top)
		Movera la capa a la posion left, top que son pasadas como parámetro
		
	- incrementar(String id_capa, int left, int top)
		Incrementa o decrementa la capa x pixels determinados por left y top.
		
	- boolean mostrada(String id_capa)
		Nos devuelve true si la capa pasada como parámetro está mostrada, false en caso
		de que este oculta
	
	- recortar(String id_capa, int posyi, int posxi, int posyf, int posxf)
		todos los valores de recorte se tienen en cuenta desde el calor 0,0 de la capa			
	
	- escribir(String id_capa, String texto)
		texto: String que queremos que contenga la capa
		
	- cargar(String id_capa, String url)
		url: url del fichero que queremos que contenga la capa
		
	- cargado()
		funcion que debemos llamar en el onLoad de las páginas que vayan a ser
		contenido de las capas.
	
****************************************************************************/


/* ****************Definición de variables de la libreria ******************/

navegador = navigator.appName														//Navegador
version = parseInt(navigator.appVersion)											//Version de navegador
ns6 = ((navegador == "Netscape") && (version == 5)) ? true:false					//Variable que indica si es Netscape 6
ns4 = ((navegador == "Netscape") && (version < 5))? true:false						//Variable que indica si es Netscape 4
ie = ((navegador == "Microsoft Internet Explorer"))? true:false						//Variable que indica si es Internet Explorer

var capas = new Array;																//Las capas como objeto style
var capasdiv = new Array;															//Las capas como objeto 
var nombre_capas = new Array;														//Las capas como string
var capa_temp																		//Variable utilizada en la carga de ficheros para guardar la capa de contenido
var finalizado = 1																	//Variable que indica si ha finalizado el proceso de carga
var indice = 0;
var temp_capa

/********************Fin de definición de variables **********************/

/*******************FUNCIONES DE CONTROL DE LAS CAPAS *******************/

function initLayer(padre)
{
	if (ns4)
	{	
		if (!padre)
		{
			for (contador = 0; contador < document.layers.length; contador ++)
			{
				var capadiv = document.layers[contador].name;
				var index = capadiv.indexOf("Div");
				var capa = capadiv.substring(0,index);
				if (index > 0){
					capas[indice] = document.layers[contador];
					capasdiv[indice] = document.layers[contador];
					nombre_capas[indice] = capa;
					indice++;
				}
				if (document.layers[contador].layers.length > 0)
				{
					initLayer(document.layers[contador].layers)
				}
			}
		}else{
			for (contador2 = 0; contador2 < padre.length;contador2++)			
			{
				var capadiv = padre[contador].name;
				var index = capadiv.indexOf("Div");
				var capa = capadiv.substring(0, index)
				if (index > 0){
					capas[indice] = padre[contador]
					capasdiv[indice] = padre[contador]
					nombre_capas[indice] = capa
					indice++;
				}
				if (padre[contador].layers.length > 0)
				{
					initLayer(padre[contador].layers)
				}
			}
		}
	}
	if (ns6)
	{
		temp_capas = document.getElementsByTagName("DIV"); 
		for (contador = 0; contador < temp_capas.length; contador ++)
		{
			capadiv = temp_capas[contador].id;
			var index = capadiv.indexOf("Div");
			var capa = capadiv.substring(0, index);
			if (index > 0){
				capas[indice] = temp_capas[contador].style;
				capasdiv[indice] = temp_capas[contador];
				nombre_capas[indice] = capa;
				indice++;
			}
		}
	}
	if (ie)
	{
		for (contador = capas.length; contador <document.all.tags("DIV").length ; contador++)
		{
			var capadiv = document.all.tags("DIV")[contador].id;
			var index = capadiv.indexOf("Div");
			var capa = capadiv.substring(0, index);
			if (index > 0) {
				capas[indice] = document.all.tags("Div")[contador].style;
				capasdiv[indice] = document.all.tags("Div")[contador];
				nombre_capas[indice] = capa;
				indice++;
			}
		}
	}
}

function generar(id_capa)
{
	for (contador=0; contador< capas.length; contador++)
	{
		if (id_capa == nombre_capas[contador])
		{
			return (capas[contador])
		}
	}
}

function generardiv(id_capa)
{
	for (contador = 0; contador < nombre_capas.length; contador ++)
	{
		if (id_capa == nombre_capas[contador])
		{
			return (capasdiv[contador])
		}
	}
}

function mostrar(id_capa)
{
	capa = generar(id_capa)	
	if (ns4) capa.visibility = "show"
	if (ns6) capa.visibility = "visible"
	if (ie) capa.visibility = "visible"
}

function ocultar(id_capa)
{	
	capa = generar(id_capa)	
	if (ns4) capa.visibility = "hide"
	if (ns6) capa.visibility = "hidden"
	if (ie) capa.visibility = "hidden"
}

function mover(id_capa, left, top)
{
	capa = generar(id_capa)	
	capa.xpos = left
	capa.left = capa.xpos
	capa.ypos = top
	capa.top = capa.ypos
}

function incrementar(id_capa, left, top)
{
  capa = generar(id_capa)	
	if (capa!=null) {
  	capa.left = parseInt(capa.left) + left
	  capa.top = parseInt(capa.top) + top
  }
	
}

function deslizar(id_capa, posX, posY, velocidad)
{
  capa = generar(id_capa)	
	capa_temp = capa
	posX_temp = posX
	posY_temp = posY
	posX_ini = parseInt(capa.left)
	posY_ini = parseInt(capa.top)
	despla_X = posX - posX_ini
	despla_Y = posY - posY_ini

		
	var m = despla_Y / despla_X
	if (posX_ini > posX)
	{
		incremento_X = -1
	}else{
		incremento_X = 1
	}
	
	b = posY_ini - m*posX_ini
	
	if (posX_ini != posX || posY_ini != posY)
	{
		capa.left =  parseInt(capa.left) + incremento_X
		capa.top =  m*parseInt(capa.left) + b
		setTimeout("deslizar(capa_temp, posX_temp, posY_temp)",velocidad)
	}
}

function mostrada(id_capa)
{
	capa = generar(id_capa)	
	if (ns4)
	{
		if (capa.visibility == "show")
		{
			return true
		}else{
			return false
		}
	}else{
		if (capa.visibility == "visible")
		{
			return true;
		}else{
			return false;
		}
	}
}

function recortar(id_capa, posyi, posxi, posyf, posxf)
{
	capa = generar(id_capa)	
	if (ns4)
	{
		capa.clip.top = posyi
		capa.clip.left = posxi
		capa.clip.bottom = posyf
		capa.clip.bottom = posxf
	}else{
		capa.clip = "rect(" + posyi + "px "+ posxf + "px " + posyf + "px " + posxi + "px)"
	}
}

function aparecer(id_capa, direccion, tipo){
	// Direccion = 1 la capa aparece de arriba a abajo
	// Direccion = 2 la capa aparece de abajo a arriba
	// Direccion = 3 la capa aparece de derecha a izquierda
	// Direccion = 4 la capa aparece de la izquierda a la derecha
	capa = generar(id_capa);
	capadiv = generardiv(id_capa);
	if (tipo == 1)
	{
		if (direccion == 1){recortar(id_capa, 0, 0,0, capadiv.offsetWidth)}
		if (direccion == 2){recortar(id_capa, capadiv.offsetHeight, 0, capadiv.offsetHeight, capadiv.offsetWidth)}
		if (direccion == 3){recortar(id_capa, 0, capadiv.offsetWidth, capadiv.offsetHeight, capadiv.offsetWidth)}
		if (direccion == 4){recortar(id_capa, 0, 0, capadiv.offsetHeight, 0)}
		intruccion = "aparecer('" + id_capa + "', "+direccion+", "+0+")"
		setTimeout(intruccion,1)
	}else{
		if (ns4)
		{
			clip_top = capa.clip.top
			clip_right = capa.clip.right
			clip_bottom = capa.clip.bottom
			clip_left = capa.clip.left
		}else{
			pos_i = capa.clip.indexOf("(",0)
			pos_f = capa.clip.indexOf("px", pos_i)
			clip_top = capa.clip.substring(pos_i+1, pos_f)
			pos_i = pos_f + 2
			pos_f = capa.clip.indexOf("px", pos_i)
			clip_right = capa.clip.substring(pos_i, pos_f)
			pos_i = pos_f + 2
			pos_f = capa.clip.indexOf("px", pos_i)
			clip_bottom = capa.clip.substring(pos_i, pos_f)
			pos_i = pos_f + 2
			pos_f = capa.clip.indexOf("px", pos_i)
			clip_left = capa.clip.substring(pos_i, pos_f)
		}
		if (clip_bottom < capadiv.offsetHeight && direccion == 1)
		{
			recortar(id_capa, 0, 0, clip_bottom*1 + 10*1, capadiv.offsetWidth)
			intruccion = "aparecer('" + id_capa + "',"+direccion+ ", "+0+")"
			setTimeout(intruccion,1)
		}
		if (clip_top > 0 && direccion == 2)
		{
			recortar(id_capa, clip_top*1 - 10*1, 0, capadiv.offsetHeight , capadiv.offsetWidth)
			intruccion = "aparecer('" + id_capa + "', "+direccion+ ", "+0+")"
			setTimeout(intruccion,1)
		}
		if (clip_left > 0 && direccion == 3)
		{
			recortar(id_capa, 0, clip_left - 10*1, capadiv.offsetHeight, capadiv.offsetWidth)
			intruccion = "aparecer('" + id_capa + "', "+direccion+ ", "+0+")"
			setTimeout(intruccion,1)
		}
		if (clip_right < capadiv.offsetWidth && direccion == 4)
		{
			recortar(id_capa, 0, 0, capadiv.offsetHeight, clip_right*1 + 10*1)
			intruccion = "aparecer('" + id_capa + "', "+direccion+ ", "+0+")"
			setTimeout(intruccion,1)
		}
	}
}

function escribir(id_capa, texto)
{
	capa = generardiv(id_capa)
	if (ns4){
		capa.document.open()
		capa.document.write(texto)
		capa.document.close()
	}
	if (ns6)
	{
		document.getElementById(id_capa + "Div").innerHTML = texto
	}
	if (ie){
		capa.innerHTML = texto
	}
}

function cargar(id_capa, url)
{
	if (finalizado==1)
	{
		finalizado = 0;
		capa = generardiv(id_capa);
		alert (capa)
		temp_capa = capa;
		if (ns4){
			capa.src= url
			control_scroll(id_capa)
		}
		if (ns6){
			document.getElementsByTagName("IFRAME")[0].src = url
		//document.getElementById(id_capa + "Div").location = url
		}
		if (ie){
			bufferFrame.document.location = url
		}
	}else{
		intruccion = "cargar('" + id_capa + "','" + url + "')"
		setTimeout(intruccion,500)
	}
}

function cargado()
{
	if (ie)
	{
		temp_capa.innerHTML = bufferFrame.document.body.innerHTML
		capaname = temp_capa.id.substring(0, temp_capa.id.length - 3)
		finalizado = 1;
		control_scroll(capaname)
	}
	if (ns6)
	{
	
	}
}