/*====================
//  Ajax 2.0
=====================*/
function Ajax() {
   this.QueryArray = new Object();
   this.xmlhttp = this.CreateRequest();
   this.UserHandler = null;
   this.RequestType = null;
   this.ReturnedData = null;
}
Ajax.prototype.CreateRequest = function() {
   var rHttp = false;
   try {
       rHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
       try {
              rHttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (E) {
              rHttp = false;
         }
    }
   if (!rHttp && typeof XMLHttpRequest != 'undefined') {
         rHttp = new XMLHttpRequest();
   }
   return rHttp;
}
Ajax.prototype.SetData = function( k, v ) {
   this.QueryArray[k] = escape(v);
}
Ajax.prototype.GetData = function() {
   var rVal = "";
   for( var p in this.QueryArray )  {
       rVal += p + "=" + this.QueryArray[p] + "&";
   }
   return rVal.substr(0, (rVal.length-1));
}
Ajax.prototype.SendRequest = function( ) {
	var type = "POST";
	for (var i = 0; i < arguments.length; i++) {
		 type = arguments[i];
	}
	this.RequestType = type;
	try {
	 if(this.UserHandler != null && this.UserHandler.onCreate) {
			this.UserHandler.onCreate();
	 }
	 	
	 switch( this.RequestType ) {
		 case "GET":
			 this.xmlhttp.open("GET", this.RequestURL + "?" + this.GetData(), true);
			 this.xmlhttp.send(null);
		 break;
		 case "POST":
			 this.xmlhttp.open("POST", this.RequestURL, true);
			 this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			 this.xmlhttp.send(this.GetData());                   
			break;
	 }
	 var _this = this;
	 this.xmlhttp.onreadystatechange = function() {
		 if(_this.xmlhttp.readyState == 4){
			 if(_this.xmlhttp.status == 200) {
				 _this.onDataRecieved( _this.xmlhttp.responseText );
			 }
		 }
	 }
	} catch(e) {
		var Timar = window.setTimeout("100", "this.SendRequest('" + this.RequestType + "')");
	}
}
Ajax.prototype.onDataRecieved = function( str ) {
  // this.ReturnedData = str;
   if(this.UserHandler != null && this.UserHandler.onSuccess) {
      this.UserHandler.onSuccess( str );
   }
   this.ClearData();
}
Ajax.prototype.onError = function( str ) {
   if(this.UserHandler != null && this.UserHandler.onError) {
      this.UserHandler.onError( str );
   }
}
Ajax.prototype.Register = function(handler) {
       this.UserHandler = handler;
}
Ajax.prototype.ClearData = function() {
   this.QueryArray = new Object();
}
Ajax.prototype.SetFile = function(f) {
   this.RequestURL = f;
}
