(function( $ ){
	$.fn.msMenu = function(method)
	{
		var openDialog = function(node){
			if(node == null) node = $(this);
			var parent = 
				$('#top-menu-dialog .top-menu-box')
					.hide()
					.filter('#top-menu-box-'+node.attr('data-index'))
					.show()
					.parent()
					.attr('data-index', node.attr('data-index'))
					.stop()
					.removeClass('data-is-hidding');
			if(parent.hasClass('data-is-hidden')){
				parent.css('left', node.position().left)
					.removeClass('data-is-hidden')
					.css('display','')
					.animate({'opacity':1});
			}
			else{
				parent
					.css('display','')
					.animate({'left': node.position().left, 'opacity': 1});
			}
		};
		$("#top-menu-dialog").css('display', 'none');
		
		$(".top-menu > li").each(function(i){
				var node = $(this)
					.addClass('top-menu-mini')
					.attr('data-index', i);
				
				if(node.attr('data-mini-width') == null){
					node.attr('data-mini-width', node.width())
				}
				
				if(node.attr('data-width') == null){
					node.attr('data-width', node.width('auto').width())
				}
				
				node.width(node.attr('data-mini-width'));
				
				if(node.hasClass('top-menu-parceiros'))
				{
					node.width(node.attr('data-width'));
				}
				
				node.find(".top-menu-box")
					.attr('id','top-menu-box-'+i)
					.hide()
					.appendTo("#top-menu-dialog");
			})
			.click(function(){
				$(this).find('.top-menu-link')[0].click();
			})
			.mouseenter(function() {
				var node = $(this);
				node.stop().animate({"width":node.attr('data-width')}, 200, openDialog);
				if(!node.hasClass('top-menu-parceiros'))
				{
					node.addClass('top-menu-active');
				
					var node2 = node.parent().children('.top-menu-parceiros');
					node2.stop().animate({"width":node2.attr('data-mini-width')});
				}
				else
				{
					$('#top-menu-dialog').addClass('data-mouse-is-over');
					node.addClass('top-menu-parceiros-hover');
				}
				
				openDialog(node);
			})
			.not('.top-menu-parceiros')
			.mouseleave(function(){
				var node = $(this);
				node.removeClass('top-menu-active')
					.stop().animate({"width":node.attr('data-mini-width')});
				
				node = node.parent();
				if(node.has('.top-menu-active').size() == 0)
				{
					node = node.children('.top-menu-parceiros');
					node.addClass('top-menu-parceiros-active');
					node.stop().animate({"width":node.attr('data-width')});
				}
			})
			.parent().children('.top-menu-parceiros')
			.mouseleave(function(){
				$('#top-menu-dialog').removeClass('data-mouse-is-over');
				$(this).removeClass('top-menu-parceiros-hover');
			});
		
		var hide = function(){
			var dialog = $('#top-menu-dialog');
			if(!dialog.hasClass('data-mouse-is-over')
				&& !(dialog.hasClass('data-is-hidden') || dialog.hasClass('data-is-hidding'))
				&& $('.top-menu').has('.top-menu-active').size() == 0)
			{
				dialog.addClass('data-is-hidding')
					.animate({'opacity':0}, function(){
						dialog.addClass('data-is-hidden')
							.removeClass('data-is-hidding')
							.hide();
					});
			}
		};
		setInterval(function(){
			hide();
			var node = $('.top-menu');
			if(node.has('.top-menu-active').size() == 0)
			{
				node = node.children('.top-menu-parceiros');
				if(!node.hasClass('top-menu-parceiros-active')){
					node.addClass('top-menu-parceiros-active');
					node.stop().animate({"width":node.attr('data-width')}, hide);
				}
			}
		},1000);
		
		$("#top-menu-dialog")
			.mouseenter(function(){
				$(this).addClass('data-mouse-is-over');
				$(".top-menu > li[data-index='"+$(this).attr('data-index')+"']")
					.mouseenter();
			})
			.mouseleave(function(){
				$(this).removeClass('data-mouse-is-over');
				$(".top-menu > li[data-index='"+$(this).attr('data-index')+"']")
					.mouseleave();
			})
	};
})( jQuery );
