// master.js file for http://americanhistory.si.edu
// 03.17.2005
//
//

var enableDebug = 'no'; //options are 'alert', 'status', 'no'

var agt=navigator.userAgent.toLowerCase();
var use_gebi = (document.getElementById) ? true : false;
var ie4flag = (document.all) ? true : false;
var ns4flag = (document.layers) ? true : false;
var ns6flag = (use_gebi && !document.all) ? true : false;
var safariflag = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;

var subnavShowing = false;
var subnavExit = false;

var x = 0;
var y = 0;
var subnavOffsetX = 0;

//open pop-up window with customizeable features
function MM_openBrWindow(theURL,winName,features) { //v2.0
  w = window.open(theURL,winName,features);
  w.focus();
}

//open pop-up window for assets
function openAsset(url) {
	w = window.open(url,"win","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=auto,resizable=yes,copyhistory=no,width=600,height=400,screenX=100,screenY=100");
	w.focus();
}


//debug function
function doDebug(someOutput) {
	if (enableDebug == 'alert') {
		alert(someOutput);
	} else if (enableDebug == 'status') {
		status = someOutput;
	}
	return true;
}

//subnav positioning high-level mgmt
function repositionLayers() {
	doDebug('repositionLayers()');
	setLayerPosition("subnav1");
	setLayerPosition("subnav2");
	setLayerPosition("subnav3");
	setLayerPosition("subnav4");
	setLayerPosition("subnav5");
	setLayerPosition("subnav6");
	setLayerPosition("subnav7");
	return true;
}

// layer positioning
function setLayerPosition(myobjectName) {
	doDebug('setLayerPosition(' + myobjectName + ')');
	var mylayerName = myobjectName + "Layer";
	if (getPosition(myobjectName)) {
		x = x + subnavOffsetX;
		// Logic to find position
		if (safariflag) {
			// now set layer top and left accordingly
			document[mylayerName].style.pixelLeft = (x) + "px";
			document[mylayerName].style.pixelTop = (y + 18) + "px";
			}
		else if (use_gebi && ns6flag) {
		
			// now set layer top and left accordingly
			document.getElementById(mylayerName).style.left = (x - 17) + "px";
			document.getElementById(mylayerName).style.top = (y + 23) + "px";
			}
		else if (use_gebi) {
			// now set layer top and left accordingly
			document.all[mylayerName].style.pixelLeft = x;
			document.all[mylayerName].style.pixelTop = y + 151;
			}
		else if (ie4flag) {
			// now set layer top and left accordingly
			document[mylayerName].style.pixelLeft = x - 15;
			document[mylayerName].style.pixelTop = y + 24;
			}
		else {
			x=0; y=0; return false;
			}
		return true;
	}
}

// layer hiding and showing
function showLayer(lay) {
	doDebug('showLayer(' + lay + ')');
	if (ie4flag) {document.all[lay].style.visibility = "visible";}
	if (ns4flag) {document.layers[lay].visibility = "show";}
	if (ns6flag) {document.getElementById(lay).style.visibility="visible";}
	return true;
}

function hideLayer(lay) {
	doDebug('hideLayer(' + lay + ')');
	if (ie4flag) {document.all[lay].style.visibility = "hidden";}
	if (ns4flag) {document.layers[lay].visibility = "hide";}
	if (ns6flag) {document.getElementById(lay).style.visibility="hidden";}
	return true;
}

//returns position of object in page
function getPosition(myobjectName) {
	doDebug('getPosition(' + myobjectName + ')');
	// Logic to find position
 	if (use_gebi && ie4flag) {
	doDebug('using gebi + ie4flag...');
		x=setLayerPositionPageOffsetLeft(document.all[myobjectName]);
		y=setLayerPositionPageOffsetTop(document.all[myobjectName]);
		}
	else if (use_gebi) {
	doDebug('using gebi...');
		var o=document.getElementById(myobjectName);
		x=setLayerPositionPageOffsetLeft(o);
		y=setLayerPositionPageOffsetTop(o);
		}
 	else if (ie4flag) {
	doDebug('usingie4flag...');
		x=setLayerPositionPageOffsetLeft(document.all[myobjectName]);
		y=setLayerPositionPageOffsetTop(document.all[myobjectName]);
		}
	else {
		x=0; y=0; return false;
		}
	return true;
}

// Functions for IE to get position of an object
function setLayerPositionPageOffsetLeft (el) {
	doDebug('setLayerPositionPageOffsetLeft(' + el + ')');
	if (el != "" && el != null) {
		if (ie4flag) {
			if (el.offsetLeft) {
				var ol=el.offsetLeft;
				while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
			} else {
				var ol=0;
			}
		} else {
			var ol=el.offsetLeft;
			while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
		}
	} else {
		var ol=0;
	}
	return ol;
}
function setLayerPositionPageOffsetTop (el) {
	doDebug('setLayerPositionPageOffsetTop(' + el + ')');
	if (el != "" && el != null) {
		if (ie4flag) {
			if (el.offsetTop) {
				var ot=el.offsetTop;
				while((el=el.offsetParent) != null) { ot += el.offsetTop; }
			} else {
				var ot=0;
			}
		} else {
			var ot=el.offsetTop;
			while((el=el.offsetParent) != null) { ot += el.offsetTop; }
		}
	} else {
		var ot=0;
	}
	return ot;
}

//subnav hiding and showing high-level mgmt
function showSubnav(lay) {
	doDebug('showSubnav(' + lay + ')');
	hideLayer("subnav1Layer");
	hideLayer("subnav2Layer");
	hideLayer("subnav3Layer");
	hideLayer("subnav4Layer");
	hideLayer("subnav5Layer");
	hideLayer("subnav6Layer");
	hideLayer("subnav7Layer");
	showLayer(lay);
	subnavShowing = true;
	subnavExit = false;
	setTimeout("checkSubnav()",500);
doDebug(lay);
	return true;
}

//periodic check to turn off subnav if user has left menu area
function checkSubnav() {
	doDebug('checkSubnav()');
	if ((subnavShowing) && (subnavExit)) {
		hideLayer("subnav1Layer");
		hideLayer("subnav2Layer");
		hideLayer("subnav3Layer");
		hideLayer("subnav4Layer");
		hideLayer("subnav5Layer");
		hideLayer("subnav6Layer");
		hideLayer("subnav7Layer");
		subnavExit = false;
	} else if (subnavShowing) {
		setTimeout("checkSubnav()",500);
	}
	return true;
}

//subnav entry highlight
function highlightSubnav(someObject) {
	doDebug('highlightSubnav(' + someObject + ')');
	subnavExit=false;
	if (ie4flag) {someObject.style.background = "#0E566E";}
	if (ns4flag) {someObject.background = "#0E566E";}
	if (ns6flag) {someObject.style.background = "#0E566E";}
	return true;
}

//subnav entry unlight
function unlightSubnav(someObject) {
	doDebug('unlightSubnav(' + someObject + ')');
	subnavExit=true;
	if (ie4flag) {someObject.style.background = "#7F9BA4";}
	if (ns4flag) {someObject.background = "#7F9BA4";}
	if (ns6flag) {someObject.style.background = "#7F9BA4";}
	return true;
}