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('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('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('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('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('ForgottenPasswordComponent');

////////////////////////////////////////////////////////////////////////////////
// ForgottenPasswordComponent.passwordRetrievalMethods

ForgottenPasswordComponent.passwordRetrievalMethods = function() { };
ForgottenPasswordComponent.passwordRetrievalMethods.prototype = {
    answerSecretQuestion: 0, 
    emailReplacement: 1
}
ForgottenPasswordComponent.passwordRetrievalMethods.createEnum('ForgottenPasswordComponent.passwordRetrievalMethods', false);


////////////////////////////////////////////////////////////////////////////////
// ForgottenPasswordComponent.ForgottenPasswordComponent

ForgottenPasswordComponent.ForgottenPasswordComponent = function ForgottenPasswordComponent_ForgottenPasswordComponent() {
    this._passwordRange$1 = [];
    this._username$1 = String.Empty;
    this._IDDCSecretQuestion$1 = String.Empty;
    ForgottenPasswordComponent.ForgottenPasswordComponent.constructBase(this);
}
ForgottenPasswordComponent.ForgottenPasswordComponent.prototype = {
    _validationManager$1: null,
    _usePasswordValidator$1: false,
    _passwordLength$1: null,
    _absoluteImagePrefix$1: null,
    _parameters$1: null,
    _midwayThroughLoginActivatedByThisComponent$1: false,
    _loginOnPasswordChangeEnabled$1: true,
    _cancelPageArea$1: 'homepage',
    _cancelPageAction$1: '',
    _navigationService$1: null,
    
    setNavigationService: function ForgottenPasswordComponent_ForgottenPasswordComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function ForgottenPasswordComponent_ForgottenPasswordComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.repaint();
    },
    
    _userService$1: null,
    
    setUserService: function ForgottenPasswordComponent_ForgottenPasswordComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$1 = userService;
    },
    
    onUserChanged: function ForgottenPasswordComponent_ForgottenPasswordComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction()) && !this._midwayThroughLoginActivatedByThisComponent$1 && this._loginOnPasswordChangeEnabled$1) {
            this._goBack$1();
        }
        this._midwayThroughLoginActivatedByThisComponent$1 = false;
    },
    
    init: function ForgottenPasswordComponent_ForgottenPasswordComponent$init(environment, componentInstanceName, domElementId, parameters) {
        ForgottenPasswordComponent.ForgottenPasswordComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._area = [ 'step-1', 'step-2', 'success', 'error' ];
        if (Object.keyExists(parameters, 'cancel-page-action')) {
            this._cancelPageAction$1 = parameters['cancel-page-action'];
        }
        if (Object.keyExists(parameters, 'cancel-page-area')) {
            this._cancelPageArea$1 = parameters['cancel-page-area'];
        }
        this._passwordLength$1 = parameters['password-length'];
        this._absoluteImagePrefix$1 = parameters['absolute-image-prefix'];
        this._passwordRange$1.addRange(this._passwordLength$1.split('-'));
        if (Object.keyExists(parameters, 'use-password-validator')) {
            this._usePasswordValidator$1 = Boolean.parse(parameters['use-password-validator']);
        }
        if (this._usePasswordValidator$1) {
            this._validationManager$1 = new Framework.Validation.ValidationManager(this._environment);
            this._registerValidators$1();
        }
        this._loginOnPasswordChangeEnabled$1 = Boolean.parse(parameters['enable-automatic-login-on-success']);
    },
    
    start: function ForgottenPasswordComponent_ForgottenPasswordComponent$start() {
        this.repaint();
    },
    
    submitStepOneEventHandler: function ForgottenPasswordComponent_ForgottenPasswordComponent$submitStepOneEventHandler(sender, eventArgs) {
        var formData = Framework.FormUtil.getFormAsDictionary(this._domElementId + '-form-1', this._domElementId + '-');
        this._log.debug(String.format('Step1_onClick formData=[{0}]', Framework.DictionaryUtil.dumpToString(formData)));
        this._username$1 = formData['username'];
        var year = parseInt(formData['date-of-birth-year']);
        var month = parseInt(formData['date-of-birth-month']);
        var day = parseInt(formData['date-of-birth-day']);
        var dateOfBirth = new Date(year, month, day);
        var method = Enum.parse(ForgottenPasswordComponent.passwordRetrievalMethods, formData['retrieval-method'].toString());
        this.disable();
        if (method === ForgottenPasswordComponent.passwordRetrievalMethods.answerSecretQuestion) {
            this._userService$1.getSecretQuestion(Delegate.create(this, function(result) {
                this._IDDCSecretQuestion$1 = (result)['IDDCSecretQuestion'];
                var question = (result)['Question'];
                this.activateArea(this._area.indexOf('step-2'), [ question ]);
                this.enable();
            }), Delegate.create(this, this._failureCallback$1), this._username$1, dateOfBirth);
        }
        else {
            this._userService$1.resetPassword(Delegate.create(this, function(result) {
                var resetPasswordSuccessStrings = [ 'Your password was generated successfully.', 'An email with your new password has been sent to you.' ];
                this.activateArea(this._area.indexOf('success'), resetPasswordSuccessStrings);
                this.enable();
            }), Delegate.create(this, this._failureCallback$1), this._username$1, dateOfBirth);
        }
    },
    
    submitStepTwoEventHandler: function ForgottenPasswordComponent_ForgottenPasswordComponent$submitStepTwoEventHandler(sender, eventArgs) {
        var formData = Framework.FormUtil.getFormAsDictionary(this._domElementId + '-form-2', this._domElementId + '-');
        this._log.debug(String.format('Step2_onClick formData=[{0}]', Framework.DictionaryUtil.dumpToString(formData)));
        var newPassword = formData['new-password'];
        var newPasswordConfirm = formData['confirm-new-password'];
        if (this._usePasswordValidator$1) {
            if (!this._validationManager$1.validateAll()) {
                return;
            }
        }
        else {
            if (newPasswordConfirm.length <= 0 || newPassword.length <= 0) {
                alert('You have to choose new password and confirm new password.');
                return;
            }
            if (newPassword !== newPasswordConfirm) {
                alert('Confirm password do not match!');
                return;
            }
        }
        this.disable();
        this._userService$1.setPasswordUsingSecretAnswer(Delegate.create(this, function(result) {
            this._midwayThroughLoginActivatedByThisComponent$1 = true;
            if (this._loginOnPasswordChangeEnabled$1) {
                this._userService$1.login(Delegate.create(this, function(loginResult) {
                    var msg1 = this.getTranslation('pass-is-changed');
                    var msg2 = this.getTranslation('logged-in-and-redirected-to-homepage');
                    var successfulLoginMessages = [ msg1, msg2 ];
                    this.activateArea(this._area.indexOf('success'), successfulLoginMessages);
                    this.enable();
                }), Delegate.create(this, function(exception) {
                    this._failureCallback$1(exception);
                }), this._username$1, newPassword);
            }
            else {
                var msg1 = this.getTranslation('pass-is-changed');
                var msg2 = this.getTranslation('please-login-with-your-new-pass');
                var successfulLoginMessages = [ msg1, msg2 ];
                this.activateArea(this._area.indexOf('success'), successfulLoginMessages);
                this.enable();
            }
        }), Delegate.create(this, this._failureCallback$1), this._username$1, formData['answer'], newPassword, this._IDDCSecretQuestion$1);
    },
    
    goBackEventHandler: function ForgottenPasswordComponent_ForgottenPasswordComponent$goBackEventHandler(sender, eventArgs) {
        this._log.debug('GoBack');
        this._goBack$1();
    },
    
    tryAgainEventHandler: function ForgottenPasswordComponent_ForgottenPasswordComponent$tryAgainEventHandler(sender, eventArgs) {
        this.activateArea(this._area.indexOf('step-1'), null);
    },
    
    validateSingleInputEventHandler: function ForgottenPasswordComponent_ForgottenPasswordComponent$validateSingleInputEventHandler(sender, eventArgs) {
        this._validationManager$1.validateSingleInput(eventArgs.domElement);
    },
    
    closeForgottenPasswordEventHandler: function ForgottenPasswordComponent_ForgottenPasswordComponent$closeForgottenPasswordEventHandler(sender, eventArgs) {
        var action = eventArgs.parameters.getAsString('action');
        this._navigationService$1.setAction(action);
    },
    
    repaint: function ForgottenPasswordComponent_ForgottenPasswordComponent$repaint() {
        this._log.debug('Repaint');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction())) {
            this.show();
            var xsltParameters = {};
            xsltParameters['component-instance-name'] = this._componentInstanceName;
            xsltParameters['component-dom-element-id'] = this._domElementId;
            xsltParameters['min-password-validation'] = this._passwordRange$1[0].toString();
            xsltParameters['max-password-validation'] = this._passwordRange$1[1].toString();
            xsltParameters['use-password-validator'] = this._usePasswordValidator$1;
            xsltParameters['absolute-image-prefix'] = this._absoluteImagePrefix$1;
            this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl(), this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, function() {
                Framework.Behavior.Binding.BehaviorBinder.autoBind(this._environment.getDomElement(this._domElementId), this);
            }));
        }
        else {
            this.hide();
        }
    },
    
    _failureCallback$1: function ForgottenPasswordComponent_ForgottenPasswordComponent$_failureCallback$1(exception) {
        this.activateArea(this._area.indexOf('error'), [ Framework.ExceptionUtil.getExceptionDetails(exception).get_message() ]);
        this.enable();
    },
    
    _goBack$1: function ForgottenPasswordComponent_ForgottenPasswordComponent$_goBack$1() {
        if (this._navigationService$1.isEmpty()) {
            var pageFilter = this._navigationService$1.getPageFilter();
            pageFilter['action'] = this._cancelPageAction$1;
            this._navigationService$1.goTo(this._cancelPageArea$1, pageFilter);
        }
        else {
            this._navigationService$1.goBack();
        }
    },
    
    _registerValidators$1: function ForgottenPasswordComponent_ForgottenPasswordComponent$_registerValidators$1() {
        this._registerDefaultElementMandatoryValidator$1('answer');
        this._registerDefaultElementMandatoryValidator$1('new-password');
        this._registerDefaultElementMandatoryValidator$1('confirm-new-password');
        var _passwordVal = new Framework.Validation.StandardPasswordValidator(this._passwordRange$1[0], this._passwordRange$1[1]);
        _passwordVal.inputElementId = this._domElementId + '-new-password';
        _passwordVal.labelElementId = 'lblnew-password';
        _passwordVal.errorElementId = 'errornew-password';
        this._validationManager$1.registerInputForValidation(_passwordVal);
        var _sameVal = new Framework.Validation.MatchedInputsValidator(this._domElementId + '-new-password', this._domElementId + '-confirm-new-password', 'lblconfirm-new-password', 'errorconfirm-new-password');
        this._validationManager$1.registerInputForValidation(_sameVal);
    },
    
    _registerDefaultElementMandatoryValidator$1: function ForgottenPasswordComponent_ForgottenPasswordComponent$_registerDefaultElementMandatoryValidator$1(ElementName) {
        ElementName = ElementName.trim();
        this._validationManager$1.registerMandatoryValidator(this._domElementId + '-' + ElementName, 'lbl' + ElementName, 'error' + ElementName);
    }
}


ForgottenPasswordComponent.ForgottenPasswordComponent.createClass('ForgottenPasswordComponent.ForgottenPasswordComponent', 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('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)
// -----------------------------------
