/**
 * @author Chris Yap DHAP Digital
 * NAV CONTROLLER
 */


var NavController = Class.create();

Object.extend(NavController.prototype, {
	initialize: function(){
		
		// set top level nav rollover events
		var topLevelImgArray = document.getElementsByClassName('navTopLevelImg');
		for(i=0;i<topLevelImgArray.length;i++){
			this.rememberState = topLevelImgArray[i].src;
			
			// set mouseover event
			Event.observe(topLevelImgArray[i], 'mouseover', function()
			{
				this.image.src = this.image.src.replace(/_off/, "_over");
				this.image.src = this.image.src.replace(/_on/, "_over");
			}
			.bindAsEventListener({obj:this, image:topLevelImgArray[i]}));
			
			// set mouseout event
			Event.observe(topLevelImgArray[i], 'mouseout', function()
			{
				this.image.src = this.remember;
			}
			.bindAsEventListener({obj:this, image:topLevelImgArray[i], remember:this.rememberState}));
			
		}
		
		// set rollover events for secondary level and below
		var navRoot = $('makeMenu_root');
		var navLists = navRoot.getElementsByTagName('li');
		for(i=0;i<navLists.length;i++){
			
			// set mouseover event to add hover
			Event.observe(navLists[i], 'mouseover', function() 
			{
				Element.addClassName(this.item, 'hover');
			}
			.bindAsEventListener({obj:this, item:navLists[i]}));
			
			// set mouseoff event to remove hover
			Event.observe(navLists[i], 'mouseout', function() 
			{
				Element.removeClassName(this.item, 'hover')
			}
			.bindAsEventListener({obj:this, item:navLists[i]}));
			
		}
		
		// adjust vertical positions		
		var topBoundaryElement = $('nav_left');
		var topBoundary = this.findPosY(topBoundaryElement);
		var navULArray = document.getElementsByClassName('navChildUL');
		for(i=0;i<navULArray.length;i++) {
			var currentHeight = navULArray[i].offsetHeight;
			//var parentElement = navULArray[i].parentNode;
			//var childNLRaw = navULArray[i].childNodes;
			//var childNL = $NL(childNLRaw).elements();
			//var vertAdjust = -((childNL.length * 15) / 2);
			var vertAdjust = -currentHeight / 3;
			navULArray[i].style.top = vertAdjust + "px";
			var elementTop = this.findPosY(navULArray[i]);
			var topDiff = topBoundary - elementTop;
			if(elementTop <= topBoundary) {
				navULArray[i].style.top = vertAdjust + topDiff + "px";
			}
			
		}
		
		// test for existence of flag for HTML SELECT IE fix
		if(htmlSelectFix == true){
			this.initFormsFix();
		}

	},
	
	findPosY: function(obj) {

    	var curtop = 0;
    	if(obj.offsetParent)
        	while(1)
        	{
          	curtop += obj.offsetTop;
          	if(!obj.offsetParent)
            	break;
          	obj = obj.offsetParent;
        	}
    	else if(obj.y)
        	curtop += obj.y;
    	return curtop;

	},
	
	initFormsFix: function() {
		
		var ieULs = document.getElementsByClassName('navChildUL');
	
		for (i=0; i<ieULs.length; i++) {
		
			var currentWidth = ieULs[i].offsetWidth;
			var currentHeight = ieULs[i].offsetHeight;
			var iframeVar = document.createElement('iframe');
			ieULs[i].appendChild(iframeVar);
			iframeVar.style.width = currentWidth + 'px';
			iframeVar.style.height = currentHeight + 'px';
			
		}
		
		//$('loadingPanel').style.display = 'none';
	

	}
	
});

// for nav links to popups
function popupNavLink(url, name, w, h, scrollbars) {
	// calculating the center of the browser window, so that we can center the popup over the window
	var windowWidth = (document.all) ? document.body.offsetWidth : window.innerWidth;
	var windowHeight = (document.all) ? document.body.offsetHeight : window.innerHeight;
	var left = Math.round( (windowWidth - w) / 2 ) + "px";
	var top =  Math.round( (windowHeight - h) / 2 ) + "px";
	var scrollbars = (scrollbars != undefined) ? scrollbars : "no";
    // opens a new window and sets the object o your popup variable
	popupNavWin = window.open(url+'',name+'','width='+w+',height='+h+ ',top='+top+',left='+left+',scrollbars='+scrollbars);
	// make sure the popup is the focused window
	if (popupNavWin) popupNavWin.focus(); 
}


//For News section - hide select dropdown on rollover of global nav in IE6
document.observe("dom:loaded", function() {
	if ((document.all) && (!window.XMLHttpRequest)) {
		if ($('categorySelect')) {
			$('globalnav').observe('mouseover', function() {
				$('categorySelect').style.visibility = "hidden";
			});
			$('globalnav').observe('mouseout', function() {
				$('categorySelect').style.visibility = "visible";
			});
		}
	}
});