        var downloadMessage=  "<span style='font-family:Arial;color:blue;font-size:.8em'>"
                            + "<img src='/images/shared/loading.gif'>&nbsp;<i>"
                            + "Retrieving information..."
                            + "</i></span>";


//--------------------------------------------
//Do not modify anything below this line
//--------------------------------------------
	var myJsonObject=null;
	var divId=null;
	var COMPLETE=4;
	var OK=200;
	var request=null;
	var XML_CONTENT="text/xml";
	var xml ;
    var xslt ;
	var elementId;
	var stylesheet;
	var resultOutput;
        var glUrl;
        var xmlStringG;

function ajaxResult (text) {
	this.response=text;
}

function getXMLDocuments()
{
	if (document.implementation && document.implementation.createDocument)
	{
		xml = document.implementation.createDocument("", "", null);
		xslt = document.implementation.createDocument("", "", null);
		//xmlDoc.onload = createTable;
	}
	else if (window.ActiveXObject)
	{
		xml = new ActiveXObject("Microsoft.XMLDOM");
		xslt = new ActiveXObject("Microsoft.XMLDOM");
 	}
	else
	{
		alert('Only Mozilla-type or Microsoft browsers may be used to access this information');
		return;
	}
		xml.async = false;
    	xslt.async = false;

}

	function createRequest() {


	/*
	if(window.XMLHttpRequest) {
		try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		}
		catch(e) {
			alert("No soup for you!");
		}
	}
	*/

		try {

		     request = new XMLHttpRequest();
			 
		}catch (trymicrosoft) {
			try {
				request= new ActiveXObject("Msxml2.XMLHTTP");
			}catch (othermicrosoft) {
				try {
					request = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (failed) {
					request=null;
				}
			}
 		}
		return request;
	}
	
	
	/*
	PROCESS AJAX REQUEST AND RETURN STRING AS-IS.  
	CALLS checkState
	 Args include URL to server process, and String name of local
	 function to process the response text.
	 Without the creation of a locally created callBackFunction, this will NOT work.
	 CallBackFunction will have as its input argument the response Text.
	*/
	function getText(url, showStatus, callBackFunction, requestType, args) {
		/*
		TO DO:
		MODIFY TO SHOW STATUS IN STATUS BAR
		*/
		if (showStatus) {
		  // var outputDiv = document.getElementById(elementId);
//		   outputDiv.innerHTML = downloadMessage;
			status="Processing...";
		}
		//*/
		var request=createRequest();
		
		if (request == null) {
			alert("Error creating request object");
			return;
		}
	
               if (requestType == "POST") {	
		request.open('POST', url , true);
		request.onreadystatechange= function () {checkState(callBackFunction );}
		request.send(args);
              } else {
		request.open('GET', url , true);
		request.onreadystatechange= function () {checkState(callBackFunction );}
		request.send(null);
              }
    }

	

	/*
	PROCESS AJAX REQUEST AND RETURN STRING AS-IS.  
	CALLED BY getText
	*/
function removeNL(s) {
  /*
  ** Remove NewLine, CarriageReturn and Tab characters from a String
  **   s  string to be processed
  ** returns new string
  */
  r = "";
  for (i=0; i < s.length; i++) {
    if (s.charAt(i) != '\n' &&
        s.charAt(i) != '\r' &&
        s.charAt(i) != '\t') {
      r += s.charAt(i);
      }
    }
  return r;
  }

	function checkState(callBackFunction) {
  		if (request.readyState == COMPLETE){
			if (request.status == eval(OK)) {
				    status="";
				    var output = trim(request.responseText.replace("\'", "\\\'"));
				   var cmd=callBackFunction + "(\'" + removeNL(output) +  "\')";
		            eval(cmd);
			}
		}
	
	}
	
		/*
	PROCESS AJAX REQUEST AND RETURN STRING AS-IS.  
	CALLED BY getText
	*/

	function getXML(url, style, id, showStatus) {
		elementId=id;
		if (showStatus) {
		   var outputDiv = document.getElementById(elementId);
		   outputDiv.innerHTML = downloadMessage;
		}
		stylesheet=style;
		getXMLDocuments();
		var request=createRequest();
		
		if (request == null) {
			alert("Error creating request object");
			return;
		}
		
		request.open('GET', url , true);
		request.onreadystatechange=checkStateXML;
		request.send(null);
    }

/*
	RETRIEVE XML AND TRANSFORM WITH STYLESHEET
	called from getXML
*/

	function checkStateXML() {

  		if (request.readyState == COMPLETE){
			if (request.status == eval(OK)) {

				    var xmlString = trim(request.responseText) ;

					xslt.load(stylesheet);
					var output;
					if (window.ActiveXObject) {
				        xml.loadXML( trim(xmlString));
						output = xml.transformNode(xslt);
					}else {
						var parser = new DOMParser()
        			    doc = parser.parseFromString( trim(xmlString), XML_CONTENT);




					if(Sarissa.getParseErrorText(doc) == Sarissa.PARSED_OK){  


					    var processor = new XSLTProcessor();
					    processor.importStylesheet(xslt);
					    var XmlDom = processor.transformToDocument(doc);
					    var serializer = new XMLSerializer(); 
					    try{
					      output = serializer.serializeToString(XmlDom.documentElement);
					     }catch (e) {
						output="Information not currently listed... " 
					     }
					}else {
						output="Data error.  Please contact OIT for resolution";
					}
				    }
					var outputDiv = document.getElementById(elementId);
					outputDiv.innerHTML = output ;

			}
		}
	
	}
	/*
	PROCESS AJAX (XML) REQUEST AND CONVERT RETURNING DATA TO JSON.  
	*/
	function getJson(url, showStatus,id, requestType, args) {
		elementId=id;
		divId=id;
		if (showStatus) {
		   //var outputDiv = document.getElementById(elementId);
		   document.getElementById(id).innerHTML = downloadMessage;
		}
		
	

		var request=createRequest();

		if (request == null) {
			alert("Error creating request object");
			return;
		}
               if (requestType == "POST") {	
		request.open('POST', url , true);
		request.onreadystatechange=checkStateXML2JSON;
		request.send(args);
              } else {
		request.open('GET', url , true);
		request.onreadystatechange= checkStateXML2JSON;
		request.send(null);
              }

    }
	/*
	 RETRIEVE XML AND CONVERT TO JSON ... JAVASCRIPT (ARRAY) OBJECT NOTATION.
	 called from getJson
	*/
	function checkStateXML2JSON() {

  		if (request.readyState == COMPLETE){
			if (request.status == eval(OK)) {

				    var xmlString = trim(request.responseText) ;
                                    xmlStringG=xmlString;

					var output;
					if (window.ActiveXObject) {
					    xml=new ActiveXObject("Microsoft.XMLDOM");
						xml.loadXML( trim(trim(request.responseText)));
 						this.myJsonObject=MX.XML.ToJSON(xml);
						showObject(this.myJsonObject,divId);

					}else {
						var parser = new DOMParser()
        			    doc = parser.parseFromString( trim(xmlString), XML_CONTENT);
                                    xmlStringG=trim(xmlString);
						if(Sarissa.getParseErrorText(doc) == Sarissa.PARSED_OK){  
						     //convert doc to string!
							//var json = jQuery.toJSON(MX.XML.ToJSON(doc));
							//jQuery('#message').html(json); 
							this.myJsonObject=MX.XML.ToJSON(doc);
							showObject(this.myJsonObject, divId);
						}
				    }
			}
		}
	}
/*
MUST CREATE A function called 'transform' prefixed by the DIV id.
Arguments are the json object, and the DIV id.
Example:  
inthenews.transform(obj, "inthenews"); // evaluated
Without the creation of this function in a separate js file,
the json object will NOT display.
*/
function showObject(obj, divId) {
		cmd=  "transform(obj,'" + divId + "', xmlStringG);"
		eval(cmd);

}
	
	function writeStateXML() {
  		if (request.readyState == COMPLETE){
			if (request.status == eval(OK)) {
				    var xmlString = request.responseText;
					document.write (xmlString);
			}
		}
	
	}
	
	/*  
	trim string of whitespace on left and right
	*/

	function trim(stringToTrim){ 
		return stringToTrim.replace(/^\s+|\s+$/g,"");
    }
