function destroyRequest(r) {
if(r == null) return;
- r.xmlhttp.onreadystatechange = function(){};
- r.xmlhttp = null;
+
+ if( r.xmlhttp ) {
+ /* this has to come before abort() or IE will puke on you */
+ r.xmlhttp.onreadystatechange = function(){};
+ r.abort();
+ r.xmlhttp = null;
+ }
+
r.callback = null;
r.userdata = null;
_allrequests[r.id] = null;
if( this.buildXMLRequest() == null ) alert("Browser is not supported!");
}
+RemoteRequest.prototype.abort = function() {
+ if( this.xmlhttp ) this.xmlhttp.abort();
+}
+
/* constructs our XMLHTTPRequest object */
RemoteRequest.prototype.buildXMLRequest = function() {
for( var x in args ) {
var v = args[x];
- if(x == "page" || v == null || v == undefined ) continue;
+ if(x == "page" || v == null || v == undefined || v+'' == 'NaN' ) continue;
if(x == PARAM_OFFSET && v == 0) continue;
if(x == PARAM_LOCATION && v == 1) continue;
if(x == PARAM_DEPTH && v == 0) continue;
function _appendParam( fieldVar, fieldName, overrideArgs, getFunc, string ) {
var ret = "";
- if( fieldVar != null && overrideArgs[fieldName] == null )
+ if( fieldVar != null && (fieldVar +'' != 'NaN') && overrideArgs[fieldName] == null )
ret = "&" + fieldName + "=" + encodeURIComponent(getFunc());
return ret;
}
/* returns a fleshed G.user on success, false on failure */
function doLogin() {
+ cleanRemoteRequests(); /* cancel whatever is out there */
+
var uname = G.ui.login.username.value;
var passwd = G.ui.login.password.value;
function doLogout(noredirect) {
+ /* cancel everything else */
+ cleanRemoteRequests();
+
/* be nice and delete the session from the server */
if(G.user && G.user.session) {
var req = new Request(LOGIN_DELETE, G.user.session);