// JavaScript Document
//		*********** [ Server Class ] *************		\\
var Server={
	xmlHttp:createXmlHttpRequestObject(),
	address:'',
	sessionId:'',
	passcode:'',
	
	indEmptySentRequest:-1,
	sentRequests:new Array(),
	waitingRequests:new Array(),
		
	//-------------------------------------\\
	handleRequest:function(objRequest){
		if(!objRequest){
			alert('Server Object Error:Can not send request with out requist object');
			return false;
		}
		this.waitingRequests.push(objRequest);
		this.sendRequest();
	},
	sendRequest:function(){
		if ((this.xmlHttp.readyState == 4 || this.xmlHttp.readyState == 0) && this.waitingRequests.length > 0)	{
			oReq=this.waitingRequests.shift();
			oReq.ordinal= (this.indEmptySentRequest==-1) ? this.sentRequests.length:this.indEmptySentRequest;
			//alert(oReq.method+','+oReq.requestString());
			this.xmlHttp.open(oReq.method,oReq.requestString(),true);
			this.xmlHttp.onreadystatechange=this.handleResponse;
			this.sentRequests[oReq.ordinal]=oReq;
			this.xmlHttp.send(null);
			if(document.Loader){document.Loader.html.style.zIndex=zIndex;document.Loader.show();}
			
		}
	},
	execute:function(strCommand){
		if(!Server[strCommand]){
			alert('Server Error: unknowon command,('+strCommand+')');
			return false;
		}
		alert('Sercer is executing '+strCommand);
		Server[strCommand]();
	},
	handleResponse:handleResponse
};
function handleResponse(){
	if(Server.xmlHttp.readyState == 4 && document.Loader)document.Loader.hide();
	if (Server.xmlHttp.readyState == 4 && Server.xmlHttp.status == 200){
		eval(Server.xmlHttp.responseText);
		Server.indEmptySentRequest=Response.ordinal;
		if(Response.sessionId)Server.session=Response.sessionId;
		if(Response.passcode)Server.passcode=Response.passcode;
		if(Response.error){	Server.sentRequests[Response.ordinal].negativeAction(Data);}
		else{						Server.sentRequests[Response.ordinal].positiveAction(Data);}
		if(Server.waitingRequests.length>0)Server.sendRequest();
			
		
	
	}
}
	
//					####################			  		\\

function createXmlHttpRequestObject(){
	var xmlHttp;
	try{xmlHttp = new XMLHttpRequest();}
   catch(e){
      var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
      "MSXML2.XMLHTTP.5.0",
      "MSXML2.XMLHTTP.4.0",
      "MSXML2.XMLHTTP.3.0",
      "MSXML2.XMLHTTP",
      "Microsoft.XMLHTTP");
      for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++){
         try{ xmlHttp = new ActiveXObject(XmlHttpVersions[i]);}
         catch (e) {} // ignore potential error
      }
   }
   if (!xmlHttp)
      displayError("Error creating the XMLHttpRequest object.");
   else
      return xmlHttp;
}
