
stubbles.json={};stubbles.json.rpc={};stubbles.json.rpc.appendToUrl=null;stubbles.json.rpc.serviceUrl=null;stubbles.json.rpc.Client=function(clientObj){var reqRespMapping=[];var finalServiceUrl=null;var callback={success:function(o){var rpcObj=JSON.parse(o.responseText);for(var i=0;i<reqRespMapping.length;i++){if(rpcObj.id===reqRespMapping[i].id){var classAndMethod=reqRespMapping[i].method.split(".");var methodName='callback__'+classAndMethod[1];if(rpcObj.error===null){clientObj[methodName].call(clientObj,rpcObj.id,rpcObj.result,rpcObj.error);}else{clientObj[methodName].call(clientObj,rpcObj.id,null,rpcObj.error);}
return;}}
var errorMsg='stubbles: no related request id for response id found - mapping in js obj reqRespMapping failed!';clientObj[methodName].call(clientObj,rpcObj.id,null,errorMsg);},failure:function(o){var errorMsg='stubbles: callback error due to bad request from service (instead of HTTP status code 200)';clientObj[methodName].call(clientObj,rpcObj.id,null,errorMsg);}};this.createId=function(){var d=new Date();var id=d.getHours()+''+d.getMinutes()+''+d.getMilliseconds();return id;};this.doCall=function(classAndMethod,args){var id=this.createId();if(stubbles.json.rpc.serviceUrl===null){throw'stubbles: no service url set via js object \'stubbles.json.rpc.serviceUrl\'';}else{if(finalServiceUrl===null){finalServiceUrl=(stubbles.json.rpc.appendToUrl!==null)?stubbles.json.rpc.serviceUrl+'&'+stubbles.json.rpc.appendToUrl:stubbles.json.rpc.serviceUrl;}}
for(var i=0,arr=[];i<args.length;i++){arr[i]=args[i];}
var jsonRpcReq={method:classAndMethod,params:arr,id:id};YAHOO.util.Connect.asyncRequest('POST',finalServiceUrl,callback,JSON.stringify(jsonRpcReq));reqRespMapping.push(jsonRpcReq);return id;};};