/*

And here is some totally superfluous JavaScript to make
all the elements on my page draggable.

*/
var trashempty = true;
var dropTarget;

dojo.event.connect(window, "onload", function (e) {
	var all = document.body.getElementsByTagName("*");
	for (var i = 0; i < all.length; i++) {
		var tags = /h[0-6]|p|th|td/i;
		if (tags.test(all[i].nodeName)) { new DragSource(all[i]); }
	}
	
	// create the trashcan
	dropTarget = new DropTarget();
});

DragSource = function (node) {
	dojo.dnd.HtmlDragSource.call(this, node, "node");
}

dojo.inherits(DragSource, dojo.dnd.HtmlDragSource);

DragSource.prototype.onDragStart = function () {	
	var el = this.domNode;

	var clone = el.cloneNode(true);
	with (clone.style) {
		position = "absolute";
		top = dojo.style.getAbsoluteY(el) + "px";
		left = dojo.style.getAbsoluteX(el) + "px";
		marginTop = "0"; marginLeft = "0";
		// add some padding to grab ahold of
		paddingBottom = "1em"; paddingRight = "1em";
	}
		
	document.body.appendChild(clone);
	el.style.visibility = "hidden";

	// move control over to the floating clone
	dojo.dnd.dragManager.unregisterDragSource(this);
	new dojo.dnd.HtmlDragMoveSource(clone, this.type);
	var dragObject = new dojo.dnd.HtmlDragMoveObject(clone, this.type);

	//dropTarget.domNode.style.visibility = "visible";
	//dragObject.onDragEnd = function (e) {
	//	dropTarget.domNode.style.visibility = "hidden";
	//}

	return dragObject;
}

// waste paper basket
DropTarget = function () {
	var img = document.createElement("img");
	img.src = "trash" + (trashempty ? "empty" : "full") + ".png";
	with (img.style) {
		position = "absolute";
		//visibility = "hidden";
		bottom = "50px"; right = "50px";
	}
	document.body.appendChild(img);

	dojo.dnd.HtmlDropTarget.call(this, img, "node");
}

dojo.inherits(DropTarget, dojo.dnd.DropTarget);

DropTarget.prototype.onDragOver = function (e) {
	this.domNode.src = "trash" + (trashempty ? "empty" : "full") + ".hover.png";
	return true;
}
DropTarget.prototype.onDragOut = function (e) {
	this.domNode.src = "trash" + (trashempty ? "empty" : "full") + ".png";
}

DropTarget.prototype.onDrop = function (e) {
	e.dragObject.domNode.style.display = "none";
	trashempty = false;
	this.onDragOut(e);
	return true;
}
