Changeset 45
- Timestamp:
- 12/18/07 20:43:53 (4 years ago)
- Files:
-
- kladr/addr_suggest.php (modified) (1 diff)
- kladr/kladr/addr_suggest.js (modified) (3 diffs)
- kladr/kladr/JsHttpRequest.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
kladr/addr_suggest.php
r44 r45 143 143 "type" => $r->type, 144 144 "id" => $r->id, 145 "level" => $r->level 145 "level" => $r->level, 146 "_index" => $r->_index 146 147 )); 147 148 } 148 149 } 149 $_RESULT = $r es;150 $_RESULT = $rr; 150 151 break; 151 152 } kladr/kladr/addr_suggest.js
r44 r45 238 238 239 239 //assign the onkeyup event handler 240 this.textbox.autocomplete = "off";240 // this.textbox.setAttribute("autocomplete", "off"); 241 241 this.textbox.onkeyup = function (oEvent) { 242 242 … … 391 391 392 392 // --------------------------------------------------------------------------- 393 var EFIO_SERVER = "http:// www.kladr.org.ru/addr_suggest.php";393 var EFIO_SERVER = "http://kladr.org.ru/addr_suggest.php"; 394 394 395 395 function AddressSuggestions() {} … … 506 506 } 507 507 // ---------------------------------------------------------------------------- 508 function kladrFilter(c,cc) { 509 return ((c>=1072 && c<=1103) || // а..я 510 (c>=1040 && c<=1071) || // А..Я 511 (c>=97 && c<=122) || // a..z 512 (c>=65 && c<=90) || // A..Z 513 (c>=48 && c<=57) || // 0..9 514 c==45 || c == 39 || // - ' 515 c==47 || // / 516 c==1105 || c==1025 || // ё, Ё 517 c==32 || // space 518 cc==9 || // tab 519 cc==0); // special symbols 520 } 521 508 522 window.onload = function () { 509 523 kladrGroup = new KladrGroup; 510 524 511 kladrGroup.setFilter(function(c,cc) { 512 //alert(c+" "+cc); 513 return ((c>=1072 && c<=1103) || // а..я 514 (c>=1040 && c<=1071) || // А..Я 515 (c>=97 && c<=122) || // a..z 516 (c>=65 && c<=90) || // A..Z 517 (c>=48 && c<=57) || // 0..9 518 c==45 || c == 39 || // - ' 519 c==47 || // / 520 c==1105 || c==1025 || // ё, Ё 521 c==32 || // space 522 cc==9 || // tab 523 cc==0); // special symbols 524 } 525 ); 526 527 var iList = [ document.getElementById("kladr_0"), 528 document.getElementById("kladr_1"), 529 document.getElementById("kladr_2"), 530 document.getElementById("kladr_3"), 531 document.getElementById("kladr_4"), 532 document.getElementById("kladr_5"), 533 document.getElementById("kladr_6") ]; 534 iList[0].focus(); 535 536 var tList = [ document.getElementById("kladr_title_0"), 537 document.getElementById("kladr_title_1"), 538 document.getElementById("kladr_title_2"), 539 document.getElementById("kladr_title_3"), 540 document.getElementById("kladr_title_4"), 541 document.getElementById("kladr_title_5"), 542 document.getElementById("kladr_title_6") ]; 543 544 var sList = [ new AddressSuggestions, 545 new AddressSuggestions, 546 new AddressSuggestions, 547 new AddressSuggestions, 548 new AddressSuggestions, 549 new AddressSuggestions ]; 550 551 for (var i=0;i<=6;i++) 552 kladrGroup.add(new AutoSuggestControl(iList[i], sList[i]), 553 tList[i]); 554 } 525 kladrGroup.setFilter(kladrFilter); 526 527 for (var i=0;i<=6;i++) { 528 input = document.getElementById("kladr_"+i); 529 if (i==0) input.focus(); 530 title = document.getElementById("kladr_title_"+i); 531 suggest = new AddressSuggestions; 532 kladrGroup.add( 533 new AutoSuggestControl(input, suggest), 534 title 535 ); 536 } 537 } kladr/kladr/JsHttpRequest.js
r14 r45 1 1 /** 2 3 * JsHttpRequest: JavaScript "AJAX" data loader 4 2 * JsHttpRequest: JavaScript "AJAX" data loader (script support only!) 5 3 * Minimized version: see debug directory for the complete one. 6 7 4 * 8 9 5 * @license LGPL 10 11 6 * @author Dmitry Koterov, http://en.dklab.ru/lib/JsHttpRequest/ 12 13 * @version 5.x $Id: JsHttpRequest.js,v 1.1 2007/03/29 18:21:53 pv Exp $ 14 7 * @version 5.x $Id$ 15 8 */ 16 17 9 function JsHttpRequest(){ 18 19 10 var t=this; 20 21 11 t.onreadystatechange=null; 22 23 12 t.readyState=0; 24 25 13 t.responseText=null; 26 27 14 t.responseXML=null; 28 29 15 t.status=200; 30 31 16 t.statusText="OK"; 32 33 17 t.responseJS=null; 34 35 18 t.caching=false; 36 37 19 t.loader=null; 38 39 20 t.session_name="PHPSESSID"; 40 41 21 t._ldObj=null; 42 43 22 t._reqHeaders=[]; 44 45 23 t._openArgs=null; 46 47 t._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."}; 48 24 t._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%"}; 49 25 t.abort=function(){ 50 51 with(this){ 52 26 with(this){ 53 27 if(_ldObj&&_ldObj.abort){ 54 55 28 _ldObj.abort(); 56 57 } 58 29 } 59 30 _cleanup(); 60 61 31 if(readyState==0){ 62 63 return; 64 65 } 66 32 return; 33 } 67 34 if(readyState==1&&!_ldObj){ 68 69 35 readyState=0; 70 71 return; 72 73 } 74 36 return; 37 } 75 38 _changeReadyState(4,true); 76 77 } 78 79 }; 80 39 } 40 }; 81 41 t.open=function(_2,_3,_4,_5,_6){ 82 83 with(this){ 84 42 with(this){ 43 if(_3.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){ 44 this.loader=RegExp.$2?RegExp.$2:null; 45 _2=RegExp.$3; 46 _3=RegExp.$4; 47 } 85 48 try{ 86 87 49 if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){ 88 89 50 _3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1); 90 91 } 92 93 } 94 51 } 52 } 95 53 catch(e){ 96 97 } 98 54 } 99 55 _openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""}; 100 101 56 _ldObj=null; 102 103 57 _changeReadyState(1,true); 104 105 58 return true; 106 107 } 108 109 }; 110 59 } 60 }; 111 61 t.send=function(_7){ 112 113 62 if(!this.readyState){ 114 115 return; 116 117 } 118 63 return; 64 } 119 65 this._changeReadyState(1,true); 120 121 66 this._ldObj=null; 122 123 67 var _8=[]; 124 125 68 var _9=[]; 126 127 69 if(!this._hash2query(_7,null,_8,_9)){ 128 129 return; 130 131 } 132 70 return; 71 } 133 72 var _a=null; 134 135 73 if(this.caching&&!_9.length){ 136 137 74 _a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method; 138 139 75 var _b=JsHttpRequest.CACHE[_a]; 140 141 76 if(_b){ 142 143 77 this._dataReady(_b[0],_b[1]); 144 145 78 return false; 146 147 } 148 149 } 150 79 } 80 } 151 81 var _c=(this.loader||"").toLowerCase(); 152 153 82 if(_c&&!JsHttpRequest.LOADERS[_c]){ 154 155 83 return this._error("unk_loader",_c); 156 157 } 158 84 } 159 85 var _d=[]; 160 161 86 var _e=JsHttpRequest.LOADERS; 162 163 87 for(var _f in _e){ 164 165 88 var ldr=_e[_f].loader; 166 167 89 if(!ldr){ 168 169 90 continue; 170 171 } 172 91 } 173 92 if(_c&&_f!=_c){ 174 175 93 continue; 176 177 } 178 94 } 179 95 var _11=new ldr(this); 180 181 96 JsHttpRequest.extend(_11,this._openArgs); 182 183 97 JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null}); 184 185 98 var _12=_11.load(); 186 187 99 if(!_12){ 188 189 100 this._ldObj=_11; 190 191 101 JsHttpRequest.PENDING[_11.id]=this; 192 193 102 return true; 194 195 } 196 103 } 197 104 if(!_c){ 198 199 105 _d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12); 200 201 }else{ 202 106 }else{ 203 107 return this._error(_12); 204 205 } 206 207 } 208 108 } 109 } 209 110 return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders"); 210 211 }; 212 111 }; 213 112 t.getAllResponseHeaders=function(){ 214 215 with(this){ 216 113 with(this){ 217 114 return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[]; 218 219 } 220 221 }; 222 115 } 116 }; 223 117 t.getResponseHeader=function(_13){ 224 225 with(this){ 226 227 return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader():[]; 228 229 } 230 231 }; 232 118 with(this){ 119 return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader(_13):null; 120 } 121 }; 233 122 t.setRequestHeader=function(_14,_15){ 234 235 with(this){ 236 123 with(this){ 237 124 _reqHeaders[_reqHeaders.length]=[_14,_15]; 238 239 } 240 241 }; 242 125 } 126 }; 243 127 t._dataReady=function(_16,js){ 244 245 with(this){ 246 128 with(this){ 247 129 if(caching&&_ldObj){ 248 249 130 JsHttpRequest.CACHE[_ldObj.hash]=[_16,js]; 250 251 } 252 253 if(_16!==null||js!==null){ 254 255 status=4; 256 131 } 257 132 responseText=responseXML=_16; 258 259 133 responseJS=js; 260 261 }else{ 262 134 if(js!==null){ 135 status=200; 136 statusText="OK"; 137 }else{ 263 138 status=500; 264 265 responseText=responseXML=responseJS=null; 266 267 } 268 139 statusText="Internal Server Error"; 140 } 269 141 _changeReadyState(2); 270 271 142 _changeReadyState(3); 272 273 143 _changeReadyState(4); 274 275 144 _cleanup(); 276 277 } 278 279 }; 280 145 } 146 }; 281 147 t._l=function(_18){ 282 283 148 var i=0,p=0,msg=this._errors[_18[0]]; 284 285 149 while((p=msg.indexOf("%",p))>=0){ 286 287 150 var a=_18[++i]+""; 288 289 151 msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length); 290 291 152 p+=1+a.length; 292 293 } 294 153 } 295 154 return msg; 296 297 }; 298 155 }; 299 156 t._error=function(msg){ 300 301 157 msg=this._l(typeof (msg)=="string"?arguments:msg); 302 303 158 msg="JsHttpRequest: "+msg; 304 305 159 if(!window.Error){ 306 307 160 throw msg; 308 309 }else{ 310 161 }else{ 311 162 if((new Error(1,"test")).description=="test"){ 312 313 163 throw new Error(1,msg); 314 315 }else{ 316 164 }else{ 317 165 throw new Error(msg); 318 319 } 320 321 } 322 323 }; 324 166 } 167 } 168 }; 325 169 t._hash2query=function(_1e,_1f,_20,_21){ 326 327 170 if(_1f==null){ 328 329 171 _1f=""; 330 331 } 332 333 if(_1e instanceof Object){ 334 172 } 173 if((""+typeof (_1e)).toLowerCase()=="object"){ 335 174 var _22=false; 336 175 if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){ 176 _1e={form:_1e}; 177 } 337 178 for(var k in _1e){ 338 339 179 var v=_1e[k]; 340 341 180 if(v instanceof Function){ 342 343 181 continue; 344 345 } 346 182 } 347 183 var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k); 348 349 184 var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName; 350 351 185 if(_26){ 352 353 186 var tn=v.tagName.toUpperCase(); 354 355 187 if(tn=="FORM"){ 356 357 188 _22=true; 358 359 }else{ 360 189 }else{ 361 190 if(tn=="INPUT"||tn=="TEXTAREA"||tn=="SELECT"){ 362 363 }else{ 364 365 return this._error("inv_form_el",(e.name||""),e.tagName); 366 367 } 368 369 } 370 191 }else{ 192 return this._error("inv_form_el",(v.name||""),v.tagName); 193 } 194 } 371 195 _21[_21.length]={name:_25,e:v}; 372 373 }else{ 374 196 }else{ 375 197 if(v instanceof Object){ 376 377 198 this._hash2query(v,_25,_20,_21); 378 379 }else{ 380 199 }else{ 381 200 if(v===null){ 382 383 201 continue; 384 385 } 386 202 } 203 if(v===true){ 204 v=1; 205 } 206 if(v===false){ 207 v=""; 208 } 387 209 _20[_20.length]=_25+"="+this.escape(""+v); 388 389 } 390 391 } 392 210 } 211 } 393 212 if(_22&&_21.length>1){ 394 395 213 return this._error("must_be_single_el"); 396 397 } 398 399 } 400 401 }else{ 402 214 } 215 } 216 }else{ 403 217 _20[_20.length]=_1e; 404 405 } 406 218 } 407 219 return true; 408 409 }; 410 220 }; 411 221 t._cleanup=function(){ 412 413 222 var _28=this._ldObj; 414 415 223 if(!_28){ 416 417 return; 418 419 } 420 224 return; 225 } 421 226 JsHttpRequest.PENDING[_28.id]=false; 422 423 227 var _29=_28.span; 424 425 228 if(!_29){ 426 427 return; 428 429 } 430 229 return; 230 } 431 231 _28.span=null; 432 433 232 var _2a=function(){ 434 435 233 _29.parentNode.removeChild(_29); 436 437 }; 438 234 }; 439 235 JsHttpRequest.setTimeout(_2a,50); 440 441 }; 442 236 }; 443 237 t._changeReadyState=function(s,_2c){ 444 445 with(this){ 446 238 with(this){ 447 239 if(_2c){ 448 449 240 status=statusText=responseJS=null; 450 451 241 responseText=""; 452 453 } 454 242 } 455 243 readyState=s; 456 457 244 if(onreadystatechange){ 458 459 245 onreadystatechange(); 460 461 } 462 463 } 464 465 }; 466 246 } 247 } 248 }; 467 249 t.escape=function(s){ 468 469 250 return escape(s).replace(new RegExp("\\+","g"),"%2B"); 470 471 }; 472 473 } 474 251 }; 252 } 475 253 JsHttpRequest.COUNT=0; 476 477 254 JsHttpRequest.MAX_URL_LEN=2000; 478 479 255 JsHttpRequest.CACHE={}; 480 481 256 JsHttpRequest.PENDING={}; 482 483 257 JsHttpRequest.LOADERS={}; 484 485 258 JsHttpRequest._dummy=function(){ 486 487 }; 488 259 }; 489 260 JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout}; 490 491 261 JsHttpRequest.setTimeout=function(_2e,dt){ 492 493 262 window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s; 494 495 263 if(typeof (_2e)=="string"){ 496 497 264 id=window.JsHttpRequest_tmp(_2e,dt); 498 499 }else{ 500 265 }else{ 501 266 var id=null; 502 503 267 var _31=function(){ 504 505 268 _2e(); 506 507 269 delete JsHttpRequest.TIMEOUTS[id]; 508 509 }; 510 270 }; 511 271 id=window.JsHttpRequest_tmp(_31,dt); 512 513 272 JsHttpRequest.TIMEOUTS[id]=_31; 514 515 } 516 273 } 517 274 window.JsHttpRequest_tmp=null; 518 519 275 return id; 520 521 }; 522 276 }; 523 277 JsHttpRequest.clearTimeout=function(id){ 524 525 278 window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c; 526 527 279 delete JsHttpRequest.TIMEOUTS[id]; 528 529 280 var r=window.JsHttpRequest_tmp(id); 530 531 281 window.JsHttpRequest_tmp=null; 532 533 282 return r; 534 535 }; 536 283 }; 537 284 JsHttpRequest.query=function(url,_35,_36,_37){ 538 539 285 var req=new this(); 540 541 286 req.caching=!_37; 542 543 287 req.onreadystatechange=function(){ 544 545 288 if(req.readyState==4){ 546 547 289 _36(req.responseJS,req.responseText); 548 549 } 550 551 }; 552 553 var _39=null; 554 555 if(url.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){ 556 557 req.loader=RegExp.$2?RegExp.$2:null; 558 559 _39=RegExp.$3; 560 561 url=RegExp.$4; 562 563 } 564 565 req.open(_39,url,true); 566 290 } 291 }; 292 req.open(null,url,true); 567 293 req.send(_35); 568 569 }; 570 294 }; 571 295 JsHttpRequest.dataReady=function(d){ 572 573 296 var th=this.PENDING[d.id]; 574 575 297 delete this.PENDING[d.id]; 576 577 298 if(th){ 578 579 299 th._dataReady(d.text,d.js); 580 581 }else{ 582 300 }else{ 583 301 if(th!==false){ 584 585 302 throw "dataReady(): unknown pending id: "+d.id; 586 587 } 588 589 } 590 591 }; 592 593 JsHttpRequest.extend=function(_3c,src){ 594 303 } 304 } 305 }; 306 JsHttpRequest.extend=function(_3b,src){ 595 307 for(var k in src){ 596 597 _3c[k]=src[k]; 598 599 } 600 601 }; 602 603 JsHttpRequest.LOADERS.xml={loader:function(req){ 604 605 JsHttpRequest.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"}); 606 308 _3b[k]=src[k]; 309 } 310 }; 311 JsHttpRequest.LOADERS.script={loader:function(req){ 312 JsHttpRequest.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"}); 607 313 this.load=function(){ 608 314 if(this.queryText){ 315 this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText; 316 } 317 this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script"; 318 this.queryText=""; 319 if(!this.method){ 320 this.method="GET"; 321 } 322 if(this.method!=="GET"){ 323 return ["script_only_get"]; 324 } 609 325 if(this.queryElem.length){ 610 611 return ["xml_no_form_upl"]; 612 613 } 614 615 if(this.url.match(new RegExp("^([a-z]+)://([^\\/]+)(.*)","i"))){ 616 617 if(RegExp.$2.toLowerCase()==document.location.hostname.toLowerCase()){ 618 619 this.url=RegExp.$3; 620 621 }else{ 622 623 return ["xml_no_diffdom",RegExp.$2]; 624 625 } 626 627 } 628 629 var xr=null; 630 631 if(window.XMLHttpRequest){ 632 633 try{ 634 635 xr=new XMLHttpRequest(); 636 637 } 638 639 catch(e){ 640 641 } 642 643 }else{ 644 645 if(window.ActiveXObject){ 646 647 try{ 648 649 xr=new ActiveXObject("Microsoft.XMLHTTP"); 650 651 } 652 653 catch(e){ 654 655 } 656 657 if(!xr){ 658 659 try{ 660 661 xr=new ActiveXObject("Msxml2.XMLHTTP"); 662 663 } 664 665 catch(e){ 666 667 } 668 669 } 670 671 } 672 673 } 674 675 if(!xr){ 676 677 return ["xml_no"]; 678 679 } 680 681 var _41=window.ActiveXObject||xr.setRequestHeader; 682 683 if(!this.method){ 684 685 this.method=_41?"POST":"GET"; 686 687 } 688 689 if(this.method=="GET"){ 690 691 if(this.queryText){ 692 693 this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText; 694 695 } 696 697 this.queryText=""; 698 326 return ["script_no_form"]; 327 } 699 328 if(this.url.length>JsHttpRequest.MAX_URL_LEN){ 700 701 329 return ["url_too_long",JsHttpRequest.MAX_URL_LEN]; 702 703 } 704 705 }else{ 706 707 if(this.method=="POST"&&!_41){ 708 709 return ["xml_no_headers"]; 710 711 } 712 713 } 714 715 this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+(req.caching?"0":this.id)+"-xml"; 716 717 var id=this.id; 718 719 xr.onreadystatechange=function(){ 720 721 if(xr.readyState!=4){ 722 723 return; 724 725 } 726 727 xr.onreadystatechange=JsHttpRequest._dummy; 728 729 req.status=null; 730 731 try{ 732 733 req.status=xr.status; 734 735 req.responseText=xr.responseText; 736 737 } 738 739 catch(e){ 740 741 } 742 743 if(!req.status){ 744 745 return; 746 747 } 748 749 try{ 750 751 eval("JsHttpRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }"); 752 753 } 754 755 catch(e){ 756 757 return req._error("js_invalid",req.responseText); 758 759 } 760 761 JsHttpRequest._tmp(id); 762 763 JsHttpRequest._tmp=null; 764 765 }; 766 767 xr.open(this.method,this.url,true,this.username,this.password); 768 769 if(_41){ 770 771 for(var i=0;i<req._reqHeaders.length;i++){ 772 773 xr.setRequestHeader(req._reqHeaders[i][0],req._reqHeaders[i][1]); 774 775 } 776 777 xr.setRequestHeader("Content-Type","application/octet-stream"); 778 779 } 780 781 xr.send(this.queryText); 782 783 this.span=null; 784 785 this.xr=xr; 786 330 } 331 var th=this,d=document,s=null,b=d.body; 332 if(!window.opera){ 333 this.span=s=d.createElement("SCRIPT"); 334 var _43=function(){ 335 s.language="JavaScript"; 336 if(s.setAttribute){ 337 s.setAttribute("src",th.url); 338 }else{ 339 s.src=th.url; 340 } 341 b.insertBefore(s,b.lastChild); 342 }; 343 }else{ 344 this.span=s=d.createElement("SPAN"); 345 s.style.display="none"; 346 b.insertBefore(s,b.lastChild); 347 s.innerHTML="Workaround for IE.<s"+"cript></"+"script>"; 348 var _43=function(){ 349 s=s.getElementsByTagName("SCRIPT")[0]; 350 s.language="JavaScript"; 351 if(s.setAttribute){ 352 s.setAttribute("src",th.url); 353 }else{ 354 s.src=th.url; 355 } 356 }; 357 } 358 JsHttpRequest.setTimeout(_43,10); 787 359 return null; 788 789 }; 790 791 this.getAllResponseHeaders=function(){ 792 793 return this.xr.getAllResponseHeaders(); 794 795 }; 796 797 this.getResponseHeader=function(_44){ 798 799 return this.xr.getResponseHeader(_44); 800 801 }; 802 803 this.abort=function(){ 804 805 this.xr.abort(); 806 807 this.xr=null; 808 809 }; 810 360 }; 811 361 }}; 812 362 813 JsHttpRequest.LOADERS.script={loader:function(req){814 815 JsHttpRequest.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"});816 817 this.load=function(){818 819 if(this.queryText){820 821 this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText;822 823 }824 825 this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script";826 827 this.queryText="";828 829 if(!this.method){830 831 this.method="GET";832 833 }834 835 if(this.method!=="GET"){836 837 return ["script_only_get"];838 839 }840 841 if(this.queryElem.length){842 843 return ["script_no_form"];844 845 }846 847 if(this.url.length>JsHttpRequest.MAX_URL_LEN){848 849 return ["url_too_long",JsHttpRequest.MAX_URL_LEN];850 851 }852 853 if(req._reqHeaders.length){854 855 return ["no_headers","SCRIPT"];856 857 }858 859 var th=this,d=document,s=null,b=d.body;860 861 if(!window.opera){862 863 this.span=s=d.createElement("SCRIPT");864 865 var _4a=function(){866 867 s.language="JavaScript";868 869 if(s.setAttribute){870 871 s.setAttribute("src",th.url);872 873 }else{874 875 s.src=th.url;876 877 }878 879 b.insertBefore(s,b.lastChild);880 881 };882 883 }else{884 885 this.span=s=d.createElement("SPAN");886 887 s.style.display="none";888 889 b.insertBefore(s,b.lastChild);890 891 s.innerHTML="Workaround for IE.<s"+"cript></"+"script>";892 893 var _4a=function(){894 895 s=s.getElementsByTagName("SCRIPT")[0];896 897 s.language="JavaScript";898 899 if(s.setAttribute){900 901 s.setAttribute("src",th.url);902 903 }else{904 905 s.src=th.url;906 907 }908 909 };910 911 }912 913 JsHttpRequest.setTimeout(_4a,10);914 915 return null;916 917 };918 919 }};920 921 JsHttpRequest.LOADERS.form={loader:function(req){922 923 JsHttpRequest.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."});924 925 this.load=function(){926 927 var th=this;928 929 if(!th.method){930 931 th.method="POST";932 933 }934 935 th.url+=(th.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+th.id+"-"+"form";936 937 if(req._reqHeaders.length){938 939 return ["no_headers","FORM"];940 941 }942 943 if(th.method=="GET"){944 945 if(th.queryText){946 947 th.url+=(th.url.indexOf("?")>=0?"&":"?")+th.queryText;948 949 }950 951 if(th.url.length>JsHttpRequest.MAX_URL_LEN){952 953 return ["url_too_long",JsHttpRequest.MAX_URL_LEN];954 955 }956 957 var p=th.url.split("?",2);958 959 th.url=p[0];960 961 th.queryText=p[1]||"";962 963 }964 965 var _4e=null;966 967 var _4f=false;968 969 if(th.queryElem.length){970 971 if(th.queryElem[0].e.tagName.toUpperCase()=="FORM"){972 973 _4e=th.queryElem[0].e;974 975 _4f=true;976 977 th.queryElem=[];978 979 }else{980 981 _4e=th.queryElem[0].e.form;982 983 for(var i=0;i<th.queryElem.length;i++){984 985 var e=th.queryElem[i].e;986 987 if(!e.form){988 989 return ["form_el_not_belong",e.name];990 991 }992 993 if(e.form!=_4e){994 995 return ["form_el_belong_diff",e.name];996 997 }998 999 }1000 1001 }1002 1003 if(th.method=="POST"){1004 1005 var _52="multipart/form-data";1006 1007 var _53=(_4e.attributes.encType&&_4e.attributes.encType.nodeValue)||(_4e.attributes.enctype&&_4e.attributes.enctype.value)||_4e.enctype;1008 1009 if(_53!=_52){1010 1011 return ["form_el_inv_enctype",_52,_53];1012 1013 }1014 1015 }1016 1017 }1018 1019 var d=_4e&&(_4e.ownerDocument||_4e.document)||document;1020 1021 var _55="jshr_i_"+th.id;1022 1023 var s=th.span=d.createElement("DIV");1024 1025 s.style.position="absolute";1026 1027 s.style.visibility="hidden";1028 1029 s.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>";1030 1031 if(!_4e){1032 1033 _4e=th.span.firstChild;1034 1035 }1036 1037 d.body.insertBefore(s,d.body.lastChild);1038 1039 var _57=function(e,_59){1040 1041 var sv=[];1042 1043 var _5b=e;1044 1045 if(e.mergeAttributes){1046 1047 var _5b=d.createElement("form");1048 1049 _5b.mergeAttributes(e,false);1050 1051 }1052 1053 for(var i=0;i<_59.length;i++){1054 1055 var k=_59[i][0],v=_59[i][1];1056 1057 sv[sv.length]=[k,_5b.getAttribute(k)];1058 1059 _5b.setAttribute(k,v);1060 1061 }1062 1063 if(e.mergeAttributes){1064 1065 e.mergeAttributes(_5b,false);1066 1067 }1068 1069 return sv;1070 1071 };1072 1073 var _5f=function(){1074 1075 top.JsHttpRequestGlobal=JsHttpRequest;1076 1077 var _60=[];1078 1079 if(!_4f){1080 1081 for(var i=0,n=_4e.elements.length;i<n;i++){1082 1083 _60[i]=_4e.elements[i].name;1084 1085 _4e.elements[i].name="";1086 1087 }1088 1089 }1090 1091 var qt=th.queryText.split("&");1092 1093 for(var i=qt.length-1;i>=0;i--){1094 1095 var _64=qt[i].split("=",2);1096 1097 var e=d.createElement("INPUT");1098 1099 e.type="hidden";1100 1101 e.name=unescape(_64[0]);1102 1103 e.value=_64[1]!=null?unescape(_64[1]):"";1104 1105 _4e.appendChild(e);1106 1107 }1108 1109 for(var i=0;i<th.queryElem.length;i++){1110 1111 th.queryElem[i].e.name=th.queryElem[i].name;1112 1113 }1114 1115 var sv=_57(_4e,[["action",th.url],["method",th.method],["onsubmit",null],["target",_55]]);1116 1117 _4e.submit();1118 1119 _57(_4e,sv);1120 1121 for(var i=0;i<qt.length;i++){1122 1123 _4e.lastChild.parentNode.removeChild(_4e.lastChild);1124 1125 }1126 1127 if(!_4f){1128 1129 for(var i=0,n=_4e.elements.length;i<n;i++){1130 1131 _4e.elements[i].name=_60[i];1132 1133 }1134 1135 }1136 1137 };1138 1139 JsHttpRequest.setTimeout(_5f,100);1140 1141 return null;1142 1143 };1144 1145 }};1146 1147 1148
