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")}}}};ReallyXhr={};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 F=0;F<B;F++){var A=ReallyXhr._encodeValue(E+"["+F+"]",C[F]);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.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(E,A){if(E=="GET"){A.query=null;var B=ReallyXhr._createQuery(A.content);if(B&&B.length){A.url+=(A.url.indexOf("?")==-1?"?":"&")+B}}else{A.query=ReallyXhr._createQuery(A.content)}var D=ReallyXhr.create();D.open(E,A.url,A.sync!==true,A.user||undefined,A.password||undefined);D.setRequestHeader("Content-Type",A.contentType||"application/x-www-form-urlencoded");D.setRequestHeader("X-Requested-With","XMLHttpRequest");try{if(A.load||A.error){D.onreadystatechange=ReallyXhr._createStatusHandler(D,A)}D.send(A.query)}catch(C){if(A.error){A.error(C)}}};ReallyXhr.get=function(A){ReallyXhr.send("GET",A)};ReallyXhr.post=function(A){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={}})();