	var $ = function(id) {
		return document.getElementById(id)
	};
	Array.prototype.extend = function(C) {
		for ( var B = 0, A = C.length; B < A; B++) {
			this.push(C[B]);
		}
		return this;
	}
	function divDrag() {
		debugger;
		var A, B, $cn;
		var zIndex = 1;
		this.dragStart = function(e) {
			debugger;
			e = e || window.event;
			if ((e.which && (e.which != 1)) || (e.button && (e.button != 1)))
				return;
			var pos = this.$pos;
			$cn = this.parent || this;
			if (document.defaultView) {
				_top = document.defaultView.getComputedStyle($cn, null)
						.getPropertyValue("top");
				_left = document.defaultView.getComputedStyle($cn, null)
						.getPropertyValue("left");
			} else {
				if ($cn.currentStyle) {
					_top = $cn.currentStyle["top"];
					_left = $cn.currentStyle["left"];
				}
			}
			pos.ox = (e.pageX || (e.clientX + document.documentElement.scrollLeft))
					- parseInt(_left);
			pos.oy = (e.pageY || (e.clientY + document.documentElement.scrollTop))
					- parseInt(_top);
			if (!!A) {
				if (document.removeEventListener) {
					document.removeEventListener("mousemove", A, false);
					document.removeEventListener("mouseup", B, false);
				} else {
					document.detachEvent("onmousemove", A);
					document.detachEvent("onmouseup", B);
				}
			}
			A = this.dragMove.create(this);
			B = this.dragEnd.create(this);
			if (document.addEventListener) {
				document.addEventListener("mousemove", A, false);
				document.addEventListener("mouseup", B, false);
			} else {
				document.attachEvent("onmousemove", A);
				document.attachEvent("onmouseup", B);
			}
			$cn.style.zIndex = (++zIndex);
			this.stop(e);
		}
		this.dragMove = function(e) {
			e = e || window.event;
			var pos = this.$pos;
			$cn = this.parent || this;
			$cn.style.top = (e.pageY || (e.clientY + document.documentElement.scrollTop))
					- parseInt(pos.oy) + 'px';
			$cn.style.left = (e.pageX || (e.clientX + document.documentElement.scrollLeft))
					- parseInt(pos.ox) + 'px';
			this.stop(e);
		}
		this.dragEnd = function(e) {
			var pos = this.$pos;
			e = e || window.event;
			if ((e.which && (e.which != 1)) || (e.button && (e.button != 1)))
				return;
			$cn = this.parent || this;
			if (!!(this.parent)) {
				this.style.backgroundColor = pos.color
			}
			if (document.removeEventListener) {
				document.removeEventListener("mousemove", A, false);
				document.removeEventListener("mouseup", B, false);
			} else {
				document.detachEvent("onmousemove", A);
				document.detachEvent("onmouseup", B);
			}
			A = null;
			B = null;
			$cn.style.zIndex = (++zIndex);
			this.stop(e);
		}
		this.shiftColor = function() {
			this.style.backgroundColor = "#EEEEEE";
		}
		this.position = function(e) {
			var t = e.offsetTop;
			var l = e.offsetLeft;
			while (e = e.offsetParent) {
				t += e.offsetTop;
				l += e.offsetLeft;
			}
			return {
				x : l,
				y : t,
				ox : 0,
				oy : 0,
				color : null
			}
		}
		this.stop = function(e) {
			if (e.stopPropagation) {
				e.stopPropagation();
			} else {
				e.cancelBubble = true;
			}
			if (e.preventDefault) {
				e.preventDefault();
			} else {
				e.returnValue = false;
			}
		}
		this.stop1 = function(e) {
			e = e || window.event;
			if (e.stopPropagation) {
				e.stopPropagation();
			} else {
				e.cancelBubble = true;
			}
		}
		this.create = function(bind) {
			var B = this;
			var A = bind;
			return function(e) {
				return B.apply(A, [ e ]);
			}
		}
		this.dragStart.create = this.create;
		this.dragMove.create = this.create;
		this.dragEnd.create = this.create;
		this.shiftColor.create = this.create;
		this.initialize = function() {
			for ( var A = 0, B = arguments.length; A < B; A++) {
				C = arguments[A];
				if (!(C.push)) {
					C = [ C ];
				}
				$C = (typeof (C[0]) == 'object') ? C[0]
						: (typeof (C[0]) == 'string' ? $(C[0]) : null);
				if (!$C)
					continue;
				$C.$pos = this.position($C);
				$C.dragMove = this.dragMove;
				$C.dragEnd = this.dragEnd;
				$C.stop = this.stop;
				if (!!C[1]) {
					$C.parent = C[1];
					$C.$pos.color = $C.style.backgroundColor;
				}
				if ($C.addEventListener) {
					$C.addEventListener("mousedown", this.dragStart.create($C),
							false);
					if (!!C[1]) {
						$C.addEventListener("mousedown", this.shiftColor
								.create($C), false);
					}
				} else {
					$C.attachEvent("onmousedown", this.dragStart.create($C));
					if (!!C[1]) {
						$C.attachEvent("onmousedown", this.shiftColor
								.create($C));
					}
				}
			}
		}
		this.initialize.apply(this, arguments);
	}
	