﻿// File: /include/js/handlerShim.js
// Desc: Code that allows us to postpone converting the handlers to an event-driven model;
// $Revision: 13$
// $Date: 5/12/2007 1:06:20 AM$
// $Author: Donnie Tognazzini$
// $NoKeywords$

UTILS.inheritFromBase( {}, "createHandlerShim", UTILS.root ).bindToEvent( "ready", function()
{
    var createResponseMessageTrigger = function( handler, member, successEvent, failureEvent )
    {
        handler[ member ] = function( responseMessage )
        {
            if ( responseMessage && responseMessage.m_status == "0" )
                UTILS.raise( arguments.callee.successEvent, [ responseMessage ] );
            else
                UTILS.raise( arguments.callee.failureEvent, [ responseMessage ] );
        };
        handler[ member ].successEvent = successEvent;
        handler[ member ].failureEvent = failureEvent;
    };

    var createStatusMessageTrigger = function( handler, member, failureEvent )
    {
        handler[ member ] = function( statusMessage )
        {
            UTILS.raise( arguments.callee.failureEvent, [ statusMessage ] );
        };
        handler[ member ].failureEvent = failureEvent;
    };

    var accountHandler = controller.m_accountHandler;

    createResponseMessageTrigger( accountHandler, "m_onRegisterAccountSucceeded", "RegistrationSuccess"  , "RegistrationSuccess" );
    createStatusMessageTrigger  ( accountHandler, "m_onRegisterAccountFailed"   , "RegistrationFailure"   );
    createResponseMessageTrigger( accountHandler, "m_onGetAccountInfoSucceeded" , "GetAccountInfoSuccess", "GetAccountInfoSuccess" );
    createStatusMessageTrigger  ( accountHandler, "m_onGetAccountInfoFailed"    , "GetAccountInfoFailure" );
    createResponseMessageTrigger( accountHandler, "m_onAuthenticateSucceeded"   , "AuthenticationSuccess", "AuthenticationSuccess" );
    createStatusMessageTrigger  ( accountHandler, "m_onAuthenticateFailed"      , "AuthenticationFailure" );
    createResponseMessageTrigger( accountHandler, "m_onForgotPinSucceeded"      , "ForgotPinSuccess"     , "ForgotPinSuccess" );
    createStatusMessageTrigger  ( accountHandler, "m_onForgotPinFailed"         , "ForgotPinFailure"     );

    var activationHandler = controller.m_activationView.m_activationHandler;

    createResponseMessageTrigger( activationHandler, "m_onSetCarrierInfoSucceeded" , "SetCarrierIdSuccess"  , "SetCarrierIdSuccess" );
    createStatusMessageTrigger  ( activationHandler, "m_onSetCarrierInfoFailed"    , "SetCarrierIdFailure"   );

    var callListHandler = controller.m_callListView.m_callListHandler;

    callListHandler.m_onCallListChanged = function( statusMessage )
    {
        UTILS.raise( "CallsUpdated", [ statusMessage ] );
    };

    callListHandler.m_onCallListChangedAndActivated = function( statusMessage )
    {
        UTILS.raise( "CallsUpdated", [ statusMessage ] );

        UTILS.raise( "AccountActivated", [ statusMessage ] );
    };

    callListHandler.m_onLoginRequired = function( errorMessage )
    {
        UTILS.raise( "LoginRequired", [ { m_status: 11, m_statusMsg: errorMessage } ] );
    };

    callListHandler.m_onSyncFailed = function( errorMessage )
    {
        UTILS.raise( "GetCallListFailed", [ { m_status: MSG_ResponseStatus.UNEXPECTED_ERROR, m_statusMsg: errorMessage } ] );
    };


    callListHandler.m_getAccountNumberCallBack = function( ) { return PREF_GetPreferences( ).AuthInfo.get( ).accountNumber; };
    callListHandler.m_getUStringCallBack = function( ) { return PREF_GetPreferences( ).AuthInfo.get( ).uString; };
    callListHandler.m_getMaxCallsCallBack = function( ) { return PREF_GetPreferences( ).CallListLength.get( ); };
} );