﻿var urlDestinos = "http://agencias.aramix.es/usercontrols/airportsjson.aspx?";

//Función que nos carga los meses y el dia actual.
//Le paso tres valores para cuando cambio de de checkbox.
function cargarElementos(valorMesSeleccionado, diaIdaSeleccionado, indiceMesSeleccionado) {
  //Declaracion de variables
  var fecha = new Date();
  var dia = fecha.getDate() - 1;  //Devuelve dia actual (1 - 31), se resta uno porque se le asigna al indice que empieza en 0.
  var mes = fecha.getMonth();     //Devuelve mes actual (0 - 11).
  var anno = fecha.getFullYear(); //Devuelve el año actual (2011).
  var meses = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
  //Cargamos los meses
  for (var i = mes; i < (mes + 12); i++) {
    if (i == 12) anno++;
    var textoOption = meses[i] + ' ' + anno;
    var valueOption = i >= 12 ? i - 11 : i + 1;
    document.getElementById("lstMesIda").options[i - mes] = new Option(textoOption, valueOption);
    document.getElementById("lstMesRegreso").options[i - mes] = new Option(textoOption, valueOption);
  }
  //Cargamos los dias esto es solo para la primera vez cuando carga la pagina, al mes le sumo uno para iguarlarlo al value.
  if (diaIdaSeleccionado == null) {
    cargarDiasIda(mes + 1);
    cargarDiasVuelta(mes + 1);
    //Asignamos el dia actual y el siguiente
    document.getElementById("lstDiaIda").selectedIndex = dia;
    document.getElementById("lstDiaRegreso").selectedIndex = dia + 1;
  }
  else {
    //Aqui es para cuando elegimos solo ida o volvemos a ida/vuelta para volver a pintarlos
    cargarDiasIda(parseInt(valorMesSeleccionado), diaIdaSeleccionado, indiceMesSeleccionado);
    cargarDiasVuelta(parseInt(valorMesSeleccionado), diaIdaSeleccionado + 1, indiceMesSeleccionado);
  }
  //Verificamos si hay cambio de mes
  if (document.getElementById("lstDiaIda").length == (dia + 1)) {
    cambiodeMes(document.getElementById("lstDiaIda").length, dia + 1, 0);
  }
  //Cargamos los aeropuertos de destino
  var as_xml_Desde = new AutoSuggest('txtIATAIda', options_xml_Desde);
  var as_xml_Hasta = new AutoSuggest('txtIATARegreso', options_xml_Hasta);

}

//Función para controlar si un año es bisiesto o no.
function bisiesto(anno) {
  var esbisiesto = (anno % 4 == 0 && (anno % 100 != 0 || anno % 400 == 0));
  if (!esbisiesto) { return false; }
  else { return true; }
}

//Función para cargar los dias de cada mes de ida.
function cargarDiasIda(valorMesSeleccionado, diaSeleccionado, indiceMesSeleccionado) {
  var mesSeleccionado = valorMesSeleccionado - 1; //Le resto uno porque llamo a la función varias veces pero en distintas condiciones.
  var fecha = new Date();
  var dia = fecha.getDate();
  var anno = fecha.getFullYear();
  var mes = fecha.getMonth();
  //var diaReal = diaSeleccionado + 1;
  //Controlamos que pase de año si es necesario
  for (var i = mes; i < (mes + 12); i++) {
    if (i == 12) anno++;
  }
  //Analizamos si el año es bisiesto para rellenar el array de dias de los meses con 29 o 28 en febrero.
  if (bisiesto(anno)) { var dias = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); }
  else { var dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); }
  //Limpio la lista de dias
  for (var i = 0; i < dias[mesSeleccionado]; i++) {
    document.getElementById("lstDiaIda").options[i] = null;
  }
  //Relleno la lista dependiendo el mes
  for (var i = 0; i < dias[mesSeleccionado]; i++) {
    var opcionDia = new Option(i + 1, i + 1);
    document.getElementById("lstDiaIda").options[i] = opcionDia;
  }
  //Si el dia seleccionado es menor que el número de dias de mes le asigno el dia que estaba.
  if (diaSeleccionado != null && diaSeleccionado < dias[mesSeleccionado]) {
    document.getElementById("lstDiaIda").selectedIndex = diaSeleccionado;
  }
  else {
    //si no le asigno el primer dia de mes.
    document.getElementById("lstDiaIda").selectedIndex = 0;
  }
  if (indiceMesSeleccionado != null) {
    //asigno el mes
    document.getElementById("lstMesIda").selectedIndex = indiceMesSeleccionado;
  }
}
//Función para cargar los dias de cada mes de regreso
function cargarDiasVuelta(valorMesSeleccionado, diaSeleccionado, indiceMesSeleccionado) {
  var mesSeleccionado = valorMesSeleccionado - 1; //Le resto uno porque llamo a la función varias veces pero en distintas condiciones.
  var fecha = new Date();
  var dia = fecha.getDate();
  var anno = fecha.getFullYear();
  var mes = fecha.getMonth();
  //var diaReal = diaSeleccionado + 1;
  //Controlamos que pase de año si es necesario
  for (var i = mes; i < (mes + 12); i++) {
    if (i == 12) anno++;
  }
  //Analizamos si el año es bisiesto para rellenar el array de dias de los meses con 29 o 28 en febrero.
  if (bisiesto(anno)) { var dias = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); }
  else { var dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); }
  //Limpio la lista de dias
  for (var i = 0; i < dias[mesSeleccionado]; i++) {
    document.getElementById("lstDiaRegreso").options[i] = null;
  }
  //Relleno la lista dependiendo el mes
  for (var i = 0; i < dias[mesSeleccionado]; i++) {
    var opcionDia = new Option(i + 1, i + 1);
    document.getElementById("lstDiaRegreso").options[i] = opcionDia;
  }
  //Si el dia seleccionado es menor que el número de dias de mes le asigno el dia que estaba 
  if (diaSeleccionado != null && diaSeleccionado < dias[mesSeleccionado]) {
    document.getElementById("lstDiaRegreso").selectedIndex = diaSeleccionado;
  }
  else {
    //si no le asigno el primer dia de mes.
    document.getElementById("lstDiaRegreso").selectedIndex = 0;
  }
  if (indiceMesSeleccionado != null) {
    //asigno el mes
    document.getElementById("lstMesRegreso").selectedIndex = indiceMesSeleccionado;
  }
}
//Función que controla los cambios de mes
function cambiodeMes(diasMes, diaSeleccionado, MesSeleccionado) {
  var diasTieneMes = diasMes;
  var diaMesSeleccionado = diaSeleccionado;
  var mesSiguiente = MesSeleccionado + 1;
  //Cuando el dia seleccionado sea igual al ultimo dia del mes hacemos el cambio.
  if (diasTieneMes == diaMesSeleccionado) {
    //Si se elige el ultimo dia posible para viajar se dan los mismos valores para regreso.
    if (MesSeleccionado == 11) {
      cargarDiasVuelta(parseInt(document.getElementById("lstMesIda").value));
      document.getElementById("lstDiaRegreso").selectedIndex = diaMesSeleccionado - 1;
      document.getElementById("lstMesRegreso").selectedIndex = MesSeleccionado;
    }
    else {
      //Si no hacemos el cambio de mes normal.
      cargarDiasVuelta(parseInt(document.getElementById("lstMesIda").value) + 1);
      document.getElementById("lstDiaRegreso").selectedIndex = 0;
      document.getElementById("lstMesRegreso").selectedIndex = mesSiguiente;
    }
  }
}

//Funcion que iguala la fecha de vuelta, al seleccionar un mes posterior en la ida que en la vuelta.
function igualarFecha(diaIdaSeleccionado, valorMesIdaSeleccionado, indiceMesIdaSeleccionado, mesActualVuelta,diaActualVuelta) {
    //Si el mes de vuelta es anterior, o el mes es es el mismo pero el dia de vuelta anterior
    if (mesActualVuelta < indiceMesIdaSeleccionado || (mesActualVuelta == indiceMesIdaSeleccionado && diaActualVuelta < diaIdaSeleccionado)) {
        document.getElementById("lstMesRegreso").selectedIndex = indiceMesIdaSeleccionado;
        cargarDiasVuelta(parseInt(valorMesIdaSeleccionado));
        document.getElementById("lstDiaRegreso").selectedIndex = diaIdaSeleccionado;
    }
}

//Función que controla si los días seleccionados para viajar son correctos.
function regresoDespuesIda() {
  var diaIda = document.getElementById("lstDiaIda").selectedIndex;
  var mesIda = document.getElementById("lstMesIda").selectedIndex;
  var diaRegreso = document.getElementById("lstDiaRegreso").selectedIndex;
  var mesRegreso = document.getElementById("lstMesRegreso").selectedIndex;
  var fecha = new Date();
  var dia = fecha.getDate() - 1; ;
  var divFechaRegreso = document.getElementById("divlblfecharegreso").style.display;
  //Casos para ida y vuelta
  if (divFechaRegreso == '') {
    //Primero controlamos las opciones con el mes actual.
    if (mesIda == 0 || mesRegreso == 0) {
      //Si los dos combos tienen el mismo mes.
      if (mesIda == mesRegreso) {
        //Ninguna de las fechas elegidas puede ser menor al dia actual.
        if (diaIda < dia || diaRegreso < dia) { alert("Las fechas escogidas no pueden ser anterior al dia de hoy."); return false; }
        //La fecha de regreso debe ser mayor a la de ida
        else if (diaIda > diaRegreso) { alert("La fecha de regreso debe ser posterior o igual a la de ida."); return false; }
        else return true;
      }
      //El mes de ida debe ser anterior al de regreso.
      else if (mesIda > mesRegreso) { alert("El mes de regreso debe ser posterior o igual al de ida."); return false; }
      else if (diaIda < dia) { alert("Las fechas escogidas no pueden ser anterior al dia de hoy."); return false; }
      return true;
    }
    else {
      //Si los dos combos tienen el mismo mes.
      if (mesIda == mesRegreso) {
        //La fecha de regreso debe ser mayor a la de ida
        if (diaIda > diaRegreso) { alert("La fecha de regreso debe ser posterior o igual a la de ida."); return false; }
        else return true;
      }
      //El mes de ida debe ser anterior al de regreso.
      else if (mesIda > mesRegreso) { alert("El mes de regreso debe ser posterior o igual al de ida."); return false; }
      else return true;
    }
  }
  //Casos para la ida
  else {
    //La fecha de ida no puede ser menor que el dia actual.
    if (diaIda < dia) { alert("La fecha escogida no puede ser anterior al dia de hoy."); return false; }
    else return true;
  }
}
//Función para ocultar el div cuando se selecciona solo viaje de ida
function ocultarDivVuelta() {
  document.getElementById("divlblfecharegreso").style.display = 'none';
  document.getElementById("divfregreso").style.display = 'none';
  document.getElementById("divbuscador").style.height = 255 + "px";
}
//Función para mostrar el div de regreso de nuevo
function muestraDivVuelta() {
  document.getElementById("divlblfecharegreso").style.display = '';
  document.getElementById("divfregreso").style.display = '';
  document.getElementById("divbuscador").style.height = 300 + "px";
  return true;
}

function llamarQuery(parametroEscogido) {
  //div para evaluar ida o ida/vuelta.
  var divFechaRegreso = document.getElementById("divlblfecharegreso").style.display;
  //Valores a enviar en querystring
  var masOpciones = 'false';
  if (parametroEscogido == 'avanzada')
    masOpciones = 'true';

  //Aeropuertos de salida y destino
  var aeroSalida = document.getElementById("hdnIATAIda").value;
  var aeroDestino = document.getElementById("hdnIATARegreso").value;
  //Fechas ida y regreso
  var fecha = new Date();
  var anno = fecha.getFullYear();
  var annoIda, annoRegreso;
  var mesActual = fecha.getMonth() + 1;
  var diaIda, mesIda, diaRegreso, mesRegreso;
  //Datos de la ida
  if (document.getElementById("lstDiaIda").value.length == 1) { diaIda = "0" + document.getElementById("lstDiaIda").value }
  else { diaIda = document.getElementById("lstDiaIda").value; }
  if (document.getElementById("lstMesIda").value.length == 1) { mesIda = "0" + document.getElementById("lstMesIda").value }
  else { mesIda = document.getElementById("lstMesIda").value; }
  if (mesIda < mesActual) { annoIda = anno + 1; } else { annoIda = anno; }
  //Si esta visible el div le asigno los valores del dia y el mes regreso
  if (divFechaRegreso == '') {
    if (document.getElementById("lstDiaRegreso").value.length == 1) { diaRegreso = "0" + document.getElementById("lstDiaRegreso").value }
    else { diaRegreso = document.getElementById("lstDiaRegreso").value; }
    if (document.getElementById("lstMesRegreso").value.length == 1) { mesRegreso = "0" + document.getElementById("lstMesRegreso").value }
    else { mesRegreso = document.getElementById("lstMesRegreso").value; }
    if (mesRegreso < mesActual) { annoRegreso = anno + 1; } else { annoRegreso = anno; }
  }
  //Si solo es ida pongo los valores de dia y mes regreso a 0.
  else {
    diaRegreso = '';
    mesRegreso = '';
    annoRegreso = '';
  }

  //Numero de adultos niños y bebes
  var numAdultos = document.getElementById("cmbAdultos").value;
  var numChilds = document.getElementById("cmbChilds").value;
  var numInfants = document.getElementById("cmbInfants").value;
  //Controlamos los pasajeros
  if (numInfants > numAdultos) { alert("No se puede realizar una búsqueda para un número de bebés (" + numInfants + ") mayor que de adultos (" + numAdultos + ")."); return false; }

  //Concatenamos la QueryString 
  location.href = urlMicroSite + '?MiniBuscador=true' +
                        "&Origen=" + aeroSalida +
                        "&Destino=" + aeroDestino +
                        "&FechaIda=" + diaIda + mesIda + annoIda +
                        "&FechaRegreso=" + diaRegreso + mesRegreso + annoRegreso +
                        "&Adt=" + numAdultos +
                        "&Chd=" + numChilds +
                        "&Inf=" + numInfants +
                              "&MasOpciones=" + masOpciones;
}

//QueryString en el que van los datos.
function queryStringBusqueda(opcion) {
  var txtSalida = document.getElementById("txtIATAIda").value;
  var txtDestino = document.getElementById("txtIATARegreso").value;
  var hdnSalida = document.getElementById("hdnIATAIda").value;
  var hdnDestino = document.getElementById("hdnIATARegreso").value;

  //Evaluamos que las fechas sean correctas y que si hay algun dato de algun aeropuerto que se rellenen los dos.
  if (opcion == 'multidestino' || opcion == 'avanzada') {
    if (regresoDespuesIda()) {
      if (txtSalida != "" && hdnSalida == "")
      { alert("No ha seleccionado correctamente el aeropuerto de salida"); return false; }
      else if (txtDestino != "" && hdnDestino == "")
      { alert("No has seleccionado correctamente el aeropuerto de destino"); return false; }
      else if (hdnSalida != "" && hdnDestino == "")
      { alert("Seleccione el aeropuerto de destino"); return false; }
      else if (hdnDestino != "" && hdnSalida == "")
      { alert("Seleccione el aeropuerto de salida"); return false; }
      else if (hdnDestino == hdnSalida && hdnDestino != "" && hdnSalida != "")
      { alert("El aeropuerto de destino no puede ser igual al aeropuerto de salida"); return false; }
      llamarQuery(opcion);
    }
  }
  else {
    //Si todos los campos son correctos
    if (validacionEnvio()) {
      llamarQuery(opcion);
    }
  }
}

//Validacion de campos antes del envio del formulario
function validacionEnvio() {
  //Comprobamos que los dias escogidos son correctos
  if (regresoDespuesIda()) {
    //Comprobamos que los campos.
    if (document.getElementById("txtIATAIda").value == "") { alert("Debe introducir el aeropuerto de salida"); return false; }
    if (document.getElementById("hdnIATAIda").value == "") { alert("No ha seleccionado correctamente el aeropuerto de salida"); return false; }
    if (document.getElementById("txtIATARegreso").value == "") { alert("Debe introducir el aeropuerto de destino"); return false; }
    if (document.getElementById("hdnIATARegreso").value == "") { alert("No ha escogido bien el aeropuerto de destino"); return false; }
    if (document.getElementById("txtIATAIda").value == document.getElementById("txtIATARegreso").value) { alert("El aeropuerto de destino debe ser distinto al de salida"); return false; }
    return true;
  }
}

//Limpio los hidden
function vaciarHdnIATAIda() { document.getElementById("hdnIATAIda").value = ""; }
function vaciarHdnIATARegreso() { document.getElementById("hdnIATARegreso").value = ""; }

//Función que carga los aeropuertos de salida
var options_xml_Desde =
	  {
	    script: urlDestinos,
	    varname: "input",
	    timeout: 2500,
	    json: true,
	    callback: function (obj) {
	      //almacena el valor txtIATAIda en un campo oculto
	      document.getElementById('hdnIATAIda').value = obj.id;
	    }
	  };

//Función que carga los aeropuertos de destino
var options_xml_Hasta =
	  {
	    script: urlDestinos,
	    varname: "input",
	    timeout: 2500,
	    json: true,
	    callback: function (obj) {
	      //almacena el valor txtIATARegreso en un campo oculto
	      document.getElementById('hdnIATARegreso').value = obj.id;
	    }
	  };
