1 |
85ad3d82
|
Assos Assos
|
|
2 |
|
|
|
3 |
|
|
|
4 |
|
|
|
5 |
|
|
|
6 |
|
|
|
7 |
|
|
|
8 |
|
|
|
9 |
|
|
|
10 |
|
|
|
11 |
|
|
|
12 |
|
|
|
13 |
|
|
|
14 |
|
|
|
15 |
|
|
(function($){
|
16 |
|
|
$.fn.sfsmallscreen = function(options){
|
17 |
|
|
options = $.extend({
|
18 |
|
|
mode: 'inactive',
|
19 |
|
|
breakpoint: 768,
|
20 |
|
|
useragent: '',
|
21 |
|
|
title: '',
|
22 |
|
|
addSelected: true,
|
23 |
|
|
menuClasses: true,
|
24 |
|
|
hyperlinkClasses: true,
|
25 |
|
|
excludeClass_menu: '',
|
26 |
|
|
excludeClass_hyperlink: '',
|
27 |
|
|
includeClass_menu: '',
|
28 |
|
|
includeClass_hyperlink: ''
|
29 |
|
|
}, options);
|
30 |
|
|
|
31 |
|
|
|
32 |
|
|
function refine(menu){
|
33 |
|
|
if ($('.sf-megamenu', menu).length > 0){
|
34 |
|
|
var refined = menu.clone();
|
35 |
|
|
refined.find('div.sf-megamenu-column > ol').each(function(){
|
36 |
|
|
$(this).replaceWith('<ul>' + $(this).html() + '</ul>');
|
37 |
|
|
});
|
38 |
|
|
refined.find('div.sf-megamenu-column').each(function(){
|
39 |
|
|
$(this).replaceWith($(this).html());
|
40 |
|
|
}).end().find('.sf-megamenu-wrapper > ol').each(function(){
|
41 |
|
|
$(this).replaceWith($(this).html());
|
42 |
|
|
}).end().find('li.sf-megamenu-wrapper').each(function(){
|
43 |
|
|
$(this).replaceWith($(this).html());
|
44 |
|
|
});
|
45 |
|
|
} else {
|
46 |
|
|
var refined = menu.clone();
|
47 |
|
|
}
|
48 |
|
|
refined.find('.sf-smallscreen-remove').each(function(){
|
49 |
|
|
$(this).replaceWith($(this).html());
|
50 |
|
|
}).end().find('.sf-sub-indicator, .sf-description').each(function(){
|
51 |
|
|
$(this).remove();
|
52 |
|
|
});
|
53 |
|
|
return refined;
|
54 |
|
|
}
|
55 |
|
|
|
56 |
|
|
|
57 |
|
|
|
58 |
|
|
|
59 |
|
|
function toSelect(menu, level){
|
60 |
|
|
var items = '';
|
61 |
|
|
$(menu).children('li').each(function(){
|
62 |
|
|
var list = $(this);
|
63 |
|
|
list.children('a, span').each(function(){
|
64 |
|
|
var item = $(this),
|
65 |
|
|
path = item.is('a') ? item.attr('href') : '',
|
66 |
|
|
itemClone = item.clone(),
|
67 |
|
|
classes = (options.hyperlinkClasses) ? ((options.excludeClass_hyperlink && itemClone.hasClass(options.excludeClass_hyperlink)) ? itemClone.removeClass(options.excludeClass_hyperlink).attr('class') : itemClone.attr('class')) : '',
|
68 |
|
|
classes = (options.includeClass_hyperlink && !itemClone.hasClass(options.includeClass_hyperlink)) ? ((options.hyperlinkClasses) ? itemClone.addClass(options.includeClass_hyperlink).attr('class') : options.includeClass_hyperlink) : classes,
|
69 |
|
|
classes = (classes) ? ' class="' + classes + '"' : '',
|
70 |
|
|
disable = item.is('span') ? ' disabled="disabled"' : '',
|
71 |
|
|
subIndicator = 1 < level ? Array(level).join('-') + ' ' : '';
|
72 |
|
|
items += '<option value="' + path + '"' + classes + disable + '>' + subIndicator + $.trim(item.text()) +'</option>';
|
73 |
|
|
list.find('> ul').each(function(){
|
74 |
|
|
items += toSelect(this, level + 1);
|
75 |
|
|
});
|
76 |
|
|
});
|
77 |
|
|
});
|
78 |
|
|
return items;
|
79 |
|
|
}
|
80 |
|
|
|
81 |
|
|
|
82 |
|
|
function convert(menu){
|
83 |
|
|
var menuClone = menu.clone(), classes = (options.menuClasses) ? ((options.excludeClass_menu && menuClone.hasClass(options.excludeClass_menu)) ? menuClone.removeClass(options.excludeClass_menu).attr('class') : menuClone.attr('class')) : '',
|
84 |
|
|
classes = (options.includeClass_menu && !menuClone.hasClass(options.includeClass_menu)) ? ((options.menuClasses) ? menuClone.addClass(options.includeClass_menu).attr('class') : options.includeClass_menu) : classes,
|
85 |
|
|
classes = (classes) ? ' class="' + classes + '"' : '';
|
86 |
|
|
if ($('#' + menu.attr('id') + '-select').length == 0){
|
87 |
|
|
var selectList = $('<select' + classes + ' id="' + menu.attr('id') + '-select"/>'),
|
88 |
|
|
refinedMenu = refine(menu);
|
89 |
|
|
newMenu = toSelect(refinedMenu, 1);
|
90 |
|
|
selectList.append('<option>' + options.title + '</option>').append(newMenu).change(function(){
|
91 |
|
|
window.location = selectList.val();
|
92 |
|
|
});
|
93 |
|
|
if (options.addSelected) {
|
94 |
|
|
selectList.find('.active').attr("selected", !0);
|
95 |
|
|
}
|
96 |
|
|
menu.before(selectList).hide();
|
97 |
|
|
}
|
98 |
|
|
}
|
99 |
|
|
|
100 |
|
|
|
101 |
|
|
function turnBack(menu){
|
102 |
|
|
var id = '#' + menu.attr('id');
|
103 |
|
|
$(id + '-select').remove();
|
104 |
|
|
$(id).show();
|
105 |
|
|
}
|
106 |
|
|
|
107 |
|
|
|
108 |
|
|
return this.each(function(){
|
109 |
|
|
var menu = $(this),
|
110 |
|
|
mode = options.mode;
|
111 |
|
|
|
112 |
|
|
switch (mode){
|
113 |
|
|
case 'always_active' :
|
114 |
|
|
convert(menu);
|
115 |
|
|
break;
|
116 |
|
|
case 'window_width' :
|
117 |
|
|
if ($(window).width() < options.breakpoint){
|
118 |
|
|
convert(menu);
|
119 |
|
|
}
|
120 |
|
|
var timer;
|
121 |
|
|
$(window).resize(function(){
|
122 |
|
|
clearTimeout(timer);
|
123 |
|
|
timer = setTimeout(function(){
|
124 |
|
|
if ($(window).width() < options.breakpoint){
|
125 |
|
|
convert(menu);
|
126 |
|
|
}
|
127 |
|
|
else {
|
128 |
|
|
turnBack(menu);
|
129 |
|
|
}
|
130 |
|
|
}, 100);
|
131 |
|
|
});
|
132 |
|
|
break;
|
133 |
|
|
case 'useragent_custom' :
|
134 |
|
|
if (options.useragent != ''){
|
135 |
|
|
var ua = RegExp(options.useragent, 'i');
|
136 |
|
|
if (navigator.userAgent.match(ua)){
|
137 |
|
|
convert(menu);
|
138 |
|
|
}
|
139 |
|
|
}
|
140 |
|
|
break;
|
141 |
|
|
case 'useragent_predefined' :
|
142 |
|
|
if (navigator.userAgent.match(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i)){
|
143 |
|
|
convert(menu);
|
144 |
|
|
}
|
145 |
|
|
break;
|
146 |
|
|
}
|
147 |
|
|
});
|
148 |
|
|
};
|
149 |
|
|
})(jQuery); |