function toggleFocus(event) {
	var event = event ? event : window.event;
	// decide whether an element wants focus or not
	if (this.hasDragFocus == true) {
		detachFocus(this);
	}
	else {
		var mouseXY = getMouseXY(event);
		var elementXY = getXY(this);
		var elementMargin = getElementMargin(this);
		// offset will keep the pointer positioned correctly within the element
		var offsetXY = new Object();
		offsetXY.X = mouseXY.X - elementXY.X - elementMargin.X;
		offsetXY.Y = mouseXY.Y - elementXY.Y - elementMargin.Y;
		attachFocus(this,offsetXY);
	}
}
function attachFocus(element,offsetXY) {
	// go about things
	element.hasDragFocus = true;
	element.className =  element.className + ' focused ';
	element.offsetXY = offsetXY;
	element.onmousemove = dragElement;
	element.onmouseup = detachFocus;
	element.onmouseout = detachFocus;
}
function detachFocus() {
	// stop going about things
	this.onmousemove = null;
	//this.onmouseout = toggleFocus;
	this.hasDragFocus = false;
	if (this.className && this.className.indexOf('focused') > -1) {
		this.className = this.className.replace('focused','');
	}
}
function dragElement(mouseEvent) {
	var mouseEvent = mouseEvent ? mouseEvent : window.event;
	var mouseXY = getMouseXY(mouseEvent);
	var element = document.getElementById(this.id);
	setXY(element,mouseXY.X - this.offsetXY.X,mouseXY.Y - this.offsetXY.Y);
}
function getMouseXY(mouseEvent) {
	var XY = new Object();
	XY.X = mouseEvent.pageX;
	XY.Y = mouseEvent.pageY;
	return XY;
}
function getXY(element) {
	// get coordinates
	var XY = new Object();
	XY.X = element.offsetLeft;
	XY.Y = element.offsetTop;
	return XY;
}
function getElementMargin(element) {
	elementMarginXY = new Object();
	elementMarginXY.X = element.style.marginTop;
	elementMarginXY.Y = element.style.marginLeft;
	element.style.marginTop = null;
	element.style.marginLeft = null;
	return elementMarginXY;
}
function setXY(element,X,Y) {
	// set coordinates
	element.style.position='absolute';
	// element.textContent = X + ':' + Y;
	element.style.left = X.toString() + 'px';
	element.style.top = Y.toString() + 'px';
}
function initialiseDrag() {
	try {
		document.getElementById(draggable).onmousedown = toggleFocus;
	}
	catch (e) {
	}
}
