
function Homedraggable(element) {
  var xDelta = 0, yDelta = 0;
  var xStart = 0, yStart = 0;
  var xHome, yHome;
  var PK, type;
  function enddrag() {
    document.onmouseup = null;
	if(typeof(getMouseXY)!="undefined") {
		document.onmousemove = getMouseXY;
    }
	else document.onmousemove = null;
  }


  function drag(hEvent) {
    hEvent = hEvent || window.event;
    xDelta = xStart - parseInt(hEvent.clientX);
    yDelta = yStart - parseInt(hEvent.clientY);
    xStart = parseInt(hEvent.clientX);
    yStart = parseInt(hEvent.clientY);
    element.style.top = (parseInt(element.style.top) - yDelta) + "px";
    element.style.left = (parseInt(element.style.left) - xDelta) + "px";
	return false;
  }


  function md(hEvent) {
    hEvent = hEvent || window.event;
    xStart = parseInt(hEvent.clientX);
    yStart = parseInt(hEvent.clientY);
	element.style.opacity = 0.5;
	element.style.zIndex = element.style.zIndex + 50;
	element.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=50);";
    element.style.top = parseInt(getStyle(element,"top")) + "px";
    element.style.left = parseInt(getStyle(element,"left")) + "px";
	document.isDragging = 1;
	document.dragType = element.type;
	document.dragPK = element.PK;
    element.onmouseup = mu;
    document.onmousemove = drag;
    return false;
  }

  function mu(hEvent) {
    hEvent = hEvent || window.event;
	element.style.opacity = 1.0;
	element.style.zIndex = element.style.zIndex - 50;	element.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=100);";
	document.dragEndTop = hEvent.clientY;
	document.dragEndLeft = hEvent.clientX;
    element.style.top = element.yHome + "px";
    element.style.left = element.xHome + "px";
	document.isDragging = 0;
	document.dragSubmissionConfirmed = 1;
	element.onmouseup = null;
	enddrag();
    return false;
  }

  element.onmousedown = md;

}

function Freedraggable(element,formX,formY,xOff,yOff) {
	if((typeof(xOff)=="undefined")) var xOff = 0;
	if((typeof(yOff)=="undefined")) var yOff = 0;
  var xDelta = 0, yDelta = 0;
  var xStart = 0, yStart = 0;
  var xHome, yHome;
  var PK, type;

  function enddrag() {
    document.onmouseup = null;
	//alert(typeof(getMouseXY));
	if(typeof(getMouseXY)!="undefined") {
		document.onmousemove = getMouseXY;
    }
	else document.onmousemove = null;
  }


  function drag(hEvent) {
    hEvent = hEvent || window.event;
    xDelta = xStart - parseInt(hEvent.clientX);
    yDelta = yStart - parseInt(hEvent.clientY);
    xStart = parseInt(hEvent.clientX);
    yStart = parseInt(hEvent.clientY);
    element.style.top = (parseInt(element.style.top) - yDelta) + "px";
    element.style.left = (parseInt(element.style.left) - xDelta) + "px";
	if(typeof(formX)!=="undefined") formX.value=parseInt(element.style.left)+parseInt(xOff);
	if(typeof(formY)!=="undefined") formY.value=parseInt(element.style.top)+parseInt(yOff);
	return false;
  }


  function md(hEvent) {
    hEvent = hEvent || window.event;
    xStart = parseInt(hEvent.clientX);
    yStart = parseInt(hEvent.clientY);
    element.style.top = parseInt(getStyle(element,"top")) + "px";
    element.style.left = parseInt(getStyle(element,"left")) + "px";
	if(typeof(formX)!=="undefined") formX.value=parseInt(element.style.left)+parseInt(xOff);
	if(typeof(formY)!=="undefined") formY.value=parseInt(element.style.top)+parseInt(yOff);
    document.onmouseup = enddrag;
    document.onmousemove = drag;
    return false;
  }


  element.onmousedown = md;

}

function DraggableWindow(element) {
  var xDelta = 0, yDelta = 0;
  var xStart = 0, yStart = 0;
  var xHome, yHome;
  var PK, type;

  function enddrag()
  {
    document.onmouseup = null;
    document.onmousemove = null;
  }


  function drag(hEvent)
  {
    hEvent = hEvent || window.event;
    xDelta = xStart - parseInt(hEvent.clientX);
    yDelta = yStart - parseInt(hEvent.clientY);
    xStart = parseInt(hEvent.clientX);
    yStart = parseInt(hEvent.clientY);
    element.style.top = (parseInt(element.style.top) - yDelta) + "px";
    element.style.left = (parseInt(element.style.left) - xDelta) + "px";
	return false;
  }


  function md(hEvent)
  {
    hEvent = hEvent || window.event;
    xStart = parseInt(hEvent.clientX);
    yStart = parseInt(hEvent.clientY);
    element.style.top = parseInt(getStyle(element,"top")) + "px";
    element.style.left = parseInt(getStyle(element,"left")) + "px";
    document.onmouseup = enddrag;
    document.onmousemove = drag;
    return false;
  }


  element.onmousedown = md;

}

function Droppable(element)
{
  var xHome, yHome;
  var xExt, yExt;
  var PK, type, submission;

  function over(hEvent) {
	//alert("over");
    hEvent = hEvent || window.event;
	if ((document.dragEndLeft >= element.xHome) && (document.dragEndLeft <= element.xExt) && (document.dragEndTop >= element.yHome) && (document.dragEndTop <= element.yExt)) {
		if (((document.dragType == element.type)||(element.type == "all")) && document.dragSubmissionConfirmed == 1) {
			document.dragSubmissionConfirmed = 0;
			element.submission = document.dragPK;
			//alert(element.submission);
			var submissioncheck = element.submission.split("_");
			if (submissioncheck.length > 1) {
				element.submission = submissioncheck[1];
				if (submissioncheck.length > 2) {
					element.submission += "~dropid~" + submissioncheck[2];
				}
			}
			//alert(element.submission);
			var drop_div	= "block_" + element.PK;
			var drop_params	= "drop" + "~dropid~" + element.id + "~dropid~" + element.submission;
			
			SendXMLHttpUpdate(XMLHttp,drop_div,element.PK,"dragdrop",drop_params);
		}
	}
    return false;
  }

  element.onmousemove = over;  
  element.onmouseover = over;

}
