/* AJAX class version 1.6.
Joshua A. S. Allen, 2009.*/

function AJAX(page,q,meth,cb,asyn,mimeType)
{page=	arguments.length>=1?page:'';
	q=	arguments.length>=2?q:'';
	meth=	arguments.length>=3?meth:'GET';
	cb=	arguments.length>=4?cb:0;
	asyn=	arguments.length>=5?asyn:true;
	mimeType=arguments.length>=6?mimeType:'text/xml';
	this.ver=1.6;
	this.type='undefined';
	this.readyState=0;
	this.onreadystatechange=cb;
	this.requestPage=page;
	this.method=meth.toUpperCase();
	this.asyn=asyn;
	this.headers=new Array();
	this.get=(this.method=='GET')?q:'';
	this.post=(this.method=='POST')?q:'';
	this.mimeType=mimeType;
	this.makeRequestObj=function()
	{var m=['MSXML2.XMLHttp','Microsoft.XMLHttp','MSXML2.XMLHttp.5.0',
	'MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0'];
	var k;
	var o;
	for(k=0;k<m.length;k++){
	try{
	o=new ActiveXObject(m[k]);
	this.type=m[k];
	return(o);}
	catch(oError){;}
	if(o){
	this.type=m[k];
	return(o);}}
	if(o){return(o);}
	if(typeof XMLHttpRequest!='undefined'){
	var r=new XMLHttpRequest();
	this.type='XMLHttpRequest';
	return(r);}
	return(0);}
	this.requestObj=this.makeRequestObj();
	this.setRequestHeader=function(name,value)
	{this.headers[name]=value;}
	this.clearRequestHeaders=function()
	{this.headers.length=0;}
	this.unsetRequestHeader=function(n)
	{this.headers[n]=null;}
	this.getRequestUrl=function()
	{return(this.requestPage+(this.method.toUpperCase()=='GET'?(this.get?'?'+this.get:''):''));}
	function stateChanged()
	{var f=stateChanged.AJ.onreadystatechange;
	stateChanged.AJ.readyState=stateChanged.AJ.getReadyState();
	if(typeof f=='function'){f(stateChanged.AJ,stateChanged.AJ.requestObj);}}
	stateChanged.AJ=this;
	this.sendRequest=function()
	{if(!this.requestObj){return(0);}
	this.requestObj=a=this.makeRequestObj();
	this.requestObj.overrideMimeType?this.requestObj.overrideMimeType(this.mimeType):0;
	this.requestObj.onreadystatechange=stateChanged;
	this.requestObj.open(this.method,this.getRequestUrl(),this.asyn);
	for(var k in this.headers){
	if(!(this.headers[k]==null)){
	this.requestObj.setRequestHeader(k,this.headers[k]);}}
	this.requestObj.send(this.method.toUpperCase()=='POST'?this.post:null);
	this.readyState=this.requestObj.readyState;}
	this.setMimeType=function(t)
	{this.mimeType=t;}
	this.getStatus=function()
	{return(this.requestObj.status);}
	this.getStatusText=function()
	{return(this.requestObj.statusText);}
	this.getReadyState=function()
	{return(this.requestObj.readyState);}
	this.getResponseHeader=function(n)
	{return(this.requestObj.getResponseHeader(n));}
	this.getResponseHeaders=function()
	{return(this.requestObj.getAllResponseHeaders());}
	this.getAllResponseHeaders=function()
	{return(this.requestObj.getAllResponseHeaders());}
	this.abort=function()
	{return(this.requestObj.abort());}
	this.getText=function()
	{return(this.requestObj.responseText);}
	this.getXML=function()
	{return(this.requestObj.responseXML);}
	this.AJAXSupported=function()
	{return(this.requestObj?1:0);}}

