Type.createNamespace('BodyClassOverrideComponent');

////////////////////////////////////////////////////////////////////////////////
// BodyClassOverrideComponent.BodyClassOverrideComponent

BodyClassOverrideComponent.BodyClassOverrideComponent = function BodyClassOverrideComponent_BodyClassOverrideComponent() {
    this._bodycssclass = String.Empty;
    BodyClassOverrideComponent.BodyClassOverrideComponent.constructBase(this);
}
BodyClassOverrideComponent.BodyClassOverrideComponent.prototype = {
    _parameters$1: null,
    
    init: function BodyClassOverrideComponent_BodyClassOverrideComponent$init(environment, componentInstanceName, domElementId, parameters) {
        BodyClassOverrideComponent.BodyClassOverrideComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._bodycssclass = parameters['body-css-class'];
        if (this._bodycssclass !== String.Empty) {
            document.body.className += ' ' + this._bodycssclass;
        }
    }
}


BodyClassOverrideComponent.BodyClassOverrideComponent.createClass('BodyClassOverrideComponent.BodyClassOverrideComponent', Framework.Component.AbstractComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('HTMLHeadConfigurationComponent');

////////////////////////////////////////////////////////////////////////////////
// HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent

HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent = function HTMLHeadConfigurationComponent_HTMLHeadConfigurationComponent() {
    this._titleText = String.Empty;
    this._metaKeywords = String.Empty;
    this._metaDescription = String.Empty;
    HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent.constructBase(this);
}
HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent.prototype = {
    _parameters$1: null,
    
    init: function HTMLHeadConfigurationComponent_HTMLHeadConfigurationComponent$init(environment, componentInstanceName, domElementId, parameters) {
        HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._titleText = parameters['title-text'];
        this._metaDescription = parameters['meta-description'];
        this._metaKeywords = parameters['meta-keywords'];
        if (this._titleText !== String.Empty) {
            document.title = this._titleText;
        }
        var metaTags = document.getElementsByTagName('meta');
        for (var i = 0; i < metaTags.length; i++) {
            if (metaTags[i].getAttribute('name').toString() === 'keywords') {
                metaTags[i].setAttribute('content', this._metaKeywords);
            }
            if (metaTags[i].getAttribute('name').toString() === 'description') {
                metaTags[i].setAttribute('content', this._metaDescription);
            }
        }
    }
}


HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent.createClass('HTMLHeadConfigurationComponent.HTMLHeadConfigurationComponent', Framework.Component.AbstractComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('NavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// NavigationComponent.NavigationComponent

NavigationComponent.NavigationComponent = function NavigationComponent_NavigationComponent() {
    NavigationComponent.NavigationComponent.constructBase(this);
}


NavigationComponent.NavigationComponent.createClass('NavigationComponent.NavigationComponent', AbstractWarpComponents.AbstractNavigationComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BoyleSportsHeaderComponent');

////////////////////////////////////////////////////////////////////////////////
// BoyleSportsHeaderComponent.BoyleSportsHeaderComponent

BoyleSportsHeaderComponent.BoyleSportsHeaderComponent = function BoyleSportsHeaderComponent_BoyleSportsHeaderComponent() {
    BoyleSportsHeaderComponent.BoyleSportsHeaderComponent.constructBase(this);
}


BoyleSportsHeaderComponent.BoyleSportsHeaderComponent.createClass('BoyleSportsHeaderComponent.BoyleSportsHeaderComponent', BoyleSportsAbstractComponents.BoyleSportsHeaderComponent.BoyleSportsAbstractHeaderComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('AccountsDetailsComponent');

////////////////////////////////////////////////////////////////////////////////
// AccountsDetailsComponent.AccountsDetailsComponent

AccountsDetailsComponent.AccountsDetailsComponent = function AccountsDetailsComponent_AccountsDetailsComponent() {
    AccountsDetailsComponent.AccountsDetailsComponent.constructBase(this);
}
AccountsDetailsComponent.AccountsDetailsComponent.prototype = {
    _changeActionOnLogout$2: null,
    _changePageAreaOnLogout$2: null,
    _changePageFilterOnLogout$2: null,
    _webSection$2: 'SPORTSBOOK',
    
    refreshBalanceOnClickEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$refreshBalanceOnClickEventHandler(sender, eventArgs) {
        this.refreshBalance();
        window.event.returnValue = false;
    },
    
    goToEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$goToEventHandler(sender, eventArgs) {
        new NavigationService.GoToBehavior(eventArgs.domElement, null, this._navigationService$2);
    },
    
    logoutOnClickEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$logoutOnClickEventHandler(sender, eventArgs) {
        this.logout();
    },
    
    logOutAndGotoPageEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$logOutAndGotoPageEventHandler(sender, eventArgs) {
        this.logout();
        this.removeBSselections();
        this.goToPageArea(eventArgs.parameters.getAsString('pagename'));
    },
    
    logoutAndRemoveSelectionsEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$logoutAndRemoveSelectionsEventHandler(sender, eventArgs) {
        this.logout();
        this.removeBSselections();
    },
    
    _accountService$2: null,
    
    setAccountService: function AccountsDetailsComponent_AccountsDetailsComponent$setAccountService(accountService) {
        this._log.debug('SetAccountService');
        this._accountService$2 = accountService;
    },
    
    onBalanceChanged: function AccountsDetailsComponent_AccountsDetailsComponent$onBalanceChanged(eventSource) {
        this._log.debug('OnBalanceChanged');
        this.update();
    },
    
    onAccountPreferencesChanged: function AccountsDetailsComponent_AccountsDetailsComponent$onAccountPreferencesChanged(eventSource) {
        this._log.debug('OnAccountPreferencesChanged');
        this.update();
    },
    
    _navigationService$2: null,
    
    setNavigationService: function AccountsDetailsComponent_AccountsDetailsComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function AccountsDetailsComponent_AccountsDetailsComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _userService$2: null,
    
    setUserService: function AccountsDetailsComponent_AccountsDetailsComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    _betSlipService$2: null,
    
    setBetSlipService: function AccountsDetailsComponent_AccountsDetailsComponent$setBetSlipService(betSlipService) {
        this._log.debug('SetBetSlipService');
        this._betSlipService$2 = betSlipService;
    },
    
    init: function AccountsDetailsComponent_AccountsDetailsComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._changeActionOnLogout$2 = parameters['change-action-on-logout'];
        this._changePageAreaOnLogout$2 = parameters['change-page-area-on-logout'];
        this._changePageFilterOnLogout$2 = parameters['page-filter-on-logout'];
        this._webSection$2 = parameters['web-section'];
    },
    
    preTransformation: function AccountsDetailsComponent_AccountsDetailsComponent$preTransformation(eventArgs) {
        if (!this._accountService$2.get_accountsDetails() && this._userService$2.isLoggedIn()) {
            this._accountService$2.onUserChanged(null);
        }
    },
    
    renderComplete: function AccountsDetailsComponent_AccountsDetailsComponent$renderComplete(eventArgs) {
        this.refreshBalance();
    },
    
    get_isComponentVisible: function AccountsDetailsComponent_AccountsDetailsComponent$get_isComponentVisible() {
        return (this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction()) && this._userService$2.isLoggedIn());
    },
    
    getXsltParameters: function AccountsDetailsComponent_AccountsDetailsComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['web-section'] = this._webSection$2;
        if (this._userService$2.get_personalDetails()) {
            xsltParameters['name'] = this._userService$2.get_personalDetails().FullName;
        }
        if (this._accountService$2.get_accountsDetails()) {
            xsltParameters['trading-cache-balance'] = this._accountService$2.get_creditAccountDetails().TradingBalance.format('N', true);
            xsltParameters['account-number'] = this._accountService$2.get_creditAccountDetails().AccountNumber;
            xsltParameters['currency-symbol'] = this._accountService$2.getCurrencySimbol();
            var cashBalance = this._accountService$2.get_creditAccountDetails().WithdrawalBalance;
            xsltParameters['cash-balance'] = ((cashBalance < 0) ? '-' : '') + cashBalance.format('N2', true);
            var creditLimit = this._accountService$2.get_creditAccountDetails().TradingBalance - this._accountService$2.get_creditAccountDetails().WithdrawalBalance;
            xsltParameters['credit-limit'] = ((creditLimit < 0) ? '-' : '') + creditLimit.format('N2', true);
            var freeBalance = this._accountService$2.get_freeAccountDetails().WithdrawalBalance;
            xsltParameters['free-balance'] = ((freeBalance < 0) ? '-' : '') + freeBalance.format('N2', true);
            var availableFunds = this._accountService$2.get_creditAccountDetails().TradingBalance + this._accountService$2.get_freeAccountDetails().TradingBalance;
            xsltParameters['available-funds'] = ((availableFunds < 0) ? '-' : '') + availableFunds.format('N2', true);
            if (this._accountService$2.get_preferences()) {
                xsltParameters['is-account-balance-constantly-displayed'] = this._accountService$2.get_preferences().IsAccountBalanceConstantlyDisplayed;
                xsltParameters['is-call-centre-account-number-constantly-displayed'] = this._accountService$2.get_preferences().IsCallCentreAccountNumberConstantlyDisplayed;
            }
        }
        return xsltParameters;
    },
    
    refreshBalance: function AccountsDetailsComponent_AccountsDetailsComponent$refreshBalance() {
        this._log.debug('RefreshBalance');
        this._accountService$2.fetchAccountsDetails();
    },
    
    logout: function AccountsDetailsComponent_AccountsDetailsComponent$logout() {
        this._log.debug('Logout');
        this.disable();
        this._userService$2.logout(Delegate.create(this, function(result) {
            this.enable();
            this.changeActionOnLogout();
            this.changePageAreaOnLogout();
        }), Delegate.create(this, function(exception) {
            this.enable();
        }));
    },
    
    changeActionOnLogout: function AccountsDetailsComponent_AccountsDetailsComponent$changeActionOnLogout() {
        if (!String.isNullOrEmpty(this._changeActionOnLogout$2)) {
            var pageFilter = this._navigationService$2.getPageFilter();
            pageFilter['action'] = this._changeActionOnLogout$2;
            this._navigationService$2.setPageFilter(pageFilter);
        }
    },
    
    changePageAreaOnLogout: function AccountsDetailsComponent_AccountsDetailsComponent$changePageAreaOnLogout() {
        if (!String.isNullOrEmpty(this._changePageAreaOnLogout$2)) {
            if (!String.isNullOrEmpty(this._changePageFilterOnLogout$2)) {
                var pageFilter = {};
                var key = String.Empty;
                var value = String.Empty;
                var pageFilterConfig = this._changePageFilterOnLogout$2.split('|');
                for (var i = 0; i < pageFilterConfig.length; i++) {
                    if (i % 2 === 1) {
                        value = pageFilterConfig[i].toString();
                    }
                    else {
                        key = pageFilterConfig[i].toString();
                    }
                    pageFilter[key] = value;
                }
                this.goTo(this._changePageAreaOnLogout$2, pageFilter);
            }
            else {
                this.goTo(this._changePageAreaOnLogout$2, {});
            }
        }
    },
    
    goTo: function AccountsDetailsComponent_AccountsDetailsComponent$goTo(pageArea, pageFilter) {
        this._navigationService$2.goTo(pageArea, pageFilter);
        return false;
    },
    
    goToPageArea: function AccountsDetailsComponent_AccountsDetailsComponent$goToPageArea(pageArea) {
        var pageFilter = this._navigationService$2.getPageFilter();
        return this.goTo(pageArea, pageFilter);
    },
    
    removeBSselections: function AccountsDetailsComponent_AccountsDetailsComponent$removeBSselections() {
        this._betSlipService$2.removeAllSelections();
    }
}


AccountsDetailsComponent.AccountsDetailsComponent.createClass('AccountsDetailsComponent.AccountsDetailsComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, AccountService.IBalanceChangedListener, AccountService.IAccountPreferencesChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BoyleSportsLoginComponent');

////////////////////////////////////////////////////////////////////////////////
// BoyleSportsLoginComponent.BoyleSportsLoginComponent

BoyleSportsLoginComponent.BoyleSportsLoginComponent = function BoyleSportsLoginComponent_BoyleSportsLoginComponent() {
    BoyleSportsLoginComponent.BoyleSportsLoginComponent.constructBase(this);
}


BoyleSportsLoginComponent.BoyleSportsLoginComponent.createClass('BoyleSportsLoginComponent.BoyleSportsLoginComponent', BoyleSportsAbstractComponents.BoyleSportsLoginComponent.BoyleSportsAbstractLoginComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('TrackingComponent');

////////////////////////////////////////////////////////////////////////////////
// TrackingComponent.TrackingComponent

TrackingComponent.TrackingComponent = function TrackingComponent_TrackingComponent() {
    this._trackingEvents$2 = {};
    TrackingComponent.TrackingComponent.constructBase(this);
}
TrackingComponent.TrackingComponent.prototype = {
    _trackingEventsXmlFile$2: 'regularTracking.xml',
    _matchingFimsid$2: null,
    _iDMMCustomer$2: 0,
    _replaceTokenWithFimsID$2: false,
    _navigationService$2: null,
    
    setNavigationService: function TrackingComponent_TrackingComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function TrackingComponent_TrackingComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _accountService$2: null,
    
    setAccountService: function TrackingComponent_TrackingComponent$setAccountService(accountService) {
        this._log.debug('SetAccountService');
        this._accountService$2 = accountService;
    },
    
    onDepositExecuted: function TrackingComponent_TrackingComponent$onDepositExecuted(eventSource) {
        this._log.debug('OnDepositExecuted');
        this._raiseTrackingEvent$2('accountService.deposit');
    },
    
    _userService$2: null,
    
    setUserService: function TrackingComponent_TrackingComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserRegistered: function TrackingComponent_TrackingComponent$onUserRegistered() {
        this._log.debug('OnUserRegistered');
        this._userService$2.getIDMMCustomer(Delegate.create(this, function(result) {
            this._iDMMCustomer$2 = result;
            this._raiseTrackingEvent$2('userService.registration');
        }), Delegate.create(this, function(ex) {
        }));
    },
    
    init: function TrackingComponent_TrackingComponent$init(environment, componentInstanceName, domElementId, parameters) {
        if (Object.keyExists(parameters, 'replace-token-with-FimsID')) {
            this._replaceTokenWithFimsID$2 = Boolean.parse(parameters['replace-token-with-FimsID']);
        }
        if (Object.keyExists(parameters, 'matching-fimsid')) {
            this._matchingFimsid$2 = parameters['matching-fimsid'];
        }
        if (Object.keyExists(parameters, 'tracking-events-xml-file')) {
            this._trackingEventsXmlFile$2 = parameters['tracking-events-xml-file'];
        }
    },
    
    preTransformation: function TrackingComponent_TrackingComponent$preTransformation(eventArgs) {
        eventArgs.get_contextObject().contentUrl = String.format('/areas/{0}/template_{1}_{2}/components/TrackingComponent/{3}', this._environment.getPageArea(), this._environment.getRegion(), this._environment.getLanguage(), this._trackingEventsXmlFile$2);
    },
    
    xmlContentReceived: function TrackingComponent_TrackingComponent$xmlContentReceived(eventArgs) {
        if (eventArgs.get_contentXmlDocument().hasChildNodes()) {
            this._loadTrackingEventsFromXML$2(eventArgs.get_contentXmlDocument());
            this._raiseTrackingEvent$2('pagArea.' + this._navigationService$2.getPageArea() + '.repaint');
        }
    },
    
    get_isComponentVisible: function TrackingComponent_TrackingComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    show: function TrackingComponent_TrackingComponent$show() {
        TrackingComponent.TrackingComponent.callBase(this, 'hide');
    },
    
    _raiseTrackingEvent$2: function TrackingComponent_TrackingComponent$_raiseTrackingEvent$2(trackingEvent) {
        if (Object.keyExists(this._trackingEvents$2, trackingEvent)) {
            var trackingHTMLtoInsert = this._trackingEvents$2[trackingEvent];
            if (!String.isNullOrEmpty(this._matchingFimsid$2)) {
                if (Framework.CookieUtil.getCookie(this._userService$2.get_fimsIDCookieName()) !== this._matchingFimsid$2) {
                    return;
                }
            }
            if (this._replaceTokenWithFimsID$2) {
                trackingHTMLtoInsert = String.format(trackingHTMLtoInsert, Framework.CookieUtil.getCookie(this._userService$2.get_fimsIDCookieName()), Framework.CookieUtil.getCookie(this._userService$2.get_fimsAdvertIDCookieName()), this._iDMMCustomer$2);
            }
            this._environment.updateDomElement(this._domElementId, trackingHTMLtoInsert);
        }
    },
    
    _loadTrackingEventsFromXML$2: function TrackingComponent_TrackingComponent$_loadTrackingEventsFromXML$2(trackingXML) {
        var trackingEventNodes = trackingXML.getElementsByTagName('trackingEvent');
        for (var i = 0; i < trackingEventNodes.length; i++) {
            if (trackingEventNodes[i].firstChild) {
                this._trackingEvents$2[trackingEventNodes[i].attributes.getNamedItem('name').text] = trackingEventNodes[i].firstChild.xml;
            }
        }
    }
}


TrackingComponent.TrackingComponent.createClass('TrackingComponent.TrackingComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, AccountService.IDepositExecutedListener, UserService.IUserIsRegisteredListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BoyleSportsGamesFrameComponent');

////////////////////////////////////////////////////////////////////////////////
// BoyleSportsGamesFrameComponent.BoyleSportsGamesFrameComponent

BoyleSportsGamesFrameComponent.BoyleSportsGamesFrameComponent = function BoyleSportsGamesFrameComponent_BoyleSportsGamesFrameComponent() {
    BoyleSportsGamesFrameComponent.BoyleSportsGamesFrameComponent.constructBase(this);
}


BoyleSportsGamesFrameComponent.BoyleSportsGamesFrameComponent.createClass('BoyleSportsGamesFrameComponent.BoyleSportsGamesFrameComponent', BoyleSportsAbstractComponents.BoyleSportsGamesFrameComponent.BoyleSportsAbstractGamesFrameComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('SimpleHTMLComponent');

////////////////////////////////////////////////////////////////////////////////
// SimpleHTMLComponent.SimpleHTMLComponent

SimpleHTMLComponent.SimpleHTMLComponent = function SimpleHTMLComponent_SimpleHTMLComponent() {
    SimpleHTMLComponent.SimpleHTMLComponent.constructBase(this);
}
SimpleHTMLComponent.SimpleHTMLComponent.prototype = {
    _parameters$1: null,
    _repaintOnUserChanged$1: false,
    _repaintOnPageFilterChanged$1: false,
    _content$1: null,
    _navigationService$1: null,
    
    setNavigationService: function SimpleHTMLComponent_SimpleHTMLComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.page);
    },
    
    onPageFilterChanged: function SimpleHTMLComponent_SimpleHTMLComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        if (this._repaintOnPageFilterChanged$1) {
            this.repaint();
        }
    },
    
    _userService$1: null,
    
    setUserService: function SimpleHTMLComponent_SimpleHTMLComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$1 = userService;
    },
    
    onUserChanged: function SimpleHTMLComponent_SimpleHTMLComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        if (this._repaintOnUserChanged$1) {
            this.repaint();
        }
    },
    
    init: function SimpleHTMLComponent_SimpleHTMLComponent$init(environment, componentInstanceName, domElementId, parameters) {
        SimpleHTMLComponent.SimpleHTMLComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._repaintOnUserChanged$1 = Boolean.parse(parameters['repaint-onuserchanged']);
        this._repaintOnPageFilterChanged$1 = Boolean.parse(parameters['repaint-onpagefilterchanged']);
        this._content$1 = parameters['content'];
    },
    
    start: function SimpleHTMLComponent_SimpleHTMLComponent$start() {
        this.repaint();
    },
    
    repaint: function SimpleHTMLComponent_SimpleHTMLComponent$repaint() {
        this._log.debug('Repaint');
        var _componentDOMElement = this._environment.getDomElement(this._domElementId);
        _componentDOMElement.className = _componentDOMElement.className + ' escapedHtml';
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction())) {
            this.show();
            this._environment.updateDomElementDirect(_componentDOMElement, this._content$1);
        }
        else {
            this.hide();
        }
    }
}


SimpleHTMLComponent.SimpleHTMLComponent.createClass('SimpleHTMLComponent.SimpleHTMLComponent', Framework.Component.AbstractComponent, UserService.IUserChangedListener, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PopupContainerComponent');

////////////////////////////////////////////////////////////////////////////////
// PopupContainerComponent.PopupContainerComponent

PopupContainerComponent.PopupContainerComponent = function PopupContainerComponent_PopupContainerComponent() {
    PopupContainerComponent.PopupContainerComponent.constructBase(this);
}
PopupContainerComponent.PopupContainerComponent.prototype = {
    _navigationService: null,
    _parameters: null,
    _params: null,
    
    init: function PopupContainerComponent_PopupContainerComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PopupContainerComponent.PopupContainerComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = parameters;
        this._parameters['component-dom-element-id'] = domElementId;
        this._params = new Framework.CommonComponentParameters(this._parameters);
    },
    
    get_isTransparentLayerCreated: function PopupContainerComponent_PopupContainerComponent$get_isTransparentLayerCreated() {
        var element = this._environment.getDomElement(this.get_domElementId() + '-shadow');
        return (element);
    },
    
    start: function PopupContainerComponent_PopupContainerComponent$start() {
        if (this.isVisible(this._params.get_visibleOn(), this._params.get_notVisibleOn(), this._navigationService.getAction())) {
            this.show();
            var html = String.format('<div id =\"{0}\" class=\"popupcontent\"></div>', this.get_domElementId() + '-popupcontent');
            this._environment.updateDomElement(this._domElementId, html);
            this.startAllChildren();
        }
        else {
            this.hide();
        }
    },
    
    startAllChildren: function PopupContainerComponent_PopupContainerComponent$startAllChildren() {
        if (!this.get_children() || this.get_children().length < 1) {
            return;
        }
        var domElementId;
        for (var index = 0; index < this.get_children().length; index++) {
            domElementId = this.get_children()[index].get_domElementId();
            this.repaintChild(this.get_children()[index], this.get_children()[index].get_domElementId());
        }
    },
    
    repaintChild: function PopupContainerComponent_PopupContainerComponent$repaintChild(child, _domElementId) {
        this._log.debug('RepaintChild');
        var element = document.createElement('DIV');
        element.id = _domElementId;
        element = this._environment.getDomElement(this.get_domElementId() + '-popupcontent').appendChild(element);
        child.set_domElementId(_domElementId);
        if (!String.isNullOrEmpty(child.get_cssClass())) {
            element.className = child.get_cssClass();
        }
        var manager = child.get_componentLifeCycleManager();
        manager.start();
    },
    
    show: function PopupContainerComponent_PopupContainerComponent$show() {
        if (!this.get_isTransparentLayerCreated()) {
            var shadow = document.createElement('DIV');
            shadow.className = 'shadow';
            shadow.id = this.get_domElementId() + '-shadow';
            document.body.appendChild(shadow);
        }
        else {
            var element = this._environment.getDomElement(this.get_domElementId() + '-shadow');
            element.className = 'shadow';
        }
        PopupContainerComponent.PopupContainerComponent.callBase(this, 'show');
    },
    
    hide: function PopupContainerComponent_PopupContainerComponent$hide() {
        if (this.get_isTransparentLayerCreated()) {
            var element = this._environment.getDomElement(this.get_domElementId() + '-shadow');
            element.className = '';
        }
        PopupContainerComponent.PopupContainerComponent.callBase(this, 'hide');
    },
    
    onPageFilterChanged: function PopupContainerComponent_PopupContainerComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.start();
    },
    
    setNavigationService: function PopupContainerComponent_PopupContainerComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService = navigationService;
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    _userService: null,
    
    setUserService: function PopupContainerComponent_PopupContainerComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService = userService;
    },
    
    onUserChanged: function PopupContainerComponent_PopupContainerComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        this.hide();
    },
    
    childComponentUpdateComplete: function PopupContainerComponent_PopupContainerComponent$childComponentUpdateComplete(eventArgs) {
        PopupContainerComponent.PopupContainerComponent.callBase(this, 'childComponentUpdateComplete', [ eventArgs ]);
    }
}


PopupContainerComponent.PopupContainerComponent.createClass('PopupContainerComponent.PopupContainerComponent', Framework.Component.AbstractComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BoyleSportsPaymentTransactionComponent');

////////////////////////////////////////////////////////////////////////////////
// BoyleSportsPaymentTransactionComponent.BoyleSportsPaymentTransactionComponent

BoyleSportsPaymentTransactionComponent.BoyleSportsPaymentTransactionComponent = function BoyleSportsPaymentTransactionComponent_BoyleSportsPaymentTransactionComponent() {
    BoyleSportsPaymentTransactionComponent.BoyleSportsPaymentTransactionComponent.constructBase(this);
}


BoyleSportsPaymentTransactionComponent.BoyleSportsPaymentTransactionComponent.createClass('BoyleSportsPaymentTransactionComponent.BoyleSportsPaymentTransactionComponent', BoyleSportsAbstractComponents.BoyleSportsPaymentTransactionComponent.BoyleSportsAbstractPaymentTransactionComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('RegisterCardComponent');

////////////////////////////////////////////////////////////////////////////////
// RegisterCardComponent.RegisterCardComponent

RegisterCardComponent.RegisterCardComponent = function RegisterCardComponent_RegisterCardComponent() {
    this._billingAddressDetails$2 = new Array(6);
    RegisterCardComponent.RegisterCardComponent.constructBase(this);
}
RegisterCardComponent.RegisterCardComponent.prototype = {
    _validationManager: null,
    _defaultCounry$2: '',
    _hideBillingAddressForActions$2: '',
    _integrationSection$2: null,
    _messageElementID$2: null,
    _nonMandatoryFields$2: '',
    
    setMessageElementID: function RegisterCardComponent_RegisterCardComponent$setMessageElementID(messageElementID) {
        this._messageElementID$2 = messageElementID;
    },
    
    _accountService$2: null,
    
    setAccountService: function RegisterCardComponent_RegisterCardComponent$setAccountService(accountService) {
        this._log.debug('SetAccountService');
        this._accountService$2 = accountService;
    },
    
    _navigationService$2: null,
    
    setNavigationService: function RegisterCardComponent_RegisterCardComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function RegisterCardComponent_RegisterCardComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _userService$2: null,
    
    setUserService: function RegisterCardComponent_RegisterCardComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function RegisterCardComponent_RegisterCardComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        this.update();
    },
    
    onCreatedEventHandler: function RegisterCardComponent_RegisterCardComponent$onCreatedEventHandler(sender, e) {
        this._environment.getDomElement(this._componentInstanceName).style.display = 'none';
    },
    
    registerCardEventHandler: function RegisterCardComponent_RegisterCardComponent$registerCardEventHandler(sender, eventArgs) {
        if (this._validationManager.validateAll()) {
            this._registerCard$2(Framework.FormUtil.getFormAsDictionary(this._domElementId + '-form', this._domElementId + '-'));
        }
    },
    
    navigateToPageAreaEventHandler: function RegisterCardComponent_RegisterCardComponent$navigateToPageAreaEventHandler(sender, eventArgs) {
        this._navigateToPageArea$2(eventArgs.parameters.getAsString('pagearea'), eventArgs.parameters.getAsString('action'));
    },
    
    validateNumberAndLengthEventHandler: function RegisterCardComponent_RegisterCardComponent$validateNumberAndLengthEventHandler(sender, eventArgs) {
        this._validateNumberAndLength$2(eventArgs.domElement, eventArgs.parameters.getAsString('labelid'), eventArgs.parameters.getAsNumber('length'));
    },
    
    closeRegisterCardEventHandler: function RegisterCardComponent_RegisterCardComponent$closeRegisterCardEventHandler(sender, eventArgs) {
        if (eventArgs.parameters.containsKey('windowlocation')) {
            eval('javascript:window.location=\'' + eventArgs.parameters.getAsString('windowlocation') + '\';');
        }
        else {
            var action = eventArgs.parameters.getAsString('action');
            this._navigationService$2.setAction(action);
        }
    },
    
    billingAddressChooserEventHandler: function RegisterCardComponent_RegisterCardComponent$billingAddressChooserEventHandler(sender, eventArgs) {
        if (eventArgs.parameters.getAsBoolean('isregistered')) {
            var newChkBox = this.getPrivateDomElement('billingNewAddress');
            if (newChkBox) {
                (newChkBox).checked = false;
            }
            var registeredChkBox = this.getPrivateDomElement('billingRegisteredAddress');
            if (registeredChkBox) {
                (registeredChkBox).checked = true;
            }
        }
        else {
            var registeredChkBox = this.getPrivateDomElement('billingRegisteredAddress');
            if (registeredChkBox) {
                (registeredChkBox).checked = false;
            }
            var newChkBox = this.getPrivateDomElement('billingNewAddress');
            if (newChkBox) {
                (newChkBox).checked = true;
            }
        }
        this._billingAddressChooser$2();
    },
    
    validateBeforeRegisterCardEventHandler: function RegisterCardComponent_RegisterCardComponent$validateBeforeRegisterCardEventHandler(sender, eventArgs) {
        if (this._billingAddressValidator$2()) {
            this._registerCard$2(Framework.FormUtil.getFormAsDictionary(this._domElementId + '-form', this._domElementId + '-'));
        }
    },
    
    init: function RegisterCardComponent_RegisterCardComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._integrationSection$2 = parameters['integration-section'];
        this._hideBillingAddressForActions$2 = (parameters['hide-billing-address-for-actions']).toLowerCase();
        if (Object.keyExists(parameters, 'non-mandatory-fields')) {
            this._nonMandatoryFields$2 = (parameters['non-mandatory-fields']).toLowerCase();
            if (this._nonMandatoryFields$2.length > 0) {
                this._nonMandatoryFields$2 = ',' + this._nonMandatoryFields$2 + ',';
            }
        }
        this._validationManager = new Framework.Validation.ValidationManager(this._environment);
        this.registerValidators();
    },
    
    renderComplete: function RegisterCardComponent_RegisterCardComponent$renderComplete(eventArgs) {
        var progress = this._navigationService$2.getPageFilter()['progress'];
        if (progress === '3') {
            var regCardHeader = document.getElementById('regcard-header');
            var registerCardButton = document.getElementById('register-card-button');
            var completeRegistrationButton = document.getElementById('complete-registration-button');
            var stage3Header = document.getElementById('stage-3-header');
            if (regCardHeader) {
                regCardHeader.style.display = 'none';
            }
            if (stage3Header) {
                stage3Header.style.display = 'block';
            }
            if (registerCardButton) {
                registerCardButton.style.display = 'none';
            }
            if (completeRegistrationButton) {
                completeRegistrationButton.style.display = 'block';
            }
        }
    },
    
    get_isComponentVisible: function RegisterCardComponent_RegisterCardComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction()) && this._userService$2.isLoggedIn();
    },
    
    getXsltParameters: function RegisterCardComponent_RegisterCardComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['integration-section'] = this._integrationSection$2;
        var currentAction = this._navigationService$2.getAction().toLowerCase();
        xsltParameters['hide_billing_address'] = (this._hideBillingAddressForActions$2.indexOf(currentAction) > -1) ? true : false;
        if (this._userService$2.get_personalDetails()) {
            this._billingAddressDetails$2[0] = this._userService$2.get_personalDetails().HomePhone;
            xsltParameters['phone-number'] = this._billingAddressDetails$2[0];
            this._billingAddressDetails$2[1] = this._userService$2.get_personalDetails().StreetAddress;
            xsltParameters['address'] = this._billingAddressDetails$2[1];
            this._billingAddressDetails$2[2] = this._userService$2.get_personalDetails().City;
            xsltParameters['city'] = this._billingAddressDetails$2[2];
            this._billingAddressDetails$2[3] = this._userService$2.get_personalDetails().PostCode;
            xsltParameters['post-code'] = this._billingAddressDetails$2[3];
            this._billingAddressDetails$2[4] = this._userService$2.get_personalDetails().CountyOrStateOrProvince;
            xsltParameters['county'] = this._billingAddressDetails$2[4];
            this._billingAddressDetails$2[5] = this._userService$2.get_personalDetails().IDMMCountry;
            xsltParameters['idmmcountry'] = this._billingAddressDetails$2[5];
        }
        return xsltParameters;
    },
    
    _verifyCard$2: function RegisterCardComponent_RegisterCardComponent$_verifyCard$2(IDMMSIInstruction) {
        this._log.debug('VerifyCard');
        if (!IDMMSIInstruction) {
            return;
        }
        this._accountService$2.getPaymentInstrument(Delegate.create(this, function(result) {
            var paymentInstrument = result;
            this._log.debug(String.format('paymentInstrument.verificationStatus = [{0}]', paymentInstrument.VerificationStatus));
            if (paymentInstrument.VerificationStatus === -1) {
                if (Object.keyExists(this._navigationService$2.getPageFilter(), 'progress')) {
                    this._navigationService$2.goTo('accounting', { action: 'deposit' });
                }
                else {
                    this._navigationService$2.goTo(this._navigationService$2.getPageArea(), { action: 'deposit' });
                }
                this._environment.getDomElement(this._domElementId).style.cursor = 'default';
            }
            else if (!paymentInstrument.VerificationStatus) {
                this._environment.updateDomElement(this._domElementId + '-status', '<p class=\'error\'>Card verification failed</p>');
                this._environment.getDomElement(this._domElementId).style.cursor = 'default';
                this.enable();
            }
            else if (paymentInstrument.VerificationStatus === -2) {
                this._environment.updateDomElement(this._domElementId + '-status', '<p class=\'msg\'>Verifying card</p>');
                window.setTimeout(Delegate.create(this, function() {
                    this._verifyCard$2(IDMMSIInstruction);
                }), 3000);
            }
        }), Delegate.create(this, function(exception) {
            var errorMessage = Framework.ExceptionUtil.getExceptionDetails(exception).get_message();
            this._log.debug(String.format('Card verification failed, error message = [{0}]', errorMessage));
            this.update();
        }), IDMMSIInstruction);
    },
    
    _registerCard$2: function RegisterCardComponent_RegisterCardComponent$_registerCard$2(card) {
        this._log.debug('RegisterCard');
        if (!String.isNullOrEmpty(card['CardNumber'].toString())) {
            this.disable();
            document.getElementById(this._domElementId).style.cursor = 'wait';
            this._accountService$2.registerCard(Delegate.create(this, function(result) {
                var IDMMSIInstruction = result;
                this._log.debug(String.format('Card registered successfully, IDMMSIInstruction = [{0}]', IDMMSIInstruction));
                this._verifyCard$2(IDMMSIInstruction);
            }), Delegate.create(this, function(exception) {
                this.enable();
                document.getElementById(this._domElementId).style.cursor = 'default';
                this._environment.updateDomElement(this._domElementId + '-status', String.format('<p class=\'error\'>{0}</p>', Framework.ExceptionUtil.getExceptionDetails(exception).get_message()));
            }), card);
        }
        else {
            this._environment.updateDomElement(this._domElementId + '-status', '<p class=\'error\'>Card number is required.</p>');
        }
    },
    
    _navigateToPageArea$2: function RegisterCardComponent_RegisterCardComponent$_navigateToPageArea$2(area, action) {
        var pageFilter = {};
        if (String.isNullOrEmpty(action)) {
            pageFilter['action'] = 'upgrade-call-centre-customer';
        }
        else {
            pageFilter['action'] = action;
        }
        this._navigationService$2.forwardTo(area, pageFilter);
    },
    
    _validateNumberAndLength$2: function RegisterCardComponent_RegisterCardComponent$_validateNumberAndLength$2(oInput, labelID, Length) {
        var oValue = oInput.value;
        if (this._isNumberAndLength$2(oValue, labelID, Length)) {
            this._environment.updateDomElement(this._domElementId + '-status', '');
            document.getElementById(labelID).className = 'okLabel';
        }
    },
    
    _isNumberAndLength$2: function RegisterCardComponent_RegisterCardComponent$_isNumberAndLength$2(oValue, labelID, Length) {
        var testTheNext = Number.parse(oValue);
        if (isNaN(testTheNext)) {
            this._environment.updateDomElement(this._domElementId + '-status', '<p class=\'error\'>Number value is required.</p>');
            document.getElementById(labelID).className = 'errorLabel';
            return false;
        }
        else {
            if (Length > 0) {
                if (oValue.length === Length) {
                    return true;
                }
                else {
                    this._environment.updateDomElement(this._domElementId + '-status', '<p class=\'error\'>Value length needs to be ' + Length + '.</p>');
                    document.getElementById(labelID).className = 'errorLabel';
                    return false;
                }
            }
            else {
                return true;
            }
        }
    },
    
    _billingAddressChooser$2: function RegisterCardComponent_RegisterCardComponent$_billingAddressChooser$2() {
        var oElements = [];
        var i = 0;
        oElements[0] = this.getPrivateDomElement('PhoneNumber');
        oElements[1] = this.getPrivateDomElement('Address');
        oElements[2] = this.getPrivateDomElement('City');
        oElements[3] = this.getPrivateDomElement('Postcode');
        oElements[4] = this.getPrivateDomElement('State');
        oElements[5] = this.getPrivateDomElement('IDMMCountry');
        var oIsSameAsMainAddress = this.getPrivateDomElement('isSameAsMainAddress');
        var oCurrentSelect = this.getPrivateDomElement('billingRegisteredAddress');
        if (oCurrentSelect.checked) {
            for (i = 0; i < 6; i++) {
                oElements[i].value = this._billingAddressDetails$2[i];
                oElements[i].disabled = true;
                oIsSameAsMainAddress.value = 'true';
            }
            this._billingAddressValidator$2();
        }
        else {
            for (i = 0; i < 6; i++) {
                oElements[i].value = '';
                oElements[i].disabled = false;
                oIsSameAsMainAddress.value = 'false';
            }
        }
    },
    
    _billingAddressValidator$2: function RegisterCardComponent_RegisterCardComponent$_billingAddressValidator$2() {
        var isValid = false;
        isValid = this._validationManager.validateAll();
        return isValid;
    },
    
    registerValidators: function RegisterCardComponent_RegisterCardComponent$registerValidators() {
        if (this._nonMandatoryFields$2.indexOf(',cardnumber,') === -1) {
            this._registerDefaultElementMandatoryValidator$2('CardNumber');
        }
        if (this._nonMandatoryFields$2.indexOf(',nameasoncard,') === -1) {
            this._registerDefaultElementMandatoryValidator$2('NameAsOnCard');
        }
        if (this._nonMandatoryFields$2.indexOf(',address,') === -1) {
            this._registerDefaultElementMandatoryValidator$2('Address');
        }
        if (this._nonMandatoryFields$2.indexOf(',city,') === -1) {
            this._registerDefaultElementMandatoryValidator$2('City');
        }
        if (this._nonMandatoryFields$2.indexOf(',postcode,') === -1) {
            this._registerDefaultElementMandatoryValidator$2('Postcode');
        }
        if (this._nonMandatoryFields$2.indexOf(',phonenumber,') === -1) {
            var _phoneVal = new Framework.Validation.RegexValidator('^[0-9\\s\\+]+$');
            _phoneVal.errorElementId = 'errorPhoneNumber';
            _phoneVal.inputElementId = this._domElementId + '-phoneNumber';
            _phoneVal.labelElementId = 'lblPhoneNumber';
            this._validationManager.registerInputForValidation(_phoneVal);
        }
    },
    
    _registerDefaultElementMandatoryValidator$2: function RegisterCardComponent_RegisterCardComponent$_registerDefaultElementMandatoryValidator$2(ElementName) {
        ElementName = ElementName.trim();
        this._validationManager.registerMandatoryValidator(this._domElementId + '-' + ElementName, this._domElementId + '-errorBaitLabel', 'error' + ElementName);
    },
    
    _registerDefaultElementMandatoryValidatorEx$2: function RegisterCardComponent_RegisterCardComponent$_registerDefaultElementMandatoryValidatorEx$2(manager, ElementName, failtureCallBack, successCallBack) {
        ElementName = ElementName.trim();
        var validator = new Framework.Validation.MandatoryValidator();
        validator.inputElementId = this._domElementId + '-' + ElementName;
        validator.errorElementId = 'div' + ElementName;
        validator.set_errorLabelClass('invalidrow');
        validator.add_onFailureEvent(failtureCallBack);
        validator.add_onSuccessEvent(successCallBack);
        validator.set_applyInputParentElementErrorClassOnError(false);
        manager.registerInputForValidation(validator);
    },
    
    cardNumber_OnFailureEvent: function RegisterCardComponent_RegisterCardComponent$cardNumber_OnFailureEvent(Exception) {
        this._validatorFailed$2('iconCardNumber', 'errorCardNumber');
    },
    
    cardNumber_OnSuccessEvent: function RegisterCardComponent_RegisterCardComponent$cardNumber_OnSuccessEvent() {
        this._validatorSuccess$2('iconCardNumber', 'errorCardNumber');
    },
    
    endOfValidityDateFailtureEventHandler: function RegisterCardComponent_RegisterCardComponent$endOfValidityDateFailtureEventHandler(Exception) {
        this._validatorFailed$2('iconEndOfValidityDate', 'errorEndOfValidityDate');
    },
    
    endOfValidityDateSuccessEventHandler: function RegisterCardComponent_RegisterCardComponent$endOfValidityDateSuccessEventHandler() {
        this._validatorSuccess$2('iconEndOfValidityDate', 'errorEndOfValidityDate');
    },
    
    startOfValidityDateFailtureEventHandler: function RegisterCardComponent_RegisterCardComponent$startOfValidityDateFailtureEventHandler(Exception) {
        this._validatorFailed$2('iconStartOfValidityDate', 'errorStartOfValidityDate');
    },
    
    startOfValidityDateSuccessEventHandler: function RegisterCardComponent_RegisterCardComponent$startOfValidityDateSuccessEventHandler() {
        this._validatorSuccess$2('iconStartOfValidityDate', 'errorStartOfValidityDate');
    },
    
    nameAsOnCardFailtureEventHandler: function RegisterCardComponent_RegisterCardComponent$nameAsOnCardFailtureEventHandler(Exception) {
        this._validatorFailed$2('iconNameAsOnCard', 'errorNameAsOnCard');
    },
    
    nameAsOnCardSuccessEventHandler: function RegisterCardComponent_RegisterCardComponent$nameAsOnCardSuccessEventHandler() {
        this._validatorSuccess$2('iconNameAsOnCard', 'errorNameAsOnCard');
    },
    
    onInputBlurBehaviorEventHandler: function RegisterCardComponent_RegisterCardComponent$onInputBlurBehaviorEventHandler(sender, e) {
        this._validationManager.validateSingleInput(e.domElement);
    },
    
    onInputChangedBehaviorEventHandler: function RegisterCardComponent_RegisterCardComponent$onInputChangedBehaviorEventHandler(sender, e) {
        this._validationManager.validateSingleInput(e.domElement);
    },
    
    onInputFocusBehaviorEventHandler: function RegisterCardComponent_RegisterCardComponent$onInputFocusBehaviorEventHandler(sender, e) {
        var ajaxUpdater = new Framework.AjaxUpdater(this._messageElementID$2, e.parameters.getAsString('helpurl'), null, null);
        ajaxUpdater.update();
    },
    
    registerCardDataValidators: function RegisterCardComponent_RegisterCardComponent$registerCardDataValidators() {
        this._validationManager.clearValidators();
        var _cardNumberVal = new Framework.Validation.RegexValidator('^[0-9\\s\\+]+$');
        _cardNumberVal.errorElementId = 'divCardNumber';
        _cardNumberVal.set_errorLabelClass('invalidrow');
        _cardNumberVal.inputElementId = this._domElementId + '-CardNumber';
        _cardNumberVal.add_onFailureEvent(Delegate.create(this, this.cardNumber_OnFailureEvent));
        _cardNumberVal.add_onSuccessEvent(Delegate.create(this, this.cardNumber_OnSuccessEvent));
        this._validationManager.registerInputForValidation(_cardNumberVal);
        this._registerDefaultElementMandatoryValidatorEx$2(this._validationManager, 'NameAsOnCard', Delegate.create(this, this.nameAsOnCardFailtureEventHandler), Delegate.create(this, this.nameAsOnCardSuccessEventHandler));
        this._registerDefaultElementMandatoryValidatorEx$2(this._validationManager, 'EndOfValidityMonth', Delegate.create(this, this.endOfValidityDateFailtureEventHandler), Delegate.create(this, this.endOfValidityDateSuccessEventHandler));
        this._registerDefaultElementMandatoryValidatorEx$2(this._validationManager, 'EndOfValidityYear', Delegate.create(this, this.endOfValidityDateFailtureEventHandler), Delegate.create(this, this.endOfValidityDateSuccessEventHandler));
    },
    
    _validatorSuccess$2: function RegisterCardComponent_RegisterCardComponent$_validatorSuccess$2(iconElement, messageElement) {
        this._hideBalloons$2();
        this._environment.safelySetAndUnsetCssClass(iconElement, 'valid', 'invalid');
        this._environment.safelySetAndUnsetCssClass(messageElement, 'invisible', 'visible');
    },
    
    _validatorFailed$2: function RegisterCardComponent_RegisterCardComponent$_validatorFailed$2(iconElement, messageElement) {
        this._hideBalloons$2();
        this._environment.safelySetAndUnsetCssClass(iconElement, 'invalid', 'valid');
        this._environment.safelySetAndUnsetCssClass(messageElement, 'visible', 'invisible');
    },
    
    _hideBalloons$2: function RegisterCardComponent_RegisterCardComponent$_hideBalloons$2() {
        this._environment.safelySetAndUnsetCssClass('errorCardNumber', 'invisible', 'visible');
        this._environment.safelySetAndUnsetCssClass('errorEndOfValidityDate', 'invisible', 'visible');
        this._environment.safelySetAndUnsetCssClass('errorNameAsOnCard', 'invisible', 'visible');
    }
}


RegisterCardComponent.RegisterCardComponent.createClass('RegisterCardComponent.RegisterCardComponent', Framework.Component.AbstractXsltBasedComponent, UserService.IUserChangedListener, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('RegisterBankTransferComponent');

////////////////////////////////////////////////////////////////////////////////
// RegisterBankTransferComponent.RegisterBankTransferComponent

RegisterBankTransferComponent.RegisterBankTransferComponent = function RegisterBankTransferComponent_RegisterBankTransferComponent() {
    RegisterBankTransferComponent.RegisterBankTransferComponent.constructBase(this);
}
RegisterBankTransferComponent.RegisterBankTransferComponent.prototype = {
    _redirectToDeposit$2: false,
    _useDefaultValidation: false,
    _validationManager: null,
    _integrationSection$2: null,
    _messageElementID$2: null,
    
    setMessageElementID: function RegisterBankTransferComponent_RegisterBankTransferComponent$setMessageElementID(messageElementID) {
        this._messageElementID$2 = messageElementID;
    },
    
    _accountService$2: null,
    
    setAccountService: function RegisterBankTransferComponent_RegisterBankTransferComponent$setAccountService(accountService) {
        this._log.debug('SetAccountService');
        this._accountService$2 = accountService;
    },
    
    _navigationService$2: null,
    
    setNavigationService: function RegisterBankTransferComponent_RegisterBankTransferComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function RegisterBankTransferComponent_RegisterBankTransferComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        if (this.get_isComponentVisible()) {
            this._startInternalUpdate$2();
        }
        else {
            this.update();
        }
    },
    
    _userService$2: null,
    
    setUserService: function RegisterBankTransferComponent_RegisterBankTransferComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function RegisterBankTransferComponent_RegisterBankTransferComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        if (this.get_isComponentVisible()) {
            this._startInternalUpdate$2();
        }
        else {
            this.update();
        }
    },
    
    init: function RegisterBankTransferComponent_RegisterBankTransferComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._area = [ 'start', 'successfull', 'failed' ];
        this._integrationSection$2 = parameters['integration-section'];
        if (Object.keyExists(parameters, 'use-default-validation')) {
            this._useDefaultValidation = Boolean.parse(parameters['use-default-validation'].toString());
        }
        if (Object.keyExists(parameters, 'after-successful-registration-goto-deposit')) {
            if (!String.isNullOrEmpty(parameters['after-successful-registration-goto-deposit'].toString())) {
                this._redirectToDeposit$2 = Boolean.parse(parameters['after-successful-registration-goto-deposit'].toString());
            }
        }
        this._validationManager = new Framework.Validation.ValidationManager(this._environment);
        if (this._useDefaultValidation) {
            this.registerValidators();
        }
    },
    
    preTransformation: function RegisterBankTransferComponent_RegisterBankTransferComponent$preTransformation(eventArgs) {
        if (!eventArgs.get_customEventArgs()) {
            eventArgs.set_cancelUpdate(true);
            this._startInternalUpdate$2();
        }
    },
    
    renderComplete: function RegisterBankTransferComponent_RegisterBankTransferComponent$renderComplete(eventArgs) {
        this.activateArea(0, Framework.Component.AbstractComponent.noMessages);
        this._setSelectedBankName$2();
    },
    
    get_isComponentVisible: function RegisterBankTransferComponent_RegisterBankTransferComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction()) && this._userService$2.isLoggedIn();
    },
    
    registerBankTransferEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$registerBankTransferEventHandler(sender, eventArgs) {
        this.registerBankTransfer(Framework.FormUtil.getFormAsDictionary(this._domElementId + '-Form', this._domElementId + '-'));
    },
    
    goBackEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$goBackEventHandler(sender, eventArgs) {
        this._startInternalUpdate$2();
    },
    
    onCreatedEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$onCreatedEventHandler(sender, e) {
        this._environment.getDomElement(this._componentInstanceName).style.display = 'none';
    },
    
    closeRegisterBankTransferEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$closeRegisterBankTransferEventHandler(sender, eventArgs) {
        if (eventArgs.parameters.containsKey('windowlocation')) {
            eval('javascript:window.location=\'' + eventArgs.parameters.getAsString('windowlocation') + '\';');
        }
        else {
            var action = eventArgs.parameters.getAsString('action');
            this._navigationService$2.setAction(action);
        }
    },
    
    setSelectedBankNameEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$setSelectedBankNameEventHandler(sender, eventArgs) {
        this._setSelectedBankName$2();
    },
    
    registerValidators: function RegisterBankTransferComponent_RegisterBankTransferComponent$registerValidators() {
        this._validationManager.registerMandatoryValidator(this._domElementId + '-AccountNumber', 'lblAccountNumber', 'errorAccountNumber');
        this._validationManager.registerMandatoryValidator(this._domElementId + '-PinCode', 'lblPinCode', 'errorPinCode');
        this._validationManager.registerMandatoryValidator(this._domElementId + '-AccountOwner', 'lblName', 'errorName');
        this._validationManager.registerMandatoryValidator(this._domElementId + '-Postcode', 'lblPostcode', 'errorPostcode');
        this._validationManager.registerMandatoryValidator(this._domElementId + '-City', 'lblCity', 'errorCity');
        this._validationManager.registerMandatoryValidator(this._domElementId + '-Address', 'lblAddress', 'errorAddress');
    },
    
    registerBankTransfer: function RegisterBankTransferComponent_RegisterBankTransferComponent$registerBankTransfer(bankTransfer) {
        this._log.debug('RegisterBankTransfer');
        var _isValid;
        if (this._useDefaultValidation) {
            _isValid = this._validationManager.validateAll();
        }
        else {
            _isValid = true;
        }
        if (_isValid) {
            this._accountService$2.registerBankTransfer(Delegate.create(this, function(result) {
                var IDMMSIInstruction = result;
                this._log.debug(String.format('Bank Transfer registered successfully, IDMMSIInstruction = [{0}]', IDMMSIInstruction));
                this.activateArea(1, Framework.Component.AbstractComponent.noMessages);
                if (this._redirectToDeposit$2) {
                    var currentArea = this._environment.getPageArea();
                    this._navigationService$2.goTo(currentArea, { action: 'deposit' });
                }
            }), Delegate.create(this, function(exception) {
                var errorMessage = Framework.ExceptionUtil.getExceptionDetails(exception).get_message();
                this._log.debug(String.format('Bank Transfer registration failed errorMessage = [{0}]', errorMessage));
                this.activateArea(2, [ errorMessage ]);
            }), bankTransfer);
        }
    },
    
    onInputFocusBehaviorEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$onInputFocusBehaviorEventHandler(sender, e) {
        var ajaxUpdater = new Framework.AjaxUpdater(this._messageElementID$2, e.parameters.getAsString('helpurl'), null, null);
        ajaxUpdater.update();
    },
    
    onInputBlurBehaviorEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$onInputBlurBehaviorEventHandler(sender, e) {
        this._validationManager.validateSingleInput(e.domElement);
    },
    
    _startInternalUpdate$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_startInternalUpdate$2() {
        var IDMMSIType = (Object.keyExists(this._navigationService$2.getPageFilter(), 'idmmsitype')) ? this._navigationService$2.getPageFilter()['idmmsitype'] : '';
        if (this.get_isComponentVisible() && !String.isNullOrEmpty(IDMMSIType)) {
            this._accountService$2.getPaymentType(Delegate.create(this, function(result) {
                var paymentType = result;
                var eventArgs = new Framework.Component.LifeCycleManagement.EventArgs.CustomEventArgs();
                eventArgs.parametersDictionary = { notFirstTransformation: 'true' };
                this.update(this._environment.getDomElement(this._domElementId), this._parameters.get_contentUrl(), this._parameters.get_xsltUrl(), this._customGetXsltParameters$2(paymentType, IDMMSIType), eventArgs);
            }), Delegate.create(this, function(exception) {
                var errorMessage = Framework.ExceptionUtil.getExceptionDetails(exception).get_message();
                this._log.debug(String.format('RegisterBankTransfer.Repaint failed errorMessage = [{0}]', errorMessage));
                this.activateArea(2, [ exception.message ]);
            }), IDMMSIType);
        }
    },
    
    _customGetXsltParameters$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_customGetXsltParameters$2(paymentType, IDMMSIType) {
        var xsltParameters = {};
        xsltParameters['use-default-validation'] = this._useDefaultValidation;
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['idmmsitype'] = IDMMSIType;
        xsltParameters['bank-transfer-name'] = paymentType.Name;
        if (paymentType.AccountNumberLengthMax > 0) {
            xsltParameters['is-account-number-needed'] = true;
            xsltParameters['account-number-caption'] = paymentType.AccountNumberCaption;
        }
        xsltParameters['is-clearing-code-needed'] = paymentType.ClearingCodeLengthMax > 0;
        xsltParameters['is-swift-code-needed'] = paymentType.IsSwiftCodeNeeded;
        if (paymentType.IsPinNeeded) {
            xsltParameters['is-pin-needed'] = true;
            xsltParameters['pin-caption'] = paymentType.PinCaption;
        }
        xsltParameters['is-bank-name-needed'] = paymentType.IsBankNameNeeded;
        xsltParameters['integration-section'] = this._integrationSection$2;
        if (this._userService$2.get_personalDetails()) {
            xsltParameters['name'] = this._userService$2.get_personalDetails().FirstName + ' ' + this._userService$2.get_personalDetails().LastName;
            xsltParameters['address'] = this._userService$2.get_personalDetails().StreetAddress;
            xsltParameters['city'] = this._userService$2.get_personalDetails().City;
            xsltParameters['post-code'] = this._userService$2.get_personalDetails().PostCode;
            xsltParameters['county'] = this._userService$2.get_personalDetails().CountyOrStateOrProvince;
            xsltParameters['country'] = this._userService$2.get_personalDetails().IDMMCountry;
        }
        return xsltParameters;
    },
    
    registerValidatorsEx: function RegisterBankTransferComponent_RegisterBankTransferComponent$registerValidatorsEx() {
        this._registerDefaultElementMandatoryValidatorEx$2(this._validationManager, 'AccountNumber', Delegate.create(this, this.accountNumberFailtureEventHandler), Delegate.create(this, this.accountNumberSuccessEventHandler));
        this._registerDefaultElementMandatoryValidatorEx$2(this._validationManager, 'PinCode', Delegate.create(this, this.pinCodeFailtureEventHandler), Delegate.create(this, this.pinCodeSuccessEventHandler));
    },
    
    _registerDefaultElementMandatoryValidatorEx$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_registerDefaultElementMandatoryValidatorEx$2(manager, ElementName, failtureCallBack, successCallBack) {
        ElementName = ElementName.trim();
        var validator = new Framework.Validation.MandatoryValidator();
        validator.inputElementId = this._domElementId + '-' + ElementName;
        validator.errorElementId = 'div' + ElementName;
        validator.set_errorLabelClass('invalidrow');
        validator.add_onFailureEvent(failtureCallBack);
        validator.add_onSuccessEvent(successCallBack);
        validator.set_applyInputParentElementErrorClassOnError(false);
        manager.registerInputForValidation(validator);
    },
    
    accountNumberFailtureEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$accountNumberFailtureEventHandler(exception) {
        this._validatorFailed$2('iconAccountNumber', 'errorAccountNumber');
    },
    
    accountNumberSuccessEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$accountNumberSuccessEventHandler() {
        this._validatorSuccess$2('iconAccountNumber', 'errorAccountNumber');
    },
    
    pinCodeFailtureEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$pinCodeFailtureEventHandler(exception) {
        this._validatorFailed$2('iconPinCode', 'iconPinCode');
    },
    
    pinCodeSuccessEventHandler: function RegisterBankTransferComponent_RegisterBankTransferComponent$pinCodeSuccessEventHandler() {
        this._validatorSuccess$2('iconPinCode', 'iconPinCode');
    },
    
    _validatorSuccess$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_validatorSuccess$2(iconElement, messageElement) {
        this._hideBalloons$2();
        this._environment.safelySetAndUnsetCssClass(iconElement, 'valid', 'invalid');
        this._environment.safelySetAndUnsetCssClass(messageElement, 'invisible', 'visible');
    },
    
    _validatorFailed$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_validatorFailed$2(iconElement, messageElement) {
        this._hideBalloons$2();
        this._environment.safelySetAndUnsetCssClass(iconElement, 'invalid', 'valid');
        this._environment.safelySetAndUnsetCssClass(messageElement, 'visible', 'invisible');
    },
    
    _hideBalloons$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_hideBalloons$2() {
        this._environment.safelySetAndUnsetCssClass('errorPinCode', 'invisible', 'visible');
        this._environment.safelySetAndUnsetCssClass('errorAccountNumber', 'invisible', 'visible');
    },
    
    _setSelectedBankName$2: function RegisterBankTransferComponent_RegisterBankTransferComponent$_setSelectedBankName$2() {
        var oSelectElementBank = document.getElementById(this._domElementId + '-BankNationalClearingCode');
        if (!oSelectElementBank) {
            return;
        }
        var selectedID = oSelectElementBank.selectedIndex;
        var oOptionElementBank = oSelectElementBank.options[selectedID];
        var oInputElementBankName = document.getElementById(this._domElementId + '-BankName');
        if (!oInputElementBankName) {
            return;
        }
        oInputElementBankName.value = oOptionElementBank.text;
    }
}


RegisterBankTransferComponent.RegisterBankTransferComponent.createClass('RegisterBankTransferComponent.RegisterBankTransferComponent', Framework.Component.AbstractXsltBasedComponent, UserService.IUserChangedListener, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BoyleSportsRegistrationComponent');

////////////////////////////////////////////////////////////////////////////////
// BoyleSportsRegistrationComponent.BoyleSportsRegistrationComponent

BoyleSportsRegistrationComponent.BoyleSportsRegistrationComponent = function BoyleSportsRegistrationComponent_BoyleSportsRegistrationComponent() {
    BoyleSportsRegistrationComponent.BoyleSportsRegistrationComponent.constructBase(this);
}
BoyleSportsRegistrationComponent.BoyleSportsRegistrationComponent.prototype = {
    
    setPaymentTransactionComponentsParams: function BoyleSportsRegistrationComponent_BoyleSportsRegistrationComponent$setPaymentTransactionComponentsParams(paymentTransactionComponentID, registerCardComponentID, registerBankTransferComponentID) {
        (this.getDynamicChildByInstanceName(paymentTransactionComponentID)).setRegistrationComponentsID(registerCardComponentID, registerBankTransferComponentID);
    },
    
    registerPayment: function BoyleSportsRegistrationComponent_BoyleSportsRegistrationComponent$registerPayment() {
        var selectedValue = (this._environment.getDomElement(this._paymentTransactionComponentID + '-paymentmethod')).value.toLowerCase();
        if (selectedValue === 'creditcard') {
            if ((this.getDynamicChildByInstanceName(this._registerCardComponentID))._validationManager.validateAll()) {
                (this.getDynamicChildByInstanceName(this._registerCardComponentID)).registerCardEventHandler(null, null);
            }
        }
        else if (selectedValue === 'banktransfer') {
            if ((this.getDynamicChildByInstanceName(this._registerBankTransferComponentID))._validationManager.validateAll()) {
                (this.getDynamicChildByInstanceName(this._registerBankTransferComponentID)).registerBankTransferEventHandler(null, null);
            }
        }
        else if (selectedValue === 'moneybookers') {
            (this.getDynamicChildByInstanceName(this._paymentTransactionComponentID)).registerRedirectBasedWallet('Moneybookers', this._DepositAfterRegistration);
        }
        else if (this._navigateAfterRegistration) {
            var filter = {};
            filter['action'] = this._navigateAfterRegistrationAction;
            this._navigationService.forwardTo(this._navigateAfterRegistrationPageArea, filter);
            window.event.returnValue = false;
        }
    },
    
    createPaymentTransactionDynamicComponent: function BoyleSportsRegistrationComponent_BoyleSportsRegistrationComponent$createPaymentTransactionDynamicComponent(domElement, parameters) {
        var componentID = this.createDynamicComponent(BoyleSportsPaymentTransactionComponent.BoyleSportsPaymentTransactionComponent, domElement, true);
        var component = (this.getDynamicChildByInstanceName(componentID));
        component.setMessageElementID(this._domElementId + '-help');
        return componentID;
    },
    
    createRegisterBankTransferDynamicComponent: function BoyleSportsRegistrationComponent_BoyleSportsRegistrationComponent$createRegisterBankTransferDynamicComponent(domElement, parameters) {
        var componentID = this.createDynamicComponent(RegisterBankTransferComponent.RegisterBankTransferComponent, domElement, true);
        var component = (this.getDynamicChildByInstanceName(componentID));
        component.setMessageElementID(this._domElementId + '-help');
        component.registerValidatorsEx();
        return componentID;
    },
    
    createRegisterCardDynamicComponent: function BoyleSportsRegistrationComponent_BoyleSportsRegistrationComponent$createRegisterCardDynamicComponent(domElement, parameters) {
        var componentID = this.createDynamicComponent(RegisterCardComponent.RegisterCardComponent, domElement, true);
        var component = (this.getDynamicChildByInstanceName(componentID));
        component.setMessageElementID(this._domElementId + '-help');
        component.registerCardDataValidators();
        return componentID;
    }
}


BoyleSportsRegistrationComponent.BoyleSportsRegistrationComponent.createClass('BoyleSportsRegistrationComponent.BoyleSportsRegistrationComponent', BoyleSportsAbstractComponents.BoyleSportsRegistrationComponent.BoyleSportsAbstractRegistrationComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('UpgradeCallCentreCustomerComponent');

////////////////////////////////////////////////////////////////////////////////
// UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomerComponent

UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomerComponent = function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent() {
    UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomerComponent.constructBase(this);
}
UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomerComponent.prototype = {
    _navigationService$2: null,
    _userService$2: null,
    
    setNavigationService: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    setUserService: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        if (!this._userService$2.isLoggedIn()) {
            this._environment.updateDomElement(this._domElementId, '');
        }
    },
    
    init: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._area = [ 'start', 'successfull', 'failed' ];
    },
    
    get_isComponentVisible: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    upgradeCallCentreCustomerEventHandler: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$upgradeCallCentreCustomerEventHandler(sender, eventArgs) {
        var upgradeCallCentreCustomerDetails = new UserService.UpgradeCallCentreCustomerDetails(Framework.FormUtil.getFormAsDictionary(this._domElementId + '-form', this._domElementId + '-'));
        this._log.debug(String.format('UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomer upgradeCallCentreCustomerDetails=[{0}]', upgradeCallCentreCustomerDetails.toString()));
        this.disable();
        document.getElementById(this._domElementId).style.cursor = 'wait';
        upgradeCallCentreCustomerDetails.IsNoCorrespondence = !upgradeCallCentreCustomerDetails.IsNoCorrespondence;
        upgradeCallCentreCustomerDetails.DateOfBirth = String.format('{0}-{1}-{2} 0-0-0', (this.getPrivateDomElement('DateOfBirthDay')).value, (this.getPrivateDomElement('DateOfBirthMonth')).value, (this.getPrivateDomElement('DateOfBirthYear')).value);
        this._userService$2.upgradeCallCentreCustomer(Delegate.create(this, function(result) {
            this.activateArea(1, Framework.Component.AbstractComponent.noMessages);
            this.enable();
            this._userService$2.login(null, Delegate.create(this, this._failed$2), upgradeCallCentreCustomerDetails.UserName, upgradeCallCentreCustomerDetails.Password);
        }), Delegate.create(this, this._failed$2), upgradeCallCentreCustomerDetails);
    },
    
    cancelEventHandler: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$cancelEventHandler(sender, eventArgs) {
        this._navigationService$2.goBack();
    },
    
    navigateToStatementEventHandler: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$navigateToStatementEventHandler(sender, eventArgs) {
        var pageFilter = this._navigationService$2.getPageFilter();
        pageFilter['action'] = 'statement';
        this._navigationService$2.goTo(this._navigationService$2.getPageArea(), pageFilter);
        this.update();
    },
    
    navigateToDepositFundsEventHandler: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$navigateToDepositFundsEventHandler(sender, eventArgs) {
        var pageFilter = this._navigationService$2.getPageFilter();
        pageFilter['action'] = 'payment-transaction';
        pageFilter['is-deposit'] = 'true';
        this._navigationService$2.goTo(this._navigationService$2.getPageArea(), pageFilter);
    },
    
    navigateToContinueBettingEventHandler: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$navigateToContinueBettingEventHandler(sender, eventArgs) {
        var pageFilter = this._navigationService$2.getPageFilter();
        pageFilter['action'] = '';
        this._navigationService$2.goTo(this._navigationService$2.getPageArea(), pageFilter);
    },
    
    _failed$2: function UpgradeCallCentreCustomerComponent_UpgradeCallCentreCustomerComponent$_failed$2(exception) {
        var errorMessage = Framework.ExceptionUtil.getExceptionDetails(exception).get_message();
        if (!errorMessage) {
            errorMessage = 'Internal error, please contact customer support';
        }
        this.updatePrivateDomElement('message', errorMessage);
        this.enable();
        this._environment.getDomElement(this._domElementId).style.cursor = 'default';
        this.activateArea(2, Framework.Component.AbstractComponent.noMessages);
    }
}


UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomerComponent.createClass('UpgradeCallCentreCustomerComponent.UpgradeCallCentreCustomerComponent', Framework.Component.AbstractXsltBasedComponent, UserService.IUserChangedListener, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
