home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Theme / 8GadgetPack / 8GadgetPackSetup.msi / Gadgets.7z / Gadgets / AppLauncher.gadget / js / dom-drag.js next >
Text File  |  2010-04-18  |  4KB  |  146 lines

  1. /**************************************************
  2.  * dom-drag.js
  3.  * 09.25.2001
  4.  * www.youngpup.net
  5.  **************************************************
  6.  * 10.28.2001 - fixed minor bug where events
  7.  * sometimes fired off the handle, not the root.
  8.  **************************************************/
  9.  
  10. /**************************************************
  11. * modified extensively by Dean
  12. * I removed all x axis and unneeded code
  13. ***************************************************/
  14.  
  15. var Drag = {
  16.  
  17.     obj : null,
  18.  
  19.     init : function(obj){
  20.         obj.onmousedown    = Drag.start;
  21.         obj.style.pixelTop = 0;
  22.         obj.onDragStart = new Function();
  23.         obj.onDragEnd = new Function();
  24.         obj.onDrag = new Function();
  25.     },
  26.  
  27.     start : function(e){
  28.         Drag.obj = this;
  29.         e = Drag.fixE(e);
  30.         Drag.obj.lastMouseY = e.clientY;
  31.         document.onmousemove = Drag.drag;
  32.         document.onmouseup = Drag.end;
  33.         return false;
  34.     },
  35.  
  36.     drag : function(e){
  37.         e = Drag.fixE(e);
  38.         var ey    = e.clientY;
  39.         var y = parseInt(Drag.obj.style.pixelTop);
  40.         var ny = parseInt(y + ey - Drag.obj.lastMouseY);
  41.         Drag.obj.style.pixelTop = ny;
  42.         Drag.obj.style.pixelLeft = 15;
  43.         Drag.obj.lastMouseY    = ey;
  44.         Drag.obj.onDrag(ny, Drag.obj);
  45.         return false;
  46.     },
  47.  
  48.     end : function(){
  49.         document.onmousemove = null;
  50.         document.onmouseup = null;
  51.         Drag.obj.onDragEnd(Drag.obj);
  52.         Drag.obj = null;
  53.     },
  54.  
  55.     fixE : function(e){
  56.         if (typeof e == 'undefined') e = window.event;
  57.         return e;
  58.     }
  59. };
  60.  
  61. var offsets = new Array();
  62.  
  63. function createDrag(){
  64. try{
  65.   drag.style.display = "";
  66.   dragContainer.innerHTML = "";
  67.  
  68.   oUl = document.createElement("ul");
  69.   oUl.id = "dragBox";
  70.   for (var i=0; i < linksList.length; i++){
  71.     getFilePaths(i);
  72.     oLi = document.createElement("li");
  73.     oLi.id = "item"+i;
  74.     oLi.className = "draggable";
  75.     oLi.innerText = label;
  76.     oLi.style.backgroundImage = "url(\""+img+"\")";
  77.     oUl.appendChild(oLi);
  78.   }
  79.   $("dragContainer").appendChild(oUl);
  80.   
  81.   var dragBox = $("dragBox");
  82.   var elems = dragBox.getElementsByTagName("li");
  83.  
  84.   for (var i = 0; i < elems.length; i++){
  85.     Drag.init(elems[i]);
  86.     elems[i].onDrag = function(y,myElem){
  87.       y = myElem.offsetTop;
  88.       calcOffsets();
  89.       myElem.style.zIndex = 99;
  90.       var pos = whereAmI(myElem);
  91.       var elems = dragBox.getElementsByTagName("li");
  92.       if (pos != elems.length-1 && y > offsets[pos+1]){ 
  93.         dragBox.removeChild(myElem);
  94.         if (elems[pos+1]) dragBox.insertBefore(myElem, elems[pos+1]);
  95.         else dragBox.appendChild(myElem);
  96.         myElem.style.pixelTop = 0;                
  97.       }
  98.       if (pos != 0 && y < offsets[pos-1]){ 
  99.         dragBox.removeChild(myElem);
  100.         dragBox.insertBefore(myElem, elems[pos-1]);
  101.         myElem.style.pixelTop = 0;
  102.       }
  103.     };
  104.     elems[i].onDragEnd = function(myElem){
  105.       myElem.style.pixelTop = 0;
  106.       myElem.style.pixelLeft = 0;                
  107.       myElem.style.zIndex = 1;
  108.     }
  109.   }
  110.   calcOffsets();
  111. } catch(err) {debugLog("createDrag: "+err.name+" - "+err.message)}
  112. }
  113.  
  114. function calcOffsets(){
  115.   var elems = dragBox.getElementsByTagName("li");
  116.   for (var i = 0; i < elems.length; i++){
  117.     offsets[i] = elems[i].offsetTop;
  118.   }
  119. }
  120.  
  121. function whereAmI(elem){ 
  122.   var elems = dragBox.getElementsByTagName("li");
  123.   for (var i = 0; i < elems.length; i++){
  124.     if (elems[i] == elem) { return i }
  125.   }
  126. }
  127.  
  128. function saveDragged(){
  129. try{
  130.   tmpLinks = new Array(); tmpIcons = new Array(); tmpSwitch = new Array();
  131.   var elems = dragBox.getElementsByTagName("li");
  132.   for (var i = 0; i < elems.length; i++){
  133.     var currItem = parseInt(elems[i].id.substr(4));
  134.     tmpLinks[i] = linksList[currItem];
  135.     tmpIcons[i] = iconList[currItem];
  136.     tmpSwitch[i] = switchList[currItem];
  137.   }
  138.   linksList = tmpLinks;
  139.   iconList = tmpIcons;
  140.   switchList = tmpSwitch;
  141.   bldShortCuts();
  142.   drag.style.display = "none";
  143. } catch(err) {debugLog("saveDragged: "+err.name+" - "+err.message)}
  144. }
  145.  
  146.