PageSourceSearch

https://maxime-and-co.com/wp-content/themes/Max2/js/JsHttpRequest.js

js maxime-and-co.com collected 2026-10-02 10:52:37 UTC 13,933 bytes, 577 lines download raw bytes

1/**
2 * JsHttpRequest: JavaScript "AJAX" data loader
3 * Minimized version: see debug directory for the complete one.
4 *
5 * @license LGPL
6 * @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/
7 * @version 5.x $Id$
8 */
9function JsHttpRequest(){
10var t=this;
11t.onreadystatechange=null;
12t.readyState=0;
13t.responseText=null;
14t.responseXML=null;
15t.status=200;
16t.statusText="OK";
17t.responseJS=null;
18t.caching=false;
19t.loader=null;
20t.session_name="PHPSESSID";
21t._ldObj=null;
22t._reqHeaders=[];
23t._openArgs=null;
24t._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%"};
25t.abort=function(){
26with(this){
27if(_ldObj&&_ldObj.abort){
28_ldObj.abort();
29}
30_cleanup();
31if(readyState==0){
32return;
33}
34if(readyState==1&&!_ldObj){
35readyState=0;
36return;
37}
38_changeReadyState(4,true);
39}
40};
41t.open=function(_2,_3,_4,_5,_6){
42with(this){
43if(_3.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){
44this.loader=RegExp.$2?RegExp.$2:null;
45_2=RegExp.$3;
46_3=RegExp.$4;
47}
48try{
49if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){
50_3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1);
51}
52}
53catch(e){
54}
55_openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""};
56_ldObj=null;
57_changeReadyState(1,true);
58return true;
59}
60};
61t.send=function(_7){
62if(!this.readyState){
63return;
64}
65this._changeReadyState(1,true);
66this._ldObj=null;
67var _8=[];
68var _9=[];
69if(!this._hash2query(_7,null,_8,_9)){
70return;
71}
72var _a=null;
73if(this.caching&&!_9.length){
74_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method;
75var _b=JsHttpRequest.CACHE[_a];
76if(_b){
77this._dataReady(_b[0],_b[1]);
78return false;
79}
80}
81var _c=(this.loader||"").toLowerCase();
82if(_c&&!JsHttpRequest.LOADERS[_c]){
83return this._error("unk_loader",_c);
84}
85var _d=[];
86var _e=JsHttpRequest.LOADERS;
87for(var _f in _e){
88var ldr=_e[_f].loader;
89if(!ldr){
90continue;
91}
92if(_c&&_f!=_c){
93continue;
94}
95var _11=new ldr(this);
96JsHttpRequest.extend(_11,this._openArgs);
97JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null});
98var _12=_11.load();
99if(!_12){
100this._ldObj=_11;
101JsHttpRequest.PENDING[_11.id]=this;
102return true;
103}
104if(!_c){
105_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12);
106}else{
107return this._error(_12);
108}
109}
110return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders");
111};
112t.getAllResponseHeaders=function(){
113with(this){
114return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[];
115}
116};
117t.getResponseHeader=function(_13){
118with(this){
119return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader(_13):null;
120}
121};
122t.setRequestHeader=function(_14,_15){
123with(this){
124_reqHeaders[_reqHeaders.length]=[_14,_15];
125}
126};
127t._dataReady=function(_16,js){
128with(this){
129if(caching&&_ldObj){
130JsHttpRequest.CACHE[_ldObj.hash]=[_16,js];
131}
132responseText=responseXML=_16;
133responseJS=js;
134if(js!==null){
135status=200;
136statusText="OK";
137}else{
138status=500;
139statusText="Internal Server Error";
140}
141_changeReadyState(2);
142_changeReadyState(3);
143_changeReadyState(4);
144_cleanup();
145}
146};
147t._l=function(_18){
148var i=0,p=0,msg=this._errors[_18[0]];
149while((p=msg.indexOf("%",p))>=0){
150var a=_18[++i]+"";
151msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length);
152p+=1+a.length;
153}
154return msg;
155};
156t._error=function(msg){
157msg=this._l(typeof (msg)=="string"?arguments:msg);
158msg="JsHttpRequest: "+msg;
159if(!window.Error){
160throw msg;
161}else{
162if((new Error(1,"test")).description=="test"){
163throw new Error(1,msg);
164}else{
165throw new Error(msg);
166}
167}
168};
169t._hash2query=function(_1e,_1f,_20,_21){
170if(_1f==null){
171_1f="";
172}
173if((""+typeof (_1e)).toLowerCase()=="object"){
174var _22=false;
175if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){
176_1e={form:_1e};
177}
178for(var k in _1e){
179var v=_1e[k];
180if(v instanceof Function){
181continue;
182}
183var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k);
184var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName;
185if(_26){
186var tn=v.tagName.toUpperCase();
187if(tn=="FORM"){
188_22=true;
189}else{
190if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){
191}else{
192return this._error("inv_form_el",(v.name||""),v.tagName);
193}
194}
195_21[_21.length]={name:_25,e:v};
196}else{
197if(v instanceof Object){
198this._hash2query(v,_25,_20,_21);
199}else{
200if(v===null){
201continue;
202}
203if(v===true){
204v=1;
205}
206if(v===false){
207v="";
208}
209_20[_20.length]=_25+"="+this.escape(""+v);
210}
211}
212if(_22&&_21.length>1){
213return this._error("must_be_single_el");
214}
215}
216}else{
217_20[_20.length]=_1e;
218}
219return true;
220};
221t._cleanup=function(){
222var _28=this._ldObj;
223if(!_28){
224return;
225}
226JsHttpRequest.PENDING[_28.id]=false;
227var _29=_28.span;
228if(!_29){
229return;
230}
231_28.span=null;
232var _2a=function(){
233_29.parentNode.removeChild(_29);
234};
235JsHttpRequest.setTimeout(_2a,50);
236};
237t._changeReadyState=function(s,_2c){
238with(this){
239if(_2c){
240status=statusText=responseJS=null;
241responseText="";
242}
243readyState=s;
244if(onreadystatechange){
245onreadystatechange();
246}
247}
248};
249t.escape=function(s){
250return escape(s).replace(new RegExp("\\+","g"),"%2B");
251};
252}
253JsHttpRequest.COUNT=0;
254JsHttpRequest.MAX_URL_LEN=2000;
255JsHttpRequest.CACHE={};
256JsHttpRequest.PENDING={};
257JsHttpRequest.LOADERS={};
258JsHttpRequest._dummy=function(){
259};
260JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout};
261JsHttpRequest.setTimeout=function(_2e,dt){
262window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s;
263if(typeof (_2e)=="string"){
264id=window.JsHttpRequest_tmp(_2e,dt);
265}else{
266var id=null;
267var _31=function(){
268_2e();
269delete JsHttpRequest.TIMEOUTS[id];
270};
271id=window.JsHttpRequest_tmp(_31,dt);
272JsHttpRequest.TIMEOUTS[id]=_31;
273}
274window.JsHttpRequest_tmp=null;
275return id;
276};
277JsHttpRequest.clearTimeout=function(id){
278window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c;
279delete JsHttpRequest.TIMEOUTS[id];
280var r=window.JsHttpRequest_tmp(id);
281window.JsHttpRequest_tmp=null;
282return r;
283};
284JsHttpRequest.query=function(url,_35,_36,_37){
285var req=new this();
286req.caching=!_37;
287req.onreadystatechange=function(){
288if(req.readyState==4){
289_36(req.responseJS,req.responseText);
290}
291};
292req.open(null,url,true);
293req.send(_35);
294};
295JsHttpRequest.dataReady=function(d){
296var th=this.PENDING[d.id];
297delete this.PENDING[d.id];
298if(th){
299th._dataReady(d.text,d.js);
300}else{
301if(th!==false){
302throw "dataReady(): unknown pending id: "+d.id;
303}
304}
305};
306JsHttpRequest.extend=function(_3b,src){
307for(var k in src){
308_3b[k]=src[k];
309}
310};
311JsHttpRequest.LOADERS.xml={loader:function(req){
312JsHttpRequest.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"});
313this.load=function(){
314if(this.queryElem.length){
315return ["xml_no_form_upl"];
316}
317if(this.url.match(new RegExp("^([a-z]+://[^\\/]+)(.*)","i"))){
318if(RegExp.$1.toLowerCase()!=document.location.protocol+"//"+document.location.hostname.toLowerCase()){
319return ["xml_no_diffdom",RegExp.$1];
320}
321}
322var xr=null;
323if(window.XMLHttpRequest){
324try{
325xr=new XMLHttpRequest();
326}
327catch(e){
328}
329}else{
330if(window.ActiveXObject){
331try{
332xr=new ActiveXObject("Microsoft.XMLHTTP");
333}
334catch(e){
335}
336if(!xr){
337try{
338xr=new ActiveXObject("Msxml2.XMLHTTP");
339}
340catch(e){
341}
342}
343}
344}
345if(!xr){
346return ["xml_no"];
347}
348var _40=window.ActiveXObject||xr.setRequestHeader;
349if(!this.method){
350this.method=_40&&this.queryText.length?"POST":"GET";
351}
352if(this.method=="GET"){
353if(this.queryText){
354this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;
355}
356this.queryText="";
357if(this.url.length>JsHttpRequest.MAX_URL_LEN){
358return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
359}
360}else{
361if(this.method=="POST"&&!_40){
362return ["xml_no_headers"];
363}
364}
365this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+(req.caching?"0":this.id)+"-xml";
366var id=this.id;
367xr.onreadystatechange=function(){
368if(xr.readyState!=4){
369return;
370}
371xr.onreadystatechange=JsHttpRequest._dummy;
372req.status=null;
373try{
374req.status=xr.status;
375req.responseText=xr.responseText;
376}
377catch(e){
378}
379if(!req.status){
380return;
381}
382try{
383var _42=req.responseText||"{ js: null, text: null }";
384eval("JsHttpRequest._tmp = function(id) { var d = "+_42+"; d.id = id; JsHttpRequest.dataReady(d); }");
385}
386catch(e){
387return req._error("js_invalid",req.responseText);
388}
389JsHttpRequest._tmp(id);
390JsHttpRequest._tmp=null;
391};
392xr.open(this.method,this.url,true,this.username,this.password);
393if(_40){
394for(var i=0;i<req._reqHeaders.length;i++){
395xr.setRequestHeader(req._reqHeaders[i][0],req._reqHeaders[i][1]);
396}
397xr.setRequestHeader("Content-Type","application/octet-stream");
398}
399xr.send(this.queryText);
400this.span=null;
401this.xr=xr;
402return null;
403};
404this.getAllResponseHeaders=function(){
405return this.xr.getAllResponseHeaders();
406};
407this.getResponseHeader=function(_44){
408return this.xr.getResponseHeader(_44);
409};
410this.abort=function(){
411this.xr.abort();
412this.xr=null;
413};
414}};
415JsHttpRequest.LOADERS.script={loader:function(req){
416JsHttpRequest.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"});
417this.load=function(){
418if(this.queryText){
419this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;
420}
421this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script";
422this.queryText="";
423if(!this.method){
424this.method="GET";
425}
426if(this.method!=="GET"){
427return ["script_only_get"];
428}
429if(this.queryElem.length){
430return ["script_no_form"];
431}
432if(this.url.length>JsHttpRequest.MAX_URL_LEN){
433return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
434}
435var th=this,d=document,s=null,b=d.body;
436if(!window.opera){
437this.span=s=d.createElement("SCRIPT");
438var _4a=function(){
439s.language="JavaScript";
440if(s.setAttribute){
441s.setAttribute("src",th.url);
442}else{
443s.src=th.url;
444}
445b.insertBefore(s,b.lastChild);
446};
447}else{
448this.span=s=d.createElement("SPAN");
449s.style.display="none";
450b.insertBefore(s,b.lastChild);
451s.innerHTML="Workaround for IE.<s"+"cript></"+"script>";
452var _4a=function(){
453s=s.getElementsByTagName("SCRIPT")[0];
454s.language="JavaScript";
455if(s.setAttribute){
456s.setAttribute("src",th.url);
457}else{
458s.src=th.url;
459}
460};
461}
462JsHttpRequest.setTimeout(_4a,10);
463return null;
464};
465}};
466JsHttpRequest.LOADERS.form={loader:function(req){
467JsHttpRequest.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."});
468this.load=function(){
469var th=this;
470if(!th.method){
471th.method="POST";
472}
473th.url+=(th.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+th.id+"-"+"form";
474if(th.method=="GET"){
475if(th.queryText){
476th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText;
477}
478if(th.url.length>JsHttpRequest.MAX_URL_LEN){
479return ["url_too_long",JsHttpRequest.MAX_URL_LEN];
480}
481var p=th.url.split("?",2);
482th.url=p[0];
483th.queryText=p[1]||"";
484}
485var _4e=null;
486var _4f=false;
487if(th.queryElem.length){
488if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){
489_4e=th.queryElem[0].e;
490_4f=true;
491th.queryElem=[];
492}else{
493_4e=th.queryElem[0].e.form;
494for(var i=0;i<th.queryElem.length;i++){
495var e=th.queryElem[i].e;
496if(!e.form){
497return ["form_el_not_belong",e.name];
498}
499if(e.form!=_4e){
500return ["form_el_belong_diff",e.name];
501}
502}
503}
504if(th.method=="POST"){
505var _52="multipart/form-data";
506var _53=(_4e.attributes.encType&&_4e.attributes.encType.nodeValue)||(_4e.attributes.enctype&&_4e.attributes.enctype.value)||_4e.enctype;
507if(_53!=_52){
508return ["form_el_inv_enctype",_52,_53];
509}
510}
511}
512var d=_4e&&(_4e.ownerDocument||_4e.document)||document;
513var _55="jshr_i_"+th.id;
514var s=th.span=d.createElement("DIV");
515s.style.position="absolute";
516s.style.display="none";
517s.style.visibility="hidden";
518s.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>";
519if(!_4e){
520_4e=th.span.firstChild;
521}
522d.body.insertBefore(s,d.body.lastChild);
523var _57=function(e,_59){
524var sv=[];
525var _5b=e;
526if(e.mergeAttributes){
527var _5b=d.createElement("form");
528_5b.mergeAttributes(e,false);
529}
530for(var i=0;i<_59.length;i++){
531var k=_59[i][0],v=_59[i][1];
532sv[sv.length]=[k,_5b.getAttribute(k)];
533_5b.setAttribute(k,v);
534}
535if(e.mergeAttributes){
536e.mergeAttributes(_5b,false);
537}
538return sv;
539};
540var _5f=function(){
541top.JsHttpRequestGlobal=JsHttpRequest;
542var _60=[];
543if(!_4f){
544for(var i=0,n=_4e.elements.length;i<n;i++){
545_60[i]=_4e.elements[i].name;
546_4e.elements[i].name="";
547}
548}
549var qt=th.queryText.split("&");
550for(var i=qt.length-1;i>=0;i--){
551var _64=qt[i].split("=",2);
552var e=d.createElement("INPUT");
553e.type="hidden";
554e.name=unescape(_64[0]);
555e.value=_64[1]!=null?unescape(_64[1]):"";
556_4e.appendChild(e);
557}
558for(var i=0;i<th.queryElem.length;i++){
559th.queryElem[i].e.name=th.queryElem[i].name;
560}
561var sv=_57(_4e,[["action",th.url],["method",th.method],["onsubmit",null],["target",_55]]);
562_4e.submit();
563_57(_4e,sv);
564for(var i=0;i<qt.length;i++){
565_4e.lastChild.parentNode.removeChild(_4e.lastChild);
566}
567if(!_4f){
568for(var i=0,n=_4e.elements.length;i<n;i++){
569_4e.elements[i].name=_60[i];
570}
571}
572};
573JsHttpRequest.setTimeout(_5f,100);
574return null;
575};
576}};
577

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.