_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

MediaWiki:Gadget-MoveResizeFixed.js

Dans cet article, nous explorerons l’histoire fascinante de MediaWiki:Gadget-MoveResizeFixed.js, un sujet qui a retenu l’attention de millions de personnes à travers le monde. De ses origines à son impact sur la société actuelle, MediaWiki:Gadget-MoveResizeFixed.js a laissé une marque indélébile sur différents aspects de la vie quotidienne. Au fil des prochaines pages, nous allons nous plonger dans un voyage dans le temps pour bien comprendre l'importance de MediaWiki:Gadget-MoveResizeFixed.js et son influence dans divers domaines. De ses contributions dans _var2 aux innovations dont il a été le pionnier dans _var3, MediaWiki:Gadget-MoveResizeFixed.js a joué un rôle crucial dans le façonnement du monde tel que nous le connaissons aujourd'hui. Rejoignez-nous dans cette exploration pour en découvrir davantage sur l'histoire choquante de MediaWiki:Gadget-MoveResizeFixed.js.
/* {{Catégorisation JS|MoveResizeFixed}} */

/* <noinclude>

Fonctions standards pour gérer des éléments en position fixed : 
* fonction "move",
* fonction "resize"

Voir page de discussion.</noinclude>
== CODES SOURCE ==
<!--
*/

/* -->
=== FONCTION : navigateur ===

* Renvoie true si le navigateur est Internet Explorer

<!--
*/
// --><div style="border:1px dashed green;margin:1em;padding:1em;"><source lang=javascript>
//<pre><nowiki>

function MoveResizeFixed_NavIsIE(){
     var agt=navigator.userAgent.toLowerCase();
     var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
     MoveResizeFixed_NavIsIE = function () {
          return is_ie;
     };
     return is_ie;
}

//</nowiki></pre></source></div><!--
/*
-->
=== FONCTION : largeur de l'écran ===
* Renvoie la largeur de l'écran (en pixels)

<!--
*/
// --><div style="border:1px dashed green;margin:1em;padding:1em;"><source lang=javascript>
//<pre><nowiki>

function MoveResizeFixed_GetScreenWidth(){
     var ScreenWidth = 0;
     if( typeof( window.innerWidth ) == 'number' ) {
          ScreenWidth = parseInt(window.innerWidth);
     }else if( document.documentElement && document.documentElement.clientWidth ){
          ScreenWidth = parseInt(document.documentElement.clientWidth);
     }else if( document.body && document.body.clientWidth ){
          ScreenWidth = parseInt(document.body.clientWidth);
     }
     return ScreenWidth;
}

//</nowiki></pre></source></div><!--
/*
-->
=== FONCTION : hauteur de l'écran ===
* Renvoie la hauteur de l'écran (en pixels)

<!--
*/
//--><div style="border:1px dashed green;margin:1em;padding:1em;"><source lang=javascript>
//<pre><nowiki>

function MoveResizeFixed_GetScreenHeight(){
     var ScreenHeight = 0;
     if( typeof( window.innerHeight ) == 'number' ) {
          ScreenHeight = parseInt(window.innerHeight);
     }else if( document.documentElement && document.documentElement.clientHeight ){
          ScreenHeight = parseInt(document.documentElement.clientHeight);
     }else if( document.body && document.body.clientHeight ){
          ScreenHeight = parseInt(document.body.clientHeight);
     }
     return ScreenHeight;
}

//</nowiki></pre></source></div><!--
/*
--> 
=== FONCTION : MOVE ===

Transforme un élément en ancre pour bouger un autre élément (en position fixed)
* elementArea = élément ancre (obligatoire)
* elementsToMove = éléments à bouger (obligatoire, dans une Array)
* LeftLimit = limites gauche, en pixel (facultatif, dans une Array)
* TopLimit = limites haut, en pixel (facultatif, dans une Array)

<!--
*/
//--><div style="border:1px dashed green;margin:1em;padding:1em;"><source lang=javascript>
//<pre><nowiki>

function MoveResizeFixed_AddMoveArea(elementArea, elementsToMove, LeftLimit, TopLimit){
     if((!elementArea)||(!elementsToMove)) return;
     elementArea.onmousedown=function(event) {
          var monbody = document.body;
          if(!event) { event = window.event; }
          var positionSouris_X;
          var positionSouris_Y;
          if(MoveResizeFixed_NavIsIE()){ 
               positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
               positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
          }else{
               positionSouris_X = parseInt( event.clientX );
               positionSouris_Y = parseInt( event.clientY );
          } 
          for(var a=0;a<elementsToMove.length;a++){
               elementsToMove.initialX = parseInt( positionSouris_X - elementsToMove.offsetLeft);
               elementsToMove.initialY = parseInt( positionSouris_Y - elementsToMove.offsetTop);
               elementsToMove.style.opacity = '.8';
          }
          monbody.onmousemove = function(event) {
               if(!event) { event = window.event; }
               var positionSouris_X;
               var positionSouris_Y;
               if(MoveResizeFixed_NavIsIE()){
                    positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
                    positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
               }else{
                    positionSouris_X = parseInt( event.clientX );
                    positionSouris_Y = parseInt( event.clientY );
               }
               var LeftLimitDone = false;
               var TopLimitDone = false;
               for(var a=0;a<elementsToMove.length;a++){
                    var PositionGauche = parseInt( positionSouris_X ) - elementsToMove.initialX;
                    var PositionHaut = parseInt(positionSouris_Y ) - elementsToMove.initialY;
                    if(LeftLimit){
                         if(LeftLimit || LeftLimit==0){
                              if( PositionGauche < parseInt(LeftLimit)){
                                   PositionGauche = LeftLimit;
                                   LeftLimitDone = true;
                              }
                         }
                    }
                    if(TopLimit){
                         if(TopLimit || TopLimit==0){
                              if( PositionHaut < parseInt(TopLimit)){
                                   PositionHaut = parseInt(TopLimit);
                                   TopLimitDone = true;
                              }
                         }
                    }
                    elementsToMove.style.left = PositionGauche + 'px';
                    elementsToMove.style.top = PositionHaut + 'px';
               }
               if(LeftLimitDone){
                    for(var a=0;a<elementsToMove.length;a++){
                         if(LeftLimit) elementsToMove.style.left = LeftLimit + 'px';
                    }
               }
               if(TopLimitDone){
                    for(var a=0;a<elementsToMove.length;a++){
                         if(TopLimit) elementsToMove.style.top = TopLimit + 'px';
                    }
               }
          };
          monbody.onmouseup=function(event) {
               for(var a=0;a<elementsToMove.length;a++){
                    elementsToMove.style.opacity = '';
               }
               monbody.onmousemove = null;
               monbody.onmouseup = null;
          };
     };
     elementArea.style.cursor = "move";
}

//</nowiki></pre></source></div><!--
/*
-->
=== FONCTION : RESIZE ===

Transforme un élément en ancre pour redimensionner un autre élément (en position fixed)
* elementArea = élément ancre (obligatoire)
* elementsToResize = éléments à redimensionner (obligatoire, dans une Array)
* MinWidth = largeurs minimum, en pixel (facultatif, dans une Array)
* MinHeight = hauteurs minimum, en pixel (facultatif, dans une Array)

<!--
*/
//--><div style="border:1px dashed green;margin:1em;padding:1em;"><source lang=javascript>
//<pre><nowiki>

function MoveResizeFixed_AddResizeArea(elementArea, elementsToResize, MinWidth, MinHeight){
     if((!elementArea)||(!elementsToResize)) return;
     elementArea.onmousedown = function(event){
          var monbody = document.body;
          if(!event) { event = window.event; }
          var positionSouris_X;
          var positionSouris_Y;
          if(MoveResizeFixed_NavIsIE()){ 
               positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
               positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
          }else{
               positionSouris_X = parseInt( event.clientX );
               positionSouris_Y = parseInt( event.clientY );
          }
          for(var a=0;a<elementsToResize.length;a++){
               elementsToResize.initialWidth = parseInt( positionSouris_X - elementsToResize.offsetWidth );
               elementsToResize.initialHeight = parseInt( positionSouris_Y - elementsToResize.offsetHeight );
               elementsToResize.style.opacity = '.8';
          }
          monbody.onmousemove=function(event) {
               if(!event) { event = window.event; }
               var positionSouris_X;
               var positionSouris_Y;
               if(MoveResizeFixed_NavIsIE()){ 
                    positionSouris_X = parseInt( event.clientX + monbody.scrollLeft );
                    positionSouris_Y = parseInt( event.clientY + monbody.scrollTop );
               }else{
                    positionSouris_X = parseInt( event.clientX );
                    positionSouris_Y = parseInt( event.clientY );
               }
               var MinWidthDone = false;
               var MinHeightDone = false;
               for(var a=0;a<elementsToResize.length;a++){
                    var NewWidth = parseInt( positionSouris_X - elementsToResize.initialWidth  );
                    var NewHeight = parseInt( positionSouris_Y - elementsToResize.initialHeight );
                    if(MinWidth){
                         if(MinWidth || MinWidth==0){
                              if(NewWidth<parseInt(MinWidth)){
                                   NewWidth = MinWidth;
                                   MinWidthDone = true;
                              }
                         }
                    }
                    if(MinHeight){
                         if(MinHeight || MinHeight==0){
                              if(NewHeight<parseInt(MinHeight)){
                                   NewHeight = MinHeight;
                                   MinHeightDone = true;
                              }
                         }
                    }
                    elementsToResize.style.width  = NewWidth + 'px';
                    elementsToResize.style.height = NewHeight + 'px';
               }
               if(MinWidthDone){
                    for(var a=0;a<elementsToResize.length;a++){
                         if(MinWidth) elementsToResize.style.width  = MinWidth + 'px';
                    }
               }
               if(MinHeightDone){
                    for(var a=0;a<elementsToResize.length;a++){
                         if(MinHeight) elementsToResize.style.height  = MinHeight + 'px';
                    }
               }
          };
          monbody.onmouseup=function(event) {
               for(var a=0;a<elementsToResize.length;a++){
                    elementsToResize.style.opacity = '';
               }
               monbody.onmousemove = null;
               monbody.onmouseup = null;
          };
     };
     elementArea.style.cursor = "se-resize";
}
//</nowiki></pre></source></div>