PageSourceSearch

https://goodmod.ru/lib.js

js goodmod.ru collected 2026-09-29 16:39:21 UTC 11,230 bytes, 333 lines download raw bytes

1var aGlobal=new Object();
2function ShowAjaxToDom(sPost,oDomElement,sPrefix,bReadGlobal,bLoading,sCallback){
3	var sCallback=sCallback||false;
4	oDomElement.AddAjax(sPost,sPrefix,bReadGlobal,true,bLoading,sCallback);
5}
6HTMLElement.prototype.AddAjax=function(sPost,sPrefix,bReadGlobal,bReplace,bLoading,sCallback){
7	var oDom=oDom||this;
8	var bReplace=bReplace||false;
9	var bReadGlobal=bReadGlobal||false;
10	var sCallback=sCallback||false;
11	var sPrefix=sPrefix||'';
12	var bValue=(oDom.tagName=="INPUT")?true:false;
13	sPost=(bReadGlobal)?sPost+"&"+ReadGlobal():sPost;
14	if(bReplace && bLoading)
15		if(bValue)
16			oDom.value='';
17		else
18			oDom.innerHTML='';
19	if(!bValue && bLoading){
20		var oTempDiv=document.createElement("DIV");
21		oTempDiv.setAttribute("style",'position:relative;width:33px;height:33px;background-position: center;margin: auto;background-size: cover;background-image:url("'+sPrefix+'sprites/loading.gif");');
22		oTempDiv.id='ShowSmallTempDiv';
23		oDom.appendChild(oTempDiv);
24	}
25	var http = createRequestObject();
26	if( http ){
27		var sURL=sPrefix+"ajax.php";
28		http.open("POST", sURL, true); 
29		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
30		http.onreadystatechange = function(){
31			if(http.readyState == 4 && http.status == 200) {
32				var sResult = http.responseText;
33				if(!bValue){
34					if(oTempDiv){
35						var oParent=oTempDiv.parentNode;
36						oTempDiv.parentNode.removeChild(oTempDiv);
37					} 
38					if(bReplace)
39						oDom.innerHTML='';
40					oDom.innerHTML+=sResult;
41				}else{
42					if(bReplace)
43						oDom.value='';
44					oDom.value+=sResult;
45				}
46				if(sCallback){
47					if(typeof window[sCallback] == 'function'){
48						window[sCallback](sResult);//вернули функции из которой вызвали AsynGetAdress, передав ей адресс
49						}
50				}	
51			}
52		}
53		http.send(sPost);
54	}
55}
56function ReadGlobal(oVariable){
57	var oVariable=oVariable||aGlobal;
58	var sResult='';
59	for(var key in oVariable){
60		var sDelim=(sResult=='')?"":"&";
61		if(is_object(oVariable[key])){
62			sResult+=sDelim+key+"="+JSArrayToPhpString(oVariable[key]);
63		}else{
64			if(oVariable[key]!=''){
65				sResult+=sDelim+key+"="+oVariable[key];
66			}
67		}
68	}
69	return sResult;
70}
71function is_object(mixed_var ){ 
72	if(mixed_var instanceof Array) {
73		return true;
74	} else {
75		return (mixed_var !== null) && (typeof( mixed_var ) == 'object');
76	}
77}	
78function createRequestObject() {
79	try { return new XMLHttpRequest() }
80	catch(e) {
81		try { return new ActiveXObject('Msxml2.XMLHTTP') }
82		catch(e) {
83			try { return new ActiveXObject('Microsoft.XMLHTTP') }
84			catch(e) { return null; }
85		}
86	}
87}
88HTMLElement.prototype.ReadInputs=function(oDom){  
89	var oDom=oDom||this;
90	var oResult=new Object();
91	oResult['string']='';
92	var oInputs=new Object;
93	var oDoubleChecked=new Object;
94	var oDoms=new Object;
95	var aInputs=oDom.getElementsByTagName("DIV");
96	for(var key in aInputs){
97		if(!(!aInputs[key].getAttribute)){
98			if(!(!aInputs[key].contentEditable=="true")){
99				oInputs[aInputs[key].id]=aInputs[key].innerText;
100				oDoms[aInputs[key].id]=aInputs[key];		
101				}
102			}
103		}
104	var aInputs=oDom.getElementsByTagName("textarea");
105	for(var key in aInputs){
106		if(!(!aInputs[key].getAttribute)){
107			var sTextareaText=aInputs[key].value;
108			sTextareaText=(sTextareaText=='')?aInputs[key].innerText:sTextareaText;
109			oInputs[aInputs[key].name]=sTextareaText;
110			oDoms[aInputs[key].name]=aInputs[key];
111			}
112		}	
113	var aInputs=oDom.getElementsByTagName("INPUT");
114	for(var key in aInputs){
115		if(!(!aInputs[key].getAttribute)){
116			switch(aInputs[key].getAttribute("type")){
117				case "radio":
118					if(aInputs[key].checked==true){
119						oInputs[aInputs[key].name]=aInputs[key].value;
120						oDoms[aInputs[key].name]=aInputs[key];
121						}
122					break;
123				case "text":
124				case "datetime-local":
125				case "datetime":
126				case "time":
127				case "date":
128				case "textarea":
129				case "tel":
130				case "password":
131				case "email":
132				case "hidden":
133					oInputs[aInputs[key].name]=aInputs[key].value;
134					oDoms[aInputs[key].name]=aInputs[key];
135					break;
136				case "checkbox":
137					if(!oDoubleChecked[aInputs[key].name+"to"+aInputs[key].value]){
138						////console.log("checked по имени "+aInputs[key].name+" , со значением "+aInputs[key].value+"; checked="+aInputs[key].checked+"; НАйден");
139						oDoubleChecked[aInputs[key].name+"to"+aInputs[key].value]=aInputs[key];
140							if(aInputs[key].checked==true){
141							if(!oInputs[aInputs[key].name]){
142								oInputs[aInputs[key].name]=aInputs[key].value;
143								oDoms[aInputs[key].name]=aInputs[key];
144								}
145							else{
146								oInputs[aInputs[key].name]+=";"+aInputs[key].value;
147								oDoms[aInputs[key].name]=aInputs[key];
148								}
149							} 
150						}
151					else{
152						////console.log("checked по имени "+aInputs[key].name+" , со значением "+aInputs[key].value+"; checked="+aInputs[key].checked+"; Дублируется!!!");
153						////console.log(oDoubleChecked);
154						}
155					break;
156				}
157			
158			}
159		}
160	var oDoubleSelect=new Object;
161	var aInputs=oDom.getElementsByTagName("SELECT");
162	for(var key in aInputs){
163		if(!(!aInputs[key].options)){
164			if(aInputs[key].selectedIndex!=-1){
165				//console.log(aInputs[key]);
166				//console.log(aInputs[key].selectedIndex);
167				if(!oDoubleSelect[aInputs[key].name+"to"+aInputs[key].options[aInputs[key].selectedIndex].value]){
168					oInputs[aInputs[key].name]=aInputs[key].options[aInputs[key].selectedIndex].value;
169					oDoms[aInputs[key].name]=aInputs[key];
170					}
171				}
172			}
173		}
174	
175	oResult['array']=oInputs;
176	oResult['object']=oDoms;
177	for (var sName in oInputs){
178		var sDelimetr=(oResult['string']=="")?"":"&";
179		oResult['string']+=sDelimetr+sName+"="+oInputs[sName];
180		}
181	return oResult;
182}
183///////////////////////////////////////СТРОКОВЫЕ ФУНКЦИИ////////////////////////////////////////////////////////////////////////
184String.prototype.replaceAll = function(search, replace){
185	return this.split(search).join(replace);
186	}
187String.prototype.escape_string=function(){
188	var sString=this;
189	sString=sString.replace(/\//g,"%slaps%");
190	sString=sString.replace(/\</g,"%open%");
191	sString=sString.replace(/\>/g,"%close%");
192	sString=sString.replace(/=/g,"%is%");
193	sString=sString.replace(/&nbsp;/g,"%space%");
194	sString=sString.replace(/ /g,"%space%");
195	sString=sString.replace(/\s/g,"%space%");
196	sString=sString.replace(/&quot;/g,"%quotes%");
197	sString=sString.replace(/"/g,"%quotes%");
198	sString=sString.replace(/\'/g,"%quotes%");
199	sString=sString.replace(/\n/g,"%n%");
200	sString=sString.replace(/\r/g,"%r%");
201	sString=sString.replace(/\t/g,"%t%");
202	sString=sString.replace(/-/g,"%tire%");
203	sString=sString.replace(/\(/g,"%openbracket%");
204	sString=sString.replace(/\)/g,"%closebracket%");
205	sString=sString.replace(/&amp;/g,"%amp%");
206	sString=sString.replace(/&/g,"");
207	sString=sString.replace(/%/g,"**");
208	return sString;
209	}
210String.prototype.return_string=function(){
211	var sString=this;
212	sString=sString.replace(/\**/g,"%");
213	sString=sString.replace(/%slaps%/g,'/');
214	sString=sString.replace(/%open%/g,'<');
215	sString=sString.replace(/%close%/g,'>');
216	sString=sString.replace(/%is%/g,'=');
217	sString=sString.replace(/%space%/g," ");
218	sString=sString.replace(/%quotes%/g,'"');
219	sString=sString.replace(/%n%/g,"\n");
220	sString=sString.replace(/%r%/g,"\r");
221	sString=sString.replace(/%t%/g,"\t");
222	sString=sString.replace(/%tire%/g,"-");
223	sString=sString.replace(/%amp%/g,"&amp;");
224	sString=sString.replace(/%openbracket%/g,"(");
225	sString=sString.replace(/%closebracket%/g,")");
226	
227	return sString;
228	}
229function ObjectToString(oObject){
230	var sResult='';
231	for(var key in oObject){
232		if(is_object(oObject[key]) || Array.isArray(oObject[key])){
233			var sKey=key.escape_string();
234			sResult+=((sResult=='')?"":" ")+sKey+"=("+ObjectToString(oObject[key])+")";
235			}
236		else{
237			var sKey=key.toString().escape_string();
238			if(oObject[key]){
239				var sValue=oObject[key].toString();
240				var sValue=sValue.escape_string();
241				sResult+=((sResult=='')?"":" ")+sKey+"="+sValue;
242				}
243			}
244		}
245	return  sResult;
246	}
247	
248function translite(str){
249	var arr={' ':'-','а':'a','б':'b','в':'v','г':'g','д':'d','е':'e','ж':'g','з':'z','и':'i','й':'y','к':'k','л':'l','м':'m','н':'n','о':'o','п':'p','р':'r','с':'s','т':'t','у':'u','ф':'f','ь':'#','ъ':'#','ы':'i','э':'e','А':'a','Б':'b','В':'v','Г':'g','Д':'d','Е':'e','Ж':'j','З':'z','И':'i','Й':'y','К':'k','Л':'l','М':'m','Н':'n','О':'o','П':'p','Р':'r','С':'s','Т':'t','У':'u','Ф':'f','Ы':'i','Э':'e','ё':'yo','х':'h','ц':'ts','ч':'ch','ш':'sh','щ':'shch','ъ':'#','ь':'#','ю':'yu','я':'ya','Ё':'yo','Х':'h','Ц':'ts','Ч':'ch','Ш':'sh','Щ':'shch','Ъ':'#','Ь':'#','Ю':'yu','Я':'ya'};
250	var replacer=function(a){
251		return arr[a]||a
252	};
253	str=str.replace(/[А-яёЁ]/g,replacer);
254	while(str.indexOf(" ")+1)
255		str=(str.replace(" ",'space'));
256	str=str.replace(/[^A-Za-zА-Яа-яЁё]/g,"");
257	while(str.indexOf("space")+1)
258		str=(str.replace("space",'-'));
259	while(str.indexOf("--")+1)
260		str=(str.replace("--",'-'));
261	str=str.toLowerCase();
262	return str;
263}
264
265function animateNumber(dom, data){
266	
267	var setDefault = {
268		'startNumber': 0,
269		'endNumber': 100,
270		'timer': 500,
271		//'format': false,
272		//'formatPattern': [/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '],
273		'suffix':'',
274		'interval':4
275	};
276	
277	for(var key in setDefault){
278		data[key] = data[key] || setDefault[key]; //typeof setDefault[key] === typeof data[key] ? data[key] : setDefault[key];
279	}
280	//dom = typeof dom === 'object' ? dom : document.querySelector(dom);
281	var difference = Math.abs(data.endNumber - data.startNumber),
282		step = difference / (data.timer / data.interval);
283	
284	var animate = setInterval(function(){
285		if(data.startNumber >= data.endNumber){
286			data.startNumber = data.endNumber;
287			clearInterval(animate);
288		}
289		
290		// dom.innerHTML = (data.format 
291			// ? String(Math.ceil(data.startNumber)).replace(data.formatPattern[0], data.formatPattern[1]) 
292			// : String(Math.ceil(data.startNumber))) + data.suffix;
293			
294		dom.innerHTML = String(Math.ceil(data.startNumber)) + data.suffix;
295		data.startNumber += step;
296	}, data.interval);
297}
298
299HTMLElement.prototype.getOffsetPos = function() {
300	var pos = { left: 0, top: 0 };
301	var currentElement = this;
302	
303	while (currentElement) {
304		pos.left += currentElement.offsetLeft;
305		pos.top += currentElement.offsetTop;		
306		currentElement = currentElement.offsetParent;
307	} 
308	
309	return pos;
310}
311
312var denyItems, lastDenyItemPos, lastDenyItem;
313window.addEventListener("load", function() {
314	denyItems = [...document.querySelectorAll(".deny-list li")];
315	lastDenyItem = denyItems[denyItems.length - 1];	
316	lastDenyItemPos = lastDenyItem.getOffsetPos();
317	
318	var animationStateReady = false;
319	document.addEventListener("scroll", function() {
320		var scrollPos = document.body.scrollTop || document.documentElement.scrollTop;
321		if (!animationStateReady &&  (scrollPos + window.innerHeight >= lastDenyItemPos.top + lastDenyItem.offsetHeight)) {
322			denyItems.forEach(function(elem, indx) {
323				setTimeout(function() {
324					elem.classList.add("animate");
325				}, indx * 1500);
326				setTimeout(function() {
327					elem.classList.remove("animate");
328				}, indx * 1500 + 1000);
329			});
330			animationStateReady = !animationStateReady;
331		}
332	});
333});

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.