Utilisateur:Dr Brains/OpenStreetMap.js

Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
// Verwendung von OpenStreetMap in Wikipedia.
// (c) 2008 by Magnus Manske
// Released under GPL
// Modifié pour marcher après moveCoord() ci-dessus

// ------------------------------------ VARIABLES --

var OpenStreetMap_Param_Position  = "fixed"    // "fixed" ou "absolute"
// position "fixed" (reste fixe) ou "absolute" (défile avec la page), 
// modifiable par tout utilisateur enregistré dans une fonction nommée « openStreetMap_UserOptions »
// voir [http://fr.wikipedia.org/w/index.php?title=Utilisateur:Dr_Brains/monobook.js&diff=58876776&oldid=58876751]

// --------------------------------------- TEXTES --

var OpenStreetMap_Text_Map        = "CARTE";
var OpenStreetMap_Text_MapPop     = "Afficher/Masquer la carte";
var OpenStreetMap_Text_Hide       = "Réduire";
var OpenStreetMap_Text_HidePop    = "Cliquer pour réduire la carte";
var OpenStreetMap_Text_Show       = "Développer";
var OpenStreetMap_Text_ShowPop    = "Cliquer pour développer la carte";
var OpenStreetMap_Text_Close      = "Fermer";
var OpenStreetMap_Text_ClosePop   = "Cliquer pour fermer la carte";
var OpenStreetMap_Text_MovePop    = "Cliquer et glisser pour déplacer la carte";
var OpenStreetMap_Text_ResizePop  = "Cliquer et glisser pour redimensionner la carte";

// ------------------------------------ FONCTIONS --

function OpenStreetMap_Init() {
     if(typeof(OpenStreetMap_UserOptions)=="function") OpenStreetMap_UserOptions();
     if((OpenStreetMap_Param_Position=="fixed")&&(typeof(MoveResizeFixed_AddMoveArea)!="function")) obtenir('MoveResizeFixed');
     if((OpenStreetMap_Param_Position=="absolute")&&(typeof(MoveResizeAbsolute_AddMoveArea)!="function")) obtenir('MoveResizeAbsolute');

     var c = document.getElementById('coordinates-title') ;
     if(!c) return ;
 
     var a = c.getElementsByTagName('a') ;
     var geohack = false;
     for(var i=0;i<a.length;i++){
          var h = a[i].href ;
          if(!h.match(/geohack/)) continue ;
          geohack = true ;
          break ;
     }
     if(!geohack) return ;
 
     var na = document.createElement('a') ;
     na.href = 'javascript:OpenStreetMap_Toggle();' ;
     na.title = OpenStreetMap_Text_MapPop ;
     na.innerHTML = OpenStreetMap_Text_Map;
     c.appendChild(document.createTextNode(' (')) ;
     c.appendChild(na) ;
     c.appendChild(document.createTextNode(')')) ;
}
 
function OpenStreetMap_Toggle() {
     var c = document.getElementById('coordinates-title') ;
     if(!c) return ;
     var osm = document.getElementById('OpenStreetMap') ; 
     if (osm) {
          if(osm.style.display == 'none') {
               osm.style.display = 'block' ;
               OpenStreetMap_RestoreStyle();
          }else{
               osm.style.display = 'none' ;
          }
          return;
     } 
     var found_link = false ;
     var a = c.getElementsByTagName('a') ;
     var h;
     for(var i=0;i<a.length;i++){
          h = a[i].href ;
          if(!h.match(/geohack/)) continue ;
          found_link = true ;
          break ;
     }
     if ( !found_link ) return ; // No geohack link found 
     h = h.split('params=')[1] ;
 
     var OSMDiv = document.createElement('div');
     OSMDiv.id = 'OpenStreetMap' ;

     var MoveArea = document.createElement('div');
     MoveArea.id = 'OpenStreetMap_MoveArea' ;

     var Links = document.createElement('span');
     Links.setAttribute("style", "float:right;margin:10px;");
     var HideLink = document.createElement('a');
     HideLink.id = "OpenStreetMap_HideLink";  
     HideLink.innerHTML = OpenStreetMap_Text_Hide;
     HideLink.title = OpenStreetMap_Text_HidePop;
     HideLink.href = "javascript:OpenStreetMap_HideShow();";
     var CloseLink = document.createElement('a');
     CloseLink.innerHTML = OpenStreetMap_Text_Close;
     CloseLink.title = OpenStreetMap_Text_ClosePop;
     CloseLink.href = "javascript:OpenStreetMap_Toggle();";
     Links.appendChild(HideLink);
     Links.appendChild(document.createTextNode(' - '));
     Links.appendChild(CloseLink);
     MoveArea.appendChild(Links);

     var iFrame = document.createElement('iframe') ;
     iFrame.id = 'OpenStreetMap_iframe' ;
     var url = 'http://toolserver.org/~kolossos/openlayers/kml-on-ol.php?lang=' + mw.config.get('wgUserLanguage') + '&params=' + h ;
     iFrame.src = url ;

     var ResizeArea = document.createElement('div');
     ResizeArea.id = 'OpenStreetMap_ResizeArea' ;

     OSMDiv.appendChild(MoveArea);
     OSMDiv.appendChild(iFrame);
     OSMDiv.appendChild(ResizeArea);

     document.body.appendChild(OSMDiv) ;
     OpenStreetMap_RestoreStyle();

     var ElementsToMove = new Array(OSMDiv);

     var ElementsToResize = new Array(OSMDiv, iFrame);
     var ElementsMinWidths = new Array(200, 200);
     var ElementsMinHeights = new Array(200, 100);

     if(OpenStreetMap_Param_Position=="fixed"){
          MoveResizeFixed_AddMoveArea(MoveArea, ElementsToMove);
          MoveResizeFixed_AddResizeArea(ResizeArea, ElementsToResize, ElementsMinWidths, ElementsMinHeights);
     }else if(OpenStreetMap_Param_Position=="absolute"){
          MoveResizeAbsolute_AddMoveArea(MoveArea, ElementsToMove);
          MoveResizeAbsolute_AddResizeArea(ResizeArea, ElementsToResize, ElementsMinWidths, ElementsMinHeights);
     }
}
 
function OpenStreetMap_RestoreStyle(){
     var OSMDiv = document.getElementById('OpenStreetMap');
     var MoveArea = document.getElementById('OpenStreetMap_MoveArea');
     var iFrame = document.getElementById('OpenStreetMap_iframe');
     var ResizeArea = document.getElementById('OpenStreetMap_ResizeArea');
     var Link = document.getElementById("OpenStreetMap_HideLink");
     if((!OSMDiv)||(!MoveArea)||(!iFrame)||(!ResizeArea)||(!Link)) return;

     var Link = document.getElementById("OpenStreetMap_HideLink");
     Link.innerHTML = OpenStreetMap_Text_Hide;
     Link.title = OpenStreetMap_Text_HidePop;

     if(OpenStreetMap_Param_Position=="fixed"){
          var LargeurEcran = MoveResizeFixed_GetScreenWidth();
          var HauteurEcran = MoveResizeFixed_GetScreenHeight();
     }else if(OpenStreetMap_Param_Position=="absolute"){
          var LargeurEcran = MoveResizeAbsolute_GetScreenWidth();
          var HauteurEcran = MoveResizeAbsolute_GetScreenHeight();
     }

     OSMDiv.style.position = OpenStreetMap_Param_Position;
     OSMDiv.style.zIndex = 5000;
     OSMDiv.style.top = parseInt(HauteurEcran*10/100) + "px";
     OSMDiv.style.left = parseInt(LargeurEcran*15/100) + "px";
     OSMDiv.style.width = "70%";
     OSMDiv.style.height = parseInt(HauteurEcran*80/100) + "px";
     OSMDiv.style.border = "2px solid black";
     OSMDiv.style.backgroundColor = "white";
     OSMDiv.style.overflow = "hidden";

     MoveArea.style.position = "relative";
     MoveArea.style.top = "0";
     MoveArea.style.width = "100%";
     MoveArea.style.height = "50px";
     MoveArea.title = OpenStreetMap_Text_MovePop;

     iFrame.style.width = '100%' ;
     iFrame.style.height = parseInt((HauteurEcran*80/100)-100) + 'px' ;
     iFrame.style.clear = 'both' ;
     iFrame.style.display = 'block';

     ResizeArea.style.position = "relative";
     ResizeArea.style.top = "0";
     ResizeArea.style.width = "100%";
     ResizeArea.style.height = "50px";
     ResizeArea.title = OpenStreetMap_Text_ResizePop;
     ResizeArea.display = 'block';
}

function OpenStreetMap_HideShow(){
     var OSMDiv = document.getElementById('OpenStreetMap');
     var MoveArea = document.getElementById('OpenStreetMap_MoveArea');
     var iFrame = document.getElementById('OpenStreetMap_iframe');
     var ResizeArea = document.getElementById('OpenStreetMap_ResizeArea');
     var Link = document.getElementById("OpenStreetMap_HideLink");
     if((!OSMDiv)||(!MoveArea)||(!iFrame)||(!ResizeArea)||(!Link)) return;

     if(Link.innerHTML == OpenStreetMap_Text_Hide){
          Link.innerHTML = OpenStreetMap_Text_Show;
          Link.title = OpenStreetMap_Text_ShowPop;
          OSMDiv.style.top = "10px";
          OSMDiv.style.left = "2px";
          OSMDiv.style.width = "148px";
          OSMDiv.style.height = "50px";
          iFrame.style.display = 'none';
          ResizeArea.display = 'none';
     }else{
          Link.innerHTML = OpenStreetMap_Text_Hide;
          Link.title = OpenStreetMap_Text_HidePop;
          iFrame.style.display = 'block';
          ResizeArea.display = 'block';
          OpenStreetMap_RestoreStyle();
     }
}

addOnloadHook(OpenStreetMap_Init);