﻿(function ($) {
    $.fn.menu = function (options) {
        var defaults = {
            direction: "ltr",
            type: "vr",
            effect: "slide",
            speed: 500
        };
        var options = $.extend(defaults, options);
        return this.each(function () {
		
			var events = new Object(); 
			var parent = this;
			
            $(this).find("li").filter(":has(ul)").addClass("arrow");
            $(this).find("li:first-child").addClass("first");
            $(this).find("li:last-child").addClass("last");
			
			
			                $(this).addClass("menu-" + options.type[0]);
                $(this).addClass("menu-" + options.direction);
			

			
			
			
		   $(this).find("li").hoverIntent({
				sensitivity: 1, 
				interval: 100,  
				over: function(){
				console.log("over");
				var _this = $(this);
				if (options.type == "vr")
				{
	                var offset = $(_this).parent().offset();
                    offset.width = _this.offsetWidth;
                    offset.height = _this.offsetHeight;
                    var submenu = $(_this).children("ul");
                    switch (options.effect) {
                        case "slide":
                            $(submenu).animate({
                                width: "show",
                                height: "show"
                            }, options.speed, function () {
                                submenu.addClass("active");
                            });
                            break;
                        case "fade":
                            $(submenu).fadeIn(options.speed);
                    }
                    if ($(parent).hasClass("menu-rtl")) {
                        submenu.css("margin-right", offset.width);
                    }
                    else {
                        submenu.css("margin-left", offset.width);
                    }
			    }
			    else
				{
					$(_this).find("ul").css("display","none");
                    var offset = $(_this).parent().offset();
                    offset.width = $(_this)[0].offsetWidth;
                    offset.height = $(_this)[0].offsetHeight;
                    var submenu = $(_this).children("ul");
                    switch (options.effect) {
                        case "slide":
                            $(submenu).delay(150).animate({
                                width: "show",
                                height: "show"
                            }, options.speed, function () {
                                submenu.addClass("active");
                            });
                            break;
                        case "fade":
                            $(submenu).delay(100).fadeIn(options.speed);
                    }
                    if (!$(_this).parent().hasClass("menu-h"))
					{ 
					// For First Drop Down Menu Dont Have Margin 
                        if (options.direction == "rtl") {
                            submenu.css("right", offset.width);
                        }
                        else {
                            submenu.css("left", offset.width);
                        }
                    }
			
				}

			},    
				timeout: 500,  
				out: function(){
				console.log("out");
		var _this = $(this);
				var submenu = $(_this).find("ul");
                var hide = function (index) {
				if (index >= 0) {
                    switch (options.effect) {
                                case "slide":
                                    $(submenu).eq(index).animate({
                                        width: "hide",
                                        height: "hide"
                                    }, options.speed, function () {
                                        hide(index - 1);
                                    });
                                    break;
                                case "fade":
                                    $(submenu).eq(index).fadeOut(options.speed, function () {
                                        hide(index - 1);
                                    });
                                    break;
                            }
                            $(submenu).eq(index).removeClass("active");
                        }
                    };
                    hide(submenu.length - 1);
			

			
			}
			});
			

   
   
   
        });
    };
})(jQuery); 


