/*

* metismenu - v1.1.3
* Easy menu jQuery plugin for Twitter Bootstrap 3
* https://github.com/onokumus/metisMenu
*
* Made by Osman Nuri Okumus
* Under MIT License
*/

;(function($, window, document, undefined) {

var pluginName = "metisMenu",
    defaults = {
        toggle: true,
        doubleTapToGo: false
    };

function Plugin(element, options) {
    this.element = $(element);
    this.settings = $.extend({}, defaults, options);
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
}

Plugin.prototype = {
    init: function() {

        var $this = this.element,
            $toggle = this.settings.toggle,
            obj = this;

        if (this.isIE() <= 9) {
            $this.find("li.active").has("ul").children("ul").collapse("show");
            $this.find("li").not(".active").has("ul").children("ul").collapse("hide");
        } else {
            $this.find("li.active").has("ul").children("ul").addClass("collapse in");
            $this.find("li").not(".active").has("ul").children("ul").addClass("collapse");
        }

        //add the "doubleTapToGo" class to active items if needed
        if (obj.settings.doubleTapToGo) {
            $this.find("li.active").has("ul").children("a").addClass("doubleTapToGo");
        }

        $this.find("li").has("ul").children("a").on("click" + "." + pluginName, function(e) {
            e.preventDefault();

            //Do we need to enable the double tap
            if (obj.settings.doubleTapToGo) {

                //if we hit a second time on the link and the href is valid, navigate to that url
                if (obj.doubleTapToGo($(this)) && $(this).attr("href") !== "#" && $(this).attr("href") !== "") {
                    e.stopPropagation();
                    document.location = $(this).attr("href");
                    return;
                }
            }

            $(this).parent("li").toggleClass("active").children("ul").collapse("toggle");

            if ($toggle) {
                $(this).parent("li").siblings().removeClass("active").children("ul.in").collapse("hide");
            }

        });
    },

    isIE: function() { //https://gist.github.com/padolsey/527683
        var undef,
            v = 3,
            div = document.createElement("div"),
            all = div.getElementsByTagName("i");

        while (
            div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->",
                all[0]
            ) {
            return v > 4 ? v : undef;
        }
    },

    //Enable the link on the second click.
    doubleTapToGo: function(elem) {
        var $this = this.element;

        //if the class "doubleTapToGo" exists, remove it and return
        if (elem.hasClass("doubleTapToGo")) {
            elem.removeClass("doubleTapToGo");
            return true;
        }

        //does not exists, add a new class and return false
        if (elem.parent().children("ul").length) {
            //first remove all other class
            $this.find(".doubleTapToGo").removeClass("doubleTapToGo");
            //add the class on the current element
            elem.addClass("doubleTapToGo");
            return false;
        }
    },

    remove: function() {
        this.element.off("." + pluginName);
        this.element.removeData(pluginName);
    }

};

$.fn[pluginName] = function(options) {
    this.each(function () {
        var el = $(this);
        if (el.data(pluginName)) {
            el.data(pluginName).remove();
        }
        el.data(pluginName, new Plugin(this, options));
    });
    return this;
};

})(jQuery, window, document);