function csAjax(){
	this.ajax;
	this.param;
	this.method;
	this.url;
	this.responseText;
	this.func_name;
	this.cfg_lang;	
		
	this.create = function(){ /* --- Create Ajax Object --- */
			 this.param = new Array();
			 try{ this.ajax = new XMLHttpRequest(); }
			 catch (e){ 
			 var aObj = ['MICROSOFT.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'MICROSOFT.XMLHTTP.1.0','MICROSOFT.XMLHTTP.1','MSXML2.DOMDocument.4.0'];
					for (var i = 0; i < aObj.length; i++) {
						  try{  this.ajax = new ActiveXObject(aObj[i]); break;
						  }catch (e) { }
					} // end for
			  }
	} 
	
	this.addParam = function(name, value){
		this.param.push(name+"="+encodeURI(value));
	}
	
	this.ajax_return = function(){
		return (this.ajax);
	}
	
	this.creParams = function(){
		var xstr = "";
		if(this.param.length > 0){
			for(i=0; i<this.param.length; i++){ xstr += this.param[i]+"&"; }
			xstr = xstr.substr(0, xstr.length-1);
		} return xstr;
	}



	this.send = function(){
		var tempurl = this.url;
		var querystring = this.creParams();
		if(this.method.toLowerCase() == "get"){ tempurl += "?"+querystring; }
		this.ajax.onreadystatechange = this.stateChange; 
		this.ajax.open(this.method, tempurl, true);
		if(this.method.toLowerCase()=="post"){
			var cHeader = (this.cfg_lang=="") ? 'UTF-8' : ''+this.cfg_lang+'' ;
			this.ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset='+cHeader);
			this.ajax.setRequestHeader("Content-length", querystring.length);
			this.ajax.setRequestHeader("Connection", "close");
			this.ajax.send(querystring);
		}else{
			this.ajax.send(null);
		}
	}


	var self = this;
	this.stateChange = function(){
			if(self.ajax!=null){
				if (self.ajax.readyState == 4){
				   if (self.ajax.status == 200){
						self.responseText = self.ajax.responseText;
						if(self.func_name != ""){ eval(self.func_name); }
				   }else{
					   
						switch(self.ajax.status){
							case 12029:
							case 12030:
							case 12031:
							case 12152:
							case 12159:
								self.responseText =  '';
						}					   
					  //alert('There was a problem with the request.(Code: ' + self.ajax.status + ')');
				   }
				}
			}else{
				window.alert("! ไม่สามารถสร้าง Object Ajax ได้.");
			}
	}
	
	
} // end class Ajax

function nodeCleaner(n) {
	if(!n.data.replace(/\s/g,'')) n.parentNode.removeChild(n);
}

function cleanXML(docElement) {
	try{
		var node = docElement.getElementsByTagName('*');
		for(i = 0; i < node.length; i++) {
			a = node[i].previousSibling;
			if(a && a.nodeType == 3) nodeCleaner(a);
			b = node[i].nextSibling;
			if(b && b.nodeType == 3) nodeCleaner(b);
		}
	}catch(e){ 
		 var msg = (e.message) ? e.message : e.description;
		 alert("Format XML ไม่ถูกต้อง...  "+msg);
		 return false;
	}
	return docElement;
}