function Ajax(){
	this.main_target;
	this.loading_target;
	this.loading_content;
	this.url;
	this.parameters;
	this.xmlObject;
	this.rand_length=5; //default
	this.randchars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	this.lang=new Array();
	this.lang['204']='No Content';
	this.lang['205']='Reset Content';
	this.lang['401']='Unauthorized';
	this.lang['403']='Forbidden';
	this.lang['404']='Destination address not found.';
	this.lang['405']='Method Not Allowed';
	this.lang['406']='Not Acceptable';
	this.lang['407']='Proxy Authentication Required';
	this.lang['408']='Request Time-Out';
	this.lang['409']='Conflict';
	this.lang['413']='Request Entity Too Large';
	this.lang['414']='Request-URL Too Large';
	this.lang['415']='Unsupported Media Type';
	this.lang['500']='There is an error on server.';
	this.lang['501']='Not Implemented';
	this.lang['502']='Bad Gateway';
	this.lang['503']='Out of Resources';
	this.lang['504']='Gateway Time-Out';
	this.lang['505']='HTTP Version not supported';
	this.lang['NAN']= 'Failed to create XML object – Your browser doesn\'t support AJAX!';
	
	this.x=function(){
		this.object=false;
		if(window.XMLHttpRequest){//FF, Opera, Safari, Chrome
			this.xmlObject=new XMLHttpRequest();
			if(this.xmlObject.overrideMimeType){
				this.xmlObject.overrideMimeType("text/xml");}
			}
			else if(window.ActiveXObject){
				try{//IE
					this.xmlObject=new ActiveXObject("Msxml2.XMLHTTP");
				}catch(e){
					try{//IE
						this.xmlObject=new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e){}
				}
			}
			if(!this.xmlObject){
				alert(this.lang['NAN']);
				return false;
			}
			else{
				return true;
			}
	}
	
	this.setvals = function(a,b,c,d,e){
		this.main_target=a;
		this.loading_target=b;
		this.loading_content=c;
		this.url=d;
		this.parameters=e;
	}
	
	this.post = function(){
		if(this.x()){
			this.xmlObject.onreadystatechange=this.changestate;
			this.xmlObject.open("POST",this.url+'?r='+this.rand());
			this.xmlObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			this.xmlObject.send('&'+this.parameters);
		}
	}
	
	this.get = function(){
		if(this.x()){
			this.xmlObject.onreadystatechange=this.changestate;
			this.xmlObject.open("GET",this.url+'?&r='+this.rand());
			this.xmlObject.send(null);
		}
	}
	
	this.finish = function(){
		this.getElement(this.loading_target).innerHTML='';
		this.getElement(this.main_target).innerHTML=this.xmlObject.responseText;
	}
	
	this.changestate=(function(ajax){
    	return function(){
			if(ajax.xmlObject.readyState==1){
				try{
					ajax.loading();
				}
				catch(e){}
			}
			if(ajax.xmlObject.readyState==4){
				if(ajax.xmlObject.status==200){
					ajax.finish();
				}
				else if(ajax.xmlObject.status==0||ajax.xmlObject.status==2){
				alert("Failed to connect to the server!\nPlease check your internet connection.");
				ajax.getElement(ajax.loading_target).innerHTML="Connection Error!";
				}
				else if(ajax.xmlObject.status!=200){
					alert('An Error has been occured:\n'+ajax.lang[ajax.xmlObject.status]);
					ajax.getElement(ajax.loading_target).innerHTML=ajax.lang[ajax.xmlObject.status];
				}

			}
    	}
    })(this)
	
	this.loading=function(){
		this.getElement(this.loading_target).innerHTML=this.loading_content;
	}
	
	this.rand=function(){
		var randomstring='';
			for(i=0;i<this.rand_length;i++){
				var rnum=Math.floor(Math.random()* this.randchars.length);
				randomstring+=this.randchars.substring(rnum,rnum+1);
			}
		return randomstring;
	}
	
	this.getElement=function(x){
		if(document.getElementById(x)==null){
			return false;
		}
		else{
			return document.getElementById(x);
		}
	}
	
}
/*--------------- My Functions ---------------*/
function ajax_get(a,b,c){
	ajax = new Ajax;
	ajax.setvals(a,b,'<br /><br /><div align=center><img src=http://www.GL90.ir/images/loading.gif /><br /><br />لطفا چند لحظه صبر نمایید . . .</div>',c,null);
	ajax.get();
}

function send_get(a,b,c,d,e){
	ajax = new Ajax;
	d=d+'?val='+ajax.getElement(e).value;
	ajax.setvals(a,b,c,d,null);
	ajax.get();
}

function send_post(a,b,c){
	ajax = new Ajax;
	ajax.setvals(a,a,'<br /><br /><div align=center><img src=http://www.GL90.ir/images/loading.gif /><br /><br />لطفا چند لحظه صبر نمایید . . .</div>',b,c);
	ajax.post();
}

function loadAll(){
	ajax_get('sec_a','sec_a','<img src=\'a-loading.gif\'>','a.htm');
	ajax_get('sec_b','sec_b','<img src=\'b-loading.gif\'>','b.htm');
	ajax_get('sec_c','sec_c','<img src=\'c-loading.gif\'>','c.htm');
}		