﻿// ============================================================================================================
// common.js: RUTINAS DE INTERACTIVIDAD CLIENTE COMUNES A TODAS LAS PAGINAS
// ============================================================================================================
// ------------------------------------------------------------------------------------------------------------
// La gestión de formularios emergentes de login se gestiona de forma centralizada.
// Para ello, construimos la extensión de JQuery 'slideHiddenContent(target, applyClass)':
// ------------------------------------------------------------------------------------------------------------
jQuery.fn.extend({
    slideHiddenContent: function(target, applyClass) {
        var targetObject = $(target);
        $(this).click(function(e) {
            if (targetObject.is(":hidden"))
                targetObject.slideDown("slow");
            else 
                targetObject.slideUp();
            if (applyClass) $(this).parent().toggleClass(applyClass);
            e.preventDefault();
        });
    }
});
// ------------------------------------------------------------------------------------------------------------
// La rutina de inicio de JQUERY contiene todos los inicializadores de las rutinas y elementos dinámicos de la
// página: El valor global de idioma y sus iconos asociados, las extensiones aplicadas a las persianas de login,
// la inicialización de los mapas (si los hubiera) y los efectos de visualización de cambio de idioma.
// ------------------------------------------------------------------------------------------------------------
var addthis_language; // Parámetro global requerido por el widget 'Add This!'
$(function() {
    // Asignación de idioma desde el atributo xml:lang de la página para el widget AddThis
    addthis_language = document.documentElement.getAttribute('lang');
    // Manejador de eventos para persianas de login de clientes y usuarios y formulario de reservas lateral (master)
    $("#accessUser a").slideHiddenContent('div#header');
    $("#seeReservation a").slideHiddenContent('div#manageBooking', 'seeReservation-hide');

    // Inicializador de Mapa, en caso de encontrar un DIV con id="map"
    if ($('#map').length > 0) gMapHandler.init();

    // Incorporamos html on-runtime para el estilado de los botones web-button
    $('a.web-button').wrapInner('<span></span>');
  
    // Asignación de idioma en intercambiador de versiones
    languageWidget.init();

    // Asignación de evento de lanzamiento de enlace mailto a buzones ofuscados
    $('.mailto').each(function(index, value) {
        $(value).append('@' + $(value).attr('href')).click(function(e) {
            window.location = 'mailto:' + $(this).text();
            e.preventDefault();
        });
    });
    
});

// ------------------------------------------------------------------------------------------------------------
// La variable global 'map' almacena una instancia del objeto GMap, gestionada desde el manejador gMapHandler
// en lo relativo a posicionamiento, dimensión y tamaño, así como pictos a ubicar.
// ------------------------------------------------------------------------------------------------------------
var map, gMapData,gMapHandler = {
    ApplyMapPoints: function() {
        var icon = new GIcon();
        icon.image = "/img/index/ico-google.png";
        icon.iconSize = new GSize(41, 56);
        icon.iconAnchor = new GPoint(20, 56);

        $.each(gMapData, function(i, item) {
            var point = new GLatLng(parseFloat(gMapData[i].latitude), parseFloat(gMapData[i].longitude));
            var gMarker = new GMarker(point, { icon: icon, title: gMapData[i].label, clickable: true });
            GEvent.addListener(gMarker, 'click', function() { document.location = gMapData[i].url; })
            map.addOverlay(gMarker);
        });
    },
    instanceMap: function() {
        map = new GMap2(document.getElementById("map"));
        map.setMapType(G_PHYSICAL_MAP);
        map.setCenter(new GLatLng(39.555549, -0.069008), 5);
        map.addControl(new ExtLargeMapControl());

        if (gMapData != 'undefined')
            gMapHandler.ApplyMapPoints();

        $("body").unload(function() { GUnload(); });
    },
    init: function()
    {
        if (GBrowserIsCompatible())
            gMapHandler.instanceMap();
//Mostrar o no alert con el error diciendo que no es compatible.            
//        else
//            alert('Lo sentimos. Su navegador no es compatible con el sistema de mapas empleado por Centauro Rent a Car.');
    }
}
// ------------------------------------------------------------------------------------------------------------
// El manejador languageWidget gestiona la ocultación de los iconos de idioma
// ------------------------------------------------------------------------------------------------------------
var languageWidget = {
    toggleFlags: function() {
        var langIcons = $('#language');
        if (langIcons.css('width') != '0px')
            langIcons.animate({ width: 0 });
        else
            langIcons.animate({ width: 168 });
    },
    init: function() {
        $('#selectLanguage img').attr('src', '/img/common/' + addthis_language + '.gif');
        $('#selectLanguage img, #hideLanguage a').click(function(e) { languageWidget.toggleFlags(); e.preventDefault(); });
        //$('#hideLanguage a').click(); //Muestra las banderas visibles.
    }
}