/* ----------------------------------------------------------------------- */
/* 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
var myMap = document.getElementById(conf['map']);
var myNode = myMap.parentNode;
var myMenu = document.getElementById(conf['menu']);
var myLink = myMenu.getElementsByTagName('a');
var nbLink = myLink.length;
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