function ProxyDialer() {} ProxyDialer.userNumber = null; ProxyDialer.errorMessage = ""; ProxyDialer.eventManager = new EventManager(); ProxyDialer.checkCount = 0; ProxyDialer.MAX_CHECK_TRIES = 5; ProxyDialer.actionURL = "/userapp/proxyDialAction.html"; ProxyDialer.DIALER_FAILURE_EVENT = "DialerFailure"; ProxyDialer.dialNumber = function(numberToDial, state) { if (ProxyDialer.userNumber == null) { ProxyDialer.errorMessage = "ERROR: User phone number not set!"; return false; } if (state == null) { state = "Initializing"; } switch (state) { case "Initializing": // check status of the ProxyDialer // reset the check count ProxyDialer.checkCount = 0; ProxyDialer.eventManager.clearDelegates("DialerReady"); var delegate = new FunctionDelegate(ProxyDialer.dialNumber, [numberToDial, "DialerReady"]); ProxyDialer.eventManager.addDelegate("DialerReady", delegate); ProxyDialer.checkDialerStatus(); break; case "DialerReady": var url = ProxyDialer.actionURL; url += "?action=makeCall&extension=" + encodeURIComponent(ProxyDialer.userNumber) + "&dialExtension=" + encodeURIComponent(numberToDial); Ajax.submitRequest(url, ProxyDialer.dialNumberCallback); break; } } ProxyDialer.checkDialerStatus = function(doWait) { if (ProxyDialer.checkCount >= ProxyDialer.MAX_CHECK_TRIES) { ProxyDialer.errorMessage = "Could not place call. The system may be busy. Please try again in a few moments."; ProxyDialer.eventManager.fireEvent(ProxyDialer.DIALER_FAILURE_EVENT); return; } if (doWait) { setTimeout("ProxyDialer.checkDialerStatus(false)", 1000); return; } var url = ProxyDialer.actionURL + "?action=checkStatus"; Ajax.submitRequest(url, ProxyDialer.checkDialerStatusCallback); } ProxyDialer.checkDialerStatusCallback = function(req, err) { if (!err && req.responseText) { try { if (trim(req.responseText) == "Idle") { ProxyDialer.eventManager.fireEvent("DialerReady"); } else { ProxyDialer.checkCount++; ProxyDialer.checkDialerStatus(true); } return; } catch (ex) { ProxyDialer.errorMessage = "System Error: " + ex.toString(); } } ProxyDialer.eventManager.fireEvent(ProxyDialer.DIALER_FAILURE_EVENT); } ProxyDialer.dialNumberCallback = function(req, err) { if (req.responseText && trim(req.responseText).length > 0) { ProxyDialer.errorMessage = req.responseText; ProxyDialer.eventManager.fireEvent(ProxyDialer.DIALER_FAILURE_EVENT); } }