
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",
        enable_js_shadow: false,
        shadow_size: 3,
        mm_timeout: 150,
        item_width:190,
        item_height:25,
        container: ''
    }, options);
    var $megamenu_object = this;

    if (options.activate_action == "click") options.mm_timeout = 0;

    $megamenu_object.children("li").each(function (liIndex) {
        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");

		/*if(jQuery(this).is('.vehicle')){
			$mm_item_content.find('.groupitem').bind('click',function(){
				$(this).find('img').hide('drop');
			});   			
		}*/   	
		
        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();
        });
        if($('.editModeStyle').is(':visible')){
        	var c =  jQuery(this);
        	jQuery(this).children('a').bind("click", function (e) {
	             e.preventDefault();
	             c.unbind(options.deactivate_action);
        	});
        }
        $mm_item_content.wrapInner('<div class="mm-content-base"></div>');
        if (options.enable_js_shadow == true) {
            $mm_item_content.append('<div class="mm-js-shadow"></div>');
        }

        function maxItems() {
            var max = 0;
            $mm_item_content.find('ul').each(function () {
                if ($(this).find('.groupitem').size() > max)
                    max = $(this).find('.groupitem').size();
            });
            return max;
        };
        function maxGroups(){
            return $mm_item_content.find('.horizontal').size()
        }
        if($mm_item_content.find('.vertical').size() > 0){
        	$mm_item_content.find('div.mm-content-base .vertical').css('width', maxItems() * options.item_width+ 1 * maxItems());
        	//$mm_item_content.find('.groupitem .imgContainer').height($mm_item_content.getHighest('.groupitem .imgContainer')); 
			$mm_item_content.find('.groupitem').outerHeight($mm_item_content.getHighest('.groupitem'));
    		/*$mm_item_content.find('.group-header').each(function(){
				if($(this).children('h3').height() < $(this).children('.description').height()){
					$(this).children('h3').css('width', $(this).width());
					$(this).children('.description').css('marginTop',0);
				}
			});*/        
		}
       
       else if(maxGroups() > 0){
 			$mm_item_content.find('div.mm-content-base .horizontal').parent().css('width', maxGroups() * options.item_width+ 1 * maxGroups());
 			$mm_item_content.find('div.mm-content-base .horizontal ul').height($mm_item_content.find('div.mm-content-base .horizontal').getHighest('ul')); 		
 		}
 		
 		$mm_item_content.hide().css({visibility:'visible'});
                            	
        
        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 () { //Emulate HoverIntent
                mm_item_link_obj.addClass("mm-item-link-hover");
                mm_item_content_obj.css({
                    'top': ($mm_item_link.position().top + $mm_item_link.outerHeight()) + "px",
                    'left': ($mm_item_link.position().left) + 'px'
                })

                if (options.justify == "left") {
                    //var mm_object_right_end = $megamenu_object.position().left + $megamenu_object.outerWidth();
                    // Coordinates of the right end of the megamenu container
                    var mm_object_right_end = (options.container == '') ? $megamenu_object.position().left + $megamenu_object.outerWidth() : $(options.container).outerWidth();
                    var mm_content_right_end = $mm_item_link.position().left + $mm_item_content.outerWidth();
                    
                    // Coordinates of the right end of the megamenu content
                    if (mm_content_right_end >= mm_object_right_end) { // Menu content exceeding the outer box
                        mm_item_content_obj.css({
                            'left': ($mm_item_link.position().left - (mm_content_right_end - mm_object_right_end)) + 'px'
                        }); // Limit megamenu inside the outer box
                    }
                    //alert(($mm_item_link.position().left - (mm_content_right_end - mm_object_right_end)) - 2);
                } else if (options.justify == "right") {
                    var mm_object_left_end = $megamenu_object.position().left;
                    // Coordinates of the left end of the megamenu object
                    var mm_content_left_end = $mm_item_link.position().left - mm_item_content_obj.outerWidth() +
                                    $mm_item_link.outerWidth() + 5;
                    // Coordinates of the left end of the megamenu content
                    if (mm_content_left_end <= mm_object_left_end) { // Menu content exceeding the outer box
                        mm_item_content_obj.css({
                            'left': mm_object_left_end + 2 + 'px'
                        }); // Limit megamenu inside the outer box
                    } else {
                        mm_item_content_obj.css({
                            'left': mm_content_left_end + 'px'
                        }); // Limit megamenu inside the outer box
                    }
                }
                if (options.enable_js_shadow == true) {
                    mm_item_content_obj.find(".mm-js-shadow").height(mm_item_content_obj.height());
                    mm_item_content_obj.find(".mm-js-shadow").width(mm_item_content_obj.width());
                    mm_item_content_obj.find(".mm-js-shadow").css({
                        'top': (options.shadow_size) + (isIE6 ? 2 : 0) + "px",
                        'left': (options.shadow_size) + (isIE6 ? 2 : 0) + "p x",
                        'opacity': 0.5
                    });
                }
                switch (options.show_method) {
                    case "simple":
                        mm_item_content_obj.show();
                        break;
                    case "slideDown":					
                        mm_item_content_obj.height('auto');
                        if(!mm_item_content_obj.is(':visible')){
                        	mm_item_content_obj.show('slide',{direction:'up'},250,function(){
                        		mm_item_content_obj.clearDialogs();
                        	});
                        }
                        break;
                    case "fadeIn":
                        mm_item_content_obj.fadeTo('fast', 1);
                        break;
                    default:
                        mm_item_content_obj.each(options.show_method);
                        break;
                }
            }, options.mm_timeout);
        });
        // Activation Method Ends
        // Deactivation Method Starts
        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");
            
        });
        //    Deactivation Method Ends
    });
    this.find(">li:last").after('<li class="clear-fix"></li>');
	this.css('visibility','visible');
    

};

