(function($) {
	var elem, opts
	var esIE6 = ($.browser.msie && parseInt($.browser.version.substr(0,1),10) < 7);
	
	$.fn.aycomenu = function(settings) {
		
		settings	= $.extend({}, $.fn.aycomenu.defaults, settings);
		
		var $menu = this;
		
		if (!settings.vertical) {
			$('li:has(ul)',this).each(function(){
				var $objLI	= $(this);
				var $subUL	= $('ul:first', $(this));
				var $supUL	= $(this).parent();
				
				var medidas		=	{	w		: this.offsetWidth,
										h		: this.offsetHeight,
										subULw	: $subUL.outerWidth(),
										subULh	: $subUL.outerHeight(),
										supULw	: $supUL.outerWidth(),
										supULh	: $supUL.outerHeight()
									};
				
				var esPrimerNivel= ($objLI.parents('ul').length==1)?true:false;
				
				$subUL.css({top:(esPrimerNivel)?(medidas.h+'px') : 0});
				
				if (!esPrimerNivel) {
					if (settings.showImgLeft) {
						$objLI.children('a:first').css({background: $objLI.children('a:first').css('background-color') + ' url(' + settings.imgLeft + ') no-repeat right 50%'});
					}
				}
				
				$objLI.hover(
					function (e) {
						if (!esPrimerNivel) {
							$(this).css({'position':'relative'})
						} else {
							$('li',$(this)).map(function () {
								$(this).css({'position':'static'});
							})
						}
						
						var $targetul	= $('ul:first',$(this));
						
						var posiciones	=	{	left	: $(this).offset().left,
												top		: $(this).offset().top
											}
						
						var menuleft	= (esPrimerNivel)?0:medidas.w;
						
						if ((posiciones.left + menuleft + medidas.subULw) > ($(window).width())) {
							if (esPrimerNivel) {
								menuleft = -(medidas.subULw - medidas.w)
							} else {
								menuleft = -(medidas.subULw);
							}
						} else {
							menuleft = menuleft
						}
						
						$targetul.css({left:menuleft+"px"}).fadeIn(settings.timeIn, function () {
							$targetul.find("ul").css({display:'none', visibility:'visible'})
						})
						
					},
					function (e) {
						$el = $(this);
						$(this).children("ul:eq(0)").fadeOut(settings.timeOut, function () {
							$el.css({'position':'relative'});
						})
					}
				)
			})
			
			if ($('ul',$menu).length>0) {
				$('ul',$menu).fadeOut(10, function () {
					if ((settings.showLoading) && (settings.selectorLoading!="")) {
						$(settings.selectorLoading).fadeOut(500,function () {
							$(this).remove();
						});
					}
				});
			} else {
				if ((settings.showLoading) && (settings.selectorLoading!="")) {
					$(settings.selectorLoading).fadeOut(500,function () {
						$(this).remove();
					});
				}
			}
		} else {
			$('li:has(ul)',this).each(function(){
				var $objLI	= $(this);
				
				$('a:first',$objLI).click(function () {
					var $subUL	= $('ul:first', $objLI);
					var $allUL	= $('ul', $objLI);
					
					if ($subUL.css('display')=='none') {
						$subUL.slideDown(settings.timeIn);
					} else {
						$allUL.slideUp(settings.timeOut);
					}
					return false;
				})
				
			});
			$('ul',$menu).slideUp(0);
			
		}
	};
	
	$.fn.aycomenu.defaults = {
		animationIn			:	'fadeIn',
		timeIn				:	200,
		animationOut		:	'fadeOut',
		timeOut				:	100,
		imgLeft				:	'img/arrow_right.gif',
		showImgLeft			:	true,
		imgDown				:	'img/arrow_right.gif',
		showImgDown			:	false,
		vertical			:	false,
		showLoading			:	false,
		selectorLoading		:	"#tapa"
	};

})(jQuery);