
/*
 jQuery MegaMenu Plugin - v2.1
 Author: GeekTantra
 Author URI: http://www.geektantra.com
 April,21/2011 - Modified by Eduardo Marques - http://www.eduardomarques.com
 - replaced UL and LI by DIV
 - replaced offset() by position()
 - removed shadow and comments
*/

var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;

jQuery.fn.megamenu = function(options) {
	options = jQuery.extend({
		activate_action: "mouseover",
		deactivate_action: "mouseleave",
		show_method: "slideDown",
		hide_method: "slideUp",
		justify: "left",
		mm_timeout: 250
		}, options);
	var $megamenu_object = this;
	if( options.activate_action == "click" ) options.mm_timeout = 0;
	$megamenu_object.children("div").each(function(){
		jQuery(this).addClass("mm-item");
		jQuery(".mm-item").css({ 'float': options.justify });
		jQuery(this).find("div:first").addClass("mm-item-content");
		jQuery(this).find("a:first").addClass("mm-item-link");
		var $mm_item_content = jQuery(this).find(".mm-item-content");
		var $mm_item_link = jQuery(this).find(".mm-item-link");
		$mm_item_content.hide();
		jQuery(document).bind("click", function(){
			jQuery(".mm-item-content").hide();
			jQuery(".mm-item-link").removeClass("mm-item-link-hover");
			});
		jQuery(this).bind("click", function(e){
			e.stopPropagation();
			});
		$mm_item_content.wrapInner('<div class="mm-content-base"></div>');
		var $mm_timer = 0;
		// Activation Method Starts
		jQuery(this).bind(options.activate_action, function(e){
			e.stopPropagation();
			var mm_item_link_obj = jQuery(this).find("a.mm-item-link");
			var mm_item_content_obj = jQuery(this).find("div.mm-item-content");
			clearTimeout($mm_timer);
			$mm_timer = setTimeout(function(){
				mm_item_link_obj.addClass("mm-item-link-hover");
				mm_item_content_obj.css({
					'top': ($mm_item_link.position().top + $mm_item_link.outerHeight()) - 1 +"px",
					'left': ($mm_item_link.position().left) - 5 + 'px'
					})
				if(options.justify == "left"){
					var mm_object_right_end = $megamenu_object.position().left + $megamenu_object.outerWidth();
					var mm_content_right_end = $mm_item_link.position().left + $mm_item_content.outerWidth() - 5 ;
					if( mm_content_right_end >= mm_object_right_end ) {
						mm_item_content_obj.css({
							'left': ($mm_item_link.position().left - (mm_content_right_end - mm_object_right_end)) - 2 + 'px'
							});
						}
					} else if( options.justify == "right" ) {
					var mm_object_left_end = $megamenu_object.position().left;
					var mm_content_left_end = $mm_item_link.position().left - mm_item_content_obj.outerWidth() + $mm_item_link.outerWidth() + 5;
					if( mm_content_left_end <= mm_object_left_end ) {
						mm_item_content_obj.css({
							'left': mm_object_left_end + 2 + 'px'
							});
						} else {
						mm_item_content_obj.css({
							'left': mm_content_left_end + 'px'
							});
						}
					}
				switch(options.show_method) {
					case "simple":
						mm_item_content_obj.show();
						break;
					case "slideDown":
						mm_item_content_obj.height("auto");
						mm_item_content_obj.slideDown('fast');
						break;
					case "fadeIn":
						mm_item_content_obj.fadeTo('fast', 1);
						break;
					default:
						mm_item_content_obj.each( options.show_method );
						break;
					}
				}, options.mm_timeout);
			});
		jQuery(this).bind(options.deactivate_action, function(e){
			e.stopPropagation();
			clearTimeout($mm_timer);
			var mm_item_link_obj = jQuery(this).find("a.mm-item-link");
			var mm_item_content_obj = jQuery(this).find("div.mm-item-content");
			//mm_item_content_obj.stop();
			switch(options.hide_method) {
				case "simple":
					mm_item_content_obj.hide();
					mm_item_link_obj.removeClass("mm-item-link-hover");
					break;
				case "slideUp":
					mm_item_content_obj.slideUp( 'fast',  function() {
						mm_item_link_obj.removeClass("mm-item-link-hover");
						});
					break;
				case "fadeOut":
					mm_item_content_obj.fadeOut( 'fast', function() {
						mm_item_link_obj.removeClass("mm-item-link-hover");
						});
					break;
				default:
					mm_item_content_obj.each( options.hide_method );
					mm_item_link_obj.removeClass("mm-item-link-hover");
					break;
				}
			if(mm_item_content_obj.length < 1) mm_item_link_obj.removeClass("mm-item-link-hover");
			});
		});
	this.find(">div:last").after('<div class="clear-fix"></div>');
	this.show();
	};

