/** 
 * Common JavaScript methods and properties for navy.com 
*/

/* Global Variables */
var htmlLang = "en";
var bodyId;


try {
	htmlLang = document.getElementsByTagName('html').item(0).lang;
} catch (e) {
	langErrorDescription = e;
}

/* Site Navigation */
var sitenavObj;

function sitenavHandler() {
	bodyId = document.body.id;
	this.sitenav = document.getElementById('sitenav');
	var anchors = this.sitenav.getElementsByTagName('a');
	this.setSitenav = function() { 
		for (var i = anchors.length; i != 0; i--) {
			var a = anchors[i-1];
			if (a.parentNode.nodeName.toLowerCase() != "dt") continue;
			a.onclick = function() { sitenavObj.handleClick(this);return true; };
		}
	}
}

sitenavHandler.prototype.collapseMenus = function(parent) {
	var i, categories;
	if(parent.parentNode.id != "sitenav")
	{
		categories = getAncestorByTagName(parent,'dl').getElementsByTagName('dl');
	}
	else
	{
		categories = document.getElementById("sitenav").getElementsByTagName('dl');
	}

	for (i = categories.length; i != 0; i--) {
		if (categories[i-1].className.indexOf("expanded") != -1) {
			categories[i-1].className = categories[i-1].className.replace("expanded","");
		}
	}
}

sitenavHandler.prototype.handleClick = function(obj) {
	var elem = getRawObject(obj);
	var dl = getAncestorByTagName(elem,'dl');	
	var dt = getAncestorByTagName(elem,'dt');
	
	var menuClass = dl.className;

	this.collapseMenus(dl);
	if (menuClass.indexOf('expanded') == -1)
	{
		dl.className = "expanded";
	}
	else
	{
		dl.className = "";
	}
}


/* Init Functions - The following functions create new domFunction() objects to
 * perform dom methods as the page loads and elements become available.  These 
 * methods must come after all functions that may be referenced by them.
*/

var initSitenav = new domFunction(function() {
		sitenavObj = new sitenavHandler();
		sitenavObj.setSitenav();
	}, { 'sitenav' : 'id' } );