    /*
    ARCHIVO CON LAS FUNCIONES GEN�RICAS EN JAVASCRIPT
    DE LA APLICACION 
    */
 
    /**
    * function jsFunciones__vHabilitaCamposResetear()
    */
    function jsFunciones__vHabilitaCamposResetear()
    {
        mostrarDiv('divChkOfertas');
        document.getElementById('txt_huesped_nombre').value         = "";
        document.getElementById('txt_huesped_apellidos').value      = "";
        document.getElementById('txt_huesped_email').value          = "";
        document.getElementById('txt_huesped_fono_movil').value     = "";
        document.getElementById('txt_huesped_comentarios').value    = "";
        document.getElementById('DESEO_OFERTAS').checked    = false;
    }  
 
    /**
    * function jsFunciones__gestionCantidades()
    * funci�n que realiza las operaciones necesarias para actualizar las
    * cantidades de habitaciones seleccionadas a la hora de hacer la reserva
    * controla si se excede del m�ximo de habitaciones que se han solicitdao
    * actualiza la tabla de b�squedas para actualizar el n� de habitaciones
    * seleccionadas y cambia los datos mostrados en pantalla mediante los divs y txt's necesarios
    */
    function jsFunciones__gestionCantidades(sCodigo, sTipo, sForm)
    {
        
        // Obtenemos el m�ximo de habitaciones que se pueden reservar
        var sParametrosFormulario = formData2QueryString(document.getElementById(sForm));
        var sDivPrecio            = sBuscarEnFormData2QueryString(sParametrosFormulario, 'hDivPrecio'); 
        var iMaxHabitaciones      = sBuscarEnFormData2QueryString(sParametrosFormulario, 'hMaxHabitaciones'); 

        var iCantidadAnterior     = document.getElementById('qty_'+sCodigo).value;
        var iCantidadActual       = document.getElementById('qty_'+sCodigo).value;
        
        // plus (m�s)    
        if(sTipo=="p")
        {       
            iCantidadActual++;
        }
        else
        {
            if(iCantidadActual>0)
            {
                iCantidadActual--;
            }
        }
        
        // Actualizo la txt de la cantidad
        document.getElementById('qty_'+sCodigo).value = iCantidadActual;
        
        // Vuelvo a obtener todos los valores
        sParametrosFormulario = formData2QueryString(document.getElementById(sForm));
        
        // Compruebo si la suma total de las habitaciones que se pedir�an no rebasa el m�x
        // que se pueden reservar para la oferta del hotel
        //alert("Parametros Formulario : " + sParametrosFormulario);
        
        var aParametros         = sParametrosFormulario.split('|');
        var iTotalHabitaciones  = 0;
        for(i=0; i<aParametros.length; i++)
        {
            var aValores = aParametros[i].split('=');
            if(aValores[0].substr(0,3)=="qty")
            {
                // alert("Sumo " + iTotalHabitaciones + " + " + aValores[1]);
                iTotalHabitaciones = parseInt(iTotalHabitaciones) + parseInt(aValores[1]);
            }
        }
        
        //alert("Total habitaciones : " + iTotalHabitaciones);
        //alert("Cantidad Que quiero: " + iCantidadActual);
        //alert("Maximo permitido   : " + iMaxHabitaciones);
        
        // Actualizo la txt de la cantidad si procede
        if( iTotalHabitaciones <= iMaxHabitaciones )
        {            
            // Vuelvo a recuperar todos los par�metros del formulario
            sParametrosFormulario = formData2QueryString(document.getElementById(sForm));
                            
            // Actualizo las tablas de la b�squeda con las nuevas opciones por si se hace la reserva
            // Y actualizo el div del precio total
            call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...','functions/func_transhotel.php', 'func_transhotel__vInfoHotel', iIdHotel+'|'+iIdProductPos, iIdHotel, '670', '450',"./img/");
            $.get("functions/func_busqueda_hoteles.php", { func: "func_busqueda_hoteles__vActualizaDatosHabitaciones", param1: sParametrosFormulario },
                function(data){
                    document.getElementById(sDivPrecio).innerHTML = data;
                });
            // alert("Resultado : " + str);
        }
        else
        {
            // Si hay error vuelvo a dejar la casilla como estaba
            document.getElementById('qty_'+sCodigo).value = iCantidadAnterior;
        }
    }

    /**
    * function jsFunciones_seleccionReserva()
    * marca la reserva que se ha seleccionado (PRIMERA LINEA
    * para saber el r�gimen y otras opciones
    */
    function jsFunciones_seleccionReserva(iIndex, sCodigoCabecera, sCodigoDetalle)
    {
//        alert("Localizador : "+sCodigoCabecera);
//        alert("Id Detalle : "+sCodigoDetalle);
        $.get("functions/func_reservas.php", {
            func: "func_reservas__sMarcaSeleccion",
            param1: sCodigoCabecera,
            param2: sCodigoDetalle },
            function(data){
                $("#divPrecioReservaHotel_"+iIndex).html(data);
            });
    }

    /**
    * function jsFunciones__mostrarHabitaciones()
    * oculta los divs y muestra los que se indican
    */
    function jsFunciones__mostrarHabitaciones(iNum)
    {
        ocultarDiv("div_habita2");
        ocultarDiv("div_habita3");
        ocultarDiv("div_habita4");
        ocultarDiv("div_habita5");

        for (i=1;i<=iNum;i++)
        {
            mostrarDiv('div_habita'+i);
        } 
    }

    /**
    * function jsFunciones__crearComboHabitaciones()
    * crea las combos, las crea todas y las deja ocultas
    * las creamos mediante un php
    */    
    function jsFunciones__crearComboHabitaciones()
        {
        $.get("functions/func_app.php", { func: "func_app_vCrearComboHabitaciones", param1: "5" },
        function(data){
            $("#divHabitaciones").html(data);
            jsFunciones__mostrarHabitaciones("1");
        });
    }

    /**
    * function jsFunciones__mostrarEdades()
    */
    function jsFunciones__mostrarEdades(iEdad)
        {
        var edad = iEdad.split('-');
    
        // Primero las ocultamos todas
        for (i=1;i<=4;i++)
            {
            ocultarDiv('divEdad_'+edad[0]+'_'+i);
            }
        // Las mostramos
        for (i=1;i<=edad[2];i++)
            {
            mostrarDiv('divEdad_'+edad[0]+'_'+i);
            }
        }

    /**
    * function jsFunciones__crearComboHabitaciones_nieve()
    * crea las combos, las crea todas y las deja ocultas
    * las creamos mediante un php
    */    
    function jsFunciones__crearComboHabitaciones_nieve()
        {
        $.get("functions/func_app.php", { func: "func_app_vCrearComboHabitaciones_nieve", param1: "5" },
        function(data){
            $("#divHabitaciones_nieve").html(data);
            jsFunciones__mostrarHabitaciones_nieve("1");
        });
    }

    /**
    * function jsFunciones__mostrarHabitaciones_nieve()
    * oculta los divs y muestra los que se indican
    */
    function jsFunciones__mostrarHabitaciones_nieve(iNum)
    {
        ocultarDiv("div_habita_nieve2");
        ocultarDiv("div_habita_nieve3");
        ocultarDiv("div_habita_nieve4");
        ocultarDiv("div_habita_nieve5");

        for (i=1;i<=iNum;i++)
        {
            mostrarDiv('div_habita_nieve'+i);
        } 
    }

    /**
    * function jsFunciones__mostrarEdades_nieve()
    */
    function jsFunciones__mostrarEdades_nieve(iEdad)
        {
        var edad = iEdad.split('-');
    
        // Primero las ocultamos todas
        for (i=1;i<=4;i++)
            {
            ocultarDiv('divEdad_nieve_'+edad[0]+'_'+i);
            }
        // Las mostramos
        for (i=1;i<=edad[2];i++)
            {
            mostrarDiv('divEdad_nieve_'+edad[0]+'_'+i);
            }
        }

    /**
    * function jsFunciones__vgetComments()
    * muestra los comentarios de un hotel aloja
    */
    function jsFunciones__vgetComments(iIdHotel)
    {
        $('#modal_dialog').dialog('option', 'title', 'Comentarios');
        // Establecemos a la pantalla que se podr� volver haciendo un goback
        call_llamadaAjaxTransparenciaInicioJqueryHotelesComments('Buscando comentarios...','functions/func_aloja.php', 'func_aloja__vgetComments', iIdHotel, iIdHotel, '670', '450',"./img/");
        $.get("core/includes/common.inc.php", { func: "common__setUrlBack", param1: "jsFunciones__vMostrarInfoHotel", param2: iIdHotel });
    }

    /**
    * function jsFunciones__vMostrarInfoHotel()
    * muestra la informaci�n de un hotel
    */
    function jsFunciones__vMostrarInfoHotel(cOrigen, iIdHotel, iIdProductPos)
    {
        $('#modal_dialog').dialog('option', 'title', 'Informaci&oacute;n');
        if($('#info_hotel_'+iIdHotel).html()!='')
            {
            call_llamadaAjaxTransparenciaInicioJquery($('#info_hotel_'+iIdHotel).html(),'','','', '670', '450',"./img/");
            }
        else
            {
            if(cOrigen=='t')
                {
                // Establecemos a la pantalla que se podr� volver haciendo un goback
                call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...','functions/func_transhotel.php', 'func_transhotel__vInfoHotel', iIdHotel+'|'+iIdProductPos, iIdHotel, '670', '450',"./img/");
                $.get("core/includes/common.inc.php", { func: "common__setUrlBack", param1: "jsFunciones__vMostrarInfoHotel", param2: cOrigen+','+iIdHotel+','+iIdProductPos },
                    function(data){
                        //call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...','functions/func_transhotel.php', 'func_transhotel__vInfoHotel', iIdHotel+'|'+iIdProductPos, iIdHotel, '670', '450',"./img/");
                        });
                }
            if(cOrigen=='p')
                {
                // Establecemos a la pantalla que se podr� volver haciendo un goback
                call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...', 'functions/func_primera_linea.php', 'func_primera_linea__vInfoHotel', iIdHotel, iIdHotel, 670, 450, "./img/");
                $.get("core/includes/common.inc.php", { func: "common__setUrlBack", param1: "jsFunciones__vMostrarInfoHotel", param2: cOrigen+','+iIdHotel+','+'0' },
                    function(data){
                        });
                }
            if(cOrigen=='g')
                {
                // Establecemos a la pantalla que se podr� volver haciendo un goback
                call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...', 'functions/func_gta.php', 'func_gta__vInfoHotel', iIdHotel, iIdHotel, 670, 450, "./img/");
                $.get("core/includes/common.inc.php", { func: "common__setUrlBack", param1: "jsFunciones__vMostrarInfoHotel", param2: cOrigen+','+iIdHotel+','+'0' },
                    function(data){
                        });
                }
            if(cOrigen=='a')
                {
                // Establecemos a la pantalla que se podr� volver haciendo un goback
                $.get("core/includes/common.inc.php", {
                    func: "common__obtener_WsAlojaUsarXMLaloja"
                },
                function(data){
                    data=data.replace(/[\n\r\t]/g,'');
                    if (data=="1"){
                        call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...', 'functions/func_aloja.php', 'func_aloja__vInfoHotel', iIdHotel, iIdHotel, 670, 450, "./img/");
                    }
                    else if(data=="0"){
                        call_llamadaAjaxTransparenciaInicioJqueryHotelesInfo('Buscando informaci&oacute;n...', 'functions/func_aloja_reservas.php', 'func_aloja__vInfoHotel', iIdHotel, iIdHotel, 670, 450, "./img/");
                    }
                });
                $.get("core/includes/common.inc.php", { func: "common__setUrlBack", param1: "jsFunciones__vMostrarInfoHotel", param2: cOrigen+','+iIdHotel+','+'0' },
                    function(data){
                        });
                }
            }
    }
 
    /**
    * function jsFunciones__vMostrarDesglose()
    * muestra el desglose de los r�gimenes de las habitaciones
    */
    function jsFunciones__vMostrarDesglose(cOrigen, iIdHotel, iIdRoom, iIdProductPos)
    {
        $('#modal_dialog').dialog('option', 'title', 'Desglose de r&eacute;gimen');
        if($('#desglose_hotel_'+iIdHotel).html()!='')
            {
            call_llamadaAjaxTransparenciaInicioJquery($('#desglose_hotel_'+iIdHotel).html(),'','','', '670', '450',"./img/");
            }
        else
            {
            if(cOrigen=='t')
                {
                call_llamadaAjaxTransparenciaInicioJqueryHotelesDesglose('Cargando...', 'functions/func_transhotel.php', 'func_transhotel__vMostrarDesglose', iIdRoom+'|'+iIdProductPos, iIdHotel, 670, 450, "./img/");
                }
           }
    }


    /**
    * function jsFunciones__vMostrarRutaHotelAServicioNieve(sDireccionHotel,sLatitudHotel,sLongitudHotel,sDireccionServicioNieve)
    * muestra una ruta entre un hotel y un servicio de nieve en un mapa de google maps
    */
    function jsFunciones__vMostrarRutaHotelAServicioNieve(sIdHotel,sDireccionServicioNieve)
    {
        $('#modal_dialog').dialog('option', 'title', '&iquest;C&oacute;mo llegar?');
        call_llamadaAjaxTransparenciaInicioJquery('<div id="map_canvas" style="width: 70%; height: 480px; float:left; border: 1px solid black;"></div><div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;"></div>','', '', '', '670', '480',"./img/");
        $.get("functions/func_primera_linea_nieve.php", {
            func: "func_primera_linea_nieve__vInfoHotelGetLocation",
            param1: sIdHotel
        },
        function(data){
            data=data.replace(/[\n\r\t]/g,'');

            var geocoder = new GClientGeocoder();
            var map;
            var directionsPanel;
            var directions;
            var location1,location2;
            
            //craer objetos
            map = new GMap2(document.getElementById("map_canvas"));
            map.addControl(new GSmallMapControl());
            directionsPanel = document.getElementById("route");
            directions = new GDirections(map, directionsPanel);
            
            geocoder.getLocations(data, function (response) {
                if (response && response.Status.code == 200){
                    location1 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
                    geocoder.getLocations( sDireccionServicioNieve, function (response) {
                        if (response && response.Status.code == 200){
                            location2 = {lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address};
                            directions.load('from: ' + location1.address + ' to: ' + location2.address);
                            map.setCenter(new GLatLng(location1.lat,location1.lon), 10);                            
                        } else ("falla encontrar location 2");
                    });
                } else ("falla encontrar location 1");
            });            
        });
    }
