PageSourceSearch

https://nntv.tv/comm/js/jshttp.js?1355

js nntv.tv collected 2026-10-02 10:27:45 UTC 21,701 bytes, 784 lines download raw bytes

1/*
2version = '0005 2016-07-05'
3*/
4//
5// Функции для работы jshttprequest
6//
7
8//0005 2016-07-05 - включение /comm/js/jshttprequest/jshttprequest.js убрано, функция JsHttpRequest добавлена в этот файл
9//0004 2016-06-10 - включение /comm/js/jshttprequest/jshttprequest.js добавлено в treegraph.xsl
10//document.writeln('<scr' + 'ipt src="/comm/js/jshttprequest/jshttprequest.js" type="text/javascript"><\/scr' + 'ipt>');
11
12var LoadingWhere = 1;
13
14//
15// формирование url для запроса
16//
17function makeurl(url,clas,func)
18{
19	if(!url)
20	{
21		var loc = String(document.location);
22		url = (loc.indexOf('?') < 1) ? '/?id=1' : loc;
23	}
24	if(typeof(clas)!='undefined') url += '&clas=' + clas;
25	if(typeof(func)!='undefined') url += '&func=' + func;
26	return url;
27}
28//
29// получение страницы (cur_id) с заданными стилями и вставка в указанный div
30//
31function jshttp_getmess(divadd, cur_id, template, style, cell, get, loadingdiv, loadingtext, loadingw)
32{
33	divadd = find_div_id(divadd);
34	var url = makeurl('','jshttp','getmess');
35	var datas = {
36	'js_divadd'		: divadd,		// идентификатор div-а для вставки 
37	'js_cur_id' 	: cur_id,		// идентификатор получаемого объекта
38	'js_template'	: template,		// шаблон
39	'js_style'		: style,		// стиль
40	'js_cell'		: cell,			// список
41	'js_get'		: get			// 1 - получение GET-способом, 0 - PHP-функциями
42	};
43
44	if(typeof(loadingdiv)!='undefined' && (iloadingdiv = document.getElementById(loadingdiv)) && (idivadd = document.getElementById(divadd)))
45	{
46		if(typeof(loadingtext)=='undefined')
47			loadingtext = iloadingdiv.innerHTML;
48		else
49			loadingtext = '<div class="loading">' + loadingtext + '</div>';
50
51		if(typeof(loadingw)=='undefined')
52			loadingw = LoadingWhere;
53		if(loadingw==-1)
54			idivadd.innerHTML = iloadingdiv.innerHTML + idivadd.innerHTML;	//to top
55		else if(loadingw==1)
56			idivadd.innerHTML += iloadingdiv.innerHTML;						//to end
57		else
58			idivadd.innerHTML = iloadingdiv.innerHTML;						//replace
59	}
60	JsHttpRequest.query(url, datas, jshttp_getmess_res, false);
61	return false;
62}
63//
64// получение страницы по url с заданными стилями и вставка в указанный div
65//
66// loadingw=-1	- div loadingdiv с текстом loadingtext добавляем в начало концу div-а divadd
67// loadingw=1	- div loadingdiv с текстом loadingtext добавляем к концу div-а divadd [по умолчанию]
68// loadingw=2	- div loadingdiv с текстом loadingtext заменяем div divadd
69// loadingw=0	- не вододим div loadingdiv
70//
71function jshttp_geturl(divadd, url, template, style, cell, loadingdiv, loadingtext, loadingw)
72{
73	divadd = find_div_id(divadd);
74	if(divadd)
75	{
76		document.getElementById(divadd).setAttribute('saveurl',url,0);
77	}
78	url += '&template=' + ((typeof(template)!='undefined') ? template : 'main_post');
79	if(typeof(style)!='undefined') url += '&style=' + style;
80	if(typeof(cell)!='undefined') url += '&cell=' + cell;
81	url += '&js_divadd=' + divadd;
82
83	if(typeof(loadingdiv)!='undefined' && (iloadingdiv = document.getElementById(loadingdiv)) && (idivadd = document.getElementById(divadd)))
84	{
85		if(typeof(loadingtext)=='undefined')
86			loadingtext = iloadingdiv.innerHTML;
87		else
88			loadingtext = '<div class="loading">' + loadingtext + '</div>';
89
90		if(typeof(loadingw)=='undefined')
91			loadingw = LoadingWhere;
92
93		if(loadingw==-1)
94			idivadd.innerHTML = loadingtext + idivadd.innerHTML;	//to top
95		else if(loadingw==1)
96			idivadd.innerHTML += loadingtext;						//to end
97		else if(loadingw==2)
98			idivadd.innerHTML = loadingtext;						//replace
99		else
100			;														//nothing
101	}
102	JsHttpRequest.query(url, null, jshttp_getmess_res, false);
103	return false;
104}
105//
106// получение контента из функции блока (block_id) и вставка в указанный div
107//
108function jshttp_getblock(divadd, url, block_id)
109{
110	divadd = find_div_id(divadd);
111	url = makeurl(url,'jshttp','get_function_block');
112	var datas = {
113	'js_divadd'		: divadd,		// идентификатор div-а для вставки 
114	'js_block_id' 	: block_id		// идентификатор текущего блока (откуда запустили функцию)
115	};
116	JsHttpRequest.query(url, datas, jshttp_getmess_res, false);
117	return false;
118}
119function jshttp_getmess_res(result, errors)
120{
121	if(result && result['js_divadd'] && (idivadd = document.getElementById(result['js_divadd'])))
122	{
123		idivadd.innerHTML = result['js_info'];
124		if(result['js_eval'])
125		{
126			eval(result['js_eval']);
127		}
128		if(typeof(jshttp_getmess_callback)=='function')
129		{
130			jshttp_getmess_callback(result);
131		}
132	}
133}
134
135
136//
137// проверка на допустимость полей формы регистрации: name login и user_nick
138//
139function jshttp_checkfield(field,url)
140{
141	if(!field) return;
142	url = makeurl(url,'jshttp','checkfield');
143	var datas = new Array();
144	datas[field.name] = field.value;
145	datas['js_name']  = field.name;
146	datas['js_value'] = field.value;
147	datas['js_desc'] = field.hasAttribute('description') ? field.getAttribute('description') : field.getAttribute('title');
148	if(!datas['js_desc'] && (desc = document.getElementById(field.name.replace('p__','d1__'))))
149		datas['js_desc'] = desc.innerHTML;
150	JsHttpRequest.query(url, datas, jshttp_checkfield_res, false);
151}
152function jshttp_checkfield_res(result, errors)
153{
154	var text1 = new Array();
155	var text2 = new Array();
156	text1["ru"] = 'Пользователь с таким "%s" уже существует';
157	text1["en"] = 'User with this "%s" already exist';
158	text2["ru"] = 'Заполните обязательное поле "%s"';
159	text2["en"] = 'Fill required field  "%s"';
160	var js_name = result['js_name'];
161	var js_value = result['js_value'];
162	var js_desc = result['js_desc'];
163	
164	if(result['js_err']==1)
165	{
166		document.getElementById(js_name).className += ' terbg';
167		alert(text1[TG_site_lang].replace(/%s/,js_desc));
168	}
169	else if(js_value=='')
170	{
171		document.getElementById(js_name).className += ' terbg';
172		alert(text2[TG_site_lang].replace(/%s/,js_desc));
173	}
174	else
175	{
176		document.getElementById(js_name).className = document.getElementById(js_name).className.replace(/ terbg/g,'');
177	}
178}
179
180//
181// если obj-объект, то ищет id ближайшего родительского div-а с id-м block_XXX
182// если obj-строка, то возвращает ее
183//
184function find_div_id(obj)
185{
186	if(typeof(obj)=='object')
187	{
188		while(obj = obj.parentNode)
189		{
190			if(obj.id != "" && obj.id.indexOf('block_') >= 0)
191				return obj.id;
192		}
193		return false;
194	}
195	return obj;
196}
197
198
199/**
200 * JsHttpRequest: JavaScript "AJAX" data loader
201 * Minimized version: see debug directory for the complete one.
202 *
203 * @license LGPL
204 * @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/
205 * @version 5.x $Id$
206 */
207function JsHttpRequest(){
208var t=this;
209t.onreadystatechange=null;
210t.readyState=0;
211t.responseText=null;
212t.responseXML=null;
213t.status=200;
214t.statusText="OK";
215t.responseJS=null;
216t.caching=false;
217t.loader=null;
218t.session_name="PHPSESSID";
219t._ldObj=null;
220t._reqHeaders=[];
221t._openArgs=null;
222t._errors={inv_form_el:"Invalid FORM element detected: name=%, tag=%",must_be_single_el:"If used, <form> must be a single HTML element in the list.",js_invalid:"JavaScript code generated by backend is invalid!\n%",url_too_long:"Cannot use so long query with GET request (URL is larger than % bytes)",unk_loader:"Unknown loader: %",no_loaders:"No loaders registered at all, please check JsHttpRequest.LOADERS array",no_loader_matched:"Cannot find a loader which may process the request. Notices are:\n%",no_headers:"Method setRequestHeader() cannot work together with the % loader."};
223t.abort=function(){
224with(this){
225if(_ldObj&&_ldObj.abort){
226_ldObj.abort();
227}
228_cleanup();
229if(readyState==0){
230return;
231}
232if(readyState==1&&!_ldObj){
233readyState=0;
234return;
235}
236_changeReadyState(4,true);
237}
238};
239t.open=function(_2,_3,_4,_5,_6){
240with(this){
241try{
242if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){
243_3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1);
244}
245}
246catch(e){
247}
248_openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""};
249_ldObj=null;
250_changeReadyState(1,true);
251return true;
252}
253};
254t.send=function(_7){
255if(!this.readyState){
256return;
257}
258this._changeReadyState(1,true);
259this._ldObj=null;
260var _8=[];
261var _9=[];
262if(!this._hash2query(_7,null,_8,_9)){
263return;
264}
265var _a=null;
266if(this.caching&&!_9.length){
267_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;
268var _b=JsHttpRequest.CACHE[_a];
269if(_b){
270this._dataReady(_b[0],_b[1]);
271return false;
272}
273}
274var _c=(this.loader||"").toLowerCase();
275if(_c&&!JsHttpRequest.LOADERS[_c]){
276return this._error("unk_loader",_c);
277}
278var _d=[];
279var _e=JsHttpRequest.LOADERS;
280for(var _f in _e){
281var ldr=_e[_f].loader;
282if(!ldr){
283continue;
284}
285if(_c&&_f!=_c){
286continue;
287}
288var _11=new ldr(this);
289JsHttpRequest.extend(_11,this._openArgs);
290JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null});
291var _12=_11.load();
292if(!_12){
293this._ldObj=_11;
294JsHttpRequest.PENDING[_11.id]=this;
295return true;
296}
297if(!_c){
298_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12);
299}else{
300return this._error(_12);
301}
302}
303return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders");
304};
305t.getAllResponseHeaders=function(){
306with(this){
307return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[];
308}
309};
310t.getResponseHeader=function(_13){
311with(this){
312return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader():[];
313}
314};
315t.setRequestHeader=function(_14,_15){
316with(this){
317_reqHeaders[_reqHeaders.length]=[_14,_15];
318}
319};
320t._dataReady=function(_16,js){
321with(this){
322if(caching&&_ldObj){
323JsHttpRequest.CACHE[_ldObj.hash]=[_16,js];
324}
325if(_16!==null||js!==null){
326status=4;
327responseText=responseXML=_16;
328responseJS=js;
329}else{
330status=500;
331responseText=responseXML=responseJS=null;
332}
333_changeReadyState(2);
334_changeReadyState(3);
335_changeReadyState(4);
336_cleanup();
337}
338};
339t._l=function(_18){
340var i=0,p=0,msg=this._errors[_18[0]];
341while((p=msg.indexOf("%",p))>=0){
342var a=_18[++i]+"";
343msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length);
344p+=1+a.length;
345}
346return msg;
347};
348t._error=function(msg){
349msg=this._l(typeof (msg)=="string"?arguments:msg);
350msg="JsHttpRequest: "+msg;
351if(!window.Error){
352throw msg;
353}else{
354if((new Error(1,"test")).description=="test"){
355throw new Error(1,msg);
356}else{
357throw new Error(msg);
358}
359}
360};
361t._hash2query=function(_1e,_1f,_20,_21){
362if(_1f==null){
363_1f="";
364}
365if((""+typeof (_1e)).toLowerCase()=="object"){
366var _22=false;
367if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){
368_1e={form:_1e};
369}
370for(var k in _1e){
371var v=_1e[k];
372if(v instanceof Function){
373continue;
374}
375var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k);
376var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName;
377if(_26){
378var tn=v.tagName.toUpperCase();
379if(tn=="FORM"){
380_22=true;
381}else{
382if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){
383}else{
384return this._error("inv_form_el",(v.name||""),v.tagName);
385}
386}
387_21[_21.length]={name:_25,e:v};
388}else{
389if(v instanceof Object){
390this._hash2query(v,_25,_20,_21);
391}else{
392if(v===null){
393continue;
394}
395if(v===true){
396v=1;
397}
398if(v===false){
399v="";
400}
401_20[_20.length]=_25+"="+this.escape(""+v);
402}
403}
404if(_22&&_21.length>1){
405return this._error("must_be_single_el");
406}
407}
408}else{
409_20[_20.length]=_1e;
410}
411return true;
412};
413t._cleanup=function(){
414var _28=this._ldObj;
415if(!_28){
416return;
417}
418JsHttpRequest.PENDING[_28.id]=false;
419var _29=_28.span;
420if(!_29){
421return;
422}
423_28.span=null;
424var _2a=function(){
425_29.parentNode.removeChild(_29);
426};
427JsHttpRequest.setTimeout(_2a,50);
428};
429t._changeReadyState=function(s,_2c){
430with(this){
431if(_2c){
432status=statusText=responseJS=null;
433responseText="";
434}
435readyState=s;
436if(onreadystatechange){
437onreadystatechange();
438}
439}
440};
441t.escape=function(s){
442return escape(s).replace(new RegExp("\\+","g"),"%2B");
443};
444}
445JsHttpRequest.COUNT=0;
446JsHttpRequest.MAX_URL_LEN=2000;
447JsHttpRequest.CACHE={};
448JsHttpRequest.PENDING={};
449JsHttpRequest.LOADERS={};
450JsHttpRequest._dummy=function(){
451};
452JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout};
453JsHttpRequest.setTimeout=function(_2e,dt){
454window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s;
455if(typeof (_2e)=="string"){
456id=window.JsHttpRequest_tmp(_2e,dt);
457}else{
458var id=null;
459var _31=function(){
460_2e();
461delete JsHttpRequest.TIMEOUTS[id];
462};
463id=window.JsHttpRequest_tmp(_31,dt);
464JsHttpRequest.TIMEOUTS[id]=_31;
465}
466window.JsHttpRequest_tmp=null;
467return id;
468};
469JsHttpRequest.clearTimeout=function(id){
470window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c;
471delete JsHttpRequest.TIMEOUTS[id];
472var r=window.JsHttpRequest_tmp(id);
473window.JsHttpRequest_tmp=null;
474return r;
475};
476JsHttpRequest.query=function(url,_35,_36,_37){
477var req=new this();
478
479if(req.caching){
480req.caching=!_37;
481}
482req.onreadystatechange=function(){
483if(req.readyState==4){
484_36(req.responseJS,req.responseText);
485}
486};
487var _39=null;
488if(url.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){
489req.loader=RegExp.$2?RegExp.$2:null;
490_39=RegExp.$3;
491url=RegExp.$4;
492}
493req.open(_39,url,true);
494req.send(_35);
495};
496JsHttpRequest.dataReady=function(d){
497var th=this.PENDING[d.id];
498delete this.PENDING[d.id];
499if(th){
500th._dataReady(d.text,d.js);
501}else{
502if(th!==false){
503throw "dataReady(): unknown pending id: "+d.id;
504}
505}
506};
507JsHttpRequest.extend=function(_3c,src){
508for(var k in src){
509_3c[k]=src[k];
510}
511};
512JsHttpRequest.LOADERS.xml={loader:function(req){
513JsHttpRequest.extend(req._errors,{xml_no:"Cannot use XMLHttpRequest or ActiveX loader: not supported",xml_no_diffdom:"Cannot use XMLHttpRequest to load data from different domain %",xml_no_headers:"Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly",xml_no_form_upl:"Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented"});
514this.load=function(){
515if(this.queryElem.length){
516return ["xml_no_form_upl"];
517}
518if(this.url.match(new RegExp("^([a-z]+)://([^\\/]+)(.*)","i"))){
519if(RegExp.$2.toLowerCase()==document.location.hostname.toLowerCase()){
520this.url=RegExp.$3;
521}else{
522return ["xml_no_diffdom",RegExp.$2];
523}
524}
525var xr=null;
526if(window.XMLHttpRequest){
527try{
528xr=new XMLHttpRequest();
529}
530catch(e){
531}
532}else{
533if(window.ActiveXObject){
534try{
535xr=new ActiveXObject("Microsoft.XMLHTTP");
536}
537catch(e){
538}
539if(!xr){
540try{
541xr=new ActiveXObject("Msxml2.XMLHTTP");
542}
543catch(e){
544}
545}
546}
547}
548if(!xr){
549return ["xml_no"];
550}
551var _41=window.ActiveXObject||xr.setRequestHeader;
552if(!this.method){
553this.method=_41&&this.queryText.length?"POST":"GET";
554}
555if(this.method=="GET"){
556if(this.queryText){
557this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;
558}
559this.queryText="";
560if(this.url.length>JsHttpRequest.MAX_URL_LEN){
561return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
562}
563}else{
564if(this.method=="POST"&&!_41){
565return ["xml_no_headers"];
566}
567}
568this.url+=(this.url.indexOf("?")>
568=0?"&":"?")+"JsHttpRequest="+(req.caching?"0":this.id)+"-xml";
569var id=this.id;
570xr.onreadystatechange=function(){
571if(xr.readyState!=4){
572return;
573}
574xr.onreadystatechange=JsHttpRequest._dummy;
575req.status=null;
576try{
577req.status=xr.status;
578req.responseText=xr.responseText;
579}
580catch(e){
581}
582if(!req.status){
583return;
584}
585try{
586eval("JsHttpRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }");
587}
588catch(e){
589return req._error("js_invalid",req.responseText);
590}
591JsHttpRequest._tmp(id);
592JsHttpRequest._tmp=null;
593};
594xr.open(this.method,this.url,true,this.username,this.password);
595if(_41){
596for(var i=0;i<req._reqHeaders.length;i++){
597xr.setRequestHeader(req._reqHeaders[i][0],req._reqHeaders[i][1]);
598}
599xr.setRequestHeader("Content-Type","application/octet-stream");
600}
601xr.send(this.queryText);
602this.span=null;
603this.xr=xr;
604return null;
605};
606this.getAllResponseHeaders=function(){
607return this.xr.getAllResponseHeaders();
608};
609this.getResponseHeader=function(_44){
610return this.xr.getResponseHeader(_44);
611};
612this.abort=function(){
613this.xr.abort();
614this.xr=null;
615};
616}};
617JsHttpRequest.LOADERS.script={loader:function(req){
618JsHttpRequest.extend(req._errors,{script_only_get:"Cannot use SCRIPT loader: it supports only GET method",script_no_form:"Cannot use SCRIPT loader: direct form elements using and uploading are not implemented"});
619this.load=function(){
620if(this.queryText){
621this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;
622}
623this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script";
624this.queryText="";
625if(!this.method){
626this.method="GET";
627}
628if(this.method!=="GET"){
629return ["script_only_get"];
630}
631if(this.queryElem.length){
632return ["script_no_form"];
633}
634if(this.url.length>JsHttpRequest.MAX_URL_LEN){
635return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
636}
637if(req._reqHeaders.length){
638return ["no_headers","SCRIPT"];
639}
640var th=this,d=document,s=null,b=d.body;
641if(!window.opera){
642this.span=s=d.createElement("SCRIPT");
643var _4a=function(){
644s.language="JavaScript";
645if(s.setAttribute){
646s.setAttribute("src",th.url);
647}else{
648s.src=th.url;
649}
650b.insertBefore(s,b.lastChild);
651};
652}else{
653this.span=s=d.createElement("SPAN");
654s.style.display="none";
655b.insertBefore(s,b.lastChild);
656s.innerHTML="Workaround for IE.<s"+"cript></"+"script>";
657var _4a=function(){
658s=s.getElementsByTagName("SCRIPT")[0];
659s.language="JavaScript";
660if(s.setAttribute){
661s.setAttribute("src",th.url);
662}else{
663s.src=th.url;
664}
665};
666}
667JsHttpRequest.setTimeout(_4a,10);
668return null;
669};
670}};
671JsHttpRequest.LOADERS.form={loader:function(req){
672JsHttpRequest.extend(req._errors,{form_el_not_belong:"Element \"%\" does not belong to any form!",form_el_belong_diff:"Element \"%\" belongs to a different form. All elements must belong to the same form!",form_el_inv_enctype:"Attribute \"enctype\" of the form must be \"%\" (for IE), \"%\" given."});
673this.load=function(){
674var th=this;
675if(!th.method){
676th.method="POST";
677}
678th.url+=(th.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+th.id+"-"+"form";
679if(req._reqHeaders.length){
680return ["no_headers","FORM"];
681}
682if(th.method=="GET"){
683if(th.queryText){
684th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText;
685}
686if(th.url.length>JsHttpRequest.MAX_URL_LEN){
687return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
688}
689var p=th.url.split("?",2);
690th.url=p[0];
691th.queryText=p[1]||"";
692}
693var _4e=null;
694var _4f=false;
695if(th.queryElem.length){
696if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){
697_4e=th.queryElem[0].e;
698_4f=true;
699th.queryElem=[];
700}else{
701_4e=th.queryElem[0].e.form;
702for(var i=0;i<th.queryElem.length;i++){
703var e=th.queryElem[i].e;
704if(!e.form){
705return ["form_el_not_belong",e.name];
706}
707if(e.form!=_4e){
708return ["form_el_belong_diff",e.name];
709}
710}
711}
712if(th.method=="POST"){
713var _52="multipart/form-data";
714var _53=(_4e.attributes.encType&&_4e.attributes.encType.nodeValue)||(_4e.attributes.enctype&&_4e.attributes.enctype.value)||_4e.enctype;
715if(_53!=_52){
716return ["form_el_inv_enctype",_52,_53];
717}
718}
719}
720var d=_4e&&(_4e.ownerDocument||_4e.document)||document;
721var _55="jshr_i_"+th.id;
722var s=th.span=d.createElement("DIV");
723s.style.position="absolute";
724s.style.display="none";
725s.style.visibility="hidden";
726s.innerHTML=(_4e?"":"<form"+(th.method=="POST"?" enctype=\"multipart/form-data\" method=\"post\"":"")+"></form>")+"<iframe name=\""+_55+"\" id=\""+_55+"\" style=\"width:0px; height:0px; overflow:hidden; border:none\"></iframe>";
727if(!_4e){
728_4e=th.span.firstChild;
729}
730d.body.insertBefore(s,d.body.lastChild);
731var _57=function(e,_59){
732var sv=[];
733var _5b=e;
734if(e.mergeAttributes){
735var _5b=d.createElement("form");
736_5b.mergeAttributes(e,false);
737}
738for(var i=0;i<_59.length;i++){
739var k=_59[i][0],v=_59[i][1];
740sv[sv.length]=[k,_5b.getAttribute(k)];
741_5b.setAttribute(k,v);
742}
743if(e.mergeAttributes){
744e.mergeAttributes(_5b,false);
745}
746return sv;
747};
748var _5f=function(){
749top.JsHttpRequestGlobal=JsHttpRequest;
750var _60=[];
751if(!_4f){
752for(var i=0,n=_4e.elements.length;i<n;i++){
753_60[i]=_4e.elements[i].name;
754_4e.elements[i].name="";
755}
756}
757var qt=th.queryText.split("&");
758for(var i=qt.length-1;i>=0;i--){
759var _64=qt[i].split("=",2);
760var e=d.createElement("INPUT");
761e.type="hidden";
762e.name=unescape(_64[0]);
763e.value=_64[1]!=null?unescape(_64[1]):"";
764_4e.appendChild(e);
765}
766for(var i=0;i<th.queryElem.length;i++){
767th.queryElem[i].e.name=th.queryElem[i].name;
768}
769var sv=_57(_4e,[["action",th.url],["method",th.method],["onsubmit",null],["target",_55]]);
770_4e.submit();
771_57(_4e,sv);
772for(var i=0;i<qt.length;i++){
773_4e.lastChild.parentNode.removeChild(_4e.lastChild);
774}
775if(!_4f){
776for(var i=0,n=_4e.elements.length;i<n;i++){
777_4e.elements[i].name=_60[i];
778}
779}
780};
781JsHttpRequest.setTimeout(_5f,100);
782return null;
783};
784}};

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.