PageSourceSearch

https://www.amutatmabal.org.il/Modules6/_Scripts/Site/modFormValidatorHU.js

js amutatmabal.org.il collected 2026-10-02 21:14:16 UTC 26,843 bytes, 527 lines download raw bytes

1// ****************************   Form Validator *********************************
2// summery:			validate input values accoriding to parameters in:
3//					arrInputs() - Containing all fieldValidate objects.
4//					fieldValidate.inputName - the name of the inputs to be checked.
5//					fieldValidate.type - the type of the input to be checked.
6//					fieldValidate.userName - the user name of the input to be checked.
7//					fieldValidate.isMust - a flag inticating whether the field is a must field.
8// created by:	 	boaz bibas - Daronet
9// created/:	 	05/01/2001
10// last updated:	11/02/2013 - Ellina Davidov
11// *******************************************************************************
12
13function fieldValidate(strInputName, intType, strUserName, bolIsMust) {
14	this.inputName = strInputName;
15	this.type = intType;
16	this.userName = strUserName;
17	this.isMust = bolIsMust;
18}
19
20function cleanString(str) {
21	for (; str.charAt(str.length-1) == " ";) {
22		str = str.slice(0,(str.length-2));
23	}
24	for (; str.charAt(0) == " ";) {
25		str = str.slice(1,(str.length-1));
26	}
27	return str;
28}
29
30function cleanSpace(str) {
31	var arrTemp = str.split(" ");
32	str = arrTemp.join("");
33	arrTemp = str.split("-");
34	str = arrTemp.join("");
35	return str;
36}
37
38function isValidCharacter(str, strType) {
39	var isMail = false;
40	var isURL = false;
41	var isFile = false;
42	if (strType == "eMail") 
43		isMail = true;
44	else if (strType == "URL")
45		isURL = true;
46	else if (strType == "file")
47		isFile = true;
48	for (i=0; i<str.length; i++) {
49		if (!isMail && str.charCodeAt(i) == 64)
50			return false;
51		if (!isURL && !isFile && (str.charCodeAt(i) == 58 || str.charCodeAt(i) == 41 || str.charCodeAt(i) == 40))
52			return false;
53		if (!isURL && str.charCodeAt(i) == 47)
54			return false;
55		if (!isFile && str.charCodeAt(i) == 92)
56			return false;
57		if (str.charCodeAt(i)<45 || str.charCodeAt(i)>122 || str.charCodeAt(i)==96 || (str.charCodeAt(i)>58 && str.charCodeAt(i)<63) || (str.charCodeAt(i)>90 && str.charCodeAt(i)<92) || (str.charCodeAt(i)>92 && str.charCodeAt(i)<95)) {
58			return false;
59		}
60	}
61	return true;
62}
63
64function isValidDate(DateStr) {
65	var DateStrArr = DateStr.split("/");
66	for (i=0; i<DateStrArr.length-1; i++) {
67		if (DateStrArr[i].charAt(0) == " " || DateStrArr[i].charAt(0) == "0") {
68			DateStrArr[i] = DateStrArr[i].substring(1,DateStrArr[i].length)
69		}
70	}
71	var tempDateStr = DateStrArr[1]+"/"+DateStrArr[0]+"/"+DateStrArr[2];
72	var dateToCheckObj = new Date(tempDateStr);
73	return ((dateToCheckObj.getMonth()+1)+"/"+dateToCheckObj.getDate()+"/"+dateToCheckObj.getFullYear() == tempDateStr);
74}
75
76function IsValidData(objForm) {
77	var arInputs;
78	if (arguments.length > 1) {
79		arInputs = arguments[1];
80	}
81	else {
82		arInputs = arrInputs;
83	}
84	var strCheck = "";
85	var isValid = true;
86	for (count=0; count<arInputs.length; count++) {
87		if (objForm[arInputs[count].inputName]) {
88			strCheck = cleanString(""+objForm[arInputs[count].inputName].value).toLowerCase();
89			switch (arInputs[count].type) {
90				case 0: {						// Text
91					//alert(count);
92					//alert(strCheck);
93					if (arInputs[count].isMust && strCheck == "") {
94						alert("אנא הזן "+arInputs[count].userName);
95						objForm[arInputs[count].inputName].focus();
96						objForm[arInputs[count].inputName].select();
97						isValid = false;
98						return isValid;
99					}
100					break;
101				}
102				case 1: {						// Number
103					var arrTempValue = strCheck.split(".");
104					if (arInputs[count].isMust && strCheck == "") {
105						alert("אנא הזן "+arInputs[count].userName);
106						objForm[arInputs[count].inputName].focus();
107						objForm[arInputs[count].inputName].select();
108						isValid = false;
109						return isValid;
110					}
111					if (arrTempValue.length > 2) {
112						alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
113						objForm[arInputs[count].inputName].focus();
114						objForm[arInputs[count].inputName].select();
115						isValid = false;
116						return isValid;
117					}
118					else {
119						for (iCounter=0; iCounter < arrTempValue.length; iCounter++) {
120							if (isNaN(arrTempValue[iCounter])) {
121								alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
122								objForm[arInputs[count].inputName].focus();
123								objForm[arInputs[count].inputName].select();
124								isValid = false;
125								return isValid;
126							}
127						}
128					}
129					break;
130				}
131				case 2: {						// TextArea
132					if (arInputs[count].isMust && strCheck == "") {
133						alert("אנא הזן "+arInputs[count].userName);
134						objForm[arInputs[count].inputName].focus();
135						objForm[arInputs[count].inputName].select();
136						isValid = false;
137						return isValid;
138					}
139					break;
140				}
141				case 3: {						// Radio Button
142					if (arInputs[count].isMust) {
143						var bSelected = false;
144						var oControl = objForm[arInputs[count].inputName];
145						if (oControl.length) {
146							for (nIndex = 0; nIndex < oControl.length; nIndex++) {
147								if (oControl[nIndex].checked) {
148									bSelected = true;
149									break;
150								}
151							}
152						}
153						else {
154							bSelected = oControl.checked;
155						}
156						
157						if (!bSelected) {
158							alert("אנא בחר "+arInputs[count].userName);
159							return bSelected;
160						}
161					}
162					break;
163				}
164				case 4: {						// Checkbox
165					if (arInputs[count].isMust) {
166						var bSelected = false;
167						var oControl = objForm[arInputs[count].inputName];
168						if (oControl.length) {
169							for (nIndex = 0; nIndex < oControl.length; nIndex++) {
170								if (oControl[nIndex].checked) {
171									bSelected = true;
172									break;
173								}
174							}
175						}
176						else {
177							bSelected = oControl.checked;
178						}
179						
180						if (!bSelected) {
181							alert("אנא בחר "+arInputs[count].userName);
182							return bSelected;
183						}
184					}
185					break;
186				}
187				case 5: {						// Select
188					if (arInputs[count].isMust && (objForm[arInputs[count].inputName].selectedIndex == -1 || objForm[arInputs[count].inputName].value == "")) {
189						alert("! אנא בחר " + arInputs[count].userName);
190						objForm[arInputs[count].inputName].focus();
191						isValid = false;
192						return isValid;
193					}
194					break;
195				}
196				case 6: {						// Hidden
197					if (arInputs[count].isMust && strCheck == "") {
198						alert("אנא הזן "+arInputs[count].userName);
199						isValid = false;
200						return isValid;
201					}
202					break;
203				}
204				case 7: {						// File
205					if (arInputs[count].isMust && (strCheck == "" && !(objForm["Exist_"+arInputs[count].inputName]))){
206						alert("! לא נבחר קובץ בשדה " + arInputs[count].userName);
207						objForm[arInputs[count].inputName].focus();
208						objForm[arInputs[count].inputName].select();
209						isValid = false;
210						return isValid;
211					}
212					var arrFilePath = strCheck.split("\\");
213					var strFileName = arrFilePath[arrFilePath.length-1];
214					if (!isValidCharacter(strFileName, "file")) {
215//						alert("שם הקובץ שנבחר אינו חוקי!");
216						alert(".ניתן להעלות קבצים ששמם באנגלית בלבד, ללא תווים וללא רווחים");
217						objForm[arInputs[count].inputName].focus();
218						objForm[arInputs[count].inputName].select();
219						isValid = false;
220						return isValid;
221					}
222					break;
223				}
224				case 8: {						// Date
225					if (arInputs[count].isMust && strCheck == "") {
226						alert("אנא הזן "+arInputs[count].userName);
227						objForm[arInputs[count].inputName].focus();
228						objForm[arInputs[count].inputName].select();
229						isValid = false;
230						return isValid;
231					}
232					if (!isValidDate(strCheck) && strCheck != "") {
233						alert("! התאריך שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
234						objForm[arInputs[count].inputName].focus();
235						objForm[arInputs[count].inputName].select();
236						isValid = false;
237						return isValid;
238					}
239					break;
240				}
241				case 9: {						// eMail
242					if (arInputs[count].isMust && strCheck == "") {
243						alert("אנא הזן "+arInputs[count].userName);
244						objForm[arInputs[count].inputName].focus();
245						objForm[arInputs[count].inputName].select();
246						isValid = false;
247						return isValid;
248					}
249					if (strCheck != "" && (((strCheck.lastIndexOf('@')<1)||(strCheck.lastIndexOf('.')<1)||(strCheck.lastIndexOf('.')<2+strCheck.lastIndexOf('@'))||(strCheck.lastIndexOf('.')>strCheck.length-3)||(strCheck.lastIndexOf('.')<strCheck.length-5)||(strCheck.lastIndexOf(' ')!=-1)||(strCheck.lastIndexOf('.@')!=-1)||(strCheck.lastIndexOf('@.')!=-1)))) {
250						alert("! הכתובת שהוזנה בשדה " + arInputs[count].userName + " אינה תקפה");
251						objForm[arInputs[count].inputName].focus();
252						objForm[arInputs[count].inputName].select();
253						isValid = false;
254						return isValid;
255					}
256					break;
257				}
258				case 10: {						// Currency
259					var arrTempValue = strCheck.split(".");
260					if (arInputs[count].isMust && strCheck == "") {
261						alert("אנא הזן "+arInputs[count].userName);
262						objForm[arInputs[count].inputName].focus();
263						objForm[arInputs[count].inputName].select();
264						isValid = false;
265						return isValid;
266					}
267					if (arrTempValue.length > 2) {
268						alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
269						objForm[arInputs[count].inputName].focus();
270						objForm[arInputs[count].inputName].select();
271						isValid = false;
272						return isValid;
273					}
274					else {
275						if (arrTempValue.length > 1) {
276							if (isNaN(arrTempValue[arrTempValue.length-1]) || arrTempValue[arrTempValue.length-1].length > 2) {
277								alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
278								objForm[arInputs[count].inputName].focus();
279								objForm[arInputs[count].inputName].select();
280								isValid = false;
281								return isValid;
282							}
283						}
284						var arrTempValue = arrTempValue[0].split(",");
285						if (isNaN(arrTempValue[0])) {
286							alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
287							objForm[arInputs[count].inputName].focus();
288							objForm[arInputs[count].inputName].select();
289							isValid = false;
290							return isValid;
291						}
292						for (iCounter=1; iCounter < arrTempValue.length; iCounter++) {
293							if (isNaN(arrTempValue[iCounter]) || arrTempValue[iCounter].length != 3) {
294								alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
295								objForm[arInputs[count].inputName].focus();
296								objForm[arInputs[count].inputName].select();
297								isValid = false;
298								return isValid;
299							}
300						}
301					}
302					break;
303				}
304				case 11: {						// URL
305					if (arInputs[count].isMust && strCheck == "") {
306						alert("אנא הזן "+arInputs[count].userName);
307						objForm[arInputs[count].inputName].focus();
308						objForm[arInputs[count].inputName].select();
309						isValid = false;
310						return isValid;
311					}
312					if ((arInputs[count].isMust || strCheck != "") && (strCheck.indexOf("http://") != 0 || !isValidCharacter(strCheck, "URL") || strCheck=="http://") || strCheck=="http://www.") {
313					//if ((arInputs[count].isMust || strCheck != "") && ((strCheck.indexOf("www.") != 0 && strCheck.indexOf("http://www.") != 0) || strCheck.lastIndexOf(".")<strCheck.indexOf("www.")+6 || !isValidCharacter(strCheck, "URL"))) {
314						alert("! ה-URL שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
315						objForm[arInputs[count].inputName].focus();
316						objForm[arInputs[count].inputName].select();
317						isValid = false;
318						return isValid;
319					}
320					break;
321				}
322				case 12: {						// Select Multiple
323					if (arInputs[count].isMust && strCheck == "") {
324						alert("אנא הזן "+arInputs[count].userName);
325						isValid = false;
326						return isValid;
327					}
328					break;
329				}
330				case 13: {						// Counter
331					break;
332				}
333				case 14: {						// DHTML control
334					objForm[arInputs[count].inputName].value = document.all[arInputs[count].inputName+"Control"].Dom.body.innerHTML;
335					strCheck = objForm[arInputs[count].inputName].value
336					if (arInputs[count].isMust && strCheck == "") {
337						alert("! לא הוזן תוכן ב" + arInputs[count].userName);
338						document.all[arInputs[count].inputName+"Control"].focus();
339						isValid = false;
340						return isValid;
341					}
342					break;
343				}
344				case 15: {						// Phone - Pax
345					if (arInputs[count].isMust && strCheck == "") {
346						alert("אנא הזן "+arInputs[count].userName);
347						objForm[arInputs[count].inputName].focus();
348						objForm[arInputs[count].inputName].select();
349						isValid = false;
350						return isValid;
351					}
352					if (isNaN(cleanSpace(strCheck)) || (strCheck.length < 7 && strCheck.length > 0)) {
353						alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
354						objForm[arInputs[count].inputName].focus();
355						objForm[arInputs[count].inputName].select();
356						isValid = false;
357						return isValid;
358					}
359					break;
360				}
361				case 16: {						// Password
362					if (strCheck == "") {
363						alert("אנא הזן "+arInputs[count].userName);
364						objForm[arInputs[count].inputName].focus();
365						objForm[arInputs[count].inputName].select();
366						isValid = false;
367						return isValid;
368					}
369					if (strCheck.length < 2 || strCheck.length > 10 || strCheck.indexOf(" ") != -1) {
370						alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
371						objForm[arInputs[count].inputName].focus();
372						objForm[arInputs[count].inputName].select();
373						isValid = false;
374						return isValid;
375					}
376					break;
377				}
378				case 17: {						// Credit Card
379					var arrTempValue = strCheck.split(".");
380					if (arInputs[count].isMust && strCheck == "") {
381						alert("אנא הזן "+arInputs[count].userName);
382						objForm[arInputs[count].inputName].focus();
383						objForm[arInputs[count].inputName].select();
384						isValid = false;
385						return isValid;
386					}
387					if (arrTempValue.length > 2) {
388						alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
389						objForm[arInputs[count].inputName].focus();
390						objForm[arInputs[count].inputName].select();
391						isValid = false;
392						return isValid;
393					}
394					else {
395						for (iCounter=0; iCounter < arrTempValue.length; iCounter++) {
396							if (isNaN(arrTempValue[iCounter])) {
397								alert("! המידע שהוזן בשדה " + arInputs[count].userName + " אינו תקף");
398								objForm[arInputs[count].inputName].focus();
399								objForm[arInputs[count].inputName].select();
400								isValid = false;
401								return isValid;
402							}
403						}
404					}
405					break;
406				}				
407				case 18: {						// File
408					if (arInputs[count].isMust && strCheck == "") {
409						alert("אנא הזן "+arInputs[count].userName);
410						isValid = false;
411						return isValid;
412					}
413					break;
414				}
415				default: {						// Custom
416					if (!customCheck(objForm, arInputs[count], strCheck))
417						return false;
418					else
419						continue;
420				}
421			}
422		}
423	}
424	return isValid;
425}
426
427function dbsHTTPGetRequest(sURL) {
428	try {
429		var xmlHTTP;
430		// code for IE
431		if (window.ActiveXObject) {
432			xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
433			xmlHTTP.open("GET",sURL, false);
434			xmlHTTP.send();
435			return xmlHTTP;
436		}		
437		// code for Mozilla, etc.
438
439		else if (window.XMLHttpRequest) {
440			xmlHTTP = new XMLHttpRequest();
441			xmlHTTP.open("GET",sURL, false);
442			xmlHTTP.send(null);
443			return xmlHTTP;
444		}	
445	}
446	 catch (e) {
447	 	return null;
448	}
449}
450
451function dbsPlaceMailData(url) {
452	try {
453		var xmlHTTP = dbsHTTPGetRequest(url);
454		if (xmlHTTP != null) {
455			var xmlDoc = xmlHTTP.responseXML.documentElement;
456			for (var i=0; i < xmlDoc.childNodes.length; i++) {
457				if (window.ActiveXObject)
458					document.write("<option value=\""+xmlDoc.childNodes[i].childNodes[1].text+"\">"+xmlDoc.childNodes[i].childNodes[0].text+"</option>");
459				else
460					document.write("<option value=\""+xmlDoc.childNodes[i].childNodes[1].textContent+"\">"+xmlDoc.childNodes[i].childNodes[0].textContent+"</option>");
461		}
462	}
463	}
464	catch (e) {
465	}
466}
467
468function dbsPlaceMailDataAsnyc(url, oSel) {
469	try {
470		var xmlHTTP = dbsHTTPGetRequest(url);
471		if (xmlHTTP != null) {
472			var xmlDoc = xmlHTTP.responseXML.documentElement;
473			for (var i=0; i < xmlDoc.childNodes.length; i++) {
474				var oOpt = document.createElement("option");
475				if (window.ActiveXObject)
476				{
477				    oOpt.value = xmlDoc.childNodes[i].childNodes[1].text;
478				    oOpt.text = xmlDoc.childNodes[i].childNodes[0].text;
479				}
480				else
481				{
482				    oOpt.value = xmlDoc.childNodes[i].childNodes[1].textContent;
483				    oOpt.text = xmlDoc.childNodes[i].childNodes[0].textContent;
484				}
485				try {
486					oSel.add(oOpt,null);
487				}
488				catch(ex) {
489					oSel.add(oOpt);
490				}
491			}
492		}
493	}
494	catch (e) {
495	}
496}
497
498
499
500/******************************************************************************************************************/
501/***********************************************  Daronet logo  **************************************************/
502
503function new_daronet_banner(color, tag) {
504	code = "<!-- Modules6/_Scripts/Site/modFormValidatorHU.js -->";
505	if (tag == 'div') {
506		code = code + '<div class="daronet">';
507	} else {
508		code = code + '<table cellpadding="0" cellspacing="0" border="0" class="daronet" role="presentation"><tr><td>';
509	}
510	code = code + '<div class="darocredit">' +
511	'	<a class="dd_logo_' + color + '" title="דרונט דיגיטל - בניית אתרי וורדפרס, בניית אתרי סחר, חנות אינטרנטית, פיתוח אתרים" target="_blank" href="https://www.daro-net.co.il/">' +
512	'		<span class="s_tag">דרונט דיגיטל - בניית אתרים, בניית אתרי וורדפרס, בניית אתרי סחר, חנות אינטרנטית, פיתוח אתרים</span>' +
513	'	</a>' +
514	'</div>';
515	if (tag == 'div') {
516		code = code + '</div>';
517	} else {
518		code = code + '</td></tr></table>';
519	}
520	code = code + '<style type="text/css">' +	
521	'	.darocredit >
521 a {width:200px; height:20px; display:block; background-repeat:no-repeat; background-position:center top;}' +
522	"	.dd_logo_black {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAAUCAYAAAA3BlcoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LjE3MWMyN2ZhYiwgMjAyMi8wOC8xNi0yMjozNTo0MSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI0LjEgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MTAwRDlBODc4MTExRURBRDlBOTkzMTI4OENGRDRGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY5MTAwRDlCODc4MTExRURBRDlBOTkzMTI4OENGRDRGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjkxMDBEOTg4NzgxMTFFREFEOUE5OTMxMjg4Q0ZENEYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjkxMDBEOTk4NzgxMTFFREFEOUE5OTMxMjg4Q0ZENEYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz70XGSfAAAIFElEQVR42uya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');}" +
523	"	.dd_logo_white {background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAAUCAYAAAA3BlcoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i
52377u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LjE3MWMyN2ZhYiwgMjAyMi8wOC8xNi0yMjozNTo0MSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI0LjEgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZGMzk4REVFODczNjExRURCOTQ0Q0EzOTEyRjA0M0M0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkZGMzk4REVGODczNjExRURCOTQ0Q0EzOTEyRjA0M0M0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkYzOThERUM4NzM2MTFFREI5NDRDQTM5MTJGMDQzQzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RkYzOThERUQ4NzM2MTFFREI5NDRDQTM5MTJGMDQzQzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4fs2MgAAAIIUlEQVR42uyad2zVVRTH37OvhcrQJ4JbtIJ7YakKIUa0lUQlEAiocSNCUHHjAzRq3KhxS6BOXJhWcQ9EEwhxpkXckwp1j1oKWKDjPb83fK45Xn8txf8ov5N80v5+v3vPXeeee+5pk7lcLhFLLFuKbBVPQSxbkqTiKYilE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');}" +
524	'	.s_tag {position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0,0,0,0);}' +
525	'</style>';
526    document.write(code);
527}

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.