//IE6 flicker fix
try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}

var dscnav = {
	init : function() {
		dscnav.registerEvents();
	},
	timer : 0,
	registerEvents : function() {
		var rollovers = dscnav.func.byCN(dscnav.cons.dscnavRoll);
		for (var i=0; i<rollovers.length; i++) {
			dscnav.registerRollEvent(rollovers[i]);
		}
	},
	registerRollEvent : function(button) {
		button.onmouseover = function() {
			var list = document.getElementById(this.id + dscnav.cons.buttonLinksString);
			var is_list = false;
			var button = this;
			if (list !== null && list.getElementsByTagName("li").length !== 0) {
				is_list = true;
			}
			if (is_list == true) {
					list.onmouseover = function(){
					dscnav.showList(list, button, true);
				}
			}
			dscnav.showList(list, button, is_list);
		}
		button.onmouseout = function() {
			var list = document.getElementById(this.id + dscnav.cons.buttonLinksString);
			var is_list = false;
			var button = this;
			if (list !== null && list.getElementsByTagName("li").length !== 0) {
				is_list = true;
			}
			if (is_list == true) {
				list.onmouseout = function(){
					dscnav.hideList(list, button, true);
				}
			}
			dscnav.hideList(list,button, is_list);
		}
	},
	showList : function(list, button, is_list) {
		if (!is_list) {			
			document.getElementById(dscnav.cons.secondLevelLinksId).style.background = dscnav.cons.listOffStyle;
		}
		clearTimeout(dscnav.timer);
		button.className ? button.className += " hover" : button.className = "hover";
		dscnav.func.hideAll(dscnav.func.byCN(dscnav.cons.secondLevelLinks));
		if (is_list == true) {
			list.style.display = "block";
			document.getElementById(dscnav.cons.secondLevelLinksId).style.background = dscnav.cons.listOnStyle;
		}
	},
	hideList : function(list, button, is_list) {
		button.className = button.className.replace("hover", "", "g");
		if (is_list == true) {
			dscnav.timer = setTimeout(function(){
				list.style.display = "none";
				document.getElementById(dscnav.cons.secondLevelLinksId).style.background = dscnav.cons.listOffStyle;
			}, dscnav.cons.floatTimeout);
		} else {
			document.getElementById(dscnav.cons.secondLevelLinksId).style.background = dscnav.cons.listOffStyle;
		}
	},
	cons : {
		mainContainer : "nheader",
		dscnavRoll : "dscnav-roll",
		buttonLinksString : "_seclinks",
		secondLevelLinks : "sec-links",
		secondLevelLinksId : "nsecondarynav",
		goButtonId : "go-button",
		listOnStyle : "url(/tier0/includes/header/images/uksecondarynav_bg.gif)",
		listOffStyle : "url(/tier0/includes/header/images/uksecondarynav_bg_off.gif)",
		goButtonOn : "url(/tier0/includes/header/images/ukheader_searchbtn.gif)",
		goButtonOff : "url(/tier0/includes/header/images/ukheader_searchbtn_off.gif)",
		floatTimeout : 100
	},
	func : {
		addEventHandler : function (oTarget, sEventType, fnHandler) {
			if (oTarget.addEventListener) {
				oTarget.addEventListener(sEventType, fnHandler, false);
			} else if (oTarget.attachEvent) {
				oTarget.attachEvent("on" + sEventType, fnHandler);
			} else {
				oTarget["on" + sEventType] = fnHandler;
			}
		},
		byCN : function(myClassName) {
		    var unfiltered = document.getElementById(dscnav.cons.mainContainer).getElementsByTagName("*");
		    var filtered = new Array();
		    for (var i = 0; i < unfiltered.length; i++) {
		        if (unfiltered[i].className.match(myClassName)) {
		            filtered.push(unfiltered[i]);
		        }
		    }
		    return filtered;
		},
		hideAll : function(list) {
			for (var i = 0; i < list.length; i++) {
				list[i].style.display = "none";
			}
		}
	}
}

dscnav.func.addEventHandler(window, "load", dscnav.init);
