/*
Servicios publicos Beagle
*/

urlApp = "";

/*
url debe tener la barra final "/"
 */
function initServices(url) {
    urlApp = url;
}

var tiposPromociones = {
    TIPO_PROMOCIONES: 'PROMOCION',
    TIPO_OFERTAS: 'OFERTA',
    TIPO_SERV_ADIC: 'SERVADIC',
    TIPO_CABECERA: 'CABECERA',
    SITE_LATERAL_DERECHO: 'SITE_LAT_DER',
    SITE_LATERAL_IZQUIERDO: 'SITE_LAT_IZQ'
}

var origenesPromociones = {
    PROMOCIONES_PAQUETES: 'PKT',
    PROMOCIONES_ALOJAMIENTO: 'ALO',
    PROMOCIONES_EXCURSIONES: 'EXC',
    PROMOCIONES_AUTOS: 'CAR',
    PROMOCIONES_ASIST_AUTOS: 'ASAUTO',
    PROMOCIONES_ASIST_VIAJE: 'ASIST',
    PROMOCIONES_COMIDAS: 'COM',
    PROMOCIONES_BANNERS: 'BANNER',
    PROMOCIONES_COMPLEMENTOS_FLY: 'BFCMPL'
}

function findPromociones(data, funcProcData) {

    data.urlApp = urlApp;

    $.getJSON(urlApp + "verPromocionesHomePais.do?jsoncallback=?", data, funcProcData);
}

/*
Devuelve data.promociones[]
de promocion {codigo,[image],[ciudad],descripcion,urlMasPrecios,moneda,monto,[urlInfoPrestador],[validez]}
 */
function getPromociones(codServicio, codCiudadPrestador, codPaisPrestador, codCiudadSalida, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.TIPO_PROMOCIONES,
            codServicio: codServicio,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            codCiudadSalida: codCiudadSalida,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

/*
Devuelve data.promociones[]
de promocion {codigo,[image],[ciudad],descripcion,urlMasPrecios,moneda,monto,[urlInfoPrestador],[validez]}
 */
function getOfertas(codServicio, codCiudadPrestador, codPaisPrestador, codCiudadSalida, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.TIPO_OFERTAS,
            codServicio: codServicio,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            codCiudadSalida: codCiudadSalida,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

/*
Devuelve data.promociones[]
de promocion {codigo,[image],[ciudad],descripcion,urlMasPrecios,moneda,monto,[urlInfoPrestador],[validez]}
 */
function getBannersLateralIzquierdo(codServicio, codCiudadPrestador, codPaisPrestador, codCiudadSalida, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.SITE_LATERAL_IZQUIERDO,
            codServicio: codServicio,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            codCiudadSalida: codCiudadSalida,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

/*
Devuelve data.promociones[]
de promocion {codigo,[image],[ciudad],descripcion,urlMasPrecios,moneda,monto,[urlInfoPrestador],[validez]}
 */
function getBannersLateralDerecho(codServicio, codCiudadPrestador, codPaisPrestador, codCiudadSalida, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.SITE_LATERAL_DERECHO,
            codServicio: codServicio,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            codCiudadSalida: codCiudadSalida,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

/*
Devuelve data.promociones[]
de promocion {codigo,[image],[ciudad],descripcion,urlMasPrecios,moneda,monto,[urlInfoPrestador],[validez]}
 */
function getServiciosAdicionales(codCiudadPrestador, codPaisPrestador, fechaSalida, conBodega, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.TIPO_SERV_ADIC,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            fechaSalida: fechaSalida,
            conBodega: conBodega,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

function getServiciosAdicionalesCotizados(codTerminalSalida, codTerminalLlegada, codCiudadPrestador, codPaisPrestador, fechaSalida, fechaRegreso, horaLlegadaIda, horaSalidaVta, cantPaxs, conBodega, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.TIPO_SERV_ADIC,
            codTerminalSalida: codTerminalSalida,
            codTerminal: codTerminalLlegada,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            fechaSalida: fechaSalida,
            fechaRegreso: fechaRegreso,
            horaLlegadaIda: horaLlegadaIda,
            horaSalidaVta: horaSalidaVta,
            cantPaxs: cantPaxs,
            conBodega: conBodega,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

function getServiciosAdicionalesAlojamientoCotizados(codTerminal, codCiudadPrestador, codPaisPrestador, fechaSalida, fechaRegreso, horaLlegadaIda, horaSalidaVta, habitaciones, cantPaxs, conBodega, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.TIPO_SERV_ADIC,
            origen: 'ALO',
            codTerminal: codTerminal,
            codCiudadPrestador: codCiudadPrestador,
            codPaisPrestador: codPaisPrestador,
            fechaSalida: fechaSalida,
            fechaRegreso: fechaRegreso,
            horaLlegadaIda: horaLlegadaIda,
            horaSalidaVta: horaSalidaVta,
            habitaciones: habitaciones,
            cantPaxs: cantPaxs,
            conBodega: conBodega,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}

function getComplementosAereosCotizados(codTerminalSalida, codTerminalLlegada, fechaSalida, horaLlegadaIda, zonaTarifario, codCanalVenta, codMoneda, funcProcData) {

    findPromociones({
            tipoPromocion: tiposPromociones.TIPO_SERV_ADIC,
            origen: origenesPromociones.PROMOCIONES_COMPLEMENTOS_FLY,
            codTerminalSalida: codTerminalSalida,
            codTerminal: codTerminalLlegada,
            fechaSalida: fechaSalida,
            horaLlegadaIda: horaLlegadaIda,
            zonaTarifario: zonaTarifario,
            codCanalVenta: codCanalVenta,
            codMoneda: codMoneda
        }, funcProcData);

}


/*

jsonHabitaciones tiene la siguiente estructura
    habitaciones:[{cantMayores: N. cantMenores: M,edadesMenores: [5,10]},{},..{}]

 */

function cotizarPaquete(codPaquete,
                        codCiudadSalida,
                        fechaSalida,
                        jsonHabitaciones,
                        zonaTarifario,
                        codMoneda,
                        funcProcData) {

    var params = "codPaquete="+codPaquete+
                 "&codCiudadSalida="+codCiudadSalida+
                 "&stringFechaDesde="+fechaSalida+
                 "&zonaTarifario="+zonaTarifario+
                 "&codMoneda="+codMoneda+
                 "&urlApp="+urlApp;

    cantHabitacion = 0;
    $.each(jsonHabitaciones.habitaciones,function(i,habitacion){
        params +="&habitacion(" + i + ").cantMayores=" + habitacion.cantMayores;
        params +="&habitacion(" + i + ").cantMenores=" + habitacion.cantMenores;
        if (habitacion.cantMenores > 0) {
            for (c = 0; c < habitacion.cantMenores; c++) {
                params += "&habitacion(" + i + ").edadMenor(" + c + ")=" + habitacion.edadesMenores[c];
            }
        }
        cantHabitacion ++;
    });

    params += "&cantHabitacion="+cantHabitacion;
    $.getJSON(urlApp+"cotizarPaqueteJson.do?"+params+"&jsoncallback=?",{},funcProcData);
}


function cargarComboPaises(combo) {
    vaciarCombo(combo);
    $.getJSON(urlApp+"JsonTarifarioServlet?tabla=paises&jsoncallback=?",{}, function(data){
        $.each(data.items,function(i,item) {
            comboAdd(combo, item.l,item.v);
          });
    });
}

function cargarComboCiudadesSalida(combo) {
    vaciarCombo(combo);
    $.getJSON(urlApp+"JsonTarifarioServlet?tabla=ciudades_salida&jsoncallback=?",{}, function(data){
        $.each(data.items,function(i,item) {
            comboAdd(combo, item.l,item.v);
          });
    });
}

