function dragPress(evt, layer) {

        evt = new Evt(evt);
        dragLayer = document.getElementById(layer);
        deltaX = evt.x - getX(dragLayer);
        deltaY = evt.y - getY(dragLayer);
        Evt.addEventListener(document,"mousemove",dragMove,false);
        Evt.addEventListener(document,"mouseup",dragRelease,false);
}

function dragMove(evt) {
	evt = new Evt(evt);
	setX(dragLayer, evt.x - deltaX);
	setY(dragLayer ,evt.y - deltaY);
	evt.consume();
}



function dragRelease(evt) {
	evt = new Evt(evt);	
	Evt.removeEventListener(document,"mousemove",dragMove,false);
	Evt.removeEventListener(document,"mouseup",dragRelease,false);
}

function getX(node) {

    // PS: (defect 2698) changed marginLeft to left 

	if (node.style.left != null && node.style.left != "")

	    return parseInt(node.style.left);

	else

	    return 0;

}



function getY(node) {

    // PS: (defect 2698) changed marginTop to top 

    if (node.style.left != null && node.style.left != "")

	    return parseInt(node.style.top);

	else

	    return 0;

}



function getWidth(node) {

	//return parseInt(node.style.width);

}



function getHeight(node) {

	//return parseInt(node.style.height);

}



function setX(node,x) {
	node.style.left = x + "px";
	document.getElementById('leftvalue').value = x;
}



function setY(node,y) {
	node.style.top = y + "px";
	document.getElementById('topvalue').value = y;

}


function Evt(evt) {

	this.evt = evt ? evt : window.event; 

	this.source = evt.target ? evt.target : evt.srcElement;

	this.x = evt.pageX ? evt.pageX : evt.clientX;

	this.y = evt.pageY ? evt.pageY : evt.clientY;

}



Evt.prototype.toString = function () {

	return "Evt [ x = " + this.x + ", y = " + this.y + " ]";

};


Evt.prototype.consume = function () {

	if (this.evt.stopPropagation) {

		this.evt.stopPropagation();

		this.evt.preventDefault();

	} else if (this.evt.cancelBubble) {

		this.evt.cancelBubble = true;

		this.evt.returnValue  = false;

	}

};



Evt.addEventListener = function (target,type,func,bubbles) {

	if (document.addEventListener) {

		target.addEventListener(type,func,bubbles);

	} else if (document.attachEvent) {

		target.attachEvent("on"+type,func,bubbles);

	} else {

		target["on"+type] = func;

	}

};



Evt.removeEventListener = function (target,type,func,bubbles) {

	if (document.removeEventListener) {

		target.removeEventListener(type,func,bubbles);

	} else if (document.detachEvent) {

		target.detachEvent("on"+type,func,bubbles);

	} else {

		target["on"+type] = null;

	}

};
