// Opera support /* if (window.opera && navigator.javaEnabled ()) { // && !window.XMLHttpRequest) { window.XMLHttpRequest = function () { this.readyState = 0; // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete this.status = 0; // HTTP status codes this.statusText = ''; this._headers = []; this._aborted = false; this._async = true; this.abort = function() { this._aborted = true; }; this.getAllResponseHeaders = function() { return this.getAllResponseHeader ('*'); }; this.getAllResponseHeader = function(header) { var ret = ''; for (var i = 0; i < this._headers.length; i++) { if (header == '*' || this._headers[i].h == header) { ret += this._headers[i].h + ': ' + this._headers[i].v + '\n'; } } return ret; }; this.setRequestHeader = function (header, value) { this._headers[this._headers.length] = {h:header, v:value}; }; this.open = function (method, url, async, user, password) { this.method = method; this.url = url; this._async = true; this._aborted = false; if (arguments.length >= 3) { this._async = async; } if (arguments.length > 3) { // user/password support requires a custom Authenticator class opera.postError ('XMLHttpRequest.open () - user/password not supported'); } this._headers = []; this.readyState = 1; if (this.onreadystatechange) { this.onreadystatechange(); } }; this.send = function (data) { // if (!navigator.javaEnabled ()) { // alert ('XMLHttpRequest.send () - Java must be installed and enabled.'); // return; // } if (this._async) { setTimeout (this._sendasync, 0, this, data); // this is not really asynchronous and won't execute until the current // execution context ends } else { this._sendsync(data); } } this._sendasync = function (req, data) { if (!req._aborted) { req._sendsync(data); } }; this._sendsync = function (data) { this.readyState = 2; if (this.onreadystatechange) { this.onreadystatechange(); } // open connection var url = new java.net.URL (new java.net.URL(window.location.href), this.url); var conn = url.openConnection (); for (var i = 0; i < this._headers.length; i++) { conn.setRequestProperty (this._headers[i].h, this._headers[i].v); } this._headers = []; if (this.method == 'POST') { // POST data conn.setDoOutput(true); var wr = new java.io.OutputStreamWriter(conn.getOutputStream()); wr.write (data); wr.flush (); wr.close (); } // read response headers // NOTE: the getHeaderField() methods always return nulls (!) var gotContentEncoding = "windows-1251"; var gotContentLength = false; var gotContentType = false; var gotDate = false; var gotExpiration = false; var gotLastModified = false; for (var i = 0; ; i++) { var hdrName = conn.getHeaderFieldKey (i); var hdrValue = conn.getHeaderField (i); if (hdrName == null && hdrValue == null) { break; } if (hdrName != null) { this._headers[this._headers.length] = {h:hdrName, v:hdrValue}; switch (hdrName.toLowerCase ()) { case 'content-encoding': gotContentEncoding = true; break; case 'content-length' : gotContentLength = true; break; case 'content-type' : gotContentType = true; break; case 'date' : gotDate = true; break; case 'expires' : gotExpiration = true; break; case 'last-modified' : gotLastModified = true; break; } } } // try to fill in any missing header information var val; val = conn.getContentEncoding (); if (val != null && !gotContentEncoding) this._headers[this._headers.length] = {h:'Content-encoding', v:val}; val = conn.getContentLength (); if (val != -1 && !gotContentLength) this._headers[this._headers.length] = {h:'Content-length', v:val}; val = conn.getContentType (); if (val != null && !gotContentType) this._headers[this._headers.length] = {h:'Content-type', v:val}; val = conn.getDate (); if (val != 0 && !gotDate) this._headers[this._headers.length] = {h:'Date', v:(new Date (val)).toUTCString ()}; val = conn.getExpiration (); if (val != 0 && !gotExpiration) this._headers[this._headers.length] = {h:'Expires', v:(new Date (val)).toUTCString ()}; val = conn.getLastModified (); if (val != 0 && !gotLastModified) this._headers[this._headers.length] = {h:'Last-modified', v:(new Date (val)).toUTCString ()}; // read response data var reqdata = ''; var stream = conn.getInputStream (); if (stream) { var reader = new java.io.BufferedReader (new java.io.InputStreamReader (stream)); var line; while ((line = reader.readLine ()) != null) { if (this.readyState == 2) { this.readyState = 3; if (this.onreadystatechange) { this.onreadystatechange(); } } reqdata += line + '\n'; } reader.close (); this.status = 200; this.statusText = 'OK'; this.responseText = reqdata; this.readyState = 4; if (this.onreadystatechange) { this.onreadystatechange (); } if (this.onload) { this.onload (); } } else { // error this.status = 404; this.statusText = 'Not Found'; this.responseText = ''; this.readyState = 4; if (this.onreadystatechange) { this.onreadystatechange (); } if (this.onerror) { this.onerror (); } } }; }; }*/ function u_enc (s) { s = s.replace (/%/g, '%25'); s = s.replace (/\+/g, '%2B'); s = s.replace (/#/g, '%23'); s = s.replace (/&/g, '%26'); s = s.replace (/\?/g, '%3F'); s = s.replace (/=/g, '%3D'); s = s.replace (/ /g, '%20'); return s; } // POST form (if any), url (for POST just script name), process request function, rule codes // 1 - strip code, 2 - eval at once, 4 - post request function ajax_request (frm, url, func, ccode) { var req; if (window.XMLHttpRequest) { // Mozilla+ req = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} } } if (!req) { // failed to create request return false; } var rpost = 4 & ccode; var aurl = ''; if (req.overrideMimeType) req.overrideMimeType ('text/xml'); adonp = (new Date()).getTime()+'='+Math.random(); if (frm) { // build request content from submitted form var fcnt = new Array (); fcnt.push (adonp); for (i = 0; i < frm.elements.length; i++) { if (frm.elements[i].name != '') { var e_v = String (frm.elements[i].value); fcnt.push (frm.elements[i].name + '=' + u_enc (e_v)); } } aurl = fcnt.join ('&'); } else { url += '&'+adonp; } if (!rpost && aurl) url += '?' + aurl; try { req.setRequestHeader ('Content-Type', rpost ? 'application/x-www-form-urlencoded' : 'text/html; charset=windows-1251;'); req.setRequestHeader ('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'); } catch (e) {} req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) { var rstr = String (req.responseText); if (1 & ccode) { // process as js code rstr = rstr.substring (rstr.indexOf ('')); rstr = rstr.replace (/^\/\//, ''); // kill commenting } if (2 & ccode) { // try to eval at once try { eval (rstr); } catch (e) {} } else if (func) { func (rstr); // hihi :) } } else { // http error } } }; req.open (rpost ? 'POST' : 'GET', url, true); if (window.ActiveXObject) { if (rpost) req.send (aurl); else req.send (); } else req.send (rpost ? aurl : null); }