// AJAX for Bravo's

// CREATES AJAX CONNECTION
// VOID()
function AJAX_initConn() {
	
	// Open IE connection
	if (navigator.appName == 'Microsoft Internet Explorer')
		AJAXHTTPObj = new ActiveXObject("Microsoft.XMLHttp");
	
	// Open connection for any other browser
	else
		AJAXHTTPObj = new XMLHttpRequest;
	
	// Return object
	return AJAXHTTPObj;
}

AJAX_initConn();


// SENDS A GET REQUEST
// (STRING url, BOOL use GET/POST [0 = POST, 1 = GET], OBJ ajax http object [leave blank to use default])
function AJAX_sendRequest(UseGET, url, EvalCodeFromResponse, EvalCodeAfterOpen, GETVarStrForPostSubmit, Alt_AJAXHTTPObj) {
	
	// Which HTTP obj to use?
	UseAJAXHTTPObj = (Alt_AJAXHTTPObj)?Alt_AJAXHTTPObj:AJAXHTTPObj;

	// Generate URL
	if (url.indexOf('?') == 0)
		url = getScriptName() + url;
	
	// Make sure AJAX conn. obj is set
	if (typeof UseAJAXHTTPObj != "undefined") {
		
		// Sending POST request - split the URL
		if (!UseGET) {
			url_array = url.split('?');
			url       = url_array[0] + ((GETVarStrForPostSubmit)?'?' + GETVarStrForPostSubmit:'');
			QueryStr  = url_array[1];
		}
		else
			QueryStr = null;
		
		// Open GET connection and send NULL to start server-side processing...
		UseAJAXHTTPObj.open((UseGET)?'GET':'POST', url, true);
		
		if (EvalCodeAfterOpen)
			eval(EvalCodeAfterOpen);
		
		if (!UseGET)
			AJAXHTTPObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
		UseAJAXHTTPObj.send(QueryStr);
		EvalCodeFromResponse = (EvalCodeFromResponse != null)?EvalCodeFromResponse:'void(0);';
		
		// IE seems to be ready too soon when cache is set to anything other than "check every time"
		if (UseAJAXHTTPObj.readyState == 4) {
			response = UseAJAXHTTPObj.responseText;
			eval(EvalCodeFromResponse);
			return UseAJAXHTTPObj.responseText;
		}
		
		// On state change, check for ready state and return response text (if any)
		UseAJAXHTTPObj.onreadystatechange = function() {
			if (UseAJAXHTTPObj.readyState == 4) {
				response = UseAJAXHTTPObj.responseText;
				eval(EvalCodeFromResponse);
				return UseAJAXHTTPObj.responseText;
			}	
		}
	}
}
