var contentLoader = function(name,url,onload,onerror,method,params)
{
	this.url		 =   url;
	this.onload 	 =  (onload) 	? onload: 	this.defaultLoad;
	this.onerror 	 =  (onerror) 	? onerror: 	this.defaultError;
	this.method 	 =  (method) 	? method: 	"GET";
	this.params 	 =  (params) 	? params: 	"null";
	this.request 	 =   null;
	this.loadedData  =   null;
	this.parent 	 =   null;
	this.returnXML	 =   false;
	
}

contentLoader.prototype=
{
	getData:function()
	{			
		this.request = this.getRequestObject();
		
		if(this.request)
		{ 
			try
			{
				var loader	= this;
				var method 	= this.method;
				var params 	= this.params;

				this.request.onreadystatechange = function()
				{
					loader.onReadyState.call(loader);
				}
		
				this.request.open(method,this.url,true);
	
				if (method=="POST")
				{
					this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  					this.request.setRequestHeader("Content-length", params.length);
  					this.request.setRequestHeader("Connection", "close"); 
				}
				this.request.send(params);
		 
			}
			catch(e)
			{			 
				this.onerror.call(this);
			}
		}
	},
	getRequestObject:function()
	{
		var requestObject = false;
		
		if(window.XMLHttpRequest) 
		{
			requestObject = new XMLHttpRequest();  
			if(requestObject.overrideMimeType)
			{ 
				requestObject.overrideMimeType('text/xml');
			}
		}
		else if(window.ActiveXObject)
		{ 
			try 
			{
				requestObject = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch(e) 
			{
				try
				{
					requestObject = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch(e) 
				{}
			}
		}		
		return requestObject;	
	},
	isSupported:function()
	{
		
		if(this.getRequestObject())
		{
			return true;
		}
		else
		{
			return false;
		}
	
	},
	cancel:function()
	{
		var request = this.request;
		if(!request) return false;
		var ready = (request.readyState)? request.readyState : null;

		if (ready != 4 && ready != 0) 
		{
			request.onreadystatechange = function() { };
			request.abort();
		}
	},
	onReadyState:function()
	{           	
		var request = this.request;
		var xmlDoc = this.xmlDoc;
		var ready = (request.readyState)? request.readyState : null ;
		if(ready==4)
		{
			var httpStatus = (request.status )? request.status : null;
			if(httpStatus==200 || httpStatus ==0)
			{
				if(this.returnXML)
				{
					if(window.ActiveXObject)
					{ // ie datahack
						var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
						xmlDoc.async="false"
						textXML = request.responseText;	
						xmlDoc.loadXML(textXML);
						this.loadedData = xmlDoc;
						xmlDoc = null;
					}
					else
					{ // firefox
						this.loadedData = request.responseXML;								
					}
				}
				else
				{
					this.loadedData = request.responseText;
				}
				this.onload.call(this);
			}
			else
			{
				this.onerror.call(this);
			}
		}
	},
	defaultError:function()
	{
		alert("there was an error loading the data:.."  
		+"\n\n url:" + this.url        
		+"\n\n readyState:" +this.request.readyState
		+"\n status: "+ this.request.status
		+"\n message: \n---------------------------------------\n"+ this.request.responseText
		+"\n---------------------------------------\n headers: "+ this.request.getAllResponseHeaders()
		+"\n\n parent object: "+ ((this.parent)? this.parent.name : "unknown" ));
	},
	defaultLoad:function()
	{
		alert("default onload\n:" + this.request.responseXML);
		this.loadedData = this.request.responseXML;
	}
}

