var jmenu={
dur: {over: 350, out: 600},
buildmenu:function(menuid, arr){
	jQuery(document).ready(function($){
		var $mmenu=$("#"+menuid+">ul")
		var $head=$mmenu.find("ul").parent()
		var isRtl=($("#"+menuid).attr("dir")=="rtl");
		var isVertical=($("#"+menuid).attr("mode")=="vertical");
		$mmenu.find("li").hover(function(e){$(this).addClass("hover");$(this).attr("h","1");},function(e){$(this).removeClass("hover");$(this).attr("h","0");});
		$head.each(function(i){
			var $curobj=$(this)
			var $subul=$(this).find('ul:eq(0)')
			$subul.css("display","block");
			this._dim={w:this.offsetWidth, h:(isVertical?0:this.offsetHeight), subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
			this.isroot=$curobj.parents("ul").length==1? true : false
			$subul.css({top:this.isroot? this._dim.h+"px" : 0})
			$curobj.children("a:eq(0)").css(this.isroot? (isRtl?{paddingLeft: arr.down[2]}:{paddingRight: arr.down[2]}) : {}).append(
				'<div class="'+(this.isroot? arr.down[0] : arr.right[0])
				+ '"></div>'
			)
			$curobj.each(
				function(){
					var $targetul=$(this).children("ul:eq(0)");
					this._offsets={left:$(this).offset().left, top:$(this).offset().top}
					var menuright=this.isroot? 0 : this._dim.w
					menuright=((this._offsets.left+$(this).width())-menuright-this._dim.subulw<0)? (this.isroot? -this._dim.subulw+this._dim.w : -this._dim.w) : menuright
					$targetul.css({right:(menuright)+"px",visibility:'hidden'});
				}
			)	
			$curobj.hover(
				function(e){
				    var o=this;
				    setTimeout(function(){
				    if($(o).attr("h")!="0"){	
				    var $targetul=$(o).children("ul:eq(0)");
					o._offsets={left:$(o).offset().left, top:$(o).offset().top};
					var mpos=(!isVertical && o.isroot)? 0 : o._dim.w;
					
					vsize=o._offsets.top+o._dim.subulh-$(window).scrollTop()<$(window).height();

					if(isVertical || !o.isroot){
					    tpos=vsize?0:$(window).height()+$(window).scrollTop()-(o._dim.subulh+o._offsets.top)-5;
					}
					else{
					    tpos=vsize?o._dim.h:-o._dim.h;
					}
			
					if(isRtl){
					    mpos=((o._offsets.left+$(o).width())-mpos-o._dim.subulw<0)? (o.isroot? -o._dim.subulw+o._dim.w : -o._dim.w) : mpos
					    $targetul.css({right:(mpos)+"px",visibility:'visible',top:(tpos)+"px"}).fadeIn(400);
					}
					else{
					    mpos=(o._offsets.left+mpos+o._dim.subulw>$(window).width())? (o.isroot? -o._dim.subulw+o._dim.w : -o._dim.w) : mpos
                        $targetul.css({left:(mpos)+"px",visibility:'visible',top:(tpos)+"px"}).fadeIn(400);
                    }}
                    },300);  
				},
				function(e){
				    var o = $(this);
				    setTimeout(function(){if(o.attr("h")=="0"){o.children("ul").fadeOut(50);}},400);
				}
			)
		})
		$mmenu.find("ul").hide();
	})
}
}
