﻿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";
  this.ClaseProducto = "";
  this.idPaquete = "";
  this.tipoPaquete = "";
  this.Destino = "";
  this.margen = 0;
  this.SelectorFecha = "";
  this.SelectorHabitaciones = "";
  this.ClientId = "";
  this.RedirigirA = "/rPaquetes/Listado.aspx";
  this.RedirigirSinDisponibilidadA = "/listadoProducto/listadoProducto.aspx";
  this.Form = "frmMain";
  this.FormatoFecha = "dd/MM/yyyy";
  this.buscarPre = true;
  this.buscarPae = true;
  this.buscarDin = true;
}
      
buscadorPaquetes.prototype.disableAll = function (){
  this.diaSalidaStr  = new Array();
  this.diaSalidaDate = new Array();
  document.getElementById(this.ClientId + '_lblSinVuelo').style.display = 'none'
  document.getElementById(this.ClientId + '_cmbOrigen').style.display = 'block'
  nodeRemoveAllChilds('cmbOrigen')
  document.getElementById(this.ClientId + '_cmbOrigen').disabled = true;
  eval(this.SelectorFecha + '_ActivarDesactivar(false)');
  document.getElementById(this.ClientId + '_cmbEstancia').disabled = true;
}
     
buscadorPaquetes.prototype.ObtenerDestinos = function (){
  this.disableAll();
  var cmb = document.getElementById(this.ClientId + '_cmbDestino');
  nodeRemoveAllChilds(this.ClientId + '_cmbDestino')
  var opt;
  this.xmlDocDestinos.getRemoteDocument("/include/xmlRequest.ashx?action=epdest&clp=" + this.ClaseProducto + "&y=" + Math.random());
  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.ClientId + '_cmbDestino').style.display = 'block';
}
     
buscadorPaquetes.prototype.actualizarOrigen = function (destino){
  var dest = -1;
  if (destino !=null) dest= destino; else dest= cmbGetValue(this.ClientId + '_cmbDestino');
  this.disableAll();
  nodeRemoveAllChilds(this.ClientId + '_cmbOrigen')
  nodeRemoveAllChilds(this.ClientId + '_cmbEstancia')
  var cmb = document.getElementById(this.ClientId + '_cmbOrigen');
  if (dest != '?') {
    var opt;
    opt = document.createElement('option');
    opt.value = '?'; 
    opt.innerHTML = this.msgSeleccione;
    cmb.appendChild(opt);
    this.xmlDocZonas.getRemoteDocument("/include/xmlRequest.ashx?action=epori&dest=" + dest + "&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.ClientId + '_cmbOrigen', '-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.ClientId + '_cmbOrigen', '-1');
          }
        }
        document.getElementById(this.ClientId + '_lblSinVuelo').style.display = 'none'
        cmb.style.display = 'block'
        // Solo hay uno (miramos si es sin vuelo)
        if(list.length >= 1){
          if(cmb.options[cmb.selectedIndex].value == "-1"){
            //Es sin vuelo
            cmbSelectValue(this.ClientId + '_cmbOrigen', '-1');
            if (list.length == 1){
              cmb.style.display = 'none'
              document.getElementById(this.ClientId + '_lblSinVuelo').style.display = 'block'
            }
            this.actualizarFechas();
          }
        }
    }else{
      opt = document.createElement('option');
      opt.value = '-1'; 
      opt.innerHTML = this.msgSinVuelo;
      cmb.appendChild(opt);
      cmbSelectValue(this.ClientId + '_cmbOrigen', '-1');
      document.getElementById(this.ClientId + '_cmbOrigen').style.display = 'none'
      document.getElementById(this.ClientId + '_lblSinVuelo').style.display = 'block'
      this.actualizarFechas();
    }
    document.getElementById(this.ClientId + '_cmbOrigen').disabled = false;
  }
}


buscadorPaquetes.prototype.actualizarFechas = function() {
    var fechaMin = new Date();
    var fechaMax = new Date();
    var ori = '';
    var dest = '';
    var f = '';
    if (this.idPaquete == '' || this.idPaquete == -1) {
        ori = cmbGetValue(this.ClientId + '_cmbOrigen');
        dest = cmbGetValue(this.ClientId + '_cmbDestino');
    } else {
        if (this.tipoPaquete == "pre") {
            ori = -1; 
        } else {
            ori = cmbGetValue(this.ClientId + '_cmbOrigen');
        }
        dest = this.Destino;
    }
    document.getElementById(this.ClientId + '_cmbEstancia').disabled = true;
    eval(this.SelectorFecha + '_ActivarDesactivar(false)');
    if (ori == '?') ori = "-1"
    if (dest != '?' || this.idPaquete != '') {
        this.resetFecini();
        //if (this.idPaquete == '') {
        this.xmlDocFechas.getRemoteDocument("/include/xmlRequest.ashx?action=epfec&dest=" + dest + "&ori=" + ori + "&clp=" + this.ClaseProducto + "&mrg=" + this.margen + "&id=" + this.idPaquete + "&tipo=" + this.tipoPaquete + "&y=" + Math.random());
        //}else {
        //    this.xmlDocFechas.getRemoteDocument("/include/xmlRequest.ashx?action=epfecPaq&idpaq=" + this.idPaquete + "&tipo=" + this.tipoPaquete + "&y=" + Math.random());   
        //}
        var list = this.xmlDocFechas.selectNodes("xml/fec")
        if (list.length == 0) {
            eval(this.SelectorFecha + "_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.SelectorFecha + "_campoFecha").value = '';
            eval(this.SelectorFecha + "_ActualizarDiasActivos(this.diaSalidaDate)");
            eval(this.SelectorFecha + '_ActivarDesactivar(true)');
            document.getElementById(this.SelectorFecha + "_functionOnClose").value = this.name + ".actualizarEstancias()";
            this.inicializarFecini(f);
            this.actualizarEstancias();
        }
    }
}
    
 buscadorPaquetes.prototype.actualizarEstancias = function (){ 
  // Estancia
  var ori = '';
  var dest = '';
  if (this.idPaquete == '') {
    ori = cmbGetValue(this.ClientId + '_cmbOrigen');
    dest = cmbGetValue(this.ClientId + '_cmbDestino');
  }
  var fsalida = document.getElementById(this.SelectorFecha + "_campoFecha").value;
  if (!this.isValidDate(fsalida)) return false;
  nodeRemoveAllChilds(this.ClientId + '_cmbEstancia')
  var cmb = document.getElementById(this.ClientId + '_cmbEstancia');
  var opt;
  opt = document.createElement('option');
  opt.value = '?'; 
  opt.innerHTML = this.msgSeleccione;
  cmb.appendChild(opt);
  if (ori == '?') ori = "-1"
  if (dest != "?" || this.idPaquete != '') {
    if (this.idPaquete == '') {
       this.xmlDocFechas.getRemoteDocument("/include/xmlRequest.ashx?action=epest&dest=" + dest + "&ori=" + ori + "&fsal=" + fsalida + "&clp=" + this.ClaseProducto + "&y=" + Math.random());
    }else {
       this.xmlDocFechas.getRemoteDocument("/include/xmlRequest.ashx?action=epestPaq&idPaq=" + this.idPaquete  + "&tipo=" + this.tipoPaquete + "&fsal=" + fsalida + "&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.ClientId + '_cmbEstancia').disabled = false;
  }
 }


//*********************************************************************//

//Funciones cuando se busca para paquete determinado



 buscadorPaquetes.prototype.actualizarEstanciasPaq = function (){ 
  // Estancias
  var fsalida = document.getElementById('fecini').value;
  var idPaq = this.idPaquete;
  var Tipo = this.tipo;
  nodeRemoveAllChilds('cmbEstancia')
  var cmb = document.getElementById('cmbEstancia');
  var opt;
  opt = document.createElement('option');
  opt.value = '?'; 
  opt.innerHTML = this.msgSeleccione;
  cmb.appendChild(opt);
    this.xmlDocFechas.getRemoteDocument("/include/xmlRequest.ashx?action=epestPaq&idPaq=" + idPaq  + "&tipo=" + Tipo + "&fsal=" + fsalida + "&y=" + Math.random());
    var list = this.xmlDocFechas.selectNodes("xml/est")
    for (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);
    }
    
    document.getElementById('cmbEstancia').disabled = false;
    if (list.length==1 )  document.getElementById('cmbEstancia').selectedIndex = 1;
 }  

//*********************************************************************//
    
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.SelectorFecha + "_campoFecha");
  inpFecini.value = selDay.getDate() + "/" + (selDay.getMonth()+1) + "/" + selDay.getFullYear();
}

    
buscadorPaquetes.prototype.validarFecini = function (){
  var d = document.getElementById(this.SelectorFecha + "_campoFecha").value;
  if (!this.isValidDate(d)) {
    this.inicializarFecini();
  }
}

buscadorPaquetes.prototype.isValidDate = function (d){
  if (d == null || d == '') return false;
  var df = this.convertirFecha(d);
  for (i = 0; i < this.diaSalidaDate.length; i++) {
    if (df.getTime() == this.diaSalidaDate[i].getTime()) return true;
  }
  return false;
}

buscadorPaquetes.prototype.validarFormulario = function (){
  var errmsg = '';
  if (this.idPaquete == '') {
    if (cmbGetValue(this.ClientId + '_cmbDestino') == '?') errmsg += '\n ' + this.msgFaltaDest;
    if (cmbGetValue(this.ClientId + '_cmbOrigen') == '?') errmsg += '\n ' + this.msgFaltaOri;
  }
  if (document.getElementById(this.SelectorFecha + "_campoFecha").value == '') errmsg += '\n ' + this.msgFaltaFecha;
  if (cmbGetValue(this.ClientId + '_cmbEstancia') == '?') errmsg += '\n ' + this.msgFaltaEst;
  if (cmbGetValue(this.ClientId + '_cmbEstancia') == '') errmsg += '\n ' + this.msgFaltaEst;
  if (errmsg == ''){
	  var arrayFEnt = document.getElementById(this.SelectorFecha + "_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.convertirFecha = function (fecha){
    return StringToDate(fecha,this.FormatoFecha);
}


    
buscadorPaquetes.prototype.preloadFormData = function (){
  if (preloadZonDestino && preloadZonDestino!="-1"){
    cmbSelectValue(this.ClientId + '_cmbDestino', preloadZonDestino);
    this.actualizarOrigen();
    if (preloadZonOrigen && preloadZonOrigen!="-1") {
      cmbSelectValue(this.ClientId + '_cmbOrigen', preloadZonOrigen);
      this.actualizarFechas();
      if (preloadFecini && preloadFecini!="-1"){
        document.getElementById(this.SelectorFecha + "_campoFecha").value = preloadFecini;
        this.actualizarEstancias();
        if (preloadEstancia && preloadEstancia!="-1"){
          cmbSelectValue(this.ClientId + '_cmbEstancia', preloadEstancia);
        }
      }
    }else{
      //sin vuelo
      this.actualizarFechas();
      if (preloadFecini && preloadFecini!="-1"){
        document.getElementById(this.SelectorFecha + "_campoFecha").value = preloadFecini;
        this.actualizarEstancias();
        if (preloadEstancia && preloadEstancia!="-1"){
          cmbSelectValue(this.ClientId + '_cmbEstancia', preloadEstancia);
        }
      }
    }
  }
}



buscadorPaquetes.prototype.preloadFormDataDinPae = function (destino){
   
    this.actualizarOrigen(destino);
    if (preloadZonOrigen && preloadZonOrigen!="-1") {
      cmbSelectValue(this.ClientId + '_cmbOrigen', preloadZonOrigen);
      this.actualizarFechas();
      if (preloadFecini && preloadFecini!="-1"){
        document.getElementById(this.SelectorFecha + "_campoFecha").value = preloadFecini;
        this.actualizarEstancias();
        if (preloadEstancia && preloadEstancia!="-1"){
          cmbSelectValue(this.ClientId + '_cmbEstancia', preloadEstancia);
        }
      }
    }else{
      //sin vuelo
      this.actualizarFechas();
      if (preloadFecini && preloadFecini!="-1"){
        document.getElementById(this.SelectorFecha + "_campoFecha").value = preloadFecini;
        this.actualizarEstancias();
        if (preloadEstancia && preloadEstancia!="-1"){
          cmbSelectValue(this.ClientId + '_cmbEstancia', preloadEstancia);
        }
      }
    }
}

buscadorPaquetes.prototype.preloadFormDataPre = function (){
      this.actualizarFechas();
      if (preloadFecini && preloadFecini!="-1"){
        document.getElementById(this.SelectorFecha + "_campoFecha").value = preloadFecini;
        this.actualizarEstancias();
        if (preloadEstancia && preloadEstancia!="-1"){
          cmbSelectValue(this.ClientId + '_cmbEstancia', preloadEstancia);
        }
      }
}



buscadorPaquetes.prototype.doFecSubmit = function (){
  frmMain.accionBuscador.value = 'buscarPaquetes';
  frmMain.submit();
}
    
buscadorPaquetes.prototype.buscarVuelosGdsAlo = function (){
    var frmMain = document.getElementById(this.Form);
	if (this.validarFormulario()) {
	    var parametros = "";
	    if (this.idPaquete == '') {
	        parametros += "&idZona=" +  document.getElementById(this.ClientId + '_cmbDestino').value;
	        parametros += "&idZonaOrigen=" +  document.getElementById(this.ClientId + '_cmbOrigen').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.ClientId + '_cmbOrigen')) parametros += "&idZonaOrigen=" +  document.getElementById(this.ClientId + '_cmbOrigen').value;
	    }
	    parametros += "&fIni=" +  document.getElementById(this.SelectorFecha + "_campoFecha").value;
	    parametros += "&estancia=" + document.getElementById(this.ClientId + '_cmbEstancia').value;
	    parametros += "&habi=" + eval(this.SelectorHabitaciones + "_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.ClientId + '_cmbDestino').value;
    if (!IsNullOrEmpty(this.ClaseProducto)) parametros +="&CLP=" + this.ClaseProducto;
    var UrlPost = this.RedirigirSinDisponibilidadA;
    var accion = "buscarProducto";
    window.location.href = UrlPost + "?" + parametros + "&accion=buscarProducto";
}

    
buscadorPaquetes.prototype.modificarDest = function (){
  if ((this.Destino + '')!=''){
    cmbSelectValue('cmbDestino',this.Destino);
  }
  return;
}   