(function($) {
	$(document).ready(function() 
    {	
		$('#UbcHeaderWrapper .ipf-sectionmenu').removeAttr('id').attr('id', 'UbcMainNav').addClass('UbcContainer');
		
		$('#UbcHeaderWrapper .ipf-sectionmenu').css("display","block");
		if(UbcMainMenuDropDown) {
			Ubc.mainMenuACM.init();
		} else {
			$('#UbcHeaderWrapper .ipf-sectionmenu ul').hide();
		}
		
		Ubc.UbcSecondNavACM.init(); // ACM Package Only
		if($('#UbcSearchForm').length<1) {
			Ubc.searchJS.init();
		}
    }); 
	
	var Ubc = window.Ubc || {};
	
    Ubc.mainMenuACM = {
        selectedTop: null,
        openMenu: null,
        timer: null,
        target: null,

        init: function() 
        {
			
			var anchors = $('#UbcHeaderWrapper .ipf-sectionmenu > li');
			
            anchors.mouseenter(Ubc.mainMenuACM.setTimer);
            anchors.mouseleave(Ubc.mainMenuACM.setTimer);
			
			Ubc.mainMenuACM.splitLinks(anchors);

            $('#UbcMainNav').append('<li class="UbcSelectedTop"></li>');
            Ubc.mainMenuACM.selectedTop = $('#UbcMainNav li.UbcSelectedTop');

            $(document).click(Ubc.mainMenuACM.onMenuOut);
        },

		splitLinks: function(anchors) {
			anchors.each(function (i) {
				submenu = $(this).find("ul");
				submenu.addClass("UbcSubMenu");
				if($(submenu).find("li.UbcSubMenuSection").length<=0) {
					if(submenu.find("li").length>0) {
						var subMenuItems = submenu.find("li");
						var subSections = new Array();
						
						if(submenu.find("li").length<=12) {							
							var subSectionsNum = Math.ceil(subMenuItems.length/3);
							var maxLinksPerColumn = 3;						
						} else {
							var subSectionsNum = 4;
							var maxLinksPerColumn = Math.ceil(submenu.find("li").length / 4);
						}
						
						var subSections = new Array();
						
						for(var i=0; i<subSectionsNum; i++) {
							subSections[i] = $('<li class="UbcSubMenuSection"><ul></ul></li>');
						}
						
						subMenuItems.each(function(i) {
							subSections[Math.floor(i/maxLinksPerColumn)].find('ul').append(this);
						});
						
						submenu.empty();
						
						for(var i=0; i<subSections.length; i++) {
							submenu.append(subSections[i]);
						}
					}
				}
			});
		},

        setTimer: function(event) 
        {
            if (Ubc.mainMenuACM.timer)
                window.clearTimeout(Ubc.mainMenuACM.timer);

            Ubc.mainMenuACM.target = this;
            if (event.type == 'mouseenter')
            	Ubc.mainMenuACM.timer = window.setTimeout(Ubc.mainMenuACM.onMenuEnter, 300);
            else if (event.type == 'mouseleave')
            	Ubc.mainMenuACM.timer = window.setTimeout(Ubc.mainMenuACM.onMenuOut, 300);
        },

        onMenuEnter: function() 
        {			
			Ubc.mainMenuACM.timer = null;

        	Ubc.mainMenuACM.onMenuOut();

            var li = $(Ubc.mainMenuACM.target);

            var pos = li.position();
            var submenu = li.children('ul.UbcSubMenu');

            if (submenu.length == 0)
                return;

            Ubc.mainMenuACM.openMenu = submenu;

            var bgXPos = pos.left + parseInt(li.width() / 2) - 6;

            Ubc.mainMenuACM.selectedTop.css({ 'left': bgXPos.toString() + 'px', 'display': 'block' });
            submenu.show();
        },

        onMenuOut: function() 
        {
        	Ubc.mainMenuACM.timer = null;
            if (Ubc.mainMenuACM.openMenu) 
            {
            	Ubc.mainMenuACM.openMenu.hide();
            	Ubc.mainMenuACM.selectedTop.hide();
            }
        }
    };
	
	Ubc.UbcSecondNavACM = { // WordPress only Navigation Fix. Adds 'UbcLast' to every li that's last in its set.
		init: function() 
		{
			// Hide secondary level navigation unless page is current
			$('#UbcSecondNav .ipf-sectionmenu li > ul').hide();
		
			$('#UbcSecondNav .ipf-active1 > ul').show();
			$('#UbcSecondNav .ipf-active2 > ul').show();
			$('#UbcSecondNav .ipf-active3 > ul').show();
		
			// Add 'UbcLast' class to eliminate double closing bottom borders
			$('#UbcSecondNav').find('ul').each(function () {
				$(this).find('li:last').addClass('UbcLast');										 
			});
		
			$('#UbcSecondNav .ipf-sectionmenu li a').each(function() {
				if($(this).text() == $(".UbcHeadline").text()) {
					$(this).addClass('UbcCurrent');
				}
			});
		}
	};
	
	Ubc.searchJS = {
		site: "",
		label: "",
		
		init: function() 
		{
			
			$('li.UbcForm').html('<div id="UbcSearchForm"><input type="text" name="q" value="" class="UbcSearchField" /><input type="image" src="http://www.ubc.ca/_ubc_clf/img/header/spacer.gif" class="UbcSearchBtn" value="Search" alt="Search" /></div>');

			$("input.UbcSearchBtn").click(function(e) {
				e.preventDefault();
				Ubc.searchJS.query();
			});
			
			$("input.UbcSearchField").keypress(function(e) {
				var code = (e.keyCode ? e.keyCode : e.which);
				if(code == 13) { e.preventDefault(); Ubc.searchJS.query(); }
			});

			Ubc.searchJS.site = SearchSite;
			Ubc.searchJS.label = SubUnitLabel;
		},
		
		query: function()
		{
			
			var q = $("input.UbcSearchField").val();
			
			if(Ubc.searchJS.label!="" || Ubc.searchJS.site!="") {
				var url = "http://www.ubc.ca/search/refine/?q="+q;
			} else {
				var url = "http://www.ubc.ca/search/?q="+q;
			}
			
			if(Ubc.searchJS.label!="") {
				url = url+"&label="+Ubc.searchJS.label;
			}
			
			if(Ubc.searchJS.site!="") {
				url = url+"&site="+Ubc.searchJS.site;
			}
			
			window.location = url;
		}
	}
})(jQuery);

