/**
*
*  Crossbrowser Drag Handler
*  http://www.webtoolkit.info/
*
**/

function initDivider()
{

}


//------------------------------------------------------------------------------
// MOUSE Drag & Drop



var _mouse=
{

  dragObject  : null,
  mouseOffset : null,
	x:0, y:0,
  
  coords: function (ev)
  {
  	if(ev.pageX || ev.pageY){
			_mouse.x=ev.pageX;
			_mouse.y=ev.pageY;
  		//return {x:ev.pageX, y:ev.pageY};
			return;
  	}
  	//return {
  	//	x:
  	//	y:
  	//};
		
		_mouse.x=ev.clientX + document.body.scrollLeft - document.body.clientLeft;
		_mouse.y=ev.clientY + document.body.scrollTop  - document.body.clientTop;
		
		
  },
  
  getOffset: function(target, ev)
  {
  	ev = ev || window.event;
  
  	var docPos    = _mouse.getPosition(target);
  	_mouse.coords(ev);
  	return {x:_mouse.x - docPos.x, y:_mouse.y - docPos.y};
  },
  
  getPosition: function(e)
  {
  	var left = 0;
  	var top  = 0;
  
  	//while (e.offsetParent){
  	//	left += e.offsetLeft;
  	//	top  += e.offsetTop;
  	//	e     = e.offsetParent;
  	//}
  
  	left += e.offsetLeft;
  	top  += e.offsetTop;
  
  	return {x:left, y:top};
  },
  getDocumentPosition: function(e)
  {
    var left = 0;
    var top  = 0;
  
    while (e.offsetParent){
      left += e.offsetLeft;
      top  += e.offsetTop;
      e     = e.offsetParent;
    }
  
    left += e.offsetLeft;
    top  += e.offsetTop;
  
    return {x:left, y:top};
  },	
  
  move: function(ev)
  {
  	ev           = ev || window.event;
		var target   = ev.target || ev.srcElement;
  	_mouse.coords(ev);
  
  	if(_mouse.dragObject){
  		_mouse.dragObject.style.position = 'absolute';
  		_mouse.dragObject.style.top      = (_mouse.y - _mouse.mouseOffset.y)+'px';
  		_mouse.dragObject.style.left     = (_mouse.x - _mouse.mouseOffset.x)+'px';
  
      _mouse.dragObject.update();
  		return false;
  	}
  },
  
  btnUp: function()
  {  
    if (_mouse.dragObject)
    {
      _mouse.dragObject.update();
  	  _mouse.dragObject = null;
  	} 
  },
    
  makeDraggable: function(item,grip){  
    // item = object to be draged
    // grip = object that is used to get grip on the dragged object
  	if(!item) return;
  	if(!grip) grip=item;
  	grip.dragObject=item;
  	grip.onmousedown = function(ev){
  		_mouse.dragObject  = this.dragObject;
  		_mouse.mouseOffset = _mouse.getOffset(this.dragObject, ev);
  		return false;
  	}
  },
	createDragContainer:function(){
	  /*
	  Create a new "Container Instance" so that items from one "Set" can not
	  be dragged into items from another "Set"
	  */
	  var cDrag        = DragDrops.length;
	  DragDrops[cDrag] = [];
	
	  /*
	  Each item passed to this function should be a "container".  Store each
	  of these items in our current container
	  */
	  for(var i=0; i<arguments.length; i++){
	    var cObj = arguments[i];
	    DragDrops[cDrag].push(cObj);
	    cObj.setAttribute('DropObj', cDrag);
	
	    /*
	    Every top level item in these containers should be draggable.  Do this
	    by setting the DragObj attribute on each item and then later checking
	    this attribute in the mouseMove function
	    */
	    for(var j=0; j<cObj.childNodes.length; j++){
	
	      // Firefox puts in lots of #text nodes...skip these
	      if(cObj.childNodes[j].nodeName=='#text') continue;
	
	      cObj.childNodes[j].setAttribute('DragObj', cDrag);
	    }
	  }
	}
	
	
}

document.onmousemove = _mouse.move;
document.onmouseup   = _mouse.btnUp;
