; (function($, window, document, undefined) {
var pluginName = 'zlightMenu',
defaults = {
// height: '50px',
subMenuHeight: '20px',
//fontSize: '13px',
subMenuWidth: '180px',
floating: 'left',
transform: 'on',
transformBreak: '100',
// lablColor: '#ffffff',
// lablFontSize: '13px',
// iconColor: '#ffffff',
// iconSize: '20px',
// mobileMainColor: '#323231',
// mainColor: '#323231',
// secondColor: '#FFB40C',
// fontColor: '#ffffff',
// activeFontColor: '#ffffff',
// borderLightColor: '#444444',
// borderDarkColor: '#222222',
// dropBorderLightColor: '#444444',
// dropBorderDarkColor: '#222222'
};
function Zmenu(element, options) {
this.element = $(element);
var ele = this;
this.options = $.extend({},
defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init(ele)
};
Zmenu.prototype.variables = function(ele) {
this.op = this.options;
this.mainNav = this.element.children('#zlight-main-nav');
this.li = this.mainNav.children('li');
this.links = this.mainNav.children('li').children('a');
this.allLinks = this.mainNav.find('a');
this.active = this.mainNav.find('.zlight-active');
this.subMenu = this.mainNav.find('.zlight-submenu');
this.subli = this.subMenu.children('li');
this.subLinks = this.subMenu.children('li').children('a');
this.mobileNav = this.element.children('#zlight-mobile-nav');
this.mobileSelect = this.mobileNav.children('select');
this.mobileSpan = this.mobileNav.children('span');
this.mobileTxt = this.mobileSpan.text();
this.mobileIcon = this.mobileNav.children('.zlight-icon');
this.counter = 0;
this.mtop = parseInt(this.op.height) * 6
};
Zmenu.prototype.setStyles = function(ele) {
this.element.css({
'height': this.op.height,
'line-height': this.op.height,
'background-color': this.op.mainColor
});
this.mainNav.css({
'border-right-color': this.op.borderDarkColor,
'float': this.op.floating
});
this.links.css({
'height': this.op.height,
'line-height': this.op.height,
'font-size': this.op.fontSize,
'color': this.op.fontColor,
'border-left-color': this.op.borderDarkColor,
'border-right-color': this.op.borderLightColor
});
if (this.active) {
this.active.css('background-color', this.op.secondColor).children('a').css('color', this.op.activeFontColor)
};
this.subMenu.css({
'background-color': this.op.mainColor,
'width': this.op.subMenuWidth
});
this.subLinks.css({
'color': this.op.fontColor,
'font-size': this.op.fontSize,
'border-top-color': this.op.dropBorderDarkColor,
'border-bottom-color': this.op.dropBorderLightColor,
'line-height': this.op.subMenuHeight
});
this.mobileSelect.fadeTo(0, 0).css({
'height': this.op.height,
'line-height': this.op.height
});
this.mobileSpan.css({
'line-height': this.op.height,
'color': this.op.lablColor,
'font-size': this.op.lablFontSize
});
this.mobileIcon.css({
'color': this.op.iconColor,
'line-height': this.op.height,
'font-size': this.op.iconSize
});
this.mobileNav.css('background-color', this.op.mobileMainColor)
};
Zmenu.prototype.createMobile = function(ele) {
this.mobileSelect.append('');
this.allLinks.each(function(indx, element) {
var hrf = $(element).attr('href'),
txt = $(element).text(),
hclass = $(element).parents('.zlight-submenu').length,
tr = '';
if (hclass > 0) {
for (i = 0; i < hclass; i++) {
tr += '-'
}
};
ele.mobileSelect.append('')
})
};
Zmenu.prototype.change = function(ele) {
this.mobileSelect.on('change.zmenuChange',
function() {
location = this.options[this.selectedIndex].value
});
this.li.add(this.subli).on('mouseenter mouseleave.zmenuEnter',
function(event) {
if (event.type === 'mouseenter') {
$(this).css('background-color', ele.op.secondColor).children('a').css('color', ele.op.activeFontColor)
} else if (event.type === 'mouseleave') {
if ($(this).hasClass('zlight-active') === false) {
$(this).css('background-color', 'transparent').children('a').css('color', ele.op.fontColor)
}
}
});
if (this.op.transform === 'on') {
$(window).on('scroll.ZlightScrolling',
function() {
if ($(document).scrollTop() >= ele.op.transformBreak && ele.counter === 0) {
ele.element.css({
'position': 'fixed',
'top': '-' + ele.mtop + 'px',
'left': '0',
'padding': '0',
'margin': '0'
}).stop(0, 0).animate({
'top': '0'
},
300, 'swing');
ele.counter = 1
} else if ($(document).scrollTop() < ele.op.transformBreak) {
ele.element.css({
'position': 'relative',
'margin': '',
'padding': ''
});
ele.counter = 0
}
})
}
};
Zmenu.prototype.init = function(ele) {
this.variables(ele);
this.setStyles(ele);
this.createMobile(ele);
this.change(ele)
};
$.fn[pluginName] = function(options) {
return this.each(function() {
if (!$.data(this, 'plugin_' + pluginName)) {
$.data(this, 'plugin_' + pluginName, new Zmenu(this, options))
}
})
}
})(jQuery, window, document);