Utilisateur:Dr Brains/VectorSearchDeluxe.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.
$( VectorSearchDeluxe );

function VectorSearchDeluxe(){
     var SearchDiv = document.getElementById('simpleSearch');
     if(!SearchDiv) return;
     var Select = document.createElement('select');
     Select.id = "searchNSSelector";
     for(var NS in mw.config.get( 'wgFormattedNamespaces' )){
          var ThisNamespace = mw.config.get( 'wgFormattedNamespaces' )[NS];
          var Option = document.createElement('option');
          Option.value = ThisNamespace;
          Option.innerHTML = ThisNamespace;
          Option.onclick = function(){
               var SearchInput = document.getElementById('searchInput');
               if(!SearchInput) return;
               SearchInput.focus();
               SearchInput.value = this.value + (this.value=="" ? "" : ":");
          }
          Select.appendChild(Option);
     } 
     Select.onkeyup = function(e){
          if(!e) e = window.event;
          if (e.keyCode != 13) return;
          var SearchInput = document.getElementById('searchInput');
          if(!SearchInput) return;
          var Options = this.getElementsByTagName('option');
          for(var a=0;a<Options.length;a++){
               if(!Options[a].selected) continue;
               SearchInput.focus();
               SearchInput.value = Options[a].value + (Options[a].value=="" ? "" : ":");
          }
     };
     SearchDiv.appendChild(Select);
     VectorSearchDeluxeGetStyles(Select, SearchDiv, "block");
}

function VectorSearchDeluxeGetStyles(Select, SearchDiv, Display){
     Select.style.display = Display;
     Select.style.position = "absolute";
     Select.style.zIndex = 1000;
     Select.style.top = parseInt(parseInt(SearchDiv.innerTop) + parseInt(SearchDiv.innerHeight)) + "px";
     Select.style.left = parseInt(SearchDiv.innerLeft) + "px";
}