/* accordion menu plugin*/ ;
(function($, window, document, undefined) {
var pluginName = "mobileMenu";
var defaults = {
speed: 400,
showDelay: 0,
hideDelay: 0,
singleOpen: true,
clickEffect: true,
indicator: 'active',
subMenu: 'sub-menu',
subMenu2: 'sub-sub-menu',
event: 'click touchstart' // click, touchstart
};
function Plugin(element, options) {
this.element = element;
this.settings = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init();
}
$.extend(Plugin.prototype, {
init: function() {
this.openSubmenu();
// this.submenuIndicators();
if (defaults.clickEffect) {
this.addClickEffect();
}
},
openSubmenu: function() {
$(this.element).children("ul").find("li").bind(defaults.event, function(e) {
e.stopPropagation();
e.preventDefault();
var $subMenus = $(this).children("." + defaults.subMenu);
var $allSubMenus = $(this).find("." + defaults.subMenu);
if ($subMenus.length > 0) {
if ($subMenus.css("display") == "none") {
$subMenus.slideDown(defaults.speed).siblings("a").addClass(defaults.indicator);
if (defaults.singleOpen) {
$(this).siblings().find("." + defaults.subMenu).slideUp(defaults.speed)
.end().find("a").removeClass(defaults.indicator);
}
return false;
} else {
$(this).find("." + defaults.subMenu).delay(defaults.hideDelay).slideUp(defaults.speed);
}
if ($allSubMenus.siblings("a").hasClass(defaults.indicator)) {
$allSubMenus.siblings("a").removeClass(defaults.indicator);
}
}
window.location.href = $(this).children("a").attr("href");
});
},
// submenuIndicators: function () {
// if ($(this.element).find("." + defaults.subMenu).length > 0) {
// $(this.element).find("." + defaults.subMenu).siblings("a").append("");
// }
// },
addClickEffect: function() {
var ink, d, x, y;
$(this.element).find(".menu li a").bind("click touchstart", function(e) {
$(".ink").remove();
if ($(this).children(".ink").length === 0) {
$(this).prepend("");
}
ink = $(this).find(".ink");
ink.removeClass("animate-ink");
if (!ink.height() && !ink.width()) {
d = Math.max($(this).outerWidth(), $(this).outerHeight());
ink.css({
height: d,
width: d
});
}
x = e.pageX - $(this).offset().left - ink.width() / 2;
y = e.pageY - $(this).offset().top - ink.height() / 2;
ink.css({
top: y + 'px',
left: x + 'px'
}).addClass("animate-ink");
});
}
});
$.fn[pluginName] = function(options) {
this.each(function() {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(this, "plugin_" + pluginName, new Plugin(this, options));
}
});
return this;
};
$(".menu-wrapper").mobileMenu();
$(".fullscreen-menu").mobileMenu();
})(jQuery, window, document);