function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function addOnLoad(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') { window.onload = func; }
	else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function getCookie(name) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie(name, value, domain) {
	document.cookie = name+'='+escape( value ) +
		';path=/' +
		( ( domain ) ? ';domain=' + domain : '' );
}

var findActive = function() {
	// first try to crib based on the hidden netsuite active tab
	var nsActive = $('nsActiveLink');
	if (nsActive)
	{
		var nsActiveTabName = nsActive.innerHTML;
		if ("Online Store" != nsActiveTabName)
		{
			if ("Shopping Cart" == nsActiveTabName)
			{
				$('navCart').className = "active";
				return;
			} 
			else if ("Check Out" == nsActiveTabName)
			{
				$('navCheckout').className = "active";
				return;
			}
			else if ("My Account" == nsActiveTabName)
			{
				$('navMyAccount').className = "active";
				return;
			}
		}
	}
	// determines which menu is "active"
	// look first for current location
	//var whereami = document.location.href.toLowerCase();
	//whereami = whereami.substr(document.location.protocol.length + 2);
	var whereami = stripLink(document.location);
	// easy stuff first
	if ((whereami == "www.filtersolution.com/")
		|| (whereami == "filtersolution.com/")
		|| (whereami.indexOf("filtersolution.com/index.htm") == 0)
		|| (whereami.indexOf("www.filtersolution.com/index.htm") == 0)) {
		$('navHome').className = "active";
		return;
	}
	// look for match in menu
	if (findMe(whereami, $('navBrands', 'navProducts', 'navCart', 'navCheckout', 'navMyAccount', 'navCustomerCare'), true)) {
		return true;
	}
	// start guessing
	// last good known location
	var wherewasi = getCookie("lastGoodClick");
	if ((whereami.indexOf("www.filtersolution.com") == 0) || (whereami.indexOf("filtersolution.com") == 0)) {
		if (wherewasi) {
			if (findMe(wherewasi, $('navBrands', 'navProducts', 'navCustomerCare'), true)) return;
		}
		if (whereami.indexOf("/site/") > -1) {
			$('navCustomerCare').className = "active";
		} else if (whereami.indexOf("/s.nl/sc.3/.f") > -1) {
			$('navCart').className = "active";
		} else if ((whereami.indexOf("/s.nl")) > -1 && (document.location.search.indexOf("sc=3") > -1)) {
			$('navCart').className = "active";
		} else {
			$('navBrands').className = "active";
		}
	} else if (whereami.indexOf("checkout.netsuite.com") == 0) {
		if (wherewasi) {
			if (findMe(wherewasi, $('navCheckout', 'navMyAccount'), true)) return;
		}
		if (whereami.indexOf("/app/") > -1) {
			$('navMyAccount').className = "active";
		} else {
			$('navCheckout').className = "active";
		}
	} else if ((whereami.indexOf("system.netsuite.com") == 0) && (whereami.indexOf("/site/") > -1)) {
		$('navCustomerCare').className = "active";
	} else { // added since script written
		// do nothing
	}
}

var findMe = function(whereami, els, markMe) {
	// look through menus for matching URL
	for (var i = 0; i < els.length; i++) {
		var el = els[i];
		var links = el.getElementsByTagName('a');
		for (var a = 0; a < links.length; a++) {
			var link = stripLink(links.item(a));
			if (whereami == link) {
				if (markMe) {
					el.className = "active";
				}
				return true;
			}
		}
	}
	return false;
}

var stripLink = function(link) {
	if (link.href)
	{
		return link.href.replace(link.search, "").toLowerCase().substr(link.protocol.length + 2);
	}
	return "";
}

var onTrackableLinkClick = function() {
	var hostname = document.location.hostname.toLowerCase();
	var domain = hostname.substr(hostname.indexOf(".") + 1);
	var link = stripLink(this);
	if (findMe(link, $('navBrands', 'navProducts', 'navCart', 'navCheckout', 'navMyAccount', 'navCustomerCare'), false)) {
		setCookie("lastGoodClick", link, domain);
	}
	return true;
}

var tagHrefs = function() {
	//var menus = $('navHome', 'navBrands', 'navProducts', 'navCart', 'navCheckout', 'navMyAccount', 'navCustomerCare');
	//var currentHost = document.location.hostname.toLowerCase();
	var doclinks = document.getElementsByTagName('a');
	for (var a = 0; a < doclinks.length; a++) {
		var ahreflower = stripLink(doclinks.item(a));
		// ignore offsite, etc
		if (doclinks.item(a).onclick) continue;
		if ((ahreflower.indexOf("www.filtersolution.com") != 0) && (ahreflower.indexOf("shop.filtersolution.com") != 0) && (ahreflower.indexOf("checkout.netsuite.com") != 0)) continue;
		doclinks.item(a).onclick = onTrackableLinkClick;
	}
}

var getChildLink = function(el) {
	var childLinks = el.getElementsByTagName('a');
	if (childLinks.length > 0)
	{
		return childLinks.item(0);
	}
	return {}; //empty object
}

var copyNSLinks = function() {
	var hiddenNavigation = $('hiddenNavigation');
	if (!hiddenNavigation) return;
	var nsLinks = hiddenNavigation.getElementsByTagName('a');
	for (var a=0; a < nsLinks.length; a++)
	{
		var nsLink = nsLinks.item(a);
		if ("Shopping Cart" == nsLink.innerHTML)
		{
			getChildLink($('navCart')).href = nsLink.href;
		}
		else if ("Check Out" == nsLink.innerHTML)
		{
			getChildLink($('navCheckout')).href = nsLink.href;
		}
		else if ("My Account" == nsLink.innerHTML)
		{
			getChildLink($('navMyAccount')).href = nsLink.href;
		}
	}
}

addOnLoad(findActive);
addOnLoad(copyNSLinks);
addOnLoad(tagHrefs);
