var AdaptedSoftPhone=new Class({lastUrl:"",onCallStateChanged:null,onRegStateChanged:null,eventListener:null,init:function(d,a){var c=$("TalkPadAdapter");if(!c){throw"not_installed"}var b=c.getProperty("error");if(b&&b!=""){throw b}this.onCallStateChanged=a;this.onRegStateChanged=d;this.eventListener=this.processEvent.create({bind:this,event:true});window.addEventListener("TalkPadEvent",this.eventListener,false)},deinit:function(){if(this.eventListener){window.removeEventListener("TalkPadEvent",this.eventListener,false)}this.eventListener=null},processEvent:function(a){var f=$(a.target);var g=f.getProperty("topic");var e=f.getProperty("data");if(g=="callState"){var h=e.split("|");var b=h[1];var d=h[0];var c=h[2];var j=-1;var i=-1;if(h.length>3){j=h[3];i=h[4]}this.lastUrl=b;if(this.onCallStateChanged){this.onCallStateChanged(d,b,c,j,i)}}else{if(g=="regState"){if(this.onRegStateChanged){this.onRegStateChanged(e)}}}},getLastUrl:function(){return this.lastUrl},invoke:function(c,a){$("TalkPadAdapter").setAttribute("method",c);for(arg in a){$("TalkPadAdapter").setAttribute(arg,a[arg])}$("TalkPadAdapter").setAttribute("retval","");var b=document.createEvent("Events");b.initEvent("TalkPadInvoke",true,false);$("TalkPadAdapter").dispatchEvent(b);return $("TalkPadAdapter").getAttribute("retval")},register:function(b,a){this.invoke("register",{username:b,siteid:a})},registerEx:function(e,b,a,d,c){this.invoke("registerEx",{username:e,password:b,realm:a,registrar:d,proxy:c})},unregister:function(){this.invoke("unregister",{})},call:function(a){this.invoke("call",{url:a})},answer:function(a){this.invoke("answer",{url:a})},cancel:function(a){this.invoke("terminate",{url:a})},refer:function(a,b){this.invoke("refer",{url:a,urlTo:b})},dial:function(a,b){this.invoke("dial",{url:a,digits:b})},requestRegState:function(){this.invoke("getRegState",{})},requestCallState:function(a){this.invoke("getCallState",{url:a})},enumCalls:function(){var a=this.invoke("enumCalls",{});if(!a||a==""){return new Array()}return a.split("|")},isOutOfDate:function(){var a=this.getVersion();if(!a){return false}return a<this.latestVersion()},getVersion:function(){return $("TalkPadAdapter").getProperty("version")},getCompInfo:function(){return $("TalkPadAdapter").getProperty("compinfo")},setPlaybackDevice:function(a){this.invoke("setPlaybackDevice",{playback_device:a})},setCaptureDevice:function(a){this.invoke("setCaptureDevice",{capture_device:a})}});var MozillaSoftPhone=new Class({Extends:AdaptedSoftPhone,latestVersion:function(){return latestXPIVersion},updateLink:function(){return"/getsoftphone/"},installFunction:function(){return function(a){var b={"TalkPad Browser Plugin":{URL:a.target.href,IconURL:"/static/img/callstart.png",toString:function(){return this.URL}}};InstallTrigger.install(b);return false}},prefetchLog:function(){},getLog:function(){return this.invoke("getLog",{})}});var ChromeSoftPhone=new Class({Extends:AdaptedSoftPhone,latestVersion:function(){return latestCRXVersion},updateLink:function(){return"/softphone.crx"},installFunction:function(){return null},prefetchLog:function(){return this.invoke("getLog",{})},getLog:function(){return decodeURI($("TalkPadAdapter").getAttribute("debuglog"))},isOutOfDate:function(){var a=this.getVersion();if(!a){if($("TalkPadAdapter").getAttribute("compinfo")){return true}else{return false}}return a<this.latestVersion()}});var OperaSoftPhone=new Class({Extends:AdaptedSoftPhone,latestVersion:function(){return latestOperaVersion},updateLink:function(){if(navigator.userAgent.indexOf("Version/11")!=-1){return"/softphone-"+this.latestVersion()+".exe"}else{return'javascript: alert("Opera 11 or later is required);'}},installFunction:function(){return null},prefetchLog:function(){return this.invoke("getLog",{})},getLog:function(){return decodeURI($("TalkPadAdapter").getAttribute("debuglog"))},isOutOfDate:function(){var a=this.getVersion();if(!a){return false}if(a.indexOf("OPERA_VERSION")!=-1){return true}return a<this.latestVersion()}});

