/*!
 * Bootstrap-submenu v2.0.4 (https://vsn4ik.github.io/bootstrap-submenu/)
 * Copyright 2014-2017 Vasily A. (https://github.com/vsn4ik)
 * Licensed under the MIT license
 */

"use strict";
!function (a) {
    "function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof exports ? module.exports = a(require("jquery")) : a(jQuery)
}(function (a) {
    function b(b) {
        this.$element = a(b), this.$menu = this.$element.closest(".dropdown-menu"), this.$main = this.$menu.parent(), this.$items = this.$menu.children(".dropdown-submenu"), this.init()
    }

    function c(b) {
        this.$element = a(b), this.$main = this.$element.parent(), this.$menu = this.$main.children(".dropdown-menu"), this.$subs = this.$main.siblings(".dropdown-submenu"), this.$items = this.$menu.children(".dropdown-submenu"), this.init()
    }

    function d(b) {
        this.$element = a(b), this.$main = this.$element.parent(), this.$menu = this.$main.children(".dropdown-menu"), this.$items = this.$menu.children(".dropdown-submenu"), this.init()
    }

    b.prototype = {
        init: function () {
            this.$element.on("keydown", a.proxy(this, "keydown"))
        }, close: function () {
            this.$main.removeClass("open"), this.$items.trigger("hide.bs.submenu")
        }, keydown: function (a) {
            27 == a.keyCode && (a.stopPropagation(), this.close(), this.$main.children("a, button").trigger("focus"))
        }
    }, a.extend(c.prototype, b.prototype, {
        init: function () {
            this.$element.on({
                click: a.proxy(this, "click"),
                keydown: a.proxy(this, "keydown")
            }), this.$main.on("hide.bs.submenu", a.proxy(this, "hide"))
        }, click: function (a) {
            a.preventDefault(), a.stopPropagation(), this.toggle()
        }, hide: function (a) {
            a.stopPropagation(), this.close()
        }, open: function () {
            this.$main.addClass("open"), this.$subs.trigger("hide.bs.submenu")
        }, toggle: function () {
            this.$main.hasClass("open") ? this.close() : this.open()
        }, keydown: function (b) {
            32 == b.keyCode && b.preventDefault(), a.inArray(b.keyCode, [13, 32]) != -1 && this.toggle()
        }
    }), d.prototype = {
        init: function () {
            this.$menu.off("keydown.bs.dropdown.data-api"), this.$menu.on("keydown", a.proxy(this, "itemKeydown")), this.$menu.find("li > a").each(function () {
                new b(this)
            }), this.$menu.find(".dropdown-submenu > a").each(function () {
                new c(this)
            }), this.$main.on("hidden.bs.dropdown", a.proxy(this, "hidden"))
        }, hidden: function () {
            this.$items.trigger("hide.bs.submenu")
        }, itemKeydown: function (b) {
            if (a.inArray(b.keyCode, [38, 40]) != -1) {
                b.preventDefault(), b.stopPropagation();
                var c = this.$menu.find("li:not(.disabled):visible > a"), d = c.index(b.target);
                if (38 == b.keyCode && 0 !== d)d--; else {
                    if (40 != b.keyCode || d === c.length - 1)return;
                    d++
                }
                c.eq(d).trigger("focus")
            }
        }
    };
    var e = a.fn.submenupicker;
    return a.fn.submenupicker = function (b) {
        var c = this instanceof a ? this : a(b);
        return c.each(function () {
            var b = a.data(this, "bs.submenu");
            b || (b = new d(this), a.data(this, "bs.submenu", b))
        })
    }, a.fn.submenupicker.Constructor = d, a.fn.submenupicker.noConflict = function () {
        return a.fn.submenupicker = e, this
    }, a.fn.submenupicker
});