var listMenu = '';
var sectionMenu = '';
var menuContainer = '';

jQuery(document).ready(function () {
	listMenu = jQuery("#list-menu");	//cache obj for jquery
	menuContainer = jQuery("#menu-container");	//cache obj for jquery
	menuAutoPosition = jQuery("#menu-auto-position");	//cache obj for jquery
	
	sectionMenu = jQuery("#section-menu");	//cache obj for jquery
	sectionMenuContainer = jQuery("#section-menu-contianer");	//cache obj for jquery
	sectionMenuAutoPosition = jQuery("#section-menu-auto-position");	//cache obj for jquery
	
	/*Auto Absolute position menu from body tag, gets menu on top of all over site content*/
	if(sectionMenu.hasClass('auto-on-top')) {
		if(!listMenu.hasClass('no-ready')) {
			jQuery("body").prepend(sectionMenuContainer);
			listMenuAutoPosition('section');
			jQuery(window).resize(function () { 
	      		listMenuAutoPosition('section');
	    	});
		}
	}

	/*Auto Absolute position menu from body tag, gets menu on top of all over site content*/
	if(listMenu.hasClass('auto-on-top')) {
		if(!listMenu.hasClass('no-ready')) {
			jQuery("body").prepend(menuContainer);
			listMenuAutoPosition('main');
			jQuery(window).resize(function () { 
	      		listMenuAutoPosition('main');
	    	});
		}
	}
	
	/*Sport Grid Menu*/
	if(listMenu.hasClass('sport-grid')) {
		divTags = jQuery("li.sports ul div",listMenu);
		totalDivTags = divTags.length;
		widthPerDivTag = jQuery("div.grid").width();
		ulWidth = totalDivTags * widthPerDivTag;
		jQuery("li.sports ul",listMenu).css("width",ulWidth+"px");
	}	
	/*Accordion Menu*/
    if(listMenu.hasClass('accordion')) {
    	//Accordion On Click
    	if(listMenu.hasClass('click')) {
    		jQuery("li.parent",listMenu).click(function () { 
				jQuery(this).children("div").slideDown();
				jQuery(this).bind("mouseleave", function(e){
		      		jQuery(this).children("div").slideUp();
		    	});
		    });	
    	}
    	//Accordion On Mouse over
    	else {
	    	jQuery("li.parent",listMenu).mouseover(function () { 
				jQuery(this).children("div").slideDown();
				jQuery(this).bind("mouseleave", function(e){
		      		jQuery(this).children("div").slideUp();
		    	});
		    });	
    	}
    }
    // Not Accordion Menu's
    else {
    	/*Normal/Default Menu Code/Template Code*/
	    if(!listMenu.hasClass('sub-child')) {
	    	jQuery("li.parent",listMenu).mouseenter(function () {
	    		if( (jQuery(this).hasClass("template")) && (jQuery(this).hasClass("template-slide-down")) ) { //template-slide-down mouseenter
	    			jQuery(this).addClass("menu-active");
	    			var liChildHeight = jQuery("li.template",jQuery(this)).height();
	    			jQuery("li.template",jQuery(this)).css("height","0px").animate({height:liChildHeight+"px"},menuSlideDownTime);
	    			jQuery(this).children("ul").css("visibility","visible");
	    		}
	    		else { //normal menu mouseenter
		    		jQuery(this).addClass("menu-active");
					jQuery(this).children("ul").css("visibility","visible");
	    		}
		    }).bind("mouseleave",function() {
		    	jQuery(this).removeClass("menu-active");
		    	jQuery(this).children("ul").css("visibility","hidden");
		    	/*Slide Up
	    		var liChildHeight = jQuery("li.template",jQuery(this)).height();
   				jQuery("li.template",jQuery(this)).animate({
   					height:"0px"
   				},250,function() {
   					jQuery(this).parent().css("visibility","hidden");
   					jQuery(this).css("height",liChildHeight+"px");
   				});
   				*/
		    });
	    }
	    /*Sub-Child Menu, Child menu items show below main menu in horizontal line */
	    else {
	    	jQuery("li",listMenu).mouseover(function () { 	
	    		id = jQuery(this).attr("id");
	    		menuHtml = jQuery("#"+id+" div.sub-child-menu").html();
	    		subMenu = jQuery("#lm-submenu");
	    		subMenu.html(menuHtml);
				menuContainer.bind("mouseleave", function(e) {
					subMenu.html("");	
				});
		    });
	    }
	    /*Controls hide/show more menu*/
	    if(jQuery("#section-menu li.more").length>0) {
	    	jQuery("#section-menu li.more").mouseover(function () { 
	    		jQuery(this).addClass("menu-active");
				jQuery(this).children("ul").css("visibility","visible");
				jQuery(this).bind("mouseleave", function(e){
					jQuery(this).removeClass("menu-active");
		      		jQuery(this).children("ul").css("visibility","hidden");
		    	});
		    });
	    }	
    }
    listMenuSizePositionTemplates();
});

//In some cases the auto position needs to be called onLoad instead of onReady
jQuery(window).load(function() {
	if(listMenu.hasClass('auto-on-top')) {
		if(!listMenu.hasClass('no-load')) {
			listMenuAutoPosition('main');
		}
		//listMenuSizePositionTemplates();	
	}
	if(sectionMenu.hasClass('auto-on-top')) {
		if(!listMenu.hasClass('no-load')) {
			listMenuAutoPosition('section');
		}
	}
});

function listMenuSizePositionTemplates() {
	var listMenuTemplateCount = jQuery(".parent.template",listMenu).length;
    if(listMenuTemplateCount>0) {
    	var menuContainerWidth = menuContainer.width();
    	var menuPos = menuAutoPosition.position();
		var menuOffset = menuAutoPosition.offset();
		if(menuPos.left>0) {menuLeft = menuPos.left;}
		else {menuLeft = menuOffset.left};
    	var templateUl = false;
    	for(x=0;x<listMenuTemplateCount;x++) {
    		var templateUl = jQuery(".parent.template:eq("+x+") ul.subnav:eq(0)",listMenu);
    		var templateOffset = templateUl.offset();
    		var templatePos = templateUl.position();
    		if(templateOffset) {
	    		var templateMenuLeftMargin = templateOffset.left - menuLeft;
	    		jQuery(".parent.template:eq("+x+") ul.subnav:eq(0) li.template",listMenu).css("width",menuContainerWidth+"px");
	    		templateUl.css("margin-left","-"+templateMenuLeftMargin+"px");
    		}
    	}	
    }
}

function listMenuAutoPosition(menuType) {
	var menuLeft = 0;
	var menuTop = 0;
	if(menuType=='main') {
		menuPos = menuAutoPosition.position();
		menuOffset = menuAutoPosition.offset();
		menuHeight = menuContainer.height();
		menuNewTop = menuPos.top - menuHeight;
		if(menuPos.left>0) {menuLeft = menuPos.left;}
		else {menuLeft = menuOffset.left};
		if(menuPos.top>0) {menuTop = menuPos.top;}
		else {menuTop = menuOffset.top;}
		//Fix possible centering bug on wider sites
		if(listMenu.hasClass("auto-on-top-center")) {
			var menuWidth = menuContainer.width();
			var bodyWidth = jQuery('body').width();
 			menuLeft = (bodyWidth - menuWidth)/2;
		}
		if(listMenu.hasClass("auto-on-top-center-ul")) {
			var menuWidth = menuContainer.width();
			var ulWidth = 0;
			jQuery("#list-menu li.parent").each(function(index) {
				ulWidth += jQuery(this).outerWidth();
			});
			jQuery("#list-menu li.divider").each(function(index) {
				ulWidth += jQuery(this).outerWidth();
			});
			ulWidth ++;	//add 1 to total;
			listMenu.css({
				"width":ulWidth+"px",
				"margin":"0px auto"
			});
		}
		menuContainer.css({
			'position':'absolute',
			'z-index':'10000',
			'top':menuTop+'px',
			'left':menuLeft+'px',
			'display':'block'
		});
	}
	else if(menuType=='section') {
		menuPos = sectionMenuAutoPosition.position();
		menuOffset = menuAutoPosition.offset();
		menuHeight = sectionMenuContainer.height();
		menuNewTop = menuPos.top - menuHeight;
		if(menuPos.left>0) {menuLeft = menuPos.left;}
		else {menuLeft = menuOffset.left};
		if(menuPos.top>0) {menuTop = menuPos.top;}
		else {menuTop = menuOffset.top;}
		if(sectionMenu.hasClass("auto-on-top-center")) {
			var menuWidth = sectionMenuContainer.width();
			var bodyWidth = jQuery('body').width();
 			menuLeft = (bodyWidth - menuWidth)/2;
		}
		sectionMenuContainer.css({
			'position':'absolute',
			'z-index':'9000',
			'top':menuTop+'px',
			'left':menuLeft+'px',
			'display':'block'
		});
	}
}