PageSourceSearch

https://ufatime.ru/templates/ufatime/filter/assets/script.js?v=1725880889

js ufatime.ru collected 2026-10-02 10:00:33 UTC 4,877 bytes, 137 lines download raw bytes

1var	filterGET  = '/engine/mods/filter/ajax.php', 
2	filterForm = '#xform', 		// ID формы
3	filterCont = '#content', 	// ID блока контента
4	filterStat = '#filterStat', // ID блока статистика
5	filterSbar = '#speedbar', 	// ID блока спидбара
6	filterNavi = '#navigation', // ID блока навигациии
7	filterNext = 'next'; 		// Class кнопки Next
8
9$(document).on('submit', '#q_search', function(){
10	var q = $(this).find('#story').val();
11	location.href = '/search/query=' + q + '/';
12	return false;
13})
14$(document).on('click', '.extsearch', function(){
15	$('#hidefields').slideToggle('visible');
16	return false;
17})
18$(function(){
19	if(location.pathname.indexOf('/search/')+1) {
20		setFilterParam(filterForm);
21	}
22	$(document).on('click', filterNavi + ' a', function(e){
23		if(location.pathname.indexOf('/search/')+1){
24			var url = $(this).attr('href'), p, n;
25			if(url.indexOf('/page/')+1) p = url.match(/\/page\/(\d+)/)[1];
26			if($(filterNavi).hasClass(filterNext)) n = true;
27			e.preventDefault();
28			getFilter(p, n);
29		}
30	}).on('click', filterForm + ' .go', function(e){
31		getFilter();
32		e.preventDefault();
33	}).on('click', filterForm + ' .reset', function(e){
34		$(filterForm)
35		.add('[type=text], [type=number], select, textarea').val('')
36		.add('[type=checkbox], [type=radio]').prop('checked', false);
37		getFilter();
38		e.preventDefault();
39	}).on('click', filterForm + ' .clear', function(e){
40		$(this).siblings('[type=text], [type=number], select, textarea').val('');
41		getFilter();
42		e.preventDefault();
43	}).on('keyup', function(e){
44		if(e.key=='Enter') getFilter();
45	})
46	$(filterForm).change(function(){
47		getFilter();
48	})
49	$(filterForm).submit(function(e){
50		e.preventDefault();
51		getFilter();
52	})
53	function getFilter(page, n){
54		let d = decodeURIComponent($(filterForm).serialize());//, q = $(filterForm).find('[name=query]').val();
55		if(page) d = d +'&cstart='+page;
56		var g = d.split('&').some(function(pair){
57			return pair.split('=')[1].length > 0;
58		})
59		ShowLoading('');
60		$.ajax({
61			url:filterGET, data:d, success:function(data){
62				try {
63					data = $.parseJSON(data);
64					document.title = data.title;
65					window.history.replaceState(0, 0, data.url);
66					if(page && n){
67						$(filterCont).find(filterNavi).remove();
68						if($(data.sep).text().length){
69							$(filterCont).append(data.sep + data.stat + data.content);
70							if($(filterSbar).length) $(filterSbar).replaceWith(data.speedbar);
71							else $(data.speedbar).insertBefore(filterCont);
72						} else $(filterCont).append(data.sep + data.speedbar + data.stat + data.content);
73						$('html, body').animate({scrollTop: $(data.anc).offset().top-25}, 600);
74					} else {
75						if($(filterSbar).length) $(filterSbar).replaceWith(data.speedbar);
76						else $(data.speedbar).insertBefore(filterCont);
77						$(filterCont).html(data.stat + data.content);
78					}
79				} catch (error) {
80					$(filterCont).html(data);
81				}
82				HideLoading();
83				/*if(q) $(filterCont).html(function(_, html){
84			        return html.replace(new RegExp('(' + q + ')', 'g'), '<span style="background-color:yellow;">$1</span>');
85			    })*/
86			}
87		})
88	}
89})
90function setFilterParam(f){
91	let filterParam = decodeURIComponent(location.href).split('/search/');
92	if(!filterParam[1]) return;
93	if(filterParam[1].slice(-1) === '/') filterParam[1] = filterParam[1].slice(0, -1);
94	filterParam = filterParam[1].split('/');
95	let arrayParam = [];
96	for (let i = 0; i < filterParam.length; i++){
97		arrayParam[i] = filterParam[i].split('=');
98		if(arrayParam[i][1]){
99			arrayParam[i][0] = arrayParam[i][0].replace(/\+/g, ' ');
100			arrayParam[i][1] = arrayParam[i][1].replace(/\+/g, ' ');
101		}
102	}
103	$(f).add('[type=text], [type=number], [type=range], textarea').each(function(){
104		let nameElem = $(this).attr('name');
105		if(nameElem !== undefined && nameElem.length > 0){
106			for (let i = 0; i < arrayParam.length; i++){
107				if(nameElem === arrayParam[i][0]) $(this).val(arrayParam[i][1]);
108			}
109		}
110	})
111	$(f).add('select').each(function(index){
112		let nameElem = $(this).attr('name').replace('\[\]', '');
113		if(nameElem !== undefined && nameElem.length > 0){
114			for (let i = 0; i < arrayParam.length; i++){
115				if(nameElem === arrayParam[i][0]){
116					let selectData = arrayParam[i][1].split(',');
117					$(this).find('option').each(function(s, n){
118						if($.inArray(n.value, selectData) >= 0) $(this).attr('selected', true);
119					})
120				}
121			}
122		}
123	})
124	$(f).add('[type=radio], [type=checkbox]').each(function(){
125		let nameElem = $(this).attr('name').replace('\[\]', '');
126		if(nameElem !== undefined && nameElem.length > 0){
127			for (let i = 0; i < arrayParam.length; i++){
128				if(nameElem === arrayParam[i][0]){
129					let selectData = arrayParam[i][1].split(', ');
130					$(this).each(function(s, n){
131						if($.inArray(n.value, selectData) >= 0) $(this).attr('checked', 'checked');
132					})
133				}
134			}
135		}
136	})
137}

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.