/**
 * XMLHttpRequest class.
 *
 * @package tewisoft.calendar
 * @author ilutskyi
 */
 
if(!window.XMLHttpRequest) window.XMLHttpRequest = function (){
   var w=window;
   if (w.ActiveXObject) {
       var i,a=["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
       for(i=0;i<a.length;i++){
           try{
               return new ActiveXObject(a[i])
           }catch(e){}
       }
   }
};

/**
 * XMLHttpRequest class.
 *
 * @version	{version}
 * @constructor
 */
function Ajax(url,onCompleteHandler,loadingState,param,xml,method,data){
	var request;
	
	/**
	 * Send the XMLHttpRequest.
	 * @access public
	 */
	this.send = function (){
		if(!method) method = "GET";
		//try{
		   request = new XMLHttpRequest();
		   //url += ((url.indexOf('?') + 1) ? '&' : '?') + "nocache="+new Date().getTime();
		   var txt = "";
		   if(onCompleteHandler) request.onreadystatechange = ReadyState;
		   var async = (onCompleteHandler)?true:false;
		   request.open(method, url, async);
		   //request.setRequestHeader("Content-Type", "text/xml");
		   //request.setRequestHeader("Accept-Language", "nl, ru, en, uk");
		   //request.setRequestHeader("Accept-Charset", "windows-1251");
	   if(method.toUpperCase()=="POST"){
	       request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
	   }else{ 
       	   request.setRequestHeader("Content-Type", "text/xml");
	   }
       request.setRequestHeader("Accept-Language", "nl, ru, en, uk");
       request.setRequestHeader("Accept-Charset", "windows-1251");
       request.send(data);
		   if(!async) return request.responseText;
		 //}catch(e){}
		 //return "";
	   }
	   
		/**
	     * Returns true, false. 
		 * @access public
		 * @type boolean
		 */
	   function ReadyState(){
			if (request.readyState!=4) {
				if(loadingState) loadingState(request);
				return false;
			}else if(request.readyState==4 /*&& !a/* && !request.isCompleted*/){
				try{ txt = (xml)?request.responseXML:request.responseText; }catch(err){};
				if(onCompleteHandler) onCompleteHandler(txt,param);
				return false;
			}
	   
	   }
}
