Changeset 45

Show
Ignore:
Timestamp:
12/18/07 20:43:53 (4 years ago)
Author:
teiko
Message:

Небольшие изменения

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • kladr/addr_suggest.php

    r44 r45  
    143143                "type" => $r->type, 
    144144                "id" => $r->id, 
    145                 "level" => $r->level 
     145                "level" => $r->level, 
     146                "_index" => $r->_index 
    146147           )); 
    147148        } 
    148149    } 
    149     $_RESULT = $res
     150    $_RESULT = $rr
    150151    break; 
    151152} 
  • kladr/kladr/addr_suggest.js

    r44 r45  
    238238     
    239239    //assign the onkeyup event handler 
    240     this.textbox.autocomplete = "off"
     240//    this.textbox.setAttribute("autocomplete", "off")
    241241    this.textbox.onkeyup = function (oEvent) { 
    242242     
     
    391391 
    392392// --------------------------------------------------------------------------- 
    393 var EFIO_SERVER = "http://www.kladr.org.ru/addr_suggest.php"; 
     393var EFIO_SERVER = "http://kladr.org.ru/addr_suggest.php"; 
    394394 
    395395function AddressSuggestions() {} 
     
    506506} 
    507507// ---------------------------------------------------------------------------- 
     508function 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 
    508522window.onload = function () { 
    509523    kladrGroup = new KladrGroup; 
    510524 
    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  
    11/** 
    2  
    3  * JsHttpRequest: JavaScript "AJAX" data loader 
    4  
     2 * JsHttpRequest: JavaScript "AJAX" data loader (script support only!) 
    53 * Minimized version: see debug directory for the complete one. 
    6  
    74 * 
    8  
    95 * @license LGPL 
    10  
    116 * @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$ 
    158 */ 
    16  
    179function JsHttpRequest(){ 
    18  
    1910var t=this; 
    20  
    2111t.onreadystatechange=null; 
    22  
    2312t.readyState=0; 
    24  
    2513t.responseText=null; 
    26  
    2714t.responseXML=null; 
    28  
    2915t.status=200; 
    30  
    3116t.statusText="OK"; 
    32  
    3317t.responseJS=null; 
    34  
    3518t.caching=false; 
    36  
    3719t.loader=null; 
    38  
    3920t.session_name="PHPSESSID"; 
    40  
    4121t._ldObj=null; 
    42  
    4322t._reqHeaders=[]; 
    44  
    4523t._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  
     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%"}; 
    4925t.abort=function(){ 
    50  
    51 with(this){ 
    52  
     26with(this){ 
    5327if(_ldObj&&_ldObj.abort){ 
    54  
    5528_ldObj.abort(); 
    56  
    57 
    58  
     29
    5930_cleanup(); 
    60  
    6131if(readyState==0){ 
    62  
    63 return; 
    64  
    65 
    66  
     32return; 
     33
    6734if(readyState==1&&!_ldObj){ 
    68  
    6935readyState=0; 
    70  
    71 return; 
    72  
    73 
    74  
     36return; 
     37
    7538_changeReadyState(4,true); 
    76  
    77 
    78  
    79 }; 
    80  
     39
     40}; 
    8141t.open=function(_2,_3,_4,_5,_6){ 
    82  
    83 with(this){ 
    84  
     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
    8548try{ 
    86  
    8749if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){ 
    88  
    8950_3+=(_3.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1); 
    90  
    91 
    92  
    93 
    94  
     51
     52
    9553catch(e){ 
    96  
    97 
    98  
     54
    9955_openArgs={method:(_2||"").toUpperCase(),url:_3,asyncFlag:_4,username:_5!=null?_5:"",password:_6!=null?_6:""}; 
    100  
    10156_ldObj=null; 
    102  
    10357_changeReadyState(1,true); 
    104  
    10558return true; 
    106  
    107 
    108  
    109 }; 
    110  
     59
     60}; 
    11161t.send=function(_7){ 
    112  
    11362if(!this.readyState){ 
    114  
    115 return; 
    116  
    117 
    118  
     63return; 
     64
    11965this._changeReadyState(1,true); 
    120  
    12166this._ldObj=null; 
    122  
    12367var _8=[]; 
    124  
    12568var _9=[]; 
    126  
    12769if(!this._hash2query(_7,null,_8,_9)){ 
    128  
    129 return; 
    130  
    131 
    132  
     70return; 
     71
    13372var _a=null; 
    134  
    13573if(this.caching&&!_9.length){ 
    136  
    13774_a=this._openArgs.username+":"+this._openArgs.password+"@"+this._openArgs.url+"|"+_8+"#"+this._openArgs.method; 
    138  
    13975var _b=JsHttpRequest.CACHE[_a]; 
    140  
    14176if(_b){ 
    142  
    14377this._dataReady(_b[0],_b[1]); 
    144  
    14578return false; 
    146  
    147 
    148  
    149 
    150  
     79
     80
    15181var _c=(this.loader||"").toLowerCase(); 
    152  
    15382if(_c&&!JsHttpRequest.LOADERS[_c]){ 
    154  
    15583return this._error("unk_loader",_c); 
    156  
    157 
    158  
     84
    15985var _d=[]; 
    160  
    16186var _e=JsHttpRequest.LOADERS; 
    162  
    16387for(var _f in _e){ 
    164  
    16588var ldr=_e[_f].loader; 
    166  
    16789if(!ldr){ 
    168  
    16990continue; 
    170  
    171 
    172  
     91
    17392if(_c&&_f!=_c){ 
    174  
    17593continue; 
    176  
    177 
    178  
     94
    17995var _11=new ldr(this); 
    180  
    18196JsHttpRequest.extend(_11,this._openArgs); 
    182  
    18397JsHttpRequest.extend(_11,{queryText:_8.join("&"),queryElem:_9,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:_a,span:null}); 
    184  
    18598var _12=_11.load(); 
    186  
    18799if(!_12){ 
    188  
    189100this._ldObj=_11; 
    190  
    191101JsHttpRequest.PENDING[_11.id]=this; 
    192  
    193102return true; 
    194  
    195 
    196  
     103
    197104if(!_c){ 
    198  
    199105_d[_d.length]="- "+_f.toUpperCase()+": "+this._l(_12); 
    200  
    201 }else{ 
    202  
     106}else{ 
    203107return this._error(_12); 
    204  
    205 
    206  
    207 
    208  
     108
     109
    209110return _f?this._error("no_loader_matched",_d.join("\n")):this._error("no_loaders"); 
    210  
    211 }; 
    212  
     111}; 
    213112t.getAllResponseHeaders=function(){ 
    214  
    215 with(this){ 
    216  
     113with(this){ 
    217114return _ldObj&&_ldObj.getAllResponseHeaders?_ldObj.getAllResponseHeaders():[]; 
    218  
    219 
    220  
    221 }; 
    222  
     115
     116}; 
    223117t.getResponseHeader=function(_13){ 
    224  
    225 with(this){ 
    226  
    227 return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader():[]; 
    228  
    229 
    230  
    231 }; 
    232  
     118with(this){ 
     119return _ldObj&&_ldObj.getResponseHeader?_ldObj.getResponseHeader(_13):null; 
     120
     121}; 
    233122t.setRequestHeader=function(_14,_15){ 
    234  
    235 with(this){ 
    236  
     123with(this){ 
    237124_reqHeaders[_reqHeaders.length]=[_14,_15]; 
    238  
    239 
    240  
    241 }; 
    242  
     125
     126}; 
    243127t._dataReady=function(_16,js){ 
    244  
    245 with(this){ 
    246  
     128with(this){ 
    247129if(caching&&_ldObj){ 
    248  
    249130JsHttpRequest.CACHE[_ldObj.hash]=[_16,js]; 
    250  
    251 
    252  
    253 if(_16!==null||js!==null){ 
    254  
    255 status=4; 
    256  
     131
    257132responseText=responseXML=_16; 
    258  
    259133responseJS=js; 
    260  
    261 }else{ 
    262  
     134if(js!==null){ 
     135status=200; 
     136statusText="OK"; 
     137}else{ 
    263138status=500; 
    264  
    265 responseText=responseXML=responseJS=null; 
    266  
    267 
    268  
     139statusText="Internal Server Error"; 
     140
    269141_changeReadyState(2); 
    270  
    271142_changeReadyState(3); 
    272  
    273143_changeReadyState(4); 
    274  
    275144_cleanup(); 
    276  
    277 
    278  
    279 }; 
    280  
     145
     146}; 
    281147t._l=function(_18){ 
    282  
    283148var i=0,p=0,msg=this._errors[_18[0]]; 
    284  
    285149while((p=msg.indexOf("%",p))>=0){ 
    286  
    287150var a=_18[++i]+""; 
    288  
    289151msg=msg.substring(0,p)+a+msg.substring(p+1,msg.length); 
    290  
    291152p+=1+a.length; 
    292  
    293 
    294  
     153
    295154return msg; 
    296  
    297 }; 
    298  
     155}; 
    299156t._error=function(msg){ 
    300  
    301157msg=this._l(typeof (msg)=="string"?arguments:msg); 
    302  
    303158msg="JsHttpRequest: "+msg; 
    304  
    305159if(!window.Error){ 
    306  
    307160throw msg; 
    308  
    309 }else{ 
    310  
     161}else{ 
    311162if((new Error(1,"test")).description=="test"){ 
    312  
    313163throw new Error(1,msg); 
    314  
    315 }else{ 
    316  
     164}else{ 
    317165throw new Error(msg); 
    318  
    319 
    320  
    321 
    322  
    323 }; 
    324  
     166
     167
     168}; 
    325169t._hash2query=function(_1e,_1f,_20,_21){ 
    326  
    327170if(_1f==null){ 
    328  
    329171_1f=""; 
    330  
    331 
    332  
    333 if(_1e instanceof Object){ 
    334  
     172
     173if((""+typeof (_1e)).toLowerCase()=="object"){ 
    335174var _22=false; 
    336  
     175if(_1e&&_1e.parentNode&&_1e.parentNode.appendChild&&_1e.tagName&&_1e.tagName.toUpperCase()=="FORM"){ 
     176_1e={form:_1e}; 
     177
    337178for(var k in _1e){ 
    338  
    339179var v=_1e[k]; 
    340  
    341180if(v instanceof Function){ 
    342  
    343181continue; 
    344  
    345 
    346  
     182
    347183var _25=_1f?_1f+"["+this.escape(k)+"]":this.escape(k); 
    348  
    349184var _26=v&&v.parentNode&&v.parentNode.appendChild&&v.tagName; 
    350  
    351185if(_26){ 
    352  
    353186var tn=v.tagName.toUpperCase(); 
    354  
    355187if(tn=="FORM"){ 
    356  
    357188_22=true; 
    358  
    359 }else{ 
    360  
     189}else{ 
    361190if(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{ 
     192return this._error("inv_form_el",(v.name||""),v.tagName); 
     193
     194
    371195_21[_21.length]={name:_25,e:v}; 
    372  
    373 }else{ 
    374  
     196}else{ 
    375197if(v instanceof Object){ 
    376  
    377198this._hash2query(v,_25,_20,_21); 
    378  
    379 }else{ 
    380  
     199}else{ 
    381200if(v===null){ 
    382  
    383201continue; 
    384  
    385 
    386  
     202
     203if(v===true){ 
     204v=1; 
     205
     206if(v===false){ 
     207v=""; 
     208
    387209_20[_20.length]=_25+"="+this.escape(""+v); 
    388  
    389 
    390  
    391 
    392  
     210
     211
    393212if(_22&&_21.length>1){ 
    394  
    395213return this._error("must_be_single_el"); 
    396  
    397 
    398  
    399 
    400  
    401 }else{ 
    402  
     214
     215
     216}else{ 
    403217_20[_20.length]=_1e; 
    404  
    405 
    406  
     218
    407219return true; 
    408  
    409 }; 
    410  
     220}; 
    411221t._cleanup=function(){ 
    412  
    413222var _28=this._ldObj; 
    414  
    415223if(!_28){ 
    416  
    417 return; 
    418  
    419 
    420  
     224return; 
     225
    421226JsHttpRequest.PENDING[_28.id]=false; 
    422  
    423227var _29=_28.span; 
    424  
    425228if(!_29){ 
    426  
    427 return; 
    428  
    429 
    430  
     229return; 
     230
    431231_28.span=null; 
    432  
    433232var _2a=function(){ 
    434  
    435233_29.parentNode.removeChild(_29); 
    436  
    437 }; 
    438  
     234}; 
    439235JsHttpRequest.setTimeout(_2a,50); 
    440  
    441 }; 
    442  
     236}; 
    443237t._changeReadyState=function(s,_2c){ 
    444  
    445 with(this){ 
    446  
     238with(this){ 
    447239if(_2c){ 
    448  
    449240status=statusText=responseJS=null; 
    450  
    451241responseText=""; 
    452  
    453 
    454  
     242
    455243readyState=s; 
    456  
    457244if(onreadystatechange){ 
    458  
    459245onreadystatechange(); 
    460  
    461 
    462  
    463 
    464  
    465 }; 
    466  
     246
     247
     248}; 
    467249t.escape=function(s){ 
    468  
    469250return escape(s).replace(new RegExp("\\+","g"),"%2B"); 
    470  
    471 }; 
    472  
    473 
    474  
     251}; 
     252
    475253JsHttpRequest.COUNT=0; 
    476  
    477254JsHttpRequest.MAX_URL_LEN=2000; 
    478  
    479255JsHttpRequest.CACHE={}; 
    480  
    481256JsHttpRequest.PENDING={}; 
    482  
    483257JsHttpRequest.LOADERS={}; 
    484  
    485258JsHttpRequest._dummy=function(){ 
    486  
    487 }; 
    488  
     259}; 
    489260JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout}; 
    490  
    491261JsHttpRequest.setTimeout=function(_2e,dt){ 
    492  
    493262window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s; 
    494  
    495263if(typeof (_2e)=="string"){ 
    496  
    497264id=window.JsHttpRequest_tmp(_2e,dt); 
    498  
    499 }else{ 
    500  
     265}else{ 
    501266var id=null; 
    502  
    503267var _31=function(){ 
    504  
    505268_2e(); 
    506  
    507269delete JsHttpRequest.TIMEOUTS[id]; 
    508  
    509 }; 
    510  
     270}; 
    511271id=window.JsHttpRequest_tmp(_31,dt); 
    512  
    513272JsHttpRequest.TIMEOUTS[id]=_31; 
    514  
    515 
    516  
     273
    517274window.JsHttpRequest_tmp=null; 
    518  
    519275return id; 
    520  
    521 }; 
    522  
     276}; 
    523277JsHttpRequest.clearTimeout=function(id){ 
    524  
    525278window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c; 
    526  
    527279delete JsHttpRequest.TIMEOUTS[id]; 
    528  
    529280var r=window.JsHttpRequest_tmp(id); 
    530  
    531281window.JsHttpRequest_tmp=null; 
    532  
    533282return r; 
    534  
    535 }; 
    536  
     283}; 
    537284JsHttpRequest.query=function(url,_35,_36,_37){ 
    538  
    539285var req=new this(); 
    540  
    541286req.caching=!_37; 
    542  
    543287req.onreadystatechange=function(){ 
    544  
    545288if(req.readyState==4){ 
    546  
    547289_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}; 
     292req.open(null,url,true); 
    567293req.send(_35); 
    568  
    569 }; 
    570  
     294}; 
    571295JsHttpRequest.dataReady=function(d){ 
    572  
    573296var th=this.PENDING[d.id]; 
    574  
    575297delete this.PENDING[d.id]; 
    576  
    577298if(th){ 
    578  
    579299th._dataReady(d.text,d.js); 
    580  
    581 }else{ 
    582  
     300}else{ 
    583301if(th!==false){ 
    584  
    585302throw "dataReady(): unknown pending id: "+d.id; 
    586  
    587 
    588  
    589 
    590  
    591 }; 
    592  
    593 JsHttpRequest.extend=function(_3c,src){ 
    594  
     303
     304
     305}; 
     306JsHttpRequest.extend=function(_3b,src){ 
    595307for(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}; 
     311JsHttpRequest.LOADERS.script={loader:function(req){ 
     312JsHttpRequest.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"}); 
    607313this.load=function(){ 
    608  
     314if(this.queryText){ 
     315this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText; 
     316
     317this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-"+"script"; 
     318this.queryText=""; 
     319if(!this.method){ 
     320this.method="GET"; 
     321
     322if(this.method!=="GET"){ 
     323return ["script_only_get"]; 
     324
    609325if(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  
     326return ["script_no_form"]; 
     327
    699328if(this.url.length>JsHttpRequest.MAX_URL_LEN){ 
    700  
    701329return ["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
     331var th=this,d=document,s=null,b=d.body; 
     332if(!window.opera){ 
     333this.span=s=d.createElement("SCRIPT"); 
     334var _43=function(){ 
     335s.language="JavaScript"; 
     336if(s.setAttribute){ 
     337s.setAttribute("src",th.url); 
     338}else{ 
     339s.src=th.url; 
     340
     341b.insertBefore(s,b.lastChild); 
     342}; 
     343}else{ 
     344this.span=s=d.createElement("SPAN"); 
     345s.style.display="none"; 
     346b.insertBefore(s,b.lastChild); 
     347s.innerHTML="Workaround for IE.<s"+"cript></"+"script>"; 
     348var _43=function(){ 
     349s=s.getElementsByTagName("SCRIPT")[0]; 
     350s.language="JavaScript"; 
     351if(s.setAttribute){ 
     352s.setAttribute("src",th.url); 
     353}else{ 
     354s.src=th.url; 
     355
     356}; 
     357
     358JsHttpRequest.setTimeout(_43,10); 
    787359return 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}; 
    811361}}; 
    812362 
    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