| /* | 
|  * 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); |