/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * These codes're created by NVA.                                *
 * Mobile: +84982888725	email: vietanh.vianninhtoquoc@gmail.com  *
 * Copyright © 2K6 ANVICO.,LTD. All right reversed.              *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * They're easy & free to use.                                   *
 * Please "DO NOT delete these lines" when you use them.         *
 * HCMC.VietNam (06.07.06-18:22PM).                              *
 * Hope this useful for you.                                     *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

var ajax=new Object();
ajax.READY_STATE_UNINITIALIZED=0;
ajax.READY_STATE_LOADING=1;
ajax.READY_STATE_LOADED=2;
ajax.READY_STATE_INTERACTIVE=3;
ajax.READY_STATE_COMPLETE=4;
ajax.AjaxLoader=function(url,onload,onwait,onerror){
	this.url=url;
	this.req=null;//XMLHttpRequest Object
	this.onload=onload;//onload event handler
	this.onerror=(onerror) ? onerror : this.defaultError;//onError event handler
	this.onwait=(onwait) ? onwait : this.defaultWait;//onWaiting event handler
	this.loadXMLObject;
}
ajax.AjaxLoader.prototype={
	getDoc:function(url){
		if (window.XMLHttpRequest){//for Firefox, Mozila, Opera ... some browsers that XMLHttpRequest object has been supported
			this.req=new XMLHttpRequest();
		} else if (window.ActiveXObject){//for IE 5.0+, using ActiveXObject (banana)
			this.req=new ActiveXObject("Microsoft.XMLHTTP");
		} else{//for earlier versions of IE (4.0- ...) (super banana)
			this.req=new ActiveXObject("MSXML2.XMLHTTP");
		}
		if (this.req){
			try{
				var loader=this;
				this.req.onreadystatechange=function(){
				loader.onReadyState.call(loader);
			}
			this.req.open('GET',url,true);
			this.req.send(null);
			}catch (err){
				this.onerror.call(this);
			}
		}
	},
	postDoc:function(url,param){
		if (window.XMLHttpRequest){//for Firefox, Mozila, Opera ... some browsers that XMLHttpRequest object has been supported
			this.req=new XMLHttpRequest();
		} else if (window.ActiveXObject){//for IE, using ActiveXObject
			this.req=new ActiveXObject("Microsoft.XMLHTTP");
		}else{//for earlier versions of IE
			this.req=new ActiveXObject("MSXML2.XMLHTTP");
		}
		if (this.req){
			try{
				var loader=this;
				this.req.onreadystatechange=function(){
				loader.onReadyState.call(loader);
			}
			this.req.open('POST',url,true);
			this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			this.req.setRequestHeader("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
			}catch (err){
				this.onerror.call(this);
			}
			
			this.req.send(param);
		}
	},
	onReadyState:function(){//callback function
	var req=this.req;
	var ready=req.readyState;
		if (ready==ajax.READY_STATE_COMPLETE){
			var httpStatus=req.status;
			if (httpStatus==200 || httpStatus==0){//do any thing here
				this.onload.call(this);
				document.getElementById("waitingPan").innerHTML = "";
			}else{//onError
				this.onerror.call(this);
			}
		}
		else{// onWaiting
			this.onwait.call(this);
		}
	},
	defaultError:function(){//default Error event handler
		alert("Error!"
		+"\n\nreadyState:"+this.req.readyState
		+"\nstatus: "+this.req.status);
	},
	
	defaultWait:function(){//default Waiting event handler
		document.getElementById("waitingPan").innerHTML = 
		"<table style=\"BORDER-RIGHT: #003399 2px solid; BORDER-TOP: #003399 2px solid; BORDER-LEFT: #003399 2px solid; BORDER-BOTTOM: #003399 2px solid\" "+
							" height=50 class=\"waitingPan\" >\n"+
							"<tbody>\n"+
									"<tr>\n"+
										"<td align=\"center\" bgcolor=\"#ffffff\" class=\"mainText\">\n"+
											"<img src=\"Loading.gif\">\n"+
											"<br><b>&nbsp;Loading... ["+this.req.readyState*25+"%]&nbsp;</b></td>\n"+
									"</tr>\n"+
								"</tbody>\n"+
							"</table>\n";
	}
}
