﻿function buscadorPaquetes(name) {
  if (name){
    this.name=name;
  }else{
    this.name="xmlDoc";
  }
  this.diaSalidaStr  = new Array();
  this.diaSalidaDate = new Array();
  this.xmlDocSinVuelo = new XMLRemoteRequest("xmlDocSinVuelo");
  this.xmlDocZonas    = new XMLRemoteRequest("xmlDocZonas");
  this.xmlDocFechas   = new XMLRemoteRequest("xmlDocFechas");
  this.xmlDocEstancias = new XMLRemoteRequest("xmlDocEstancias");
  this.xmlDocDestinos = new XMLRemoteRequest("xmlDocDestinos");
  this.msgSeleccione = "Seleccione";
  this.msgSinVuelo = "Sin Vuelo";
  this.msgMargen = "Mensaje margen";
  this.msgFaltaDest = "Falta destino";
  this.msgFaltaOri = "Falta origen";
  this.msgFaltaFecha = "Falta fecha";
  this.msgFaltaEst = "Falta estancia";


  /*inicializacion de valores del buscador*/
  this.idPaquete = "";
  this.tipoPaquete = "";
  this.Destino = "?";
  this.Origen = "?";
  this.Fecha = null;
  this.Estancia = "?";
  this.margen = 0;
  this.ClaseProducto = "";
  this.buscarPre = true;
  this.buscarPae = true;
  this.buscarDin = true;
  this.RedirigirA = "/rPaquetes/Listado.aspx";
  this.RedirigirSinDisponibilidadA = "/listadoProducto/listadoProducto.aspx";
  this.FormatoFecha = "dd/MM/yyyy";

  
  /*id's Selectores*/
  this.Form = "frmMain";
  this.idSelectorOrigen = "";
  this.idSelectorDestino = "";
  this.idLabelSinVuelo = "";
  this.idSelectorEstancia = "";
  this.idSelectorFecha = "";
  this.idSelectorHabitaciones = "";
  
}
      
buscadorPaquetes.prototype.disableAll = function (){
  this.diaSalidaStr  = new Array();
  this.diaSalidaDate = new Array();
  document.getElementById(this.idLabelSinVuelo).style.display = 'none'
  document.getElementById(this.idSelectorOrigen).style.display = 'block'
  nodeRemoveAllChilds(this.idSelectorOrigen)
  document.getElementById(this.idSelectorOrigen).disabled = true;
  eval(this.idSelectorFecha + '_ActivarDesactivar(false)');
  document.getElementById(this.idSelectorEstancia).disabled = true;
}

buscadorPaquetes.prototype.ObtenerDestinos = function() {
  this.disableAll();
  var cmb = document.getElementById(this.idSelectorDestino);
  nodeRemoveAllChilds(this.idSelectorDestino)
  this.xmlDocDestinos.getRemoteDocument("/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epdest&clp=" + this.ClaseProducto + "&mrg=" + this.margen + "&y=" + Math.random());
  var opt = document.createElement('option');
  opt.value = "?"; 
  opt.innerHTML = this.msgSeleccione;
  cmb.appendChild(opt);
  var list = this.xmlDocDestinos.selectNodes("xml/zon")
  for (i = 0; i < list.length; i++){
    opt = document.createElement('option');
    opt.value = list[i].getAttribute('cod'); 
    opt.innerHTML = list[i].getAttribute('nom');
    cmb.appendChild(opt);
  }
  document.getElementById(this.idSelectorDestino).style.display = 'block';
}
     
buscadorPaquetes.prototype.actualizarOrigen = function (actualizarFechas){
  if (this.idPaquete == "") this.Destino = cmbGetValue(this.idSelectorDestino);
  this.disableAll();
  nodeRemoveAllChilds(this.idSelectorOrigen)
  nodeRemoveAllChilds(this.idSelectorEstancia)
  var cmb = document.getElementById(this.idSelectorOrigen);
  if (this.Destino != '?') {
    var opt = document.createElement('option');
    opt.value = '?'; 
    opt.innerHTML = this.msgSeleccione;
    cmb.appendChild(opt);
    this.xmlDocZonas.getRemoteDocument("/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epori&dest=" + this.Destino + "&clp=" + this.ClaseProducto + "&y=" + Math.random());
    var list = this.xmlDocZonas.selectNodes("xml/zon");
    //Lo primero es comprobar si nos devuelve sinVuelo, asi lo pintamos en primer lugar  
    for (var i = 0; i < list.length; i++){
      if(list[i].getAttribute("cod") == "-1"){
        opt = document.createElement('option');
        opt.value = '-1'; 
        opt.innerHTML = this.msgSinVuelo;
        cmb.appendChild(opt); 
      }
    }
    cmbSelectValue(this.idSelectorOrigen, '-1');
    
    if (list.length > 0) {
        for (var i = 0; i < list.length; i++){
          //Aquí ya hemos añadido sinVuelo no hay que volverlo a sacar.
          if(list[i].getAttribute("cod") != "-1"){
            opt = document.createElement('option');
            opt.value = list[i].getAttribute('cod'); 
            opt.innerHTML = list[i].getAttribute('nom');
            cmb.appendChild(opt);
            cmbSelectValue(this.idSelectorOrigen, '-1');
          }
        }
        document.getElementById(this.idLabelSinVuelo).style.display = 'none'
        cmb.style.display = 'block'
        if(list.length >= 1){ 
          if(cmb.options[cmb.selectedIndex].value == "-1"){ // Solo hay uno (miramos si es sin vuelo)
            cmbSelectValue(this.idSelectorOrigen, '-1'); 
            if (list.length == 1){ 
              cmb.style.display = 'none'
              document.getElementById(this.idLabelSinVuelo).style.display = 'block'
            }else{
                cmbSelectValue(this.idSelectorOrigen, this.Origen);              
            }
            if (actualizarFechas!=false) this.actualizarFechas();
          }
        }
    }else{
      opt = document.createElement('option');
      opt.value = '-1'; 
      opt.innerHTML = this.msgSinVuelo;
      cmb.appendChild(opt);
      cmbSelectValue(this.idSelectorOrigen, '-1');
      document.getElementById(this.idSelectorOrigen).style.display = 'none'
      document.getElementById(this.idLabelSinVuelo).style.display = 'block'
      if (actualizarFechas != false)  this.actualizarFechas();
    }
    document.getElementById(this.idSelectorOrigen).disabled = false;
  }
}
    
buscadorPaquetes.prototype.actualizarFechas = function (actualizarEstancias){
  var fechaMin = new Date();
  var fechaMax = new Date();
  var f = '';
  if (this.idPaquete == '' || (this.tipoPaquete !="pre")) { this.Origen = cmbGetValue(this.idSelectorOrigen); } else {this.Origen = -1}
  document.getElementById(this.idSelectorEstancia).disabled = true;
  eval(this.idSelectorFecha + '_ActivarDesactivar(false)');
  if (this.Destino != '?' && this.Origen !='?'){
    this.resetFecini();
    this.xmlDocFechas.getRemoteDocument("/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epfec&dest=" + this.Destino + "&ori=" + this.Origen + "&clp=" + this.ClaseProducto + "&mrg=" + this.margen + "&id=" + this.idPaquete +  "&tipo=" + this.tipoPaquete + "&y=" + Math.random());
    var list = this.xmlDocFechas.selectNodes("xml/fec")
    if (list.length == 0) {
        eval(this.idSelectorFecha + "_ActualizarDiasActivos(new Array())");   
    }else{
      for (var i = 0; i < list.length; i++) 
      {
        this.diaSalidaStr[i] = list[i].getAttribute('txt');
        this.diaSalidaDate[i] = new Date(this.diaSalidaStr[i]);
      }
      this.diaSalidaStr = this.diaSalidaStr.sort();
      document.getElementById(this.idSelectorFecha + "_campoFecha").value = '';
      eval(this.idSelectorFecha + "_ActualizarDiasActivos(this.diaSalidaDate)");   
      eval(this.idSelectorFecha + '_ActivarDesactivar(true)');
      document.getElementById(this.idSelectorFecha + "_functionOnClose").value = this.name + ".actualizarEstancias()";
      this.inicializarFecini();
      if (actualizarEstancias != false) this.actualizarEstancias();
    }
  }
}

buscadorPaquetes.prototype.actualizarEstancias = function() {
    // Estancia
    this.Fecha = document.getElementById(this.idSelectorFecha + "_campoFecha").value;
    if (!isValidDate(this.Fecha, this.FormatoFecha)) return false;
    nodeRemoveAllChilds(this.idSelectorEstancia)
    var cmb = document.getElementById(this.idSelectorEstancia);
    var opt;
    opt = document.createElement('option');
    opt.value = '?';
    opt.innerHTML = this.msgSeleccione;
    cmb.appendChild(opt);
    if (this.Destino != "?" || this.idPaquete != '') {
        this.xmlDocFechas.getRemoteDocument("/rPaquetes/include/ctlBuscadorPaquetes/ashx/xmlRequest.ashx?action=epest&dest=" + this.Destino + "&ori=" + this.Origen + "&fsal=" + this.Fecha + "&clp=" + this.ClaseProducto + "&y=" + Math.random());
        var list = this.xmlDocFechas.selectNodes("xml/est")
        for (var i = 0; i < list.length; i++) {
            opt = document.createElement('option');
            opt.value = list[i].getAttribute('dia');
            opt.innerHTML = list[i].getAttribute('dia');
            cmb.appendChild(opt);
        }
        if (cmb.length > 1) cmb.selectedIndex = 1;
        document.getElementById(this.idSelectorEstancia).disabled = false;
    }
}


    
buscadorPaquetes.prototype.resetFecini = function (){
  this.diaSalidaStr  = new Array();
  this.diaSalidaDate = new Array();
}

buscadorPaquetes.prototype.inicializarFecini = function (){
  var selDay = new Date(this.diaSalidaStr[0]);
  var inpFecini = document.getElementById(this.idSelectorFecha + "_campoFecha");
  inpFecini.value = DateToString(selDay,this.FormatoFecha);
}



/*Inicialización del buscador*/
buscadorPaquetes.prototype.inicializarBuscador = function() {
    if (this.idPaquete == "") this.ObtenerDestinos();
    if (this.Destino != '?') {
        if (this.idPaquete == "") cmbSelectValue(this.idSelectorDestino, this.Destino);
        if (this.idPaquete == "" || this.tipoPaquete != "pre") {
            this.actualizarOrigen(false);
            if (this.Origen != '?') cmbSelectValue(this.idSelectorOrigen, this.Origen);
        }
        this.actualizarFechas(false);
        if (this.Fecha != null) {
            document.getElementById(this.idSelectorFecha + "_campoFecha").value = this.Fecha;
            this.actualizarEstancias();
            if (this.estancia != '?') cmbSelectValue(this.idSelectorEstancia, this.estancia);
        }
    }
}



/*Buscar Paquetes*/

buscadorPaquetes.prototype.validarFormulario = function (){
  var errmsg = '';
  if (this.idPaquete == '') {
    if (cmbGetValue(this.idSelectorDestino) == '?') errmsg += '\n ' + this.msgFaltaDest;
    if (cmbGetValue(this.idSelectorOrigen) == '?') errmsg += '\n ' + this.msgFaltaOri;
  }
  if (document.getElementById(this.idSelectorFecha + "_campoFecha").value == '') errmsg += '\n ' + this.msgFaltaFecha;
  if (cmbGetValue(this.idSelectorEstancia) == '?') errmsg += '\n ' + this.msgFaltaEst;
  if (errmsg == ''){
	  var arrayFEnt = document.getElementById(this.idSelectorFecha + "_campoFecha").value.split("/");
	  var fEnt = new Date(arrayFEnt[2],arrayFEnt[1]-1,arrayFEnt[0]);
	  var diaMg = new Date();
	  diaMg.setDate(diaMg.getDate() + this.margen);
	  diaMg.setHours(0,0,0,0);
	  if ((fEnt < diaMg))  errmsg += "* " + this.msgMargen + ".\n";
  }
  if (errmsg == ''){ return true;}else{alert(errmsg);return false;}
}


buscadorPaquetes.prototype.buscarVuelosGdsAlo = function (){
    var frmMain = document.getElementById(this.Form);
	if (this.validarFormulario()) {
	    var parametros = "";
	    if (this.idPaquete == '') {
	        parametros += "&idZona=" +  document.getElementById(this.idSelectorDestino).value;
	        parametros += "&idZonaOrigen=" +  document.getElementById(this.idSelectorOrigen).value;
	    }else{
	        parametros += "&idPaq=" +  this.idPaquete;
	        parametros += "&tipoPaq=" +  this.tipoPaquete;
	        switch (this.tipoPaquete) {
	            case "pre": parametros += "&buscarPre=true&buscarPae=false&buscarDin=false"; break;
                case "est": parametros += "&buscarPre=false&buscarPae=true&buscarDin=false"; break;  
                case "din": parametros += "&buscarPre=false&buscarPae=false&buscarDin=true"; break;
	        }	    
	        if (this.Destino!="") parametros += "&idZona=" + this.Destino;
	        if (document.getElementById(this.idSelectorOrigen)) parametros += "&idZonaOrigen=" +  document.getElementById(this.idSelectorOrigen).value;
	    }
	    parametros += "&fIni=" +  document.getElementById(this.idSelectorFecha + "_campoFecha").value;
	    parametros += "&estancia=" + document.getElementById(this.idSelectorEstancia).value;
	    parametros += "&habi=" + eval(this.idSelectorHabitaciones + "_obtenerDistribucionlHabi()");
	    parametros += "&CLP=" + this.ClaseProducto; 
	    if (this.buscarPre) { parametros += "&buscarPre=true"} else {parametros +="&buscarPre=false"}
	    if (this.buscarPae) { parametros += "&buscarPae=true"} else {parametros +="&buscarPae=false"}
	    if (this.buscarDin) { parametros += "&buscarDin=true"} else {parametros +="&buscarDin=false"}
	    var UrlPost = this.RedirigirA;
	    var accion = "buscarPaq";
	    submit(frmMain,UrlPost,accion,parametros,true);
	}
}

buscadorPaquetes.prototype.buscarSinDisponibilidad = function (){
    var parametros = ""
    parametros += "tipo=P";
    parametros += "&idzon=" +  document.getElementById(this.idSelectorDestino).value;
    if (!IsNullOrEmpty(this.ClaseProducto)) parametros +="&CLP=" + this.ClaseProducto;
    var UrlPost = this.RedirigirSinDisponibilidadA;
    var accion = "buscarProducto";
    window.location.href = UrlPost + "?" + parametros + "&accion=buscarProducto";
}

    
