var nav = {
	transition: {overtime:300, outtime:200},
	delay: {show: 100, hide: 50},
		
	buildmenu:function($, setting){
		var $mainmenu=$(setting.selector + ">ul")
		var $headers = $mainmenu.find("ul").parent()
		$headers.hover(
			function(e){
				$(this).children('a:eq(0)').addClass('selected')
			},
			function(e){
				$(this).children('a:eq(0)').removeClass('selected')
			}
		)
		$headers.each(function(i){
			var $curobj=$(this).css({zIndex: 100-i})
			var $subul=$(this).find('ul:eq(0)').css({display:'block'})
			$subul.data('timers', {})
			this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
			this.istopheader=$curobj.parents("ul").length==1? true : false
			$subul.css({top:this.istopheader && setting.orientation!='v'? this._dimensions.h+"px" : 0})
			$curobj.hover(
				function(e){
					var $targetul=$subul
					var header=$curobj.get(0);
					clearTimeout($targetul.data('timers').hidetimer)
					$targetul.data('timers').showtimer=setTimeout(function(){
						header._offsets={left:$curobj.offset().left, top:$curobj.offset().top}
						var menuleft=header.istopheader && setting.orientation!='v'? 0 : header._dimensions.w
						menuleft=(header._offsets.left+menuleft+header._dimensions.subulw>$(window).width())? (header.istopheader && setting.orientation!='v'? -header._dimensions.subulw+header._dimensions.w : -header._dimensions.w) : menuleft
						if ($targetul.queue().length<=1){
							$targetul.css({left:menuleft+"px", width:header._dimensions.subulw+'px'}).animate({height:'show',opacity:'show'}, nav.transition.overtime)
						}
					}, nav.delay.show)
				},
				function(e){
					var $targetul=$subul
					var header=$curobj.get(0)
					clearTimeout($targetul.data('timers').showtimer)
					$targetul.data('timers').hidetimer=setTimeout(function(){
						$targetul.animate({height:'hide', opacity:'hide'}, nav.transition.outtime)
					}, nav.delay.hide)
				}
			)
		});
		$mainmenu.find("ul").css({display:'none', visibility:'visible'})
	},

	init : function(){
		jQuery(document).ready(function($){
			nav.buildmenu($, {selector: '#nav', orientation: 'h'}),
			nav.buildmenu($, {selector: '#catalogMenu', orientation: 'v'})
		});
	}
}

nav.init();
