/*********************
//* jQuery Multi Level CSS Menu #2- By Dynamic Drive: http://www.dynamicdrive.com/
//* Last update: Nov 7th, 08': Limit # of queued animations to minmize animation stuttering
//* Menu avaiable at DD CSS Library: http://www.dynamicdrive.com/style/
*********************/

/****************
 ***	 Modified By: Tony Davydets
 ***	 Date:		  08/14/2009	
 ***	
 ***	 Desription:  modified core functionality of Dynamic Drive
 ***				  menu to accomodate dynamic CMS functionality
 ***   
 ******************/

//Specify full URL to down and right arrow images (23 is padding-right to add to top level LIs with drop downs):
var arrowimages={down:['downarrowclass', '', 25], right:['rightarrowclass', 'images/drop-arrow-black.gif'], right_red:['rightarrowclass', 'images/drop-arrow-red.gif']}



var jqueryslidemenu={

animateduration: {over: 50, out: 50}, //duration of slide in/ out animation, in milliseconds

buildmenu:function(menuid, arrowsvar)
{
	jQuery(document).ready(function($)
	{
		var $mainmenu = $("#"+menuid+">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})
	
			// *** append right black arrows to all second level headers which have sub-items
			if (!this.istopheader)
			{
				$curobj.children("a:eq(0)").css(this.istopheader ? {paddingRight: arrowsvar.down[2]} : {}).append(
					'<img src="'+ (this.istopheader ? arrowsvar.down[1] : arrowsvar.right[1])
					+'" class="' + (this.istopheader ? arrowsvar.down[0] : arrowsvar.right[0])
					+ '" style="border:0;" />'
				)
			}
			
			// *** hover behaviour
			$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'}).fadeIn(jqueryslidemenu.animateduration.over)
					
					// *** replace right black arrow with right red arrow on hover 
					if (!this.istopheader)
					{
						$(this).css({top:this.istopheader? this._dimensions.h+"px" : 0})
						$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: arrowimages.down[2]} : {}).append(
							'<img src="'+ (this.istopheader? arrowimages.down[1] : arrowimages.right_red[1])
							+'" class="' + (this.istopheader? arrowimages.down[0] : arrowimages.right_red[0])
							+ '" style="border:0;" />')
					}
					
					srcEl = e.srcElement? e.srcElement : e.target
				},
				
				function(e)
				{
					var $targetul=$(this).children("ul:eq(0)")
					$targetul.fadeOut(jqueryslidemenu.animateduration.out)
					
					// *** restore black right arrow (from red right arrow)
					if (!this.istopheader)
					{
						$(this).css({top:this.istopheader? this._dimensions.h+"px" : 0})
						$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: arrowimages.down[2]} : {}).append(
							'<img src="'+ (this.istopheader? arrowimages.down[1] : arrowimages.right[1])
							+'" class="' + (this.istopheader? arrowimages.down[0] : arrowimages.right[0])
							+ '" style="border:0;" />')
					}
				}
			) 
			// *** END hover behaviour			
		}) 
		// *** END traverse all headers
		
		// *** display/hide ul
		$mainmenu.find("ul").css({display:'none', visibility:'visible'})
	}) 	
	// *** END document.ready
	
	}
}

//build menu with ID="myslidemenu" on page:
jqueryslidemenu.buildmenu("myslidemenu", arrowimages)

/* function silentErrorHandler() {return true;}
window.onerror=silentErrorHandler; */
