function addHandler(object, event, handler, useCapture) { 
	if (object.addEventListener) { 
		object.addEventListener(event, handler, useCapture ? useCapture : false); 
	} else if (object.attachEvent) { 
		object.attachEvent('on' + event, handler); 
	} else alert("Add handler is not supported"); 
}


var flag=false;
var shift_x;
var shift_y;
var letter = false;

addHandler (
	document,
	"mousemove",
	function(e) {
		do_dragging(e);
	}
);

addHandler (
	document,
	"mouseup",
	function(e) {
		end_dragging();
	}
);

function start_dragging(let,e) {
	if(!e) e = window.event;
	flag=true;
	letter = let;
	shift_x = e.clientX-parseInt(let.style.left);
	shift_y = e.clientY-parseInt(let.style.top);
	if(e.stopPropagation) e.stopPropagation();
	else e.cancelBubble = true;
	if(e.preventDefault) e.preventDefault();
	else e.returnValue = false;
}

function end_dragging() {
	flag=false;
	letter = false;
}

function do_dragging(e) {
	if(!flag) return;
	if(!e) e = window.event;
	let = letter;
	let.style.left = (e.clientX-shift_x) + "px";
	let.style.top = (e.clientY-shift_y) + "px";
	if(e.stopPropagation) e.stopPropagation();
	else e.cancelBubble = true;
	if(e.preventDefault) e.preventDefault();
	else e.returnValue = false;
}
