function displayDropdowns(){
	
	init();
	
	function init(){
		var uls = document.getElementsByTagName("ul");
		for (var u = 0; u < uls.length; u++){
			if (uls[u].className.search(/\bmain_nav\b/) == -1){
				continue;
			}
			var lis = uls[u].getElementsByTagName('li');
			for(var i = 0; i < lis.length; i++){
				var node = lis[i];
				if (node.nodeName.toLowerCase() == "li" && node.getElementsByTagName("ul").length > 0){
					attachEventListener(node,'mouseover',getMoverFor(node),false);
					attachEventListener(node,'mouseout',getMoutFor(node),false);
					node.getElementsByTagName('a')[0].className += " subheader";
				}
			}
		}
	}
	
	function mover(e, targetElement){
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el){
			return;
		}
		for (var i = 0; i < el.childNodes.length; i++){
			var node = el.childNodes[i];
			if (node.nodeName.toLowerCase() == 'ul'){
				node.style.display = "block";
			}
		}
	}
	
	function mout(e, targetElement){
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el){
			return;
		}
		
		for (var i = 0; i < el.childNodes.length; i++){
			var node = el.childNodes[i];
			if (node.nodeName.toLowerCase() == "ul"){
				node.style.display = "none";
			}
		}
	}
	
	function getMoverFor(node){
		return function(e){ mover(e,node); };
	}
	
	function getMoutFor(node){
		return function(e){ mout(e,node); };
	}
}

function rolloverFunction(){
	var upImages = document.getElementsByTagName("img");
	var overImages = new Array();
	// loads rollover images and sets up event listeners
	for (var i = 0; i < upImages.length; i++){
		var upImage = upImages[i];
		if (typeof upImage == "undefined" || typeof upImage == "" || typeof upImage == null){
			return;
		}
		
		if (upImage.className == "rollovers"){
			var upImageSrc = upImage.getAttribute('src');
			// grab the up image src
	    var imageType = upImageSrc.substring(upImageSrc.lastIndexOf('.'), upImageSrc.length);
	    // compute the over image src
   		var overImageSrc = upImageSrc.replace("_off" + imageType, '_over'+imageType);
	    
	    // assign new image object to that src
			overImages[i] = new Image();
			overImages[i].src = overImageSrc;
			attachEventListener(upImage,"mouseover",rolloverImageChange,false);
			attachEventListener(upImage,"mouseout",rolloffImageChange,false);
		}
		
		if (upImage.className == "rollovers on_img"){
			var upImageSrc = upImage.getAttribute('src');
			// grab the up image src
	    var imageType = upImageSrc.substring(upImageSrc.lastIndexOf('.'), upImageSrc.length);
	    // compute the over image src
   		var overImageSrc = upImageSrc.replace("_off" + imageType, '_on'+imageType);
	    
	    // assign new image object to that src
			overImages[i] = new Image();
			overImages[i].src = overImageSrc;
			attachEventListener(upImage,"mouseover",rolloverImageChangeOn,false);
			attachEventListener(upImage,"mouseout",rolloffImageChangeOn,false);
		}
	}
	
	function rolloverImageChange(){
		var curImage = document.getElementById(this.id);
		var curImageSrc = curImage.getAttribute('src');
    var imageType = curImageSrc.substring(curImageSrc.lastIndexOf('.'), curImageSrc.length);
    var newImageSrc = curImageSrc.replace("_off" + imageType, '_over'+imageType);
    curImage.src = newImageSrc;
	}
	
	function rolloffImageChange(){
		var curImage = document.getElementById(this.id);
		var curImageSrc = curImage.getAttribute('src');
		var newImageSrc = curImageSrc.replace("_over.","_off.");
		curImage.src = newImageSrc;
	}
	
	function rolloverImageChangeOn(){
		var curImage = document.getElementById(this.id);
		var curImageSrc = curImage.getAttribute('src');
    var imageType = curImageSrc.substring(curImageSrc.lastIndexOf('.'), curImageSrc.length);
    var newImageSrc = curImageSrc.replace("_off" + imageType, '_on'+imageType);
    curImage.src = newImageSrc;
	}
	
	function rolloffImageChangeOn(){
		var curImage = document.getElementById(this.id);
		var curImageSrc = curImage.getAttribute('src');
		var newImageSrc = curImageSrc.replace("_on.","_off.");
		curImage.src = newImageSrc;
	}
	
}

function attachEventListener(target,eventType,functionRef,capture){
	// test for standards based event listener
	if (typeof target.addEventListener != "undefined"){
		target.addEventListener(eventType,functionRef,capture);
	}
	// else test for explorer event listener
	else if (typeof target.attachEvent != "undefined"){
		
		var functionString = eventType + functionRef;
		target["e" + functionString] = functionRef;
		
		target[functionString] = function(event){
			if (typeof event == "undefined"){
				event = window.event;
			}
			target["e" + functionString](event);
		};
		
		target.attachEvent("on" + eventType, target[functionString]);
	}
	// else do it the old fashioned way
	else {
		eventType = "on" + eventType;
		
		if (typeof target[eventType] == "function"){
			var oldListener = target[eventType];
			
			target[eventType] = function(){
				oldListener();
				return functionRef();
			};
		}
		else {
			target[eventType] = functionRef;
		}
	}
}

function stopDefaultAction(event){
	event.returnValue = false;
	if (typeof event.preventDefault != "undefined"){
		event.preventDefault();
	}
}

function detachEventListener(target,eventType,functionRef,capture){
	if (typeof target.removeEventListener != "undefined"){
		target.removeEventListener(eventType,functionRef,capture);
	}
	else if (typeof target.detachEvent != "undefined"){
		var functionString = eventType + functionRef;
		target.detachEvent("on" + eventType,target[functionString]);
		target["e" + functionString] = null;
		target[functionString] = null;
	}
	else {
		target["on" + eventType] = null;
	}
}

function getEventTarget(event){
	var targetElement = null;
	if (typeof event.target != "undefined"){
		targetElement = event.target;
	}
	else {
		targetElement = event.srcElement;
	}
	
	while (targetElement.nodeType == 3 && targetElement.parentNode != null){
		targetElement = targetElement.parentNode;
	}
	
	return targetElement;
}


function getEvent(event){
	if (typeof event == "undefined"){
		event = window.event;
	}
	return event;
}

function listeneres(){
	rolloverFunction();
	displayDropdowns();
}

attachEventListener(window,"load",listeneres,false);

