/*
+ ----------------------------------------------------------------------------+
|     Plus Framework
|
|     ©Positron 2006-2008
|     http://mixlife.net
|     positron.th@gmail.com
|
|     $Revision: 1.0.1 $
|     $Date: 2008/10/09 $
|     $Author: Positron $
+----------------------------------------------------------------------------+
*/
function _ajax(){
	this.go=function(sFunction,aArgs){
		var xmlhttp,value;this.c=false;
		try{xmlhttp=new XMLHttpRequest();this.c=true;}catch(e){this.b=['Msxml2.XMLHTTP','Microsoft.XMLHTTP','MSXML2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0'];	for(this.d=0;(this.d<this.b.length)&&(!this.c);this.d++){try{xmlhttp=new ActiveXObject(this.b[this.d]);this.c=true;}catch(e){alert('NO AJAX');}}};
		if(!this.c){alert('not support AJAX!');return;};
		this.data='ajaxplus='+sFunction;
		if(aArgs){for(i=0;i<aArgs.length;i++){value=aArgs[i];if(typeof(value)=="object") value=this.objectToXML(value);this.data+="&plusargs[]="+encodeURIComponent(value);}};
		xmlhttp.open("POST",URL,true);
		try{xmlhttp.setRequestHeader("Method","POST "+URL+" HTTP/1.1");xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}catch(e){alert("บราวเซอร์ของคุณไม่รองรับการPost.");return;};
		if(arguments.length<3&&!document.getElementById('ajax_load'))
		{
			document.body.style.cursor = 'wait';
		}
		else if(arguments.length==3)
		{
			var loader= 'loading_'+arguments[2];
			if((targetObj=$(arguments[2])) && !$(loader)){
				var box=document.createElement('div')
				box.id=loader;box.style.left="0px";box.style.top="0px";box.style.paddingLeft="0px";box.style.paddingTop="0px";box.style.width="100%";box.style.height="100%";box.style.background='#000000';box.style.zIndex='1000';box.style.filter='alpha(opacity=50)';box.style.opacity=.5;targetObj.style.position='relative';box.style.position='absolute';
				box.innerHTML='<table width="100%" height="100%" ><tr><td align="right" height="16"><img src="'+HTTP+'images/close.gif" style="cursor:pointer" border="0" alt="close" onclick="ajax.remove(\''+box.id+'\');"></td></tr><tr><td align="center" valign="middle"><img src="'+HTTP+'images/loading.gif" border="0" alt="Loading..."></td></tr></table>';
				targetObj.appendChild(box);
			}			
		}
		else if($('ajax_load'))
		{
			$('ajax_load').style.display='inline';
		}
		xmlhttp.send(this.data);
		xmlhttp.onreadystatechange=function(){
			if(xmlhttp.readyState==4){
				if(xmlhttp.status==200){ajax.xml(xmlhttp);}else if(xmlhttp.status==404){alert("ไม่มี URL นี้ในระบบ!");};
				document.body.style.cursor = 'default';if($('ajax_load'))$('ajax_load').style.display='none'
				if(document.getElementById('ajax_load'))$('ajax_load').style.display='none';
			}
			return true;
		}
	}
	this.objectToXML=function(obj){var sXml="<plusobj>";for(i in obj){try{if(i=='constructor') continue;if(obj[i]&&typeof(obj[i])=='function') continue;var key=i;var value=obj[i];if(value&&typeof(value)=="object"&&this.depth <=50){this.depth++;value=this.objectToXML(value);this.depth--;};sXml+="<e><k>"+key+"</k><v>"+value+"</v></e>";}catch(e){if(xajaxDebug)this.DebugMessage(e.name+": "+e.message);}};sXml+="</plusobj>";return sXml;}
	this.xml = function(x){var t=x.responseXML;if(t==null) return;window.status='Processing...';this.t=t.documentElement;if(this.t==null){window.status='XML response processing error';alert(x.responseTEXT);return;};
		var i,j;for(i=0;i<this.t.childNodes.length;i++){if(this.t.childNodes[i].nodeName=="cmd"){	for(j=0;j<this.t.childNodes[i].attributes.length;j++){eval('this.'+this.t.childNodes[i].attributes[j].name+'=this.t.childNodes[i].attributes[j].value');};
				this.d=(this.t.childNodes[i].firstChild?this.t.childNodes[i].firstChild.nodeValue:'');
				switch(this.a){
					case "al":alert(this.d);break;
					case "rm":this.remove(this.d);break;
					case "ap":eval("$(this.s)."+this.p+"+=this.d;");break;
					case "as":eval("$(this.s)."+this.p+"=this.d;");break;
					case "js":eval(this.d);break;
				}}};delete this.t;document.body.style.cursor='default';window.status='Done';}
	this.remove=function(sId){objElement = $(sId);if(objElement&&objElement.parentNode && objElement.parentNode.removeChild){objElement.parentNode.removeChild(objElement);}}		
	this.getForm=function(frm){var objForm;var submitDisabledElements=false;if(arguments.length > 1&&arguments[1]==true) submitDisabledElements=true;var prefix="";if(arguments.length > 2) prefix=arguments[2];if(typeof(frm)=="string") objForm=$(frm);else objForm=frm;var sXml="<plusquery><q>";if(objForm&&objForm.tagName=='FORM'){var formElements=objForm.elements;for(var i=0;i < formElements.length;i++){if(!formElements[i].name) continue;if(formElements[i].name.substring(0,prefix.length)!=prefix) continue;if(formElements[i].type&&(formElements[i].type=='radio'||formElements[i].type=='checkbox')&&formElements[i].checked==false) continue;if(formElements[i].disabled&&formElements[i].disabled==true&&submitDisabledElements==false) continue;var name=formElements[i].name;if(name){if(sXml!='<plusquery><q>') sXml+='&';if(formElements[i].type=='select-multiple'){for(var j=0;j < formElements[i].length;j++){if(formElements[i].options[j].selected==true) sXml+=name+"="+encodeURIComponent(formElements[i].options[j].value)+"&";}}else{sXml+=name+"="+encodeURIComponent(formElements[i].value);}}}};sXml+="</q></plusquery>";return sXml;},
	this.loading=function(e){if(!$('ajax_load'))return;if(!e)e=event;plus.layer.update();$('ajax_load').style.left = Math.floor(plus.layer.scleft+e.clientX+16)+'px';$('ajax_load').style.top = Math.floor(plus.layer.sctop+e.clientY+16)+'px';}
}
var ajax=new _ajax();
plus.event.add(document,'mousemove',ajax.loading);