Current File : /home/kelaby89/kayautoparts.com/wp-content/themes/car-repair-services/js/plugins/panelmenu.js
(function($) {

    "use strict";

var delay_tab = 300,
	delay_show_mm = 300,
	delay_hide_mm = 300;

$("body").append(getFullscreenBg());

$.fn.initMM = function() {
	var mmpanel = {
		$mobilemenu: $(".panel-menu"),
		mm_close_button: 'Close',
		mm_back_button: 'Back',
		mm_breakpoint: 768,
		mm_enable_breakpoint: false,
		mm_mobile_button: false,
		remember_state: false,
		second_button: false, // class
		init: function($button, data){
			var _this = this;
			if(!_this.$mobilemenu.length){
				console.log('You not have <nav class="panel-menu">menu</nav>. See Documentation')
				return false;
			}

			arguments[1] != undefined && _this.parse_arguments(data);
			_this.$mobilemenu.parse_mm(mmpanel);//_this.mm_close_button, _this.mm_back_button);
			_this.$mobilemenu.init_mm(mmpanel);
			_this.mm_enable_breakpoint && _this.$mobilemenu.check_resolution_mm(mmpanel);//_this.mm_breakpoint);
			$button.mm_handler(mmpanel);
		},
		parse_arguments: function(data){
			var _this = this;
			if(Object(data).hasOwnProperty("menu_class")) _this.$mobilemenu = $("."+data.menu_class);

			$.each(data, function( k, v ) {
				switch(k) {
				case 'right':
					v && _this.$mobilemenu.addClass("mm-right");
					break;
				case 'close_button_name':
					_this.mm_close_button = v;
					break;
				case 'back_button_name':
					_this.mm_back_button = v;
					break;
				case 'width':
					_this.$mobilemenu.css("width", v);
					break;
				case 'breakpoint':
					_this.mm_breakpoint = v;
					break;
				case 'enable_breakpoint':
					_this.mm_enable_breakpoint = v;
					break;
				case 'mobile_button':
					_this.mm_mobile_button = v;
					break;
				case 'remember_state':
					_this.remember_state = v;
					break;
				case 'second_button':
					_this.second_button = v;
					break;
				};
			});
		},
		show_button_in_mobile: function($button){
			var _this = this;
			if(_this.mm_mobile_button) {
				window.innerWidth > _this.mm_breakpoint ? $button.hide() : $button.show();
				$(window).resize(function(){
					window.innerWidth > _this.mm_breakpoint ? $button.hide() : $button.show();
				})
			}
		}
	}
	mmpanel.init($(this), arguments[0]);
	mmpanel.show_button_in_mobile($(this));
}

$.fn.check_resolution_mm = function(mmpanel) {
	var _this = $(this);
	$(window).resize(function(){
		if(!$("body").hasClass("mm-open") || !_this.hasClass("mmitemopen")) return false;
		window.innerWidth > mmpanel.mm_breakpoint && _this.closemm(mmpanel);
	});
}
$.fn.mm_handler = function(mmpanel){
	$(this).click(function(e){
		e.preventDefault();
		mmpanel.$mobilemenu.openmm();
	});

	if(mmpanel.second_button != false){
		$(mmpanel.second_button).click(function(e){
			e.preventDefault();
			mmpanel.$mobilemenu.openmm();
		});
	};
}

$.fn.parse_mm = function(mmpanel) {
	var $mm_curent = $(this).clone(),
		$mm_new = $(get_mm_parent()),
		$mm_block = false,
		count = 0,
		_this = false,
		$btnBack = false,
		$ul;
	$(this).empty();

	$mm_curent.find('a').each(function(){
		_this = $(this);
		$ul = _this.parent().find("ul").first();
		if($ul.length) {
			count++;
			$ul.prepend("<li></li>").find("li").first().append(_this.clone().addClass("mm-original-link"));
			_this.attr("href", "#mm"+count).attr("data-target", "#mm"+count).addClass("mm-next-level");
		}
	});
	$mm_curent.find('ul').each(function(index){
		$btnBack = false;
		$mm_block = $(get_mm_block()).attr("id", "mm"+index).append($(this));
		if (index == 0) {
			$mm_block.addClass("mmopened").addClass("mmcurrent").removeClass("mmhidden");
			$btnBack = getButtonClose($mm_curent.find(".mm-closebtn").html(), mmpanel.mm_close_button);
			$mm_block.find("ul").first().prepend($btnBack);
		}
		else {
			$btnBack = getButtonBack($mm_curent.find(".mm-backbtn").html(), mmpanel.mm_back_button);
			$mm_block.find("ul").first().prepend($btnBack);
		}
		$mm_new.append($mm_block);
	});

	$(this).append($mm_new);
}
$.fn.init_mm = function(mmpanel) {
	var _parent = $(this);
	_parent.find("a").each(function(){
		$(this).click(function(e){
			var _this = $(this);
			var $panel = false;
			var $currobj = false;
			var lv = '';
			if(_this.hasClass("mm-next-level")){
				e.preventDefault();
				lv = _this.attr("href");
				$currobj = _parent.find(".mmcurrent");
				$currobj.addClass("mmsubopened").removeClass("mmcurrent");
				_parent.find(lv).removeClass("mmhidden");
				setTimeout(function(){_parent.find(lv).scrollTop(0).addClass("mmcurrent").addClass("mmopened");}, 0);
				setTimeout(function(){$currobj.addClass("mmhidden")}, delay_tab);
				return false;
			}
			if(_this.hasClass("mm-prev-level")){
				e.preventDefault();
				lv = _this.attr("href");
				$currobj = _parent.find(".mmcurrent");
				$currobj.removeClass("mmcurrent").removeClass("mmopened");
				_parent.find(".mmsubopened").last().removeClass("mmhidden").scrollTop(0).removeClass("mmsubopened").addClass("mmcurrent");
				setTimeout(function(){$currobj.addClass("mmhidden")}, delay_tab);
				return false;
			}
			if(_this.hasClass("mm-close")){
				_parent.closemm(mmpanel);
				return false;
			}
		})
	});
	$(".mm-fullscreen-bg").click(function(e){
		e.preventDefault();
		_parent.closemm(mmpanel);
	});
}
$.fn.openmm = function(){
	var _this = $(this);
	_this.show();
	setTimeout(function(){$("body").addClass("mm-open");_this.addClass("mmitemopen");$(".mm-fullscreen-bg").fadeIn(delay_show_mm);}, 0);
}
$.fn.closemm = function(mmpanel){
	var _this = $(this);
	_this.addClass("mmhide");
	$(".mm-fullscreen-bg").fadeOut(delay_hide_mm);
	setTimeout(function(){ mm_destroy(_this, mmpanel); }, delay_hide_mm);
}
function mm_destroy(_parent, mmpanel){
	if(!mmpanel.remember_state) {
		_parent.find(".mmpanel").toggleClass("mmsubopened mmcurrent mmopened", false).addClass("mmhidden");
		_parent.find("#mm0").addClass("mmopened").addClass("mmcurrent").removeClass("mmhidden");
	}
	_parent.toggleClass("mmhide mmitemopen", false).hide();
	$("body").removeClass("mm-open");
}
function get_mm_parent(){
	return '<div class="mmpanels"></div>';
}
function get_mm_block(){
	return '<div class="mmpanel mmhidden">';
}
function getButtonBack(value, _default) {
	value = value == undefined ? _default : value;
	return '<li><a href="#" data-target="#" class="mm-prev-level">'+value+'</a></li>';
}
function getButtonClose(value, _default) {
	value = value == undefined ? _default : value;
	return '<li class="mm-close-parent"><a href="#close" data-target="#close" class="mm-close">'+value+'</a></li>';
}
function getFullscreenBg() {
	return '<div class="mm-fullscreen-bg"></div>';
}

})(jQuery);
Page not found – Hello World !