var slideStep = 0; //global variable to track layer status through recursive function calls
function gf_slideLayer(layerID, steps, pixelsPerStep, openIt, slideRight) {
	//default values
	if (typeof openIt == 'undefined') openIt = true;
	if (openIt || openIt == null) var coeff = 1;
	else var coeff = -1;
	if (typeof slideRight == 'undefined' || slideRight == null) slideRight = false;
	//get a reference to the actual layer
	var layerObj = gf_getLayerObj(layerID);
	
	if (slideRight) var currentVal = gf_getLayerWidth(layerObj);
	else var currentVal = gf_getLayerHeight(layerObj);
	
	currentVal += coeff * pixelsPerStep;
	
	if (slideStep++ < steps) {
		//steps not at the max, so set the layer size and schedule another call to this function
		if (slideRight) gf_setLayerWidth(layerObj, currentVal);
		else gf_setLayerHeight(layerObj, currentVal);
		setTimeout('gf_slideLayer("' + layerID + '", ' + steps + ', ' + pixelsPerStep + ', ' + openIt + ', ' + slideRight + ')', 1);
	} else {
		slideStep = 0;
	}
}

function gf_getLayerObj(strLayerID) {
	if (NN) return document.layers[strLayerID];
	else if (N6) {
		var possibleObj = document.getElementById(strLayerID);
		var props = false;
		for (var i in possibleObj) {
			//if there are any properties in possibleObj, set the flag and leave the loop
			props = true;
			break;
		}
		if (props) return possibleObj;
		else return false;
	}
	else return document.all[strLayerID];
}

function gf_getLayerHeight(layerObj) {
	if (NN) return layerObj.clip.bottom;
	else return parseInt(layerObj.style.height);
}

function gf_getLayerTop(layerObj) {
	if (NN) return layerObj.clip.top;
	else return parseInt(layerObj.style.top);
}

function gf_getLayerLeft(layerObj) {
	if (NN) return layerObj.clip.left;
	else return parseInt(layerObj.style.left);
}

function gf_setLayerHeight(layerObj, heightVal) {
	if (NN) layerObj.clip.bottom = heightVal;
	else layerObj.style.height = heightVal;
}

function gf_getLayerWidth(layerObj) {
	if (NN) return layerObj.clip.right;
	else return parseInt(layerObj.style.width);
}

function gf_setLayerWidth(layerObj, widthVal) {
	if (NN) layerObj.clip.right = widthVal;
	else layerObj.style.width = widthVal;
}

function gf_setLayerVis(layerObj, hidden, optDisplay, optPos) {
	//optDisplay is an optional string param... if present, this sets the object's display attribute to that string
	if (typeof hidden == 'undefined') hidden = false;
	
	if (NN) {
		layerObj.visibility = !hidden;
	} else {
		if (hidden) layerObj.style.visibility = 'hidden';
		else layerObj.style.visibility = 'visible';
	}
	
	if (typeof optDisplay == 'string') {
		if (!NN) {
			layerObj.style.display = optDisplay;
		}
	}
	
	if (typeof optPos == 'string') {
		if (!NN) {
			layerObj.style.position = optPos;
		}
	}
}

function gf_layerExists(strLayerID) {
	if (NN) {
		if (typeof document.layers[strLayerID] == 'undefined') return false;
		else return true;
	} else if (N6) {
		var possibleObj = document.getElementById(strLayerID);
		var props = false;
		for (var i in possibleObj) {
			//if there are any properties in possibleObj, set the flag and leave the loop
			props = true;
			break;
		}
		return props;
	} else {
		if (typeof document.all[strLayerID] == 'undefined') return false;
		else return true;
	}
}

function gf_setLayerLeft(layerObj, px) {
	if (NN) layerObj.left = px;
	else layerObj.style.left = px;
	//alert(px + '\nnow: ' + layerObj.style.left);
}

function gf_setLayerTop(layerObj, px) {
	if (NN) layerObj.top = px;
	else layerObj.style.top = px;
}

function gf_setLayerContents(layerObj, theContent, isHTML) {
	if (typeof layerObj == 'string') layerObj = gf_getLayerObj(layerObj);
	
	//todo: add Nav-4 version
	if (!NN) {
		if (N6 || isHTML) {
			layerObj.innerHTML = theContent;
		} else {
			//set ONLY the text property (not HTML) in IE
			layerObj.innerText = theContent;
		}
	}
}

function gf_getLayerContents(layerObj, theContent, textOnly) {
	if (typeof layerObj == 'string') layerObj = gf_getLayerObj(layerObj);
	
	//todo: add Nav-4 version
	if (!NN) {
		if (N6 || !textOnly) {
			return layerObj.innerHTML;
		} else {
			//get ONLY the innerText property in IE
			return layerObj.innerText;
		}
	}
}