_global.PerlService = function(hostname,appName,fileName,packageName) { this.host = hostname; this.appName = appName; this.fileName = fileName; this.objectName = packageName; this.replyHandlers = new Object(); } PerlService.prototype.setDefaultReplyObject = function(targetObject,methodname) { this.onReplyMethodName = methodname; this.onReplyObject = targetObject; this.onReplyHandler=null; } PerlService.prototype.setDefaultReplyHandler = function(handler) { this.onReplyHandler = handler; this.onReplyMethodName = null; this.onReplyObject = null; } PerlService.prototype.registerReplyHandler = function(remoteMethodName,handler) { this.replyHandlers[remoteMethodName] = handler; } PerlService.prototype.registerReplyObject = function(remoteMethodName,targetObject,targetMethodName) { this.replyHandlers[remoteMethodName] = {obj:targetObject,mtd:targetMethodName}; } PerlService.prototype.setApplicationName( name ) { this.appName = name; } PerlService.prototype.setFileName( name ) { this.fileName = name; } PerlService.prototype.setPackageName( name ) { this.objectName = name; } PerlService.prototype.onXMLReply = function(status, xmlreturn, methodname) { var returnval; var node = xmlreturn.firstChild; if(node.nodeName!="xwsp"){ return "Error: Server sent an invalid xwsp document"; } node = node.firstChild; if(node.nodeName!="rply") return "Error: Server sent an invalid xwsp document"; if(node.attributes.rslt!="okay") { returnval = node.firstChild.firstChild.nodeValue; } else { node = node.firstChild; returnval = this.idReplyNode(node); } if( this.replyHandlers[methodname] ) { if( typeof(this.replyHandlers[methodName]) == "function" ) { this.replyHandlers[methodName](returnval); } else if( typeof(this.replyHandlers[methodName]) == "object" ) { var obj = this.replyHandlers[methodName].obj; var mtd = this.replyHandlers[methodName].mtd; obj[mtd](returnval); } } else if(this.onReplyHandler) this.onReplyHandler(returnval); else if(this.onReplyObject) this.onReplyObject[this.onReplyMethodName](returnval); } PerlService.prototype.idReplyNode = function(node,key) { if(node.nodeName == "stng") { return node.firstChild.nodeValue; } else if( node.nodeName == "ingr") { return parseInt( node.firstChild.nodeValue ); } else if( node.nodeName == "nmbr") { return parseFloat(node.firstChild.nodeValue); } else if( node.nodeName == "arry") { var arr = new Array(); for(var i=0;i