******* request.js********** /* XmlHttpRequest Wrapper Version 1.2.2 29 Jul 2005 adamv.com/dev/ */ var Http = { ReadyState: { Uninitialized: 0, Loading: 1, Loaded:2, Interactive:3, Complete: 4 }, Status: { OK: 200, Created: 201, Accepted: 202, NoContent: 204, BadRequest: 400, Forbidden: 403, NotFound: 404, Gone: 410, ServerError: 500 }, Cache: { Get: 1, GetCache: 2, GetNoCache: 3, FromCache: 4 }, Method: {Get: "GET", Post: "POST", Put: "PUT", Delete: "DELETE"}, enabled: false, logging: false, _get: null, // Reference to the XmlHttpRequest object _cache: new Object(), Init: function(){ Http._get = Http._getXmlHttp() Http.enabled = (Http._get != null) Http.logging = (window.Logging != null); }, _getXmlHttp: function(){ /*@cc_on @*//*@if (@_jscript_version >= 5) try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} @end @*/ try { return new XMLHttpRequest();} catch (e) {} return null; }, /* Params: url: The URL to request. Required. cache: Cache control. Defaults to Cache.Get. callback: onreadystatechange function, called when request is completed. Optional. method: HTTP method. Defaults to Method.Get. */ get: function(params, callback_args){ if (!Http.enabled) throw "Http: XmlHttpRequest not available."; var url = params.url; if (!url) throw "Http: A URL must be specified"; var cache = params.cache || Http.Cache.Get; var method = params.method || Http.Method.Get; var callback = params.callback; if ((cache == Http.Cache.FromCache) || (cache == Http.Cache.GetCache)) { var in_cache = Http.from_cache(url, callback, callback_args) if (Http.logging){ Logging.log(["Http: URL in cache: " + in_cache]); } if (in_cache || (cache == Http.Cache.FromCache)) return in_cache; } if (cache == Http.Cache.GetNoCache) { var sep = (-1 < url.indexOf("?")) ? "&" : "?" url = url + sep + "__=" + encodeURIComponent((new Date()).getTime()); } // Only one request at a time, please if ((Http._get.readyState != Http.ReadyState.Uninitialized) && (Http._get.readyState != Http.ReadyState.Complete)){ this._get.abort(); if (Http.logging){ Logging.log(["Http: Aborted request in progress."]); } } Http._get.open(method, url, true); Http._get.onreadystatechange = function() { if (Http._get.readyState != Http.ReadyState.Complete) return; if (Http.logging){ Logging.log(["Http: Returned, status: " + Http._get.status]); } if ((cache == Http.Cache.GetCache) && (Http._get.status == Http.Status.OK)){ Http._cache[url] = Http._get.responseText; } if (callback_args == null) callback_args = new Array(); var cb_params = new Array(); cb_params.push(Http._get); for(var i=0;i