// $B%0%m!<%P%kJQ?t(B
var browser = get_browser();
var divs = new Array();
var target = false;
var offset_x = 0;
var offset_y = 0;

// onload$B;~$K%$%Y%s%H%O%s%I%i$r@_Dj(B
window.onload = function () {
	prepare_divs();
	document.onmousemove = drag_div;
	document.onmouseup = release_target;
}

// onmousedown$B$NF0:n$H(Bz-index$B$r@_Dj(B
function prepare_divs() {
	if (document.getElementsByTagName) {
		divs = document.getElementsByTagName("div");
	}
	else { return false; }

	for (i = 0; i < divs.length; i++) {
		divs[i].onmousedown = set_target;
		divs[i].style.zIndex = i;
	}
}

// $B%V%i%&%6$N<oN`$r<hF@(B
function get_browser() {
	var str = navigator.appName;
	// Netscape, Firefox, Safari
	if (str.match(/netscape/i)) { return "ns"; }
	// Internet Explorer
	else if (str.match(/explorer/i)) { return "ie"; }
	// Opera
	else if (str.match(/opera/i)) { return "op"; }
	else { return false; }
}

// $B%/%j%C%/$5$l$?(Bdiv$BMWAG$r%I%i%C%0%?!<%2%C%H$K$9$k(B
function set_target(e) {
	var target_id = this.getAttribute("id");
	target = document.getElementById(target_id);
	move_front();
	if (browser == "ns") {
		offset_x = e.layerX;
		offset_y = e.layerY;
	}
	else if (browser == "ie" || browser == "op") {
		offset_x = event.offsetX;
		offset_y = event.offsetY;
	}
}

// $B%/%j%C%/$5$l$?(Bdiv$BMWAG$r:GA0LL$X0\F0(B
function move_front() {
	var old_z = target.style.zIndex;
	target.style.zIndex = divs.length;
	for (i = 0; i < divs.length; i++) {
		if (divs[i].style.zIndex > old_z) {
			divs[i].style.zIndex -= 1;
		}
	}
}

// div$BMWAG$r%I%i%C%0$9$k(B
function drag_div(e) {
	if (target && browser) {
		var left = "";
		var top = "";
		if (browser == "ns") {
			left = e.pageX - offset_x + "px";
			top = e.pageY - offset_y + "px";
		}
		else if (browser == "ie" || browser == "op") {
			left = event.x - offset_x + "px";
			top = event.y - offset_y + "px";
		}
		target.style.left = left;
		target.style.top = top;
	}
}

// div$BMWAG$r%I%m%C%W$9$k(B
function release_target() {
	target = false;
}
