/* ----------------------------------------------------------------------- */ /* MAP2 - AFFICHAGE DES POINTS ET DES INFORMATIONS EN JAVASCRIPT */ /* ----------------------------------------------------------------------- */ // Configuration var conf = { // identification des noeuds concernés map :'link', menu :'dynamicList', info :'dynamicDiv', container:'data_center_infos_container', // décalage des points top :5, left:5, // style & contents point_style :'display:none;', point_content :' ', highLight_style:'color:#ffbb43;text-decoration:underline;', lessLight_style:'color:#5E676A;text-decoration:none;', // durée des transitions effect_in :0.0, effect_out:0.0 }; // définition de variables diverses var lastArea = lastPosition = false; /** * Masque les informations relatives à un élément de type Area * * @param DOMElement Area * @return void */ function masquer(Area) { var myMap = document.getElementById(conf['map']); var myNode = myMap.parentNode; myNode.cacherInfos(Area.getPosition()); if (Area.getAttribute('shape').toUpperCase()=='CIRCLE') { myNode.cacherPoints(); } lastArea = false; } /** * Affiche les informations relatives à un élément de type Area * * @param DOMElement Area * @return void */ function afficher(Area) { if (lastArea && lastArea!=Area) { masquer(lastArea); } var myMap = document.getElementById(conf['map']); var myNode = myMap.parentNode; if (!myNode.afficherInfos) loadMap2(); var position = Area.getPosition(); if (!lastArea || lastArea.getPosition()!=position) { myNode.afficherInfos(position); } if (Area.getAttribute('shape').toUpperCase()=='CIRCLE') { var coords = myMap.calcCoords(Area.getAttribute('coords')); myNode.afficherPoint(coords[0], coords[1], Area.getAttribute('href')); } lastArea = Area; } /** * Déclare l'ensemble des méthodes nécessaires au fonctionnement de l'affichage des * points et des informations relatives à la carte. * * @return void */ function loadMap2() { // déclaration des variables if ( document.getElementById(conf['map']) ) { var myMap = document.getElementById(conf['map']); var myNode = myMap.parentNode; } if ( document.getElementById(conf['menu']) ) { var myMenu = document.getElementById(conf['menu']); var myLink = myMenu.getElementsByTagName('a'); var nbLink = myLink.length; } if ( document.getElementsByTagName('area') ) { var Areas = document.getElementsByTagName('area'); var nbArea = Areas.length; } /** * Cacule les coordonnées en fonction du chaine de caractères left,top * * @param string Coordonées (au format left,top[,...]) * @return Array coordonnées {0:top, 1:left} dans un tableau */ myMap.calcCoords = function(crdstr) { var curs = 0; var ctop = cleft = false; var top = left = ''; while(!ctop || !cleft) { var char = crdstr.charAt(curs); if (char && char!=',') { if (!cleft) left = left+char; if (cleft && !ctop) top = top+char; } else { if (!cleft) { cleft = left; } else { if (!ctop) ctop = top; } } ++curs; } return new Array(ctop, cleft); }; /** * Retourne les coordonnées d'un point en fonction de l'url * (utilise les données de l'image mappée) * * @param alink * @return Array coordonnées {0:top, 1:left} dans un tableau */ myMap.getCoordsByHref = function(alink) { var areas = myMap.getElementsByTagName('area'); var nbAreas = areas.length; var crdstr = false; for (var i=0; i