Event.observe(window,"load",precargaImagenes)
Event.observe(window,"load",pngs)
Event.observe(window,"load",ocultarFormularios)

function cargarPagSinCache(url){
	window.location.href=url+"?"+Math.round(Math.random()*123456789)
}

function presentarSeccion(){
/*	if($('datosSeccion')){
		Element.scrollTo('datosSeccion')
	}*/
	Element.scrollTo('fechaEUS');
}

Event.observe (document,"mouseup",recogePosiones,false)
function recogePosiones(e)
{
	mouseX=Event.pointerX(e);
	mouseY=Event.pointerY(e);
}
mouseX=""
mouseY=""
/******************************************************************** funciones para eusko gudarostea *****************************************************************/

/************************************************************************************************************************************************************************/

function recargarComboFiestas(){
	combo=document.getElementById("gTxt_Provincia_ID")
	url="/4DACTION/Web_RecargarComboProvinciasFies?"
	url+="gTxt_ID="+combo.options[combo.selectedIndex].value
	url+="&gTxt_NomVar=gTxt_Localidad_ID"
	if(arguments.length>0){
		url+="&gTxt_ID_Dependiente="+arguments[0]
	}
	url+="&"+Math.round(Math.random()*123456789)
	llamadaAjax(url)
}

function recargarComboLocalidadesHis(){
	combo=document.getElementById("gTxt_Provincia_ID")
	url="/4DACTION/WEB_RecargarComboProvinciasHis?"
	url+="gTxt_ID="+combo.options[combo.selectedIndex].value
	url+="&gTxt_NomVar=gTxt_Localidad_ID"
	if(arguments.length>0){
		url+="&gTxt_ID_Dependiente="+arguments[0]
	}
	url+="&"+Math.round(Math.random()*123456789)
	llamadaAjax(url)
}

function recargarComboLocalidadesMontes(){
	combo=document.getElementById("gTxt_Provincia_ID")
	url="/4DACTION/WEB_RecargarComboProvinciasMont?"
	url+="gTxt_ID="+combo.options[combo.selectedIndex].value
	url+="&gTxt_NomVar=gTxt_Localidad_ID"
	if(arguments.length>0){
		url+="&gTxt_ID_Dependiente="+arguments[0]
	}
	url+="&"+Math.round(Math.random()*123456789)
	llamadaAjax(url)
}

// funcion para la carga de los paginadores
function cargaListaComentariosFoto (id,tabla)
{
	url='verComentariosFotos.shtml?wId='+id+"&gTxt_Tabla="+tabla
	cargarVentanaGrande(url)
}

function formatarUrl(url){
	if(url.indexOf("?")==-1){
		url+="?"
	}else{
		url+="&"
	}
	arr=url.split("%26")
	url=arr.join("[___amp___]")
	url+="gTxt_Ajax=Si"
	url+="&"+Math.round(Math.random()*1213456789)
	return url;
}

function ocultarFormularios ()
{
	nodosForm=$$('.Formsocultar');
	for (i=0;i<nodosForm.length;i++)
	Element.hide(nodosForm[i])
}


function caduco(){
	window.location.href='539.shtml'
}

function creaCapa(nombre){
	var capa=document.createElement("div");
	capa.setAttribute("id",nombre);
	if(arguments.length>1){
		$(arguments[1]).appendChild(capa)
	}else{
		document.getElementsByTagName("body")[0].appendChild(capa)
	}
	return $(nombre)
}


// variables globales
// ancho de la ventana AJAX

margenSuperior=70;
// funcion para recolocar la ventana AJAX

// funcion para mostrar los elementos de la ventana AJAX una vez recolocada

// function para generr el efecto click en los menus de tercer nivel

enlaceAbierto="";
function cargarEnlaceTercerNivel(obj,blank)
{	
	abrir=obj.getAttribute("href")+"?gTxt_EnlacetercerNivel=si"
	if(blank){
		window.location.href=abrir
	}else{
		Element.scrollTo('fechaEUS');
		$('h2TituloSeccion').innerHTML=obj.getAttribute("jarl")
		obj.id=obj.getAttribute("id")
		obj.enlace=abrir
		if (enlaceAbierto!=""){
			$(enlaceAbierto).parentNode.parentNode.style.backgroundColor="transparent"
		}
		
		obj.parentNode.parentNode.style.backgroundColor="#f3f2ee";
		enlaceAbierto=obj.id
		
		new Ajax.Updater
		(
			'datosSeccion',
			formatarUrl(obj.enlace),
			{
				onComplete:function()
				{
					ocultarFormularios ();
					
					if($("containerLimpio")){
						if($("colCentral")){
							$("containerLimpio").style.backgroundImage='url(images/fondoweb.gif)'
							$("containerLimpio").style.backgroundPosition='bottom';
						}
					}
					if ($('colDoble')){
							$("container").style.backgroundImage='url(images/fondowebLimpio.gif)'
					}
					}
				,	aynchronous:true
				, evalScripts:true
			}
		);

		return false;
	}
}


function cargaPagina (url,donde)
{
new Ajax.Updater
	(
		donde,
		formatarUrl(url),
		{
			onComplete:function()
			{
				ocultarFormularios ();
				
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}


function precargaImagenes ()
{
	imageArray=Array ("/Ebatzokia/images/cuerpo.png","/Ebatzokia/images/titulos.png");
	preloadImagenes = new Image();
	for (i=0;i<imageArray.length;i++)
	{
		preloadImagenes.src = imageArray[i];
	}
}
// variable que controla los eventos AJAX, cuando se hace una llamada esta automaticamente dibuja la capa de carga
// al terminar la elimina automaticamente
var Callbacks =
{
	onCreate: function()
	{

		dibujaCapaCarga ();

	}
	,
	onComplete: function()
	{
		/*if(Ajax.activeRequestCount == 0)
		{
			quitarCapaCarga()
		}*/
		quitarCapaCarga()
		obtEnlacesPrivados()

	}
}

/* Se registran los callbacks en Ajax.Responders */

Ajax.Responders.register(Callbacks);

// funcion para el dibujado automatico de la carga mediante AJAX
function dibujaCapaCarga ()
{
	var objBody = document.getElementsByTagName("body").item(0);

	var capaContenedora=document.createElement("div");
	capaContenedora.setAttribute("id",'capaCarga')
	objBody.appendChild(capaContenedora)

	var parrafo=document.createElement("p")
	parrafo.setAttribute("id","parrafoCarga")
	capaContenedora.appendChild(parrafo)

	Element.setInnerHTML(parrafo,literalCarga)
	redimiensionaCapaCarga ('capaCarga');
	Element.hide('capaCarga')
}
// funcion para el posicionamiento de la capa de carga
function redimiensionaCapaCarga (capaCarga)
{
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	margen=new Number ((arrayPageSize[0]-408)/2)

	if ($("sombreadoLogin"))
	{
		if (!document.all)
		{
			Element.setHeight('sombreadoLogin',arrayPageSize[1])
			Element.setWidth('sombreadoLogin',(arrayPageSize[0]-17))
		} else {
			Element.setHeight('sombreadoLogin',arrayPageSize[1])
			Element.setWidth('sombreadoLogin',arrayPageSize[0])
		}
	}

	$(capaCarga).style.position="absolute";
	$(capaCarga).style.left=margen+"px";
	$(capaCarga).style.top="300px"
	//$(capaCarga).style.zIndex="100"

	if ($('alerta'))
	{
		$('botonesAlerta').style.top="10px"
		$('botonesAlerta').style.left="10px"
//		$('botonesAlerta').style.zIndex="112";
	}
	zIndexCapaSombra=Element.getStyle($('sombreado'),'z-index')
	$(capaCarga).setStyle({zIndex:zIndexCapaSombra+1,top:topScroll()+'px'});
}
// funiones para ocultar tanto el flash como todos los selects del documento (necesarias para IE)
function ocultaObjetos ()
{
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
	flashes=$$(".flashOculto");
	for (i = 0; i != flashes.length; i++) {
		flashes[i].style.visibility = "hidden";
	}
	if ($('flash'))
	{
		Element.hide($('flash'));
	}
}
function muestraObjetos ()
{
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
	flashes=$$(".flashOculto")
	for (i = 0; i != flashes.length; i++) {
		flashes[i].style.visibility = "visible";
	}
	if ($('flash'))
	{
		Element.show($('flash'));
	}

}

function focusInputs(obj){
	obj.style.border="1px solid #a8a699"
	obj.style.backgroundImage="url(images/input.gif)";
	obj.style.color="#000";
}

function blurInputs(obj){
	obj.style.border="1px solid #c5c4ba";
	obj.style.backgroundColor="#fff"
	obj.style.backgroundImage="none";
}

function enviarComentario(){
	dibujaLogin();
	cadena="wRegistro="+$('idHiden').value;
	cadena+="&wTabla="+$('seccion').value;
	cadena+="&wComentario="+$('comentarios').value;
	enviarComentariosLogin ('agradecimientoComentario.shtml?'+cadena,'capaDatosAJAX')
}
function borraAlerta ()
{
	if($("botonesAlerta")){
		if($("botonesAlerta").funcionBorra){
			$("botonesAlerta").funcionBorra();
		}
	}else{
		if ($('sombreadoLogin'))
		{
			Element.remove('sombreadoLogin')
		}
		showSelectBoxes ();
	}
	Element.remove ('alerta')
}

function enviarComentariosLogin (url,donde){

new Ajax.Updater
	(
		donde,
		formatarUrl(url),
		{
			onComplete:function()
			{
				//cerrarLightBox()

			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function  loginUsuarioAjax ()
{
	formLog=window.document.login
	cadena="wUsuario="+formLog.wUsuario.value
	cadena+="&wPassword="+formLog.wPassword.value
	cadena+="&wComentario="+$('comentario').value
	cadena+="&wTabla="+$('tabla').value
	cadena+="&wRegistro="+$('registro').value
	enviarComentariosLogin ('agradecimientoComentario.shtml?'+cadena,'capaDatosAJAX')
}

function logeado ()
{
	new Ajax.Updater
	(
		'accesoBazkides',
		formatarUrl('opcionesBazkide.shtml'),
		{
			onLoaded:function ()
			{
			}
			,
			onComplete:function()
			{
				ocultarFormularios ();
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function respuestaFormularios (url,donde)
{
new Ajax.Updater
	(
		donde,
		formatarUrl(url),
		{
			onLoaded:function ()
			{
			}
			,
			onComplete:function()
			{
				ocultarFormularios ();
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}
// funcion a invocar cuando sea necesario dibujar la ventana AJAX de logeo para los bazkides
function dibujaLogin ()
{
	//ocultaObjetos ()

	var arrayPageSize = getPageSize();


	// compruebo si el objeto overlay de lightbox "el sombreado" esta activo,
	// en caso de no estarlo dibujo una capa para crear tal efecto
	borrar=cargarCapaSombreado()
	
	var objBody = document.getElementsByTagName("body").item(0);
	var capaContenedora=document.createElement("div");
	capaContenedora.setAttribute("id",'alerta');
	objBody.appendChild(capaContenedora)

	var CapaBotones=document.createElement("div");
	CapaBotones.setAttribute("id","botonesAlerta")
	CapaBotones.zIndexCapaSombra=Element.getStyle($('sombreado'),'z-index')
	CapaBotones.borrar=borrar
	CapaBotones.funcionBorra=function (){
		if(this.borrar){
			Element.hide('sombreado')
			mostrarFlashes();
		}else{
			$('sombreado').setStyle({zIndex:this.zIndexCapaSombra});
		}
	}
	CapaBotones.onclick=function (){
		borraAlerta ();
	}
	
	$('sombreado').setStyle({zIndex:new Number(CapaBotones.zIndexCapaSombra)+100});
	if(document.all){
		capaContenedora.style.zIndex=new Number(CapaBotones.zIndexCapaSombra)+100+1
	}else{
		capaContenedora.setStyle({zIndex:new Number(CapaBotones.zIndexCapaSombra)+100+1});
	}
	capaContenedora.appendChild(CapaBotones)

	var capaDatos=document.createElement("div")
	capaDatos.setAttribute("id","capaDatosAJAX")
	capaContenedora.appendChild(capaDatos)

	var parrafo=document.createElement("p")
	parrafo.setAttribute("id","parrafoCarga")
	capaContenedora.appendChild(parrafo)
	redimiensionaCapaCarga ('alerta')
}
/*********************************************************************************************************************************************************************************************/
// funcion necesaria solo para internet explorer, hace que los pngs de los menus de tercer nivel sean transparentes
function pngs ()
{
if (document.all && $('colDcha'))
{
	
	images=$('colDcha').getElementsByTagName("img")

	 for(var i=0; i<images.length; i++)
      {
	  var img = images[i]
	  var imgName = img.src.toUpperCase()
	  if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
	     {
		 var imgID = (img.id) ? "id='" + img.id + "' " : ""
		 var imgClass = (img.className) ? "class='" + img.className + "' " : ""
		 var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
		 var imgStyle = "display:inline-block;" + img.style.cssText
		 if (img.align == "left") imgStyle = "float:left;" + imgStyle
		 if (img.align == "right") imgStyle = "float:right;" + imgStyle
		 if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
		 var strNewHTML = "<span " + imgID + imgClass + imgTitle
		 + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
	     + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
		 + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
		 img.outerHTML = strNewHTML
		 i = i-1
	     }
      }
}

}

function crearCapaRecargar(){
	nombre="recargaCombo"
	if(!$(nombre)){
		capa=creaCapa(nombre)
		capa.style.display="none"
	}
	return nombre
}

function llamadaAjax (url){

	nombre=crearCapaRecargar()
	new Ajax.Updater(
		nombre,
		formatarUrl(url),
		{
			onLoaded:null,
			onComplete:null,
			aynchronous:true,
			evalScripts:true
		}

	);
}

function mostrarFotografias(idRegistro,idTabla){
	url="verFotosLightBox.shtml?"
	url+="gTxt_ID="+idRegistro
	url+="&gTxt_Tabla="+idTabla
	if(arguments.length>2){
		url+="&gTxt_IdPrimeraFoto="+arguments[2]
	}
	
	url+="&"+Math.round(Math.random()*123456789)
	llamadaAjax(url)
}

function verComentarios(id,tabla){
	//ocultaObjetos()

	//crearCapaSombreado()
	//Element.hide(CapaSombra)

	/*var CapaBotones=document.createElement("div");
	CapaBotones.setAttribute("id","botones")
	CapaBotones.onclick=function (){
		borraCapas ();
	}*/

	//objBody.appendChild(CapaBotones)
	//Element.hide(CapaBotones)

	cargaListaComentariosFoto(id,tabla)
}

function crearCapaSombreado(){
	var arrayPageSize = getPageSize();
	if(arguments.length>0){
		capaSombra=creaCapa(arguments[0])
		capaSombra.setAttribute("class","sombreadoMulti")
	}else{
		capaSombra=creaCapa("sombreado")
		capaSombra.style.zIndex="2"
	}
	var arrayPageSize = getPageSize();
	reAjustarCapaSombra()
	return capaSombra;
}

function verFormularioComentarios(idBatzoki){
	nuevoId="capaComentariosForm_"+idBatzoki
	if(capaMostrada==null){
		mostrar=true
	}else if(capaMostrada.id==nuevoId){
		mostrar=false
	}else{
		mostrar=true
	}
	if(mostrar){
		$(nuevoId).innerHTML=textoForm
		capaMostrada=$(nuevoId)
		combo=window.document.enviarComentario.wRegistro
		for(var i =0;i<combo.options.length;i++){
			if(combo.options[i].value==idBatzoki){
				combo.options[i].selected=true
			}
		}
		Element.hide("idSelect")
		new Effect.BlindDown(capaMostrada.id, { duration: 0.3});
	}else{
		Element.hide(nuevoId)
		$(nuevoId).innerHTML=""
		capaMostrada=null
	}
	//Element.show(capaMostrada.id)
	//Element.show("form1")
}
function ocultaFormulario(){
	//Element.hide("idSelectBatzokis")
	//Element.hide("form1")
	if(capaMostrada!=null){
		capaMostrada.innerHTML=""
		Element.hide(capaMostrada.id)
	}
}
function mostrarFormularioFiestas (idForm)
{
	Element.toggle(idForm)
}
function formularioAAjax(but){
	enviarFormuAjax(but.form)
}

function enviarComentariosAjax(but){
	but.accion=function(){
		enviarFormuAjax(this.form,'caparespuestaFormComent')
		if(this.form.gTxt_Titulo){
			this.form.gTxt_Titulo.value=""
		}
		this.form.wComentario.value=""
	}
	but.form.onsubmit=function(){return false}

	loginFormulario=false
	enlaceClickado=but
	comprobarLogin()
	return false;
}

function enviarComentariosAjaxPub(but){
	enviarFormuAjax(but.form,'caparespuestaFormComent')
	but.form.gTxt_Autor.value=""
	but.form.gTxt_Titulo.value=""
	but.form.wComentario.value=""
	return false;
}

function cargarAsinc(url,capa){

	new Ajax.Updater
	(
		capa,
		formatarUrl(url),
		{
			onLoaded:function (){},
			onComplete:function(){quitarCapaCarga()},
			aynchronous:true,
			evalScripts:true
		}

	);

}

function enviarFormuAjax(formulario){
	formulario.onsubmit=function(){return false;}
	
	url=formulario.action
	ele=formulario.elements
	for(var i =0;i<ele.length;i++){

		if(i==0){
			initCadena="?"
		}else{
			initCadena="&"
		}
		nombre=ele[i].name
		if(ele[i].type=="select"){
			combo=ele[i]
			valor=combo.options[combo.selectedIndex].value
		}else if(ele[i].type=="checkbox"){
			if(ele[i].checked){
				valor=ele[i].value
			}else{
				valor=""
			}
		}else{
			valor=ele[i].value
		}
		valor=valor.replace("&","")
		valor=valor.replace("?","")

		url+=initCadena+nombre+"="+escape(valor)
	}
	//url=formulario.action+"?"+Form.serialize(formulario)
	url=formatarUrl(url)
	if($('container')){
		Element.hide("container")
	}
	if(arguments.length>1){
		capa=arguments[1]
		if(!$(capa)){
			capaNueva=creaCapa(capa)
		}
	}else{
		capa='datosSeccion'
	}
	new Ajax.Updater(
		capa,
		url,{aynchronous:true, evalScripts:true}
	);
}

function guardarPerfil(formulario){
	formulario.onsubmit=function(){return false;}
	var opt = {
		// Use POST
		method: 'post',
		// Send this lovely data
		postBody: Form.serialize(formulario),
		// Handle successful response
		onSuccess: function(t) {eval(t.responseText)},
	// Handle 404
		on404: function(t) {},
	// Handle other errors
		onFailure: function(t) {}
	}
	new Ajax.Request(formulario.action, opt);	
}

function hrefAjax(obj){
	obj.enlace=obj.getAttribute("href")
	new Ajax.Updater
	(
		'datosSeccion',
		formatarUrl(obj.enlace),
		{
			onComplete:function()
			{
				//Element.sho(('recibirDatosSev')),
				//new Effect.BlindUp('contenidoAJAX', { duration: 10})
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
	return false;

}

function cerrarSesion(){
	if(confirm(strAlertaCerrarSesion)){
		llamadaAjax('/4DACTION/WEB_CerrarSesion')
	}
}

function cargarPreguntaSecreta(){
	url="recuperarClavePregunta.shtml?gTxt_Usuario="+window.document.formObtUsuario.gTxt_Usuario.value
	url+="&"+Math.round(Math.random()*1234567899)
	cargarAsinc(url,'colCentral')
}

function verRespuesta(){
	url="recuperarClaverVerClave.shtml?gTxt_Usuario="+window.document.formObtUsuario.gTxt_Usuario.value
	url+="&gTxt_Respuesta="+window.document.verClave.gTxt_Respuesta.value
	url+="&"+Math.round(Math.random()*1234567899)
	cargarAsinc(url,'verRespuesta')

}

function cargarNombres(){
	combo=window.document.formTipoNombre.gTxt_TipoNombre

	url="503.shtml"
	url+="?gTxt_TipoNombre="+combo.options[combo.selectedIndex].value

	if(window.document.buscarEuskera.gTxt_NombreEuskera.value!=""){
		url+="&gTxt_NombreEuskera="+window.document.buscarEuskera.gTxt_NombreEuskera.value
		window.document.formTipoNombre.gTxt_LetraInicio.value=""
		window.document.formTipoNombre.gTxt_LetraFin.value=""
	}else if(window.document.buscarCastellano.gTxt_NombreCastellano.value!=""){
		url+="&gTxt_NombreCastellano="+window.document.buscarCastellano.gTxt_NombreCastellano.value
		window.document.formTipoNombre.gTxt_LetraInicio.value=""
		window.document.formTipoNombre.gTxt_LetraFin.value=""
	}
	url+="&gTxt_LetraInicio="+window.document.formTipoNombre.gTxt_LetraInicio.value
	url+="&gTxt_LetraFin="+window.document.formTipoNombre.gTxt_LetraFin.value
	url+="&"+Math.round(Math.random()*123456789)
	cargarAsinc(url,'datosSeccion')
}

function redireccionar(url){
	window.location.href=url
}

function cargarFiestas(idProvincia){
	capaMostrada=null
	if($("form1")){
		textoForm=$("form1").innerHTML
	}else{
		textoForm=""
	}
	recargarComboFiestas(idProvincia)
	//cargarMapa()
	//descripcionesForo()
	//filasForo()
	
	ocultaFormulario()
	Element.show("container")
	if($("form1")){
		$("form1").innerHTML=""
	}
}

function quitarCapaCarga(){
	do{
		if($('capaCarga')){
			Element.remove('capaCarga')
		}
	}while($('capaCarga'))
}

function recargarComboLocalidades(){
	combo=document.getElementById("gTxt_Provincia_ID")
	url="/4DACTION/WEB_RecargarComboProvincias?"
	url+="gTxt_ID="+combo.options[combo.selectedIndex].value
	url+="&gTxt_NomVar=gTxt_Localidad_ID"
	if(arguments.length>0){
		url+="&gTxt_ID_Dependiente="+arguments[0]
	}
	url+="&"+Math.round(Math.random()*123456789)
	llamadaAjax(url)
}

enlacePriLvlClickado=""
function cargarMenuLvl2(idPag){
	url="MenuSecLvl.shtml?gTxt_PaginaPriLvl="+idPag
	if(enlacePriLvlClickado!=""){
		clase=$(enlacePriLvlClickado).getAttribute("class").replace("activa","")
		$(enlacePriLvlClickado).setAttribute("class",clase)
	}
	
	enlacePriLvlClickado="pagPriLvlEnl_"+idPag
	clase=$(enlacePriLvlClickado).getAttribute("class")+" "+"activa"
	$(enlacePriLvlClickado).setAttribute("class",clase)
	
	new Ajax.Updater(
		'submenu',
		formatarUrl(url),
		{
			onComplete:function()
			{
				//Element.sho(('recibirDatosSev')),
				//new Effect.BlindUp('contenidoAJAX', { duration: 10})
			}
			,	aynchronous:true
			, evalScripts:true
		}
	);
}


function enviarComentarios(idreg,idtabla){
	url='comentarioFoto.shtml?gTxt_ID='+idreg+"&gTxt_Tabla="+idtabla
	crearVentanaDatos(url,0,506,689)
}

function enviarComentariosPub(idreg,idtabla){
	url='comentariosPublico.shtml?gTxt_ID='+idreg+"&gTxt_Tabla="+idtabla
	crearVentanaDatos(url,0,506,689)
}

function subirFotoSeccion(idreg,idtabla,pagina){
	url='subirFoto.shtml?gTxt_IDReg='+idreg+"&gTxt_IDTabla="+idtabla+"&gTxt_Pagina="+pagina
	crearVentanaDatos(url,0,300,400)
}

function cargarCapaSombreado(){
	borrar=false
	if(!$('sombreado')){
		borrar=true;
		ocultaObjetos()
		crearCapaSombreado()
	}else{
		if(!Element.visible('sombreado')){
			borrar=true;
			ocultaObjetos()
			Element.show('sombreado')
		}
	}
	reAjustarCapaSombra()
	return borrar
}

function reAjustarCapaSombra(){
	var arrayPageSize = getPageSize();
	
	Element.setHeight("sombreado",arrayPageSize[1]+10)
	if(document.all){
		Element.setWidth("sombreado",arrayPageSize[0])
	}else{
		Element.setWidth("sombreado",arrayPageSize[0]-18)
	}	
}

function topScroll(){
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	var topEle = arrayPageScroll[1] + (arrayPageSize[3] / 15);
	return topEle;
}


function muestraOcultaScrollPagina(muestra){
	if(muestra){
		prop="auto"
	}else{
		prop="hidden"
	}
	if(document.all){
		window.document.documentElement.style.overflowY=prop
	}else {
		window.document.body.style.overflowY=prop
	}
}


function crearVentanaDatos(url,top,height,width){
	nomCapaPadre="capaPadre_"+Math.round(Math.random()*123456789)
	nomCapaBotones="botonesChapar_"+Math.round(Math.random()*123456789)
	nomCapaContenidos="capaContenidos"+Math.round(Math.random()*123456789)
	capaPadre=creaCapa(nomCapaPadre)

	if(document.all){
		posScroll=Math.max(document.body.scrollTop,document.documentElement.scrollTop)
	 }
	 else {
		posScroll=window.pageYOffset;
	 }
	muestraOcultaScrollPagina(false)
	borrar=cargarCapaSombreado()
	
	var topPagina = topScroll()

	botones=creaCapa(nomCapaBotones,nomCapaPadre)
	Element.addClassName(botones,'botonesCerrarVentanaAjax')
	botones.nomCapaPadre=nomCapaPadre
	botones.zIndexCapaSombra=Element.getStyle($('sombreado'),'z-index')
	botones.borrar=borrar
	botones.posScroll=posScroll
	botones.onclick=function(){
		Element.remove(this.nomCapaPadre)
		if(this.borrar){
			Element.hide('sombreado')
			mostrarFlashes();
		}else{
			$('sombreado').setStyle({zIndex:this.zIndexCapaSombra});
		}
			if(document.all){
			}else{
				window.scrollTo(this.posScroll,this.posScroll)
			}
			muestraOcultaScrollPagina(true)
	}
	capaDatos=creaCapa(nomCapaContenidos,nomCapaPadre)
	$('sombreado').setStyle({zIndex:new Number(botones.zIndexCapaSombra)+100});
	capaPadre.setStyle({position:'absolute',top:(top+topPagina)+'px',width:'100%',zIndex:new Number(botones.zIndexCapaSombra)+100+1});
	
	capaDatos.setStyle({position:'relative',
	width:width+'px',height:height+'px',margin:'0 auto',top:'-20px',zIndex:'1'});
	
	
	capaDatos.innerHTML='<img src="/images/loading.gif" style="position:relative;margin:'+((height/2)-10)+'px '+((width/2)-10)+'px"/>'
	/*Element.hide('sombreado')
	Element.hide(nomCapaPadre)*/
	Element.show('sombreado');
	if(arguments.length>4){
		Element.addClassName(capaDatos,arguments[4])
		
		//botones.setStyle({position:'relative',margin:'0 auto',top:'20px',left:((width/2)-20)+'px',zIndex:'2'});
	}else{
		capaDatos.setStyle({backgroundColor:'#FFFFFF',padding:'15px',border:'4px solid #bbb9a2;'});
		//botones.setStyle({position:'relative',margin:'0 auto',left:((width/2)+10)+'px',zIndex:'2'});
	}
	botones.setStyle({position:'relative',margin:'0 auto',left:((width/2)+10)+'px',zIndex:'2'});
	reAjustarCapaSombra()
	/*new Ajax.Updater
	(
	nomCapaContenidos,
	formatarUrl(url),
	{
		method:'get',
		onLoaded:function()
		{
			Element.show('sombreado')
			Element.show(nomCapaPadre)

		}
		,aynchronous:true
		, evalScripts:true
		}
	);*/
	pause(500)
	cargaPagina(url,nomCapaContenidos)
	return botones
}
function cargarDetalleIlustre(id){
	url='GaleriaIlustres/det_Ilustre.shtml?gTxt_ID='+id+"&"+Math.round(Math.random()*123456789)
	cargarDetPersona(url)
}

function cargarDetPersona(url){
	crearVentanaDatos(url,0,611,634,'detallePersonalidad')
}

function cargarVentanaHimno(url){
	botonCerrar=cargarVentanaGrande(url)
	botonCerrar.onclickViejo=botonCerrar.onclick
	botonCerrar.onclick=function(){
		this.onclickViejo()
		if(document.all){
			window.location.reload()
		}
		
	}
}

function cambioDetGaIlus(idioma){
	if(Element.visible('PortadaIlustre')){
		Element.hide('PortadaIlustre')
		Element.show('ImagenesIlustre')
		$('botonPestanaGalIlu').setAttribute('class','botonCambioPestanaIlus portada_'+idioma);
		scrollDetIlustre=new Scroll("containerScrollImagenesIlustre","contenidoScrollImagenesIlustre","subirDetIlustre","bajarDetIlustre");
		scrollDetIlustre.Velocidad=20;

	}else{
		Element.show('PortadaIlustre')
		Element.hide('ImagenesIlustre')
		$('botonPestanaGalIlu').setAttribute('class','botonCambioPestanaIlus album_'+idioma);
		scrollDetIlustre=new Scroll("containerScrollVidaIlustre","contenidoScrollVidaIlustre","subirDetIlustre","bajarDetIlustre");
		scrollDetIlustre.Velocidad=20;
	}
	


}

function cargarVentanaGrande(url){
	return crearVentanaDatos(url,0,611,800,'detalleVentana')
}

function cambiaPestanaDetalle(elemento,idioma){
	nomClaseCambioPestana='';
	initScroll=false
	if(elemento==null){
		initScroll=true
		arra=$$('.botoneraDetalle')
		if($$(".botoneraDetalle")[0]){
			elemento=$$(".botoneraDetalle")[0].getElementsByTagName("a")[0]
		}
		if($$(".botoneraDetallePeque")[0]){
			elemento=$$(".botoneraDetallePeque")[0].getElementsByTagName("a")[0]
		}
	}

	if($$(".botoneraDetalle")[0]){
		nomClaseCambioPestana='botonCambioPestana';
	}
	if($$(".botoneraDetallePeque")[0]){
		nomClaseCambioPestana='botonCambioPestanaPeque';
	}	
	
	objUL=elemento.parentNode.parentNode
	elementos=objUL.getElementsByTagName("a")
	for(var i=0;i<elementos.length;i++){
		objetoHref=elementos[i]
		if(objetoHref){
			if(document.all){
				clase=objetoHref.getAttribute("classname")
			}else{
				clase=objetoHref.getAttribute("class")
			}
			claseori=clase
			clase=clase.split(" ")[1]//La definicion del objeto consta de dos clases, me quedon con la segunda
			clase=clase.split("_")[0]
			if(initScroll){
				creaScroll('div_'+clase)
			}
			Element.hide('div_'+clase)
			//$('div_'+clase).style.visibility='hidden'
	
			if(claseori.indexOf('invisible')==-1){
				nomClase=nomClaseCambioPestana+' '+clase+'_'+idioma
				if(document.all){
					objetoHref.setAttribute("className",nomClase)
				}else{
					objetoHref.setAttribute("class",nomClase)
				}
			}
		}
	}

	if(document.all){
		clase=elemento.getAttribute("classname")
	}else{
		clase=elemento.getAttribute("class")
	}
	clase=clase.split(" ")[1]
	clase=clase.split("_")[0]


	//$('div_'+clase).style.visibility='visible'
	Element.show('div_'+clase)
	nomClase='botonCambioPestana '+clase+'_Activa_'+idioma
	Element.addClassName(elemento,nomClase)
	capas=$('div_'+clase).getElementsByTagName('div');
	//$('div_'+clase).style.display='block'
	
	/*if(capas[0]){
		capaContainer=capas[0].getAttribute("id")
		capaContenedor=capas[1].getAttribute("id")
		creaScroll(capaContainer)
		//scrollDet=new Scroll(capaContainer,capaContenedor,"subirDetalle","bajarDetalle");
	}else{
		$('barraScrollDetalle').style.visibility="hidden"
		$('subirDetalle').style.visibility="hidden"
		$('bajarDetalle').style.visibility="hidden"
	}*/
	//scrollDetIlustre.Velocidad=20;
}

function cargarDetalleComentario(id){
	url="includes/detComentario.shtml?gTxt_ID="+id
	crearVentanaDatos(url,40,400,700)
}

function cargaEfemerides(url){

	/*ocultaObjetos()
	crearCapaSombreado();
	capaDatos=creaCapa('capaDatos');
	zIndexSombreado=parseInt($('sombreado').style.zIndex);
	capaDatos.style.zIndex=zIndexSombreado+1
	capaDatos.style.position="absolute"
	capaDatos.style.width="100%"
	capaDatos.style.top=0+"px"
	capaDatos.style.left=0+"px"
	Element.scrollTo('header');

	new Ajax.Updater('capaDatos',formatarUrl(url),{onLoaded:null,onComplete:null,aynchronous:true,evalScripts:true});*/
	crearVentanaDatos(url,0,460,700)
}

function alerta(texto){
	url='includes/alerta.shtml?gTxt_mensaje='+escape(texto)
	crearVentanaDatos(url,200,150,300)
}
function altaBazkide(url){
	if($('alerta')){
		borraAlerta ()
	}
	crearVentanaDatos(url,0,640,930)
}
/******************************************************************** alt imagenes *****************************************************************/
function muestraAlt (objeto)
{
	nodoConstruccion=$(objeto).up(0);
	$(nodoConstruccion).style.cursor="help"
	
	capaAlt=document.createElement("p")
	capaAlt.setAttribute("id","altInfo")
	capaAlt.innerHTML=$(objeto).alt
	nodoConstruccion.appendChild(capaAlt);
	
	
	$(objeto).onmouseout=function ()
	{
		Element.remove('altInfo')
	}
}
creaScroll=function (idObj){
	Element.show(idObj)
	$(idObj).style.visibility='visible'
	altoCSS=new Number($(idObj).getStyle('min-height').replace("px",""))
	st=$(idObj).style
	st.height=altoCSS+"px"
	st.overflow='hidden'
	$(idObj).sb = new ScrollBox($(idObj), {auto_hide: true})
}

creaScroll_old=function(idObj){
	Element.show(idObj)
	$(idObj).style.visibility='visible'

	//$(idObj).style.visibility="visible"
	st=$(idObj).style
	/*for(var i in st){
		alert(i+" "+st[i])
	}*/
	altoCSS=new Number($(idObj).getStyle('min-height').replace("px",""))
	//altoCSS=490
	idCapa=$(idObj).id
	content='content_'+idCapa
	if($(idObj).offsetHeight>altoCSS){
		/*obj=$(idObj).document
		for(var i in obj){
			alert(i+" "+obj[i])
		}*/
		contenido=$(idObj).innerHTML
		arr=contenido.split('_extended="true"')
		contenido=arr.join('')
		anchoReal=$(idObj).offsetWidth
		nombreTrack='track_'+idCapa
		nombreHandle='handle_'+idCapa
		buttonUp='button-up_'+idCapa
		buttonDown='button-down_'+idCapa
		por=altoCSS*100/$(idObj).offsetHeight
		altoTrack=altoCSS-30
		altoHandle=altoTrack*por/100
		altoHandle=Math.floor(altoHandle)
		altoHandle=10
		cont='<div id="'+nombreTrack+'" class="trackScroll" style="position:absolute;right:0px;top:15px;width:14px;height:'+altoTrack+'px;">'
		cont+='<div id="'+nombreHandle+'" class="handleScroll" style="position:absolute;right:0px;top:0;width:13px;height:'+altoHandle+'px;"></div>'
		
		cont+="</div>"
		cont+='<div id="'+buttonUp+'" class="buttonUpScroll" style="position:absolute;top:0;right:0px;width:14px;height:15px;"></div>'
		cont+='<div id="'+buttonDown+'" class="buttondownScroll" style="position:absolute;top:'+(altoCSS-15)+'px;right:0px;width:14px;height:15px;"></div>'
		cont+='<div id="'+content+'" style="position:absolute;top:0;left:0px;width:'+(anchoReal-30)+'px;clip:rect(0px,'+(anchoReal-20)+'px,'+(altoCSS)+'px,0px);overflow:hidden;padding-bottom:40px">'
		cont+=contenido+'</div>'
		//cont+='<div>aa</div>'
		$(idObj).innerHTML=cont
		$(idObj).sr=new Control.Scroller( content, nombreHandle, nombreTrack, {up: buttonUp,down: buttonDown,visibleHeight:altoCSS});
		st.overflow='hidden'
	}
	st.height=altoCSS+"px"
}

function pagImagenes(){
	nodosPaginacion=$$(".paginadorEnlaces")
	for(var i =0;i<nodosPaginacion.length;i++){
		nodosPaginacion[i].href=nodosPaginacion[i].href.replace('actualidad/det_Actualidad.shtml','detalle/imagenes_pag.shtml')
		if(arguments.length>0){
			nodosPaginacion[i].href+="&gTxt_Tabla="+arguments[0]
			nodosPaginacion[i].href+="&gTxt_Fotos_Paginacion="+arguments[1]
		}
		nodosPaginacion[i].onclick=function(){
			cargaPagina(this.href,'div_imagenesPeque');
			return false;
		}
	}

}

function recolocarIconoDetalle(){
	document.getElementsByTagName("body")[0].appendChild($('iconoDetalle'))
	zIndexCapaSombra=Element.getStyle($('sombreado'),'z-index')

	$('iconoDetalle').setStyle({zIndex:new Number(zIndexCapaSombra)+2,top:210,left:120});
	botonCerrar=$$('.botonesCerrarVentanaAjax')[0]
	botonCerrar.onclickViejo=botonCerrar.onclick
	botonCerrar.onclick=function(){
		this.onclickViejo()
		Element.remove('iconoDetalle')
	}
}
formulario=null
loginFormulario=true
enlaceClickado=null
ventanaAparte=false
Event.observe(window,"load",obtEnlacesPrivados)

function obtEnlacesPrivados(){
	nodosPrivados=$$(".privada")
	for(var i =0;i<nodosPrivados.length;i++){
		if(!nodosPrivados[i].accion){
			if(nodosPrivados[i].onclick){
				nodosPrivados[i].accion=nodosPrivados[i].onclick
			}
			nodosPrivados[i].onclick= function (){
				loginFormulario=false
				comprobarLogin()
				if(!this.accion){
					this.accion=function(){
						window.location.href=this.href
					}
				}
				enlaceClickado=this
				return false;
			}
		}
	}
}

function enviarFormulario(botoncico){

	formulario=botoncico.form
	formulario.onsubmit=function(){return false}
	loginFormulario=true
	comprobarLogin()
}

function enviarFormularioSinLogin(botoncico){

	formulario=botoncico.form
	formulario.onsubmit=function(){return false}
}

function comprobarLogin(){
	url="/4DACTION/WEB_Logeado?"
	if(arguments.length>0){
		url+="gTxt_FuncionMal="+arguments[0]
	}
	url+="&"+Math.round(Math.random()*123456789)
	new Ajax.Updater(
		crearCapaRecargar(),
		url,
		{
			onLoaded:function ()
			{
			}
			,
			onComplete:function(data)
			{
				/*if(data.responseText=="Si"){
					proceder()
				}else{
					ocultaObjetos ()
					cargaLogin ()
				}*/

				//Element.show($('recibirDatosSev')),
				//new Effect.BlindUp('contenidoAJAX', { duration: 10})

			}
			,
			onSuccess:function(data)
			{
				dimensionaCapas ();
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function proceder(){
	quitarCapaCarga()
	
	if(loginFormulario){
		formulario.submit();
	}else{
		enlaceClickado.accion()
		logeado()
		quitarCapaCarga()
	}
}

function cargaLogin (){
	dibujaLogin ();

	new Ajax.Updater
	(
		'capaDatosAJAX',
		formatarUrl('Login.shtml'),
		{
			onComplete:function(){
				if($('fraseError')){
					Element.hide('fraseError')
				}
				quitarCapaCarga()
			}
			,aynchronous:true
			,evalScripts:true
		}

	);
}

function login(){
	formLog=window.document.formLogeo
	formLog.onsubmit=function(){return false}
	url="/4DACTION/WEB_Login?"
	url+="gTxt_Usuario="+formLog.gTxt_Usuario.value
	url+="&gTxt_Clave="+formLog.gTxt_Clave.value
	url+="&gTxt_Idioma="+formLog.gTxt_Idioma.value
	url+="&"+Math.round(Math.random()*123456789)
		new Ajax.Updater
	(
		'',
		url,
		{
			onLoaded:function ()
			{
			}
			,
			onComplete:function(data)
			{
				if(data.responseText=="Bien"){
					borraAlerta ()
					proceder()
				}else if(data.responseText=="Redirect"){
					window.location.href='miperfil.shtml';
				}else{
					$('fraseError').style.display="block";
				}

				//Element.show($('recibirDatosSev')),
				//new Effect.BlindUp('contenidoAJAX', { duration: 10})

			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}


// -----------------------------------------------------------------------------------
//
//	Lightbox v2.0
//	by Lokesh Dhakar - http://www.huddletogether.com
//	3/27/06
//
//	For more information on this script, visit:
//	http://huddletogether.com/projects/lightbox2/
//
//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
//
//	Credit also due to those who have helped, inspired, and made their code available to the public.
//	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.org), Thomas Fuchs(mir.aculo.us), and others.
//
//
// -----------------------------------------------------------------------------------
/*

	Table of Contents
	-----------------
	Configuration
	Global Variables

	Extending Built-in Objects
	- Object.extend(Element)
	- Array.prototype.removeDuplicates()
	- Array.prototype.empty()

	lightbox Class Declaration
	- initialize()
	- start()
	- changeImage()
	- resizeImageContainer()
	- showImage()
	- updateDetails()
	- updateNav()
	- preloadNeighborImages()
	- end()

	Miscellaneous Functions
	- getPageScroll()
	- getPageSize()
	- getKey()
	- listenKey()
	- showSelectBoxes()
	- hideSelectBoxes()
	- pause()
	- addLoadEvent()
	- initLightbox()

	Function Calls
	- addLoadEvent(initLightbox)

*/
// -----------------------------------------------------------------------------------
// adaptacion de la libreria LIGHBOX de Lokesh Dhakar - http://www.huddletogether.com
//
//	Configuration
//
var fileLoadingImage = "/images/loading.gif";
var fileBottomNavCloseImage = "/images/close.gif";
var borderSize = 10;
var gBoo_mostrarAlbum=true
var carousel=null;
var anchoIniCarrusel=0;
var gBoo_FlechasDepCarrusel=true
// -----------------------------------------------------------------------------------

//
//	Global Variables
//
var imageArray = new Array;
var activeImage;

// -----------------------------------------------------------------------------------

//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth;
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
//    	element.style.top = t +"px";
    	element.style.top = t +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src;
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href;
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

// -----------------------------------------------------------------------------------

//
//	Extending built-in Array object
//	- array.removeDuplicates()
//	- array.empty()
//
Array.prototype.removeDuplicates = function () {
	for(i = 1; i < this.length; i++){
		if(this[i][0] == this[i-1][0]){
			this.splice(i,1);
		}
	}
}

// -----------------------------------------------------------------------------------

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}

// -----------------------------------------------------------------------------------

//
//	lightbox Class Declaration
//	- initialize()
//	- start()
//	- changeImage()
//	- resizeImageContainer()
//	- showImage()
//	- updateDetails()
//	- updateNav()
//	- preloadNeighborImages()
//	- end()
//
//	Structuring of code inspired by Scott Upton (http://www.uptonic.com/)
//
var lightbox = Class.create()

lightbox.prototype = {

	// initialize()
	// Constructor runs on completion of the DOM loading. Loops through anchor tags looking for
	// 'lightbox' references and applies onclick events to appropriate links. The 2nd section of
	// the function inserts html at the bottom of the page which is used to display the shadow
	// overlay and the image container.
	//

	initialize: function() {
		//if (!document.getElementsByTagName){ return; }
		/*var anchors = document.getElementsByTagName('a');
		// loop through all anchor tags
		for (var i=0; i<anchors.length; i++){
			var anchor = anchors[i];

			var relAttribute = String(anchor.getAttribute('rel'));

			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (anchor.getAttribute('href') && (relAttribute.toLowerCase().match('pegatinas'))){
				anchor.onclick = function () {myLightbox.start(this); return false;}
			}

		}*/

		// The rest of this code inserts html at the bottom of the page that looks similar to this:
		//
		//	<div id="overlay"></div>
		//	<div id="lightbox">
		//		<div id="imageContainer">
		//			<img id="lightboxImage">
		//			<div style="" id="hoverNav">
		//				<a href="#" id="prevLink"></a>
		//				<a href="#" id="nextLink"></a>
		//			</div>
		//			<div id="loading">
		//				<a href="#" id="loadingLink">
		//					<img src="/Ebatzokia/images/loading.gif">
		//				</a>
		//			</div>
		//		</div>
		//		<div id="imageData">
		//			<div id="imageDetails">
		//				<span id="caption"></span>
		//				<span id="numberDisplay"></span>
		//			</div>
		//			<div id="bottomNav">
		//				<a href="#" id="bottomNavClose">
		//					<img src="/Ebatzokia/images/close.gif">
		//				</a>
		//			</div>
		//		<div id="formuComentarios">
		//		</div>
		//		</div>
		//	</div>


		var objBody = document.getElementsByTagName("body").item(0);

		if(!$('sombreado')){
			crearCapaSombreado()
		}
		objOverlay=$('sombreado')
		objOverlay.style.display = 'none';

		this.crearCarrusel(objBody);
		
		var objLightbox = document.createElement("div");
		objLightbox.setAttribute('id','lightbox');
		objLightbox.style.display = 'none';
		objBody.appendChild(objLightbox);

		var objImageContainer = document.createElement("div");
		objImageContainer.setAttribute('id','imageContainer');
		objImageContainer.onclick = null;
		objLightbox.appendChild(objImageContainer);

		var objLightboxImage = document.createElement("img");
		objLightboxImage.setAttribute('id','lightboxImage');
		objImageContainer.appendChild(objLightboxImage);

		var objHoverNav = document.createElement("div");
		objHoverNav.setAttribute('id','hoverNav');
		objImageContainer.appendChild(objHoverNav);

		var objPrevLink = document.createElement("a");
		objPrevLink.setAttribute('id','prevLink');
		objPrevLink.setAttribute('href','#');
		objHoverNav.appendChild(objPrevLink);

		var objNextLink = document.createElement("a");
		objNextLink.setAttribute('id','nextLink');
		objNextLink.setAttribute('href','#');
		objHoverNav.appendChild(objNextLink);

		var objLoading = document.createElement("div");
		objLoading.setAttribute('id','loading');
		objImageContainer.appendChild(objLoading);

		var objLoadingLink = document.createElement("a");
		objLoadingLink.setAttribute('id','loadingLink');
		objLoadingLink.setAttribute('href','#');
		objLoadingLink.borrar=true
		objLoadingLink.onclick = function() {myLightbox.end(this.borrar,this.zIndexCapaSombra);
			return false;
		}
		objLoading.appendChild(objLoadingLink);

		var objLoadingImage = document.createElement("img");
		objLoadingImage.setAttribute('src', fileLoadingImage);
		objLoadingLink.appendChild(objLoadingImage);

		var objImageData = document.createElement("div");
		objImageData.setAttribute('id','imageData');
		objLightbox.appendChild(objImageData);

		var objImageDetails = document.createElement("div");
		objImageDetails.setAttribute('id','imageDetails');
		objImageData.appendChild(objImageDetails);

		var objCaption = document.createElement("div");
		objCaption.setAttribute('id','caption');
		objImageDetails.appendChild(objCaption);

		var objNumberDisplay = document.createElement("span");
		objNumberDisplay.setAttribute('id','numberDisplay');
		objImageDetails.appendChild(objNumberDisplay);

		var objBottomNav = document.createElement("div");
		objBottomNav.setAttribute('id','bottomNav');
		objImageData.appendChild(objBottomNav);

		var enlMostrarForm=document.createElement("p")
		objImageData.appendChild(enlMostrarForm)

		var enlace=document.createElement("a")
		enlace.setAttribute("id","abrirForment")
		enlace.setAttribute("href","#")
		enlMostrarForm.appendChild(enlace)

		Element.setInnerHTML(enlace,literalEnlace)

		var enlaceVerComentarios=document.createElement("a")
		enlaceVerComentarios.setAttribute("id","verComentarios")
		enlaceVerComentarios.setAttribute("href","#")
		enlaceVerComentarios.onclick=function (){	 return false;}
		enlMostrarForm.appendChild(enlaceVerComentarios)

		Element.setInnerHTML(enlaceVerComentarios,literalVerComentarios)



		var objFormComent=document.createElement("div")
		objFormComent.setAttribute('id','formuComentarios');
		Element.hide(objFormComent)
		objImageData.appendChild(objFormComent);

		var formulario=document.createElement("form")
		formulario.setAttribute("action","")
		formulario.setAttribute("name","formulario")
		formulario.setAttribute("method","")
		objFormComent.appendChild(formulario)


		var divComentarios=document.createElement("div")
		formulario.appendChild(divComentarios)

		var etiqueta=document.createElement("label")
		divComentarios.appendChild(etiqueta)

		Element.setInnerHTML(etiqueta,literalLabel)

		var hiddenId=document.createElement("input")
		hiddenId.setAttribute("type","hidden")
		hiddenId.setAttribute("id","idHiden")
		hiddenId.setAttribute("name","wRegistro")
		hiddenId.setAttribute("value","")
		divComentarios.appendChild(hiddenId)

		var hiddenSeccion=document.createElement("input")
		hiddenSeccion.setAttribute("type","hidden")
		hiddenSeccion.setAttribute("id","seccion")
		hiddenSeccion.setAttribute("name","wTabla")
		hiddenSeccion.setAttribute("value","")
		divComentarios.appendChild(hiddenSeccion)

		var comentario=document.createElement("textarea")
		comentario.setAttribute("name","wComentario")
		comentario.setAttribute("id","comentarios")
		divComentarios.appendChild(comentario)


		var botonEnvio=document.createElement("a")
		botonEnvio.setAttribute("href","javascript:enviarComentario()")
		botonEnvio.setAttribute("id","enviar")
		botonEnvio.setAttribute("onfocus","this.blur();")
		divComentarios.appendChild(botonEnvio)

		Element.setInnerHTML(botonEnvio,literalEnvio)

		var objBottomNavCloseLink = document.createElement("a");
		objBottomNavCloseLink.setAttribute('id','bottomNavClose');
		objBottomNavCloseLink.setAttribute('href','#');
		objBottomNavCloseLink.setAttribute('onfocus','this.blur();')
		objBottomNavCloseLink.borrar=true
		objBottomNavCloseLink.onclick = function() {
				myLightbox.end(this.borrar,this.zIndexCapaSombra); 
			return false; }
		objBottomNav.appendChild(objBottomNavCloseLink);

		var objBottomNavCloseImage = document.createElement("img");
		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);
		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);
	},

	//
	//	start()
	//	Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
	//
	start: function(imageLink) {
		gBoo_mostrarAlbum=true;
		if(!$('lightbox')){
			initialize();
		}

		zIndexCapaSombra=Element.getStyle($('sombreado'),'z-index')
		nuevoZIndex=new Number(zIndexCapaSombra)+100
		$('sombreado').setStyle({zIndex:nuevoZIndex});
		$('lightbox').setStyle({zIndex:nuevoZIndex+1});
		$('carousel_div').setStyle({zIndex:nuevoZIndex+1});
		if(document.all){
			$('bottomNavClose').scrollOculto=(window.document.documentElement.style.overflow=="hidden")
			$('bottomNavClose').scrollPos=document.documentElement.scrollTop
		}else{
			$('bottomNavClose').scrollOculto=(window.document.body.style.overflow=="hidden")
		}
		muestraOcultaScrollPagina(true)
		
		if(Element.visible('sombreado')){
			$('bottomNavClose').borrar=false
			$('bottomNavClose').zIndexCapaSombra=zIndexCapaSombra
			$('loadingLink').borrar=false
			$('loadingLink').zIndexCapaSombra=zIndexCapaSombra
			
			
		}else{
			$('bottomNavClose').borrar=true
			$('loadingLink').borrar=true
		}
		
		if ($('header'))
		{
			//Element.scrollTo('header');
		}
		
		hideSelectBoxes();
		// stretch overlay to fill page and fade in
		var arrayPageSize = getPageSize();
		Element.setHeight('sombreado', arrayPageSize[1]);
		new Effect.Appear('sombreado', { duration: 0.2, from: 0.0, to: 0.5 });
		imageArray = [];
		imageNum = 0;
		//titulo="";
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');

		// if image is NOT part of a set..
		if((imageLink.getAttribute('rel') == 'pegatinas')){
			// add single image to imageArray
			imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));
		} else {
		// if image is part of a set..
			// loop through anchors, find other images in set, and add them to imageArray
			for (var i=0; i<anchors.length; i++){
				var anchor = anchors[i];
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))){
					imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
					//titulo=anchor.getAttribute('title');

				}
			}

			imageArray.removeDuplicates();
			while(imageArray[imageNum][0] != imageLink.getAttribute('href')) { imageNum++;}
		}

		// calculate top offset for the lightbox and display
		var arrayPageSize = getPageSize();
		var arrayPageScroll = getPageScroll();
		var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 15);

		Element.setTop('lightbox', lightboxTop+50);
		Element.setTop('carousel_div', lightboxTop-30);
		Element.show('lightbox');

		this.changeImage(imageNum);
	},

	//
	//	changeImage()
	//	Hide most elements and preload image in preparation for resizing image container.
	//
	changeImage: function(imageNum) {

		activeImage = imageNum;	// update global var

		// hide elements during transition
		Element.show('loading');
		Element.hide('lightboxImage');
		Element.hide('hoverNav');
		Element.hide('prevLink');
		Element.hide('nextLink');
		Element.hide('imageData');
		Element.hide('numberDisplay');
		Element.hide('formuComentarios');

		imgPreloader = new Image();

		// once image is preloaded, resize image container
		imgPreloader.onload=function(){
			Element.setSrc('lightboxImage', imageArray[activeImage][0]);
			myLightbox.resizeImageContainer(imgPreloader.width, imgPreloader.height);
		}
		imgPreloader.src = imageArray[activeImage][0];
	},

	//
	//	resizeImageContainer()
	//
	resizeImageContainer: function( imgWidth, imgHeight) {

		// get current height and width
		this.wCur = Element.getWidth('imageContainer');
		this.hCur = Element.getHeight('imageContainer');

		// scalars based on change from old to new
		this.xScale = (imgWidth / this.wCur) * 100;
		this.yScale = (imgHeight / this.hCur) * 100;

		// calculate size difference between new and old image, and resize if necessary
		wDiff = (this.wCur - borderSize * 2) - imgWidth;
		hDiff = (this.hCur - borderSize * 2) - imgHeight;
		if(!( hDiff == 0)){ new Effect.Scale('imageContainer', this.yScale, {scaleX: false, duration: 0.6, queue: 'front'}); }
		if(!( wDiff == 0)){ new Effect.Scale('imageContainer', this.xScale, {scaleY: false, delay: 0.6, duration: 0.6}); }

		// if new and old image are same size and no scaling transition is necessary,
		// do a quick pause to prevent image flicker.
		if((hDiff == 0) && (wDiff == 0)){
			if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } else { pause(100);}
		}

		Element.setHeight('prevLink', imgHeight);
		Element.setHeight('nextLink', imgHeight);
		Element.setWidth( 'imageData', imgWidth);

		this.showImage();
	},

	//
	//	showImage()
	//	Display image and begin preloading neighbors.
	//
	showImage: function(){
		Element.hide('loading');
		new Effect.Appear('lightboxImage', { duration: 0.5, queue: 'end', afterFinish: function(){	myLightbox.updateDetails(); } });
		this.preloadNeighborImages();
	},

	//
	//	updateDetails()
	//	Display caption, image number, and bottom nav.
	//
	updateDetails: function() {

		Element.show('carousel_div')
		if(gBoo_mostrarAlbum){
			gBoo_mostrarAlbum=false;
			this.crearElementosCarrusel(imageArray,imageNum)
		}

		Element.show('caption');
		textoCaption=imageArray[activeImage][1].split("#");
		
		contenidoCaption="<p>"+textoCaption[0]+"</p>"
		Element.hide('formuComentarios')
		Element.hide('comentarios')
		Element.hide('verComentarios')
		Element.hide('abrirForment')
		
		if (textoCaption.length==4){
			Element.show('abrirForment')
			$('abrirForment').idRegistro=textoCaption[1]
			$('abrirForment').idTabla=textoCaption[2]
			$('abrirForment').onclick=function (){
				enviarComentarios(this.idRegistro,this.idTabla); return false;
			}

			$('idHiden').value=textoCaption[1];
			$('seccion').value=textoCaption[2];
			$('verComentarios').onclick=function ()
			{
				cargaListaComentariosFoto(textoCaption[1],textoCaption[2])
				return false;
			}
			if(textoCaption[3]=="Si"){
				Element.show('verComentarios')
			}else{
				Element.hide('verComentarios')
			}
		}
		

		if (textoCaption.length>5)
		{
			contenidoCaption="<p>";
			for (i=0;i<8;i++)
			{
				if ((i % 2)>0)
				{
					contenidoCaption+=textoCaption[i]+"</p>"
				} else {
					contenidoCaption+="<p><span class=\"label\">"+textoCaption[i]+"</span>";
				}
			}


			$('idHiden').value=textoCaption[8];
			$('seccion').value=textoCaption[9];
			$('verComentarios').onclick=function ()
			{
				cargaListaComentariosFoto(textoCaption[8],212)
			}
		}

		// if imaeis part of set display 'Image x of x')
		if(imageArray.length > 1){
			Element.show('numberDisplay');
			//Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " / " + imageArray.length);
			contenidoCaption+="<p>"+literalImagen +" "+ eval(activeImage + 1) +" "+ literalBarra +" "+ imageArray.length+"</p>"
		}
		Element.setInnerHTML( 'caption', contenidoCaption);
		new Effect.Parallel(
			[ new Effect.SlideDown( 'imageData', { sync: true, from: 0.0, to: 1.0 }),
			  new Effect.Appear('imageData', { sync: true }) ],
			{ duration: 0.65, afterFinish: function() { myLightbox.updateNav();} }
		);
	},

	//
	//	updateNav()
	//	Display appropriate previous and next hover navigation.
	//
	updateNav: function() {

		Element.show('hoverNav');

		// if not first image in set, display prev image button
		if(activeImage != 0){
			Element.show('prevLink');
			document.getElementById('prevLink').onclick = function() {
				myLightbox.changeImage(activeImage - 1);
				if(gBoo_FlechasDepCarrusel){
					carousel.scrollTo(activeImage)
				}
				return false;
			}
		}

		// if not last image in set, display next image button
		if(activeImage != (imageArray.length - 1)){
			Element.show('nextLink');
			document.getElementById('nextLink').onclick = function() {
				myLightbox.changeImage(activeImage + 1);
				if(gBoo_FlechasDepCarrusel){
					carousel.scrollTo(activeImage)
				}

				return false;
			}
		}
		
		reAjustarCapaSombra()
	},

	//
	//	preloadNeighborImages()
	//	Preload previous and next images.
	//
	preloadNeighborImages: function(){

		if((imageArray.length - 1) > activeImage){
			preloadNextImage = new Image();
			preloadNextImage.src = imageArray[activeImage + 1][0];
		}
		if(activeImage > 0){
			preloadPrevImage = new Image();
			preloadPrevImage.src = imageArray[activeImage - 1][0];
		}

	},

	//
	//	end()
	//
	muestraForm:function ()
	{
		Element.show('formuComentarios');
	},
	end: function(borrar,zIndex) {
		if ($('lightbox')){
			Element.hide('lightbox');
		}
		
		if ($('carousel_div')){
			Element.hide('carousel_div');
		}
		if($('bottomNavClose').scrollOculto){
			if(document.all){
				window.scrollTo($('bottomNavClose').scrollPos,$('bottomNavClose').scrollPos)
			}
			muestraOcultaScrollPagina(false)
		}
		if(borrar){
			//new Effect.Fade('sombreado', { duration: 0.2});
			Element.hide('sombreado');
			showSelectBoxes();
		}else{
			$('sombreado').setStyle({zIndex:zIndex});
		}
	},
	
	crearCarrusel: function(gObj_CapaPadre) {
	/*
	Nombre:crearCarrusel
	Versión:1.0
	Fecha:7/5/7
	Autor:Gaizka Anton
	Entrada:
		gObj_CapaPadre(obj)=Referencia de la capa donde hay que situar el carrusel.
	
	Salida:NO HAY PARAMETROS DE SALIDA
	Descripción:Este metodo crea los nodos HTML para constuir el carrusel.
	
	La estructura a crear es la que sigue:
	<div class="carousel_div">
		<div class="wrapper" id="wrapper_carousel">
			<div id="prev-arrow-container">
				<img id="prev-arrow" src="http://prototype-carousel.xilinus.com/images/left3-disabled.gif?1163492051" />
			</div>
			<div class="carousel-component" id="html-carousel">
				<div class="carousel-clip-region">
					<ul class="carousel-list">
						<li>
							<img alt="Image1" class="thumb" src="http://prototype-carousel.xilinus.com/images/image1.png?1163492051" />Image 1
						</li>
					</ul>
				</div>
			</div>
			<div id="next-arrow-container">
				<img id="next-arrow" src="http://prototype-carousel.xilinus.com/images/right3-enabled.gif?1163492051" />
			</div>
		</div>
	</div>
	*/	
		//Si no esta creado		
		if(!$('carousel_div')){
		//Creación del container
			gObj_ContDiv=crearNodo('div',gObj_CapaPadre,'carousel_div')
			
			gObj_Contenedor=crearNodo('div',gObj_ContDiv,'wrapper_carousel')
			Element.addClassName(gObj_Contenedor,'wrapper')
	
			//Definicion de la 'flechita' de pagina anterior
			gObj_Pre=crearNodo('div',gObj_Contenedor,'prev-arrow-container')
			
			gObj_ImgPre=crearNodo('img',gObj_Pre,'prev-arrow')
			
			//Definicion del cuerpo propio del carrusel
			gObj_CarPeque=crearNodo('div',gObj_Contenedor,'html-carousel')
			Element.addClassName(gObj_CarPeque,'carousel-component')

			gObj_CarRegion=crearNodo('div',gObj_CarPeque,'html-carousel-clip-region')
			Element.addClassName(gObj_CarRegion,'carousel-clip-region')

			gObj_CarLista=crearNodo('ul',gObj_CarRegion,'listaCarrusel')
			Element.addClassName(gObj_CarLista,'carousel-list')
			
			//Definicion de la 'flechita' de pagina siguiente
			gObj_Next=crearNodo('div',gObj_Contenedor,'next-arrow-container')
			
			gObj_ImgNext=crearNodo('img',gObj_Next,'next-arrow')
			
			buttonStateHandler('prev-arrow', false) 
			buttonStateHandler('next-arrow-container', true) 
			
			Element.hide('carousel_div')
		}
		//Element.setHeight()
	},
	
	crearElementosCarrusel: function(gObj_ImageArray,gNum_ImageNum) {
	/*
	Nombre:crearElementosCarrusel
	Versión:1.0
	Fecha:7/5/7
	Autor:Gaizka Anton
	Entrada:
		gObj_ImageArray(array)=Array con los paths de las imágenes que intervienen en el carrusel
		gNum_ImageNum(int)= numero de la imagen que se esta mostrando para posicionar el carrusel
		
	Salida:NO HAY PARAMETROS DE SALIDA
	Descripción:Este metodo se invoca despúes de que el objeto lightbox haya obtenido todo el set de fotos.
	Este metodo creará los nodos correspondientes al carrusel, así como su inicialización
	*/	

	//obtenemos la lista donde irán las imagenes
	
		gObj_listaCarrusel=$('listaCarrusel');
		gObj_listaCarrusel.innerHTML=""//Borrar la lista
		anchoFoto=0
		for(var i=0;i<gObj_ImageArray.length;i++){
			//Creamos El elemento (Li)
			gObj_li=crearNodo('li',gObj_listaCarrusel)
			rel=gObj_ImageArray[i][1]
			elementos=rel.split("#")
			gObj_Div=crearNodo('div',gObj_li)
			Element.addClassName(gObj_Div,'capaUppCarouselFotos')

			//Creamos la imagen thumbnail (img)
			if(elementos.length==4){
				if(elementos[3]=="Si"){
					Element.addClassName(gObj_Div,'iconoAportacionBazkide')
					gObj_Div.idRegistro=elementos[1]
					gObj_Div.idTabla=elementos[2]
					gObj_Div.onclick=function (){
						cargaListaComentariosFoto(this.idRegistro,this.idTabla)
						return false;
					}
				}
			}
			
			gObj_img=crearNodo('img',gObj_li)
			gObj_img.setAttribute('src',gObj_ImageArray[i][0])//El Src esta en el primer nodo del array
			gObj_img.setAttribute('class','thumb')
			gObj_img.setAttribute('alt',elementos[0])
			gObj_img.numImage=i
			gObj_img.onclick=function(){
				myLightbox.changeImage(this.numImage);	
				return false;
			}

			if(i==0){
				anchoFoto=gObj_li.offsetWidth
			}
		}//Fin de bucle
		//alert(anchoFoto)
		//$('tracer').value=$('carousel_div').innerHTML
		if(carousel!=null){
			carousel.scrollTo(0)
			carousel.destroy()
		}
		Element.show('prev-arrow-container');
		Element.show('next-arrow-container');
		$('prev-arrow-container').style.visibility='visible';
		$('next-arrow-container').style.visibility='visible';
		carousel = new Carousel('html-carousel',{animHandler:animHandler,animParameters:{duration:0.5},buttonStateHandler:buttonStateHandler,nextElementID:'next-arrow',prevElementID:'prev-arrow',size:gObj_ImageArray.length,scrollInc:6})
		gNum_AnchoFlechaPrev=Element.getWidth('prev-arrow-container');
		gNum_AnchoFlechaNext=Element.getWidth('next-arrow-container');
		gNum_AnchoCarrusel=Element.getWidth('html-carousel');

		Element.setWidth('html-carousel',1)
		if(anchoIniCarrusel==0){
			anchoIniCarrusel=Element.getWidth('wrapper_carousel')
		}

		Element.setWidth('wrapper_carousel',anchoIniCarrusel)
		
		gNum_AnchoContCarrusel=Element.getWidth('wrapper_carousel');
		gBoo_FlechasDepCarrusel=true
		totalTamano=anchoFoto*gObj_ImageArray.length
		if(gNum_AnchoContCarrusel>totalTamano){
			gNum_AnchoContCarrusel=totalTamano+32;
			$('prev-arrow-container').style.visibility='hidden';
			$('next-arrow-container').style.visibility='hidden'

			/*Element.hide('prev-arrow-container');
			Element.hide('next-arrow-container');
			gNum_AnchoFlechaPrev=0
			gNum_AnchoFlechaNext=0
			gBoo_FlechasDepCarrusel=false*/
		}
		gNum_AnchoFinalCarrusel=gNum_AnchoContCarrusel-gNum_AnchoFlechaPrev-gNum_AnchoFlechaNext-5
		new Effect.Scale('html-carousel', gNum_AnchoFinalCarrusel* 100, {scaleY: false, delay: 0.6, duration: 0.6});
		gNum_AnchoContCarrusel=Element.getWidth('wrapper_carousel');
		gNum_Peque=gNum_AnchoFlechaPrev+gNum_AnchoFlechaNext+2
		totalTamano+=gNum_Peque
		if(gNum_AnchoContCarrusel>totalTamano){
			gNum_AnchoContCarrusel=totalTamano
		}

		Element.setWidth('wrapper_carousel',gNum_Peque)
		if(document.all){//Explorer, no me preguntes.
			gNum_Peque=30
		}

		new Effect.Scale('wrapper_carousel', (gNum_AnchoContCarrusel / gNum_Peque) * 100, {scaleY: false, delay: 0.6, duration: 0.6});
	}
}

// -----------------------------------------------------------------------------------

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	arrayPageScroll = new Array('',yScroll)
	return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){

	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
	return arrayPageSize;
}

// -----------------------------------------------------------------------------------

//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//
function getKey(e){
	if (e == null) { // ie
		keycode = event.keyCode;
	} else { // mozilla
		keycode = e.which;
	}
	key = String.fromCharCode(keycode).toLowerCase();

	if(key == 'x'){ hideLightbox(); }
}

// -----------------------------------------------------------------------------------

//
// listenKey()
//
function listenKey () {	document.onkeypress = getKey; }

// ---------------------------------------------------

function showSelectBoxes(){
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
	if(!window.document.altaEuskoLink){
		flashes=$$(".flashOculto")
		for (i = 0; i != flashes.length; i++) {
			flashes[i].style.visibility = "visible";
		}
		if ($('ventana'))
		{
		} else {
			if ($('flash'))
			{
				Element.show($('flash'));
			}
		}
	}
}

// ---------------------------------------------------

function hideSelectBoxes(){
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
	
	flashes=$$(".flashOculto");
	for (i = 0; i != flashes.length; i++) {
		flashes[i].style.visibility = "hidden";
	}
	if ($('flash'))
	{
		Element.hide($('flash'));
	}



}

// ---------------------------------------------------

//
// pause(numberMillis)
// Pauses code execution for specified time. Uses busy code, not good.
// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602
//
function pause(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime)
			return;
	}
}

// ---------------------------------------------------

//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
		oldonload();
		func();
		}
	}

}

function crearNodo(tipoNodo,nodoPadre) {
	/*
	Nombre:crearNodo
	Versión:1.0
	Fecha:7/5/7
	Autor:Gaizka Anton
	Entrada:
		tipoNodo(str)=Aqui se recoje el nodo HTML a crear (img,a, div...).
		nodoPadre(obj)=Aqui se recoje la referencia al nodo que contendra el nuevo elemento creado.
		arguments(2)(str)=Tercer Parametro opcional, que me indica el id del nuevo nodo.
		
	Salida:
		nuevoNodo(obj)=La función devuelve un objeto con referencia al nodo recien creado
		
	Descripción:La finalidad de este metodo no es otra que agilizar la visión del codigo para crear nodos HTML.
	*/	

	var nuevoNodo = document.createElement(tipoNodo);
		
	//Si se pasa tercer parámetro, este será el ID del nuevo nodo
	if(arguments.length>2){
		nuevoNodo.setAttribute('id',arguments[2]);
	}
		
	nodoPadre.appendChild(nuevoNodo);
		
	return nuevoNodo;
}

/*FUNCIONES PARA EL CARRUSEL*/
 function buttonStateHandler(button, enabled){
 if (button == "prev-arrow")
   $('prev-arrow').src = enabled ? "/images/left3-enabled.gif" : "/images/left3-disabled.gif"
 else
   $('next-arrow').src = enabled ? "/images/right3-enabled.gif" : "/images/right3-disabled.gif"
}

function animHandler(carouselID, status, direction) {
  var region = $(carouselID).down(".carousel-clip-region")
  if (status == "before") {
    Effect.Fade(region, {to: 0.3, queue: { position:'end', scope: "carousel" }, duration: 0.2})
  }
  if (status == "after") {
    Effect.Fade(region, {to: 1, queue: { position:'end', scope: "carousel" }, duration: 0.2})
  }
}


// ---------------------------------------------------

function initLightbox() { myLightbox = new lightbox(); myLightbox.initialize()}

addLoadEvent(initLightbox);	// run initLightbox onLoadfunction descripcionesForo ()
{
	nodosTROcultar=$$('.descripcionTema');
	for (i=0;i<nodosTROcultar.length;i++)
	{
		Element.hide(nodosTROcultar[i])
	}
}
filaAbierta="";
function filasForo ()
{
	filaAbierta="";
	nodosTR=$$('.linkForo');
	nodosTROcultar=$$('.descripcionTema');
	for (i=0;i<nodosTR.length;i++)
	{
		if ((i % 2)==0)
		{
			nodosTR[i].style.backgroundColor="#d9d9cb"
		} else {
			nodosTR[i].style.backgroundColor="#eaeae3"
		}
		nodosTR[i].setAttribute("id","nodoTR"+i)
	}
}

function nodosConversacion ()
{
	nodos=$$('.temaConversacion');
	for (i=0;i<nodos.length;i++)
	{
		if ((i % 2)==0)
		{
			nodos[i].style.backgroundColor="#efefeb"
		} else {
			nodos[i].style.backgroundColor="#fff"
		}
	}
}
function insertarTemaForo (boton)
{
	boton.style.display="none"
	cadena="wTema="+$('tema').value;
	cadena+="&wDescripcionTema="+$('descripcionTema').value;
	cadena+="&wAccion=guardar";
	cadena=formatarUrl('foros/iforoagradecimientoTema.shtml?'+cadena)
	new Ajax.Updater
	(
		'respuestas',
		cadena,
		{
			onComplete:function()
			{
				boton.style.display="block"
				Element.toggle('form1')
				Element.hide('capaCarga')
				$('tema').value=''
				$('descripcionTema').value=''
				
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function insertarMensajeForo(boton){

	boton.style.display="none"
	cadena="wTitulo="+escape($('tema').value);
	cadena+="&wRespuesta="+escape($('descripcionTema').value);
	cadena+="&wAccion=guardar";
	cadena+="&wIdForo="+$('wIdForo').value;
	cadena=formatarUrl('foros/iforoagradecimientoMensaje.shtml?'+cadena)
	$('descripcionTema').value=""
	$('tema').value=""
	
	new Ajax.Updater
	(
		'respuestas',
		cadena,
		{
			onComplete:function()
			{
				/*boton.style.display="block"
				Element.toggle('form1')
				Element.hide('capaCarga')
				$('tema').value=''
				$('descripcionTema').value=''*/
				verForo($('wIdForo').value)
			}
			,aynchronous:true
			, evalScripts:true
		}

	);
}

function verForo(idForo){
	cadena="wID="+idForo;
	new Ajax.Updater
	(
		'datosSeccion',
		formatarUrl('Foros/iforo.shtml?'+cadena),
		{
			onComplete:function()
			{
				if($('colDoble')){
					$('container').style.backgroundImage="url(../images/fondowebLimpio.gif)"
				}
				ocultarFormularios ();
				;
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}
function cargaListaTemas (url,donde)
{
new Ajax.Updater
	(
		donde,
		formatarUrl(url),
		{
			onComplete:function()
			{
				ocultarFormularios ();
				
				descripcionesForo ()
				filasForo()
				nodosConversacion()
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}


function insertarConsulta(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wIurl=" + f.wIurl.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	new Ajax.Updater
	(
		'respuestas',
		formatarUrl('iConsultasAgradecimiento.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function insertarAgradecimiento(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wIurl=" + f.wIurl.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	new Ajax.Updater
	(
		'respuestas',
		formatarUrl('iAgradecimientosAgradecimiento.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}
function insertarLibroDeVisitas(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wIurl=" + f.wIurl.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	new Ajax.Updater
	(
		'respuestas',
		formatarUrl('iLibroDeVisitasAgradecimiento.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function enviaContacta(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	url ='ContactaAgradecimiento.shtml?'+url
	f.wNombre.value=""
	f.wEmail.value=""
	f.wTexto.value=""
	crearVentanaDatos(url,0,300,400)
}

function consultaTemperatura(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "&wEstacion=" + f.nEstacion.options[f.nEstacion.selectedIndex].value ;
	url = url + "&wAccion=consultar";
	new Ajax.Updater
	(
		'tempTxurro',
		formatarUrl('MeteoTemp.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function cambiarFiltroForos(comb){
	filtro=comb.options[comb.selectedIndex].value
	window.location.href='524.shtml?gTxt_FiltroForos='+filtro
}


capaMostrada=null
function clickPersiana(obj)
{
	idEnlace=obj.getAttribute("id")
	longitud=idEnlace.length
	posicion=-1
	for(i=longitud;i>=1;i--){
		if(idEnlace.substring(i-1,i)=="_"){
			posicion=i
			break;

		}
		
	}
	prefijoEnlaces=idEnlace.substring(0,posicion)
	
	idPrimerNodo=prefijoEnlaces+"1"

	primerNodo=document.getElementById(idPrimerNodo)
	if(primerNodo.nodoClick){
		filaAbierta=primerNodo.filaAbierta;
		nodoClick=primerNodo.nodoClick;
	}else{
		filaAbierta="";
		nodoClick=null;
	}
	
	nodoDescricion=idEnlace+"_DES"
	
	if(filaAbierta!=nodoDescricion){
		if (nodoClick!=null){
			obj.abierto=false
			ocultarNodosDependientes(filaAbierta)
			new Effect.BlindUp(filaAbierta, { duration: 0.3});
		}
		obj.abierto=true
		new Effect.BlindDown(nodoDescricion, { duration: 0.3});
	}else{
		if(obj.abierto==true){
			ocultarNodosDependientes(filaAbierta)
			new Effect.BlindUp(nodoDescricion, { duration: 0.3});
			obj.abierto=false
		}else{
			new Effect.BlindDown(nodoDescricion, { duration: 0.3});
			obj.abierto=true
		}
	}
	primerNodo.filaAbierta=nodoDescricion
	primerNodo.nodoClick=obj
}

function ocultarNodosDependientes(objCerrar){
	var nodo=objCerrar.replace("DES","")
	contador=1
	do{
		idSub=nodo+contador+"_DES"
		if($(idSub)){
			cap=$(idSub)
			Element.hide(cap)
			contador++
		}else{
			cap=null
		}
	}while(cap!=null)
	for(var i=1;i<contador;i++){
		idSub=nodo+i+"_DES"
		ocultarNodosDependientes(idSub)
	}
}funcionInvocarInv=null

function cargaPerfil(numero)
{
	ocultaObjetos()

	crearCapaSombreado()

	crearCapaPadre=creaCapa("capaPadre_Din")

	botones=creaCapa("botonesChapar","capaPadre_Din")
	botones.setAttribute("class","botonesChapar")
	botones.onclick=borraCapasPerfil
	creaCapa("fotografia_euskoLink_DIN","capaPadre_Din")
	creaCapa("menu_euskoLink_DIN","capaPadre_Din")
	creaCapa("formulario_euskoLink_DIN","capaPadre_Din")
	creaCapa("guardar_euskoLink_DIN","capaPadre_Din")


/*	left=Element.getStyle('formulario_euskoLink_DIN', 'left')
	width=Element.getStyle('formulario_euskoLink_DIN', 'width')
	left=left.replace("px","")
	width=width.replace("px","")
	numLeft=new Number(left)
	numWidth=new Number(width)
	totLeft=numLeft+numWidth-10
	botones.style.left=totLeft+"px"
	Element.setHeight(crearCapaPadre,600)
	Element.setWidth(crearCapaPadre,800)*/

	pagina="Euskolink_perfil.shtml?gTxt_ID="+numero

	new Ajax.Updater
	(
		crearCapaRecargar(),formatarUrl(pagina),{
			onComplete:function(data)
			{
				quitarCapaCarga()
				$("fotografia_euskoLink_DIN").innerHTML=$("fotografia_euskoLink").innerHTML
				$("menu_euskoLink_DIN").innerHTML=$("menu_euskoLink").innerHTML
				$("formulario_euskoLink_DIN").innerHTML=$("formulario_euskoLink").innerHTML
				$("guardar_euskoLink_DIN").innerHTML=$("guardar_euskoLink").innerHTML
				$("fotografia_euskoLink").innerHTML=""
				$("menu_euskoLink").innerHTML=""
				$("formulario_euskoLink").innerHTML=""
				Element.scrollTo('header');
			}
			,aynchronous:true
			,evalScripts:true
		}

	);
	recolocaPerfil ();
	return false;
}
function recolocaPerfil ()
{
	if (document.all)
	{
		anchoVentana=960
	} else {
		anchoVentana=960
	}
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	margen=new Number ((arrayPageSize[0]-anchoVentana)/2)

	$('capaPadre_Din').style.left=margen+"px"
	$('capaPadre_Din').style.zIndex="20";
}
function borraCapasPerfil(){

	if(formularioCambiado){
		if(!(confirm(strTextoNOGuardado))){
			return false
		}
	}

	Element.remove("botonesChapar")
	Element.remove("fotografia_euskoLink_DIN")
	Element.remove("menu_euskoLink_DIN")
	Element.remove("formulario_euskoLink_DIN")
	Element.remove("capaPadre_Din")
	if($("guardar_euskoLink_DIN")){
		Element.remove("guardar_euskoLink_DIN")
	}
	Element.remove("sombreado")
	mostrarFlashes()
	//window.onunload=unLoadPagina
}

function verPestanaEukoLinkPerfil(idPestana){
	Element.hide("div_DatosPersonales")
	Element.hide("div_Estudios")
	Element.hide("div_Politicos")
	Element.hide("div_Aficciones")
	if($("div_Mensaje")){
		Element.hide("div_Mensaje")
	}
	Element.hide("div_Album")
	Element.show(idPestana)
}

function AnadirColumna(fila,html){
  	columna=document.createElement("TD")
	columna.innerHTML=html
	fila.appendChild(columna)
}

function addFila(tablaID,nomVar){
	formularioCambiado=true
	tabla=document.getElementById(tablaID)
	variable=window.document.forms["altaEuskoLink"][nomVar]
	nodos=new Number(variable.value)
	nodos++
	variable.value=nodos
	fila=document.createElement("TR")
	fila.valign="top"
	fila.id=tablaID+"_"+nodos
	id="'"+fila.id+"'"
	tablaIDPara="'"+tablaID+"'"
	html='<a href="javascript:eliminarFila('+nodos+','+tablaIDPara+')"><img src="/imageseuskolink/menos.png" width="18" height="17" border="0"></a>'
	AnadirColumna(fila,html)

	defFilaTabla(tablaID,fila,nodos)

	tabla.getElementsByTagName("tbody")[0].appendChild(fila);
	//window.document.forms[0].caja.value=html
}

function eliminarFila(id,tablaID){
	formularioCambiado=true
	tabla=document.getElementById(tablaID)
	idtexto=new String(id)
	idtexto=tablaID+"_"+idtexto
	nodo=document.getElementById(idtexto)
	try
	{
		tabla.getElementsByTagName("tbody")[0].removeChild(nodo)
	}
	catch(e)
	{
		cual=0
		for(var i=0;i<tabla.rows.length;i++){
			if(id==tabla.rows[i].id){
				cual=i
				break;
			}
		}

		if(cual>=tabla.rows.length){
			cual=cual-1
		}
		tabla.deleteRow(cual)
	}
}

function defFilaTabla(tablaID,fila,nodos){
	if(tablaID=="tablaPoblaciones"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Poblaciones_Pob_'+nodos+'" value="" size="30" maxlength="30" style="width:220px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Poblaciones_Des_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Poblaciones_Has_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

	}else if(tablaID=="tablaApellidos"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Apellidos_Nom_'+nodos+'" value="" size="40" maxlength="40" style="width:300px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Apellidos_Num_'+nodos+'" value="'+nodos+'" size="2" maxlength="2" style="width:20px">'
		AnadirColumna(fila,html)

	}else if(tablaID=="tablaCursos"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Cursos_Nom_'+nodos+'" value="" maxlength="90" style="width:580px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Cursos_Des_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Cursos_Has_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

	}else if(tablaID=="tablaEmpresas"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Empresas_Nom_'+nodos+'" value="" size="90" maxlength="90" style="width:580px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Empresas_Des_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Empresas_Has_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

	}else if(tablaID=="tablaJunta"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Juntas_Nom_'+nodos+'" value="" size="30" maxlength="30" style="width:180px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Juntas_Eje_'+nodos+'" value="" size="30" maxlength="30" style="width:180px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Juntas_For_'+nodos+'" value="" size="30" maxlength="30" style="width:180px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Juntas_Des_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_Juntas_Has_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

	}else if(tablaID=="tablaListaElectoral"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_LisElec_Nom_'+nodos+'" value="" size="45" maxlength="45" style="width:270px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_LisElec_For_'+nodos+'" value="" size="45" maxlength="45" style="width:270px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_LisElec_Per_'+nodos+'" value="" size="15" maxlength="15" style="width:100px">'
		AnadirColumna(fila,html)

	}else if(tablaID=="tablaCargoPublico"){
		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_CarPub_Nom_'+nodos+'" value="" size="45" maxlength="45" style="width:270px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_CarPub_Ins_'+nodos+'" value="" size="45" maxlength="45" style="width:270px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_CarPub_Des_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

		html='<input type="text" onfocus="focusInputs(this)" onblur="blurInputs(this)" name="gTxt_CarPub_Has_'+nodos+'" value="" size="5" maxlength="5" style="width:50px">'
		AnadirColumna(fila,html)

	}
}

function addFotoEuskolink(pathFotoPrevio,pathFotoGrande,comentarios){
	formularioCambiado=true
	variable=window.document.altaEuskoLink.gTxt_CuantasFotosAlbumEuskLink
	nodos=new Number(variable.value)
	nodos++
	variable.value=nodos
	capa=document.createElement("div")
	capa.id="contenedorFotosAlbum_"+nodos
	capa.setAttribute("class","imgFlotarIzda")
	alea=Math.round(Math.random()*123456789)*-1

	html='<a href="'+pathFotoGrande+'" rel="Euskolink[\'FotosAlbum\']" title="'+comentarios+'#" onfocus="this.blur();"	onclick="myLightbox.start(this);return false;">'
	html+='<img src="'+pathFotoPrevio+'" alt="'+comentarios+'" width="130px" height="98px"/>'
	html+='</a>'
	html+='<input type="hidden" name="gTxt_fotEuskoLink_ID_'+nodos+'" value="'+alea+'" />'
	html+='<input type="hidden" name="gTxt_fotEuskoLink_Previo_'+nodos+'" value="'+pathFotoPrevio+'" />'
	html+='<input type="hidden" name="gTxt_fotEuskoLink_Grande_'+nodos+'" value="'+pathFotoGrande+'" />'
	html+='<textarea name="gTxt_fotEuskoLink_Coment_'+nodos+'">'+comentarios+'</textarea>'
	html+='<a href="javascript:eliminarFoto('+nodos+',\'contenedorFotosAlbum\')">Eliminar</a>'
	capa.innerHTML=html
	$("contenedorFotosAlbum").appendChild(capa)
	initLightbox ()
	//clickPersiana($('nodoAddFoto_1'))
}

function eliminarFoto(numero,id){
	formularioCambiado=true
	try{
	$(id).removeChild($(id+"_"+numero))
	}catch(e){
	}
}

function cambiarFotoPerfil(rutaFotoPerfil){
	formularioCambiado=true
	$('fotoCarnet').src=rutaFotoPerfil
	window.document.altaEuskoLink.gTxt_Euskolink_Avatar.value=rutaFotoPerfil
}

function bienGuardadoEuskoLinkPerfil(){
	if($('container')){
		Element.show('container')
	}
	borraCapasPerfil()
	if(comenzar){
		cargarAsinc('Euskolink_Principal.shtml','datosSeccion')
	}
}

function continuarBotonAyuda(){
	llamadaAjax('/4DACTION/WEB_Bazkide_TieneEuskoLink')
}

function cargarOptEuskoLink(obj){
	cargarAsinc(obj.href,'contenidosEuskoLink')
	$('tituloSecEuskoLink').innerHTML="Eusko Link - "+obj.innerHTML
	return false;
}

function mandarMensajeBazkide(idBazkide){
	comBazkide(idBazkide,'Euskolink_mensaje.shtml',null)
}

function mandarInvitacionBazkide(idBazkide,funcionInvocar){
	comBazkide(idBazkide,'Euskolink_Invitacion.shtml',funcionInvocar)
}


function comBazkide(idBazkide,pagina,funcionInvocar){
	if($('fotografia_euskoLink_DIN')){
		borraCapasPerfil()
	}
	ocultaObjetos ()
	funcionInvocarInv=funcionInvocar
	crearCapaSombreado()

	creaCapa("mensaje_EuskoLink_DIN")

	botones=creaCapa("botonesCerrarCom")
	botones.setAttribute("class","botonesChapar")
	botones.onclick=borraCapasMensaje


	/*left=Element.getStyle('mensaje_EuskoLink_DIN', 'left')
	width=Element.getStyle('mensaje_EuskoLink_DIN', 'width')
	top=Element.getStyle('mensaje_EuskoLink_DIN', 'top')
	left=left.replace("px","")
	width=width.replace("px","")
	top=top.replace("px","")
	numLeft=new Number(left)
	numWidth=new Number(width)
	totLeft=numLeft+numWidth-10
	botones.style.left=totLeft+"px"
	totTop=new Number(top)
	totTop=totTop-10
	botones.style.top=totTop+"px"*/
	pagina=pagina+"?gTxt_ID="+idBazkide

	new Ajax.Updater
	(
		crearCapaRecargar(),formatarUrl(pagina),{
			onComplete:function(data)
			{
				quitarCapaCarga()
				$("mensaje_EuskoLink_DIN").innerHTML=$('mensaje_EuskoLink').innerHTML
				$('mensaje_EuskoLink').innerHTML=""
				Element.scrollTo('header');
			}
			,aynchronous:true
			,evalScripts:true
		}

	);
	$('botonesCerrarCom').style.zIndex="1000"
	$('botonesCerrarCom').style.left="780px"
	$('botonesCerrarCom').style.top="185px"

	/*
if (document.all)
	{
		anchoVentana=960
	} else {
		anchoVentana=960
	}
	var arrayPageSize = getPageSize();
	var arrayPageScroll = getPageScroll();
	margen=new Number ((arrayPageSize[0]-anchoVentana)/2)

	$('capaPadre_Din').style.left=margen+"px"
	$('capaPadre_Din').style.zIndex="20";	 */
	return false;
}

function borraCapasMensaje(){
	Element.remove("botonesCerrarCom")
	Element.remove("mensaje_EuskoLink_DIN")
	Element.remove("sombreado")
	if(funcionInvocarInv){
		funcionInvocarInv()
	}
	mostrarFlashes()
}

function aceptarInv(idInvitacion,funcionInvocar){
	if(confirm(strConfAcepInvitacion)){
		url='/4DACTION/WEB_EuskoLink_AceptarInvitacion?gTxt_ID='+idInvitacion
		llamadaAjax(url)
		funcionInvocarInv=funcionInvocar
	}
}

function rechazarInv(idInvitacion,funcionInvocar){
	if(confirm(strConfRecInvitacion)){
		url='/4DACTION/WEB_EuskoLink_RechazarInvitacio?gTxt_ID='+idInvitacion
		llamadaAjax(url)
		funcionInvocarInv=funcionInvocar
	}
}

function cargarEuskoLinkInicio(){
	cargarOptEuskoLink($('primeraOpcionEuskoLink'))
}

function buscarBazkides(){
	ocultaObjetos ()

	crearCapaSombreado()

	crearCapaPadre=creaCapa("capaPadre_Din")

	botones=creaCapa("botonesChapar","capaPadre_Din")
	botones.setAttribute("class","botonesChapar")
	botones.onclick=borraCapasBuscar
	capamenu=creaCapa("menu_euskoLink_DIN","capaPadre_Din")
	creaCapa("formulario_euskoLink_DIN","capaPadre_Din")
	creaCapa("guardar_euskoLink_DIN","capaPadre_Din")

	$('menu_euskoLink_DIN').style.marginTop="0px"
	$('botonesChapar').style.marginLeft="920px"




	pagina="Euskolink_Perfil_Buscar.shtml"

	new Ajax.Updater
	(
		crearCapaRecargar(),formatarUrl(pagina),{
			onComplete:function(data)
			{
				quitarCapaCarga()
				$("menu_euskoLink_DIN").innerHTML=$("menu_euskoLink").innerHTML
				$("formulario_euskoLink_DIN").innerHTML=$("formulario_euskoLink").innerHTML
				$("guardar_euskoLink_DIN").innerHTML=$("guardar_euskoLink").innerHTML
				$("menu_euskoLink").innerHTML=""
				$("formulario_euskoLink").innerHTML=""
				Element.scrollTo('header');
			}
			,aynchronous:true
			,evalScripts:true
		}

	);
	recolocaPerfil ();
	return false;
}

function borraCapasBuscar(){


	Element.remove("botonesChapar")
	Element.remove("menu_euskoLink_DIN")
	Element.remove("formulario_euskoLink_DIN")
	Element.remove("guardar_euskoLink_DIN")
	Element.remove("sombreado")
	Element.remove("capaPadre_Din")
	mostrarFlashes()
}

function verPestanaEukoLinkBuscar(idPestana){
	Element.hide("div_DatosPersonales")
	Element.hide("div_Otros")
	Element.hide("div_Aficciones")
	Element.show(idPestana)
}

function envioMasivoInv(){
	formulario=window.document.formuInvMasivo
	cuantos=new Number(formulario.gTxt_Cuantos_Bazkides.value)
	bien=false
	for(var i=1;i<=cuantos;i++){

		obj=eval("formulario.gTxt_Check_"+i)
		if(obj.checked){
			bien=true
			break;
		}
	}

	if(bien){
		enviarFormuAjax(formulario,'contenidosEuskoLink')
	}else{
		alert(strSinmarcas)
	}
}

function marcarLeido(idMensaje){
	url='/4DACTION/WEB_EuskoLink_MarcarLeidoMen?gTxt_ID='+idMensaje
	llamadaAjax(url)
}

function seleccionarParaMensaje(id,Nombre){
	$('destinatarioMensaje').innerHTML=Nombre
	window.document.enviarMensaje.gTxt_Destinatario.value=id
}

function enviarFormuMensaje(){
	if(window.document.enviarMensaje.gTxt_Destinatario.value==""){
		alert(errorDest)
	}else{
		enviarFormuAjax(window.document.enviarMensaje,'carga')
	}
}

function mostrarFlashes(){
	muestraObjetos ()
}Event.observe(document, "mouseup", recogePosiones, false);

var mouseX="";
var mouseY="";



function dibujaCapaVideo (objeto)
{
		ocultaObjetos ();
		var videoEnlace=objeto.getAttribute("href");
		var objBody = document.getElementsByTagName("body").item(0);

		var capaPadre=document.createElement("div")
		capaPadre.setAttribute ("id","visualizador")
		capaPadre.style.position="absolute";
		capaPadre.style.top=mouseY-400+"px";
		capaPadre.style.left=mouseX+"px";
		objBody.appendChild(capaPadre)

		var capaVideo=document.createElement("div")
		capaVideo.setAttribute("id","videoEmbed")
		capaPadre.appendChild(capaVideo)

		var botoncerrar=document.createElement("img")
		botoncerrar.setAttribute("src","/Ebatzokia/images/close.gif")
		botoncerrar.style.marginTop=10+"px";
		botoncerrar.style.position="relative";
		botoncerrar.style.left="150px"
		botoncerrar.style.cursor="pointer";
		botoncerrar.onclick=function (){Element.remove($('visualizador')),capaVideo.innerHTML="",Element.remove($(capaVideo)),muestraObjetos();}
		capaPadre.appendChild(botoncerrar)

		var ajax = new Ajax.Updater(
			'videoEmbed',
			videoEnlace,
       {
       	method:'get',
       	onComplete: repuesta
       });
}
function repuesta(req)
{
	$('videoEmbed').innerHTML = req.responseText;
}

function recogePosiones(e)
{
	mouseX=Event.pointerX(e);
	mouseY=Event.pointerY(e);

}


// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
// Contributors:
//  Justin Palmer (http://encytemedia.com/)
//  Mark Pilgrim (http://diveintomark.org/)
//  Martin Bialasinki
// 
// See scriptaculous.js for full license.  

/* ------------- element ext -------------- */  
 
// converts rgb() and #xxx to #xxxxxx format,  
// returns self (or first argument) if not convertable  
String.prototype.parseColor = function() {  
  var color = '#';  
  if(this.slice(0,4) == 'rgb(') {  
    var cols = this.slice(4,this.length-1).split(',');  
    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);  
  } else {  
    if(this.slice(0,1) == '#') {  
      if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
      if(this.length==7) color = this.toLowerCase();  
    }  
  }  
  return(color.length==7 ? color : (arguments[0] || this));  
}

Element.collectTextNodes = function(element) {  
  return $A($(element).childNodes).collect( function(node) {
    return (node.nodeType==3 ? node.nodeValue : 
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
  }).flatten().join('');
}

Element.collectTextNodesIgnoreClass = function(element, className) {  
  return $A($(element).childNodes).collect( function(node) {
    return (node.nodeType==3 ? node.nodeValue : 
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
        Element.collectTextNodes(node) : ''));
  }).flatten().join('');
}

Element.setStyle = function(element, style) {
  element = $(element);
  for(k in style) element.style[k.camelize()] = style[k];
}

Element.setContentZoom = function(element, percent) {  
  Element.setStyle(element, {fontSize: (percent/100) + 'em'});   
  if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);  
}

Element.getOpacity = function(element){  
  var opacity;
  if (opacity = Element.getStyle(element, 'opacity'))  
    return parseFloat(opacity);  
  if (opacity = (Element.getStyle(element, 'filter') || '').match(/alpha\(opacity=(.*)\)/))  
    if(opacity[1]) return parseFloat(opacity[1]) / 100;  
  return 1.0;  
}

Element.setOpacity = function(element, value){  
  element= $(element);  
  if (value == 1){
    Element.setStyle(element, { opacity: 
      (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 
      0.999999 : null });
    if(/MSIE/.test(navigator.userAgent))  
      Element.setStyle(element, {filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});  
  } else {  
    if(value < 0.00001) value = 0;  
    Element.setStyle(element, {opacity: value});
    if(/MSIE/.test(navigator.userAgent))  
     Element.setStyle(element, 
       { filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'') +
                 'alpha(opacity='+value*100+')' });  
  }   
}  
 
Element.getInlineOpacity = function(element){  
  return $(element).style.opacity || '';
}  

Element.childrenWithClassName = function(element, className) {  
  return $A($(element).getElementsByTagName('*')).select(
    function(c) { return Element.hasClassName(c, className) });
}

Array.prototype.call = function() {
  var args = arguments;
  this.each(function(f){ f.apply(this, args) });
}

/*--------------------------------------------------------------------------*/

var Effect = {
  tagifyText: function(element) {
    var tagifyStyle = 'position:relative';
    if(/MSIE/.test(navigator.userAgent)) tagifyStyle += ';zoom:1';
    element = $(element);
    $A(element.childNodes).each( function(child) {
      if(child.nodeType==3) {
        child.nodeValue.toArray().each( function(character) {
          element.insertBefore(
            Builder.node('span',{style: tagifyStyle},
              character == ' ' ? String.fromCharCode(160) : character), 
              child);
        });
        Element.remove(child);
      }
    });
  },
  multiple: function(element, effect) {
    var elements;
    if(((typeof element == 'object') || 
        (typeof element == 'function')) && 
       (element.length))
      elements = element;
    else
      elements = $(element).childNodes;
      
    var options = Object.extend({
      speed: 0.1,
      delay: 0.0
    }, arguments[2] || {});
    var masterDelay = options.delay;

    $A(elements).each( function(element, index) {
      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
    });
  },
  PAIRS: {
    'slide':  ['SlideDown','SlideUp'],
    'blind':  ['BlindDown','BlindUp'],
    'appear': ['Appear','Fade']
  },
  toggle: function(element, effect) {
    element = $(element);
    effect = (effect || 'appear').toLowerCase();
    var options = Object.extend({
      queue: { position:'end', scope:(element.id || 'global') }
    }, arguments[2] || {});
    Effect[Element.visible(element) ? 
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
  }
};

var Effect2 = Effect; // deprecated

/* ------------- transitions ------------- */

Effect.Transitions = {}

Effect.Transitions.linear = function(pos) {
  return pos;
}
Effect.Transitions.sinoidal = function(pos) {
  return (-Math.cos(pos*Math.PI)/2) + 0.5;
}
Effect.Transitions.reverse  = function(pos) {
  return 1-pos;
}
Effect.Transitions.flicker = function(pos) {
  return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
}
Effect.Transitions.wobble = function(pos) {
  return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
}
Effect.Transitions.pulse = function(pos) {
  return (Math.floor(pos*10) % 2 == 0 ? 
    (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));
}
Effect.Transitions.none = function(pos) {
  return 0;
}
Effect.Transitions.full = function(pos) {
  return 1;
}

/* ------------- core effects ------------- */

Effect.ScopedQueue = Class.create();
Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
  initialize: function() {
    this.effects  = [];
    this.interval = null;
  },
  _each: function(iterator) {
    this.effects._each(iterator);
  },
  add: function(effect) {
    var timestamp = new Date().getTime();
    
    var position = (typeof effect.options.queue == 'string') ? 
      effect.options.queue : effect.options.queue.position;
    
    switch(position) {
      case 'front':
        // move unstarted effects after this effect  
        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
            e.startOn  += effect.finishOn;
            e.finishOn += effect.finishOn;
          });
        break;
      case 'end':
        // start effect after last queued effect has finished
        timestamp = this.effects.pluck('finishOn').max() || timestamp;
        break;
    }
    
    effect.startOn  += timestamp;
    effect.finishOn += timestamp;
    this.effects.push(effect);
    if(!this.interval) 
      this.interval = setInterval(this.loop.bind(this), 40);
  },
  remove: function(effect) {
    this.effects = this.effects.reject(function(e) { return e==effect });
    if(this.effects.length == 0) {
      clearInterval(this.interval);
      this.interval = null;
    }
  },
  loop: function() {
    var timePos = new Date().getTime();
    this.effects.invoke('loop', timePos);
  }
});

Effect.Queues = {
  instances: $H(),
  get: function(queueName) {
    if(typeof queueName != 'string') return queueName;
    
    if(!this.instances[queueName])
      this.instances[queueName] = new Effect.ScopedQueue();
      
    return this.instances[queueName];
  }
}
Effect.Queue = Effect.Queues.get('global');

Effect.DefaultOptions = {
  transition: Effect.Transitions.sinoidal,
  duration:   1.0,   // seconds
  fps:        25.0,  // max. 25fps due to Effect.Queue implementation
  sync:       false, // true for combining
  from:       0.0,
  to:         1.0,
  delay:      0.0,
  queue:      'parallel'
}

Effect.Base = function() {};
Effect.Base.prototype = {
  position: null,
  start: function(options) {
    this.options      = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
    this.currentFrame = 0;
    this.state        = 'idle';
    this.startOn      = this.options.delay*1000;
    this.finishOn     = this.startOn + (this.options.duration*1000);
    this.event('beforeStart');
    if(!this.options.sync)
      Effect.Queues.get(typeof this.options.queue == 'string' ? 
        'global' : this.options.queue.scope).add(this);
  },
  loop: function(timePos) {
    if(timePos >= this.startOn) {
      if(timePos >= this.finishOn) {
        this.render(1.0);
        this.cancel();
        this.event('beforeFinish');
        if(this.finish) this.finish(); 
        this.event('afterFinish');
        return;  
      }
      var pos   = (timePos - this.startOn) / (this.finishOn - this.startOn);
      var frame = Math.round(pos * this.options.fps * this.options.duration);
      if(frame > this.currentFrame) {
        this.render(pos);
        this.currentFrame = frame;
      }
    }
  },
  render: function(pos) {
    if(this.state == 'idle') {
      this.state = 'running';
      this.event('beforeSetup');
      if(this.setup) this.setup();
      this.event('afterSetup');
    }
    if(this.state == 'running') {
      if(this.options.transition) pos = this.options.transition(pos);
      pos *= (this.options.to-this.options.from);
      pos += this.options.from;
      this.position = pos;
      this.event('beforeUpdate');
      if(this.update) this.update(pos);
      this.event('afterUpdate');
    }
  },
  cancel: function() {
    if(!this.options.sync)
      Effect.Queues.get(typeof this.options.queue == 'string' ? 
        'global' : this.options.queue.scope).remove(this);
    this.state = 'finished';
  },
  event: function(eventName) {
    if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
    if(this.options[eventName]) this.options[eventName](this);
  },
  inspect: function() {
    return '#<Effect:' + $H(this).inspect() + ',options:' + $H(this.options).inspect() + '>';
  }
}

Effect.Parallel = Class.create();
Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
  initialize: function(effects) {
    this.effects = effects || [];
    this.start(arguments[1]);
  },
  update: function(position) {
    this.effects.invoke('render', position);
  },
  finish: function(position) {
    this.effects.each( function(effect) {
      effect.render(1.0);
      effect.cancel();
      effect.event('beforeFinish');
      if(effect.finish) effect.finish(position);
      effect.event('afterFinish');
    });
  }
});

Effect.Opacity = Class.create();
Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    // make this work on IE on elements without 'layout'
    if(/MSIE/.test(navigator.userAgent) && (!this.element.hasLayout))
      Element.setStyle(this.element, {zoom: 1});
    var options = Object.extend({
      from: Element.getOpacity(this.element) || 0.0,
      to:   1.0
    }, arguments[1] || {});
    this.start(options);
  },
  update: function(position) {
    Element.setOpacity(this.element, position);
  }
});

Effect.Move = Class.create();
Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    var options = Object.extend({
      x:    0,
      y:    0,
      mode: 'relative'
    }, arguments[1] || {});
    this.start(options);
  },
  setup: function() {
    // Bug in Opera: Opera returns the "real" position of a static element or
    // relative element that does not have top/left explicitly set.
    // ==> Always set top and left for position relative elements in your stylesheets 
    // (to 0 if you do not need them) 
    Element.makePositioned(this.element);
    this.originalLeft = parseFloat(Element.getStyle(this.element,'left') || '0');
    this.originalTop  = parseFloat(Element.getStyle(this.element,'top')  || '0');
    if(this.options.mode == 'absolute') {
      // absolute movement, so we need to calc deltaX and deltaY
      this.options.x = this.options.x - this.originalLeft;
      this.options.y = this.options.y - this.originalTop;
    }
  },
  update: function(position) {
    Element.setStyle(this.element, {
      left: this.options.x  * position + this.originalLeft + 'px',
      top:  this.options.y  * position + this.originalTop  + 'px'
    });
  }
});

// for backwards compatibility
Effect.MoveBy = function(element, toTop, toLeft) {
  return new Effect.Move(element, 
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
};

Effect.Scale = Class.create();
Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
  initialize: function(element, percent) {
    this.element = $(element)
    var options = Object.extend({
      scaleX: true,
      scaleY: true,
      scaleContent: true,
      scaleFromCenter: false,
      scaleMode: 'box',        // 'box' or 'contents' or {} with provided values
      scaleFrom: 100.0,
      scaleTo:   percent
    }, arguments[2] || {});
    this.start(options);
  },
  setup: function() {
    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
    this.elementPositioning = Element.getStyle(this.element,'position');
    
    this.originalStyle = {};
    ['top','left','width','height','fontSize'].each( function(k) {
      this.originalStyle[k] = this.element.style[k];
    }.bind(this));
      
    this.originalTop  = this.element.offsetTop;
    this.originalLeft = this.element.offsetLeft;
    
    var fontSize = Element.getStyle(this.element,'font-size') || '100%';
    ['em','px','%'].each( function(fontSizeType) {
      if(fontSize.indexOf(fontSizeType)>0) {
        this.fontSize     = parseFloat(fontSize);
        this.fontSizeType = fontSizeType;
      }
    }.bind(this));
    
    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
    
    this.dims = null;
    if(this.options.scaleMode=='box')
      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
    if(/^content/.test(this.options.scaleMode))
      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
    if(!this.dims)
      this.dims = [this.options.scaleMode.originalHeight,
                   this.options.scaleMode.originalWidth];
  },
  update: function(position) {
    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
    if(this.options.scaleContent && this.fontSize)
      Element.setStyle(this.element, {fontSize: this.fontSize * currentScale + this.fontSizeType });
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
  },
  finish: function(position) {
    if (this.restoreAfterFinish) Element.setStyle(this.element, this.originalStyle);
  },
  setDimensions: function(height, width) {
    var d = {};
    if(this.options.scaleX) d.width = width + 'px';
    if(this.options.scaleY) d.height = height + 'px';
    if(this.options.scaleFromCenter) {
      var topd  = (height - this.dims[0])/2;
      var leftd = (width  - this.dims[1])/2;
      if(this.elementPositioning == 'absolute') {
        if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
        if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
      } else {
        if(this.options.scaleY) d.top = -topd + 'px';
        if(this.options.scaleX) d.left = -leftd + 'px';
      }
    }
    Element.setStyle(this.element, d);
  }
});

Effect.Highlight = Class.create();
Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
    this.start(options);
  },
  setup: function() {
    // Prevent executing on elements not in the layout flow
    if(Element.getStyle(this.element, 'display')=='none') { this.cancel(); return; }
    // Disable background image during the effect
    this.oldStyle = {
      backgroundImage: Element.getStyle(this.element, 'background-image') };
    Element.setStyle(this.element, {backgroundImage: 'none'});
    if(!this.options.endcolor)
      this.options.endcolor = Element.getStyle(this.element, 'background-color').parseColor('#ffffff');
    if(!this.options.restorecolor)
      this.options.restorecolor = Element.getStyle(this.element, 'background-color');
    // init color calculations
    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
  },
  update: function(position) {
    Element.setStyle(this.element,{backgroundColor: $R(0,2).inject('#',function(m,v,i){
      return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
  },
  finish: function() {
    Element.setStyle(this.element, Object.extend(this.oldStyle, {
      backgroundColor: this.options.restorecolor
    }));
  }
});

Effect.ScrollTo = Class.create();
Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = $(element);
    this.start(arguments[1] || {});
  },
  setup: function() {
    Position.prepare();
    var offsets = Position.cumulativeOffset(this.element);
    if(this.options.offset) offsets[1] += this.options.offset;
    var max = window.innerHeight ? 
      window.height - window.innerHeight :
      document.body.scrollHeight - 
        (document.documentElement.clientHeight ? 
          document.documentElement.clientHeight : document.body.clientHeight);
    this.scrollStart = Position.deltaY;
    this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
  },
  update: function(position) {
    Position.prepare();
    window.scrollTo(Position.deltaX, 
      this.scrollStart + (position*this.delta));
  }
});

/* ------------- combination effects ------------- */

Effect.Fade = function(element) {
  var oldOpacity = Element.getInlineOpacity(element);
  var options = Object.extend({
  from: Element.getOpacity(element) || 1.0,
  to:   0.0,
  afterFinishInternal: function(effect) { with(Element) { 
    if(effect.options.to!=0) return;
    hide(effect.element);
    setStyle(effect.element, {opacity: oldOpacity}); }}
  }, arguments[1] || {});
  return new Effect.Opacity(element,options);
}

Effect.Appear = function(element) {
  var options = Object.extend({
  from: (Element.getStyle(element, 'display') == 'none' ? 0.0 : Element.getOpacity(element) || 0.0),
  to:   1.0,
  beforeSetup: function(effect) { with(Element) {
    setOpacity(effect.element, effect.options.from);
    show(effect.element); }}
  }, arguments[1] || {});
  return new Effect.Opacity(element,options);
}

Effect.Puff = function(element) {
  element = $(element);
  var oldStyle = { opacity: Element.getInlineOpacity(element), position: Element.getStyle(element, 'position') };
  return new Effect.Parallel(
   [ new Effect.Scale(element, 200, 
      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
     Object.extend({ duration: 1.0, 
      beforeSetupInternal: function(effect) { with(Element) {
        setStyle(effect.effects[0].element, {position: 'absolute'}); }},
      afterFinishInternal: function(effect) { with(Element) {
         hide(effect.effects[0].element);
         setStyle(effect.effects[0].element, oldStyle); }}
     }, arguments[1] || {})
   );
}

Effect.BlindUp = function(element) {
  element = $(element);
  Element.makeClipping(element);
  return new Effect.Scale(element, 0, 
    Object.extend({ scaleContent: false, 
      scaleX: false, 
      restoreAfterFinish: true,
      afterFinishInternal: function(effect) { with(Element) {
        [hide, undoClipping].call(effect.element); }} 
    }, arguments[1] || {})
  );
}

Effect.BlindDown = function(element) {
  element = $(element);
  var oldHeight = Element.getStyle(element, 'height');
  var elementDimensions = Element.getDimensions(element);
  return new Effect.Scale(element, 100, 
    Object.extend({ scaleContent: false, 
      scaleX: false,
      scaleFrom: 0,
      scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
      restoreAfterFinish: true,
      afterSetup: function(effect) { with(Element) {
        makeClipping(effect.element);
        setStyle(effect.element, {height: '0px'});
        show(effect.element); 
      }},  
      afterFinishInternal: function(effect) { with(Element) {
        undoClipping(effect.element);
        setStyle(effect.element, {height: oldHeight});
      }}
    }, arguments[1] || {})
  );
}

Effect.SwitchOff = function(element) {
  element = $(element);
  var oldOpacity = Element.getInlineOpacity(element);
  return new Effect.Appear(element, { 
    duration: 0.4,
    from: 0,
    transition: Effect.Transitions.flicker,
    afterFinishInternal: function(effect) {
      new Effect.Scale(effect.element, 1, { 
        duration: 0.3, scaleFromCenter: true,
        scaleX: false, scaleContent: false, restoreAfterFinish: true,
        beforeSetup: function(effect) { with(Element) {
          [makePositioned,makeClipping].call(effect.element);
        }},
        afterFinishInternal: function(effect) { with(Element) {
          [hide,undoClipping,undoPositioned].call(effect.element);
          setStyle(effect.element, {opacity: oldOpacity});
        }}
      })
    }
  });
}

Effect.DropOut = function(element) {
  element = $(element);
  var oldStyle = {
    top: Element.getStyle(element, 'top'),
    left: Element.getStyle(element, 'left'),
    opacity: Element.getInlineOpacity(element) };
  return new Effect.Parallel(
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
    Object.extend(
      { duration: 0.5,
        beforeSetup: function(effect) { with(Element) {
          makePositioned(effect.effects[0].element); }},
        afterFinishInternal: function(effect) { with(Element) {
          [hide, undoPositioned].call(effect.effects[0].element);
          setStyle(effect.effects[0].element, oldStyle); }} 
      }, arguments[1] || {}));
}

Effect.Shake = function(element) {
  element = $(element);
  var oldStyle = {
    top: Element.getStyle(element, 'top'),
    left: Element.getStyle(element, 'left') };
	  return new Effect.Move(element, 
	    { x:  20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
	  new Effect.Move(effect.element,
	    { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
	  new Effect.Move(effect.element,
	    { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
	  new Effect.Move(effect.element,
	    { x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
	  new Effect.Move(effect.element,
	    { x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
	  new Effect.Move(effect.element,
	    { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { with(Element) {
        undoPositioned(effect.element);
        setStyle(effect.element, oldStyle);
  }}}) }}) }}) }}) }}) }});
}

Effect.SlideDown = function(element) {
  element = $(element);
  Element.cleanWhitespace(element);
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
  var oldInnerBottom = Element.getStyle(element.firstChild, 'bottom');
  var elementDimensions = Element.getDimensions(element);
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleX: false, 
    scaleFrom: 0,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) { with(Element) {
      makePositioned(effect.element);
      makePositioned(effect.element.firstChild);
      if(window.opera) setStyle(effect.element, {top: ''});
      makeClipping(effect.element);
      setStyle(effect.element, {height: '0px'});
      show(element); }},
    afterUpdateInternal: function(effect) { with(Element) {
      setStyle(effect.element.firstChild, {bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); }},
    afterFinishInternal: function(effect) { with(Element) {
      undoClipping(effect.element); 
      undoPositioned(effect.element.firstChild);
      undoPositioned(effect.element);
      setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }}
    }, arguments[1] || {})
  );
}
  
Effect.SlideUp = function(element) {
  element = $(element);
  Element.cleanWhitespace(element);
  var oldInnerBottom = Element.getStyle(element.firstChild, 'bottom');
  return new Effect.Scale(element, 0, 
   Object.extend({ scaleContent: false, 
    scaleX: false, 
    scaleMode: 'box',
    scaleFrom: 100,
    restoreAfterFinish: true,
    beforeStartInternal: function(effect) { with(Element) {
      makePositioned(effect.element);
      makePositioned(effect.element.firstChild);
      if(window.opera) setStyle(effect.element, {top: ''});
      makeClipping(effect.element);
      show(element); }},  
    afterUpdateInternal: function(effect) { with(Element) {
      setStyle(effect.element.firstChild, {bottom:
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); }},
    afterFinishInternal: function(effect) { with(Element) {
        [hide, undoClipping].call(effect.element); 
        undoPositioned(effect.element.firstChild);
        undoPositioned(effect.element);
        setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }}
   }, arguments[1] || {})
  );
}

// Bug in opera makes the TD containing this element expand for a instance after finish 
Effect.Squish = function(element) {
  return new Effect.Scale(element, window.opera ? 1 : 0, 
    { restoreAfterFinish: true,
      beforeSetup: function(effect) { with(Element) {
        makeClipping(effect.element); }},  
      afterFinishInternal: function(effect) { with(Element) {
        hide(effect.element); 
        undoClipping(effect.element); }}
  });
}

Effect.Grow = function(element) {
  element = $(element);
  var options = Object.extend({
    direction: 'center',
    moveTransistion: Effect.Transitions.sinoidal,
    scaleTransition: Effect.Transitions.sinoidal,
    opacityTransition: Effect.Transitions.full
  }, arguments[1] || {});
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    height: element.style.height,
    width: element.style.width,
    opacity: Element.getInlineOpacity(element) };

  var dims = Element.getDimensions(element);    
  var initialMoveX, initialMoveY;
  var moveX, moveY;
  
  switch (options.direction) {
    case 'top-left':
      initialMoveX = initialMoveY = moveX = moveY = 0; 
      break;
    case 'top-right':
      initialMoveX = dims.width;
      initialMoveY = moveY = 0;
      moveX = -dims.width;
      break;
    case 'bottom-left':
      initialMoveX = moveX = 0;
      initialMoveY = dims.height;
      moveY = -dims.height;
      break;
    case 'bottom-right':
      initialMoveX = dims.width;
      initialMoveY = dims.height;
      moveX = -dims.width;
      moveY = -dims.height;
      break;
    case 'center':
      initialMoveX = dims.width / 2;
      initialMoveY = dims.height / 2;
      moveX = -dims.width / 2;
      moveY = -dims.height / 2;
      break;
  }
  
  return new Effect.Move(element, {
    x: initialMoveX,
    y: initialMoveY,
    duration: 0.01, 
    beforeSetup: function(effect) { with(Element) {
      hide(effect.element);
      makeClipping(effect.element);
      makePositioned(effect.element);
    }},
    afterFinishInternal: function(effect) {
      new Effect.Parallel(
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
          new Effect.Scale(effect.element, 100, {
            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
        ], Object.extend({
             beforeSetup: function(effect) { with(Element) {
               setStyle(effect.effects[0].element, {height: '0px'});
               show(effect.effects[0].element); }},
             afterFinishInternal: function(effect) { with(Element) {
               [undoClipping, undoPositioned].call(effect.effects[0].element); 
               setStyle(effect.effects[0].element, oldStyle); }}
           }, options)
      )
    }
  });
}

Effect.Shrink = function(element) {
  element = $(element);
  var options = Object.extend({
    direction: 'center',
    moveTransistion: Effect.Transitions.sinoidal,
    scaleTransition: Effect.Transitions.sinoidal,
    opacityTransition: Effect.Transitions.none
  }, arguments[1] || {});
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    height: element.style.height,
    width: element.style.width,
    opacity: Element.getInlineOpacity(element) };

  var dims = Element.getDimensions(element);
  var moveX, moveY;
  
  switch (options.direction) {
    case 'top-left':
      moveX = moveY = 0;
      break;
    case 'top-right':
      moveX = dims.width;
      moveY = 0;
      break;
    case 'bottom-left':
      moveX = 0;
      moveY = dims.height;
      break;
    case 'bottom-right':
      moveX = dims.width;
      moveY = dims.height;
      break;
    case 'center':  
      moveX = dims.width / 2;
      moveY = dims.height / 2;
      break;
  }
  
  return new Effect.Parallel(
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
    ], Object.extend({            
         beforeStartInternal: function(effect) { with(Element) {
           [makePositioned, makeClipping].call(effect.effects[0].element) }},
         afterFinishInternal: function(effect) { with(Element) {
           [hide, undoClipping, undoPositioned].call(effect.effects[0].element);
           setStyle(effect.effects[0].element, oldStyle); }}
       }, options)
  );
}

Effect.Pulsate = function(element) {
  element = $(element);
  var options    = arguments[1] || {};
  var oldOpacity = Element.getInlineOpacity(element);
  var transition = options.transition || Effect.Transitions.sinoidal;
  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) };
  reverser.bind(transition);
  return new Effect.Opacity(element, 
    Object.extend(Object.extend({  duration: 3.0, from: 0,
      afterFinishInternal: function(effect) { Element.setStyle(effect.element, {opacity: oldOpacity}); }
    }, options), {transition: reverser}));
}

Effect.Fold = function(element) {
  element = $(element);
  var oldStyle = {
    top: element.style.top,
    left: element.style.left,
    width: element.style.width,
    height: element.style.height };
  Element.makeClipping(element);
  return new Effect.Scale(element, 5, Object.extend({   
    scaleContent: false,
    scaleX: false,
    afterFinishInternal: function(effect) {
    new Effect.Scale(element, 1, { 
      scaleContent: false, 
      scaleY: false,
      afterFinishInternal: function(effect) { with(Element) {
        [hide, undoClipping].call(effect.element); 
        setStyle(effect.element, oldStyle);
      }} });
  }}, arguments[1] || {}));
}
function descripcionesForo ()
{
	nodosTROcultar=$$('.descripcionTema');
	for (i=0;i<nodosTROcultar.length;i++)
	{
		Element.hide(nodosTROcultar[i])
	}
}
filaAbierta="";
function filasForo ()
{
	filaAbierta="";
	nodosTR=$$('.linkForo');
	nodosTROcultar=$$('.descripcionTema');
	for (i=0;i<nodosTR.length;i++)
	{
		if ((i % 2)==0)
		{
			nodosTR[i].style.backgroundColor="#d9d9cb"
		} else {
			nodosTR[i].style.backgroundColor="#eaeae3"
		}
		nodosTR[i].setAttribute("id","nodoTR"+i)
	}
}

function nodosConversacion ()
{
	nodos=$$('.temaConversacion');
	for (i=0;i<nodos.length;i++)
	{
		if ((i % 2)==0)
		{
			nodos[i].style.backgroundColor="#efefeb"
		} else {
			nodos[i].style.backgroundColor="#fff"
		}
	}
}
function insertarTemaForo (boton)
{
	boton.style.display="none"
	cadena="wTema="+$('tema').value;
	cadena+="&wDescripcionTema="+$('descripcionTema').value;
	cadena+="&wAccion=guardar";
	cadena=formatarUrl('foros/iforoagradecimientoTema.shtml?'+cadena)
	new Ajax.Updater
	(
		'respuestas',
		cadena,
		{
			onComplete:function()
			{
				boton.style.display="block"
				Element.toggle('form1')
				Element.hide('capaCarga')
				$('tema').value=''
				$('descripcionTema').value=''
				
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function insertarMensajeForo(boton){

	boton.style.display="none"
	cadena="wTitulo="+escape($('tema').value);
	cadena+="&wRespuesta="+escape($('descripcionTema').value);
	cadena+="&wAccion=guardar";
	cadena+="&wIdForo="+$('wIdForo').value;
	cadena=formatarUrl('foros/iforoagradecimientoMensaje.shtml?'+cadena)
	$('descripcionTema').value=""
	$('tema').value=""
	
	new Ajax.Updater
	(
		'respuestas',
		cadena,
		{
			onComplete:function()
			{
				/*boton.style.display="block"
				Element.toggle('form1')
				Element.hide('capaCarga')
				$('tema').value=''
				$('descripcionTema').value=''*/
				verForo($('wIdForo').value)
			}
			,aynchronous:true
			, evalScripts:true
		}

	);
}

function verForo(idForo){
	cadena="wID="+idForo;
	new Ajax.Updater
	(
		'datosSeccion',
		formatarUrl('Foros/iforo.shtml?'+cadena),
		{
			onComplete:function()
			{
				if($('colDoble')){
					$('container').style.backgroundImage="url(../images/fondowebLimpio.gif)"
				}
				ocultarFormularios ();
				;
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}
function cargaListaTemas (url,donde)
{
new Ajax.Updater
	(
		donde,
		formatarUrl(url),
		{
			onComplete:function()
			{
				ocultarFormularios ();
				
				descripcionesForo ()
				filasForo()
				nodosConversacion()
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}


function insertarConsulta(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wIurl=" + f.wIurl.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	new Ajax.Updater
	(
		'respuestas',
		formatarUrl('iConsultasAgradecimiento.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function insertarAgradecimiento(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wIurl=" + f.wIurl.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	new Ajax.Updater
	(
		'respuestas',
		formatarUrl('iAgradecimientosAgradecimiento.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}
function insertarLibroDeVisitas(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wIurl=" + f.wIurl.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	new Ajax.Updater
	(
		'respuestas',
		formatarUrl('iLibroDeVisitasAgradecimiento.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function enviaContacta(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "wNombre=" + f.wNombre.value ;
	url = url + "&wEmail=" + f.wEmail.value ;
	url = url + "&wTexto=" + f.wTexto.value ;
	url = url + "&wAccion=guardar";
	url ='ContactaAgradecimiento.shtml?'+url
	f.wNombre.value=""
	f.wEmail.value=""
	f.wTexto.value=""
	crearVentanaDatos(url,0,300,400)
}

function consultaTemperatura(idForm){
	f = document.getElementById(idForm)
	url = "";
	url = url + "&wEstacion=" + f.nEstacion.options[f.nEstacion.selectedIndex].value ;
	url = url + "&wAccion=consultar";
	new Ajax.Updater
	(
		'tempTxurro',
		formatarUrl('MeteoTemp.shtml?'+url),
		{
			onComplete:function()
			{
			}
			,	aynchronous:true
			, evalScripts:true
		}

	);
}

function cambiarFiltroForos(comb){
	filtro=comb.options[comb.selectedIndex].value
	window.location.href='524.shtml?gTxt_FiltroForos='+filtro
}


// Copyright (c) 2006 SÃƒÂ©bastien Gruhier (http://xilinus.com, http://itseb.com)
// 
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
// 
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// VERSION 0.26

var Carousel = Class.create();
Carousel.prototype = {
  // Constructor
  initialize: function(carouselElemID) {
    this.carouselElemID = carouselElemID;
    
    this.options = Object.extend({
      numVisible:           4,
      scrollInc:            3,
      animParameters:      {},
      buttonStateHandler:  null,
      animHandler:         null,
      ajaxHandler:         null,
      initDoneHandler:     null,
      queue:               "carousel",
      size:                0,
      prevElementID:       "prev-arrow",
      nextElementID:       "next-arrow",
      ajaxParameters:      null,
      url:                 null
		}, arguments[1] || {});

		this.initDone = false;
		this.animRunning = "none";
    this.requestIsRunning = false;
    
		// add afterFinish options to animParameters (store old function)
		this.animAfterFinish = this.options.animParameters.afterFinish;
		Object.extend(this.options.animParameters, {afterFinish:  this._animDone.bind(this), queue: { position:'end', scope: this.options.queue }});
	  
		// Event bindings
		this.prevScroll = this._prevScroll.bindAsEventListener(this);
		this.nextScroll = this._nextScroll.bindAsEventListener(this);
		this.onComplete = this._onComplete.bindAsEventListener(this);
		this.onFailure  = this._onFailure.bindAsEventListener(this);

		Event.observe(this.options.prevElementID, "click", this.prevScroll);
		Event.observe(this.options.nextElementID, "click", this.nextScroll);
		
		// Get DOM UL element
		var carouselListClass = "carousel-list";
		this.carouselList = document.getElementsByClassName(carouselListClass, $(carouselElemID))[0]
		this.options.size =  $(this.carouselList.getElementsByTagName("li")).length;
		// Init data
		this._init();
  },
  
  // Destructor
 	destroy: function() {
  	Event.stopObserving(this.options.prevElementID, "click", this.prevScroll);
  	Event.stopObserving(this.options.nextElementID, "click", this.nextScroll);
	},
	
	scrollTo: function(newStart) {
		var old_inc = this.options.scrollInc;
		this.ignoreNoMoreImages = true;
		if(newStart > this.currentIndex) {
			this.options.scrollInc = newStart - this.currentIndex;
			this._nextScroll(this);
		} else {
			this.options.scrollInc = this.currentIndex - newStart;
			this._prevScroll(this);
		}
    this.options.scrollInc = old_inc;
	},
	
  /* "Private" functions */
  _init: function() {
    this.currentIndex = 0;
      
    // Ajax content
    if (this.options.url)
  	  this._request(this.currentIndex, this.options.numVisible);
	  // Static content
  	else {
  	  this._getLiElementSize();
  		this._updateButtonStateHandler(this.options.prevElementID, false);
  		this._updateButtonStateHandler(this.options.nextElementID, this.options.size > this.options.numVisible);
  	}
  },
  
  _prevScroll: function(event) {
    if (this.animRunning != "none" || this.currentIndex == 0)
      return;

    var inc = this.options.scrollInc;

    if (this.currentIndex - inc < 0)
      inc = this.currentIndex;

    this._scroll(inc)		  
	  return false;
  },
  
  _nextScroll: function(event) {    
    if (this.animRunning != "none")
      return false;
            
    // Check if there are enough elements in cache
    if (this.currentIndex + this.options.numVisible + this.options.scrollInc <= this.options.size) 
      this._scroll(-this.options.scrollInc);
    else {
      // Compute how many are in the cache
      this.nbInCache = this.options.size - (this.currentIndex + this.options.numVisible);
      if (this.options.url && this.noMoreImages == false) 
		    this._request(this.currentIndex + this.options.numVisible + this.nbInCache, this.options.scrollInc - this.nbInCache);
	    else  {
	      if (this.nbInCache > 0)
          this._scroll(-this.nbInCache);
        }
	  }
	  return false;
  },
  
  _request: function(start, nb) {
    if (this.options.url && ! this.requestIsRunning) {
      this.requestIsRunning = true;
      
      if (this.options.ajaxHandler)
        this.options.ajaxHandler(this, "before");
      
      var params = "start=" + start + "&nb=" + nb;
      if (this.options.ajaxParameters != null)
        params += "&" + this.options.ajaxParameters
      
  		new Ajax.Request(this.options.url, {parameters: params, onComplete: this.onComplete, onFailure: this.onFailure});
		}
  },
  
  _onComplete: function(originalRequest){
    this.requestIsRunning = false;
    this.carouselList.innerHTML += originalRequest.responseText;
    // Compute how many new elements we have
    var size = this.options.size;
    this.options.size = this.carouselList.getElementsByTagName("li").length;
    var inc = this.options.size - size;
    
		// First run, compute li size
		if (this.initDone == false) {
  		this._getLiElementSize()
  		this.currentIndex = 0;
  		this.initDone = true;
      if (this.options.initDoneHandler) 
        this.options.initDoneHandler(this);
         
  		// Update button states
		  this._updateButtonStateHandler(this.options.prevElementID, false);
		  this._updateButtonStateHandler(this.options.nextElementID, this.options.size == this.options.numVisible);
		  this.noMoreImages = this.options.size < this.options.numVisible
		}
		// Add images
		else {
		  if (!this.ignoreNoMoreImages)
		    this.noMoreImages = inc != this.options.scrollInc;
		  else
		    this.ignoreNoMoreImages = false;
		  // Add images
		  if (inc > 0) {
        this._scroll(-inc, this.noMoreImages)
      }
      // No more images, disable next button
		  else {
		    if (this.nbInCache >0)
          this._scroll(-this.nbInCache, true);
		    
		    this._updateButtonStateHandler(this.options.nextElementID, false);
	    }
		}
		if (this.options.ajaxHandler)
      this.options.ajaxHandler(this, "after");
  },
  
  _onFailure: function(originalRequest){    
    this.requestIsRunning = false;
  },

  _animDone: function(event){   
    if (this.options.animHandler)
      this.options.animHandler(this.carouselElemID, "after", this.animRunning);
     
    this.animRunning = "none";
    // Call animAfterFinish if exists
    if (this.animAfterFinish)
      this.animAfterFinish(event);
  },
  
  _updateButtonStateHandler: function(button, state) {
		if (this.options.buttonStateHandler) 
		    this.options.buttonStateHandler(button, state)
   },
  
  _scroll: function(delta, forceDisableNext) {      
    this.animRunning = delta > 0 ? "prev" : "next";
    
    if (this.options.animHandler)
      this.options.animHandler(this.carouselElemID, "before", this.animRunning);

    new Effect.MoveBy(this.carouselList, 0, delta * this.elementSize, this.options.animParameters);
    this.currentIndex -= delta;
    this._updateButtonStateHandler(this.options.prevElementID, this.currentIndex != 0);
    
    if (this.options.url && this.noMoreImages == false)
      enable = true;
    else
      enable = (this.currentIndex + this.options.numVisible < this.options.size);
    this._updateButtonStateHandler(this.options.nextElementID, (forceDisableNext ? false : enable));
  },
  
  _getLiElementSize: function() {
    var li = $(this.carouselList.getElementsByTagName("li")[0]);
		this.elementSize = li.getDimensions().width + parseFloat(li.getStyle("margin-left")) + parseFloat(li.getStyle("margin-right"));
  }
}
	



// script.aculo.us slider.js v1.7.0, Fri Jan 19 19:16:36 CET 2007

// Copyright (c) 2005, 2006 Marty Haught, Thomas Fuchs 
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

if(!Control) var Control = {};
Control.Slider = Class.create();

// options:
//  axis: 'vertical', or 'horizontal' (default)
//
// callbacks:
//  onChange(value)
//  onSlide(value)
Control.Slider.prototype = {
  initialize: function(handle, track, options) {
    var slider = this;
    
    if(handle instanceof Array) {
      this.handles = handle.collect( function(e) { return $(e) });
    } else {
      this.handles = [$(handle)];
    }
    
    this.track   = $(track);
    this.options = options || {};

    this.axis      = this.options.axis || 'horizontal';
    this.increment = this.options.increment || 1;
    this.step      = parseInt(this.options.step || '1');
    this.range     = this.options.range || $R(0,1);
    
    this.value     = 0; // assure backwards compat
    this.values    = this.handles.map( function() { return 0 });
    this.spans     = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
    this.options.startSpan = $(this.options.startSpan || null);
    this.options.endSpan   = $(this.options.endSpan || null);

    this.restricted = this.options.restricted || false;

    this.maximum   = this.options.maximum || this.range.end;
    this.minimum   = this.options.minimum || this.range.start;

    // Will be used to align the handle onto the track, if necessary
    this.alignX = parseInt(this.options.alignX || '0');
    this.alignY = parseInt(this.options.alignY || '0');
    
    this.trackLength = this.maximumOffset() - this.minimumOffset();

    this.handleLength = this.isVertical() ? 
      (this.handles[0].offsetHeight != 0 ? 
        this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) : 
      (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth : 
        this.handles[0].style.width.replace(/px$/,""));

    this.active   = false;
    this.dragging = false;
    this.disabled = false;

    if(this.options.disabled) this.setDisabled();

    // Allowed values array
    this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
    if(this.allowedValues) {
      this.minimum = this.allowedValues.min();
      this.maximum = this.allowedValues.max();
    }

    this.eventMouseDown = this.startDrag.bindAsEventListener(this);
    this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
    this.eventMouseMove = this.update.bindAsEventListener(this);

    // Initialize handles in reverse (make sure first handle is active)
    this.handles.each( function(h,i) {
      i = slider.handles.length-1-i;
      slider.setValue(parseFloat(
        (slider.options.sliderValue instanceof Array ? 
          slider.options.sliderValue[i] : slider.options.sliderValue) || 
         slider.range.start), i);
      Element.makePositioned(h); // fix IE
      Event.observe(h, "mousedown", slider.eventMouseDown);
    });
    
    Event.observe(this.track, "mousedown", this.eventMouseDown);
    Event.observe(document, "mouseup", this.eventMouseUp);
    Event.observe(document, "mousemove", this.eventMouseMove);
    
    this.initialized = true;
  },
  dispose: function() {
    var slider = this;    
    Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
    Event.stopObserving(document, "mouseup", this.eventMouseUp);
    Event.stopObserving(document, "mousemove", this.eventMouseMove);
    this.handles.each( function(h) {
      Event.stopObserving(h, "mousedown", slider.eventMouseDown);
    });
  },
  setDisabled: function(){
    this.disabled = true;
  },
  setEnabled: function(){
    this.disabled = false;
  },  
  getNearestValue: function(value){
    if(this.allowedValues){
      if(value >= this.allowedValues.max()) return(this.allowedValues.max());
      if(value <= this.allowedValues.min()) return(this.allowedValues.min());
      
      var offset = Math.abs(this.allowedValues[0] - value);
      var newValue = this.allowedValues[0];
      this.allowedValues.each( function(v) {
        var currentOffset = Math.abs(v - value);
        if(currentOffset <= offset){
          newValue = v;
          offset = currentOffset;
        } 
      });
      return newValue;
    }
    if(value > this.range.end) return this.range.end;
    if(value < this.range.start) return this.range.start;
    return value;
  },
  setValue: function(sliderValue, handleIdx){
    if(!this.active) {
      this.activeHandleIdx = handleIdx || 0;
      this.activeHandle    = this.handles[this.activeHandleIdx];
      this.updateStyles();
    }
    handleIdx = handleIdx || this.activeHandleIdx || 0;
    if(this.initialized && this.restricted) {
      if((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
        sliderValue = this.values[handleIdx-1];
      if((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
        sliderValue = this.values[handleIdx+1];
    }
    sliderValue = this.getNearestValue(sliderValue);
    this.values[handleIdx] = sliderValue;
    this.value = this.values[0]; // assure backwards compat
    
    this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] = 
      this.translateToPx(sliderValue);
    
    this.drawSpans();
    if(!this.dragging || !this.event) this.updateFinished();
  },
  setValueBy: function(delta, handleIdx) {
    this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta, 
      handleIdx || this.activeHandleIdx || 0);
  },
  translateToPx: function(value) {
    return Math.round(
      ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) * 
      (value - this.range.start)) + "px";
  },
  translateToValue: function(offset) {
    return ((offset/(this.trackLength-this.handleLength) * 
      (this.range.end-this.range.start)) + this.range.start);
  },
  getRange: function(range) {
    var v = this.values.sortBy(Prototype.K); 
    range = range || 0;
    return $R(v[range],v[range+1]);
  },
  minimumOffset: function(){
    return(this.isVertical() ? this.alignY : this.alignX);
  },
  maximumOffset: function(){
    return(this.isVertical() ? 
      (this.track.offsetHeight != 0 ? this.track.offsetHeight :
        this.track.style.height.replace(/px$/,"")) - this.alignY : 
      (this.track.offsetWidth != 0 ? this.track.offsetWidth : 
        this.track.style.width.replace(/px$/,"")) - this.alignY);
  },  
  isVertical:  function(){
    return (this.axis == 'vertical');
  },
  drawSpans: function() {
    var slider = this;
    if(this.spans)
      $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
    if(this.options.startSpan)
      this.setSpan(this.options.startSpan,
        $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
    if(this.options.endSpan)
      this.setSpan(this.options.endSpan, 
        $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
  },
  setSpan: function(span, range) {
    if(this.isVertical()) {
      span.style.top = this.translateToPx(range.start);
      span.style.height = this.translateToPx(range.end - range.start + this.range.start);
    } else {
      span.style.left = this.translateToPx(range.start);
      span.style.width = this.translateToPx(range.end - range.start + this.range.start);
    }
  },
  updateStyles: function() {
    this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
    Element.addClassName(this.activeHandle, 'selected');
  },
  startDrag: function(event) {
    if(Event.isLeftClick(event)) {
      if(!this.disabled){
        this.active = true;
        
        var handle = Event.element(event);
        var pointer  = [Event.pointerX(event), Event.pointerY(event)];
        var track = handle;
        if(track==this.track) {
          var offsets  = Position.cumulativeOffset(this.track); 
          this.event = event;
          this.setValue(this.translateToValue( 
           (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
          ));
          var offsets  = Position.cumulativeOffset(this.activeHandle);
          this.offsetX = (pointer[0] - offsets[0]);
          this.offsetY = (pointer[1] - offsets[1]);
        } else {
          // find the handle (prevents issues with Safari)
          while((this.handles.indexOf(handle) == -1) && handle.parentNode) 
            handle = handle.parentNode;
            
          if(this.handles.indexOf(handle)!=-1) {
            this.activeHandle    = handle;
            this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
            this.updateStyles();
            
            var offsets  = Position.cumulativeOffset(this.activeHandle);
            this.offsetX = (pointer[0] - offsets[0]);
            this.offsetY = (pointer[1] - offsets[1]);
          }
        }
      }
      Event.stop(event);
    }
  },
  update: function(event) {
   if(this.active) {
      if(!this.dragging) this.dragging = true;
      this.draw(event);
      // fix AppleWebKit rendering
      if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
      Event.stop(event);
   }
  },
  draw: function(event) {
    var pointer = [Event.pointerX(event), Event.pointerY(event)];
    var offsets = Position.cumulativeOffset(this.track);
    pointer[0] -= this.offsetX + offsets[0];
    pointer[1] -= this.offsetY + offsets[1];
    this.event = event;
    this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
    if(this.initialized && this.options.onSlide)
      this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
  },
  endDrag: function(event) {
    if(this.active && this.dragging) {
      this.finishDrag(event, true);
      Event.stop(event);
    }
    this.active = false;
    this.dragging = false;
  },  
  finishDrag: function(event, success) {
    this.active = false;
    this.dragging = false;
    this.updateFinished();
  },
  updateFinished: function() {
    if(this.initialized && this.options.onChange) 
      this.options.onChange(this.values.length>1 ? this.values : this.value, this);
    this.event = null;
  }
};mapas=Class.create ();
mapas.prototype=
{
	initialize: function (clase,objetoMover,funcionFinish)
	{
		origenX=0;
		origenY=0;
		this.objeto=objetoMover;
		this.ultimaPosicionX=0;
		this.ultimaPosicionY=0;
		this.nodosEnlace=$$(clase);
		this.objetoEffect=null;
		this.funcionFinish=funcionFinish
		for (i=0;i<this.nodosEnlace.length;i++)
		{
			this.nodosEnlace[i].ref=this;
			this.nodosEnlace[i].arrayAtributos=this.nodosEnlace[i].getAttribute("rel").split('#')
			this.nodosEnlace[i].posX=this.nodosEnlace[i].arrayAtributos[1]
			this.nodosEnlace[i].posY=this.nodosEnlace[i].arrayAtributos[2]
			this.nodosEnlace[i].onclick=function () {this.ref.moverMapa(this.posX,this.posY)}
		}
	},
	moverMapa:function (coordX,coordY)
	{
		newPosX=parseInt(coordX)
		newPosY=parseInt(coordY)
		this.moverX=((origenX)+(newPosX))-(this.ultimaPosicionX)
		this.moverY=((origenY)+(newPosY))-(this.ultimaPosicionY)
		
		this.objetoEffect=new Effect.MoveBy
		( this.objeto, this.moverX, this.moverY, 
			{
				afterFinish: this.modificarCoordenas
			}
		)
		this.objetoEffect.mapa=this
	},
	modificarCoordenas:function (objetoEfecto)
	{
		objMapa=objetoEfecto.mapa
		objMapa.ultimaPosicionX=parseInt($(objMapa.objeto).getStyle('top'));		
		objMapa.ultimaPosicionY=parseInt($(objMapa.objeto).getStyle('left'));
		if(objMapa.funcionFinish){
			objMapa.funcionFinish(objMapa)
		}
	}
}
