if(!SNL){
var SNL={VERSION:"0.1.3",AJAX:{MakeSyncRequest:function(_1,_2){
var _3=SNL.AJAX._GetHttpRequestObject();
if(_3===false){
return false;
}
_3.open("POST",_1,false);
_3.send(_2);
if(_3.status!=200){
return false;
}
return _3;
},MakeAsyncRequest:function(_4,_5,_6,_7){
var _8=SNL.AJAX._GetHttpRequestObject();
if(!_8){
return false;
}
_8.open("POST",_4,true);
_8.onreadystatechange=function(){
SNL.AJAX._OnAsyncAjaxResponse(_8,_6,_7);
};
_8.setRequestHeader("Content-Type","text/plain;charset=UTF-8");
_8.send(_5);
return _8;
},_OnAsyncAjaxResponse:function(_9,_a,_b){
if(_9.readyState!=4){
return;
}
if(!_a){
return;
}
_a(_9,_b);
},_GetHttpRequestObject:function(){
var _c=false;
if(window.XMLHttpRequest){
_c=new XMLHttpRequest();
if(_c.overrideMimeType){
_c.overrideMimeType("text/xml");
}
}else{
if(window.ActiveXObject){
try{
_c=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
try{
_c=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
return false;
}
}
}
}
return _c;
}},XML:{EscapeData:function(_d){
tmp=_d.replace("\\","\\\\","g");
return tmp.replace("]]>","\\]\\]\\>","g");
},UnescapeData:function(_e){
tmp=_e.replace("\\]\\]\\>","]]>","g");
return tmp.replace("\\\\","\\","g");
},FormatMessage:function(_f){
var m=["<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\n<m>"];
for(var i in _f){
m=m.concat(_f[i]);
}
m=m.concat("</m>");
return m.join("");
},FormatRequest:function(_12,id,_14){
return ["<r>","<s><![CDATA[",_12,"]]></s>","<n>",id,"</n>","<d>",SNL.XML.FormatData(_14),"</d>","</r>"].join("");
},FormatData:function(_15){
if(_15===null||_15===undefined){
return "";
}
var out=[];
switch(typeof _15){
case "boolean":
if(_15){
out=out.concat("<i>1</i>");
}else{
out=out.concat("<i>0</i>");
}
break;
case "number":
out=out.concat("<i>",String(_15),"</i>");
break;
case "string":
out=out.concat("<i><![CDATA[",SNL.XML.EscapeData(String(_15)),"]]></i>");
break;
case "object":
case "array":
out=out.concat("<h>");
for(var i in _15){
out=out.concat("<p>");
out=out.concat("<k><![CDATA[",SNL.XML.EscapeData(String(i)),"]]></k>");
out=out.concat("<v>",SNL.XML.FormatData(_15[i]),"</v>");
out=out.concat("</p>");
}
out=out.concat("</h>");
break;
case "function":
default:
break;
}
return out.join("");
},UnpackDataFragment:function(_18){
var _19=_18.childNodes[0];
if(!_19){
return null;
}
if(_19.nodeName=="i"){
if(!_19.firstChild){
return null;
}
return SNL.XML.UnescapeData(_19.firstChild.nodeValue);
}else{
if(_19.nodeName=="h"){
var _1a=new Object();
for(var i=0;i<_19.childNodes.length;i++){
var key,_1d;
var _1e=_19.childNodes[i];
for(var j=0;j<_1e.childNodes.length;j++){
if(_1e.childNodes[j].nodeName=="k"){
key=SNL.XML.UnescapeData(_1e.childNodes[j].firstChild.nodeValue);
}
if(_1e.childNodes[j].nodeName=="v"){
_1d=SNL.XML.UnpackDataFragment(_1e.childNodes[j]);
}
}
_1a[key]=_1d;
}
return _1a;
}
}
}},_Internal:{current_id:0,GetNewRequestID:function(){
SNL._Internal.current_id++;
return SNL._Internal.current_id;
},GetNewXHRID:function(){
SNL._Internal.current_id++;
return SNL._Internal.current_id;
},request_target:null,SetRequestURL:function(_20){
SNL._Internal.request_target=_20;
},GetRequestURL:function(){
if(SNL._Internal.request_target){
return SNL._Internal.request_target;
}
return "/lib/snl/"+SNL.VERSION+"/snl.php";
},last_error:"",error_callback:null,error_userdata:null,requests:{},xhr:{},ResponseHandler:function(req,_22){
if(req.readyState!=4){
return;
}
if(req.responseText==""){
return;
}
var xml=req.responseXML;
if(!xml){
SNL.HandleError("server did not provide an xml response section");
return;
}
var msg=xml.lastChild;
if(!msg){
if(!window.ActiveXObject){
SNL.HandleError("server returned a non-xml response - probably an error");
return;
}
xmlDOM=new window.ActiveXObject("Microsoft.XMLDOM");
if(xmlDOM==null){
SNL.HandleError("failed to create an XMLDOM object");
return;
}
xmlDOM.async=false;
var ret=xmlDOM.loadXML(req.responseText);
if(ret==false){
SNL.HandleError("failed to load XML text with XMLDOM");
return;
}
msg=xmlDOM.documentElement;
if(msg==null){
SNL.HandleError("could not load head element of XML document");
return;
}
}
var _26=msg.childNodes[0];
if(_26.nodeName=="e"){
SNL.HandleError(_26.firstChild.nodeValue);
return;
}
for(var i=0;i<msg.childNodes.length;i++){
var xhr;
var _29=msg.childNodes[i];
if(_29.nodeName=="r"){
var _2a;
var _2b;
for(var j=0;j<_29.childNodes.length;j++){
if(_29.childNodes[j].nodeName=="n"){
_2a=Number(_29.childNodes[j].firstChild.nodeValue);
}else{
if(_29.childNodes[j].nodeName=="d"){
_2b=SNL.XML.UnpackDataFragment(_29.childNodes[j]);
}
}
}
if(_2a===undefined||_2b===undefined){
SNL.HandleError("did not find a valid response inside the xml response section");
return;
}
var _2d=SNL._Internal.requests[_2a];
if(_2d[0]!=_22){
SNL.HandleError("got back the wrong request id for this request - invalid server?");
return;
}
_2d[1](_2b,_2d[2]);
delete SNL._Internal.requests[_2a];
}
}
delete SNL._Internal.xhr[_22];
for(var i in SNL._Internal.requests){
if(SNL._Internal.requests[i]!==undefined&&SNL._Internal.requests[i][0]==_22){
delete SNL._Internal.requests[i];
}
}
}},SetRequestURL:function(_2e){
SNL._Internal.SetRequestURL(_2e);
},Request:function(_2f,_30,_31,_32){
var id=SNL._Internal.GetNewRequestID();
var _34=SNL._Internal.GetNewXHRID();
SNL._Internal.requests[id]=[_34,_31,_32];
var msg=SNL.XML.FormatMessage([SNL.XML.FormatRequest(_2f,id,_30)]);
SNL._Internal.error="";
SNL._Internal.xhr[_34]=SNL.AJAX.MakeAsyncRequest(SNL._Internal.GetRequestURL(),msg,SNL._Internal.ResponseHandler,_34);
if(SNL._Internal.xhr[_34]===false){
return false;
}
return _34;
},BeginGroup:function(){
var out=[];
return out;
},AddGroupRequest:function(_37,_38,_39,_3a,_3b){
var id=SNL._Internal.GetNewRequestID();
var msg=SNL.XML.FormatRequest(_38,id,_39);
SNL._Internal.requests[id]=[undefined,_3a,_3b,msg];
_37.push(id);
return true;
},SendGroup:function(_3e){
var _3f=SNL._Internal.GetNewXHRID();
var r=[];
for(var i in _3e){
SNL._Internal.requests[_3e[i]][0]=_3f;
r.push(SNL._Internal.requests[_3e[i]][3]);
}
var msg=SNL.XML.FormatMessage(r);
SNL._Internal.error="";
SNL._Internal.xhr[_3f]=SNL.AJAX.MakeAsyncRequest(SNL._Internal.GetRequestURL(),msg,SNL._Internal.ResponseHandler,_3f);
if(SNL._Internal.xhr[_3f]===false){
return false;
}
return _3f;
},Cancel:function(_43){
var xhr=SNL._Internal.xhr[_43];
if(xhr===undefined){
return;
}
xhr.abort();
delete SNL._Internal.xhr[_43];
for(var i in SNL._Internal.requests){
if(SNL._Internal.requests[i][0]==_43){
delete SNL._Internal.requests[i];
}
}
},GetActiveRequestCount:function(){
var cnt=0;
for(var i in SNL._Internal.xhr){
cnt++;
}
return cnt;
},GetLastError:function(){
return SNL._Internal.error;
},HandleError:function(msg){
SNL._Internal.error=msg;
if(!SNL._Internal.error_callback){
window.alert("ERROR: "+msg);
}else{
SNL._Internal.error_callback(msg,SNL._Internal.error_userdata);
}
},RegisterErrorHandler:function(_49,_4a){
SNL._Internal.error_callback=_49;
SNL._Internal.error_userdata=_4a;
}};
}

