/*
Functions to support layer operations, hiding, showing, rewriting, etc.
*/

var pageLoaded = false;   // Page load flag

var ns4 = (document.layers) ? true:false;			// Netscape 4.x
var ie = (document.all) ? true:false;				// IE version
var DOM = (document.getElementById) ? true:false;	// DOM supporting versions
var mac = navigator.appVersion.indexOf('Mac');		// Variable to track Macintosh platform
mac = (mac != -1) ? true:false;
var macIE5 = navigator.appVersion.indexOf('MSIE 5.0');
macIE5 = (macIE5 != -1) ? true:false;

// function show
// Show a layer specified by id (String)
function show(id) {
	if (!pageLoaded) return;
	if (ns4) document.layers[id].visibility = "show";
	else if (ie) document.all[id].style.visibility = "visible";
	else if (DOM) { // To deal w/ NS6 showing & hiding problems, the layer is shown, hidden, then shown.
		document.getElementById(id).style.visibility = "visible"; 
		document.getElementById(id).style.display = ""
	}
}

// function hide
// Hide a layer specified by id (String)
function hide(id) {
	if (!pageLoaded) return;
	if (ns4) document.layers[id].visibility = "hide";
	else if (ie) document.all[id].style.visibility = "hidden";
	else if (DOM) {
		document.getElementById(id).style.visibility = "hidden"; 
		document.getElementById(id).style.display = "none"
	}
}

// function toggleLayer
// Toggles a layer on or off
function toggleLayer(id) {
	if (!pageLoaded) return;
	if (id == null) return;
	if (ns4) {
		if (document.layers[id].visibility == "show") hide(id);
		else show(id);
	}
	else if (ie) {
		if (document.all[id].style.visibility == "visible") hide(id);
		else show(id);
	}
	else if (DOM){
		if (document.getElementById(id).style.display != "") hide(id);
		else show(id);
	}
}

// function showByShadow
// Shows a layer relative to a shadow object
function showByShadow(object,shadow,x,y) {
	if (!pageLoaded) return;
    if (document.layers && document.layers[object]) {
        document.layers[object].left = document.layers[shadow].pageX + x;
        document.layers[object].top = document.layers[shadow].pageY + y;
    }
    else if (document.all) {
		//if (mac && !macIE5) {
		if (mac && !macIE5) {									// Deal with IE 4.x Macs relative layer position.
			shadow = shadow + "IEMac";				// Since IE4.x doesn't record the offset of a relative layer
			var parent = document.all[shadow];		// create an id for the wrapping element (<td> etc.), take the shadow
			var positionX = 0;						// from that element.  The element must be named 'shadowname'IEMac
			var positionY = 0;
			while (parent != document.body) { 
				 positionX += parent.offsetLeft;
				 positionY += parent.offsetTop;
				 parent = parent.parentElement;
			}
			document.all[object].style.posLeft = positionX + x;
			document.all[object].style.posTop = positionY + y;
		}
		else {
			//if (macIE5) x = 0;
        	document.all[object].style.posLeft = document.all[shadow].offsetLeft + x;
        	document.all[object].style.posTop = document.all[shadow].offsetTop + y;
		}
    }
	else if (DOM) {
        document.getElementById(object).style.left = document.getElementById(shadow).offsetLeft + x + "px";
        document.getElementById(object).style.top = document.getElementById(shadow).offsetTop + y + "px";
		show(object); hide(object);
	}
	show(object);
}

// function writeLayer
// Writes the contents of a layer specified by text
function writeLayer(id,text) {
	if (!pageLoaded) return;
	var divID;

	if (ns4) divID = document.layers[id];
	else if (ie4) divID = document.all[id];
	else if (DOM) divID = document.getElementById(id);

	if (ns4) {
		divID.document.open();
		divID.document.write(text);
		divID.document.close();
	}
	else if (ie4) {
		divID.innerHTML = text;
	}
	else if (DOM) {
		divID.innerHTML = text;						// Not officially a function outlined by the W3C
	}
}

// function moveLayer
// Moves a layer to a position specified by the cartesian coordinates x,y
function moveLayerTo(id, x, y) {
	if (!pageLoaded) return;
	var divID;
	if (ns4) {
		divID = document.layers[id];
		if (x) divID.top = y;
		if (y) divID.left = x;
	}
	else if (ie4) {
		divID = document.all[id];
		if (x) divID.style.top = y;
		if (y) divID.style.left = x;
	}
	else if (DOM) {
		divID = document.getElementById(id);
		if (x) divID.style.top = y;				// Opera 4/5 does not support coordinates in the form 'y'px 'x'px
		if (y) divID.style.left = x;
	}
}
