(function($){
	$.fn.extend({
		slidemenu: function(options){
			var defaults = {
				arrows:{
					down:{
						cssClass:'downarrowclass',
						url:'/westcentralaspx/scripts/jquery/slidemenu/bottom-arrow.png',
						padRight:23
					},
					right:{
						cssClass:'rightarrowclass',
						url:'/westcentralaspx/scripts/jquery/slidemenu/right-arrow.png',
						padRight:0
					}
				},
				// Duration of slide in/out animation in milleseconds
				duration:{
					slidedown:200,
					slideup:100
				}
			}
			
			var options = $.extend(defaults,options);
			
			return this.each(function(){
				var mainmenu = $(this).children('ul');
				var headers = mainmenu.find("ul").parent();
				
				headers.each(function(i){
					var obj = $(this);
					var childmenu = $(this).find('ul:first');
					
					var dimensions ={
						w:this.offsetWidth,
						h:this.offsetHeight,
						subulw:childmenu.outerWidth(),
						subulh:childmenu.outerHeight()
					};
					
					var istopheader = (obj.parents("ul").length == 1) ? true : false;
					
					childmenu.css({top:istopheader ? (dimensions.h + "px") : 0});
					
					obj.children("a:first")
						.css(istopheader ? {paddingRight: options.arrows.down.padRight} : {})
						.append(
							'<img src="' + (istopheader ? options.arrows.down.url : options.arrows.right.url)
							+'" class="' + (istopheader ? options.arrows.down.cssClass : options.arrows.right.cssClass)
							+ '" style="border:none;" />'
					)
					obj.hover(
						function(e){
							var $targetul=$(this).children("ul:first");
							var menuleft = istopheader? 0 : dimensions.w
							var offsets= {
								left:$(this).offset().left,
								top:$(this).offset().top
							};
							
							$('a:first',this).addClass('hover');
							
							menuleft = ((offsets.left+menuleft+dimensions.subulw) > $(window).width()) ? (istopheader ? -dimensions.subulw+dimensions.w : -dimensions.w) : menuleft
							if ($targetul.queue().length <= 1){ //if 1 or less queued animations
								$targetul.css({left:menuleft+"px", width:dimensions.subulw+'px'}).slideDown(options.duration.slidedown);
							}
						},
						function(e){
							var $targetul=$(this).children("ul:first");
							$targetul.slideUp(options.duration.slideup);
							$('a:first',this).removeClass('hover');
						}
					) //end hover
				}) //end headers.each()
				mainmenu.find("ul").css({display:'none'})
			});
		}
	});
})(jQuery);
