// JavaScript Document

function submitAJAXRequest(mode, action, query, callback){
	
	//mode must equal "POST" or "GET"
	if(mode != 'POST' && mode != 'GET'){
		alert("ERROR: Invalid access mode. Must be \"POST\" or \"GET\".");
	}else{		
		var req = newXMLHttpRequest();
	
		var callbackHandler = getReadyStateHandler(req, callback);
		
		req.onreadystatechange = callbackHandler;
		
		req.open(mode, action, true);
		
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		req.send(query);
	}
}


function newXMLHttpRequest() {
	var xmlreq = false;
	if (window.XMLHttpRequest) {
		xmlreq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
    		// Try ActiveX
		try { 
			xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) { 
			// first method failed 
			try {
				xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				 // both methods failed 
			} 
		}
 	}
   	return xmlreq;
} 

function getReadyStateHandler(req, responseXmlHandler) {
	return function () {
	if (req.readyState == 4) {
		if (req.status == 200) {
        		responseXmlHandler(req.responseXML);
		} else {
			alert("ERROR: "+ req.status);
      		}
    	}
 	}
}
