// JavaScript Document

$(document).ready(function() {
	function megaHoverOver(){
		$(this).find(".sub").stop().fadeTo('fast', 1).show();
			
		//Calculate width of all ul's
		(function($) { 
			jQuery.fn.calcSubWidth = function() {
				rowWidth = 0;
				//Calculate row
				$(this).find("ul").each(function() {					
					rowWidth += $(this).width(); 
				});	
			};
		})(jQuery); 
		
		if ( $(this).find(".row").length > 0 ) { //If row exists...
			var total_row=$(this).find(".row").length;
			var biggestRow = 0;	
			var biggestRowh = 0;
			
			//Calculate each row
			$(this).find(".row").each(function() {	
				$(this).calcSubWidth();
				//Find biggest row
				
				rowWidthh=$(this).height();
				if(rowWidthh > biggestRowh) {
					biggestRowh = rowWidthh;
				}
				
				if(rowWidth > biggestRow) {
					biggestRow = rowWidth;
				}
			});
			
			var countrow=1;
			$(this).find(".row").each(function() {	
				if(total_row==countrow) {
					$(this).css({'border-right':'0px'});
				}
				$(this).css({'height' :biggestRowh});
				countrow++;
			});
			
			
			biggestRow=197*$(this).find(".row").length;
			var IE6 = ($.browser.msie && parseInt($.browser.version) == 6);
			if(IE6){
				biggestRow=biggestRow+1;
			}
			//Set width
			$(this).find(".sub").css({'width' :biggestRow});
			
			var mainTemplateContainer="menuTop";
			   var mainTemplateSpace=986;
			   var mainTemplateLeft="";
			   var mainTemplateRight="";
			if(document.body.clientWidth>mainTemplateSpace){
				mainTemplateLeft =  getPageX(document.getElementById(mainTemplateContainer));
				mainTemplateRight = ((mainTemplateSpace+mainTemplateLeft)-2);
			} else {
				mainTemplateLeft =  0;
				mainTemplateRight = (mainTemplateSpace);
			}
		     
			$(this).find(".sub").css({left: 0 + "px"});
			var xpos=getPageX(document.getElementById($(this).find(".sub").attr("id")));
			
			
			var subMenuHalf = (($(this).find(".sub").width()/2))-(197/2);
			var subMenuRight = ((xpos)+$(this).find(".sub").width());
			var subMenuLeft = (xpos);
			var subMenuAdjust = subMenuHalf;

			if(subMenuRight>mainTemplateRight) {
				subMenuAdjust = (subMenuRight-mainTemplateRight);
			} else if ((subMenuLeft-subMenuHalf)<mainTemplateLeft) {
				 subMenuAdjust = (subMenuLeft-mainTemplateLeft);
			} 
			
			
			var IE6 = ($.browser.msie && parseInt($.browser.version) == 6);
			var IE7 = ($.browser.msie && parseInt($.browser.version) == 7);
			var IE8 = ($.browser.msie && parseInt($.browser.version) == 8);
			var FF = ($.browser.mozilla); //needs work to not do it for FF3 etc
			
			//stops 64bit IE8 from misplacing menus
			var ie8Adjust = 0;
			if(IE8){
				ie8Adjust = 3;
				if(navigator.userAgent){
					var strUserAgent = navigator.userAgent;
					if(strUserAgent.indexOf('Windows NT 5.1')>-1){
						ie8Adjust = 0;
					}
				}
			}	
			$(this).find(".sub").css({'left' : -subMenuAdjust + ie8Adjust + "px"});
			$(this).find(".row:last").css({'margin':'0'});
			
			
		} else { //If row does not exist...
			
			$(this).calcSubWidth();
			//Set Width
			$(this).find(".sub").css({'width' : rowWidth});
			positionSubMenu()
		}
	}
	
 
  
	
	function positionSubMenu() {
			//reset boundaries if window resized to below tamplate width
			  
	}
	
	function megaHoverOut(){ 
	  $(this).find(".sub").stop().fadeTo('fast', 0, function() {
		  $(this).hide(); 
	  });
	}

	//PPK's find element position
	function getPageX(obj) {
		var curleft = 0;
		if (obj.offsetParent) {
			while (obj.offsetParent) {curleft += obj.offsetLeft;obj = obj.offsetParent;}
		}
		if (obj.x) curleft += obj.x;
		return curleft;
	}

	function getPageY(obj) {
		var curtop = 0;
		/*if (obj.offsetParent) {
			while (obj.offsetParent) {curtop += obj.offsetTop;obj = obj.offsetParent;}
		}
		else*/ if (obj.y) curtop += obj.y;
		return curtop;
	}
	
	function setPageX(elem, pos) {
		elem.style.left = pos + "px";
	}

	function setPageY(elem, pos) {
		elem.style.top = pos + "px";
	}





	var config = {    
		 sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)    
		 interval: 0, // number = milliseconds for onMouseOver polling interval    
		 over: megaHoverOver, // function = onMouseOver callback (REQUIRED)    
		 timeout: 0, // number = milliseconds delay before onMouseOut    
		 out: megaHoverOut // function = onMouseOut callback (REQUIRED)    
	};

	$("ul#topnav li .sub").css({'opacity':'0'});
	$("ul#topnav li").hoverIntent(config);

});