﻿// JScript File
function buscadorHoteles(name) {
  if (name){
    this.name=name;
  }else{
    this.name="buscHot";
  }
  this.fIni  = null;
  this.fFin  = null;
  this.noches = null;
  this.CambiandoFecha = 0;
}
buscadorHoteles.prototype.CalcularDiasFecha = function(origen, inicial) {
//Las líneas comentadas son para que funcione en IE, el objeto this llega con todo a null para este navegador
    if ((this.CambiandoFecha == 0) && document.getElementById('_ctl0_Derecha_Todo_FechasHab_fFin_fecha') /*this.fFin*/) {
        this.CambiandoFecha = 1;
        if (origen == "fecha") {
            var arrayFEnt = document.getElementById('_ctl0_Derecha_Todo_FechasHab_fIni_fecha').value.split("/") //this.fIni.value.split("/");
            var fEnt = new Date(arrayFEnt[2], arrayFEnt[1] - 1, arrayFEnt[0]);
            var arrayFSal = document.getElementById('_ctl0_Derecha_Todo_FechasHab_fFin_fecha').value.split("/") //this.fFin.value.split("/");
            var fSal = new Date(arrayFSal[2], arrayFSal[1] - 1, arrayFSal[0]);
            if (inicial) {
                var dias = document.getElementById('nDiasFiltro').options[document.getElementById('nDiasFiltro').selectedIndex].value; //this.noches.options[this.noches.selectedIndex].value;
                fSal = fEnt;
                for (i = 0; i < dias; i++) {
                    fSal = anadirDia(fSal);
                }
                document.getElementById('_ctl0_Derecha_Todo_FechasHab_fFin_fecha').value /*this.fFin.value*/ = ((fSal.getDate() < 10) ? '0' + fSal.getDate() : fSal.getDate()) + "/" + (fSal.getMonth() + 1) + "/" + fSal.getFullYear();
            } else {
                var dias = 0;
                while (dias < 30 && fEnt < fSal) {
                    dias++;
                    fSal = quitarDia(fSal);
                }
                document.getElementById('nDiasFiltro').value /*this.noches.value*/ = dias;
                if (dias == 30) {
                    document.getElementById('_ctl0_Derecha_Todo_FechasHab_fIni_fecha').value /*this.fIni.value*/ = ((fSal.getDate() < 10) ? '0' + fSal.getDate() : fSal.getDate()) + "/" + (fSal.getMonth() + 1) + "/" + fSal.getFullYear();
                }
            }
        } else if (origen == "dias") {
            var dias = document.getElementById('nDiasFiltro').selectedIndex + 1; //this.noches.selectedIndex;
            var arrayFEnt = document.getElementById('_ctl0_Derecha_Todo_FechasHab_fIni_fecha').value.split("/");  //this.fIni.value.split("/");
            var fEnt = new Date(arrayFEnt[2], arrayFEnt[1] - 1, arrayFEnt[0]);
            var fSal = new Date(arrayFEnt[2], arrayFEnt[1] - 1, parseInt(arrayFEnt[0]) + dias);
            var d = fSal.getDate();
            var year = fEnt.getYear();

            if (year < 1900) {
                year += 1900;
            }
            if ((d >= 1) && (fSal.getMonth() == 0)) {
                if (!fEnt.getMonth() == 0) {
                    year += 1;
                }
            }
            document.getElementById('_ctl0_Derecha_Todo_FechasHab_fFin_fecha').value /*this.fFin.value*/ = ((d < 10) ? '0' + d : d) + "/" + (fSal.getMonth() + 1) + "/" + year;
        }
        this.CambiandoFecha = 0;
    }
}

function anadirDia(fecha){
    var dia = fecha.getDate();
    var mes = fecha.getMonth()+1;
    var ano = fecha.getFullYear();
    dia++;
    if (dia>diasMes(mes,ano)){
        dia=1;
        mes++;
        if (mes>12) {
            mes=1;
            ano++;
        }
    }
    return new Date(ano,mes-1,dia)
}

function diasMes(mes,ano){
    switch(mes){
        case 1:
            return 31;
            break;
        case 3:
            return 31;
            break;
        case 5:
            return 31;
            break;
        case 7:
            return 31;
            break;
        case 8:
            return 31;
            break;
        case 10:
            return 31;
            break;
        case 12:
            return 31;
            break;
        case 4:
            return 30
            break;
        case 6:
            return 30
            break;
        case 9:
            return 30
            break;
        case 11:
            return 30
            break;
        case 2:
            if (Math.floor(ano/4)==(ano/4)){
                return 29
            }else{
                return 28
            }
            break;
   }
}

function quitarDia(fecha){
    var dia = fecha.getDate();
    var mes = fecha.getMonth()+1;
    var ano = fecha.getFullYear();
    dia--;
    if (dia<1){
        mes--;
        if (mes<1) {
            mes=12;
            ano--;
        }
        dia=diasMes(mes,ano);
    }
    return new Date(ano,mes-1,dia)
}
