PageSourceSearch

https://pro-jazz.com/templates/default/js/core.js?1789208782

js pro-jazz.com collected 2026-09-25 02:11:08 UTC 32,960 bytes, 950 lines download raw bytes

1var icms = icms || {};
2
3$(document).ready(function(){
4
5    for(var module in icms){
6        if ( typeof(icms[module].onDocumentReady) === 'function' ) {
7            icms[module].onDocumentReady();
8        }
9    }
10
11    renderHtmlAvatar();
12
13    $('.widget_tabbed').each(function(){
14
15       $('.tabs .tab a', $(this)).click(function(){
16           var wid = $(this).data('id');
17           var block = $(this).parent('li').parent('ul').parent('.tabs').parent('.widget_tabbed');
18           $('.body', block).hide();
19           $('.links-wrap', block).hide();
20           $('#widget-'+wid, block).show();
21           $('#widget-links-'+wid, block).show();
22           $('.tabs a', block).removeClass('active');
23           $(this).addClass('active');
24           return false;
25       });
26
27    });
28
29	$('.messages.ajax-modal a').on('click', function(){
30        $('#popup-manager').addClass('nyroModalMessage');
31	});
32
33});
34
35icms.menu = (function ($) {
36
37    this.allow_mobile_select = true;
38
39    this.onDocumentReady = function(){
40
41        $(document).on('click', function(event) {
42            if ($(event.target).closest('.dropdown_menu').length) {
43                $('.dropdown_menu > input').not($(event.target).closest('.dropdown_menu > input')).prop('checked', false);
44                return;
45            }
46            $('.dropdown_menu > input').prop('checked', false);
47        });
48
49        if(this.allow_mobile_select){
50
51            var dropdown = $('<select class="mobile_menu_select" />').appendTo("nav");
52            $("<option value='/'></option>").appendTo(dropdown);
53
54            $("nav .menu li > a").each(function() {
55                var el = $(this);
56                var nav_level = $("nav .menu").parents().length;
57                var el_level = $(this).parents().length - nav_level;
58                var pad = (el_level-2 + 1) >= 1 ? new Array(el_level-2 + 1).join('-') + ' ' : '';
59                var attr = {
60                    value   : el.attr('href'),
61                    text    : pad + el.text()
62                };
63                if(window.location.pathname.indexOf(el.attr('href')) === 0){
64                    attr.selected = true;
65                }
66                $("<option>", attr).appendTo(dropdown);
67            });
68
69            $("nav select.mobile_menu_select").change(function() {
70                window.location = $(this).find("option:selected").val();
71            });
72
73            $(".tabs-menu").each(function() {
74
75                var tabs = $(this);
76
77                var dropdown = $('<select class="mobile_menu_select" />').prependTo(tabs);
78                $("> ul > li > a", tabs).each(function() {
79                    var el = $(this);
80                    var attr = {
81                        value   : el.attr('href'),
82                        text    : el.text()
83                    };
84                    if(el.parent('li').hasClass('active')){
85                        attr.selected = true;
86                    }
87                    $("<option>", attr).appendTo(dropdown);
88                });
89
90                $(dropdown).change(function() {
91                    window.location = $(this).find("option:selected").val();
92                });
93            });
94        }
95
96        if($('div.widget.fixed_actions_menu').length){
97            var $menu_target = $('#breadcrumbs').length ? $('#breadcrumbs') : ($('#body section article').length ? $('#body section article') : null);
98            if ($menu_target){
99                $menu_target.prepend($('div.widget.fixed_actions_menu'));
100                $('div.widget.fixed_actions_menu').on('click', function (e){
101                    var $menu = $(this);
102                    if ($(e.target).closest('.body a').length) {
103                        return;
104                    }
105                    if ($menu.hasClass('clicked')) {
106                        $menu.removeClass('clicked');
107                    } else {
108                        $menu.addClass('clicked');
109                        setTimeout(function(){
110                            $(document).one('click', function(event) {
111                                if ($(event.target).closest($menu).length) { return; }
112                                $menu.removeClass('clicked');
113                            });
114                        }, 10);
115                    }
116                });
117            } else {
118                $('div.widget.fixed_actions_menu').removeClass('fixed_actions_menu');
119            }
120        };
121
122        this.initActionConfirm();
123    };
124
125    this.initActionConfirm = function(){
126        $('a.icms-action-confirm, .icms-action-confirm > a').on('click', function(){
127            let confirm_text = $(this).data('confirm');
128            if (confirm_text) {
129                if(!confirm(confirm_text)){ return false; }
130            }
131        });
132    };
133
134    return this;
135
136}).call(icms.menu || {},jQuery);
137
138icms.forms = (function ($) {
139
140    this.wysiwygs_insert_pool = {insert: {}, add: {}, init: {}, save: {}};
141    this.submitted = false;
142    this.form_changed = false;
143    this.csrf_token = false;
144
145    var _this = this;
146
147    this.addWysiwygsInsertPool = function (field_name, callback){
148        this.wysiwygs_insert_pool.insert[field_name] = callback;
149    };
150
151    this.addWysiwygsAddPool = function (field_name, callback){
152        this.wysiwygs_insert_pool.add[field_name] = callback;
153    };
154
155    this.addWysiwygsInitPool = function (field_name, callback){
156        this.wysiwygs_insert_pool.init[field_name] = callback;
157    };
158
159    this.addWysiwygsSavePool = function (field_name, callback){
160        this.wysiwygs_insert_pool.save[field_name] = callback;
161    };
162
163    this.wysiwygBeforeSubmit = function (){
164        for(var field_name in this.wysiwygs_insert_pool.save) {
165            if(this.wysiwygs_insert_pool.save.hasOwnProperty(field_name)){
166                if (typeof(this.wysiwygs_insert_pool.save[field_name]) === 'function') {
167                    this.wysiwygs_insert_pool.save[field_name](field_name);
168                }
169            }
170        }
171        return this;
172    };
173
174    this.wysiwygInit = function (field_name, callback){
175        if (typeof(this.wysiwygs_insert_pool.init[field_name]) === 'function') {
176            this.wysiwygs_insert_pool.init[field_name](field_name, callback);
177        } else if(typeof(callback) === 'function') {
178            callback();
179        }
180        return this;
181    };
182
183    this.wysiwygInsertText = function (field_name, text){
184        if (typeof(this.wysiwygs_insert_pool.insert[field_name]) === 'function') {
185            this.wysiwygs_insert_pool.insert[field_name](field_name, text);
186        } else {
187            $('#'+field_name).val(text).focus();
188        }
189        return this;
190    };
191
192    this.wysiwygAddText = function (field_name, text){
193        if (typeof(this.wysiwygs_insert_pool.add[field_name]) === 'function') {
194            this.wysiwygs_insert_pool.add[field_name](field_name, text);
195        } else {
196            addTextToPosition($('#'+field_name), text);
197        }
198        return this;
199    };
200
201    this.getCsrfToken = function (){
202        if(this.csrf_token === false){
203            this.csrf_token = $('meta[name="csrf-token"]').attr('content');
204        }
205        return this.csrf_token;
206    };
207
208    this.setCsrfToken = function (csrf_token){
209        this.csrf_token = csrf_token;
210    };
211
212    this.getFilterFormParams = function(form){
213
214        var form_params = _this.toJSON(form);
215
216        var o = {};
217        for(var name in form_params){if(form_params.hasOwnProperty(name)){
218            if(name === 'page'){ continue; }
219            if(form_params[name] && form_params[name] !== '0'){
220                o[name] = form_params[name];
221            }
222        }}
223
224        return o;
225
226    };
227
228    this.initFilterForm = function(selector){
229
230        var change = function (){
231
232            var form = $(this.closest('form'));
233
234            var sbutton = $(form).find('.buttons button[type = submit]');
235            var spinner = $(form).find('.spinner.filter_loader');
236
237            $(sbutton).prop('disabled', true);
238            $(spinner).show();
239
240            var o = _this.getFilterFormParams(form);
241
242            if(Object.keys(o).length > 0 || $(form).find('.cancel_filter_link').length == 0){
243                var submit_uri = $(form).attr('action');
244            } else {
245                var submit_uri = $(form).find('.cancel_filter_link').attr('href');
246            }
247
248            o.show_count = 1;
249
250            var query_string = $.param(o);
251
252            $.get(submit_uri+'?'+query_string, function(result){
253                if(result.filter_link){
254                    $(form).data('filter_link', result.filter_link);
255                } else {
256                    $(form).removeData('filter_link');
257                }
258                $(sbutton).val(result.hint).prop('disabled', false).find('span').text(result.hint);
259                $(spinner).fadeOut('slow');
260                icms.events.run('icms_content_filter_changed', form);
261            }, 'json');
262
263        };
264
265        var delay = function () {
266            var timer = 0;
267            return function () {
268                var context = this, args = arguments;
269                clearTimeout(timer);
270                timer = setTimeout(function () {
271                    change.apply(context, args);
272                }, 500);
273            };
274        };
275
276        $(selector).find('select, input[type=checkbox]').on('change', change);
277        $(selector).find('input:not([type=checkbox]), textarea').on('input', delay());
278
279        $(selector).find('.buttons button[type = submit]').on('click', function (){
280
281            var form = $(this.closest('form'));
282
283            var filter_link = $(form).data('filter_link');
284
285            if(filter_link){
286                window.location.href = filter_link;
287                return false;
288            }
289
290            var submit_uri = $(form).attr('action');
291
292            var o = _this.getFilterFormParams(form);
293
294            var query_string = $.param(o);
295
296            if(query_string.length > 0){
297                window.location.href = submit_uri+'?'+query_string;
298            } else {
299
300                var cancel_filter_link = $(form).find('.cancel_filter_link').attr('href');
301
302                if(!cancel_filter_link){
303                    cancel_filter_link = submit_uri;
304                }
305
306                window.location.href = cancel_filter_link;
307            }
308
309            return false;
310
311        });
312
313    };
314
315    this.initUnsaveNotice = function(){
316
317        var init_data = {};
318
319        $('form').each(function(i){
320            init_data[i] = _this.toJSON($(this));
321            $(this).attr('data-notice_id', i);
322        });
323
324        $(document).on('change', '.form-tabs input, .form-tabs select, .form-tabs textarea', function (e) {
325            var form = $(this).closest('form');
326            _this.form_changed = (JSON.stringify(init_data[form.attr('data-notice_id')]) !== JSON.stringify(_this.toJSON(form))) ? true : false;
327        });
328        $(document).on('submit', 'form', function () {
329            icms.forms.submitted = true;
330        });
331        $(window).on('beforeunload', function (e) {
332            if (icms.forms.form_changed && !icms.forms.submitted) {
333                var e = e || window.event;
334                var msg = LANG_SUBMIT_NOT_SAVE;
335                if (e) {
336                    e.returnValue = msg;
337                }
338                return msg;
339            }
340        });
341
342    };
343
344    this.initCollapsedFieldset = function(){
345        $('.is_collapsed legend').on('click', function (){
346            var _fieldset = $(this).closest('.is_collapsed');
347            $(_fieldset).toggleClass('is_collapse do_expand');
348            $.cookie('icms[fieldset_state]['+$(_fieldset).attr('id')+']', $(_fieldset).hasClass('do_expand'));
349        });
350        $('.is_collapsed').each(function (){
351            if($(this).find('.field_error').length > 0 || $.cookie('icms[fieldset_state]['+$(this).attr('id')+']') === 'true'){
352                $(this).addClass('do_expand').removeClass('is_collapse'); return;
353            }
354        });
355    };
356
357	this.toJSON = function(form) {
358        _this.wysiwygBeforeSubmit();
359        var o = {};
360        var a = form.serializeArray();
361        $.each(a, function() {
362            if (o[this.name] !== undefined) {
363                if (!o[this.name].push) {
364                    o[this.name] = [o[this.name]];
365                }
366                o[this.name].push(this.value || '');
367            } else {
368                o[this.name] = this.value || '';
369            }
370        });
371        return o;
372	};
373
374    this.submit = function(selector){
375        selector = selector || '.button-submit';
376        icms.forms.submitted = true;
377        if (selector && (selector.indexOf('to_draft') !== -1 || selector.indexOf('draft') !== -1)) {
378            var form = $(selector).closest('form');
379            if (!form.length) form = $('form:has(.button-submit), form:has(.buttons)');
380            if (!$('input[type="hidden"][name="to_draft"]', form).length) {
381                form.append('<input type="hidden" name="to_draft" value="1" />');
382            }
383        }
384        var btn = $(selector);
385        if (btn.length && btn[0].click) {
386            btn[0].click();
387        } else if (btn.length) {
388            btn.trigger('click');
389        } else {
390            var form = $(selector).closest('form');
391            if (!form.length) form = $('form');
392            form.submit();
393        }
394    };
395
396	this.initFieldsetChildList = function (form_id){
397        $('#'+form_id+' .icms-form-tab__demand').each(function (){
398            var demand_wrap = $(this).attr('href');
399            var url = $(this).data('parent_url');
400            $('#'+$(this).data('parent')).on('change', function (){
401                var value = $(this).val();
402                $.post(url, {value: value, form_id: form_id}, function(result){
403                    $(demand_wrap).html(result);
404                }, 'html');
405            });
406        });
407    };
408
409	this.updateChildList = function (child_id, url, value, current_value, filter_field_name) {
410
411        var child_list = $('#' + child_id);
412
413        if ($('#f_' + child_id + ' .loading').length === 0) {
414            $('#f_' + child_id + ' label').append(' <div class="loading"></div>');
415        }
416
417        child_list.html('');
418
419        current_value = current_value || '';
420
421        if (!$.isArray(current_value)) {
422            current_value = [current_value];
423        }
424
425        $.post(url, {value: value}, function (result) {
426
427            for (var k in result) {
428                if (result.hasOwnProperty(k)) {
429                    if (typeof result[k].value !== 'undefined') {
430                        var _value = result[k].value;
431                        var title = result[k].title;
432                    } else {
433                        var _value = k;
434                        var title = result[k];
435                    }
436                    child_list.append('<option value="' + _value + '"' + ($.inArray(_value, current_value) !== -1 ? ' selected' : '') + '>
436' + title + '</option>');
437                }
438            }
439
440            $(child_list).trigger('chosen:updated');
441
442            $('#f_' + child_id + ' .loading').remove();
443
444            icms.events.run('icms_forms_updatechildlist', {
445                result: result,
446                child_id: child_id,
447                value: value,
448                current_value: current_value,
449                filter_field_name: filter_field_name
450            });
451
452        }, 'json');
453
454    };
455
456    this.submitAjax = function(form, additional_params){
457
458        icms.forms.submitted = true;
459
460        var form_data = this.toJSON($(form));
461
462        if(additional_params){
463            $.extend(form_data, additional_params);
464        }
465
466        var url = $(form).attr('action');
467
468        var submit_btn = $(form).find('.button-submit');
469
470        $(submit_btn).prop('disabled', true);
471
472        $.post(url, form_data, function(result){
473
474            $(submit_btn).prop('disabled', false);
475
476            if (result.errors === false){
477                if ("callback" in result){
478
479                    var params = result.callback.split('.');
480
481                    var calling_func = window;
482                    for(var id in params){
483                        calling_func = calling_func[params[id]];
484                    }
485
486                    calling_func.apply(form, [form_data, result]);
487
488                    return;
489                }
490                if (result.success_text){
491                    icms.modal.alert(result.success_text);
492                }
493                if (result.redirect_uri){
494                    window.location.href = result.redirect_uri;
495                }
496                return;
497            }
498
499            if (typeof(result.errors) === 'object'){
500
501                $('.field_error', form).removeClass('field_error');
502                $('.error_text', form).remove();
503
504                for(var field_id in result.errors){
505                    var id = field_id.replace(':', '_');
506                    $('#f_'+id, form).addClass('field_error');
507                    $('#f_'+id, form).prepend('<div class="error_text">' + result.errors[field_id] + '</div>');
508                    $(form).find('ul.tabbed > li > a[href = "#'+$('#f_'+id, form).parents('.tab').attr('id')+'"]').trigger('click');
509                }
510
511                icms.events.run('icms_forms_submitajax', result);
512
513                icms.modal.resize();
514
515                icms.forms.submitted = false;
516
517                return;
518
519            }
520
521        }, 'json');
522
523        return false;
524
525    };
526
527    this.initSymbolCount = function (field_id, max, min){
528        $('#f_'+field_id).append('<div class="symbols_count"><span class="symbols_num"></span><span class="symbols_spell"></span></div>');
529        var symbols_count = $('#f_'+field_id+' > .symbols_count');
530        var symbols_num   = $('.symbols_num', symbols_count);
531        var symbols_spell = $('.symbols_spell', symbols_count);
532        if(max){
533            var type = 'left';
534        } else {
535            var type = 'total';
536        }
537        if(min){
538            type = 'total';
539        }
540        var field_id_el = $('#'+field_id);
541
542        $(symbols_num).on('click', function (){
543            if(max){
544                if(type === 'total'){
545                    type = 'left';
546                } else {
547                    type = 'total';
548                }
549                render_symbols_count();
550            }
551        });
552        var render_symbols_count = function (){
553            var num = +$(field_id_el).val().length;
554            if(!num){
555                $(symbols_num).html(''); $(symbols_count).hide(); return;
556            }
557            if(min){ if(num < min){
558                    $(symbols_num).addClass('overflowing_min');
559                } else {
560                    $(symbols_num).removeClass('overflowing_min');
561            }}
562            if(max && num > max){
563                $(symbols_num).addClass('overflowing');
564            } else {
565                $(symbols_num).removeClass('overflowing');
566            }
567            if(type === 'total'){
568                $(symbols_count).fadeIn();
569                $(symbols_num).html(num);
570                $(symbols_spell).html(spellcount(num, LANG_CH1, LANG_CH2, LANG_CH10));
571            } else {
572                $(symbols_count).fadeIn();
573                if(num > max){
574                    num = max;
575                    $(field_id_el).val($(field_id_el).val().substr(0, max));
576                }
577                $(symbols_num).html((max - num));
578                $(symbols_spell).html(spellcount(num, LANG_CH1, LANG_CH2, LANG_CH10)+' '+LANG_ISLEFT);
579            }
580        };
581        $(field_id_el).on('input', render_symbols_count);
582        icms.events.on('autocomplete_select', function(){ render_symbols_count(); });
583        render_symbols_count();
584    };
585
586    this.getInputVal = function(el){
587        if($(el).is(':checkbox,:radio')){
588            var v = $(el+':checked').val();
589            return typeof v === 'undefined' ? '0' : v;
590        }
591        return $(el).val();
592    };
593    this.inputNameToId = function(name){
594        name = name.replace(/\:|\|/g,'_');
595        return name;
596    };
597    this.inputNameToElName = function(name){
598        name = name.split(':');
599        return (typeof name !== 'string' && name.length > 1) ? name.shift()+'['+name.join('][')+']' :  name;
600    };
601    this.VDisDisplay = function(field_value, type){
602        var display;
603        if (Array.isArray(field_value) && field_value.length > 0) {
604            for (var show_key in type) {
605                if ($.inArray(type[show_key], field_value) !== -1) {
606                    display = true;
607                } else {
608                    display = false;
609                    break;
610                }
611            }
612        } else {
613            if (Array.isArray(field_value)) {
614                field_value = '';
615            }
616            if ($.inArray(field_value, type) !== -1) {
617                return true;
618            } else {
619                display = false;
620            }
621        }
622        return display;
623    };
624    this.VDListeners = {};
625    this.VDListenersInitialized = [];
626    this.VDRules = {from:{},depends:{}};
627    this.addVisibleDepend = function(form_id, field_id, rules){
628        if(typeof this.VDRules.depends[form_id+'-'+field_id] === 'undefined'){ /* здесь все зависимости поля field_name */
629            this.VDRules.depends[form_id+'-'+field_id] = rules; /* array('is_cats' => array('show' => array('1'))) */
630        }else{
631            $.extend(this.VDRules.depends[form_id+'-'+field_id], rules);
632        }
633        for(var f in rules){if(rules.hasOwnProperty(f)){
634            if(typeof this.VDRules.from[form_id+'-'+f] === 'undefined'){this.VDRules.from[form_id+'-'+f] = {};}
635            if(typeof this.VDRules.from[form_id+'-'+f][field_id] === 'undefined'){ /* здесь все, кто зависит от поля f */
636                this.VDRules.from[form_id+'-'+f][field_id] = rules[f]; /* array('show' => array('1')) */
637            }else{
638                $.extend(this.VDRules.from[form_id+'-'+f][field_id], rules[f]);
639            }
640            if(typeof this.VDListeners[form_id+'-'+f] === 'undefined'){
641                this.VDListeners[form_id+'-'+f] = '#'+form_id+' [name="'+this.inputNameToElName(f)+'"]';
642                $('#'+form_id+' [name="'+this.inputNameToElName(f)+'"]').on('change input', function (){
643                    for(var field in _this.VDRules.from[form_id+'-'+f]){if(_this.VDRules.from[form_id+'-'+f].hasOwnProperty(field)){ /* перебор тех, кто зависит от этого поля f */
644                        var display = null; /* если не будет show */
645
646                        for(var _from in _this.VDRules.depends[form_id+'-'+field]){if(_this.VDRules.depends[form_id+'-'+field].hasOwnProperty(_from)){ /* перебор тех, от кого зависит поле field */
647                            if(typeof _this.VDRules.depends[form_id+'-'+field][_from]['show'] !== 'undefined'){
648                                display = _this.VDisDisplay(_this.getInputVal('#'+form_id+' [name="'+_this.inputNameToElName(_from)+'"]'), _this.VDRules.depends[form_id+'-'+field][_from]['show']);
649                                if(display === true){ break; }
650                            }
651                        }}
652
653                        if(display === null){display = true;}
654
655                        if(display){ /* скрытие сильнее показа */
656                            for(var _from in _this.VDRules.depends[form_id+'-'+field]){if(_this.VDRules.depends[form_id+'-'+field].hasOwnProperty(_from)){ /* перебор тех, от кого зависит поле field */
657                                if(typeof _this.VDRules.depends[form_id+'-'+field][_from]['hide'] !== 'undefined'){
658                                    display = !_this.VDisDisplay(_this.getInputVal('#'+form_id+' [name="'+_this.inputNameToElName(_from)+'"]'), _this.VDRules.depends[form_id+'-'+field][_from]['hide']);
659                                    if(display === false){ break; }
660                                }
661                            }}
662                        }
663
664                        if(display){
665                            $('#f_'+_this.inputNameToId(field)).removeClass('hide_field').prev('.field_tabbed').removeClass('hide_field');
666                        } else {
667                            $('#f_'+_this.inputNameToId(field)).addClass('hide_field').prev('.field_tabbed').addClass('hide_field');
668                        }
669
670                    }}
671                });
672            }
673        }}
674        return this;
675    };
676    this.VDReInit = function(){
677        for(var l in this.VDListeners){if(this.VDListeners.hasOwnProperty(l)){
678            if(this.VDListenersInitialized.indexOf(this.VDListeners[l]) === -1) {
679                $(this.VDListeners[l]).triggerHandler('change');
680                $(this.VDListeners[l]).triggerHandler('input');
681                this.VDListenersInitialized.push(this.VDListeners[l]);
682            }
683        }}
684    };
685
686	return this;
687
688}).call(icms.forms || {},jQuery);
689
690icms.events = (function ($) {
691
692    this.listeners = {};
693
694    this.on = function(name, callback){
695        if (typeof(this.listeners[name]) == 'object'){
696            this.listeners[name].push(callback);
697        } else {
698            this.listeners[name] = [callback];
699        }
700        return this;
701    };
702
703    this.run = function(name, params){
704        params = params || {};
705        for(var event_name in this.listeners[name]) {
706            if(this.listeners[name].hasOwnProperty(event_name)){
707                if (typeof(this.listeners[name][event_name]) == 'function') {
708                    this.listeners[name][event_name](params);
709                }
710            }
711        }
712        return this;
713    };
714
715	return this;
716
717}).call(icms.events || {},jQuery);
718
719icms.pagebar = function(id, initial_page, has_next, is_modal){
720
721    initial_page = initial_page || 1;
722
723    var page = 1;
724
725    var link = $(id);
726
727    var showMore = function(){
728
729        var list_wrap = $(link).prev();
730
731        if(!has_next){
732            if(initial_page > 1){
733                return true;
734            }
735            $('body,html').animate({
736                scrollTop: $(list_wrap).offset().top
737                }, 500
738            );
739            return false;
740        }
741
742        $(link).addClass('show_spinner');
743
744        page += 1;
745
746        var post_params = $(link).data('url-params');
747        post_params.page = page;
748
749        $.post($(link).data('url'), post_params, function(data){
750
751            var first_page_url = $(link).data('first-page-url');
752
753            $(link).removeClass('show_spinner');
754
755            if (!data.html) { return; }
756
757            has_next = data.has_next;
758            page = data.page;
759
760            $(list_wrap).append(data.html);
761
762            if(!has_next){
763                $('span', link).html($('span', link).data('to-first'));
764                $(link).attr('href', first_page_url);
765            }
766
767            var _sep = first_page_url.indexOf('?') !== -1 ? '&' : '?';
768
769            if(!is_modal){
770                window.history.pushState({link: first_page_url+_sep+'page='+page}, '', first_page_url+_sep+'page='+page);
771            }
772
773            if(is_modal){
774                icms.modal.resize();
775            }
776
777        }, 'json');
778
779        return false;
780
781    };
782
783    $(link).on('click', function (){
784        return showMore();
785    });
786
787};
788
789$.expr[':'].Contains = $.expr.createPseudo(function(arg) {
790    return function( elem ) {
791        return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
792    };
793});
794function setCaretPosition(field, pos) {
795    var $field = $(field);
796    if ($field[0].setSelectionRange) {
797        $field.focus();
798        $field[0].setSelectionRange(pos, pos);
799    } else if ($field[0].createTextRange) {
800        var range = $field[0].createTextRange();
801        range.collapse(true);
802        range.moveEnd('character', pos);
803        range.moveStart('character', pos);
804        range.select();
805    }
806}
807function getCaretPosition(field) {
808    var $field = $(field);
809    if($field.length){
810        if (document.selection) {
811            $field.focus();
812            var Sel = document.selection.createRange();
813            Sel.moveStart ('character', -$field.val().length);
814            return Sel.text.length;
815        } else {
816            return $field[0].selectionStart || 0;
817        }
818    }
819    return 0;
820}
821function addTextToPosition(field_id, text, spacer, spacer_stop){
822	var field = $(field_id);
823	var value = $(field).val();
824	var pos = getCaretPosition(field);
825    var value1 = value.substring(0, pos);
826    var value2 = value.substring(pos, value.length);
827    if(spacer){
828        var check1 = function(spacer){ // проверка перед вставляемым
829            if(value1.length >= spacer.length){
830                if(value1.substring(pos - spacer.length, pos) !== spacer){
831                    return true;
832                }
833            }
834            return false;
835        };
836        var check2 = function(spacer){ // проверка после вставляемого текста
837            if(value2.length >= spacer.length){
838                if(value2.substring(0, spacer.length) !== spacer){
839                    return true;
840                }
841            }
842            return false;
843        };
844        var insert1 = true, insert2 = true;
845        if(spacer_stop){
846            for(var ss in spacer_stop){if(spacer_stop.hasOwnProperty(ss)){
847                if(insert1 && (!spacer_stop[ss] || spacer_stop[ss] == 1) && !check1(ss)){
848                    insert1 = false;
849                }
850                if(insert2 && (!spacer_stop[ss] || spacer_stop[ss] == 2) && !check2(ss)){
851                    insert2 = false;
852                }
853            }}
854        }
855
856        if(insert1 && check1(spacer)){
857            text = spacer+text;
858        }
859        if(insert2 && check2(spacer)){
860            text += spacer;
861        }
862    }
863    $(field).val(value1 + text + value2).trigger('input');
864    setCaretPosition(field, pos+text.length);
865    return false;
866}
867function toggleFilter(){
868    var filter = $('.filter-panel');
869    $('.filter-link', filter).toggle('fast');
870    $('.filter-container', filter).slideToggle('fast');
871}
872function goBack(){
873    window.history.go(-1);
874}
875function spellcount (num, one, two, many){
876    if (num%10==1 && num%100!=11){
877        str = one;
878    } else if(num%10>=2 && num%10<=4 && (num%100<10 || num%100>=20)){
879        str = two;
880    } else {
881        str = many;
882    }
883    return str;
884}
885function renderHtmlAvatar(wrap){
886    wrap = wrap || document;
887    $('div.default_avatar', wrap).each(function(){
888        var a = this;
889        var i = $('img', this);
890        var isrc = $(i).attr('src');
891        $(i).attr('src', '');
892        $(i).attr('src', isrc);
893        $(i).load(function() {
894            var h = +$(this).height();
895            $(a).css({
896                'line-height': h+'px',
897                'font-size': Math.round((h*0.625))+'px'
898            });
899        });
900    });
901}
902function initMultyTabs(selector, tab_wrap_field){
903    tab_wrap_field = tab_wrap_field || '.field';
904    $(selector).each(function(indx, element){
905        var tab = $(' > li > a', $(this));
906        $(tab).closest('li').eq(0).addClass('active');
907		$(tab).on('click', function() {
908            var tab_field = $(this).attr('href');
909			$(this).closest('li').addClass('active').siblings().removeClass('active');
910            $(element).nextAll(tab_wrap_field+':lt('+$(tab).closest('li').length+')').hide();
911            $(tab_field).show();
912            return false;
913		});
914    });
915}
916function initTabs(selector){
917    $(selector+' .tab').hide();
918    $(selector+' .tab').eq(0).show();
919    $(selector+' ul.tabbed > li').eq(0).addClass('active');
920    $(selector+' ul.tabbed > li > a').click(function(){
921        $(selector+' li').removeClass('active');
922        $(this).parent('li').addClass('active');
923        $(selector+' .tab').hide();
924        $(selector+' '+$(this).attr('href')).show();
925        icms.events.run('icms_tab_cliked', this);
926        return false;
927    });
928    $(selector+' .field').each(function(indx, element){
929        if($(element).hasClass('field_error')){
930            $(selector+' ul.tabbed > li > a[href = "#'+$(element).parents('.tab').attr('id')+'"]').trigger('click');
931        }
932    });
933    $('select.mobile_menu_select', selector).change(function() {
934        $(selector+' ul.tabbed > li > a[href = "'+$(this).find("option:selected").val()+'"]').trigger('click');
935    });
936}
937function insertJavascript(filepath, onloadCallback) {
938    if ($('head script[src="'+filepath+'"]').length > 0){
939        return;
940    }
941    var el = document.createElement('script');
942    el.setAttribute('type', 'text/javascript');
943    el.setAttribute('src', filepath);
944    if (typeof(onloadCallback) == 'function') {
945        el.setAttribute('onload', function() {
946            onloadCallback();
947        });
948    }
949    $('head').append(el);
950}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.