function PHPLiveX(){this.Options={"type":"asynchronous","mode":"rw","target":null,"preloader":null,"method":"post","onCreate":function(){},"onUninitialized":function(){},"onLoading":function(){},"onRequest":function(){},"onInteraction":function(){},"onFinish":function(){},"onUpdate":function(){},"onFailure":function(){},"interval":0,"clear_content":false,"preloader_style":"visibility","target_attr":"innerContent","url":"","eval_scripts":true,"content_type":"text","headers":{},"params":{}};this.Validations={"type":{"values":["asynchronous","synchronous"]},"mode":{"values":["rw","aw","asw"]},"target":{"formats":["object","string"]},"preloader":{"formats":["object","string"]},"method":{"values":["get","post"]},"onCreate":{"formats":["function"]},"onUninitialized":{"formats":["function"]},"onLoading":{"formats":["function"]},"onRequest":{"formats":["function"]},"onInteraction":{"formats":["function"]},"onFinish":{"formats":["function"]},"onUpdate":{"formats":["function"]},"onFailure":{"formats":["function"]},"interval":{"formats":["number"]},"clear_content":{"formats":["boolean"]},"eval_content":{"formats":["boolean"]},"preloader_style":{"values":["visibility","display"]},"target_attr":{"formats":["string"]},"url":{"formats":["string"]},"content_type":{"values":["text","json"]},"headers":{"formats":["object"]},"params":{"formats":["object"]}};if(navigator.appName=="Opera")this.Browser="opera";else if(navigator.appName=="Microsoft Internet Explorer")this.Browser="ie";else this.Browser="gecko";}
PHPLiveX.prototype.GetXmlHttp=function(){objXmlHttp=false;if(window.XMLHttpRequest){objXmlHttp=new XMLHttpRequest();if(objXmlHttp.overrideMimeType){objXmlHttp.overrideMimeType('text/xml');}}else if(window.ActiveXObject){try{objXmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{objXmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e){}}}
if(!objXmlHttp){alert("Cannot create an XMLHTTP instance");return false;}
return objXmlHttp;}
PHPLiveX.prototype.ParseArray=function(arr){if(arr.length==undefined)return this.ParseObject(arr);var values=new Array();for(key in arr){if(typeof arr[key]=="string")val="\""+arr[key]+"\"";else if(typeof arr[key]=="object"){if(arr[key].length!=undefined)val=this.ParseArray(arr[key]);else val=this.ParseObject(arr[key]);}
else val=arr[key];values.push(val);}
return"["+values.join(", ")+"]";}
PHPLiveX.prototype.ParseObject=function(obj){if(obj.length!=undefined)return this.ParseArray(obj);var values=new Array();for(key in obj){if(obj[key]!=null){if(typeof obj[key]=="string"){val="\""+key+"\": "+"\""+obj[key]+"\"";}else if(typeof obj[key]=="object"){if(obj[key].length!=undefined)val="\""+key+"\": "+this.ParseArray(obj[key]);else val="\""+key+"\": "+this.ParseObject(obj[key]);}
else val="\""+key+"\": "+obj[key];values.push(val);}}
return"{"+values.join(", ")+"}";}
PHPLiveX.prototype.utf8_encode=function(string){if(typeof(string)!="string")return escape(string);string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return escape(utftext);}
PHPLiveX.prototype.utf8_decode=function(utftext){if(typeof(utftext)!="string")return escape(utftext);utftext=unescape(utftext);var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return string;}
PHPLiveX.prototype.RandomString=function(){var chars="ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";var code="";for(i=0;i<6;i++){var rnum=Math.floor(Math.random()*chars.length);code+=chars.substring(rnum,rnum+1);}
return code;}
PHPLiveX.prototype.ValidateParams=function(user_options){var errors=[];var err_exist=false;for(param in user_options){if(this.Options[param]==undefined&&typeof(this.Options[param])!="object"){errors.push("* Undefined parameter: "+param);continue;}
value=user_options[param];if(this.Validations[param].formats!=undefined){for(key in this.Validations[param].formats){if(this.Validations[param].formats[key]!=typeof(value))err_exist=true;else{err_exist=false;break;}}
if(err_exist)errors.push("* Invalid data type for '"+param+"' parameter: "+typeof(value));}else if(this.Validations[param].values!=undefined){for(key in this.Validations[param].values){if(typeof(value)=="string")value=value.toLowerCase();if(this.Validations[param].values[key]!=value)err_exist=true;else{err_exist=false;break;}}
if(err_exist)errors.push("* Undefined value for '"+param+"' parameter: "+value);}
this.Options[param]=value;}
if(errors.length>0){var warning=errors.join("\r\n");alert(warning);}}
PHPLiveX.prototype.CreatePreloading=function(){if(this.Options.preloader!=null){if(this.Options.preloader_style=="display")this.Options.preloader.style.display="";this.Options.preloader.style.visibility="visible";}
if(this.Options.clear_content)eval("this.Options.target."+this.Options.target_attr+" = '';");}
PHPLiveX.prototype.CompletePreloading=function(){if(this.Options.preloader!=null){if(this.Options.preloader_style=="display")this.Options.preloader.style.display="none";this.Options.preloader.style.visibility="hidden";}}
PHPLiveX.prototype.ExternalRequest=function(options){newargs=new Array();if(options.params){for(pairKey in options.params){value=options.params[pairKey];if(typeof(value)=="object"){if(value.length!=undefined)value=this.ParseArray(value);else value=this.ParseObject(value);}
newargs.push(pairKey+"~=~"+value);}}
newargs.push(options);return this.Callback(0,newargs);}
PHPLiveX.prototype.SubmitForm=function(form,options){if(typeof(form)=="string"){form=document.getElementById(form)||document.forms[form];}
if(options==null)options={};if(!options.url&&form.action!="")options.url=form.action;else if(!options.url&&form.action==""){alert("Please define an action for form");return false;}
if(!options.method&&form.method!="")options.method=form.method;var args=new Array();var fields=form.elements;for(i=0;i<fields.length;i++){if(fields[i].type=="button"||fields[i].type=="submit"||fields[i].type=="reset")continue;if((fields[i].type=="radio"||fields[i].type=="checkbox")&&!fields[i].checked)continue;args.push(fields[i].name+"~=~"+fields[i].value);}
if(options.params){for(pairKey in options.params){value=options.params[pairKey];if(typeof(value)=="object"){if(value.length!=undefined)value=this.ParseArray(value);else value=this.ParseObject(value);}
args.push(pairKey+"~=~"+value);}}
args.push(options);this.Callback(0,args);return false;}
PHPLiveX.prototype.UtilizeResponse=function(funcName,funcArgs,funcUrl){if(typeof(funcName)=="object")funcName=funcName.obj+"::"+funcName.method;var data=(funcName)?"plxf="+escape(funcName):"";var args=new Array();if(funcArgs.length>0){if(funcName){for(i=0;i<funcArgs.length;i++)data+="&plxa[]="+this.utf8_encode(funcArgs[i]);}else{for(i=0;i<funcArgs.length;i++){key=this.utf8_encode(funcArgs[i].split("~=~")[0]);val=this.utf8_encode(funcArgs[i].split("~=~")[1]);data+="&"+key+"="+val;}
data=data.substring(1);}}
var _root=this;var XmlHttp=this.GetXmlHttp();var asynchronous=(this.Options.type=="asynchronous")?true:false;if(this.Options.method.toUpperCase()=="GET"){data+="&RequestId="+new Date().getTime();if(funcUrl.indexOf("?")!=-1){data=(funcUrl.indexOf("&"))?"&"+data:data;XmlHttp.open("GET",funcUrl+"&"+data,asynchronous);}else{XmlHttp.open("GET",funcUrl+"?"+data,asynchronous);}}else XmlHttp.open("POST",funcUrl,asynchronous);if(this.Options.method.toUpperCase()=="POST"){XmlHttp.setRequestHeader("Method","POST "+funcUrl+" HTTP/1.1");XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");XmlHttp.setRequestHeader("Accept","text/javascript, text/html, application/xml, text/xml, */*");}
for(key in this.Options.headers)XmlHttp.setRequestHeader(key,this.Options.headers[key]);if(asynchronous){this.CreatePreloading();_root.Options.onCreate(XmlHttp);XmlHttp.onreadystatechange=function(){if(XmlHttp.readyState==0){_root.Options.onUninitialized(XmlHttp);}else if(XmlHttp.readyState==1){_root.Options.onLoading(XmlHttp);}else if(XmlHttp.readyState==2){_root.Options.onRequest(XmlHttp);}else if(XmlHttp.readyState==3){_root.Options.onInteraction(XmlHttp);}else if(XmlHttp.readyState==4){_root.CompletePreloading();var response=XmlHttp.responseText;var jscode="";if(response.indexOf("<phplivex>")!=-1){var parts=response.split("<phplivex>");response=parts[parts.length-1].split("</phplivex>")[0];}
var jsparts=response.match(/<script[^>]*>(.|\n|\t|\r)*?<\/script>/gi);if(jsparts){lng=jsparts.length;for(i=0;i<lng;i++){jscode+=jsparts[i].replace(/<script[^>]*>|<\/script>/gi,"");response=response.replace(jsparts[i],"");}}
var test_integer=/^[\+\-]?\d*$/;if(response!=""&&test_integer.test(response))response=parseInt(response);if(_root.Options.content_type.toUpperCase()=="JSON"&&response!="")eval("response = "+response+";");_root.Options.onFinish(response,XmlHttp);if(_root.Options.preloader!=null){if(_root.Options.preloader_style=="visibility"){_root.Options.preloader.style.visibility="hidden";_root.Options.preloader.style.display="";}
if(_root.Options.preloader_tyle=="display"){_root.Options.preloader.style.display="none";_root.Options.preloader.style.visibility="visible";}}
if(_root.Options.target!=null){var attr=_root.Options.target_attr;var item=_root.Options.target;if(item.type=="select-one"&&attr=="options"){if(_root.Options.mode=="rw"){lng=item.options.length;for(k=0;k<lng;k++)item.remove(0);}
for(var i=0;i<response.length;i++){option=response[i];var opt=document.createElement("option");for(key in option){val=option[key];eval("opt."+key+" = val;");}
if(_root.Options.mode=="aw"||_root.Options.mode=="rw"){if(_root.Browser=="ie")item.add(opt);else item.add(opt,null);}else if(_root.Options.mode=="asw"){if(_root.Browser=="ie")item.add(opt,0);else item.add(opt,item.options[0]);}}}else{switch(_root.Options.mode){case"aw":eval("item."+attr+" += response;");break;case"rw":eval("item."+attr+" = response;");break;case"asw":eval("item."+attr+" = response + item."+attr+";");break;}}}
if(jscode!=""&&_root.Options.eval_scripts){var script=document.createElement("script");script.type="text/javascript";script.lang="javascript";script.text=jscode;document.getElementsByTagName("head")[0].appendChild(script);}
_root.Options.onUpdate(response,XmlHttp);}}
if(this.Options.method.toUpperCase()=="GET")XmlHttp.send(null);else XmlHttp.send(data);}else{if(this.Options.method.toUpperCase()=="GET")XmlHttp.send(null);else XmlHttp.send(data);var response=XmlHttp.responseText;if(response.indexOf("<phplivex>")!=-1){var parts=response.split("<phplivex>");response=parts[parts.length-1].split("</phplivex>")[0];}
var jscode="";var parts=response.match(/<script[^>]*>(.|\n|\t|\r)*?<\/script>/gi);if(parts){for(i=0;i<parts.length;i++){jscode+=parts[i].replace(/<script[^>]*>|<\/script>/gi,"");response=response.replace(parts[i],"");}}
if(jscode!=""&&_root.Options.eval_scripts){var script=document.createElement("script");script.type="text/javascript";script.lang="javascript";script.text=jscode;document.getElementsByTagName("head")[0].appendChild(script);}
var test_integer=/^[\+\-]?\d*$/;if(response!=""&&test_integer.test(response))response=parseInt(response);if(_root.Options.content_type.toUpperCase()=="JSON"&&response!="")eval("response = "+response+";");return response;}}
PHPLiveX.prototype.Callback=function(funcName,funcArgs,isRepeat){var args=[];for(i=0;i<funcArgs.length-1;i++){args.push(funcArgs[i]);if(typeof(args[i])=="object")args[i]="<plxobj>"+this.ParseObject(args[i])+"</plxobj>";else if(typeof(args[i])=="boolean"){if(args[i]==false)args[i]=0;else args[i]=1;}
if(String(args[i]).indexOf("+"))args[i]=String(args[i]).replace("+",encodeURIComponent("+"),"g");}
var params=funcArgs[funcArgs.length-1];this.ValidateParams(params);if(this.Options.target!=null){targetId=String(this.Options.target);if(document.getElementById(targetId))this.Options.target=document.getElementById(targetId);if(this.Options.target_attr=="innerContent"){if(this.Options.target.type=="select-one")this.Options.target_attr="options";else if(this.Options.target=="[object HTMLInputElement]"||this.Options.target.type!=undefined)this.Options.target_attr="value";else this.Options.target_attr="innerHTML";}}
if(this.Options.preloader!=null){preloaderId=String(this.Options.preloader);if(document.getElementById(preloaderId))this.Options.preloader=document.getElementById(preloaderId);}
if(this.Options.url=="")this.Options.url=window.location.href;try{if(this.Options.type=="synchronous"){return this.UtilizeResponse(funcName,args,this.Options.url);}else if(this.Options.type=="asynchronous"){this.UtilizeResponse(funcName,args,this.Options.url);}}catch(ex){this.Options.onFailure(ex);return;}
if(this.Options.interval!=0){var initialArgs=[];lng=funcArgs.length;for(i=0;i<lng;i++){if(typeof(funcArgs[i])=="object")initialArgs.push(this.ParseObject(funcArgs[i]));else initialArgs.push("'"+funcArgs[i]+"'");}
if(funcName){if(typeof(funcName)=="string")PLX_Timeouts.push(setTimeout("eval("+funcName+"("+initialArgs.join(", ")+"));",this.Options.interval));else if(typeof(funcName)=="object")PLX_Timeouts.push(setTimeout("eval("+funcName.obj+"."+funcName.method+"("+initialArgs.join(", ")+"));",this.Options.interval));}else{if(!isRepeat){code=this.RandomString();eval("PLX_Repeats."+code+" = funcArgs;");}
PLX_Timeouts.push(setTimeout("new PHPLiveX().Callback(0, PLX_Repeats['"+code+"'], true);",this.Options.interval));}}
return;}
var PLX_Timeouts=[];var PLX_Repeats={};function CheckForHash(){if(document.location.hash){var HashLocationName=document.location.hash;HashNum=HashLocationName.replace("#p","");if(!isNaN(HashNum)&&(HashNum!=pclk)&&(HashNum>0&&HashNum<=pnum)){load_pg(pnum,plmt,HashNum);}}}
function RenameAnchor(anchorid,anchorname){document.getElementById(anchorid).name=anchorname;}
function RedirectLocation(anchorid,anchorname,HashName){RenameAnchor(anchorid,anchorname);document.location=HashName;}