
document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var dragObject  = null;
var mouseOffset = null;

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(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};
}

function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);

	if(dragObject){
		dragObject.style.position = 'absolute';
		dragObject.style.top      = mousePos.y - mouseOffset.y;
		dragObject.style.left     = mousePos.x - mouseOffset.x;

		return false;
	}
}
function mouseUp(){
	if(dragObject!=null){
		xcall('?remoteposition=' + dragObject.id + '&x=' + dragObject.style.left + '&y='+dragObject.style.top);
	}
	dragObject = null;
}

function makeDraggable(item){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}
function makeSlider(item){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

            function xcall(addr) 
            {
            var xmldoc = doXMLHTTPGet(addr);  return xmldoc;
            }
            function doXMLHTTPGet(vurl) 
            { 
            if (window.XMLHttpRequest) 
                { 
                //We are in a non-IE browser 
                httpObj=new XMLHttpRequest() 
                } 
                else if (window.ActiveXObject) 
                { 
                //We are in IE 
                httpObj=new ActiveXObject("Microsoft.XMLHTTP") 
                } 
                //Return the XML document when it has finished loading 
                httpObj.onreadystatechange= function() 
                    { 
                     if (httpObj) 
                        if (httpObj.readyState==4) 
                        { 
                                if (httpObj.status==200) 
                                { 
                                        if(httpObj.responseText == '')
                                            returnData='';		
                                        else
                                            returnData='';	
                                } 
                                else 
                                { 
                                        alert("Problem retrieving XML data:" + httpObj.statusText + ' ('+vurl+')');
                                } 
                        } 
                } 
            //Request the XML document 
            httpObj.open("GET",vurl,true); 
            httpObj.send(null); 
            ;
            } 

