var drag = new Object();
drag.z = 100;

function drag_init(event, id, id2) {
	var x, y;
	var element, element2;

	if (id)
		element = $(id);

	else {
		element = event.element();
		// If this is a text node, use its parent element.
		if (element.nodeType == 3)
			element = element.parentNode;
	}
	
	x = event.pointerX();
	y = event.pointerY();

	drag.cx = x;
    drag.cy = y;

	drag.element = init_element(element);
	drag.element2 = init_element(id2);
	drag.z++;

	$$('body')[0].observe('mousemove', drag_exec);
	$$('body')[0].observe('mouseup', drag_clear);
	event.stop();
}

function init_element(element) {
	element = $(element);

	if (!element)
		return null;

	element.absolutize();
	element.el = parseInt(element.style.left, 10);
	element.et = parseInt(element.style.top,  10);

	if (isNaN(element.el)) element.el = 0;
	if (isNaN(element.et)) elemet.et  = 0;

	if (element.style.zIndex > drag.z)
		drag.z = element.style.zIndex;
	element.style.zIndex = drag.z;
	return element;
}

function move_element(element, x, y) {
	element = $(element);
	if (element) {
		element.style.left = (element.el + x - drag.cx) + "px";
	    element.style.top  = (element.et + y - drag.cy) + "px";
	}
}

function drag_exec(event) {

	var x, y;

	x = event.pointerX();
	y = event.pointerY();

	move_element(drag.element, x, y);
	move_element(drag.element2, x, y);
	event.stop();
}

function drag_clear(event) {
	$$('body')[0].stopObserving('mousemove', drag_exec);
	$$('body')[0].stopObserving('mouseup', drag_clear);
}

