/** affiche la région sur la carte **/ function afficher_region(region) { getId('info_region').innerHTML = stripslashes(region); } /** Cache la région sur la carte **/ function cacher_region() { getId('info_region').innerHTML = ''; } /** affiche la région sur la carte fullscreen **/ function afficher_region_full(region) { getId('info_region_fullscreen').innerHTML = stripslashes(region); } /** Cache la région sur la carte fullscreen **/ function cacher_region_full() { getId('info_region_fullscreen').innerHTML = ''; } /** action sur le onmouseover du module de carte **/ function carte_over(pays, region, lib_region) { getId('img_carte').src = 'site/media/cartes/' + pays + '/' + region + '.png'; getId('img_carte').style.cursor = 'pointer'; afficher_region(lib_region); } /** action sur le onmouseout du module de carte **/ function carte_out(pays) { getId('img_carte').src='site/media/cartes/' + pays + '.png'; getId('img_carte').style.cursor='crosshair'; cacher_region(); } /** fonction pour les hovers de la carte en fullscreen **/ function carte_over_full(pays, region, lib_region) { getId('carte_pays').src = 'site/media/cartes/' + pays + '/' + region + '.png'; getId('carte_pays').style.cursor = 'pointer'; afficher_region_full(lib_region); } /** fonction pour les hovers de la carte en fullscreen **/ function carte_out_full(pays, region) { getId('carte_pays').src = 'site/media/cartes/' + pays + '/' + region + '_active.png'; getId('carte_pays').style.cursor = 'crosshair'; cacher_region_full(); } /** Fonctions AJAX **/ carte_fullscreen = false; /** fonction pour l'affichage de la carte région agrandie en plein ecran **/ function afficherCarteFullscreen(pays, region, saison, elem) { if(verif_init_marche(elem) == false) return false; document.getElementsByTagName('html')[0].style.overflow = 'hidden'; // cache la barre de scroll opacityOn(); window.scrollTo(0, 0); carte_fullscreen = true; getId('cartes_fullscreen').style.display = 'block'; // repositionnement du bloc de carte if(navVersion() == '6' || navVersion() == '7') getId('cartes_fullscreen').style.marginLeft = -((screen.availWidth - findSize('cartes_fullscreen')['X']) / 2 + findSize('cartes_fullscreen')['X'] - 1) + 'px'; else getId('cartes_fullscreen').style.marginLeft = ((document.documentElement.clientWidth - findSize('cartes_fullscreen')['X']) / 2 + 1) + 'px'; // getId('cartes_fullscreen').innerHTML = '

La Carte est en cours de Chargement,
Veuillez patienter...
'; getId('cartes_fullscreen').innerHTML = getId('cartes_fullscreen_msg').innerHTML; var data = 'pays=' + pays + '®ion=' + region + '&saison=' + saison; var xhr_carte = createRequestObject(); xhr_carte.onreadystatechange = function() { if(xhr_carte.readyState == 4) { if (xhr_carte.status == 200) { var docXML = xhr_carte.responseXML; // Objet permettant de gérer le xml généré dans le script PHP stations = docXML.getElementsByTagName("station"); // on récupere les informations des stations de la région ainsi que le contenu des infobulles var html = docXML.getElementsByTagName("template"); // on récupere le template de la page qui affiche la carte getId('cartes_fullscreen').innerHTML = html[0].firstChild.nodeValue; getId('img_grande_carte').style.visibility = 'visible'; getId('img_grande_carte').src = 'site/media/cartes/' + pays + '/' + region + '_big.png'; // on affiche la carte correspondante resize(); } else alert(xhr_carte.status + " " + xhr_carte.statusText); } }; xhr_carte.open("POST", "site/includes/cartes/ajax_cartes_fullscreen.php", true); xhr_carte.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr_carte.send(data); } /** place les points sur la carte en fonction des coordonnées **/ function placerPoints() { // on assigne des margin aux images/points représentant les stations; on les positionne for(var i = 0; i < stations.length; i++) { if(browserVersion() == 'Safari' || browserVersion() == 'Chrome') // Dans le cas de Safari et Chrome, on doit décaler les points { getId('station_' + stations[i].getAttribute('code')).style.margin = stations[i].getElementsByTagName('coordonnee_y')[0].firstChild.nodeValue + 'px 0px 0px ' + (stations[i].getElementsByTagName('coordonnee_x')[0].firstChild.nodeValue * 1 + getId('img_grande_carte').offsetLeft - 15) + 'px'; } else getId('station_' + stations[i].getAttribute('code')).style.margin = stations[i].getElementsByTagName('coordonnee_y')[0].firstChild.nodeValue + 'px 0px 0px ' + stations[i].getElementsByTagName('coordonnee_x')[0].firstChild.nodeValue + 'px'; } } /** fonction pour l'affichage de la carte région agrandie en plein ecran **/ function cacherCarteFullscreen() { opacityOff(); document.getElementsByTagName('html')[0].style.overflow = 'auto'; getId('cartes_fullscreen').style.display = 'none'; carte_fullscreen = false; } /** variables globales **/ var manuel = false; // var visibilite_bulle_carte = false; // La variable visibilite_bulle_carte nous dit si la bulle est visible ou non /** fonction qui envoie la requette AJAX et affiche le résultat **/ /* function handleAJAXReturn(element_id, xhr) // permet de vérifier si la réponse est arrivée et effectue le résultat { if(xhr.readyState == 4) // la réponse est arrivée { if(xhr.status == 200) // code qui défini si la requête est OK , prêt à afficher { getId(element_id).innerHTML = xhr.responseText; // Utilisation du résultat } else alert('Error: returned status code ' + xhr.status + ', ' + xhr.statusText); } } */ /** montre l'infobulle lors du survol des points de la carte (plus utilisée) **/ function montre_bulle(element_id, code_station) { getId('liste_' + code_station).style.backgroundColor = '#DDEEFC'; manuel = false; // if(visibilite_bulle_carte == false) // { for(var i = 0; i < stations.length; i++) { if(stations[i].getAttribute('code') == code_station) getId(element_id).innerHTML = stations[i].getElementsByTagName('infobulle')[0].firstChild.nodeValue; } getId(element_id).className = 'bulle_pleine'; // visibilite_bulle_carte = true; // } } /** montre l'infobulle lors du survol de noms de stations de la liste **/ function montre_bulle_liste(element_id, code_station, x, y, img_id, circonstance) { manuel = true; if(circonstance == 'image') { getId('liste_' + code_station).style.color = '#0092EB'; getId('liste_' + code_station).style.fontWeight = 'bold'; getId('liste_' + code_station).style.backgroundColor = '#DDEEFC'; } // if(visibilite_bulle_carte == false) // { for(var i = 0; i < stations.length; i++) { if(stations[i].getAttribute('code') == code_station) getId(element_id).innerHTML = stations[i].getElementsByTagName('infobulle')[0].firstChild.nodeValue; } getId(element_id).className = 'bulle_pleine'; // visibilite_bulle_carte = true; positionner_infobulle('curseur', x, y, img_id, circonstance); // } } /** cache les infobulles **/ function cache_bulle(element_id, code_station) { getId('liste_' + code_station).style.color = '#105AB4'; getId('liste_' + code_station).style.fontWeight = 'normal'; getId('liste_' + code_station).style.backgroundColor = 'transparent'; // if(visibilite_bulle_carte == true) // { getId(element_id).className = 'bulle_vide'; getId(element_id).innerHTML = ''; manuel = false; // visibilite_bulle_carte = false; // } } /** positionne le conteneur de l'infobulle **/ function positionner_infobulle(element_id, X, Y, img_id, circonstance) { var position = findPos(img_id); var taille_carte = findSize(img_id); var cas = ''; // if(circonstance == 'image') // { // X -= position['X']; // Y -= position['Y']; // } if(X > taille_carte['X']/2) cas += 'D'; else cas += 'G'; if(Y > taille_carte['Y']/2) cas += 'B'; else cas += 'H'; var taille_bulle = findSize(element_id); switch(cas) { case 'GH': var posX = 23; var posY = -30; var triangle = 'site/media/cartes/triangle_g.png'; var margin = "25px 0 0 -15px"; break; case 'DH': // if(circonstance == 'image') var posX = -248; // else var posX = -242; var posX = -242; var posY = -30; var triangle = 'site/media/cartes/triangle_d.png'; var margin = "25px 0 0 225px"; break; case 'GB': var posX = 23; var posY = -taille_bulle['Y'] + 30; var triangle = 'site/media/cartes/triangle_g.png'; var margin = (taille_bulle['Y'] - 35) + "px 0 0 -15px"; break; case 'DB': // if(circonstance == 'image') var posX = -248; // else var posX = -242; var posX = -242; var posY = -taille_bulle['Y'] + 30; var triangle = 'site/media/cartes/triangle_d.png'; var margin = (taille_bulle['Y'] - 35) + "px 0 0 225px"; break; } if(navigator.appName != "Microsoft Internet Explorer" || document.documentElement.clientWidth > 0) // Si on est pas sous IExploZer { getId(element_id).style.left = position['X'] + X + posX + document.documentElement.scrollLeft + "px"; getId(element_id).style.top = position['Y'] + Y + posY + document.documentElement.scrollTop + "px"; } else { getId(element_id).style.left = posX + position['X'] + X + document.body.scrollLeft + "px"; getId(element_id).style.top = posY + position['Y'] + Y + document.body.scrollTop + "px"; } if(getId('triangle')) { getId('triangle').src = triangle; getId('triangle').style.margin = margin; } } /** change la position du conteneur de l'infobulle lors du déplacement de la souris **/ function move(e) { if(carte_fullscreen == true) { if(document.documentElement.scrollTop != 0) window.scrollTo(0, 0); /* document.documentElement.scrollTop = 0; */ if(!manuel) { if(navigator.appName != "Microsoft Internet Explorer") positionner_infobulle('curseur', e.pageX, e.pageY, 'img_grande_carte', 'image'); else positionner_infobulle('curseur', event.x, event.y, 'img_grande_carte', 'image'); } } } /** change la taille de la colone de droite lors du redimensionnement de la page **/ function resize() { if(carte_fullscreen == true) { // alert(findPos('cartes_fullscreen')['X'] + ' - ' + findPos('cartes_fullscreen')['Y']); // alert(findSize('cartes_fullscreen')['X'] + ' - ' + findSize('cartes_fullscreen')['Y']); // alert(((document.documentElement.clientWidth - findSize('cartes_fullscreen')['X']) / 2) + 'px'); // on recentre le bloc de carte au milieu de la fenetre du navigateur // alert( // "La résolution de votre écran est : " + screen.width + " x " + screen.height + "\n\n" + // "screen.availWidth = " + screen.availWidth + " px\n" + // "screen.availHeight = " + screen.availHeight + " px\n" + // "window.innerWidth = " + window.innerWidth + " px\n" + // "window.innerHeight = " + window.innerHeight + " px\n" + // "document.body.offsetWidth = " + document.body.offsetWidth + " px\n" + // "document.body.offsetHeight = " + document.body.offsetHeight + " px\n" + // "document.documentElement.clientWidth = " + document.documentElement.clientWidth + " px\n" + // "document.documentElement.clientHeight = " + document.documentElement.clientHeight + " px\n" + // "screen.colorDepth = " + screen.colorDepth + " bits" // ); if(navVersion() == '6' || navVersion() == '7') getId('cartes_fullscreen').style.marginLeft = -((screen.availWidth - findSize('cartes_fullscreen')['X']) / 2 + findSize('cartes_fullscreen')['X'] - 1) + 'px'; else getId('cartes_fullscreen').style.marginLeft = ((document.documentElement.clientWidth - findSize('cartes_fullscreen')['X']) / 2 + 1) + 'px'; // alert(getId('cartes_fullscreen').style.marginLeft); getId('cartes_fullscreen').style.height = 'auto'; getId('liste_pays').style.height = 'auto'; if(findSize('cartes_fullscreen')['Y'] > document.documentElement.clientHeight - 6) getId('liste_pays').style.height = (document.documentElement.clientHeight - 20) + 'px'; // test debugging // if(getId('cartes_fullscreen').style.display != 'none') alert("cartes_fullscreen :\nTop : " + getId('cartes_fullscreen').offsetTop + "px\nLeft : " + getId('cartes_fullscreen').offsetLeft + "px\n\nimg_grande_carte :\nTop : " + getId('img_grande_carte').offsetTop + "px\nLeft : " + getId('img_grande_carte').offsetLeft + "px"); // else alert('display: ' + getId('cartes_fullscreen').style.display); } } // document.onmousemove = move; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle. window.onresize = resize;