// resize fix for ns4
var origWidth, origHeight;
if (document.layers) {
	origWidth = window.innerWidth; origHeight = window.innerHeight;
	window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

window.onload = initNS4Capture;
function initNS4Capture() {
	if (document.layers) {
		for (var i=0; i<document.layers.length; i++) {
			if (document.layers[i].id.indexOf("drag")!=-1) {
		var lyrRef = document.layers[i];
				lyrRef.captureEvents(Event.MOUSEDOWN);
				lyrRef.onmousedown=dragInit;
			}
    }
	}
}

function hideIt(id) {
	var lyr, lyrcss;
	lyr = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	if (lyr) {
		lyrcss = (lyr.style)? lyr.style: lyr;
		lyrcss.visibility = "hidden";
	}
}

function restoreIt(id,x,y) {
	var lyr, lyrcss;
	lyr = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	if (lyr) {
		var px = (document.layers||window.opera)? "": "px";
		lyrcss = (lyr.style)? lyr.style: lyr;
		lyrcss.left = x+px;
		lyrcss.top = y+px;
		lyrcss.visibility = "visible";
	}
}

var dragObj = new Object();
dragObj.zOrder = 1000;

function dragInit(e,obj) {
	e = (e)? e: (window.event)? window.event: "";

	if (obj) dragObj.css = obj.style;
	else dragObj.css = this;		// ns4
	if (!e || !dragObj.css) return;

  // Save mousedown location
  dragObj.downX = (e.layerX)? e.layerX: (e.offsetX)? e.offsetX: 0;
  dragObj.downY = (e.layerY)? e.layerY: (e.offsetY)? e.offsetY: 0;

  // bring to top of stack
  dragObj.css.zIndex = ++dragObj.zOrder;

	if (document.addEventListener) {
    document.addEventListener("mousemove",dragStart,true);
    document.addEventListener("mouseup",dragEnd,true);
    e.preventDefault();
	} else if (document.attachEvent) {
    document.attachEvent("onmousemove",dragStart);
    document.attachEvent("onmouseup",dragEnd);
		return false;
	} else {
		if (document.captureEvents) 
			document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
		document.onmousemove=dragStart;
		document.onmouseup=dragEnd;
		//return false; no good for ns4 (would prevent click on links in layer)
	}
}

function dragStart(e) {
	e = (e)? e: window.event;

	var x = (e.pageX)? e.pageX: (e.clientX)? e.clientX + getScrollX(): 0;
	var y = (e.pageY)? e.pageY: (e.clientY)? e.clientY + getScrollY(): 0;

	var px = (document.layers||window.opera)? "": "px";
  // Move drag element by the amount the cursor has moved.
  dragObj.css.left = (x - dragObj.downX) + px;
  dragObj.css.top  = (y - dragObj.downY) + px;

	if (e.preventDefault) e.preventDefault();
	else return false;
}

function dragEnd(e) {
  // Stop capturing mousemove and mouseup events.
	if (document.removeEventListener) {
		document.removeEventListener("mousemove",dragStart,true);
    document.removeEventListener("mouseup",dragEnd,true);
  } else if (document.detachEvent) {
    document.detachEvent("onmousemove",dragStart);
    document.detachEvent("onmouseup",dragEnd);
	} else {
		if (document.releaseEvents) 
			document.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP);
		document.onmousemove=null;
		document.onmouseup=null;
	}
}

// adapted from http://13thparallel.com/?issue=2002.06&title=viewport
// returns amount of vertical scroll
function getScrollY() {
	var scroll_y = 0;
	if (document.documentElement && document.documentElement.scrollTop)
		scroll_y = document.documentElement.scrollTop;
	else if (document.body && document.body.scrollTop) 
		scroll_y = document.body.scrollTop; 
	else if (window.pageYOffset)
		scroll_y = window.pageYOffset;
	else if (window.scrollY)
		scroll_y = window.scrollY;
	return scroll_y;
}

// returns amount of horizontal scroll
function getScrollX() {
	var scroll_x = 0;
	if (document.documentElement && document.documentElement.scrollLeft)
		scroll_x = document.documentElement.scrollLeft;
	else if (document.body && document.body.scrollLeft) 
		scroll_x = document.body.scrollLeft; 
	else if (window.pageXOffset)
		scroll_x = window.pageXOffset;
	else if (window.scrollX)
		scroll_x = window.scrollX;
	return scroll_x;
}
