// JavaScript Document

var currentXMLReqURL='';

function RequestProcessor()
{
  this.httpRequest = false;
  this.async=true;
  this.httpType='POST';
  this.setAsync=setAsync;
  this.setHttpType=setHttpType;
  this.responseEventListener=new Array();
  this.defaultResponseHandler=new HtmlRequestHandler(null);
  this.addResponseEventListener=addResponseEventListener;
  this.createXMLHttpRequest=createXMLHttpRequest;
  this.sendRequest=sendRequest;
  this.setResponseHandler=setResponseHandler;
  this.readResponse=readResponse;
  return this;
}

function setAsync(aBoolean)
{
  this.async=aBoolean;
}

function setHttpType(aType)
{
  this.httpType=aType;
}

function addResponseEventListener(aListener)
{  
  var thePos = this.responseEventListener.length;
  this.responseEventListener[thePos] = aListener;
}

function createXMLHttpRequest() {
	// Initializations
	var theNewRequest = null;
	
	// create XMLHttpRequest-Object
	try
	{
	  
		theNewRequest = new XMLHttpRequest();
		//alert("XMLHttpRequest created...");
		return theNewRequest;
	}
	catch(anException)
	{
	 //alert("XMLHttpRequest generation failed trying other...");
  }
  
	try {
		theNewRequest = new ActiveXObject("MSXML2.XMLHTTP");
		return theNewRequest;
	}
	catch (error_1) {
	  //alert("MSXML2.XMLHTTP failed:"+error_1);
	}

	try {
		theNewRequest = new ActiveXObject("Microsoft.XMLHTTP");
		return theNewRequest;
	}
	catch (error_2) {
	  //alert("Microsoft.XMLHTTP:"+error_2);
	}
	
	
	// return
	return (null);
}

/*
Sends a message to the specified url as POST request.
*/
function sendRequest(anURL, aMessage) {

  window.currentXMLReqURL=anURL;
  this.httpRequest = false;
  //alert("Everything startin'!");
  this.httpRequest = this.createXMLHttpRequest();
  //this.httpRequest.setRequestHeader('Content-Type', 'text/html');
  /**
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      //alert(".. startin' Mozilla/firefox' and IE 7!!!");
      this.httpRequest = new XMLHttpRequest();
      if (!window.ActiveXObject)
      {
        //alert("... here is the override session - not appropriate for IE ...");
        this.httpRequest.overrideMimeType('text/xml');
      }
  
  } else if (window.ActiveXObject) { // IE
      this.httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	  //this.httpRequest.overrideMimeType('text/xml');
  }
  */
  var theHttpRequest = this.httpRequest;
  var theRequestor = this;
  if (this.httpRequest!=null){
    this.httpRequest.onreadystatechange = function(){theRequestor.readResponse(theHttpRequest)}; 
	//workOnHTTPResponse;
	 try{
      this.httpRequest.open(this.httpType, anURL, this.async);
      this.httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      this.httpRequest.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
      if (this.httpType == 'GET')
      {
        this.httpRequest.send('');
      }
      else //if (aMessage != null && aMessage.length > 0)
      {
        this.httpRequest.send(aMessage);
      }
    }catch(anException)
    {
      alert("Exception when using URL:"+anURL+" "+anException);
    }
  }
  else
  {
    alert("Your browser does not support XMLHTTP.")
  }
  
}

function setResponseHandler(aResponseHandler)
{
  this.responseHandler=aResponseHandler;
}

function readResponse(aHttpRequest) {
  var theHtmlCode;
  var theContent;
  
  if (this.responseHandler != null)
  {
    this.responseHandler.handleResponse(this, aHttpRequest, this.responseEventListener);
  }
  else 
   this.defaultResponseHandler.handleResponse(this, aHttpRequest, this.responseEventListener);
}
