ReallyEvent={};ReallyEvent._attachDomEvent=function(c,b,d){if(!c._events){c._events={}}if(!c._events[b]){c._events[b]=[]}var a=c._events[b];a[a.length]=d};ReallyEvent._fireDomEvent=function(d,c){if(!d||!d._events||!d._events[c]){return}var a=d._events[c].length;for(var b=0;b<a;b++){d._events[c][b]()}};ReallyEvent.addDomListener=function(c,b,d,a){a=!!a;if(c.addEventListener){c.addEventListener(b,d,a);return(true)}else{if(c.attachEvent){return(c.attachEvent("on"+b,d))}else{ReallyEvent._attachDomEvent(c,b,d);c["on"+b]=function(){ReallyEvent._fireDomEvent(c,b)}}}};ReallyEvent.callback=function(b,d){var c=[];for(var a=2;a<arguments.length;a++){c.push(arguments[a])}return(function(){var g=[];for(var e=0;e<arguments.length;e++){g.push(arguments[e])}var f;if(typeof d=="string"){f=(b||window)[d]}else{f=d}return(f&&f.apply(b||this,c.concat(g)))})};ReallyEvent.stopEvent=function(a){if(!a){a=window.event}a.preventDefault();a.stopPropagation()};ReallyHtml={};if(navigator.appVersion.indexOf("MSIE")>-1){ReallyHtml.byId=function(d){if(typeof d=="string"){var c=document.getElementById(d);if(c&&(c.attributes.id.value==d||c.id==d)){return(c)}else{var b=document.all[d];if(!b||b.nodeName){b=[b]}var a=0;while((c=b[a++])){if((c.attributes&&c.attributes.id&&c.attributes.id.value==d)||c.id==d){return(c)}}}}else{return(d)}}}else{ReallyHtml.byId=function(a){if(typeof a=="string"){return(document.getElementById(a))}else{return(a)}}}ReallyHtml.hasClass=function(b,a){b=ReallyHtml.byId(b);return((" "+b.className+" ").indexOf(" "+a+" ")>=0)};ReallyHtml.addClass=function(b,a){b=ReallyHtml.byId(b);var c=b.className;if((" "+c+" ").indexOf(" "+a+" ")<0){b.className=c+(c?" ":"")+a}};ReallyHtml.removeClass=function(c,b){c=ReallyHtml.byId(c);var a=new RegExp("\\b"+b+"\\s");var d=(c.className+" ").replace(a,"");if(d[d.length-1]==" "){--d.length}c.className=d};ReallyHtml.setSelectable=function(b,a){b=ReallyHtml.byId(b);if(navigator.appVersion.indexOf("Gecko")>-1){b.style.MozUserSelect=a?"":"none"}else{if(navigator.appVersion.indexOf("Konqueror")>-1||navigator.appVersion.indexOf("WebKit/")>-1){b.style.KhtmlUserSelect=a?"auto":"none"}else{if(navigator.appVersion.indexOf("MSIE")>-1){(b.unselectable=a?"":"on")}}}};ReallyHtml._createNode=function(c,d){d=d||window.document;c=""+c;var e=d.createElement("div");e.innerHTML=c;if(e.childNodes.length==0){return(null)}if(e.childNodes.length==1){return(e.removeChild(e.firstChild))}var b;var a=d.createDocumentFragment();while(b=e.firstChild){a.appendChild(b)}return(a)};ReallyHtml.replace=function(a,b){b=ReallyHtml.byId(b);if(a!=null&&(typeof a=="string"||a instanceof String)){a=a.charAt(0)=="<"?ReallyHtml._createNode(a,b.ownerDocument):ReallyHtml.byId(a)}if(a==null){throw new Exception("Invalid node value")}b.parentNode.replaceChild(a,b)};ReallyXhr={};ReallyXhr.handle=function(b,a){this.xhr=b;this.args=a;this.cancel=function(){this.cancelled=true;if(this.xhr&&this.xhr.abort){try{this.xhr.abort()}catch(c){}}}};ReallyXhr.handle.prototype={cancelled:false};ReallyXhr._XMLHttpClasses=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];ReallyXhr._isStatusOk=function(b){var a=b.status||0;return((a>=200&&a<300)||(a==304)||(a==1223))};ReallyXhr._createStatusHandler=function(c,b){var a=c;var d=b;var e=function(){if(a.readyState==4){if(ReallyXhr._isStatusOk(a)){if(d.load){d.load(a.responseText)}}else{if(d.error){var f=new Error("Error while trying go load "+d.url+" status: "+a.status);f.status=a.status;f.responseText=a.responseText;d.error(f)}}}};return(e)};ReallyXhr._encodeObject=function(d,e){var b=[];for(var c in e){var a=ReallyXhr._encodeValue(d+"["+c+"]",e[c]);if(a&&a.length){b.push(a)}}return(b.join("&"))};ReallyXhr._encodeArray=function(e,c){var d=[];var b=c.length;for(var g=0;g<b;g++){var f=e;if(!/\[\]$/.test(e)){f+="["+g+"]"}var a=ReallyXhr._encodeValue(f,c[g]);if(a&&a.length){d.push(a)}}return(d.join("&"))};ReallyXhr._encodeValue=function(a,b){if(b instanceof Array||typeof b=="array"){return(ReallyXhr._encodeArray(a,b))}else{if(typeof b=="object"||typeof b=="function"||b instanceof Function){return(ReallyXhr._encodeObject(a,b))}else{return(a+"="+encodeURIComponent(b))}}};ReallyXhr._createQuery=function(d){if(!d){return("")}var b=[];for(var c in d){var a=ReallyXhr._encodeValue(c,d[c]);if(a&&a.length){b.push(a)}}return(b.join("&"))};ReallyXhr._setValue=function(a,b,c){var d=a[b];if(d&&(typeof d=="string"||d instanceof String)&&(d!="")){a[b]=[d,c]}else{if(d&&(typeof d=="array"||d instanceof Array)){d.push(c)}else{a[b]=c}}};ReallyXhr.getFormValues=function(l){l=ReallyHtml.byId(l);if(!l){return(null)}var m={};var d="file|submit|image|reset|button|";var c="input|select|textarea|";var a=l.elements;for(var f=0;f<a.length;f++){var i=a.item(f);if(!i||!i.name||!i.type||!i.tagName){continue}var b=i.name;var j=(i.type||"").toLowerCase();var n=(i.tagName||"").toLowerCase();if(b&&(c.indexOf(n)!=-1)&&d.indexOf(j)==-1&&!i.disabled){if(j=="radio"||j=="checkbox"){if(i.checked){if(!(/\[\]$/.test(b))){delete m[b]}ReallyXhr._setValue(m,b,i.value)}}else{if(i.multiple){m[b]=[];for(var h=0;h<i.options.length;h++){var g=i.options[h];if(g.selected){ReallyXhr._setValue(m,b,g.value)}}}else{ReallyXhr._setValue(m,b,i.value);if(j=="image"){m[b+".x"]=m[b+".y"]=m[b].x=m[b].y=0}}}}}return(m)};ReallyXhr.setFormValues=function(f,b){f=ReallyHtml.byId(f);if(!f){return(null)}var a="file|submit|image|reset|button|";for(k in f.elements){var g=f.elements[k];var c=g.name;var d=(g.type||"").toLowerCase();if(c&&d&&a.indexOf(d)==-1){if(d=="radio"||d=="checkbox"){if(b[g.name]){var h=b[g.name];g.checked=((g.value==h)||(h[g.value]))}else{g.checked=false}}else{g.value=b[g.name]}}}};ReallyXhr.create=function(){var d;try{d=new XMLHttpRequest()}catch(c){}if(!d){for(var a=0;a<ReallyXhr._XMLHttpClasses.length;a++){try{var b=ReallyXhr._XMLHttpClasses[a];d=new ActiveXObject(b)}catch(c){}if(d){ReallyXhr._XMLHttpClasses=[b];break}}}return(d)};ReallyXhr.send=function(g,a){if(g=="GET"){a.query=null;var c=ReallyXhr._createQuery(a.content);if(c&&c.length){a.url+=(a.url.indexOf("?")==-1?"?":"&")+c}}else{a.query=ReallyXhr._createQuery(a.content)}var f=ReallyXhr.create();f.open(g,a.url,a.sync!==true,a.user||undefined,a.password||undefined);f.setRequestHeader("Content-Type",a.contentType||"application/x-www-form-urlencoded");f.setRequestHeader("X-Requested-With","XMLHttpRequest");var b=new ReallyXhr.handle(f,a);try{if(a.load||a.error){b.onStateChange=ReallyXhr._createStatusHandler(f,a);f.onreadystatechange=ReallyEvent.callback(b,function(){if(this.cancelled){return}this.onStateChange()})}f.send(a.query)}catch(d){if(a.error){a.error(d)}}return(b)};ReallyXhr.get=function(a){return(ReallyXhr.send("GET",a))};ReallyXhr.post=function(a){return(ReallyXhr.send("POST",a))};(function(){var ver=navigator.appVersion;var isSafari=ver.indexOf("Safari");var _escapeString=function(str){return('"'+str.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")};var _getParts=function(arr,obj,cb){return[isString(arr)?arr.split(""):arr,obj||window.document,isString(cb)?new Function("item","index","array",cb):cb]};var _map=function(arr,callback,thisObject){var _p=_getParts(arr,thisObject,callback);arr=_p[0];var outArr=(arguments[3]?(new arguments[3]()):[]);for(var i=0,l=arr.length;i<l;++i){outArr.push(_p[2].call(_p[1],arr[i],i,arr))}return(outArr)};var isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String)};var isArray=function(it){return it&&(it instanceof Array||typeof it=="array")};var isFunction=(function(){var _isFunction=function(it){var t=typeof it;return it&&(t=="function"||it instanceof Function)};return isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false}return _isFunction(it)}:_isFunction})();var isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||isArray(it)||isFunction(it))};var isArrayLike=function(it){return it&&it!==undefined&&!isString(it)&&!isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(isArray(it)||isFinite(it.length))};var isAlien=function(it){return it&&!isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it))};var _jsonEncode=function(it){if(it===undefined){return"undefined"}var objtype=typeof it;if(objtype=="number"||objtype=="boolean"){return it+""}if(it===null){return"null"}if(isString(it)){return _escapeString(it)}var recurse=arguments.callee;var newObj;var tf=it.__json__||it.json;if(isFunction(tf)){newObj=tf.call(it);if(it!==newObj){return recurse(newObj)}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes")}if(isArray(it)){var res=_map(it,function(obj){var val=recurse(obj);if(typeof val!="string"){val="undefined"}return val});return("["+res.join(",")+"]")}if(objtype=="function"){return null}var output=[],key;for(key in it){var keyStr,val;if(typeof key=="number"){keyStr='"'+key+'"'}else{if(typeof key=="string"){keyStr=_escapeString(key)}else{continue}}val=recurse(it[key]);if(typeof val!="string"){continue}output.push(keyStr+":"+val)}return"{"+output.join(",")+"}"};var _jsonDecode=function(json){return(eval("("+json+")"))};var createStateHandler=function(client,callback){var _c=client;var _cb=callback;var stateHandler=function(){if(client.readyState==4){if(client.status==200){var data=_jsonDecode(client.responseText);if(_cb!=null){_cb(data.result)}}}};return(stateHandler)};function ReallyServiceMethod(options){for(k in options){this[k]=options[k]}}ReallyServiceMethod.prototype={};ReallyServiceMethod.prototype.requestType="POST";ReallyServiceMethod.prototype.invoke=function(parameters){var callback=null;var paramsLength=parameters.length;if((paramsLength>0)&&(typeof parameters[paramsLength-1]=="function")){callback=parameters[paramsLength-1];paramsLength--}while((paramsLength>0)&&(typeof parameters[paramsLength-1]=="undefined")){paramsLength--}var params=new Array();for(var i=0;i<paramsLength;i++){params.push(parameters[i])}log("Calling method "+this.name+" with arguments: "+params);var request={method:this.name,params:params,id:++this.service.lastSubmissionId};var client=ReallyXhr.create();client.onreadystatechange=createStateHandler(client,callback);client.open(this.requestType,this.serviceURL);var data=_jsonEncode(request);log("Sending request: "+data);client.send(data)};ReallyService=function(options){this.lastSubmissionId=0;this.methods={};this._createMethod=function(info){var options={service:this,name:info.name,serviceURL:info.serviceURL,parameters:info.parameters};this.methods[info.name]=new ReallyServiceMethod(options);var self=this;var method=function(){return self.methods[options.name].invoke(arguments)};return(method)};for(var i=0;i<options.methods.length;i++){this[options.methods[i].name]=this._createMethod(options.methods[i])}};ReallyService.prototype={}})();ReallyEvent={};ReallyEvent._attachDomEvent=function(c,b,d){if(!c._events){c._events={}}if(!c._events[b]){c._events[b]=[]}var a=c._events[b];a[a.length]=d};ReallyEvent._fireDomEvent=function(d,c){if(!d||!d._events||!d._events[c]){return}var a=d._events[c].length;for(var b=0;b<a;b++){d._events[c][b]()}};ReallyEvent.addDomListener=function(c,b,d,a){a=!!a;if(c.addEventListener){c.addEventListener(b,d,a);return(true)}else{if(c.attachEvent){return(c.attachEvent("on"+b,d))}else{ReallyEvent._attachDomEvent(c,b,d);c["on"+b]=function(){ReallyEvent._fireDomEvent(c,b)}}}};ReallyEvent.callback=function(b,d){var c=[];for(var a=2;a<arguments.length;a++){c.push(arguments[a])}return(function(){var g=[];for(var e=0;e<arguments.length;e++){g.push(arguments[e])}var f;if(typeof d=="string"){f=(b||window)[d]}else{f=d}return(f&&f.apply(b||this,c.concat(g)))})};ReallyEvent.stopEvent=function(a){if(!a){a=window.event}a.preventDefault();a.stopPropagation()};ReallyHtml={};if(navigator.appVersion.indexOf("MSIE")>-1){ReallyHtml.byId=function(d){if(typeof d=="string"){var c=document.getElementById(d);if(c&&(c.attributes.id.value==d||c.id==d)){return(c)}else{var b=document.all[d];if(!b||b.nodeName){b=[b]}var a=0;while((c=b[a++])){if((c.attributes&&c.attributes.id&&c.attributes.id.value==d)||c.id==d){return(c)}}}}else{return(d)}}}else{ReallyHtml.byId=function(a){if(typeof a=="string"){return(document.getElementById(a))}else{return(a)}}}ReallyHtml.hasClass=function(b,a){b=ReallyHtml.byId(b);return((" "+b.className+" ").indexOf(" "+a+" ")>=0)};ReallyHtml.addClass=function(b,a){b=ReallyHtml.byId(b);var c=b.className;if((" "+c+" ").indexOf(" "+a+" ")<0){b.className=c+(c?" ":"")+a}};ReallyHtml.removeClass=function(c,b){c=ReallyHtml.byId(c);var a=new RegExp("\\b"+b+"\\s");var d=(c.className+" ").replace(a,"");if(d[d.length-1]==" "){--d.length}c.className=d};ReallyHtml.setSelectable=function(b,a){b=ReallyHtml.byId(b);if(navigator.appVersion.indexOf("Gecko")>-1){b.style.MozUserSelect=a?"":"none"}else{if(navigator.appVersion.indexOf("Konqueror")>-1||navigator.appVersion.indexOf("WebKit/")>-1){b.style.KhtmlUserSelect=a?"auto":"none"}else{if(navigator.appVersion.indexOf("MSIE")>-1){(b.unselectable=a?"":"on")}}}};ReallyHtml._createNode=function(c,d){d=d||window.document;c=""+c;var e=d.createElement("div");e.innerHTML=c;if(e.childNodes.length==0){return(null)}if(e.childNodes.length==1){return(e.removeChild(e.firstChild))}var b;var a=d.createDocumentFragment();while(b=e.firstChild){a.appendChild(b)}return(a)};ReallyHtml.replace=function(a,b){b=ReallyHtml.byId(b);if(a!=null&&(typeof a=="string"||a instanceof String)){a=a.charAt(0)=="<"?ReallyHtml._createNode(a,b.ownerDocument):ReallyHtml.byId(a)}if(a==null){throw new Exception("Invalid node value")}b.parentNode.replaceChild(a,b)};ReallyXhr={};ReallyXhr.handle=function(b,a){this.xhr=b;this.args=a;this.cancel=function(){this.cancelled=true;if(this.xhr&&this.xhr.abort){try{this.xhr.abort()}catch(c){}}}};ReallyXhr.handle.prototype={cancelled:false};ReallyXhr._XMLHttpClasses=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];ReallyXhr._isStatusOk=function(b){var a=b.status||0;return((a>=200&&a<300)||(a==304)||(a==1223))};ReallyXhr._createStatusHandler=function(c,b){var a=c;var d=b;var e=function(){if(a.readyState==4){if(ReallyXhr._isStatusOk(a)){if(d.load){d.load(a.responseText)}}else{if(d.error){var f=new Error("Error while trying go load "+d.url+" status: "+a.status);f.status=a.status;f.responseText=a.responseText;d.error(f)}}}};return(e)};ReallyXhr._encodeObject=function(d,e){var b=[];for(var c in e){var a=ReallyXhr._encodeValue(d+"["+c+"]",e[c]);if(a&&a.length){b.push(a)}}return(b.join("&"))};ReallyXhr._encodeArray=function(e,c){var d=[];var b=c.length;for(var g=0;g<b;g++){var f=e;if(!/\[\]$/.test(e)){f+="["+g+"]"}var a=ReallyXhr._encodeValue(f,c[g]);if(a&&a.length){d.push(a)}}return(d.join("&"))};ReallyXhr._encodeValue=function(a,b){if(b instanceof Array||typeof b=="array"){return(ReallyXhr._encodeArray(a,b))}else{if(typeof b=="object"||typeof b=="function"||b instanceof Function){return(ReallyXhr._encodeObject(a,b))}else{return(a+"="+encodeURIComponent(b))}}};ReallyXhr._createQuery=function(d){if(!d){return("")}var b=[];for(var c in d){var a=ReallyXhr._encodeValue(c,d[c]);if(a&&a.length){b.push(a)}}return(b.join("&"))};ReallyXhr._setValue=function(a,b,c){var d=a[b];if(d&&(typeof d=="string"||d instanceof String)&&(d!="")){a[b]=[d,c]}else{if(d&&(typeof d=="array"||d instanceof Array)){d.push(c)}else{a[b]=c}}};ReallyXhr.getFormValues=function(l){l=ReallyHtml.byId(l);if(!l){return(null)}var m={};var d="file|submit|image|reset|button|";var c="input|select|textarea|";var a=l.elements;for(var f=0;f<a.length;f++){var i=a.item(f);if(!i||!i.name||!i.type||!i.tagName){continue}var b=i.name;var j=(i.type||"").toLowerCase();var n=(i.tagName||"").toLowerCase();if(b&&(c.indexOf(n)!=-1)&&d.indexOf(j)==-1&&!i.disabled){if(j=="radio"||j=="checkbox"){if(i.checked){if(!(/\[\]$/.test(b))){delete m[b]}ReallyXhr._setValue(m,b,i.value)}}else{if(i.multiple){m[b]=[];for(var h=0;h<i.options.length;h++){var g=i.options[h];if(g.selected){ReallyXhr._setValue(m,b,g.value)}}}else{ReallyXhr._setValue(m,b,i.value);if(j=="image"){m[b+".x"]=m[b+".y"]=m[b].x=m[b].y=0}}}}}return(m)};ReallyXhr.setFormValues=function(f,b){f=ReallyHtml.byId(f);if(!f){return(null)}var a="file|submit|image|reset|button|";for(k in f.elements){var g=f.elements[k];var c=g.name;var d=(g.type||"").toLowerCase();if(c&&d&&a.indexOf(d)==-1){if(d=="radio"||d=="checkbox"){if(b[g.name]){var h=b[g.name];g.checked=((g.value==h)||(h[g.value]))}else{g.checked=false}}else{g.value=b[g.name]}}}};ReallyXhr.create=function(){var d;try{d=new XMLHttpRequest()}catch(c){}if(!d){for(var a=0;a<ReallyXhr._XMLHttpClasses.length;a++){try{var b=ReallyXhr._XMLHttpClasses[a];d=new ActiveXObject(b)}catch(c){}if(d){ReallyXhr._XMLHttpClasses=[b];break}}}return(d)};ReallyXhr.send=function(g,a){if(g=="GET"){a.query=null;var c=ReallyXhr._createQuery(a.content);if(c&&c.length){a.url+=(a.url.indexOf("?")==-1?"?":"&")+c}}else{a.query=ReallyXhr._createQuery(a.content)}var f=ReallyXhr.create();f.open(g,a.url,a.sync!==true,a.user||undefined,a.password||undefined);f.setRequestHeader("Content-Type",a.contentType||"application/x-www-form-urlencoded");f.setRequestHeader("X-Requested-With","XMLHttpRequest");var b=new ReallyXhr.handle(f,a);try{if(a.load||a.error){b.onStateChange=ReallyXhr._createStatusHandler(f,a);f.onreadystatechange=ReallyEvent.callback(b,function(){if(this.cancelled){return}this.onStateChange()})}f.send(a.query)}catch(d){if(a.error){a.error(d)}}return(b)};ReallyXhr.get=function(a){return(ReallyXhr.send("GET",a))};ReallyXhr.post=function(a){return(ReallyXhr.send("POST",a))};(function(){var ver=navigator.appVersion;var isSafari=ver.indexOf("Safari");var _escapeString=function(str){return('"'+str.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")};var _getParts=function(arr,obj,cb){return[isString(arr)?arr.split(""):arr,obj||window.document,isString(cb)?new Function("item","index","array",cb):cb]};var _map=function(arr,callback,thisObject){var _p=_getParts(arr,thisObject,callback);arr=_p[0];var outArr=(arguments[3]?(new arguments[3]()):[]);for(var i=0,l=arr.length;i<l;++i){outArr.push(_p[2].call(_p[1],arr[i],i,arr))}return(outArr)};var isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String)};var isArray=function(it){return it&&(it instanceof Array||typeof it=="array")};var isFunction=(function(){var _isFunction=function(it){var t=typeof it;return it&&(t=="function"||it instanceof Function)};return isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false}return _isFunction(it)}:_isFunction})();var isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||isArray(it)||isFunction(it))};var isArrayLike=function(it){return it&&it!==undefined&&!isString(it)&&!isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(isArray(it)||isFinite(it.length))};var isAlien=function(it){return it&&!isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it))};var _jsonEncode=function(it){if(it===undefined){return"undefined"}var objtype=typeof it;if(objtype=="number"||objtype=="boolean"){return it+""}if(it===null){return"null"}if(isString(it)){return _escapeString(it)}var recurse=arguments.callee;var newObj;var tf=it.__json__||it.json;if(isFunction(tf)){newObj=tf.call(it);if(it!==newObj){return recurse(newObj)}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes")}if(isArray(it)){var res=_map(it,function(obj){var val=recurse(obj);if(typeof val!="string"){val="undefined"}return val});return("["+res.join(",")+"]")}if(objtype=="function"){return null}var output=[],key;for(key in it){var keyStr,val;if(typeof key=="number"){keyStr='"'+key+'"'}else{if(typeof key=="string"){keyStr=_escapeString(key)}else{continue}}val=recurse(it[key]);if(typeof val!="string"){continue}output.push(keyStr+":"+val)}return"{"+output.join(",")+"}"};var _jsonDecode=function(json){return(eval("("+json+")"))};var createStateHandler=function(client,callback){var _c=client;var _cb=callback;var stateHandler=function(){if(client.readyState==4){if(client.status==200){var data=_jsonDecode(client.responseText);if(_cb!=null){_cb(data.result)}}}};return(stateHandler)};function ReallyServiceMethod(options){for(k in options){this[k]=options[k]}}ReallyServiceMethod.prototype={};ReallyServiceMethod.prototype.requestType="POST";ReallyServiceMethod.prototype.invoke=function(parameters){var callback=null;var paramsLength=parameters.length;if((paramsLength>0)&&(typeof parameters[paramsLength-1]=="function")){callback=parameters[paramsLength-1];paramsLength--}while((paramsLength>0)&&(typeof parameters[paramsLength-1]=="undefined")){paramsLength--}var params=new Array();for(var i=0;i<paramsLength;i++){params.push(parameters[i])}log("Calling method "+this.name+" with arguments: "+params);var request={method:this.name,params:params,id:++this.service.lastSubmissionId};var client=ReallyXhr.create();client.onreadystatechange=createStateHandler(client,callback);client.open(this.requestType,this.serviceURL);var data=_jsonEncode(request);log("Sending request: "+data);client.send(data)};ReallyService=function(options){this.lastSubmissionId=0;this.methods={};this._createMethod=function(info){var options={service:this,name:info.name,serviceURL:info.serviceURL,parameters:info.parameters};this.methods[info.name]=new ReallyServiceMethod(options);var self=this;var method=function(){return self.methods[options.name].invoke(arguments)};return(method)};for(var i=0;i<options.methods.length;i++){this[options.methods[i].name]=this._createMethod(options.methods[i])}};ReallyService.prototype={}})();
