 var DragHandler = {
 
 
	// private property.
	_oElem : null,
 
 
	// public method. Attach drag handler to an element.
	attach : function(oElem) {
		oElem.onmousedown = DragHandler._dragBegin;
 
		// callbacks
		oElem.dragBegin = new Function();
		oElem.drag = new Function();
		oElem.dragEnd = new Function();
 
		return oElem;
	},
 
 
	// private method. Begin drag process.
	_dragBegin : function(e) {
		var oElem = DragHandler._oElem = this;
 
		if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '12px'; }
 
		var y = parseInt(oElem.style.top);
 		if ((y >= 12)&&(y <= 565))	 {
		e = e ? e : window.event;
		oElem.mouseY = e.clientY;
 
		oElem.dragBegin(oElem, y);
 
		document.onmousemove = DragHandler._drag;
		document.onmouseup = DragHandler._dragEnd;
		return false;
		}
		else {
		if (y < 12) y = 12;	else if (y > 565) y = 565;
		e = e ? e : window.event;
		oElem.mouseY = e.clientY;
 
		oElem.dragBegin(oElem, y);
 
		document.onmousemove = DragHandler._drag;
		document.onmouseup = DragHandler._dragEnd;
		return false;	
		}
	},
 
 
	// private method. Drag (move) element.
	_drag : function(e) {
		var oElem = DragHandler._oElem;
 
		var y = parseInt(oElem.style.top);
		if ((y >= 12)&&(y <= 565)) {
		e = e ? e : window.event;
		var t = y + (e.clientY - oElem.mouseY);
		if ((t >= 12)&&(t <= 565)) oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px';

		oElem.mouseY = e.clientY;
 
		oElem.drag(oElem, y);

		return false;
		}
		else {
		if (y < 12) y = 12;	else if (y > 565) y = 565;
		e = e ? e : window.event;
		var t = y + (e.clientY - oElem.mouseY);
		if ((t >= 12)&&(t <= 565)) oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px';
 
		oElem.mouseY = e.clientY;
 
		oElem.drag(oElem, y);

		return false;	
		}
	},
 
 
	// private method. Stop drag process.
	_dragEnd : function() {
		var oElem = DragHandler._oElem;
 
		var y = parseInt(oElem.style.top);
 		if ((y >= 12)&&(y <= 565)) {
		oElem.dragEnd(oElem, y);
 
		document.onmousemove = null;
		document.onmouseup = null;
		DragHandler._oElem = null;
		}
		else {
		if (y < 12) y = 12;	else if (y > 565) y = 565;
		document.onmousemove = null;
		document.onmouseup = null;
		DragHandler._oElem = null;
		oElem.dragEnd(oElem, y);
			
		}
	}
 
}
