function MyAjax(url,data,success,fail,loading, assyn)
{
	if(!assyn)
	{
		assyn = true
	}
	if(success)
	{
		this.success = success;
	}else
	{
		this.success = function(){};
	}
	if(fail)
	{
		this.fail = fail;
	}else
	{
		this.fail = function(){};
	}
	if(loading)
	{
		this.loading = loading;
	}else
	{
		this.loading = function(){};
	}
	
	this.data = data;
	this.ajaxObject = this.getAjaxObject();
	if(this.ajaxObject == null)
	{
		this.fail();
		return;
	}
	this.ajaxObject.open("POST",url,assyn);
	this.ajaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 	this.ajaxObject.setRequestHeader("Content-length", this.data.length);
 	this.ajaxObject.setRequestHeader("Connection", "close");
		
	this.doneAjax();
	this.ajaxObject.onreadystatechange = ajaxTrampoline(this);
	this.ajaxObject.send(this.data);
}
MyAjax.prototype.getResponseText = function()
{
	if(this.ajaxObject.responseText)
	{
		return this.ajaxObject.responseText;
	}else
	{
		return "";
	}
}
MyAjax.prototype.doneAjax = function()
{
	if(this.ajaxObject.readyState == 4)
	{
		if(this.ajaxObject.status == 200)
		{
			this.success();
		}else
		{
			this.fail();
		}
	}else
	{
		this.loading();
	}

}

MyAjax.prototype.cancel = function()
{
	this.ajaxObject.abort();
}
function ajaxTrampoline(ajaxObject)
{
  return function () { ajaxObject.doneAjax(); };
}

MyAjax.prototype.getAjaxObject = function()
{
	var ajax = null;
	try { 
		ajax = new XMLHttpRequest(); 
	}catch(e) { 
		ajax = null; 
	}
  
 	try { 
		if(!ajax){
		 ajax = new ActiveXObject("Msxml2.XMLHTTP");
		}
	 }catch(e) { 
		ajax = null; 
	}
  	
	try 
	{ 
		if(!ajax){
			 ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
	}catch(e) { 
		ajax = null; 
	}
	return ajax;
}