/*
Required :
    - http://maps.google.com/maps?file=api&amp;v=2&amp;key=KEY_GOOGLE
    - URL/js/MapRoute.js
*/

if (typeof jsCst_PATH_ICON == "undefined") {
    alert("Missing param jsCst_PATH_ICON");
}


// ==================================================
//        utile pour la génération de l'icone FONCIA
// ==================================================

var _agenceIcon = new GIcon();
_agenceIcon.image = jsCst_PATH_ICON + "picto_localisation_ggm.gif";
_agenceIcon.shadow = jsCst_PATH_ICON + "picto_localisation_sh.png";
_agenceIcon.shadowSize = new GSize(46,38);
_agenceIcon.iconSize = new GSize(27,38);
_agenceIcon.iconAnchor = new GPoint(14,38);
_agenceIcon.infoWindowAnchor = new GPoint(19,5);

function getMarkerHtml(jsonInfos) {
    var infoBulle = "";
	if (jsonInfos != undefined && jsonInfos != "")
    {
    	// ---> ajout bloc titre
    	infoBulle += (jsonInfos.titre != undefined && jsonInfos.titre != "" ? "<div class='bulle_titre'>" + jsonInfos.titre + "<\/div>" : "");
    	
    	// ---> ajout bloc texte
    	var texte = "";
	    texte += (jsonInfos.metiers != undefined && jsonInfos.metiers != "" ? "<p>" + jsonInfos.metiers 	+ "<\/p>" : "");
	    texte += (jsonInfos.adr1 != undefined && jsonInfos.adr1 != "" 		? "<p>" + jsonInfos.adr1 		+ "<\/p>" : "");
	   	texte += (jsonInfos.adr2 != undefined && jsonInfos.adr2 != "" 		? "<p>" + jsonInfos.adr2 		+ "<\/p>" : "");
	   	texte += (jsonInfos.cp != undefined && jsonInfos.cp != "" && jsonInfos.ville != undefined && jsonInfos.ville != "" ? 
	   				"<p>" + jsonInfos.cp + " " + jsonInfos.ville + "<\/p>" : "");
	    infoBulle += (texte != "" ? "<div class='bulle_txt'>" + texte + "<\/div>" : "");
	    
	    // ---> ajout tel
	    infoBulle += (jsonInfos.tel != undefined && jsonInfos.tel != "" ? "<div class='bulle_tel'>" + jsonInfos.tel + "<\/div>" : "");
    }
    return "<div id=\"gmapmarker\">" + infoBulle + "<\/div>";
}



// =======================================================================
// Pour charger une carte sur la page principale
// =======================================================================

var _mainJsMap = null; 

function loadMapOnMainPage(divBase, divBaseCanvas, lat, lng, paramsInfo)
{
    if (_mainJsMap == undefined || _mainJsMap == null) { // pour ne pas instancier plusieurs fois  
        _mainJsMap = new MapRoute("_mainJsMap", divBase);
    }
     
    if (_mainJsMap != null && _mainJsMap != undefined) {        
        // ---> init avec paramètres par défaut
        _mainJsMap.initialize(divBaseCanvas, lat, lng, {addScrollZoom:false});
        // ---> ajout de l'icone Foncia
        var paramsMarker = {'icon' : _agenceIcon};           
        _mainJsMap.addMarker(lat, lng, getMarkerHtml(paramsInfo), paramsMarker);
    }
}


// =======================================================================
// Lightbox affichant la carte uniquement avec 2 liens 
// vers l'itinéraire (se rendre) ou l'impression des infos de l'agence
// =======================================================================
var _prevMarker = null;
var _myJsMap = null; 
var _isMapOpenYet = false;

function situerBien(bienId, bdId){
	var datas = "bienId=" + bienId + "&bdId=" + bdId;
    jQuery.getJSON(urlAjaxSituerBien, datas,
       function (data) {
    	  // Se lance uniquement en cas de retour de donnée de l'ajax.
          // lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre
          openNousSituer(data.lat, data.lng, data.nom, data.metiers, data.adr1, data.adr2, data.cp, data.ville, data.tel, data.urlPrintPlan, data.titre);
	   }
    );
}

function openNousSituer(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre) 
{
    if (typeof jsLib_header == "undefined" || typeof jsLib_footerLink1 == "undefined" || typeof jsLib_footerLink2 == "undefined") {
        alert("Missing params");
        return;    
    }
    
    if (!document.getElementById("lboxNousSituer")) {
        _isMapOpenYet = false; /// IMPORTANT car va permettre de regénérer un init
        //-------------- div mere ------------
        var lboxMap = document.createElement("div");
        lboxMap.style.width = "702px";
        lboxMap.id = "lboxNousSituer";
        document.body.appendChild(lboxMap);
        //-------------- 1ere ligne gauche (adresse) ------------
        var divInfo = document.createElement("div");
        divInfo.id = "div_info_nousSituer";            
        divInfo.className = "float_left foncia_lightbox_titre";
        divInfo.style.width = "";
        lboxMap.appendChild(divInfo);
        //-------------- 1ere ligne droite (fermer) ------------
        var divActions = document.createElement("div");
        divActions.innerHTML = "<div class='foncia_Impression_plan_fonctions'><a onclick='jQuery.facebox.close();'>Fermer</a><img src='"+jsCst_PATH_ICON +"icone_fermer.gif' style='margin-left:10px;border:0px' onclick='jQuery.facebox.close();' alt='' title=''/></div>";
        divActions.className = "foncia_details_bloc_MAP_nous_situer_texte";
        lboxMap.appendChild(divActions);
        //-------------- ajout breaker ------------
        var divBreaker = document.createElement("div");
        divBreaker.className = "breaker";
        lboxMap.appendChild(divBreaker);
        //-------------- div carte ------------
        var divCanvas = document.createElement("div");
        divCanvas.id = "map_canvas_nousSituer";
        divCanvas.style.width = "700px";
        divCanvas.style.height = "450px";
        divCanvas.className = "foncia_details_bloc_MAP_nous_situer_border";
        lboxMap.appendChild(divCanvas);
        //-------------- footer (imprimer + se rendre) ------------
        var divPrintPlan = document.createElement("div");
        divPrintPlan.id = "div_printPlan";
        divPrintPlan.className = "foncia_details_bloc_MAP_nous_situer_texte";
        lboxMap.appendChild(divPrintPlan);
    }
    
    if (_isMapOpenYet) {
        change_NousSituer(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre);
    } else {
        init_NousSituer(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre);
        _isMapOpenYet = true;
    }
}

function init_NousSituer(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre)
{
    if (_myJsMap == undefined || _myJsMap == null) { // pour ne pas instancier a chaque click        
        _myJsMap = new MapRoute("_myJsMap", "lboxNousSituer");
    }
    if (_myJsMap != null && _myJsMap != undefined) {   
    	//---> passage en lightbox
    	jQuery.facebox($('#lboxNousSituer'));
        // ---> init avec paramètres par défaut
        _myJsMap.initialize("map_canvas_nousSituer", lat, lng, {addScrollZoom:false});
        // ---> ajout de l'icone Foncia
        var paramsMarker = {'icon' : _agenceIcon};
        var paramsInfo = {"titre":nom, "metiers":metiers, "adr1":adr1, "adr2":adr2, "cp":cp, "ville":ville, "tel":tel};            
        _prevMarker = _myJsMap.addMarker(lat, lng, getMarkerHtml(paramsInfo), paramsMarker);
        // ---> compléments d'adresses    
        add_infos(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre);
    }
}
    
function change_NousSituer(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre) 
{
	//---> passage en lightbox
    jQuery.facebox($('#lboxNousSituer'));
    // ---------
    _myJsMap.changeCenter(lat, lng);
    if (_prevMarker != null)
        _prevMarker.hide(); //MM.clearMarkers())
    var paramsMarker = {'icon' : _agenceIcon}; 
    var paramsInfo = {"titre":nom, "metiers":metiers, "adr1":adr1, "adr2":adr2, "cp":cp, "ville":ville, "tel":tel}; 
    _prevMarker = _myJsMap.addMarker(lat, lng, getMarkerHtml(paramsInfo), paramsMarker);
    // ---> compléments d'adresses    
    add_infos(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre); 
}

function addslashes(str) {
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
}
    
function add_infos(lat, lng, nom, metiers, adr1, adr2, cp, ville, tel, urlPrintPlan, titre) {
    if (document.getElementById("div_info_nousSituer"))
        document.getElementById("div_info_nousSituer").innerHTML = jsLib_header + "&nbsp;:&nbsp;" + adr1 + "&nbsp;" + adr2 + "&nbsp;" + cp + "&nbsp;" + ville;
            
    if (document.getElementById("div_printPlan")) {
        if (adr2 != "") {
            adresse = adr2;
        } else {
            adresse = adr1;
        }
        var htmlLink = "";
        if (urlPrintPlan) {
            htmlLink = "<a href=\"javascript:openPrintPlan('"+ addslashes(urlPrintPlan) +"', '"+ lat +"', '"+ lng +"', '"+ addslashes(nom) +"', '"+ metiers +"', '"+ adr1 +"', '"+ adr2 +"', '"+ cp +"', '"+ addslashes(ville) +"', '"+ tel +"');\">" + jsLib_footerLink1 + "</a>"
                     + " <span>|</span> ";
        }
        htmlLink += "<a href=\"javascript:openMapRoute('"+ lat +"', '"+ lng +"', '" + adresse + "&nbsp;" + cp + "&nbsp;" + ville + "', '" + addslashes(titre) + "');\">" + jsLib_footerLink2 + "</a>";
        document.getElementById("div_printPlan").innerHTML = htmlLink;    
    }
}


    
// ===============================================================
    
var _myMapRoute = null;
    
//        lightbox pour afficher l'itineraire (se rendre ....)
// ===============================================================

function openMapRoute(lat, lng, arrivee, titre) {
    if (document.getElementById("lboxMapItin")) {
    	var element = document.getElementById("lboxMapItin");
    	element.parentNode.removeChild(element);
    }
    var lboxMapItin = document.createElement("div");
    lboxMapItin.id = "lboxMapItin";
    document.body.appendChild(lboxMapItin);
    _myMapRoute = new MapRoute("_myMapRoute", "lboxMapItin");
     
    if (_myMapRoute != null && _myMapRoute != undefined) {            
    _myMapRoute.afficheContentHtml(lat, lng, "", arrivee, titre);    
    jQuery.facebox($('#lboxMapItin'));    	
        _myMapRoute.initialize("map_canvas_route", lat, lng, {addDefaultPoint:true, addScrollZoom:false});        
    }
}
    
//        lightbox pour imprimer le plan avec les coordonnées de l'agence
// ======================================================================   
function openPrintPlan(url, lat, lng, nom, metiers, adr1, adr2, cp, ville, tel) 
{
    var copierFluxPlan = function (flux) {
                        if (document.getElementById("lboxMapPlan")) {
                        	var element = document.getElementById("lboxMapPlan");
                        	element.parentNode.removeChild(element);
                        }
                        var lboxMapPlan = document.createElement("div");
                        lboxMapPlan.id = "lboxMapPlan";
                        document.body.appendChild(lboxMapPlan);
                        _myMapRoute = new MapRoute("_myMapRoute", "lboxMapPlan");
                        
                        $("#lboxMapPlan").html(flux);
                        
                        // --------> passage en div
                        jQuery.facebox($('#lboxMapPlan'));
                        
                        // NB : map_canvas correspond au nom placé dans le fichier agences/templates/print_plan.html !!!!
                        _myMapRoute.initialize("map_canvas", lat, lng, {addScrollZoom:false});
                        
                        // --------> ajout de l'icone foncia pour marquer l'agence
                        var paramsMarker = {'icon' : _agenceIcon};
                        
                        var paramsInfo = {"titre":nom, "metiers":metiers, "adr1":adr1, "adr2":adr2, "cp":cp, "ville":ville, "tel":tel}; 
                        _prevMarker = _myMapRoute.addMarker(lat, lng, getMarkerHtml(paramsInfo), paramsMarker);
                    }
                    
    // --------> appel ajax (avec jquery)
    $.get(url, function(data) { copierFluxPlan(data) });
}

