(
	function(jQuery){

		jQuery.fn.jmenu = function(options){
			
			var mainobj = this;
		
			jQuery('.ul>.li .ul',mainobj).each(function(){
			
				jQuery(this).hide();
			
				var isFirst = (jQuery(this).parent().parent().parent().attr('id')==jQuery(mainobj).attr('id'))?true:false;
				
				var target = jQuery(this).parent();
				var ofleft = 0;
				
				if(!jQuery.browser.msie){
					var index = jQuery(this).parent().index();
					for(var i = 0;i<index;i++){
						var curel = jQuery(this).parent().parent().children('.li:eq('+i+')');
						ofleft += curel.width()+parseInt(curel.css('padding-left'))+parseInt(curel.css('padding-right'));
					}
				}
				
				
				if(isFirst){
					
					jQuery(this).css({
						top:jQuery(this).parent().outerHeight()+'px',
						left:ofleft+'px'
					});
					
					jQuery(this).parent().css({
						position:'relative',
						zIndex:'1000'
					});
					
					var width = 0;
					jQuery(this).children('.li').each(
						function(){
							
							//gli show e gli hide servono a far riconoscere correttamente la larghezza
							jQuery(this).parent().show();
							width = Math.max(width,jQuery(this).width());
							jQuery(this).parent().hide();
						}
					);

					jQuery('.li',this).css({
						width:width
					});
				}
					
				else{
					
					var target = jQuery(this).parent();
				
					jQuery(this).css({
						top:'0px',
						left:(target.width()+parseInt(target.css('padding-left'))+parseInt(target.css('padding-right')))+'px',
						zIndex:'999'
					});
					
				}
				
				var ulW = 0;
				
				jQuery(this).children('.li').each(
					function(){
						
						jQuery(this).parent().show();
						ulW = Math.max(ulW,jQuery(this).width());
						jQuery(this).parent().hide();
					}
				);
				
				jQuery(this).css({ width: ulW });
			
			});
			
			jQuery('.li',mainobj).hover(
				function(){
				
					var isFirst = (jQuery(this).parent().parent().attr('id')==jQuery(mainobj).attr('id'))?true:false;
					
					if(jQuery(this).children('.ul').length>0){
					
						if(jQuery(this).children('.ul').queue().length<2){
					
							if(isFirst){
								jQuery('.ul .li .ul',mainobj).hide();
								jQuery(this).children('.ul').slideDown(200);

							}
							else{
					
								var target = jQuery(this);
					
								jQuery(this).children('.ul').show().animate({
									left:(target.width()+parseInt(target.css('padding-left'))+parseInt(target.css('padding-right')))+'px'
								},100,'easeInOutBounce');
					
							}
						
						}
					
					}
					
				},
				function(){
				
					var isFirst = (jQuery(this).parent().parent().attr('id')==jQuery(mainobj).attr('id'))?true:false;
					
					if(isFirst){
						
						if(jQuery(this).children('.ul').length>0){
							//if(jQuery(this).children('.ul').queue().length<1){
								jQuery(this).children('.ul').slideUp(200);
							//}
						}

					}
					else{
					
						if(jQuery(this).children('.ul').length>0){

							jQuery(this).children('.ul').animate({
								left:'0px'
							},100,'easeInOutBounce').slideUp(200);

						}
					
					}
				
				}
			);
		
		}

	}
)(jQuery);

