var ajax_response_txt = '';
var ajax_response_xml = '';
var ajax_request = false;
var ajax_action = null;
	
function ajax_available() {
    var available = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			ajax_request = new XMLHttpRequest();
        } catch(e) {
			ajax_request = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	ajax_request = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		ajax_request = false;
        	}
		}
    }
	if(ajax_request) {
		available = true;
	}
	return available;
}
	
function ajax_send(method,url,params) {
	var ajax_request_url = url;
	var post_params = '';
	if (method == 'GET') {ajax_request_url += '?' + params;}
	ajax_request.open(method,ajax_request_url,true);
	ajax_request.onreadystatechange = ajax_process;
	if (method == 'POST') {
		ajax_request.setRequestHeader('content-type','application/x-www-form-urlencoded; charset=utf-8');
		post_params = params;
	}
	ajax_request.send(post_params);
}

function ajax_process() {
	if (ajax_request.readyState == 4) { // only if ajax_request shows "loaded"
		if (ajax_request.status == 200) { // only if "OK"
			ajax_response_txt = ajax_request.responseText;
			ajax_response_xml = ajax_request.responseXML;
			ajax_action();
		} else if (ajax_request.status != 0) { //IE returns 0 on some occasions 
			//alert("There was a problem retrieving the XML data:\n" + ajax_request.statusText + "\nstatus: " + ajax_request.status + "\nreadystate: " + ajax_request.readyState);
		}
	}
}
