﻿
// BUSCADOR PAQUETES

function ValidarSeleccion(sender,args)
{
    var cmbFechas = buscarCombo('cmbFechas');
    if (cmbFechas.value != 0)
    {
        args.IsValid = true;
        return;
    }
    else
    {
        args.IsValid = false;
        return;
    }
}

// BUSCADOR SERVICIOS TURÍSTICOS

function ValidarTipoServicioTuristico(sender,args)
{
    var cmbTipo = buscarCombo('cmbTipo');
    if (cmbTipo.value > 0)
    {
        args.IsValid = true;
        return;
    }
    else
    {
        args.IsValid = false;
        return;
    }
}

// BUSCADOR DESTINO

function ValidarCiudad(sender,args)
{
    var cmbPoblacion = buscarCombo('cmbPoblacion');
    if (cmbPoblacion.value > 0)
    {
        args.IsValid = true;
        return;
    }
    else
    {
        args.IsValid = false;
        return;
    }
}

function ValidarDestino(sender,args)
{
    if (hdnDestino.value > 0)
    {
        args.IsValid = true;
        return;
    }
    else
    {
        args.IsValid = false;
        return;
    }
}

function switchCapa(param)
{
    var contenedor;
	contenedor = document.getElementById(param);

    if (contenedor.style.visibility == 'hidden')
    {
       	contenedor.style.visibility = 'visible';
	    contenedor.style.display = 'block'; 
    }
    else
    {
	    contenedor.style.visibility = 'hidden';
	    contenedor.style.display = 'none';
    }
}

function CargandoDestino(sender, e)
{
    imgCargando.style.display = 'block';
}

function DestinoCargado(sender, e)
{
    imgCargando.style.display = 'none';
}

function SeleccionDestino(sender, e)
{
    var cmbPoblacion = buscarCombo('cmbPoblacion');
    setSelectedIndex(cmbPoblacion,0);
    hdnDestino.value = e.get_value();
    //Eliminamos el pais
    txtDestino.value = txtDestino.value.substring(0,txtDestino.value.lastIndexOf('(')-1);
    if(typeof(OnChangePoblacionAvanzado) == 'function') OnChangePoblacionAvanzado();
}

function onClientPopulated(sender, e)
{
    var completionList = $find("bhvDestino").get_completionList();
    var algunDestacado = false;
    for(i=0;i<completionList.childNodes.length;i++)
    {
        var _value = completionList.childNodes[i]._value;
        var IDPoblacion = _value[0];
        var Poblacion = _value[1];
        var Pais = _value[2].toUpperCase();
        var Destacado = _value[3];

        // Para marcar en negrita lo que llevamos escrito
        var prefix = $find("bhvDestino")._currentPrefix.toLowerCase();
        var sValue = Poblacion.toLowerCase();
        if (sValue.indexOf(prefix) != -1)
        {
            var fstr = Poblacion.substring(0, sValue.indexOf(prefix));
            var pstr = Poblacion.substring(fstr.length, fstr.length + prefix.length);
            var estr = Poblacion.substring(fstr.length + prefix.length, Poblacion.length);
            Poblacion = fstr + '<span style="color:red;">' + pstr + '</span>' + estr;
        }

        // Cambiamos el contenido
        if (!Destacado)
        {
            var barra = '';
            if (algunDestacado)
            {
                // Insertamos la barra de separación
                barra = ' style="border-top:dotted 1px #000000;"';
                // No la volvemos a insertar
                algunDestacado = false;
            }
            completionList.childNodes[i].innerHTML = '<table cellpadding="0" cellspacing="3" border="0" width="100%"' + barra +'><tr><td>' + Poblacion + '</td></tr><tr><td>' + Pais + '</td></tr></table>';
        }
        else
        {
            algunDestacado = true;
            completionList.childNodes[i].innerHTML = '<table cellpadding="0" cellspacing="3" border="0" width="100%"><tr><td><b>' + Poblacion + '</b></td></tr><tr><td><b>' + Pais + '</b></td></tr></table>';
        }
    }
    // Ocultamos el cargando
    DestinoCargado(sender, e);
}

function SeleccionDestinoExt(sender, e)
{
    var index = $find("bhvDestino")._selectIndex;
    if(index != -1)
    {
        var _value = $find("bhvDestino").get_completionList().childNodes[index]._value;
        var IDPoblacion = _value[0];
        var Poblacion = _value[1];
        var Pais = _value[2].toUpperCase();
        var Destacado = _value[3];

        // Valor en el textbox
        $find("bhvDestino").get_element().value = Poblacion;

        // Limpiamos el combo
        var cmbPoblacion = buscarCombo('cmbPoblacion');
        setSelectedIndex(cmbPoblacion,0);

        // Valor en el hidden
        hdnDestino.value = IDPoblacion;
    }
    // Opciones avanzadas si procede
    if(typeof(OnChangePoblacionAvanzado) == 'function') OnChangePoblacionAvanzado();
}

function SeleccionPoblacionCombo(sender)
{
    hdnDestino.value = sender.value;
    if(typeof(txtDestino) != "undefined") txtDestino.value = '';
    if(typeof(OnChangePoblacionAvanzado) == 'function') OnChangePoblacionAvanzado();
}

function Limpiar(e)
{
    var keyCode = (document.all) ? e.keyCode : e.which;
    var antDestino = hdnDestino.value;
    if (keyCode != 13) hdnDestino.value = '0';

    if (antDestino != '0')
    {
        if(typeof(OnChangePoblacionAvanzado) == 'function') OnChangePoblacionAvanzado();
    }
}

// BUSCADOR FECHAS

function fechasValidarIntervaloFechas(sender,args)
{
    var fentrada = $find("startDate").get_selectedDate();
    var fsalida = $find("endDate").get_selectedDate();
    var cmbNumNoches = buscarCombo('cmbNumNoches');

    if ((fentrada != null) && (fsalida != null))
    {
        var noches = diffFechas(fentrada,fsalida);
        if (noches>maxValueCombo(cmbNumNoches))
        {
            args.IsValid = false;
            return;
        }
    }
    args.IsValid = true;
    return;
}

function fechasValidarFechasSalidaMayor(sender,args)
{
    var fentrada = $find("startDate").get_selectedDate();
    var fsalida = $find("endDate").get_selectedDate();

    if ((fentrada != null) && (fsalida != null))
    {
        if (fentrada>=fsalida)
        {
            args.IsValid = false;
            return;
        }
    }
    args.IsValid = true;
    return;
}

function fechasValidarFechasDevolucionMayor(sender,args)
{
    var fentrada = $find("startDate").get_selectedDate();
    var fsalida = $find("endDate").get_selectedDate();

    if ((fentrada != null) && (fsalida != null))
    {
        if (fentrada>fsalida)
        {
            args.IsValid = false;
            return;
        }
    }
    args.IsValid = true;
    return;
}

function fechasValidarFechasEntradaAnt(sender,args)
{
    var fentrada = $find("startDate").get_selectedDate();

    if (fentrada != null)
    {
        if (fentrada < hoy())
        {
            args.IsValid = false;
            return;
        }
    }
    args.IsValid = true;
    return;
}

function fechasValidarFechasOblig(sender,args)
{
    var fentrada = $find("startDate").get_selectedDate();
    var fsalida = $find("endDate").get_selectedDate();

    if ((fentrada != null) && (fsalida != null))
    {
        args.IsValid = true;
        return;
    }
    else
    {
        args.IsValid = false;
        return;
    }
}

function fechasValidarFechasObligTextBox(sender,args)
{
    var fentrada = buscarObjeto("txtFechaEntrada",'text');
    
    if (fentrada.value != "")
    {
        args.IsValid = true;
        return;
    }
    else
    {
        args.IsValid = false;
        return;
    }
}

function fechasOnChangeNoches()
{
    var cmbNumNoches = buscarCombo('cmbNumNoches');
    var noches = cmbNumNoches.value;
    var fentrada = $find("startDate").get_selectedDate();

    if ((fentrada != null) && (noches>0))
    {
        $find("endDate").set_selectedDate(addFecha(fentrada,noches));
    }
}

function fechasOnBlurFechaEntrada(param)
{
    var fecha = param.value.replace(/_/g,"");
    var array = fecha.split("/")
    if (array[2].length == 2)
    {
        array[2] = "20" + array[2];
    }
    if (array[2].length == 0)
    {
        array[2] = hoy().getYear();
    }
    fecha = array[0]+"/"+array[1]+"/"+array[2];
    if (isDate(fecha))
    {
        var fentrada = new Date(array[2],array[1]-1,array[0]);
        var fsalida = $find("endDate").get_selectedDate();
        var cmbNumNoches = buscarCombo('cmbNumNoches');

        if ((fentrada != null) && (fsalida != null))
        {
            var noches = diffFechas(fentrada,fsalida);
            if ((noches<=0) || (noches>maxValueCombo(cmbNumNoches)))
            {
                $find("endDate").set_selectedDate(addFecha(fentrada,1));
                setSelectedValue(cmbNumNoches,parseInt(1));
            }
            else
            {
                setSelectedValue(cmbNumNoches,noches);
            }
        }

        if ((fentrada != null) && (fsalida == null))
        {
            $find("endDate").set_selectedDate(addFecha(fentrada,1));
            setSelectedValue(cmbNumNoches,parseInt(1));
        }
    }
}

function fechasOnBlurFechaSalida(param)
{
    var fecha = param.value.replace(/_/g,"");
    var array = fecha.split("/")
    if (array[2].length == 2)
    {
        array[2] = "20" + array[2];
    }
    if (array[2].length == 0)
    {
        array[2] = hoy().getYear();
    }
    fecha = array[0]+"/"+array[1]+"/"+array[2];
    if (isDate(fecha))
    {
        var fentrada = $find("startDate").get_selectedDate();
        var fsalida = new Date(array[2],array[1]-1,array[0]);
        var cmbNumNoches = buscarCombo('cmbNumNoches');

        if ((fentrada != null) && (fsalida != null))
        {
            var noches = diffFechas(fentrada,fsalida);
            if ((noches<=0) || (noches>maxValueCombo(cmbNumNoches)))
            {
                $find("endDate").set_selectedDate(addFecha(fentrada,1));
                setSelectedValue(cmbNumNoches,parseInt(1));
            }
            else
            {
                setSelectedValue(cmbNumNoches,noches);
            }
        }
    }
}

function fechasActualizarNoches(sender, args)
{
    var fentrada = $find("startDate").get_selectedDate();
    var fsalida = $find("endDate").get_selectedDate();
    var cmbNumNoches = buscarCombo('cmbNumNoches');

    if ((fentrada != null) && (fsalida != null))
    {
        var noches = diffFechas(fentrada,fsalida);
        if ((noches<=0) || (noches>maxValueCombo(cmbNumNoches)))
        {
            //setSelectedIndex(cmbNumNoches,0);
            $find("endDate").set_selectedDate(addFecha(fentrada,1));
            setSelectedValue(cmbNumNoches,parseInt(1));
        }
        else
        {
            setSelectedValue(cmbNumNoches,noches);
        }
    }

    if ((fentrada != null) && (fsalida == null))
    {
        $find("endDate").set_selectedDate(addFecha(fentrada,1));
        setSelectedValue(cmbNumNoches,parseInt(1));
    }
}

function fechasOnBlurFechaEntrega(param)
{
    var fecha = param.value.replace(/_/g,"");
    var array = fecha.split("/")
    if (array[2].length == 2)
    {
        array[2] = "20" + array[2];
    }
    if (array[2].length == 0)
    {
        array[2] = hoy().getYear();
    }
    fecha = array[0]+"/"+array[1]+"/"+array[2];
    if (isDate(fecha))
    {
        var fentrada = new Date(array[2],array[1]-1,array[0]);
        var fsalida = $find("endDate").get_selectedDate();

        if ((fentrada != null) && (fsalida != null))
        {
            var noches = diffFechas(fentrada,fsalida);
            if ((noches<=0))
            {
                $find("endDate").set_selectedDate(addFecha(fentrada,1));
            }
        }
    }
}

function fechasOnBlurFechaDevolucion(param)
{
    var fecha = param.value.replace(/_/g,"");
    var array = fecha.split("/")
    if (array[2].length == 2)
    {
        array[2] = "20" + array[2];
    }
    if (array[2].length == 0)
    {
        array[2] = hoy().getYear();
    }
    fecha = array[0]+"/"+array[1]+"/"+array[2];
    if (isDate(fecha))
    {
        var fentrada = $find("startDate").get_selectedDate();
        var fsalida = new Date(array[2],array[1]-1,array[0]);

        if ((fentrada != null) && (fsalida != null))
        {
            var noches = diffFechas(fentrada,fsalida);
            if ((noches<=0))
            {
                $find("endDate").set_selectedDate(addFecha(fentrada,0));
            }
        }
    }
}

// BUSCADOR SRD 1001

function compruebaFechas(objeto) {
	s_FormateaFecha(objeto);
	//sumarDiasAFecha(document.buscar_hoteles.dt_entrada.value,document.buscar_hoteles.txt_num_noches.value,document.buscar_hoteles.dt_salida);
}

function s_FormateaFecha(campo_) {
	var valor_anterior;
	valor_anterior = campo_.value;
	if (valor_anterior!=''){
		if (campo_.value.length == 6 && campo_.value.indexOf('/')==-1) {
			campo_.value = campo_.value.substr(0,2) + '/' + campo_.value.substr(2,2) + '/20' + campo_.value.substr(4,2);
		}
		if (campo_.value.length == 8 && campo_.value.indexOf('/')==-1) {
			campo_.value = campo_.value.substr(0,2) + '/' + campo_.value.substr(2,2) + '/' + campo_.value.substr(4,4);
		}
		
		if (f_ValFechas(campo_.value)){
			
		} else {
			alert('La fecha introducida no es correcta.');
			campo_.value = valor_anterior;
			campo_.focus();
		}
	}
}

function f_ValFechas(caja){ 
   if (caja){  
      borrar = caja;
      if ((caja.substr(2,1) == "/") && (caja.substr(5,1) == "/")){      
         for (i=0; i<10; i++){	
            if (((caja.substr(i,1)<"0") || (caja.substr(i,1)>"9")) && (i != 2) && (i != 5)){
               borrar = '';
               break;  
			}  
         }
	     if (borrar){ 
	        a = caja.substr(6,4);
		    m = caja.substr(3,2);
		    d = caja.substr(0,2);
		    if((a < 1900) || (a > 2050) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
		       borrar = '';
		    else{
		       if((a%4 != 0) && (m == 2) && (d > 28))	   
		          borrar = ''; // Año no viciesto y es febrero y el dia es mayor a 28
			   else{
		          if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
			         borrar = '';	      				  	 
			   }
		    }
         }
      }    			
	  else
	     borrar = '';
	  if (borrar == '') {
	     return false;
	  } else {
	  	 return true;
	  }
   }
}

// BUSCADOR OCUPACION

function ocupacionValidarOcupacion(sender,args)
{
    for (var i=1;i<=4;i++)
    {
        if (i==1)
        {
            if (!ocupacionValidarOcupacionFila(i))
            {
                args.IsValid = false;
                return;
            }
        }
        else
        {
            var fila = ocupacionGetLinea(i);
            if (fila.style.visibility == 'visible')
            {
                if (!ocupacionValidarOcupacionFila(i))
                {
                    args.IsValid = false;
                    return;
                }
            }
        }
    }
    args.IsValid = true;
}

function ocupacionValidarOcupacionFila(param)
{
    var cmbAdultos = buscarCombo('cmbNumAdu'+param);
    var cmbNinos = buscarCombo('cmbNumNin'+param);
    if ((cmbAdultos.value<=0) && (cmbNinos.value<=0))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function ocupacionValidarOcupacionMin(sender,args)
{
    var param = 1;
    var cmbAdultos = buscarCombo('cmbNumAdu'+param);
    var cmbNinos = buscarCombo('cmbNumNin'+param);
    if ((cmbAdultos.value<=0) && (cmbNinos.value<=0))
    {
        args.IsValid = false;
        return;
    }
    else
    {
        args.IsValid = true;
        return;
    }
}

function ocupacionValidarEdades(sender,args)
{
    for (var i=1;i<=4;i++)
    {
        if (i==1)
        {
            if (!ocupacionValidarEdadesFila(i))
            {
                args.IsValid = false;
                return;
            }
        }
        else
        {
            var fila = ocupacionGetLinea(i);
            if (fila.style.visibility == 'visible')
            {
                if (!ocupacionValidarEdadesFila(i))
                {
                    args.IsValid = false;
                    return;
                }
            }
        }
    }
    args.IsValid = true;
}

function ocupacionValidarEdadesFila(param)
{
    var combo = buscarCombo('cmbNumNin'+param);
    for (var i=1;i<=combo.value;i++)
    {
        var edad = buscarCombo('cmbEdad'+param+'_'+i);
        if (edad.value<0) return false;
    }
    return true;
}

function ocupacionValidarEdadesMin(sender,args)
{
    var param = 1;
    var combo = buscarCombo('cmbNumNin'+param);
    for (var i=1;i<=combo.value;i++)
    {
        var edad = buscarCombo('cmbEdad'+param+'_'+i);
        if (edad.value<0)
        {
            args.IsValid = false;
            return;
        }
    }
    args.IsValid = true;
    return;
}

function ocupacionSetLinea(param)
{
    if (param != null)
    {
        var fila = param.value;
        for (var i=1;i<=4;i++)
        {
            if (i<=fila)
            {
                ocupacionMostrarLineaEdades(i);
            }
            else
            {
                ocupacionOcultarLinea(i);
            }
        }
    }
}

function ocupacionProcesarLinea(param)
{
    var fila = param.value;
    for (var i=1;i<=4;i++)
    {
        if (i<=fila)
        {
            if (i!=1) ocupacionMostrarLinea(i);
        }
        else
        {
            ocupacionOcultarLinea(i);
        }
    }
}

function ocupacionMostrarLinea(param)
{
    var fila;
    fila = ocupacionGetLinea(param);
    fila.style.visibility = 'visible';
    fila.style.display = 'block';
}

function ocupacionMostrarLineaEdades(param)
{
    var cmbNinos = buscarCombo('cmbNumNin'+param);
    ocupacionMostrarEdades(cmbNinos);

    if (param!=1)
    {
        var fila;
        fila = ocupacionGetLinea(param);
        fila.style.visibility = 'visible';
        fila.style.display = 'block';
    }
}

function ocupacionOcultarLinea(param)
{
    var cmbAdultos = buscarCombo('cmbNumAdu'+param);
    setSelectedIndex(cmbAdultos,0);
    var cmbNinos = buscarCombo('cmbNumNin'+param);
    setSelectedIndex(cmbNinos,0);
    ocupacionMostrarEdades(cmbNinos);

    var fila;
    fila = ocupacionGetLinea(param);
    fila.style.visibility = 'hidden';
    fila.style.display = 'none';
}

function ocupacionGetLinea(param)
{
    var fila;
    switch(param)
    {
        case 2:
            fila = pnlLinea2;
            break;
        case 3:
            fila = pnlLinea3;
            break;
        case 4:
            fila = pnlLinea4;
            break;
    }
    return fila;
}

function ocupacionMostrarEdades(param)
{
    var fila = param.id.charAt(param.id.length-1);
    var valor = param.value;

    for (var i=1;i<=3;i++)
    {
        var combo = buscarCombo('cmbEdad'+fila+'_'+i);
        if (i<=valor)
        {
            combo.style.visibility = 'visible';
        }
        else
        {
            combo.style.visibility = 'hidden';
	        setSelectedIndex(combo,0);
        }
    }
    ocupacionMostrarOcultarLabelEdades();
}

function ocupacionMostrarOcultarLabelEdades()
{
    var total = parseInt(0);
    total += parseInt(cmbNumNin1.value);
    total += parseInt(cmbNumNin2.value);
    total += parseInt(cmbNumNin3.value);
    total += parseInt(cmbNumNin4.value);

    if (total == -4)
    {
        lblEdades.style.visibility = 'hidden';
    }
    else
    {
        lblEdades.style.visibility = 'visible';
    }
}

function ocupacionMostrarEdadesMin(param)
{
    var fila = param.id.charAt(param.id.length-1);
    var valor = param.value;

    for (var i=1;i<=3;i++)
    {
        var combo = buscarCombo('cmbEdad'+fila+'_'+i);
        if (i<=valor)
        {
            combo.style.display = 'block';
        }
        else
        {
            combo.style.display = 'none';
	        setSelectedIndex(combo,0);
        }
    }
    if (valor > 0)
    {
        lblEdades.style.display = 'block';
    }
    else
    {
        lblEdades.style.display = 'none';
    }
}

function ocupacionMostrarEdadesEntradas(param)
{
    var fila = param.id.charAt(param.id.length-1);
    var valor = param.value;

    for (var i=1;i<=3;i++)
    {
        var combo = buscarCombo('cmbEdad'+fila+'_'+i);
        if (i<=valor)
        {
            combo.style.visibility = 'visible';
        }
        else
        {
            combo.style.visibility = 'hidden';
	        setSelectedIndex(combo,0);
        }
    }
    ocupacionMostrarOcultarLabelEdadesEntradas();
}

function ocupacionMostrarOcultarLabelEdadesEntradas()
{
    var total = parseInt(0);
    total += parseInt(cmbNumNin1.value);

    if (total == -1)
    {
        lblEdades.style.visibility = 'hidden';
    }
    else
    {
        lblEdades.style.visibility = 'visible';
    }
}

function ocupacionValidarOcupacionEntradas(sender,args)
{
    args.IsValid = ocupacionValidarOcupacionFila(1);
    return;
}

function ocupacionValidarEdadesEntradas(sender,args)
{
    args.IsValid = ocupacionValidarEdadesFila(1);
    return;
}

// GENERAL

function buscarObjeto(nombre,tipo)
{
    var re = new RegExp(nombre);
    for (var i=0;i<document.forms[0].elements.length;i++)
    {
        elm = document.forms[0].elements[i];
        if (elm.type == tipo)
        {
            if (re.test(elm.name))
            {
                return elm;
            }
        }
    }
}

function buscarCombo(nombre)
{
    return buscarObjeto(nombre,'select-one');
}

function maxValueCombo(s)
{
    var max = parseInt(0);
    if ((typeof(s) != "undefined") && (s != null))
    {
        for (var i=0;i<s.options.length;i++)
        {
            if (parseInt(s.options[i].value) > parseInt(max))
            {
                max = parseInt(s.options[i].value);
            }
        }
    }
    else
    {
        max = 999; //Sin límite
    }
    return max;
}

// FECHAS

function isDate(param)
{
    if (!isNaN(Date.parse(param)))
    {
       return true;
    }
    else
    {
        return false;
    }
}

function diffFechas(paramFechaEntrada,paramFechaSalida)
{
    if ((paramFechaEntrada != null) && (paramFechaSalida != null))
    {
        var diff = Math.abs(paramFechaEntrada - paramFechaSalida);
        var daysDiff = Math.floor(diff / 1000 / 60 / 60 / 24);

        if ((paramFechaEntrada - paramFechaSalida) < 0)
        {
            return parseInt(daysDiff);
        }
        else
        {
            return parseInt(0);
        }
    }
}

function addFecha(paramFecha,paramDias)
{
    if (paramDias == null) paramDias = 1;
    if (paramFecha != null)
    {
        var tempFecha = new Date(paramFecha.getTime());
        tempFecha.setDate(paramFecha.getDate()+parseInt(paramDias));
        return tempFecha;
    }
}

function hoy()
{
    var today_date=new Date();
    var month=today_date.getMonth();
    var today=today_date.getDate();
    var year=today_date.getYear();

    return new Date(year,month,today);
}

function validarEmail(valor)
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))
    {
        return (true);
    }
    else
    {
        return (false);
    }
}
