
	/**
    * funcion que valida que una cadena de texto podría ser una direción de email
    * argumento valor > cadena de texto introducida por el usuario
    */

	function formatoEmail(valor) {
		if (valor.length>0){
			if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(valor)){
				return (true);
			}
			else{
				return (false);
			}
		}else return (true);
	}

	/**
    * funcion que valida que una cadena de texto podría ser un código postal
    * argumento valor > cadena de texto introducida por el usuario
    */

	function formatoURL(valor){
		if (valor.substring(0,7)=="http://")
		{
			return (true);
		}
		else
		{
			return (false);
		}
	}

	function formatoCP(valor){
		var reg = new RegExp("^([0-9]{5}){0,1}$","g");
		if (!reg.test(valor)) {
			return(false);
		}
		return(true);
	}

	/**
    * funcion que valida que una cadena de texto podría ser un  número de teléfono
    * argumento valor > cadena de texto introducida por el usuario
    */

	function formatoTlf(valor){
		var reg = new RegExp("^([0-9]{9,}){0,1}$");

		if (!reg.test(valor)) {
			return false;
		}
		return true;
	}

	 /**
    * funcion que valida que una cadena de texto no contenga espacios
    * argumento valor > cadena de texto introducida por el usuario
    */

	function formatoCadena(valor){
		var s = valor;
		//si esta vacio
		if ((s == null) || (s.length == 0)){
			return true;
		}
		//si tiene caracteres que no son espacios
		for (i = 0; i < s.length; i++){
			if (s.charAt(i) != " ") return false;
		}
		return true;
	}

    /**
    * definimos las variables globales que van a contener la fecha completa, cada una de sus partes
    * y los dias correspondientes al mes de febrero segun sea el año bisiesto o no
    */
    var a, mes, dia, anyo, febrero;

    /**
    * funcion para comprobar si una año es bisiesto
    * argumento anyo > año extraido de la fecha introducida por el usuario
    */
    function anyoBisiesto(anyo)
    {
        /**
        * si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
        */
        if (anyo < 100)
            var fin = anyo + 2000;
        else
            var fin = anyo ;

        /*
        * primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
        * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (fin % 4 != 0)
            return false;
        else
        {
            if (fin % 100 == 0)
            {
                /**
                * si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (fin % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el año es bisiesto
            */
            else
            {
                return true;
            }
        }
    }

    /**
    * funcion principal de validacion de la fecha
    * argumento valor > cadena de texto de la fecha introducida por el usuario
    */
    function formatoFecha(valor)
    {
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y año
       */
       a=valor;
       anyo=a.split("-")[0];
       mes=a.split("-")[1];
       dia=a.split("-")[2];

       formato_fecha=true;
	   if (valor){
		if (isNaN(dia)) formato_fecha=false;
		if (isNaN(mes)) formato_fecha=false;
		if (isNaN(anyo)) formato_fecha=false;
	   }
	   if (formato_fecha==false){
			return false;
	   }

	   if (anyo.length!=4) return false;
	   if (mes.length!=2 ) return false;
	   if (dia.length!=2 ) return false;

       if(anyoBisiesto(anyo))
           febrero=29;
       else
           febrero=28;
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente
       * al año introducido > alertamos y detenemos ejecucion
       */
       if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           return false;
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           return false;
       }
       /**
       * en caso de que todo sea correcto > enviamos los datos del formulario
       */
       else
		  return true;
    }

	function formatoFechaES(valor)
    {
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y año
       */
       a=valor;
	   dia=a.split("-")[0];
	   mes=a.split("-")[1];
       anyo=a.split("-")[2];

       formato_fecha=true;
	   if (valor){
		if (isNaN(dia)) formato_fecha=false;
		if (isNaN(mes)) formato_fecha=false;
		if (isNaN(anyo)) formato_fecha=false;
	   }
	   if (formato_fecha==false){
			return false;
	   }

	   if (anyo.length!=4) return false;
	   if (mes.length!=2 ) return false;
	   if (dia.length!=2 ) return false;

       if(anyoBisiesto(anyo))
           febrero=29;
       else
           febrero=28;
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente
       * al año introducido > alertamos y detenemos ejecucion
       */
       if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           return false;
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           return false;
       }
       /**
       * en caso de que todo sea correcto > enviamos los datos del formulario
       */
       else
		  return true;
    }


function formatoAno( var_ano )
{
	var longitud = var_ano.value.length;
	var ano 	 = var_ano.value;

	if (longitud==4)
	{
		var anoInt=parseInt(ano);
		var pDigito=ano.substring(1,2);
		var sDigito=ano.substring(2,3);
		var tDigito=ano.substring(3,4);

		var d1=parseInt(pDigito);
		var d2=parseInt(sDigito);
		var d3=parseInt(tDigito);

		if 	(isNaN(anoInt)==false && isNaN(d1)==false && isNaN(d2)==false && isNaN(d3)==false)
		{
			return true;
		}
		else
		{
			alert ("Debe introducir correctamente o ano, Ex:2006.");
			var_ano.focus();
			return false;
		}
	}else if (longitud==0){
		return true;
	}
	else{
		alert ("Debe introducir correctamente o ano, Ex:2006.");
		var_ano.focus();
		return false;
	}
	return true;
}

/* Realiza cambios dinámicos de valores de campos en relación a otros */

var tipo_instalacion = new Array();
tipo_instalacion[1]="Vivienda unifamiliar";
tipo_instalacion[2]="Vivienda multifamiliar";
tipo_instalacion[3]="Hospital o clínica";
tipo_instalacion[4]="Hotel 4*";
tipo_instalacion[5]="Hotel 3*";
tipo_instalacion[6]="Hotel 2* / Hostal 2*";
tipo_instalacion[7]="Camping";
tipo_instalacion[8]="Hostal 1* / Pensión 1*";
tipo_instalacion[9]="Residencia (ancianos, estudiantes,...)";
tipo_instalacion[10]="Vestuarios / Duchas colectivas";
tipo_instalacion[11]="Escuela";
tipo_instalacion[12]="Cuarteles";
tipo_instalacion[13]="Fábricas y talleres";
tipo_instalacion[14]="Administrativos";
tipo_instalacion[15]="Gimnasio";
tipo_instalacion[16]="Lavandería";
tipo_instalacion[17]="Restaurante";
tipo_instalacion[18]="Cafetería";
tipo_instalacion[19]="Otros";

var demanda = new Array();
demanda[1]="personas";
demanda[2]="personas";
demanda[3]="camas";
demanda[4]="camas";
demanda[5]="camas";
demanda[6]="camas";
demanda[7]="emplazamientos";
demanda[8]="camas";
demanda[9]="camas";
demanda[10]="servicios";
demanda[11]="alumnos";
demanda[12]="personas";
demanda[13]="personas";
demanda[14]="personas";
demanda[15]="usuarios";
demanda[16]="kg de ropa";
demanda[17]="comidas";
demanda[18]="almuerzos";
demanda[19]="";

var meses = new Array();
meses[1]="Enero";
meses[2]="Febrero";
meses[3]="Marzo";
meses[4]="Abril";
meses[5]="Mayo";
meses[6]="Junio";
meses[7]="Julio";
meses[8]="Agosto";
meses[9]="Septiembre";
meses[10]="Octubre";
meses[11]="Noviembre";
meses[12]="Diciembre";

var estacional_pre = "estacional_";

function goTrickLoad(id_control,es_o_no_es) {
	if (id_control == "tipo_instalacion") {
		var valor_nuevo = document.getElementById(id_control).value;
		if (tipo_instalacion[valor_nuevo] == "Otros" && document.getElementById("demanda").value != "" && (!document.getElementById("demanda").disabled || es_o_no_es)) {
			return true;
		}
		else {
			document.getElementById("demanda").value = demanda[valor_nuevo];
			if (document.getElementById("demanda").value == "") {
				document.getElementById("demanda").disabled = false;
			}
			else {
				document.getElementById("demanda").disabled = true;
			}
			return true;
		}
	}
	else {
		return true;
	}
}

function goTrick(id_control) {
	if (id_control == "tipo_instalacion") {
		var valor_nuevo = document.getElementById(id_control).value;
		if (tipo_instalacion[valor_nuevo] == "Otros" && document.getElementById("demanda").value != "" && !document.getElementById("demanda").disabled) {
			return true;
		}
		else {
			document.getElementById("demanda").value = demanda[valor_nuevo];
			if (document.getElementById("demanda").value == "") {
				document.getElementById("demanda").disabled = false;
			}
			else {
				document.getElementById("demanda").disabled = true;
			}
			return true;
		}
	}
	else {
		return true;
	}
}

function goTrickChecksMeses(objeto) {
	if (objeto.checked == true) {
		document.getElementById(estacional_pre + objeto.id).checked = true;
	}
	else {
		document.getElementById(estacional_pre + objeto.id).checked = false;
	}
}

function updateMonths() {
	for (i=1;i<=12;i++) {
		if (document.getElementById(estacional_pre + meses[i]).checked == true) {
			document.getElementById(meses[i]).checked = true;
		}
		else {
			document.getElementById(meses[i]).checked = false;
		}
	}
}

function alCargar(es_o_no_es) {
	goTrickLoad("tipo_instalacion",es_o_no_es);
	updateMonths();
}
