//global functions that don't fall into any other category

var debugging = false;

function debug(text, sameLine){
	if (debugging == false)
		return;
	
	//assumes there's a variable called dev which points to an HTML element
	dev.innerHTML += text;
	if (sameLine != true)
		dev.innerHTML += "<br>";
}

function initializeXMLObject() {
	// initialize and return an XMLHttpRequestObject
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
		if (XMLHttpRequestObject.overrideMimeType)
			XMLHttpRequestObject.overrideMimeType("text/xml");  
		return XMLHttpRequestObject;
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		return XMLHttpRequestObject;
	}
}

function getXML(dataSource, data, fnToExecute) { 	 
	// execute an request, get the data, and execute the specified function on the response as XML
	
	var XMLHttpRequestObject = initializeXMLObject();
	
	if(XMLHttpRequestObject) {
	  XMLHttpRequestObject.open("POST", dataSource); 
	  XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  
	  XMLHttpRequestObject.onreadystatechange = function() 
	  { 
		if (XMLHttpRequestObject.readyState == 4 && 
		  XMLHttpRequestObject.status == 200) {
			var responseXML = XMLHttpRequestObject.responseXML;
			fnToExecute(responseXML);
		}
		else if (XMLHttpRequestObject.readyState == 4 && 
		  (XMLHttpRequestObject.status == 404 || XMLHttpRequestObject.status == 500)) {
		  	fnToExecute(-1); // fnToExecute needs to know that something's gone wrong
	  	}
	  }

	  XMLHttpRequestObject.send(data); 
	}
}

function getXMLAsText(dataSource, data, fnToExecute) { 
	// execute an request, get the data, and execute the specified function on the response as text
		
	var XMLHttpRequestObject = initializeXMLObject();
	
	if(XMLHttpRequestObject) {
	  XMLHttpRequestObject.open("POST", dataSource); 
	  XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  
	  XMLHttpRequestObject.onreadystatechange = function() 
	  { 
		if (XMLHttpRequestObject.readyState == 4 && 
		  XMLHttpRequestObject.status == 200) {
			var responseText = XMLHttpRequestObject.responseText;
			fnToExecute(responseText);
		}
		else if (XMLHttpRequestObject.readyState == 4 && 
		  (XMLHttpRequestObject.status == 404 || XMLHttpRequestObject.status == 500)) {
		  	fnToExecute(-1); // fnToExecute needs to know that something's gone wrong
	  	}	
	  }

	  XMLHttpRequestObject.send(data); 
	}
}

