// Literales
var literals = new Array();
var natDays = new Array();


var oFechaI; 
var oFechaV;

function nationalDays(date) {
    //$("#debug").append(' ' + date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' ' + natDays.length + ' ');
    for (i = 0; i < natDays.length; i++) {
        //$("#debug").append(natDays[i][0] + ' = ' + date.getDate() + ' || ' + natDays[i][1] + ' = ' + (date.getMonth() + 1) + ' || ' + natDays[i][2] + ' = ' + date.getFullYear());
        if (date.getDate() == natDays[i][0] && (date.getMonth() + 1) == natDays[i][1] && date.getFullYear() == natDays[i][2]) {
            //alert([false, natDays[i][3], natDays[i][4]]);
            //$("#debug").append(' FALSE <br/>')
            return [true, natDays[i][3], natDays[i][4]];
        }
    }    
    return [true, ''];
}

function actualizaDiasTrayecto(oFechaIda, oFechaVuelta) {
    natDays = [[oFechaIda.getDate(), oFechaIda.getMonth() + 1, oFechaIda.getFullYear(), 'ui-state-boarding-day', 'Fecha vuelo de ida'],
               [oFechaVuelta.getDate(), oFechaVuelta.getMonth() + 1, oFechaVuelta.getFullYear(), 'ui-state-boarding-day', 'Fecha vuelo de vuelta']];
}



// Valida el formulario de la petición
function validaFormAereo() {
    var msg = "";
    var frm = document.getElementById("soloVuelo");

    var origen = frm.origenSV.value;
    var destino = frm.destinoSV.value;
    
    var adultos = parseInt(frm.adultos.value, 10);
    var ninos = parseInt(frm.ninos.value, 10);
    var bebes = parseInt(frm.bebes.value, 10);
	
	var descuentoActivado = $("#residenteFamiliaNum").attr('checked');
	var descuentoSeleccionado = $("#descuentos").val();

    // Origen vacío o con palabra clave "Origen"
    if ((origen == "") || (origen == strOrigen))
        msg += "\n- " + literals[0];
    else if (origen.length < 3)
        msg += "\n- " + literals[1];

    // Destino vacío o con palabra clave "Destino"
    if ((destino == "") || (destino == strDestino))
        msg += "\n- " + literals[2];
    else if (destino.length < 3)
        msg += "\n- " + literals[3];

    // Comprobamos que la ida y la vuelta sean diferentes
    if (msg == "" && (origen.toLowerCase() == destino.toLowerCase()))
        msg += "\n- " + literals[4];

    // Al menos tiene que haber un adulto
    if (adultos == 0)
        msg += "\n- " + literals[7];
    else {
        if ((adultos + ninos) > 9)
            msg += "\n- " + literals[12];

        if (bebes > adultos)
            msg += "\n- " + literals[8];
    }

    // Filtramos caracteres raros
    frm.origenSV.value = origen.replace("'", "");
    frm.destinoSV.value = destino.replace("'", "");
	
	// Miquel, 06/08/2010: Si checkbox descuento seleccionado, comprobar que se elige un descuento.
	if(descuentoActivado==true){
		if(descuentoSeleccionado==0){
			msg += "\n- " + "Seleccione el tipo de descuento deseado.";
		}
	}else{
		$("#descuentos").val=0;
	}

    // Mostramos mensaje de error
    if (msg != "") {
        msg = literals[13] + ":\n" + msg;

        // alert(msg);
        return false;
    } else {
        return true;
    }
}

// Valida si el input proporcionado es un entero válido.
// En caso de error lo incializa al valor por defecto.
function validaEntero(objecte, defaultValue) {
    valor = parseInt(objecte.value, 10)

    //Compruebo si es un valor numérico 
    if (isNaN(valor))
        objecte.value = defaultValue;
}

// Oculta o muestra la fecha de vuelta
function soloIda(selected) {
    if (selected)
        $("#divFechaVuelta").slideUp("normal")
    else
        $("#divFechaVuelta").slideDown("normal")
}

function strToDate(strFecha, tipo) {
    var anyo, mes, dia;

    switch (tipo) {
        case 1: //dd/MM/yyyy
            var aFecha = strFecha.split("/");
            dia = parseInt(aFecha[0], 10);
            mes = parseInt(aFecha[1], 10);
            anyo = parseInt(aFecha[2], 10);
            break;
        case 2: //yyyy-mm-dd
            var aFecha = strFecha.split("-");

            dia = parseInt(aFecha[2], 10);
            mes = parseInt(aFecha[1], 10);
            anyo = parseInt(aFecha[0], 10);
    }

    return new Date(anyo, mes - 1, dia);
}

// Mostra popup amb condicions resident
function condicionesResidente() {
    var textoCondiciones = "El descuento de residente es aplicable a los ciudadanos españoles y de los demás Estados miembros de la Unión Europea y del espacio económico (Noruega, Suiza, Islandia y Liechtenstein), que acrediten la condición de residentes en las Islas Baleares, Islas Canarias o Melilla."
    if ($("#residente").attr('checked') && !confirm(textoCondiciones)) {
        $("#residente").attr('checked', false);
    }
}

// Miquel, 02/08/2010: Mostra descomptes possibles
function showDescuentos(){
    if ($("#residenteFamiliaNum").attr('checked')){
        $("#divDescuentos").slideDown("normal")
    }else{
        $("#divDescuentos").slideUp("normal")
        $("#descuentos").val(0);
    }
}

// Miquel, 02/08/2010: Mostra thickbox ajuda descomptes
function mostrarAyudaDescuentos(){
        var obj = window
        var t = obj.title || obj.name || null;
        var url = "http://www.traveltool.es/agregadorAereo/CondicionesDescuentos.aspx?height=400&width=600&KeepThis=true&TB_iframe=true";
        var g = obj.rel || false;
        tb_show(t, url, g);
}

function getIdioma() {
    try {
        return (idioma == undefined) ? 'es' : idioma;
    } catch (e) {
        return 'es';
    }
}

function recargarSelFechaIda() {
    var fida1 = document.getElementById("fechaIdaHiddenSV").value;
    oFechaI.day = parseInt(fida1.substring(0, 2), 10);
    oFechaI.month = parseInt(fida1.substring(3, 5), 10);
    oFechaI.year = parseInt(fida1.substring(6, 10), 10);
    oFechaI.load();
    recargarSelFechaVuelta();
}

function recargarSelFechaVuelta() {
    var today = new Date();
    var mesActual = today.getMonth() + 1;    
    var fVuelta = document.getElementById("fechaVueltaHiddenSV").value;
    oFechaV.day = parseInt(fVuelta.substring(0, 2), 10);
    oFechaV.month = parseInt(fVuelta.substring(3, 5), 10);
    oFechaV.year = parseInt(fVuelta.substring(6, 10), 10);
    var fida2 = document.getElementById("fechaIdaHiddenSV").value;    
    oFechaV.inicioMes = parseInt(fida2.substring(3, 5), 10);
    oFechaV.inicioDia = parseInt(fida2.substring(0, 2), 10);
    oFechaV.hastaMes = (mesActual + 11) % 12;
    // Inicializamos los dias de ida y de vuelta
    $("#fechaIdaSV").datepicker("option", "beforeShowDay", nationalDays);
    $("#fechaVueltaSV").datepicker("option", "beforeShowDay", nationalDays); 
    oFechaV.load();        
}

function recargarfechaFromSelIda() {
    document.getElementById("fechaIdaHiddenSV").value = oFechaI.takeDate(1);
    var fechVue = document.getElementById("fechaIdaHiddenSV").value;    
}

function recargarfechaFromSelVuelta() {
    document.getElementById("fechaVueltaHiddenSV").value = oFechaV.takeDate(1);
    var fechVue = document.getElementById("fechaVueltaHiddenSV").value;    
}

function controlFechaVueltaCambioIda() {
    var strFechaIda = $("#fechaIdaHiddenSV").val();
    var strFechaVuelta = $("#fechaVueltaHiddenSV").val();

    var oDateIda = strToDate(strFechaIda, 1);
    var oDateVuelta = strToDate(strFechaVuelta, 1);
    var datePickerVuelta = $("#fechaVueltaHiddenSV");

    if ((oDateIda > oDateVuelta) || (strFechaVuelta == '')) {
        datePickerVuelta.datepicker('setDate', oDateIda);
        actualizaDiasTrayecto(oDateIda, oDateIda);        
    } else {
        actualizaDiasTrayecto(oDateIda, oDateVuelta);        
    }

    datePickerVuelta.datepicker('option', 'minDate', oDateIda);
    calendarioPulsado = true;
    recargarSelFechaIda();
}

function controlFechaIdaCambioVuelta() {
    var strFechaIda = $("#fechaIdaHiddenSV").val();
    var strFechaVuelta = $("#fechaVueltaHiddenSV").val();
    var datePickerIda = $("#fechaIdaHiddenSV");

    var oDateIda = strToDate(strFechaIda, 1);
    var oDateVuelta = strToDate(strFechaVuelta, 1);

    if ((strFechaIda == '')){        
        datePickerIda.datepicker('setDate', oDateVuelta);
        }

    actualizaDiasTrayecto(oDateIda, oDateVuelta);
    calendarioPulsado = true;    
    recargarSelFechaVuelta();
}

function cargaFechaAereo() {

    var idioma = getIdioma();
    var today = new Date();
    var mesActual = today.getMonth() + 1;
    
    oFechaI = new dateObject("oFechaI");
    
    oFechaI.idioma = idioma;
    oFechaI.appendFullYearToMonth = true;
    oFechaI.daysObject = document.getElementById("slDiaIda"); 
    oFechaI.monthsObject = document.getElementById("slMesIda");
    oFechaI.onChangeFunction = "recargarfechaFromSelIda(); controlFechaVueltaCambioIda();";
    oFechaI.tipoDia = 2

    var fida3 = document.getElementById("fechaIdaHiddenSV").value;
    oFechaI.day = parseInt(fida3.substring(0, 2), 10);
    oFechaI.month = parseInt(fida3.substring(3, 5), 10);
    oFechaI.year = parseInt(fida3.substring(6, 10), 10);
    oFechaI.inicioMes = mesActual;
    oFechaI.hastaMes = (mesActual + 11) % 12;
    oFechaI.inicioDia = today.getDate(); 
    
    oFechaV = new dateObject("oFechaV");
    oFechaV.idioma = idioma;
    oFechaV.appendFullYearToMonth = true;
    oFechaV.daysObject = document.getElementById("slDiaVuelta"); 
    oFechaV.monthsObject = document.getElementById("slMesVuelta");
    oFechaV.onChangeFunction = "recargarfechaFromSelVuelta(); controlFechaIdaCambioVuelta(); ";
    oFechaV.inicioMes = mesActual;
    oFechaV.inicioDia = oFechaI.day
    oFechaV.hastaMes = (mesActual + 11) % 12;    
    oFechaV.tipoDia = 2    
    var fvuelta = document.getElementById("fechaVueltaHiddenSV").value;
    oFechaV.day = parseInt(fvuelta.substring(0, 2), 10);
    oFechaV.month = parseInt(fvuelta.substring(3, 5), 10);
    oFechaV.year = parseInt(fvuelta.substring(6, 10), 10);    

    oFechaI.load();
    oFechaV.load();
}


// Miquel, 30/06/2010: Mostrar búsqueda por calendario + comprobacion formulario + comprueba ciudades
function mostrarCalendarioV2() {

    if(validaFormAereo()){

        var obj = window
        var t = obj.title || obj.name || null;
        var url;
        var g = obj.rel || false;
        t = "";
        
        var frm = document.getElementById("soloVuelo");
        
        var origen = frm.origenSV.value;
        var destino = frm.destinoSV.value;
        
        frm.origenSV.value = origen.replace("'", "");
        frm.destinoSV.value = destino.replace("'", "");
    
        var adultos = parseInt(frm.adultos.value, 10);
        var ninos = parseInt(frm.ninos.value, 10);
        var bebes = parseInt(frm.bebes.value, 10);
        
        var fechaida = frm.fechaIdaSV.value;
        var fechavue = frm.fechaVueltaSV.value;
        
        //añadido Daniel Hoyo 27/07/2010
        if (frm.SoloIdaSV[1].checked){
            var SoloIdaSV = "on"
        }
        
        url = "http://www.traveltool.es/agregadorAereo/compruebaCiudades.aspx?adultos=" + adultos + "&ninos=" + ninos + "&bebes=" + bebes + "&origenSV=" + origen + "&destinoSV=" + destino + "&fechaIdaSV=" + fechaida + "&fechaVueltaSV=" + fechavue + "&SoloIdaSV=" + SoloIdaSV + "&busPorCal=on&height=550&width=850&KeepThis=true&TB_iframe=true";
        //url = url.replace(/\&/g,'&'+'amp;').replace(/</g,'&'+'lt;').replace(/>/g,'&'+'gt;').replace(/\'/g,'&'+'apos;').replace(/\"/g,'&'+'quot;');

        //thickbox
        tb_show(t, url, g);
    
    }
}

