dominio="villaseverina.es" 
arroba="@" 

esExplorer=false
esMozilla=false
esOpera=false
esChrome=false
esChromium=false
versionNav=""
navegador=""
verTipoNavegador(false);  //Nota: Firefox 2.0 devuelve 5.0
//alert("IE:" + esExplorer + ", Moz:" + esMozilla + ", Op:" + esOpera + "\nVersión:" + versionNav + "\n" + navigator.appVersion);
crearPrimerCalendario=true
maximoNumMeses=0        //No se puede reservar con más de estos meses de antelación. Poner 0 para que no haya máximo
minimoNumDias=3         //No se puede reservar con el formulario con menos días de antelación. Si es así se recomienda llamar por tfno.
meses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
diasSemana = new Array("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado");
numDias = new Array(31,28,31,30,31,30,31,31,30,31,30,31);    //El tema de los bisiestos ya se soluciona al crear el calendario

var enlacesEnOtraVentana=false;

galeriaAnterior = "galeriaLoureiro";
objMiniaturaActual = ""; 

var cronoProyeccion;
var lapsoProyeccion = 3;   //cada 3 segs.



if (! esExplorer) {
	document.write("<link href='css/estilos-vs-" + navegador + ".css' type='text/css' rel='stylesheet'>"); 
}

window.onload = function () { ejecutarAlPrincipio(); };

// =============================================================================================
//=============================================================================================

function ejecutarAlPrincipio () {
	indicarPaginaActual();
	escribeHora(); 
	setInterval("escribeHora()", 5000);  //actualiza fecha y hora cada 5 seg.
	recuperarPreferencias();
	corregirGlobos();
	
	if (paginaActual()=="imagenes") {setTimeout("precargarImagenes()",1000); corregirTituloProyector();}
	if (paginaActual()=="contactar") {prepararFormulario(); prepararBotonSkype();}
	if (paginaActual()=="index") {postalesEventos();}
	if (paginaActual()=="agenda") {ordenarAgenda();}
	if (paginaActual()=="precios") {calendarioTemporadas("calendarioTBTA");}
}


function escribe_correo(usuario){ 
   document.write(usuario+arroba+dominio) 
} 


function verTipoNavegador(mostrar) {
//alert(navigator.appName);
	var nombre=navigator.appName.toUpperCase();
	var version=navigator.appVersion.toUpperCase();
	var agente=navigator.userAgent.toUpperCase();
	
	if (nombre.indexOf("INTERNET EXPLORER") >= 0) {
		esExplorer=true;
		navegador="ie";
		//appName: Microsoft Internet Explorer
		//appVersion (ie6): 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET........)
		//         "         (ie7): igual, pero MSIE 7.0
		//userAgent (ie6): Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET........
		//         "         (ie7): igual, pero MSIE 7.0
		i=version.indexOf('MSIE ');
		versionNav = version.substring(i+5, version.indexOf(';',i));
	}
	if (nombre.indexOf("NETSCAPE") >= 0) {
		esMozilla=true;
		navegador="mozilla";
		//appName: Netscape
		//appVersion: 5.0 (Windows; es-ES)
		//userAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0
		i=agente.indexOf('FIREFOX');
		versionNav = agente.substring(i+8);
	}
	if (nombre.indexOf("OPERA") >= 0) {
		esOpera=true;
		navegador="opera";
		//appName: Opera
		//appVersion: 9.27 (Windows NT 5.1; U; es-es)
		//userAgent: Opera/9.27 (Windows NT 5.1; U; es-es) Presto/2.7.62 Version/11.00
		i=agente.indexOf('VERSION/')
		if (i>=0) {
			versionNav = agente.substring (i+8);
		}
		else {
			i=version.indexOf('(');
			versionNav = version.substring(0,i-1);
		}
	}
	if (version.indexOf("CHROME") >= 0) {
		esChrome=true;
		esMozilla=false;
		navegador="chrome";
		//appName: Netscape
		//appVersion: 5.0 (Windows; U; .....) Chrome/6.0.472.53 ....
		//userAgent: Mozilla ..... Chrome/6.0....
		
		if (version.indexOf("CHROMIUM") >= 0) {
			i=agente.indexOf('CHROMIUM');
			j=agente.indexOf('CHROME');
			versionNav = agente.substring(i+9, j);
			esChromium=true;
			
		}
		else {
			i=agente.indexOf('CHROME');
			j=agente.indexOf('SAFARI');
			versionNav = agente.substring(i+7, j);
		}
	}
	if (mostrar) {
		alert ("appName: " + navigator.appName + "\nappVersion: " + navigator.appVersion + "\nuserAgent: " + navigator.userAgent
				+ "\n\nIE/MOZ/OP/CHR: " + esExplorer + "/" + esMozilla + "/" + esOpera + "/" + esChrome + "\nversionNav: " + versionNav );
	}
}

function paginaActual() {
	urlPagina=parent.location.href; 
	arrayUrl=urlPagina.split("/");
	paginaConExtension=arrayUrl[arrayUrl.length-1];
	arrayPCE=paginaConExtension.split(".");
	if (arrayPCE[0])
		return(arrayPCE[0]);
	else
		return ("index");
}

function Bisiesto(anio) {
	return ((anio % 4 ==0) && ((anio % 100 != 0) || (anio % 400 == 0)) );
}

function calcularFechaSalida () {
	FSalida = document.getElementById("FechaSalida");
	FLlegada = document.getElementById("FechaLlegada");
	FechaLlegada=document.frmCorreo.FechaLlegada.value;
	Noches=document.frmCorreo.Noches.value;
	FSalida.type="text";
	if (FechaLlegada != "") {
		if (Noches=="" || isNaN(Noches) || Noches<=0) {
			//FSalida.type="hidden";   //No funciona con IE
			FSalida.value="";
		}
		else {
			FechaLlegada=FechaLlegada.replace(/-/g,"/");
			if (FechaLlegada.indexOf(" ")>=0)
				FechaLlegada=FechaLlegada.split(" ")[1];
			dia=FechaLlegada.split("/")[0];
			mes=FechaLlegada.split("/")[1];
			anio=FechaLlegada.split("/")[2];
			
			// si no se pone el parámetro 10 (sistema decimal), parseint("08") y parseint("09") devuelven 0, y la fecha de salida se calcula mal !!!!!!!!!!!!
			fLleg = new Date (anio, parseInt(mes,10)-1, dia);     
			numDias[1]= Bisiesto(anio) ? 29 : 28;

			//añadir las 3 primeras letras del día de la semana de llegada
			if (dia <= numDias[mes-1]) {
				FLlegada.value = diasSemana[fLleg.getDay()].substring(0,3) + " " + FechaLlegada;
			}

			//añadir las 3 primeras letras del día de la semana de salida
			dia = parseInt(dia,10) + parseInt(Noches,10);
			//alert ("a="+anio+" m="+mes+" d="+dia);
			f = new Date (anio, parseInt(mes,10)-1, dia);
			FSalida.value = diasSemana[f.getDay()].substring(0,3) + " " + f.getDate() + "/" + (f.getMonth()+1) + "/" + f.getFullYear();
			//FSalida.type = "text"; 
		}
	}
	else {
		FSalida.value = "";
		//FSalida.type = "hidden";
	}
}

function VerificarDatosContacto() {  
	Nombre=document.frmCorreo.Nombre.value;  
	if(Nombre == null || Nombre.length < 3 || /^\s+$/.test(Nombre)) {    
		alert("Por favor, indique un Nombre de contacto");    
		document.frmCorreo.Nombre.focus();    
		return false;  
	}  
	Correoe=document.frmCorreo.Correoe.value;  
	if(Correoe == "" || !(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/.test(Correoe)) ) {    
		alert("Por favor, indique un correo-e válido");    
		document.frmCorreo.Correoe.focus(); 
		return false;  
	}  


	FechaLlegada=document.frmCorreo.FechaLlegada.value;
	if (FechaLlegada.indexOf(" ")>=0)
		FechaLlegada=FechaLlegada.split(" ")[1];

	if (FechaLlegada != "") {
		if (!(/^(0*[1-9]|[12]\d|3[01])(\/|-)(0*[1-9]|1[012])(\/|-)([1-9]\d\d\d)$/.test(FechaLlegada))) {
			alert("La fecha debe ser correcta y estar en formato d/m/aaaa o d-m-aaaa");
			document.frmCorreo.FechaLlegada.focus();
			return false;
		}
		FechaLlegada=FechaLlegada.replace(/-/g,"/");
		dia=FechaLlegada.split("/")[0];
		mes=FechaLlegada.split("/")[1];
		anio=FechaLlegada.split("/")[2];
		numDias[1]= Bisiesto(anio) ? 29 : 28;

		if (dia > numDias[mes-1]) {
			alert("La fecha introducida no existe");
			document.frmCorreo.FechaLlegada.focus();
			return false;
		}

		fecha=new Date(anio, mes-1, dia);      //se quedan con hora=0, min=0, seg=0
		hoy=new Date();
		if (fecha <= hoy) {
			//Puede ser igual o menor que hoy. Será menor si alguno de los datos dia/mes/año no coincide
			if (fecha.getDate()!=hoy.getDate() || fecha.getMonth()!=hoy.getMonth() || fecha.getFullYear()!=hoy.getFullYear()) {
				alert ("La fecha de llegada prevista no puede ser anterior a hoy ");
				document.frmCorreo.FechaLlegada.focus();
				return false;
			}
		}
		
		//comprobar si la reserva es con demasiados meses de antelación
		mesesAntelacion=mes-1-hoy.getMonth();
		mesesAntelacion += (anio-hoy.getFullYear())*12;
		if (maximoNumMeses>0 && mesesAntelacion>maximoNumMeses) {
			alert ("No se admiten reservas con más de " + maximoNumMeses + " meses de antelación");
			document.frmCorreo.FechaLlegada.focus();
			return false;
		}
		
		//comprobar si la reserva es con demasiada poca antelación para hacerse con el formulario
		if (diferenciaDias(hoy,fecha) < minimoNumDias) {
				alert("Dada la cercanía de su fecha prevista de llegada, deberá ponerse en contacto con nosotros por teléfono.");
				document.frmCorreo.FechaLlegada.focus();
				return false;
		}
	}


	Noches=document.frmCorreo.Noches.value;
	if (isNaN(Noches)) {
		alert ("El nº de noches ha de ser un valor numérico");
		document.frmCorreo.Noches.focus();
		return false;
	}
		
	if (Noches != "" && Noches < 1) {
		alert ("El nº mínimo de noches es 1");
		document.frmCorreo.Noches.focus();
		return false;
	}

	Adultos=document.frmCorreo.Adultos.value;
	if (isNaN(Adultos)) {
		alert ("El nº de adultos ha de ser un valor numérico");
		document.frmCorreo.Adultos.focus();
		return false;
	}
	if (Adultos != "" && parseInt(Adultos,10) < 1) {
		alert ("El nº mínimo de adultos es 1");
		document.frmCorreo.Adultos.focus();
		return false;
	}
	
	Niños=document.frmCorreo.Niños.value;
	if (isNaN(Niños)) {
		alert ("El nº de niños ha de ser un valor numérico");
		document.frmCorreo.Niños.focus();
		return false;
	}
	if (Niños != "" && parseInt(Niños,10) > 0 && ((Adultos!="" && parseInt(Adultos,10) < 1) || Adultos=="" )) {
		alert ("Si hay niños debe haber al menos un adulto");
		document.frmCorreo.Adultos.focus();
		return false;
	}

	Cunas=document.frmCorreo.Cunas.value;
	if (isNaN(Cunas)) {
		alert ("El nº de cunas ha de ser un valor numérico");
		document.frmCorreo.Cunas.focus();
		return false;
	}
	if (Cunas != "" && parseInt(Cunas,10) > 0 && ((Niños!="" && parseInt(Cunas,10) > parseInt(Niños,10)) || Niños=="" )) {
		alert ("El nº de cunas no puede ser mayor que el de niños");
		document.frmCorreo.Cunas.focus();
		return false;
	}

	Apartamento=document.frmCorreo.Apartamento.value;

	if ((FechaLlegada!="" || Apartamento!="" || Noches!="" || Adultos!="") && (FechaLlegada=="" || Apartamento=="" || Noches=="" || Adultos=="") ) {
		alert("Los campos fecha/noches/apartamento/adultos son opcionales, pero si se cubre uno hay que cubrir los demás");
		if (Adultos=="") {
			document.frmCorreo.Adultos.focus();
		}
		if (Apartamento=="") {
			document.frmCorreo.Apartamento.focus();
		}
		if (Noches=="") {
			document.frmCorreo.Noches.focus();
		}
		if (FechaLlegada=="") {
			document.frmCorreo.FechaLlegada.focus();
		}
		return false;
	}
	
	Mensaje=document.frmCorreo.Mensaje.value;  
	if (Mensaje == null || Mensaje.length < 10 || /^\s+$/.test(Mensaje)) {    
		alert("Por favor, escriba la consulta que desee hacernos");    
		document.frmCorreo.Mensaje.focus();    
		return false;  
	}  
	
//alert ('formulario correcto ok');
//return false;	
	return true;
}

function FechaActual () {
	hoy=new Date();
	return hoy.getDate() + "/" + (hoy.getMonth()+1) + "/" + hoy.getFullYear();
}

//las fechas deben ser de tipo fecha, no cadena
function diferenciaDias (fecha1, fecha2) {   
	var msDia=24*60*60*1000; // milisegundos de un dia
	
	return Math.ceil((fecha2.getTime()-fecha1.getTime())/msDia);   //si fecha1 es hoy y fecha2 mañana, devuelve 1
}

function mostrarCalendario (mostrar) {
	hoy=new Date();
	if (crearPrimerCalendario) {
		crearCalendario ("calendarioLlegada", hoy.getFullYear(), hoy.getMonth());
		crearPrimerCalendario=false;
	}	
	document.getElementById("calendarioLlegada").style.visibility= (mostrar ? "visible" : "hidden");

}

function elegirFecha (fecha) {
	mostrarCalendario (false);
	if (fecha!="") {
		document.frmCorreo.FechaLlegada.value = fecha;
		document.frmCorreo.FechaLlegada.focus();
	}
	calcularFechaSalida ();
}


function mostrarMesLL(anio,mes) {
	crearCalendario ("calendarioLlegada", anio, mes-1);
}

function ajustarFestivos(anio, mes, TBTA) {
	//Los festivos están en el fichero festivos.txt
	//Para cada mes hay una cadena como esta de mayo: "-1:Día del trabajo-17:Día de las Letras Gallegas"
	
	//calcular cuando caen Martes de Carnaval, Jueves y Viernes Santo
	//primero quitar los que estén en este mes (de haber navegado por el calendario de contacto)
	if (!TBTA) { //¿no es para el calendario de temporadas alta y baja?
		pos=festivos[mes].indexOf(":Carnaval");
		if (pos >= 0) {
			i=pos-1;
			while (festivos[mes].substr(i,1) != "-") {
				i--;
			}
			festivos[mes] = festivos[mes].substr(0,i) + festivos[mes].substr(pos+9);
		}
		pos=festivos[mes].indexOf(":Jueves Santo");
		if (pos >= 0) {
			i=pos-1;
			while (festivos[mes].substr(i,1) != "-") {
				i--;
			}
			festivos[mes] = festivos[mes].substr(0,i) + festivos[mes].substr(pos+13);
		}
		pos=festivos[mes].indexOf(":Viernes Santo");
		if (pos >= 0) {
			i=pos-1;
			while (festivos[mes].substr(i,1) != "-") {
				i--;
			}
			festivos[mes] = festivos[mes].substr(0,i) + festivos[mes].substr(pos+14);
		}
	}
	
	//Añadir el Carnaval
	diaCarn=festivosVariables[anio][0].split("-")[0];
	mesCarn=festivosVariables[anio][0].split("-")[1]-1;
	if (mesCarn==mes) {
		festivos[mesCarn] += "-" + diaCarn + ":Carnaval";
	}
	//Añadir el Jueves Santo del año
	diaJS=festivosVariables[anio][1].split("-")[0];
	mesJS=festivosVariables[anio][1].split("-")[1]-1;
	if (mesJS==mes) {
		festivos[mesJS] += "-" + diaJS + ":Jueves Santo";
	}
	//Añadir el Viernes Santo del año
	diaVS=festivosVariables[anio][2].split("-")[0];
	mesVS=festivosVariables[anio][2].split("-")[1]-1;
	if (mesVS==mes) {
		festivos[mesVS] += "-" + diaVS + ":Viernes Santo";
	}

}

function crearCalendario (nombreBloque, anio, mes) {

	ajustarFestivos(anio, mes, false);
	
	var bloque=document.getElementById(nombreBloque);

	numDias[1]= Bisiesto(anio) ? 29 : 28;

	var hoy=new Date();
	var dia1=new Date(anio, mes, 1);
	var diaUltimo=new Date(anio,mes,numDias[mes]);


	tabla = '<table border="1">';

	tabla += '<THEAD>';

	tabla += '<TR>';

	// Poner la flecha de retroceder mes
	if (mes==hoy.getMonth() && anio==hoy.getFullYear()) {
		tabla += '<TH>&nbsp;&nbsp;</TH>';   //no se permite retroceder al mes anterior al actual	
	}
	else {
		mesAnterior=(mes==0 ? 11 : mes-1);  //0=enero, 11=dic
		mesAnterior++; //para que el usuario vea el mes real: 1=enero, 12=dic
		anioMesAnterior=(mes==0 ? anio-1 : anio);
		tabla += '<TH><a href="javascript:mostrarMesLL(' + anioMesAnterior + "," + mesAnterior + ')"><img title="Ir al mes anterior" alt="Ir al mes anterior" src="graficos/izquierda.gif"></a></TH>';	
	}

	//Nombre del mes y año
	tabla += '<TH colspan="5">' + meses[mes] + ' ' + anio + '</TH>';

	//Poner la flecha para avanzar mes
	mesesAntelacion=mes-hoy.getMonth();
	mesesAntelacion += (anio>hoy.getFullYear() ? 12 : 0);
	if (maximoNumMeses>0 && mesesAntelacion>=maximoNumMeses) {
		tabla += '<TH>&nbsp;&nbsp;</TH>';   //no se permite avanzar más allá del último mes permitido	
	}
	else {
		mesSiguiente=(mes==11 ? 0 : mes+1); //0=enero, 11=dic
		mesSiguiente++; //para que el usuario vea el mes real: 1=enero, 12=dic
		anioMesSiguiente=(mes==11 ? anio+1 : anio);
		tabla += '<TH><a href="javascript:mostrarMesLL(' + anioMesSiguiente + "," + mesSiguiente + ')"><img title="Ir al mes siguiente" alt="Ir al mes siguiente" src="graficos/derecha.gif"></a></TH>';	
	}
	tabla += '</TR>';
	
	tabla += '<TR><TH>LU</TH><TH>MA</TH><TH>MI</TH><TH>JU</TH><TH>VI</TH><TH>SA</TH><TH class="domingo">DO</TH></TR>';
	tabla += '</THEAD>';

	tabla += '<TBODY>';
	
	tabla += '<TR>';
	
	//Ver en qué día toca el primero del mes
	var numDia1=dia1.getDay();  //0=domingo

	//Poner los últimos días del mes anterior
	var mesAnterior = (mes==0 ? 11 : mes-1);
	var diasMesAnterior= (numDia1==0 ? 6 : numDia1-1);
	for (i=numDias[mesAnterior]-diasMesAnterior+1; i<=numDias[mesAnterior]; i++) {
		tabla += '<TD class="diaOtroMes">&nbsp;' + i + '&nbsp;</TD>';
	}
	
	var c=diasMesAnterior;  //c lleva cuenta de las celdas en cada fila

	//Averiguar el día en que cae el primer domingo
	var primerDomingo=(numDia1==0 ? 1 : 8-numDia1);

	//Poner los días de este mes
	for (i=1; i<=numDias[mes]; i++) {
		//extraer la descripción del festivo, si lo hay
		pos=festivos[mes].indexOf("-"+i+":");
		descripcion="";
		if (pos>=0) {
			desc=festivos[mes].substr(pos);
			pos=desc.indexOf(":");
			desc=desc.substr(pos+1);
			pos=desc.indexOf("-");
			if (pos==-1) {
				descripcion=desc.substr(0);
			}
			else {
				descripcion=desc.substr(0,pos);
			}
		}


		//no dejar escoger, si estamos en el mes actual, fechas anteriores al mínimo de antelación
		if (i<hoy.getDate() && mes==hoy.getMonth() && anio==hoy.getFullYear()) {
			enlace=i;
//--			if (i==hoy.getDate()) {
//--				descripcion="Hoy" + (descripcion=="" ? "" : (": " + descripcion));
//--			}
		} 
		else {
		//-- Las líneas con esto delante se quitaron para que el calendario permita elegir días anteriores al minimoNumDias de antelación permitido
		//-- De todas formas, en la comprobación del formulario se avisa con un mensaje para que reserven por tfno.
//--			if (diferenciaDias(hoy, new Date(anio, mes, i)) < minimoNumDias) {
//--				enlace=i;
//--			} 
//--			else {
//				enlace='<a href="javascript:elegirFecha(\'' + i + '/' +(mes+1)+ '/' +anio + '\')">&nbsp;' + (i<10 ? '&nbsp;':'') + i + (i<10 ? '&nbsp;':'') + '&nbsp;</a>';
				enlace='<a href="#" onclick="elegirFecha(\'' + i + '/' +(mes+1)+ '/' +anio + '\')">&nbsp;' + (i<10 ? '&nbsp;':'') + i + (i<10 ? '&nbsp;':'') + '&nbsp;</a>';
//--			}
			if (i==hoy.getDate() && mes==hoy.getMonth() && anio==hoy.getFullYear()) {
				descripcion="Hoy" + (descripcion=="" ? "" : (": " + descripcion));
			}
		}

		// señalar la temporada alta
		if (tempAlta[anio] != null) {
			pos=tempAlta[anio][mes].indexOf("-"+i+"-");
			if (pos>=0) descripcion += (descripcion != "" ?  " \n" : "") + "(Temporada Alta)";
		}	
		
		var clasesEspeciales = "";
		clasesEspeciales += ((i-primerDomingo)%7==0 ? " domingo" : "");
		clasesEspeciales += (festivos[mes].indexOf("-"+i+":")>=0 ? " festivo" : "");
		clasesEspeciales += ((i==hoy.getDate() && mes==hoy.getMonth() && anio==hoy.getFullYear()) ? " hoy" : "");
		clasesEspeciales += ((i<hoy.getDate() && mes==hoy.getMonth() && anio==hoy.getFullYear()) ? " noValido" : "");
		if (tempAlta[anio] != null) {
			clasesEspeciales += ((tempAlta[anio][mes].indexOf("-"+i+"-")>=0) ? " TA" : "");

		}
	
		tabla += '<TD title="' + descripcion + '" class="' + clasesEspeciales + '">' + enlace + '</TD>';
		c++;

		if (c==7) {
			tabla += '</TR>';
			c=0;
		}
	}

	//Ver en qué día toca el último del mes
	var numDiaUltimo=diaUltimo.getDay();  //0=domingo

	//Poner los días del mes siguiente
	var mesSiguiente = (mes==11 ? 0 : mes+1);
	var diasMesSiguiente= (numDiaUltimo==0 ? 0 : 7-numDiaUltimo);
	for (i=1; i<=diasMesSiguiente; i++) {
		tabla += '<TD class="diaOtroMes' + (i==diasMesSiguiente ? " domingo":"") + '">&nbsp;' + i + '&nbsp;</TD>';
	}
	tabla += '</TR>';

	tabla+='</TBODY>';
	tabla+='</TABLE>';
	bloque.innerHTML='<a href="javascript:elegirFecha(\'\')"><img title="Cerrar el calendario" alt="Cerrar el calendario" src="graficos/cerrar.gif"></a>' + tabla;
//prompt("",bloque.innerHTML);
}





function ordenarAgenda () {
	agen=document.getElementById("agenda");
	objLI=agen.getElementsByTagName("LI");
	numLI=objLI.length;
	mesActual = new Date().getMonth() + 1;
	
	//buscar la posición del mes actual
	//OJO: si no hay agenda de todos los meses no funciona cuando el mes actual no esté en la lista
	numMesesAntes=0;
	pos=0;
	while (objLI[pos].className.indexOf("mes "+mesActual) < 0) {
		if (objLI[pos].className.indexOf("mes ") > -1) {
			numMesesAntes++;
		}
		pos++;
	}

	if (pos>0) {
		//contar el nº de LI que son meses desde el actual
		numMeses = 0;
		for (i=pos; i<numLI; i++) {
			if (objLI[i].className.indexOf("mes ") > -1) {
				numMeses++;
			}
		}
		
		//mover los meses desde el actual al final
		for (i=0; i<numMeses; i++) {
			agen.appendChild(objLI[pos]);
			//alert(i);
		}
		
		//mover los meses antes del actual
		for (i=0; i<numMesesAntes; i++) {
			agen.appendChild(objLI[0]);
		}
	}
	//alert("pos:"+pos+", numMeses="+numMeses);
}

//posición relativa a la página
function posicionObjeto (obj) {
	posHoriz=0;
	posVert=0;
	if (obj.offsetParent) {
		while (obj.offsetParent.offsetParent) { //mientras tenga abuelo
			posHoriz += obj.offsetLeft;
			posVert  += obj.offsetTop;
			obj = obj.offsetParent;
		} 
	}
	return [posHoriz, posVert];
}

function corregirGlobos () {
	listaA = document.getElementsByTagName ("A");

	for (i=0; i<listaA.length; i++) {
		objA = listaA[i];
		if (objA.className.indexOf("ayudaPalabra") > -1) {
			//alert (objA.innerHTML + "\n" + objA.offsetWidth + ", " + objA.offsetHeight) ;
			objSpan = objA.getElementsByTagName("SPAN")[0];
			anchoContenido = parseInt(document.getElementById("pagina").offsetWidth, 10);
			//posicionA = parseInt(objA.offsetLeft);
			posicionA=parseInt(posicionObjeto(objA)[0], 10);
			anchoA = parseInt(objA.offsetWidth, 10);
			anchoSpan = parseInt(objSpan.style.width, 10);
			//alert ("anchoContenido=" + anchoContenido + ", posicionA=" + posicionA + ", anchoA=" + anchoA + ", anchoSpan=" + anchoSpan);

			
			seSale = (posicionA + anchoA + anchoSpan + 4) > anchoContenido;

				
			if (seSale) {
					objSpan.style.marginLeft = -(anchoA*1.5 + anchoSpan) + "px";
					//alert(objSpan.style.marginLeft);
			}
			else {
					objSpan.style.marginLeft = "4px";
			}
			
		}
	}
}

function indicarPaginaActual () {
	listaA = document.getElementById("listaBotones").getElementsByTagName("A");
	
	urlPagina = parent.location.href;
	if (urlPagina.toUpperCase().indexOf(".HTML") == -1)  {
		urlPagina += "index.html";
	}
	
	//quitar el #etiqueta que pueda haber al final
	urlPagina = urlPagina.split("#")[0];
	
	for (i=0; i<listaA.length; i++) {
		objA = listaA[i];
		//alert (parent.location.href);
		//alert (urlPagina + "    " + objA.href);
		if (urlPagina == objA.href) {
			//alert (objA.className);
			objA.className = "actual";
		}
	}
}


function escribeFechaModificacion () {
	//document.lastModified devuelve 
	//	dd/mm/aaaa hh:mm:ss -->    08/21/2008 17:13:54
	//		(linux) Chromium 8.0.552.224 (68599) Ubuntu 10.10
	//		(linux) Chrome 8.0.552.224
	//		(W7)	Chrome 8.0.552.224
	//		(W7)	IE 8.0.7600.16385 (64 bits)
	//		(linux) Firefox 3.6.13
	//		(W7)	Firefox 3.6.13
	//	
	//	ddd, dd mmm aaaa hh:mm:ss xxx  -->  Sun, 19 Dec 2010 18:04:15 GMT
	//		(linux) Opera 11.00 (1156)
	//		(W7)	Opera 11.00 (1156)
	//		
	fechaModif=document.lastModified.replace(/ /g,"/").split("/");

	if (esOpera) {
		traduccion = { Jan: "01", Feb: "02", Mar: "03", Apr: "04", May: "05", Jun: "06", Jul: "07", Aug: "08", Sep: "09", Oct: "10", Nov: "11", Dec: "12" };
		dia=fechaModif[1];
		mes=traduccion[fechaModif[2]];
		anio=fechaModif[3];
	}
	else {
		dia=fechaModif[1];
		mes=fechaModif[0];
		anio=fechaModif[2];
	}
	
	document.write("Página actualizada el " + dia + "/" + mes + "/" + anio);
}


function escribeHora () {
	hoy = new Date();
	hora = hoy.getHours();
	minuto = hoy.getMinutes();
	texto = "";
	if (hora<10) texto+= "0";
	texto += hora + ":";
	if (minuto<10) texto+="0";
	texto += minuto;
	
	listaSpan = document.getElementById("fechaActual").getElementsByTagName("SPAN");
	listaSpan[3].innerHTML = texto;
	
	//actualizar también el resto del minicalendario
	listaSpan[0].innerHTML = diasSemana[hoy.getDay()].substr(0,3);
	listaSpan[1].innerHTML = hoy.getDate();
	listaSpan[2].innerHTML = meses[hoy.getMonth()].toUpperCase().substr(0,3);
	
}

function tamanoTexto (como) {
	objDiv = document.getElementById ("contenido");
	//alert (objDiv.style.fontSize);
	if (como=="+") { 
		cant = 0.1;
	}
	else {
		cant = -0.1;
	}
	//alert("tamañoTexto " + objDiv.style.fontSize);
	objDiv.style.fontSize = parseFloat(objDiv.style.fontSize) + cant + "em";		
	escribirCookie ("tamanoTexto", objDiv.style.fontSize);
	corregirGlobos();
}

function escribirCookie (nombre, valor) {
	//Añade el cookie a la lista del documento
	document.cookie = nombre + "=" + encodeURI(valor) + "; expires=" + (new Date(2099,01,01)).toGMTString() ;
}

function leerCookie (nombre) {
	galleta = document.cookie;
	pos = galleta.indexOf(nombre+"=");
	if (pos==-1) {
		return "";
	}
	fin = galleta.indexOf(";", pos);  //posición del primer ; después de nombre
	longNombre=nombre.length;
	if (fin==-1) {
		return decodeURI(galleta.substring(pos+longNombre+1));
	}
	else {
		return decodeURI(galleta.substring(pos+longNombre+1, fin));
	}
}

// lee las preferencias guardadas en cookies, si las hay
function recuperarPreferencias () {
	//tamaño texto
	valor = leerCookie ("tamanoTexto");
	if (valor) {
		//alert ("tamano recuperado " + valor);
		document.getElementById ("contenido").style.fontSize = valor;
	}
	
	//¿abrir enlaces en otra ventana?
	enlacesEnOtraVentana = (leerCookie ("enlacesEnOtraVentana")=="true") ? true : false;
}

function escribeDatosNavegador () {
	if (navegador=="ie") 
		document.write("Internet Explorer " + versionNav);
	else
		if (navegador=="mozilla") 
			document.write("Firefox " + versionNav);
		else
			if (navegador=="opera")
				document.write("Opera " + versionNav);
			else
				if (navegador=="chrome")
					document.write("Google Chrome " + versionNav);
				else
					document.write(navigator.userAgent.toUpperCase());
}

function recomendarActualizacion () {
	recomendar=false;
	
	if ( esExplorer && parseFloat(versionNav) < 7) recomendar=true;
	if ( esMozilla && parseFloat(versionNav) < 3.6) recomendar=true;
	if ( esOpera && parseFloat(versionNav) < 10.51) recomendar=true;
	if ( esChrome && parseFloat(versionNav) < 7) recomendar=true;
	
	
	if (recomendar)
		document.write ("<b>¡¡¡Su navegador está obsoleto!!!</b> Para estar mejor protegido de virus y otros ataques es recomendable usar siempre la versión más actual posible.");
}

function escribeResolucion () {
	document.write (screen.width + " x " + screen.height);
}

function escribeEstadoCookies () {
	if (navigator.cookieEnabled) 
		document.write ('ACEPTA cookies');
	else
		document.write ('NO ACEPTA cookies');
}

function escribeModoEnlaces () {
	enlacesEnOtraVentana = (leerCookie ("enlacesEnOtraVentana")=="true") ? true : false;
	if (enlacesEnOtraVentana)
		document.write ("OTRA");
	else
		document.write ("LA MISMA");
}

function cambiarModoEnlaces () {
	enlacesEnOtraVentana = !enlacesEnOtraVentana;
	escribirCookie ("enlacesEnOtraVentana", enlacesEnOtraVentana ? "true":"false");
	location.reload();
}

function precargarImagenes() {
	//precargar imagenes
	numDIV = document.getElementsByTagName("DIV").length;
	imagen=new Array();
	n=0;
	for (i=0; i<numDIV; i++) {
		objDIV=document.getElementsByTagName("DIV")[i];
		if (objDIV.className.indexOf("miniaturas") >= 0) {  //para cada DIV con miniaturas
			numIMG=objDIV.getElementsByTagName("IMG").length;
			for (j=0; j<numIMG; j++) {
				objIMG=objDIV.getElementsByTagName("IMG")[j];
				pos=objIMG.src.indexOf("imagenes/100/");
				imagen[n] = new Image();
				imagen[n].src = "imagenes/600/" + objIMG.src.substr(pos+13);
				n++;
			}
		}
	}
	objMiniaturaActual = document.getElementById("galeriaLoureiro").getElementsByTagName("IMG")[0];
//alert ('hola ' + new Date().getMinutes() + new Date().getSeconds());
};




function prepararFormulario() {
	//situar el cursor en el primer campo del formulario
	document.frmCorreo.Nombre.focus();
	
	// precargar algunas imagenes para el calendario
	imgFlechaIzda = new Image(); 	imgFlechaIzda.src = "graficos/izquierda.gif"; 
	imgFlechaDcha = new Image();	imgFlechaDcha.src = "graficos/derecha.gif";
	imgCerrar = new Image();		imgCerrar.src = "graficos/cerrar.gif";
};

function mostrarFoto (nombreMarco, miniatura, modoAuto) {

	//si está activa una presentación no permite cambiar a mano 
	if (cronoProyeccion && !modoAuto)
		return;
	
	//desmarcar miniatura actual
	if (objMiniaturaActual)
		objMiniaturaActual.parentNode.className = "";

	marcoFotos = document.getElementById(nombreMarco);
	imagen=marcoFotos.getElementsByTagName("IMG")[0];
	imgMini=miniatura.src;
	pos = imgMini.indexOf("imagenes/100/");
	nuevaURLimagen="imagenes/600/" +imgMini.substr(pos+13);
	//nuevaURLimagen="http://www.villaseverina.es/pruebas/"+nuevaURLimagen;
	imagen.src="graficos/nada.gif";  //para que se vea la imagen de fondo de un círculo dando vueltas mientras carga (en IE)
	imagen.src = nuevaURLimagen;
	//imagen.title = miniatura.title;    --para que siempre diga "pulsar para sig. imagen"
	//while (!imagen.complete);
	marcoTitulo = marcoFotos.getElementsByTagName("SPAN")[0];
	marcoTitulo.innerHTML = miniatura.title;
	objMiniaturaActual = miniatura;
	
	//marcar nueva miniatura actual
	objMiniaturaActual.parentNode.className = "actual";

}

function cambiarGaleria (nombre) {
	objGaleriaNueva = document.getElementById(nombre);
	objGaleriaAnterior = document.getElementById(galeriaAnterior);
	//alert(objGaleriaAnterior.className);
	p=objGaleriaAnterior.className.indexOf(" activa");
	if (p >= 0)
		objGaleriaAnterior.className = objGaleriaAnterior.className.substr(0,p);
	
	objGaleriaNueva.className += " activa";
	
	//desmarcar la miniatura de la galería anterior y marcar la actual
	document.getElementById("mini"+galeriaAnterior).className = "fotoGaleria";
	document.getElementById("mini"+nombre).className = "fotoGaleria fotoGaleriaActual";
	
	galeriaAnterior = nombre;	
	
	//Mostrar la primera foto
	objImg = objGaleriaNueva.getElementsByTagName("IMG")[0];
	mostrarFoto('marco', objImg, true);
}

	
function imagenSiguiente() {
	avanzarImagen(+1, false);
}

function avanzarImagen (cant, modoAuto) { //cant puede ser +1 o -1
	//si está activa una presentación no permite cambiar a mano 
	if (cronoProyeccion && !modoAuto)
		return;
	
	if (objMiniaturaActual == "")
		objMiniaturaActual = document.getElementById("galeriaLoureiro").getElementsByTagName("IMG")[0];
	
	// miniaturas:   div -- ul -- (li -- img -- /li) ... /ul  /div
	imgsGaleriaActual = objMiniaturaActual.parentNode.parentNode.getElementsByTagName("IMG");
	
	//localizar la posición de la miniatura actual
	pos=0;
	while (imgsGaleriaActual[pos].src != objMiniaturaActual.src   &&  pos<imgsGaleriaActual.length) {
		//alert("pos: " + pos + "  " + imgsGaleria[0].src + "  " + objMiniaturaActual.src);
		pos++;
	}	

	
	if (pos+cant >= imgsGaleriaActual.length)
		nuevaPos=0;
	else
		if (pos+cant < 0)
			nuevaPos=imgsGaleriaActual.length-1;
		else
			nuevaPos=pos+cant;
			
	mostrarFoto ('marco', imgsGaleriaActual[nuevaPos], modoAuto);
	
}

function verProyeccion (reiniciar) {
	//si ya está en marcha pararla
	if (cronoProyeccion) {
		parar=true;
		arrancar=reiniciar;
	}
	else {
		parar=false;
		arrancar=true;
	}
	
		
	if (parar) {
		clearInterval (cronoProyeccion);
		cronoProyeccion=null;
		imgProy = document.getElementById("proyector");
		imgProy.src = "graficos/proyectorParado.gif";
		imgProy.title = "Ver proyección \n(las imágenes cambiarán cada " + lapsoProyeccion + " segundos)";
	}
	
	if (arrancar) {
		cronoProyeccion = setInterval("avanzarImagen(1, true)", lapsoProyeccion*1000);  
		imgProy = document.getElementById("proyector");
		imgProy.src = "graficos/proyectorEnMarcha.gif";
		imgProy.title = "Parar proyección \n(las imagenes están cambiando cada " + lapsoProyeccion + " segundos)";
	}
}

function cambiarLapsoProyeccion(incr) {
	lapsoProyeccion += incr;
	if (lapsoProyeccion <= 0) 
		lapsoProyeccion = 1;
	
	document.getElementById("lapsoFotos").innerHTML=lapsoProyeccion + " seg.";
	document.getElementById("proyector").title = "Ver proyección \n(las imágenes cambiarán cada " + lapsoProyeccion + " segundos)";
	if (cronoProyeccion) 
		verProyeccion (true);  //reinicia con nuevo lapso
}

function corregirTituloProyector() {  //el \n no funciona en el title de la página html
	document.getElementById("proyector").title = "Ver proyección \n(las imágenes cambiarán cada " + lapsoProyeccion + " segundos)";
}




// hace que el enlace se abra en una nueva ventana o no.
// por defecto: en la misma, salvo configuración en cookies
function enlaceExterno (objA) {
	if (enlacesEnOtraVentana)
		objA.target = "_blank";
}

// genera el calendario de temporadas alta y baja
// dentro del DIV que se especifique
function calendarioTemporadas (nombreDiv) {
	objDiv = document.getElementById(nombreDiv);

	t = "";
	hoy = new Date();
// hoy=new Date(2010,0,6);  //para probar siendo hoy un día cualquiera
	anio = hoy.getFullYear();
	
	// Mostrar el calendario del año siguiente desde el 20-dic
	if (hoy.getDate() >= 20 && hoy.getMonth()==11) anio+=1;
	
	// !!!!!!!!!!!!!!!!!!!!!!!! OJO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	// Hay que actualizar las temporadas para cada nuevo año
	// en el fichero js/festivos.txt
	if (tempAlta[anio] == null) {
		t += '<p>En breve se podrá consultar aquí mismo el calendario de temporadas alta y baja para ' + anio + '.<br><br>Como norma general, la temporada alta se corresponde con el verano, navidades, puentes, festivos y vísperas de festivos.<br><br></p>';
		t += '<p class="cabecera">Calendario ' + anio + '</p>';
	}
	else 
		t += '<p class="cabecera">Temporadas alta y baja en ' + anio + '</p>';

	numDias[1]= Bisiesto(anio) ? 29 : 28;
	for (mes=0; mes<12; mes++) {
		ajustarFestivos(anio, mes, true); //ajusta carnaval + semana santa
		dia1mes = new Date (anio, mes, 1);
		diaSemDia1mes = dia1mes.getDay(); //0=domingo, ...
		if (diaSemDia1mes==0) diaSemDia1mes=7;
		
		t += '<table class="mesTATB" border="1">';
		t += '<THEAD>';
		t += '<TR><th colspan="7">' + meses[mes] + '</th></tr>';
		t += '<TR><TH>LU</TH> <TH>MA</TH> <TH>MI</TH> <TH>JU</TH> <TH>VI</TH> <TH>SA</TH> <TH class="domingo">DO</TH> </TR>';
		t += '</THEAD>';
		t += '<TBODY>';
		
		col=1;
		fila=0;
		
		// dejar en blanco las celdas anteriores al día 1 de cada mes
		for (i=1; i<diaSemDia1mes; i++) {
			if (i==1) {t += '<TR>'; fila++;}
			t += '<TD>&nbsp</TD>';
			col++;
		}
	

		
		// poner cada día del mes en una celda
		for (i=1; i<=numDias[mes]; i++) {
			if (col==1) {
				t += '<TR>';
				fila++;
			}
			
			clases='';
			titulo='';
			if (col==7) clases += " domingo";
			
			// señalar los festivos
			pos=festivos[mes].indexOf("-"+i+":");
			descripcion="";
			if (pos>=0) {
				desc=festivos[mes].substr(pos);
				pos=desc.indexOf(":");
				desc=desc.substr(pos+1);
				pos=desc.indexOf("-");
				if (pos==-1) {
					descripcion=desc.substr(0);
				}
				else {
					descripcion=desc.substr(0,pos);
				}
				clases += " festivo";
				titulo += descripcion;
			}

			if (i==hoy.getDate() && mes==hoy.getMonth() && anio==hoy.getFullYear()) {
				clases += " hoy";
				titulo += (titulo!="" ? " \n" : "") + "Hoy";
			}

			
			// señalar la temporada alta
			if (tempAlta[anio] != null) {
				pos=tempAlta[anio][mes].indexOf("-"+i+"-");
				if (pos>=0) clases += " TA";
			}	
				
			if (clases != '') clases = ' class="' + clases + '"';
			if (titulo != '') titulo = ' title="' + titulo + '"';
			t += '<TD' + clases + titulo + '>' + i + '</TD>';
			col++;
			if (col==8) {
				col=1;
				t += '</TR>';
			}
		}
		
		if (col>1) {
			for (i=col; i<=7; i++)
				t += '<TD>&nbsp</TD>';
			t += '</TR>';
		}
		
		if (fila<5)
			t += '<TR><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD></TR>';
		if (fila<6)
			t += '<TR><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD><TD>&nbsp</TD></TR>';
		
		t += '</tbody>';
		t += '</table>';

	} 

	t += '<br><br><br><br>';
	t += '<table class="leyendaTBTA">';
	if (tempAlta[anio] != null)
		t += '<tr><td class="TA dia">' + hoy.getDate() + '</td><td class="texto">Temporada Alta</td></tr>';
	
	t += '<tr><td class="festivo dia">' + hoy.getDate() + '</td><td class="texto">Festivo</td></tr>';
	t += '<tr><td class="hoy dia">' + hoy.getDate() + '</td><td class="texto">Hoy</td></tr>';
	t += '<tr><td colspan="2">&nbsp</td></tr>';
	t += '</table>';
	t += '<br>';
		
	objDiv.innerHTML = t;
}

// si las postales que haya en la página de inicio caducaron, no mostrarlas
function postalesEventos ()
{
	hoy = new Date();
//hoy = new Date(2009,1,14);  //descomentar para hacer pruebas
	
	// último día que se muestra: 2009-feb-14
	if (hoy <= new Date(2009, 1, 15)) {
		sv = document.getElementById("sanvalentin");
		if (sv != null)
			sv.style.display="inline";
	}
	
	// último día que se muestra: 2012-feb-12
	if (hoy <= new Date(2012, 1, 13)) {
		fb = document.getElementById("feriabutelo");
		if (fb != null) 
			fb.style.display="inline";
	}
	
	// último día que se muestra: 2009-jun-14
	if (hoy <= new Date(2009, 5, 15)) {
		cc = document.getElementById("corpus");
		if (cc != null) 
			cc.style.display="inline";
	}

	// último día que se muestra: 2010-oct-11
	if (hoy <= new Date(2010, 9, 12)) {
		fb = document.getElementById("Pilar");
		if (fb != null) 
			fb.style.display="inline";
	}

	// último día que se muestra: 2009-dic-08
	if (hoy <= new Date(2009, 11, 9)) {
		cc = document.getElementById("constitucion");
		if (cc != null) 
			cc.style.display="inline";
	}

	// último día que se muestra: 2012-ene-06
	if (hoy <= new Date(2012, 0, 7)) {
		cc = document.getElementById("navidad");
		if (cc != null) 
			cc.style.display="inline";
	}
	
	// último día que se muestra: 2012-may-01
	if (hoy <= new Date(2012, 4, 02)) {
		cc = document.getElementById("EneroFebrero");
		if (cc != null) 
			cc.style.display="inline";
	}

	// último día que se muestra: 2011-mar-25
	if (hoy <= new Date(2011, 2, 26)) {
		cc = document.getElementById("Ruta4x4doButelo");
		if (cc != null) 
			cc.style.display="inline";
	}

	// No Se muestra hasta nuevo aviso
	if (hoy <= new Date(2011, 2, 26)) {
		cc = document.getElementById("mascotas");
		if (cc != null) 
			cc.style.display="inline";
	}

	// Se muestra siempre
	of = document.getElementById("ofertas");
	of.style.display="inline";

}

function escribe_AnioCopyright() 
{   //escribe 2008-2009  (en vez de 2009 el año actual)
	document.write("2008-" + (new Date()).getFullYear());
}


function prepararBotonSkype ()
{
	//cuando se carga la página "contactar" el botón skype siempre va a mostrar el estado que estuviese activo la última
	//vez que se actualizó la página. Si en aquél momento estaba conectado, ahora lo veremos conectado aunque esté desconectado.
	//Para ver el estado actual hay que pulsar F5 para que el navegador recargue toda la página, incluyendo la imagen con el estado
	//del usuario "villaseverina" en Skype, en lugar de usar la de su cache.
	//Para evitar esto, y engañar al navegador, le hacemos creer cada vez siempre que la imagen es distinta, añadiendo un parámetro
	//inventado al final.
	bs = document.getElementById("botonSkype");
	imgBoton=bs.src;
	hoy=new Date();
	numero= hoy.getFullYear() + "" + hoy.getMonth() + "" + hoy.getDate() + "" + hoy.getHours() + "" + hoy.getMinutes() + "" + hoy.getSeconds();
	pos = imgBoton.indexOf("?");
	//alert (imgBoton + "   " + pos);
	if (pos > 0)
		imgBoton = imgBoton.substring(0,pos);
	imgBoton = imgBoton + "?n=" + numero;
	//alert (imgBoton);
	bs.src = imgBoton;
}

