var requests = new Array(); if(typeof(XMLHttpRequest) == 'undefined') var XMLHttpRequest = function() { var request = null; try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch(ee) {} } return request; } function ajax_stop() { for(var i=0; i<requests.length; i++) { if(requests[i] != null) requests[i].abort(); } } function ajax_create_request(context) { for(var i=0; i<requests.length; i++) { if(requests[i].readyState == 4) { requests[i].abort(); requests[i].context = context; return requests[i]; } } var pos = requests.length; requests[pos] = Object(); requests[pos].obj = new XMLHttpRequest(); requests[pos].context = context; return requests[pos]; } function ajax_request(url, data, callback, context) { var request = ajax_create_request(context); var async = typeof(callback) == 'function'; if(async) request.obj.onreadystatechange = function() { if(request.obj.readyState == 4) callback(new ajax_response(requ