(function($){
	$.mainMenu = function(element, trigger) {
		this.element = $(element);
		this.trigger = $(trigger);
		this.init();
	}
	
	$.extend($.mainMenu.prototype, {
		init: function(){
			this.element.css({
				display:"block",
				visibility:"hidden"
			});
			
			var menus = [];
			var hideMenuTimeouts = [];
			
			$(">.nav>ul>li", this.element).each(function(){
				var submenu = $(">ul", this), obj = {};
				obj = {
					element: $(this),
					submenu: submenu,
					height: 0,
					submenuHeight: 0
				};
				
				submenu.hide();
				obj.height = $(this).height();
				submenu.show();
				obj.submenuHeight = $(this).height();
				
				menus.push(obj);
				if($('body').hasClass('home')){
					$(this).css({
					height:178,
					overflow:"hidden",
					marginLeft: 0
					});
					$(this).delay(8000).animate({marginLeft: -808}, {duration:1000, easing: "easeInExpo"});
				}else{
					$(this).css({
						height:178,
						overflow:"hidden",
						marginLeft: -808
					});
				}
				
				hideMenuTimeouts.push(null);
			})
			.addClass("parent-menu")
			.bind({
				"mouseover": $.proxy(this._onMenuOver, this),
				"mouseout": $.proxy(this._onMenuOut, this)
			});
			
			this.menuItems = $(">.nav>ul>li", this.element);
			this.menus = menus;
			
			this.element.css({
				display:"block",
				visibility:"visible"
			});
			
			this.hideMenuTimeouts = hideMenuTimeouts;
			this.hideTimeout = null;
			
			this.trigger.bind("mouseover", $.proxy(this._onTriggerOver, this));
			this.trigger.bind("mouseout", $.proxy(this._onTriggerOut, this));
		},
		
		clearHideTimeout: function() {
			if ( this.hideTimeout !== null ) {
				window.clearTimeout(this.hideTimeout);
			}
			this.hideTimeout = null;
		},
		
		setHideTimeout: function() {
			var self = this;
			this.clearHideTimeout();
			
			this.hideTimeout = window.setTimeout(function(){
				self.hideMenu.call(self);
				self = null;
			}, 900);
		},
		
		showMenu: function() {
			for ( var i = 0, n = this.menus.length; i < n; i++ ) {
				this.menus[i].element.stop().animate({marginLeft: 0}, {queue:false, duration:1000, easing: "easeOutExpo"});
			}
		},
		
		hideMenu: function() {
			for ( var i = 0, n = this.menus.length; i < n; i++ ) {
				this.menus[i].element.stop().animate({marginLeft: -808}, {queue:false, duration:1000, easing: "easeInExpo"});
			}
		},
		
		showSubMenu: function(idx) {
			if ( typeof this.menus[idx] !== "undefined" && this.menus[idx].submenu.length ) {
				this.menus[idx].element.stop().animate({height: this.menus[idx].submenuHeight}, {queue:false, duration:200, easing: "easeOutExpo"});
			}
		},
		
		hideSubMenu: function(idx) {
			if ( typeof this.menus[idx] !== "undefined" && this.menus[idx].submenu.length ) {
				this.menus[idx].element.animate({height: this.menus[idx].height}, {queue:false, duration:200, easing: "easeOutExpo"});
			}
		},
		
		clearMenuHideTimeout: function(idx) {
			if ( this.hideMenuTimeouts[idx] !== null ) {
				window.clearTimeout(this.hideMenuTimeouts[idx]);
			}
			this.hideMenuTimeouts[idx] = null;
		},
		
		setMenuHideTimeout: function(idx) {
			var self = this, i = idx;
			
			this.clearMenuHideTimeout(idx);
			
			this.hideMenuTimeouts[idx] = window.setTimeout(function(){
				self.hideSubMenu.call(self, i);
				self = null;
			}, 900);
		},
		
		_onMenuOver: function(ev) {
			var 
				el = $(ev.target).closest(".parent-menu"),
				idx = this.menuItems.index(el);
				
			this.clearHideTimeout();
			this.clearMenuHideTimeout(idx);
			this.showSubMenu(idx);
			
		},
		
		_onMenuOut: function(ev) {
			var 
				el = $(ev.target).closest(".parent-menu"),
				idx = this.menuItems.index(el);
				
			this.setMenuHideTimeout(idx);
			this.setHideTimeout();
			this.hideSubMenu(idx);
		},
		
		_onTriggerOver: function(ev) {
			this.clearHideTimeout();
			this.showMenu();
		},
		
		_onTriggerOut: function(ev) {
			this.setHideTimeout();
		}
	});
	
	//DOM READY
	$(function(){
		var i = 1;
		
		$(".widget_banner_box").each(function(){
			$(this).addClass("widget_banner_box-box" + i);
			i++;
			if ( i > 3 ) {
				i = 1;
			}
		});
		
		new $.mainMenu( "#main_nav", "#menuHolder" );
		
	});
})(jQuery);
