/**
 * Funciones javascript para el buscador de vacaciones en coche
 *
 * @author     Net2u_ <contact(AT)net2u.es>
 * @author     Jesús Antonio Canales Diez <jesusantonio.canales(AT)net2u.es>
 * @package    viajes
 * @subpackage publico
 * @version    CVS: $Revision: 1.8 $, $Date: 2010/03/25 10:33:21 $, $Author: rfernandez $
 */


function cambiaFiltroVACO (mostrar) {
	cambiaPestanaBloque ('filtro', mostrar);
	if (document.getElementById('btnMapa')) {
		document.getElementById('btnMapa').className = 'btn bot_simple btn-left btn-pos btn-bg-trans';	
	}
	if (document.getElementById('btnListado')) {
		document.getElementById('btnListado').className = 'btn bot_simple btn-right btn-pos btn-bg-trans';	
	}
}

YAHOO.namespace('viajes.vaco.buscador');
YAHOO.viajes.vaco.puntos = null;
/**
 * Funciones que deben cargarse al finalizar al carga de la página
 */
YAHOO.viajes.vaco.buscador.onload = function () {
    var sPais = YAHOO.util.Dom.get('s_pais');
    var sRegion = YAHOO.util.Dom.get('s_region');
    var sPrecio = YAHOO.util.Dom.get('s_precio');
    var sDuracion = YAHOO.util.Dom.get('s_duracion');

    /**
     * Si se ha seleccionado un país, se recuperan las regiones del mismo y se añaden al combo de regiones.
     *
     * @param object ev    Evento que ha llamado a al función
     * @param object obj   Objeto que se va a manipular
     * @return void
     */
    function cargarRegiones(ev, obj) {

        /**
         * Conjunto de acciones que se deben de realizar si la llamada a la url es correcta.
         *
         * @param object o  Objeto HTTPResponse
         */
        handleSuccess = function(o) {
            var respuesta = YAHOO.lang.JSON.parse(o.responseText);
            sRegion.length = 1;
            //sRegion.options[0] = new Option(LBL_SELECCIONAR, '', 0);
            for(var region in respuesta) {
                var selected = 0;
                if(YAHOO.util.Dom.get('h_region').value == respuesta[region].id) {
                    selected = 1;
                } else {
                    selected = 0;
                }
                sRegion.options[sRegion.options.length] = new Option(respuesta[region].titulo, respuesta[region].id, selected);
            }
        }

        /**
         * Conjunto de acciones que se realizaríón si la llamada devuelve un error 404. (Página no encontrada.).
         *
         * @param object o  Objeto HTTPResponse
         */
        handleFailure = function(o) {
            alert(LBL_ERROR_CONEXION);
        }

        /**
         * Funciones que se ejecutarán una vez terminada la llamada HTTP.
         *  · Success: Se lanzará esta función en caso de que se ejecute correctamente la petición.
         *  · Failure: Se lanzará esta función en caso de que se produzca un error 404.
         */
        var callback = {
            success: handleSuccess,
            failure: handleFailure
        };

        if(url_regiones.length > 1) {

            var postData    = 'idpais=' + sPais.options[sPais.selectedIndex].value;
            var transaction = YAHOO.util.Connect.asyncRequest('POST', url_regiones, callback, postData);
        }
    }

    if(sPais.options[sPais.selectedIndex].value != '') {
        cargarRegiones();
    }


    /**
     * Muestra en el mapa los puntos del resultado de la búsqueda
     *
     * @param object ev    Evento que ha llamado a al función
     * @param object obj   Objeto que se va a manipular
     * @return void
     */
    function recargarMapa(ev, obj) {

        /**
         * Conjunto de acciones que se deben de realizar si la llamada a la url es correcta.
         *
         * @param object o  Objeto HTTPResponse
         * @return void
         */
        handleSuccess = function(o) {
        	map.clearOverlays();
            arraymarcadores = new Array();
           	eval(o.responseText);
            Actualizar_Mapa();
            if((!o.responseText) || typeof(data) == 'undefined') {
                data = null;
            }
            if(data) {

                YAHOO.viajes.vaco.puntos = data;
                if(GBrowserIsCompatible()) {
                    var arraypuntos = new Array();
                    var arrayareas = new Array();
                    if(typeof(data) != 'undefined') {
                        // Puntos de interés
                        for(var punto = 0; punto < data.count; punto++) {
                            var arrcoord = data.puntos[punto].latitude + ',' + data.puntos[punto].longitude + ',,,' + data.puntos[punto].urldetalle + ',' + data.puntos[punto].img_icon;
                            pintaPuntosInteres(arrcoord, arraypuntos, true, true);
                        }
                        Inicializar_Mapa(false, arraypuntos, arrayareas, true, true);
                        refreshMap();
                    }
                }
            }
        }

        /**
         * Conjunto de acciones que se realizarán si la llamada devuelve un error 404. (Página no encontrada.).
         *
         * @param object o  Objeto HTTPResponse
         */
        handleFailure = function(o) {
            alert(LBL_ERROR_CONEXION);
            return false;
        }

        /**
         * Funciones que se ejecutarán una vez terminada la llamada HTTP.
         *  · Success: Se lanzará esta función en caso de que se ejecute correctamente la petición.
         *  · Failure: Se lanzará esta función en caso de que se produzca un error 404.
         */
        var callback = {
            success: handleSuccess,
            failure: handleFailure
        };

        if(url_listado_json) {
            var postData    = '';
            postData += 'pais=' + sPais.options[sPais.selectedIndex].value;
            postData += '&region=' + sRegion.options[sRegion.selectedIndex].value;
            postData += '&precio=' + sPrecio.options[sPrecio.selectedIndex].value;
            postData += '&duracion=' + sDuracion.options[sDuracion.selectedIndex].value;

            var transaction = YAHOO.util.Connect.asyncRequest('POST', url_listado_json, callback, postData);
        }
    }

    function reiniciarMapa(o) {
        var arraypuntos = new Array();
        var arrayareas = new Array();
        Inicializar_Mapa(true, arraypuntos, arrayareas, true, true);
        refreshMap();
    }

    // Listeners
    YAHOO.util.Event.addListener(sPais, 'change', cargarRegiones, sRegion);

    // Solo aplica si en el buscador se incorpora un mapa para mostrar los resultados.
    if(YAHOO.util.Dom.get('btnMapa') && typeof(url_listado_json) != 'undefined') {
        var btnMapa = YAHOO.util.Dom.get('btnMapa');
        YAHOO.util.Event.addListener(btnMapa, 'click', recargarMapa);
    }

    if(YAHOO.util.Dom.get('reiniciarMapa')) {
        var btnReiniciar =  YAHOO.util.Dom.get('reiniciarMapa');
        YAHOO.util.Event.addListener(btnReiniciar, 'click', reiniciarMapa);
    }
}

funciones_someter_onload[funciones_someter_onload.length] = 'YAHOO.viajes.vaco.buscador.onload';
