// Version vom 18. 8. 2008
// Nach http://javascript.jstruebig.de/skripte/57/
// www.j-berkemeier.de
// Benötigt AddEvent.js, jb_mousemove.js

var jb_DnD = function () {
 var jb_pos = function(el) {
  var pos = new Object();
  pos.x = pos.y = 0;
  if(el && el.offsetParent){
   while(el) {
    pos.x += el.offsetLeft;
    pos.y += el.offsetTop;
    el = el.offsetParent;
   }
  }
  return pos;
 }
 var getElementsByClassName = function(base,classname) {
  var tag = base.getElementsByTagName("*");
  var Elements = new Array();
  for(var i=0;i<tag.length;i++) {
   if(tag[i].className.indexOf(classname)>-1) Elements[Elements.length] = tag[i];
  }
  return Elements;
 }
 jb_DnD.mkDnD = function(ele) {
  var ee = getElementsByClassName(ele,"Drag_Bar");
  var top = ele;
  ele.style.position = "absolute";
  ele.style.zIndex = zmax;
  if (ee.length==1) { ele = ee[0]; ele.bar = true; } else ele.bar = false
  ele.style.cursor = "move";
  ele.onmousedown = function(e) { // Ziehen starten
   if(this.bar) object = this.parentNode; else object = this;
   Start = jb_pos(object);
   StartPos = jb_mousemove.getPos();
   object.style.zIndex = "10000";
   object.style.backgroundColor="transparent";
   this.onmouseup = function(e) { // Ziehen beenden
    this.onmouseup = null;
    jb_mousemove.remove(id);
    object.style.zIndex = ++zmax;
    object.style.backgroundColor = "";
    object = null;
    return false;
   } // onmouseup
   var move = function(posx,posy) { // Ziehen
    if(object) {
     object.style.left = (Start.x - StartPos.x + posx) + "px";
     object.style.top = (Start.y - StartPos.y + posy) + "px";
    }
    return false;
   } // move
   id = jb_mousemove.add(move);
//   if(e && e.preventDefault) e.preventDefault();
   return false;
  } // onmousedown
  top.onclick = function(e) {
   this.style.zIndex = ++zmax;
   return false;
  } // onclick
 } // mkDnD
 var ele = getElementsByClassName(document,"Drag_n_Drop");
 var object = null;
 var id;
 var zmax = 10;
 var Start;
 var StartPos;
 for(var i=0;i<ele.length;i++) jb_DnD.mkDnD(ele[i]); // alle Tags durchlaufen und ziehbar machen
} // jb_DnD
if (document.getElementsByTagName) addEvent(window,"onload",jb_DnD);