// JQUERY MULTI LEVEL CSS MENU  (jQuery 1.4+ recommended)

var menu_arrows = { // Specify full URL to down/right arrow images and the amount of padding on the right of the arrows.

	down: ['down_arrow', 'images/spacer.gif',5], // was 'images/arrow_down.gif',23
	right:['right_arrow','images/arrow_right.gif',0]
}

var slide_menu = {

 duration: {over: 200, out: 100}, // slide in/out animation in milliseconds

 buildmenu:function(menu_id, menu_arrows)
 {
	jQuery(document).ready(function($)
	{
	 var $mainmenu = $("#" + menu_id + ">ul");

	 var $headers = $mainmenu.find("ul").parent();

	 $headers.each(function(i)
	 {
		var $curobj=$(this);

		var $subul=$(this).find('ul:eq(0)');

		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? this._dimensions.h + 'px' : 0})

		$curobj.children("a:eq(0)").css(this.istopheader ? {paddingRight: menu_arrows.down[2]} : {}).append(
			'<img src="' + (this.istopheader ? menu_arrows.down[1] : menu_arrows.right[1])
			+'" class="' + (this.istopheader ? menu_arrows.down[0] : menu_arrows.right[0])
			+ '" style="border:0;" />'
		)

		$curobj.hover(
			function(e)
			{
			 var $targetul = $(this).children("ul:eq(0)");

			 this._offsets = {left: $(this).offset().left, top: $(this).offset().top}

			 var menuleft = this.istopheader ? 0 : this._dimensions.w;

			 menuleft = (this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) : menuleft

			 if ($targetul.queue().length <= 1) // if 1 or less queued animations
				$targetul.css({left: menuleft + 'px', width: this._dimensions.subulw + 'px'}).slideDown(slide_menu.duration.over)
			},

			function(e)
			{
			 var $targetul = $(this).children("ul:eq(0)");

			 $targetul.slideUp(slide_menu.duration.out);
			}
		);

		$curobj.click(function()
		{
		 $(this).children("ul:eq(0)").hide();
		})
	 })

	 $mainmenu.find("ul").css({display:'none', visibility:'visible'});

	})
 }
}

slide_menu.buildmenu("slide_menu", menu_arrows); // Build menu with id="slide_menu"

