Type.createNamespace('ChannelNavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// ChannelNavigationComponent.ChannelNavigationComponent

ChannelNavigationComponent.ChannelNavigationComponent = function ChannelNavigationComponent_ChannelNavigationComponent() {
    this._navigationSection$1 = String.Empty;
    this._currentChannel$1 = String.Empty;
    ChannelNavigationComponent.ChannelNavigationComponent.constructBase(this);
}
ChannelNavigationComponent.ChannelNavigationComponent.prototype = {
    _parameters$1: null,
    _repaintOnUserChanged$1: false,
    _repaintOnPageFilterChanged$1: false,
    _protocol$1: null,
    _activeElement$1: null,
    _navigationService$1: null,
    
    setNavigationService: function ChannelNavigationComponent_ChannelNavigationComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
    },
    
    onPageFilterChanged: function ChannelNavigationComponent_ChannelNavigationComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        if (this._repaintOnPageFilterChanged$1) {
            this.repaint();
        }
        else {
            this._setActiveElement$1();
        }
    },
    
    _userService$1: null,
    
    setUserService: function ChannelNavigationComponent_ChannelNavigationComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$1 = userService;
    },
    
    onUserChanged: function ChannelNavigationComponent_ChannelNavigationComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        if (this._repaintOnUserChanged$1) {
            this.repaint();
        }
    },
    
    init: function ChannelNavigationComponent_ChannelNavigationComponent$init(environment, componentInstanceName, domElementId, parameters) {
        ChannelNavigationComponent.ChannelNavigationComponent.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._protocol$1 = parameters['protocol'];
        this._navigationSection$1 = parameters['navigation-section'];
        this._currentChannel$1 = parameters['current-channel'];
    },
    
    repaint: function ChannelNavigationComponent_ChannelNavigationComponent$repaint() {
        this._log.debug('Repaint');
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['current-channel'] = this._currentChannel$1;
        this.show();
        this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl(), this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, function() {
            this._setActiveElement$1();
        }));
    },
    
    _setActiveElement$1: function ChannelNavigationComponent_ChannelNavigationComponent$_setActiveElement$1() {
        var action = this._navigationService$1.getAction();
        if (String.isNullOrEmpty(action)) {
            action = null;
        }
        var liElements = this._environment.getDomElement(this._domElementId).getElementsByTagName('LI');
        this._deactivateElement$1();
        for (var i = 0; i < liElements.length; i++) {
            var liElement = liElements[i];
            if (liElement.attributes.getNamedItem('action') && liElement.attributes.getNamedItem('action').value === this._currentChannel$1) {
                this._activateElement$1(liElement);
                break;
            }
        }
    },
    
    setPageFilter: function ChannelNavigationComponent_ChannelNavigationComponent$setPageFilter(liElement, area) {
        if (liElement.tagName !== 'LI') {
            throw new Error('Expected an LI element');
        }
        this._deactivateElement$1();
        this._activateElement$1(liElement);
        var pageFilter = {};
        pageFilter['action'] = liElement.attributes.getNamedItem('action').value;
        this._log.debug('SetPageFilter');
        this._navigationService$1.goTo(area, pageFilter);
        return false;
    },
    
    setPageFilterWithRegion: function ChannelNavigationComponent_ChannelNavigationComponent$setPageFilterWithRegion(liElement, area, region) {
        if (liElement.tagName !== 'LI') {
            throw new Error('Expected an LI element');
        }
        this._deactivateElement$1();
        this._activateElement$1(liElement);
        var pageFilter = {};
        pageFilter['action'] = liElement.attributes.getNamedItem('action').value;
        this._log.debug('SetPageFilter, region=' + region);
        this._environment.changeRegion(region, area, pageFilter);
        return false;
    },
    
    _activateElement$1: function ChannelNavigationComponent_ChannelNavigationComponent$_activateElement$1(liElement) {
        this._activeElement$1 = liElement;
        this._activeElement$1.className = 'cur';
    },
    
    _deactivateElement$1: function ChannelNavigationComponent_ChannelNavigationComponent$_deactivateElement$1() {
        if (this._activeElement$1) {
            this._activeElement$1.className = String.Empty;
            this._activeElement$1 = null;
        }
    },
    
    togglePart: function ChannelNavigationComponent_ChannelNavigationComponent$togglePart(parId, componentId) {
        var el = document.getElementById(componentId);
        if (el.style.display === 'block') {
            el.style.display = 'none';
            (parId).innerText = (parId).innerText.replace('Close', 'Open');
        }
        else {
            el.style.display = 'block';
            (parId).innerText = (parId).innerText.replace('Open', 'Close');
        }
    }
}


ChannelNavigationComponent.ChannelNavigationComponent.createClass('ChannelNavigationComponent.ChannelNavigationComponent', Framework.AbstractComponent, UserService.IUserChangedListener, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BFAreaImageComponent');

////////////////////////////////////////////////////////////////////////////////
// BFAreaImageComponent.BFAreaImageComponent

BFAreaImageComponent.BFAreaImageComponent = function BFAreaImageComponent_BFAreaImageComponent() {
    BFAreaImageComponent.BFAreaImageComponent.constructBase(this);
}
BFAreaImageComponent.BFAreaImageComponent.prototype = {
    _imagefilename$1: null,
    
    init: function BFAreaImageComponent_BFAreaImageComponent$init(environment, componentInstanceName, domElementId, parameters) {
        BFAreaImageComponent.BFAreaImageComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._imagefilename$1 = parameters['image-filename'];
    },
    
    repaint: function BFAreaImageComponent_BFAreaImageComponent$repaint() {
        this._log.debug('Repaint');
        var imageElement = document.createElement('img');
        imageElement.src = String.format('images/areaimage/{0}', this._imagefilename$1);
        imageElement.alt = '';
        document.getElementById(this._domElementId).appendChild(imageElement);
    }
}


BFAreaImageComponent.BFAreaImageComponent.createClass('BFAreaImageComponent.BFAreaImageComponent', Framework.AbstractComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BFNavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// BFNavigationComponent.BFNavigationComponent

BFNavigationComponent.BFNavigationComponent = function BFNavigationComponent_BFNavigationComponent() {
    BFNavigationComponent.BFNavigationComponent.constructBase(this);
}
BFNavigationComponent.BFNavigationComponent.prototype = {
    _promotionsSection$3: '',
    
    getXsltParameters: function BFNavigationComponent_BFNavigationComponent$getXsltParameters(contextObject) {
        var useService = (!contextObject) ? true : contextObject;
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['username'] = (useService && this._userService.isLoggedIn()) ? this._userService.get_username() : null;
        xsltParameters['navigation-section'] = this._navigationSection;
        xsltParameters['top-level-css-class'] = this._topLevelCssClass;
        xsltParameters['current-item'] = this._currentItem;
        xsltParameters['promotions-section'] = this._promotionsSection$3;
        return xsltParameters;
    },
    
    init: function BFNavigationComponent_BFNavigationComponent$init(environment, componentInstanceName, domElementId, parameters) {
        BFNavigationComponent.BFNavigationComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        if ((parameters['promotions-section']) !== '') {
            this._promotionsSection$3 = parameters['promotions-section'];
        }
    },
    
    logoutEventHandler: function BFNavigationComponent_BFNavigationComponent$logoutEventHandler(sender, eventArgs) {
        this.logout();
        window.event.returnValue = false;
    },
    
    popupEventHandler: function BFNavigationComponent_BFNavigationComponent$popupEventHandler(sender, eventArgs) {
        this.popup(eventArgs.domElement, eventArgs.parameters.getAsString('area'), eventArgs.parameters.getAsString('popupparams'));
        window.event.returnValue = false;
    },
    
    setPageFilter: function BFNavigationComponent_BFNavigationComponent$setPageFilter(liElement, area) {
        if (liElement.tagName !== 'LI') {
            throw new Error('Expected an LI element');
        }
        this.deactivateElement();
        this.activateElement(liElement);
        var pageFilter = {};
        pageFilter['action'] = liElement.attributes.getNamedItem('action').value;
        if (this._promotionsSection$3 !== '' && pageFilter['action'] === 'promotions') {
            pageFilter['action'] += '&progress=' + this._promotionsSection$3;
        }
        this._log.debug('SetPageFilter');
        this._navigationService.goTo(area, pageFilter);
        return false;
    },
    
    logout: function BFNavigationComponent_BFNavigationComponent$logout() {
        this._log.debug('BFNavigationComponent:Logout');
        this.disable();
        this._userService.logout(Delegate.create(this, function(result) {
            this.enable();
            var pageFilter = {};
            pageFilter['action'] = 'homepage';
            this._navigationService.goTo('homepage', pageFilter);
        }), Delegate.create(this, function(exception) {
            this.enable();
        }));
    },
    
    popup: function BFNavigationComponent_BFNavigationComponent$popup(aElement, area, popupParams) {
        this._log.debug('BFNavigationComponent:Popup');
        var action = aElement.parentNode.attributes.getNamedItem('action').value;
        if ((area === 'HelpCentre2' || area === 'HelpCentre') && action === 'default') {
            action += '&selected-menu-id=_MenuItem_Default';
        }
        var pageFilter = {};
        pageFilter['action'] = action;
        window.open(this._environment.buildUrl(area, pageFilter, this._protocol), 'BFWRPhelp', popupParams);
    }
}


BFNavigationComponent.BFNavigationComponent.createClass('BFNavigationComponent.BFNavigationComponent', AbstractWarpComponents.AbstractNavigationComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('ClockComponent');

////////////////////////////////////////////////////////////////////////////////
// ClockComponent.ClockComponent

ClockComponent.ClockComponent = function ClockComponent_ClockComponent() {
    ClockComponent.ClockComponent.constructBase(this);
}
ClockComponent.ClockComponent.prototype = {
    _parameters$1: null,
    _clockDomElement$1: null,
    _useCustomDigits$1: false,
    _timeDateFormat$1: null,
    _clockSpan$1: null,
    _businessUnitService$1: null,
    
    setBusinessUnitService: function ClockComponent_ClockComponent$setBusinessUnitService(businessUnitService) {
        this._log.debug('SetBusinessUnitService');
        this._businessUnitService$1 = businessUnitService;
    },
    
    init: function ClockComponent_ClockComponent$init(environment, componentInstanceName, domElementId, parameters) {
        ClockComponent.ClockComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._timeDateFormat$1 = parameters['time-date-format'];
        this._useCustomDigits$1 = parameters['use-custom-digits'];
        this._clockDomElement$1 = document.createElement('p');
        this._clockDomElement$1.className = 'lb_clock';
        this._clockDomElement$1.id = this._domElementId + '-lb_clock';
        this._environment.getDomElement(this._domElementId).appendChild(this._clockDomElement$1);
        this._clockSpan$1 = '';
        if (parameters['clock-label'] !== '') {
            this._clockSpan$1 = parameters['clock-label'];
            if (this._useCustomDigits$1) {
                var tempClockSpan = '';
                var curChar = '';
                for (var i = 0; i < this._clockSpan$1.length; i++) {
                    curChar = this._clockSpan$1.charAt(i).toString();
                    tempClockSpan += String.format('<span class=\"digit digit{0}\">{1}</span>', curChar, this._clockSpan$1.charAt(i));
                }
                this._clockSpan$1 = tempClockSpan;
            }
            this._clockSpan$1 = ' <span class=\"clocklabel\" >' + this._clockSpan$1 + '</span> ';
        }
    },
    
    repaint: function ClockComponent_ClockComponent$repaint() {
        this._log.debug('Repaint');
        window.setInterval(Delegate.create(this, function() {
            var currentTime = new Date(Date.get_now().getTime() + this._businessUnitService$1.getDateTimeOffset()).format(this._timeDateFormat$1);
            if (this._useCustomDigits$1) {
                var customCurrentTime = '';
                var curChar = '';
                for (var i = 0; i < currentTime.length; i++) {
                    curChar = currentTime.charAt(i).toString();
                    switch (curChar) {
                        case ':':
                            curChar = 'Colon';
                            break;
                        case '.':
                            curChar = 'Dot';
                            break;
                        case '-':
                            curChar = 'Dash';
                            break;
                    }
                    customCurrentTime += String.format('<span class=\"digit digit{0}\">{1}</span>', curChar, currentTime.charAt(i));
                }
                currentTime = customCurrentTime;
            }
            this._environment.updateDomElementDirect(this._clockDomElement$1, currentTime + this._clockSpan$1);
        }), 1000);
    }
}


ClockComponent.ClockComponent.createClass('ClockComponent.ClockComponent', Framework.AbstractComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('DashboardComponent');

////////////////////////////////////////////////////////////////////////////////
// DashboardComponent.DashboardComponent

DashboardComponent.DashboardComponent = function DashboardComponent_DashboardComponent() {
    DashboardComponent.DashboardComponent.constructBase(this);
}
DashboardComponent.DashboardComponent.prototype = {
    _parameters$1: null,
    _accountService$1: null,
    
    setAccountService: function DashboardComponent_DashboardComponent$setAccountService(accountService) {
        this._log.debug('SetAccountService');
        this._accountService$1 = accountService;
    },
    
    onBalanceChanged: function DashboardComponent_DashboardComponent$onBalanceChanged(eventSource) {
        this._log.debug('OnBalanceChanged');
        this.repaint();
    },
    
    onAccountPreferencesChanged: function DashboardComponent_DashboardComponent$onAccountPreferencesChanged(eventSource) {
        this._log.debug('OnAccountPreferencesChanged');
        var dbStyle = (this._accountService$1.get_preferences().IsCallCentreAccountNumberConstantlyDisplayed) ? 'block' : 'none';
        Framework.CookieUtil.setCookie('plchdash', dbStyle);
        this.repaint();
    },
    
    _navigationService$1: null,
    
    setNavigationService: function DashboardComponent_DashboardComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
    },
    
    _playtechService$1: null,
    
    setPlaytechService: function DashboardComponent_DashboardComponent$setPlaytechService(playtechService) {
        this._log.debug('SetPlaytechService');
        this._playtechService$1 = playtechService;
    },
    
    onPlayerInfoChanged: function DashboardComponent_DashboardComponent$onPlayerInfoChanged(eventSource) {
        this._log.debug('OnPlayerInfoChanged');
        this.repaint();
    },
    
    _userService$1: null,
    
    setUserService: function DashboardComponent_DashboardComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$1 = userService;
    },
    
    onUserChanged: function DashboardComponent_DashboardComponent$onUserChanged(userService) {
        this._log.debug('OnUserChanged');
        this.repaint();
    },
    
    init: function DashboardComponent_DashboardComponent$init(environment, componentInstanceName, domElementId, parameters) {
        DashboardComponent.DashboardComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
    },
    
    start: function DashboardComponent_DashboardComponent$start() {
        this._log.debug('Start');
        this.repaint();
    },
    
    repaint: function DashboardComponent_DashboardComponent$repaint() {
        this._log.debug('Repaint');
        var dbStyle = Framework.CookieUtil.getCookie('plchdash');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction()) && this._userService$1.isLoggedIn()) {
            if (this._accountService$1.get_accountsDetails()) {
                var xsltParameters = {};
                xsltParameters['component-instance-name'] = this._componentInstanceName;
                xsltParameters['component-dom-element-id'] = this._domElementId;
                if (this._userService$1.get_personalDetails()) {
                    xsltParameters['name'] = this._userService$1.get_personalDetails().FullName;
                }
                xsltParameters['playtech-balance'] = (!this._playtechService$1.get_playerInfo()) ? 'N/A' : this._playtechService$1.get_playerInfo().Balance.toFixed(2);
                xsltParameters['currency-symbol'] = this._accountService$1.getCurrencySimbol();
                xsltParameters['cash-balance'] = this._accountService$1.get_accountsDetails()[0].WithdrawalBalance.toFixed(2);
                xsltParameters['free-balance'] = this._accountService$1.get_accountsDetails()[1].WithdrawalBalance.toFixed(2);
                xsltParameters['acct-number'] = this._accountService$1.get_accountsDetails()[0].AccountNumber;
                this._environment.transformAndUpdate(this._domElementId, null, this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, function() {
                    if (dbStyle) {
                        document.getElementById('plchdash').style.display = dbStyle;
                        var parId = document.getElementById('dashboardlink');
                        if (parId) {
                            if (dbStyle === 'none') {
                                (parId).innerText = 'Open Dashboard';
                            }
                            else {
                                (parId).innerText = 'Close Dashboard';
                            }
                        }
                    }
                }));
            }
            else {
                this._environment.updateDomElement(this._domElementId, '');
            }
            this.show();
        }
        else {
            this.hide();
        }
    },
    
    logout: function DashboardComponent_DashboardComponent$logout() {
        this._log.debug('Logout');
        this.disable();
        this._userService$1.logout(Delegate.create(this, function(result) {
            this.enable();
        }), Delegate.create(this, function(exception) {
            this.enable();
        }));
    },
    
    refreshBalance: function DashboardComponent_DashboardComponent$refreshBalance() {
        this._log.debug('RefreshBalance');
        this._accountService$1.fetchAccountsDetails();
        this._playtechService$1.fetchPlayerInfo();
        this.repaint();
        return false;
    },
    
    setPageFilter: function DashboardComponent_DashboardComponent$setPageFilter(action, area) {
        this._log.debug('SetPageFilter');
        this._navigationService$1.goTo(area, { action: action });
        return false;
    }
}


DashboardComponent.DashboardComponent.createClass('DashboardComponent.DashboardComponent', Framework.AbstractComponent, AccountService.IBalanceChangedListener, AccountService.IAccountPreferencesChangedListener, PlaytechService.IPlayerInfoChangedListener, UserService.IUserChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LoginComponent');

////////////////////////////////////////////////////////////////////////////////
// LoginComponent.LoginComponent

LoginComponent.LoginComponent = function LoginComponent_LoginComponent() {
    LoginComponent.LoginComponent.constructBase(this);
}


LoginComponent.LoginComponent.createClass('LoginComponent.LoginComponent', AbstractMMCoreComponents.AbstractLoginComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('GamesLoginComponent');

////////////////////////////////////////////////////////////////////////////////
// GamesLoginComponent.GamesLoginComponent

GamesLoginComponent.GamesLoginComponent = function GamesLoginComponent_GamesLoginComponent() {
    GamesLoginComponent.GamesLoginComponent.constructBase(this);
}
GamesLoginComponent.GamesLoginComponent.prototype = {
    _gamesHostService$1: null,
    _autoLogin$1: null,
    _autoLogout$1: null,
    
    setGamesHostService: function GamesLoginComponent_GamesLoginComponent$setGamesHostService(gamesHostService) {
        this._log.debug('SetGamesHostService');
        this._gamesHostService$1 = gamesHostService;
    },
    
    _userService$1: null,
    
    setUserService: function GamesLoginComponent_GamesLoginComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$1 = userService;
    },
    
    onUserChanged: function GamesLoginComponent_GamesLoginComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        if (this._gamesHostService$1 && this._gamesHostService$1.isLoggedIn() && this._autoLogout$1 === 'true') {
            this._gamesHostService$1.logout(Delegate.create(this, this._logoutSuccess$1), Delegate.create(this, this._logoutFailure$1));
        }
        this.repaint();
        this._refreshOpener$1();
    },
    
    init: function GamesLoginComponent_GamesLoginComponent$init(environment, componentInstanceName, domElementId, parameters) {
        GamesLoginComponent.GamesLoginComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._autoLogin$1 = (parameters['auto-login']).toLowerCase();
        this._autoLogout$1 = (parameters['auto-logout']).toLowerCase();
    },
    
    repaint: function GamesLoginComponent_GamesLoginComponent$repaint() {
        this._log.debug('Repaint');
        if (this._userService$1 && this._gamesHostService$1) {
            if (this._userService$1.isLoggedIn()) {
                if (!this._gamesHostService$1.isLoggedIn() && this._autoLogin$1 === 'true') {
                    this._gamesHostService$1.login(Delegate.create(this, this._loginSuccess$1), Delegate.create(this, this._loginFailure$1));
                }
            }
            else {
                if (this._gamesHostService$1.isLoggedIn() && this._autoLogout$1 === 'true') {
                    this._gamesHostService$1.logout(Delegate.create(this, this._logoutSuccess$1), Delegate.create(this, this._logoutFailure$1));
                }
            }
        }
    },
    
    _refreshOpener$1: function GamesLoginComponent_GamesLoginComponent$_refreshOpener$1() {
        var opener = window.self;
        while (opener.opener) {
            opener = opener.opener;
            ((opener.location)).reload();
            if (opener) {
                if (opener.parent) {
                    ((opener.parent.location)).reload();
                }
            }
        }
    },
    
    _logoutSuccess$1: function GamesLoginComponent_GamesLoginComponent$_logoutSuccess$1(result) {
        this._log.debug('logoutSuccess');
    },
    
    _logoutFailure$1: function GamesLoginComponent_GamesLoginComponent$_logoutFailure$1(e) {
        this._log.debug('logoutFailure: ' + e.message);
    },
    
    _loginSuccess$1: function GamesLoginComponent_GamesLoginComponent$_loginSuccess$1(result) {
        this._log.debug('loginSuccess');
    },
    
    _loginFailure$1: function GamesLoginComponent_GamesLoginComponent$_loginFailure$1(e) {
        this._log.debug('loginFailure: ' + e.message);
    },
    
    repaintForAdmin: function GamesLoginComponent_GamesLoginComponent$repaintForAdmin() {
        GamesLoginComponent.GamesLoginComponent.callBase(this, 'disableForAdmin');
    }
}


GamesLoginComponent.GamesLoginComponent.createClass('GamesLoginComponent.GamesLoginComponent', Framework.AbstractComponent, UserService.IUserChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LotterySelectorComponent');

////////////////////////////////////////////////////////////////////////////////
// LotterySelectorComponent.LotterySelectorComponent

LotterySelectorComponent.LotterySelectorComponent = function LotterySelectorComponent_LotterySelectorComponent() {
    LotterySelectorComponent.LotterySelectorComponent.constructBase(this);
}
LotterySelectorComponent.LotterySelectorComponent.prototype = {
    _parameters$1: null,
    _navigationService$1: null,
    _numbersService$1: null,
    _fireNumbersChanged$1: true,
    _repaintOnLotteryChanged$1: false,
    
    setNavigationService: function LotterySelectorComponent_LotterySelectorComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function LotterySelectorComponent_LotterySelectorComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.repaint();
    },
    
    setNumbersService: function LotterySelectorComponent_LotterySelectorComponent$setNumbersService(numbersService) {
        this._log.debug('SetNumbersService');
        this._numbersService$1 = numbersService;
        this._numbersService$1.registerLotteryChangedListener(this);
    },
    
    onLotteryChanged: function LotterySelectorComponent_LotterySelectorComponent$onLotteryChanged(eventSource, idfoSport) {
        try {
            this._fireNumbersChanged$1 = false;
            if (this._repaintOnLotteryChanged$1) {
                var imgSelectors = this._environment.getDomElement(this._domElementId).getElementsByTagName('DIV');
                for (var i = 0; i < imgSelectors.length; i++) {
                    var ancElement = imgSelectors[i];
                    if (ancElement) {
                        if (ancElement.id.indexOf('-imageselector-') > 0) {
                            if (ancElement.id.indexOf(idfoSport) > 0) {
                                ancElement.className = 'current';
                            }
                            else {
                                ancElement.className = 'normal';
                            }
                        }
                    }
                }
            }
            var select = this._environment.getDomElement(this._domElementId + '-select');
            if (select && select.value !== idfoSport) {
                select.value = idfoSport;
            }
        }
        finally {
            this._fireNumbersChanged$1 = true;
        }
    },
    
    init: function LotterySelectorComponent_LotterySelectorComponent$init(environment, componentInstanceName, domElementId, parameters) {
        LotterySelectorComponent.LotterySelectorComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        if (Object.keyExists(parameters, 'repaint-on-lottery-changed')) {
            this._repaintOnLotteryChanged$1 = Boolean.parse(parameters['repaint-on-lottery-changed'].toString());
        }
    },
    
    repaint: function LotterySelectorComponent_LotterySelectorComponent$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;
            this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl().replace('${language}', this._environment.getLanguage()), this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, this._afterRepaint$1));
        }
        else {
            this.hide();
        }
    },
    
    _repaintAfterSelectedLotteryChanged$1: function LotterySelectorComponent_LotterySelectorComponent$_repaintAfterSelectedLotteryChanged$1(idfosport, callback) {
        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['idfosport'] = idfosport;
            this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl().replace('${language}', this._environment.getLanguage()), this._parameters$1.get_xsltUrl(), xsltParameters, callback);
        }
        else {
            this.hide();
        }
    },
    
    _afterRepaint$1: function LotterySelectorComponent_LotterySelectorComponent$_afterRepaint$1() {
        var select = this._environment.getDomElement(this._domElementId + '-select');
        if (select && select.value !== this._numbersService$1.getLottery()) {
            var idfoSport = this._numbersService$1.getLottery();
            if (!idfoSport || !idfoSport.trim().length) {
                this._numbersService$1.setLottery(select.value);
            }
            else {
                this.onLotteryChanged(this._numbersService$1, idfoSport);
            }
        }
    },
    
    selectLottery: function LotterySelectorComponent_LotterySelectorComponent$selectLottery(sender, idfoSport) {
        if (this._fireNumbersChanged$1) {
            if (this._numbersService$1.getLottery() !== idfoSport) {
                this._numbersService$1.setLottery(idfoSport);
            }
        }
    }
}


LotterySelectorComponent.LotterySelectorComponent.createClass('LotterySelectorComponent.LotterySelectorComponent', Framework.AbstractComponent, NavigationService.IPageFilterChangedListener, NumbersService.ILotteryChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('TicketBuilderComponent');

////////////////////////////////////////////////////////////////////////////////
// TicketBuilderComponent.TicketBuilderComponent

TicketBuilderComponent.TicketBuilderComponent = function TicketBuilderComponent_TicketBuilderComponent() {
    this._lastNumbers$1 = new Array(0);
    this._lastidfolotterydrawpatterns$1 = new Array(0);
    TicketBuilderComponent.TicketBuilderComponent.constructBase(this);
}
TicketBuilderComponent.TicketBuilderComponent.prototype = {
    _parameters$1: null,
    _navigationService$1: null,
    _numbersService$1: null,
    
    setNavigationService: function TicketBuilderComponent_TicketBuilderComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function TicketBuilderComponent_TicketBuilderComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.repaint();
    },
    
    setNumbersService: function TicketBuilderComponent_TicketBuilderComponent$setNumbersService(numbersService) {
        this._log.debug('SetNumbersService');
        this._numbersService$1 = numbersService;
        this._numbersService$1.registerLotteryChangedListener(this);
        this._numbersService$1.registerNumbersChangedListener(this);
        this._numbersService$1.registerDrawsChangedListener(this);
        this._numbersService$1.registerCurrentBallSetChangedListener(this);
    },
    
    onLotteryChanged: function TicketBuilderComponent_TicketBuilderComponent$onLotteryChanged(eventSource, idfosport) {
        this.repaintWithLottery(idfosport);
    },
    
    onNumbersChanged: function TicketBuilderComponent_TicketBuilderComponent$onNumbersChanged(eventSource, ballset, isCurrentBallSet) {
        if (!isCurrentBallSet) {
            return;
        }
        var balls = ballset.getBalls();
        var numbers = this._numbersService$1.getNumbers(balls);
        var $enum1 = this._lastNumbers$1.getEnumerator();
        while ($enum1.moveNext()) {
            var number = $enum1.get_current();
            if (!numbers.contains(number)) {
                var ele = this._environment.getDomElement(String.format('{0}-ball-{1}', this._domElementId, number));
                if (ele) {
                    var className = String.format('{0}{1}', ' ticketbuilder-nch', number);
                    ele.className = ele.className.replace(className, '');
                }
            }
        }
        var $enum2 = numbers.getEnumerator();
        while ($enum2.moveNext()) {
            var number = $enum2.get_current();
            if (!this._lastNumbers$1.contains(number)) {
                var ele = this._environment.getDomElement(String.format('{0}-ball-{1}', this._domElementId, number));
                if (ele) {
                    var className = String.format('{0}{1}', ' ticketbuilder-nch', number);
                    if (ele.className.indexOf(className) < 0) {
                        ele.className = ele.className + '' + className;
                    }
                }
            }
        }
        this._lastNumbers$1 = numbers;
    },
    
    onMarketsChanged: function TicketBuilderComponent_TicketBuilderComponent$onMarketsChanged(eventSource, idfomarkets) {
    },
    
    onDrawsChanged: function TicketBuilderComponent_TicketBuilderComponent$onDrawsChanged(eventSource, idfolotterydrawpatterns, includeBonusBall, idfoPriceType) {
        var no = this._environment.getDomElement(String.format('{0}-bonusball-no', this._domElementId));
        var yes = this._environment.getDomElement(String.format('{0}-bonusball-yes', this._domElementId));
        if (no && yes) {
            if (includeBonusBall) {
                no.checked = false;
                yes.checked = true;
            }
            else {
                no.checked = true;
                yes.checked = false;
            }
        }
        var $enum1 = this._lastidfolotterydrawpatterns$1.getEnumerator();
        while ($enum1.moveNext()) {
            var pattern = $enum1.get_current();
            if (!idfolotterydrawpatterns.contains(pattern)) {
                var ele = this._environment.getDomElement(String.format('{0}-drawpattern-{1}', this._domElementId, pattern));
                if (ele) {
                    ele.checked = false;
                }
            }
        }
        var $enum2 = idfolotterydrawpatterns.getEnumerator();
        while ($enum2.moveNext()) {
            var pattern = $enum2.get_current();
            if (!this._lastidfolotterydrawpatterns$1.contains(pattern)) {
                var ele = this._environment.getDomElement(String.format('{0}-drawpattern-{1}', this._domElementId, pattern));
                if (ele && !ele.disabled) {
                    ele.checked = true;
                }
            }
        }
        this._lastidfolotterydrawpatterns$1 = idfolotterydrawpatterns;
    },
    
    onCurrentBallsetChanged: function TicketBuilderComponent_TicketBuilderComponent$onCurrentBallsetChanged(eventSource, ballset) {
        this.onNumbersChanged(eventSource, ballset, true);
    },
    
    onCurrentBallsetBetsChanged: function TicketBuilderComponent_TicketBuilderComponent$onCurrentBallsetBetsChanged(eventSource, ballset) {
    },
    
    init: function TicketBuilderComponent_TicketBuilderComponent$init(environment, componentInstanceName, domElementId, parameters) {
        TicketBuilderComponent.TicketBuilderComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
    },
    
    repaint: function TicketBuilderComponent_TicketBuilderComponent$repaint() {
        this.repaintWithLottery(this._numbersService$1.getLottery());
    },
    
    repaintWithLottery: function TicketBuilderComponent_TicketBuilderComponent$repaintWithLottery(idfoSport) {
        this._log.debug('Repaint');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction()) && idfoSport && idfoSport.trim().length > 0) {
            this.show();
            var xsltParameters = {};
            xsltParameters['component-instance-name'] = this._componentInstanceName;
            xsltParameters['component-dom-element-id'] = this._domElementId;
            this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl().replace('${language}', this._environment.getLanguage()).replace('${idfoSport}', idfoSport), this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, this._afterRepaint$1));
        }
        else {
            this.hide();
        }
    },
    
    _afterRepaint$1: function TicketBuilderComponent_TicketBuilderComponent$_afterRepaint$1() {
        this._lastNumbers$1 = new Array(0);
        this._lastidfolotterydrawpatterns$1 = new Array(0);
        var inlcudeBonusBall = this._numbersService$1.getIncludeBonusBall();
        this.onDrawsChanged(this._numbersService$1, this._numbersService$1.getDrawPatterns(), inlcudeBonusBall, this._numbersService$1.getPriceType(inlcudeBonusBall));
        this.onNumbersChanged(this._numbersService$1, this._numbersService$1.getCurrentBallSet(), true);
    },
    
    selectNumber: function TicketBuilderComponent_TicketBuilderComponent$selectNumber(sender, numberSelected) {
        var className = String.format('{0}{1}', 'ticketbuilder-nch', numberSelected);
        if (sender.className.indexOf(className) > -1) {
            try {
                this._numbersService$1.removeBall(numberSelected);
            }
            catch (e) {
                alert(this._numbersService$1.getErrorMessage(this._domElementId, e));
            }
        }
        else {
            try {
                this._numbersService$1.addBall(numberSelected);
            }
            catch (e) {
                alert(this._numbersService$1.getErrorMessage(this._domElementId, e));
            }
        }
    },
    
    toggleBonusBall: function TicketBuilderComponent_TicketBuilderComponent$toggleBonusBall(sender, includeBonusBall) {
        this._numbersService$1.setIncludeBonusBall(includeBonusBall);
    },
    
    toggleDrawPattern: function TicketBuilderComponent_TicketBuilderComponent$toggleDrawPattern(sender, idfoDrawPattern, csvavailablebettypes) {
        if (sender.checked) {
            this._numbersService$1.addDraw(idfoDrawPattern, csvavailablebettypes);
        }
        else {
            this._numbersService$1.removeDraw(idfoDrawPattern);
        }
    },
    
    pickRandomBalls: function TicketBuilderComponent_TicketBuilderComponent$pickRandomBalls(numberToPick, numberofballs) {
        this._numbersService$1.pickRandomBalls(numberToPick, numberofballs);
    },
    
    clearBalls: function TicketBuilderComponent_TicketBuilderComponent$clearBalls() {
        this._numbersService$1.clearBalls();
    }
}


TicketBuilderComponent.TicketBuilderComponent.createClass('TicketBuilderComponent.TicketBuilderComponent', Framework.AbstractComponent, NavigationService.IPageFilterChangedListener, NumbersService.ILotteryChangedListener, NumbersService.INumbersChangedListener, NumbersService.IDrawsChangedListener, NumbersService.ICurrentBallsetChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LotteryBetSlipComponent');

////////////////////////////////////////////////////////////////////////////////
// LotteryBetSlipComponent.LotteryBetSlipComponent

LotteryBetSlipComponent.LotteryBetSlipComponent = function LotteryBetSlipComponent_LotteryBetSlipComponent() {
    LotteryBetSlipComponent.LotteryBetSlipComponent.constructBase(this);
}
LotteryBetSlipComponent.LotteryBetSlipComponent.prototype = {
    _parameters$1: null,
    _idfoPriceType$1: 'REG',
    _currentBallSet$1: null,
    _navigationService$1: null,
    _numbersService$1: null,
    _dontFireClientEvents$1: false,
    
    setNavigationService: function LotteryBetSlipComponent_LotteryBetSlipComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction())) {
            this.repaint();
        }
        else {
            this.hide();
        }
    },
    
    setNumbersService: function LotteryBetSlipComponent_LotteryBetSlipComponent$setNumbersService(numbersService) {
        this._log.debug('SetNumbersService');
        this._numbersService$1 = numbersService;
        this._numbersService$1.registerLotteryChangedListener(this);
        this._numbersService$1.registerNumbersChangedListener(this);
        this._numbersService$1.registerDrawsChangedListener(this);
        this._numbersService$1.registerCurrentBallSetChangedListener(this);
        this._numbersService$1.registerBetsChangedListener(this);
    },
    
    onLotteryChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onLotteryChanged(eventSource, idfosport) {
        this.repaintWithLottery(idfosport);
    },
    
    onMarketsChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onMarketsChanged(eventSource, idfomarkets) {
        try {
            this._dontFireClientEvents$1 = true;
            this._onMarketsChangedInt$1(eventSource, idfomarkets);
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    onDrawsChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onDrawsChanged(eventSource, idfolotterydrawpatterns, includeBonusBall, idfoPriceType) {
        try {
            this._dontFireClientEvents$1 = true;
            this._onDrawsChangedInt$1(eventSource, idfolotterydrawpatterns, includeBonusBall, idfoPriceType);
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    onNumbersChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onNumbersChanged(eventSource, ballset, isCurrentBallset) {
        try {
            this._dontFireClientEvents$1 = true;
            this._setBallSetBalls$1(ballset);
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    onCurrentBallsetChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onCurrentBallsetChanged(eventSource, ballset) {
        try {
            this._dontFireClientEvents$1 = true;
            this._onCurrentBallsetChangedInt$1(eventSource, ballset);
            this._setBallSetBalls$1(ballset);
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    onCurrentBallsetBetsChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onCurrentBallsetBetsChanged(eventSource, ballset) {
        try {
            this._dontFireClientEvents$1 = true;
            this._onCurrentBallsetChangedInt$1(eventSource, ballset);
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    onBetTotalsChanged: function LotteryBetSlipComponent_LotteryBetSlipComponent$onBetTotalsChanged(eventSource, betTotals) {
        try {
            this._dontFireClientEvents$1 = true;
            this._onBetTotalsChangedInt$1(eventSource, betTotals);
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    init: function LotteryBetSlipComponent_LotteryBetSlipComponent$init(environment, componentInstanceName, domElementId, parameters) {
        LotteryBetSlipComponent.LotteryBetSlipComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
    },
    
    repaintWithLottery: function LotteryBetSlipComponent_LotteryBetSlipComponent$repaintWithLottery(lottery) {
        this._log.debug('Repaint');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction()) && lottery && lottery.trim().length > 0) {
            this.show();
            var xsltParameters = {};
            xsltParameters['component-instance-name'] = this._componentInstanceName;
            xsltParameters['component-dom-element-id'] = this._domElementId;
            xsltParameters['max-multiple-balls'] = this._numbersService$1.getMaxMultipleBalls();
            xsltParameters['max-straight-lines'] = this._numbersService$1.getMaxStraightLines();
            xsltParameters['price-type'] = this._idfoPriceType$1;
            xsltParameters['line-number'] = this._getCurrentBallSet$1().lineNumber;
            xsltParameters['line-type'] = this._getCurrentBallSet$1().type;
            xsltParameters['line-type-multiples'] = NumbersService.NumbersService.linE_TYPE_MULTIPLES;
            xsltParameters['line-type-straights'] = NumbersService.NumbersService.linE_TYPE_STRAIGHTS;
            this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl().replace('${language}', this._environment.getLanguage()).replace('${idfoSport}', lottery), this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, this._afterRepaint$1));
        }
        else {
            this.hide();
        }
    },
    
    repaint: function LotteryBetSlipComponent_LotteryBetSlipComponent$repaint() {
        this.repaintWithLottery(this._numbersService$1.getLottery());
    },
    
    _afterRepaint$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_afterRepaint$1() {
        try {
            this._dontFireClientEvents$1 = true;
            var ballsets = this._numbersService$1.getAllBallSets();
            var $enum1 = ballsets.getEnumerator();
            while ($enum1.moveNext()) {
                var ballset = $enum1.get_current();
                this._setBallSetBalls$1(ballset);
            }
            this._onCurrentBallsetChangedInt$1(this._numbersService$1, this._numbersService$1.getCurrentBallSet());
            var idfolotterydrawpatterns = this._numbersService$1.getDrawPatterns();
            var isBonusBallincluded = this._numbersService$1.getIncludeBonusBall();
            this._onDrawsChangedInt$1(this._numbersService$1, idfolotterydrawpatterns, isBonusBallincluded, this._numbersService$1.getPriceType(isBonusBallincluded));
            var elem = this._environment.getDomElement(String.format('{0}-firstMarketId', this._domElementId));
            var firstMarketId = '';
            if (elem) {
                firstMarketId = elem.value;
            }
            elem = this._environment.getDomElement(String.format('{0}-firstCsvPriceTypes', this._domElementId));
            var firstCsvPriceTypes = '';
            if (elem) {
                firstCsvPriceTypes = elem.value;
            }
            elem = this._environment.getDomElement(String.format('{0}-firstCsvBetTypes', this._domElementId));
            var firstCsvBetTypes = '';
            if (elem) {
                firstCsvBetTypes = elem.value;
            }
            this._numbersService$1.setDummyTicketValues(firstMarketId, firstCsvPriceTypes, firstCsvBetTypes);
            this._onBetTotalsChangedInt$1(this._numbersService$1, this._numbersService$1.getBetTotals());
            this._onMarketsChangedInt$1(this._numbersService$1, this._numbersService$1.getMarkets());
        }
        finally {
            this._dontFireClientEvents$1 = false;
        }
    },
    
    _getMarkets$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_getMarkets$1(isChecked) {
        var elems = Framework.DocumentFinder.getElementsBySelector('.lottobetslip-drawselect');
        if (!elems) {
            return {};
        }
        var retVal = {};
        var replace = this._domElementId + '-market-selector-';
        var $enum1 = elems.getEnumerator();
        while ($enum1.moveNext()) {
            var elem = $enum1.get_current();
            var ch = elem;
            if (ch.checked === isChecked && elem.parentNode && elem.parentNode.parentNode && elem.parentNode.parentNode.style.display.trim().toLowerCase() === '') {
                var idfoMarket = ch.id.replace(replace, '');
                var idfoDrawPattern = elem.parentNode.parentNode.title;
                if (idfoDrawPattern !== '') {
                    if (!Object.keyExists(retVal, idfoDrawPattern)) {
                        retVal[idfoDrawPattern] = [];
                    }
                    (retVal[idfoDrawPattern]).add(idfoMarket);
                }
            }
        }
        return retVal;
    },
    
    _onMarketsChangedInt$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_onMarketsChangedInt$1(eventSource, idfomarkets) {
        var elems = Framework.DocumentFinder.getElementsBySelector('.lottobetslip-drawselect');
        if (!elems) {
            return;
        }
        if (!idfomarkets) {
            idfomarkets = new Array(0);
        }
        var allVisibleChecked = true;
        var replace = this._domElementId + '-market-selector-';
        var $enum1 = elems.getEnumerator();
        while ($enum1.moveNext()) {
            var elem = $enum1.get_current();
            var idfoMarket = elem.id.replace(replace, '');
            var isChecked = (idfomarkets.contains(idfoMarket));
            (elem).checked = isChecked;
            if (!isChecked && elem.parentNode && elem.parentNode.parentNode && elem.parentNode.parentNode.style.display === '') {
                allVisibleChecked = false;
            }
        }
        if (!idfomarkets.length) {
            allVisibleChecked = false;
        }
        var all = this._environment.getDomElement(String.format('{0}-markets-select-all', this._domElementId));
        if (all) {
            all.checked = allVisibleChecked;
        }
    },
    
    _onBetTotalsChangedInt$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_onBetTotalsChangedInt$1(eventSource, betTotals) {
        var bets = this._environment.getDomElement(String.format('{0}-bet-totals-bets', this._domElementId));
        if (bets) {
            bets.innerText = betTotals.unitCount.toString();
        }
        var stake = this._environment.getDomElement(String.format('{0}-bet-totals-stake', this._domElementId));
        if (stake) {
            stake.innerText = betTotals.totalStake.toFixed(2);
        }
        var potReturn = this._environment.getDomElement(String.format('{0}-bet-totals-return', this._domElementId));
        if (potReturn) {
            potReturn.innerText = this._numbersService$1.getRealPotentialProfit(betTotals.potentialReturn, betTotals.totalStake).toFixed(2);
        }
    },
    
    _onDrawsChangedInt$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_onDrawsChangedInt$1(eventSource, idfolotterydrawpatterns, includeBonusBall, idfoPriceType) {
        if (idfoPriceType !== this._idfoPriceType$1) {
            this._idfoPriceType$1 = idfoPriceType;
            this.repaint();
        }
        var elems = Framework.DocumentFinder.getElementsBySelector('.lottobetslip-drawpattern');
        var $enum1 = elems.getEnumerator();
        while ($enum1.moveNext()) {
            var elem = $enum1.get_current();
            elem.style.display = 'none';
        }
        var count = 0;
        var $enum2 = idfolotterydrawpatterns.getEnumerator();
        while ($enum2.moveNext()) {
            var idfolotterydrawpattern = $enum2.get_current();
            var onElems = Framework.DocumentFinder.getElementsBySelector(String.format('.lottobetslip-drawpattern-{0}', idfolotterydrawpattern));
            var $enum3 = onElems.getEnumerator();
            while ($enum3.moveNext()) {
                var elem = $enum3.get_current();
                elem.style.display = '';
                count++;
            }
        }
        var eh = this._environment.getDomElement(String.format('{0}-markets-header', this._domElementId));
        var neh = this._environment.getDomElement(String.format('{0}-no-markets-header', this._domElementId));
        if (eh) {
            eh.style.display = ((!count) ? 'none' : '');
        }
        if (neh) {
            neh.style.display = ((!count) ? '' : 'none');
        }
    },
    
    _onCurrentBallsetChangedInt$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_onCurrentBallsetChangedInt$1(eventSource, ballset) {
        var el = this._environment.getDomElement(String.format('{0}-line-selector-{1}-{2}', this._domElementId, this._getCurrentBallSet$1().type, this._getCurrentBallSet$1().lineNumber));
        if (el && el.checked) {
            el.checked = false;
        }
        this._currentBallSet$1 = ballset;
        this._selectLineType$1();
        this._setBallSetBalls$1(ballset);
    },
    
    _getCurrentBallSet$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_getCurrentBallSet$1() {
        if (!this._currentBallSet$1) {
            this._currentBallSet$1 = this._numbersService$1.getCurrentBallSet();
        }
        return this._currentBallSet$1;
    },
    
    _selectLineType$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_selectLineType$1() {
        var ballset = this._getCurrentBallSet$1();
        var multiples = this._environment.getDomElement(String.format('{0}-multiples', this._domElementId));
        var straights = this._environment.getDomElement(String.format('{0}-straights', this._domElementId));
        if (multiples && straights) {
            var clickedid = String.format('{0}-{1}', this._domElementId, ballset.type);
            if (clickedid !== multiples.id) {
                multiples.style.display = 'none';
            }
            else {
                multiples.style.display = '';
            }
            if (clickedid !== straights.id) {
                straights.style.display = 'none';
            }
            else {
                straights.style.display = '';
            }
            var multiplesSelector = this._environment.getDomElement(String.format('{0}-multiples-selector', this._domElementId));
            var straightsSelector = this._environment.getDomElement(String.format('{0}-straights-selector', this._domElementId));
            if (multiplesSelector && ballset.type !== NumbersService.NumbersService.linE_TYPE_MULTIPLES) {
                multiplesSelector.className = multiplesSelector.className.replace('lottobetslip-typeselected', '');
            }
            else if (multiplesSelector.className.indexOf('lottobetslip-typeselected') === -1) {
                multiplesSelector.className = multiplesSelector.className + 'lottobetslip-typeselected';
            }
            if (straightsSelector && ballset.type !== NumbersService.NumbersService.linE_TYPE_STRAIGHTS) {
                straightsSelector.className = straightsSelector.className.replace('lottobetslip-typeselected', '');
            }
            else if (straightsSelector.className.indexOf('lottobetslip-typeselected') === -1) {
                straightsSelector.className = straightsSelector.className + 'lottobetslip-typeselected';
            }
        }
        var el = this._environment.getDomElement(String.format('{0}-line-selector-{1}-{2}', this._domElementId, ballset.type, ballset.lineNumber));
        if (el && !el.checked) {
            el.checked = true;
        }
    },
    
    _setBallSetBalls$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_setBallSetBalls$1(ballset) {
        if (ballset) {
            var numbers = this._numbersService$1.getNumbers(ballset.getBalls());
            if (ballset.type === NumbersService.NumbersService.linE_TYPE_MULTIPLES) {
                this._setMultipleNumbers$1(numbers, ballset.maxNumbersOfBalls, ballset.bets);
            }
            else {
                var bet = null;
                if (ballset && ballset.bets && ballset.bets.length > 0) {
                    bet = ballset.bets[0];
                }
                if (!bet) {
                    bet = new NumbersService.Bet();
                }
                this._setStraightNumbers$1(numbers, ballset.lineNumber, ballset.type, ballset.maxNumbersOfBalls, bet);
            }
        }
    },
    
    _setStraightNumbers$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_setStraightNumbers$1(numbers, line, type, maxnumberOfBalls, bet) {
        var row = line;
        for (var col = 1; col <= maxnumberOfBalls; col++) {
            var el = this._environment.getDomElement(String.format('{0}-{1}-row{2}-col{3}', this._domElementId, type, line, col));
            if (el) {
                el.className = 'lottobetslip-nc lottobetslip-nc0 lottobetslip-ncoff' + col.toString();
            }
        }
        for (var col = 1; col <= numbers.length; col++) {
            var classNames = [ String.format('lottobetslip-nch{0}', numbers[col - 1]), 'lottobetslip-nchx' ];
            var el = this._environment.getDomElement(String.format('{0}-{1}-row{2}-col{3}', this._domElementId, type, row, col));
            var $enum1 = classNames.getEnumerator();
            while ($enum1.moveNext()) {
                var className = $enum1.get_current();
                if (el && el.className.indexOf(className) === -1) {
                    el.className = String.format('{0} {1}', el.className, className);
                }
            }
        }
        this._setCalculatedFields$1(line, bet, NumbersService.NumbersService.linE_TYPE_STRAIGHTS);
    },
    
    _setMultipleNumbers$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_setMultipleNumbers$1(numbers, maxnumbers, bets) {
        for (var col = 1; col <= maxnumbers; col++) {
            for (var row = 1; row <= maxnumbers; row++) {
                var el = this._environment.getDomElement(String.format('{0}-{1}-row{2}-col{3}', this._domElementId, NumbersService.NumbersService.linE_TYPE_MULTIPLES, row, col));
                if (el) {
                    el.className = 'lottobetslip-nc lottobetslip-nc0 lottobetslip-ncoff' + col.toString();
                }
            }
        }
        for (var col = 1; col <= numbers.length; col++) {
            var classNames = [ String.format('lottobetslip-nch{0}', numbers[col - 1]), 'lottobetslip-nchx' ];
            for (var row = 1; row <= maxnumbers; row++) {
                var el = this._environment.getDomElement(String.format('{0}-{1}-row{2}-col{3}', this._domElementId, NumbersService.NumbersService.linE_TYPE_MULTIPLES, row, col));
                var $enum1 = classNames.getEnumerator();
                while ($enum1.moveNext()) {
                    var className = $enum1.get_current();
                    if (el && el.className.indexOf(className) === -1) {
                        el.className = String.format('{0} {1}', el.className, className);
                    }
                }
            }
        }
        for (var row = 1; row <= maxnumbers; row++) {
            var bettypeSelect = this._environment.getDomElement(String.format('{0}-{1}-bettype-{2}', this._domElementId, NumbersService.NumbersService.linE_TYPE_MULTIPLES, row));
            var bet = null;
            if (bets) {
                bet = bets[row - 1];
            }
            if (!bet) {
                bet = new NumbersService.Bet();
            }
            if (bettypeSelect) {
                var isChanged = false;
                var bettypes = this._numbersService$1.getMultilineBetTypes(row);
                if (bettypeSelect.options.length !== (bettypes.length + 1)) {
                    isChanged = true;
                }
                if (!isChanged) {
                    var $enum2 = bettypes.getEnumerator();
                    while ($enum2.moveNext()) {
                        var bettype = $enum2.get_current();
                        var found = false;
                        for (var iOpt = 0; iOpt < bettypeSelect.options.length; iOpt++) {
                            var opt = bettypeSelect.options[iOpt];
                            if (opt.value === bettype.IDFOBetType) {
                                found = true;
                                break;
                            }
                        }
                        if (!found) {
                            isChanged = true;
                            break;
                        }
                    }
                }
                if (isChanged) {
                    var val = bettypeSelect.value;
                    while (bettypeSelect.childNodes.length > 1) {
                        var el = bettypeSelect.childNodes[bettypeSelect.childNodes.length - 1];
                        if (el && el.value !== '') {
                            bettypeSelect.removeChild(el);
                        }
                    }
                    if (!bettypes || !bettypes.length) {
                        bettypeSelect.disabled = true;
                    }
                    else {
                        bettypeSelect.disabled = false;
                        var $enum3 = bettypes.getEnumerator();
                        while ($enum3.moveNext()) {
                            var bettype = $enum3.get_current();
                            var el = document.createElement('OPTION');
                            el.value = bettype.IDFOBetType;
                            el.innerHTML = bettype.Name;
                            bettypeSelect.appendChild(el);
                            if (bettype.IDFOBetType === bet.betTypeCode) {
                                el.selected = true;
                            }
                            else {
                                el.selected = false;
                            }
                        }
                    }
                }
            }
            this._setCalculatedFields$1(row, bet, NumbersService.NumbersService.linE_TYPE_MULTIPLES);
        }
    },
    
    _setCalculatedFields$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_setCalculatedFields$1(betRow, bet, lineType) {
        var stakeInput = this._environment.getDomElement(String.format('{0}-{1}-stake-{2}', this._domElementId, lineType, betRow));
        var disableInputElements = (!bet.betTypeCode || !bet.betTypeCode.trim().length);
        if (stakeInput) {
            stakeInput.disabled = false;
            if (bet.stake && bet.stake > 0 && !disableInputElements) {
                var currStake = Number.parse(stakeInput.value);
                if (isNaN(currStake)) {
                    currStake = 0;
                }
                if (currStake.toFixed(2) !== bet.stake.toFixed(2)) {
                    stakeInput.value = bet.stake.toFixed(2);
                }
            }
            else {
                if (Framework.ScriptSharpQuirks.isNumberNull(bet.stake)) {
                    stakeInput.value = '';
                }
                if (disableInputElements) {
                    stakeInput.disabled = true;
                }
            }
        }
        var betElement = this._environment.getDomElement(String.format('{0}-{1}-unit-count-{2}', this._domElementId, lineType, betRow));
        if (betElement) {
            if (bet.stake > 0 && bet.unitCount) {
                betElement.innerText = bet.unitCount.toString();
            }
            else {
                betElement.innerText = '';
            }
        }
        var totalstakeElement = this._environment.getDomElement(String.format('{0}-{1}-total-stake-{2}', this._domElementId, lineType, betRow));
        if (totalstakeElement) {
            if (bet.stake > 0 && bet.totalStake) {
                totalstakeElement.innerText = bet.totalStake.toFixed(2);
            }
            else {
                totalstakeElement.innerText = '';
            }
        }
        var returnElement = this._environment.getDomElement(String.format('{0}-{1}-return-{2}', this._domElementId, lineType, betRow));
        if (returnElement) {
            if (bet.stake > 0 && bet.potentialReturn) {
                returnElement.innerText = bet.potentialReturn.toFixed(2);
            }
            else {
                returnElement.innerText = '';
            }
        }
    },
    
    setCurrentBallSet: function LotteryBetSlipComponent_LotteryBetSlipComponent$setCurrentBallSet(type, lineNumber, maxNumberOfBalls) {
        if (this._dontFireClientEvents$1) {
            return;
        }
        this._numbersService$1.setCurrentBallSet(type, lineNumber, maxNumberOfBalls);
    },
    
    removeBallForLineColumn: function LotteryBetSlipComponent_LotteryBetSlipComponent$removeBallForLineColumn(lineType, lineNumber, colNumber) {
        if (this._dontFireClientEvents$1) {
            return;
        }
        this._numbersService$1.removeBallForLineColumn(lineType, lineNumber, colNumber);
    },
    
    _isValidStake$1: function LotteryBetSlipComponent_LotteryBetSlipComponent$_isValidStake$1(s) {
        return new RegExp('^\\d*(\\.)?(\\d{1,2})?$').test(s);
    },
    
    setStake: function LotteryBetSlipComponent_LotteryBetSlipComponent$setStake(lineType, lineNumber, stake, betIndex) {
        if (this._dontFireClientEvents$1) {
            return;
        }
        var stakeInput = this._environment.getDomElement(String.format('{0}-{1}-stake-{2}', this._domElementId, lineType, betIndex));
        var stakeNo = null;
        if (this._isValidStake$1(stake)) {
            stakeNo = (isNaN(Number.parse(stake))) ? 0 : Number.parse(stake);
        }
        else {
            stakeInput.value = '';
        }
        this._numbersService$1.setStake(lineType, lineNumber, stakeNo, betIndex);
    },
    
    setBetType: function LotteryBetSlipComponent_LotteryBetSlipComponent$setBetType(lineType, lineNumber, betType) {
        if (this._dontFireClientEvents$1) {
            return;
        }
        this._numbersService$1.setBetType(lineNumber, betType);
    },
    
    setMarket: function LotteryBetSlipComponent_LotteryBetSlipComponent$setMarket(idfoMarket, idfoDrawPattern, ischecked) {
        if (this._dontFireClientEvents$1) {
            return;
        }
        if (ischecked) {
            this._numbersService$1.addMarket(idfoMarket, idfoDrawPattern);
        }
        else {
            this._numbersService$1.removeMarket(idfoMarket, idfoDrawPattern);
        }
    },
    
    setMarkets: function LotteryBetSlipComponent_LotteryBetSlipComponent$setMarkets(ischecked) {
        if (ischecked) {
            this._numbersService$1.addMarkets(this._getMarkets$1(!ischecked));
        }
        else {
            this._numbersService$1.removeMarkets(this._getMarkets$1(!ischecked));
        }
    }
}


LotteryBetSlipComponent.LotteryBetSlipComponent.createClass('LotteryBetSlipComponent.LotteryBetSlipComponent', Framework.AbstractComponent, NavigationService.IPageFilterChangedListener, NumbersService.ILotteryChangedListener, NumbersService.INumbersChangedListener, NumbersService.IDrawsChangedListener, NumbersService.IBetsChangedListener, NumbersService.ICurrentBallsetChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LotteryPlacementComponent');

////////////////////////////////////////////////////////////////////////////////
// LotteryPlacementComponent.LotteryPlacementComponent

LotteryPlacementComponent.LotteryPlacementComponent = function LotteryPlacementComponent_LotteryPlacementComponent() {
    LotteryPlacementComponent.LotteryPlacementComponent.constructBase(this);
}
LotteryPlacementComponent.LotteryPlacementComponent.prototype = {
    _parameters$1: null,
    _navigationService$1: null,
    _numbersService$1: null,
    
    setNavigationService: function LotteryPlacementComponent_LotteryPlacementComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function LotteryPlacementComponent_LotteryPlacementComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction())) {
            if ((this._navigationService$1.getAction() === this._numbersService$1.get_lottoHomePageAction() || this._navigationService$1.getAction() === this._numbersService$1.get_lottoBetPlacementPageAction())) {
                this._setComponentForAction$1();
            }
            else {
                this.repaint();
            }
        }
        else {
            this.hide();
        }
    },
    
    setNumbersService: function LotteryPlacementComponent_LotteryPlacementComponent$setNumbersService(numbersService) {
        this._log.debug('SetNumbersService');
        this._numbersService$1 = numbersService;
        this._numbersService$1.registerBetsChangedListener(this);
        this._numbersService$1.registerBetPlacementListener(this);
        this._numbersService$1.registerLotteryChangedListener(this);
    },
    
    onBetTotalsChanged: function LotteryPlacementComponent_LotteryPlacementComponent$onBetTotalsChanged(eventSource, betTotals) {
        if (!String.compare(this._numbersService$1.get_lottoHomePageAction(), this._navigationService$1.getAction(), false)) {
            this._showPlacementActions$1(betTotals.totalStake > 0);
        }
        var placeUsingFree = this._environment.getDomElement(String.format('{0}-place-using-free', this._domElementId));
        if (placeUsingFree) {
            placeUsingFree.checked = this._numbersService$1.getPlaceUsingFree();
        }
    },
    
    onBetPreviewReady: function LotteryPlacementComponent_LotteryPlacementComponent$onBetPreviewReady(eventSource, ticket) {
        this.displayBetSlip(null, ticket);
    },
    
    onBetPlacementSuccess: function LotteryPlacementComponent_LotteryPlacementComponent$onBetPlacementSuccess(eventSource, ticket) {
        var ticketRef = this.updateBetSlipReferences(ticket.ExternalReference, ticket.Lines);
        this._showAfterPreviewActions$1(false);
        this._showBetReference$1(true, ticketRef);
        this._showBetslipSummary$1(this._numbersService$1.isBetConfirmationScreenShownAfterPlacement());
        this._showConfirmationRequiredActions$1(false);
        this._showContinueActions$1(true);
        this._showPlacementActions$1(false);
        this._showPreviewMessage$1(false);
        this._parseDetailedStates$1(ticket.Status.State);
    },
    
    onLotteryChanged: function LotteryPlacementComponent_LotteryPlacementComponent$onLotteryChanged(eventSource, idfosport) {
        this.repaintWithLottery(idfosport);
    },
    
    onBetPlacementFailure: function LotteryPlacementComponent_LotteryPlacementComponent$onBetPlacementFailure(eventSource, ticketInbound, ticketOutbound) {
        this._showAfterPreviewActions$1(false);
        this._showBetReference$1(false, null);
        this._showBetslipSummary$1(this._numbersService$1.isBetConfirmationScreenShownBeforePlacement());
        this._showConfirmationRequiredActions$1(false);
        this._showContinueActions$1(true);
        this._showPlacementActions$1(false);
        this._showPreviewMessage$1(false);
        this._parseDetailedStates$1(ticketOutbound.Status.State);
    },
    
    onConfirmationRequired: function LotteryPlacementComponent_LotteryPlacementComponent$onConfirmationRequired(eventSource, ticket) {
        this._showAfterPreviewActions$1(false);
        this._showBetReference$1(false, null);
        this._showBetslipSummary$1(this._numbersService$1.isBetConfirmationScreenShownBeforePlacement());
        this._showConfirmationRequiredActions$1(true);
        this._showContinueActions$1(false);
        this._showPlacementActions$1(false);
        this._showPreviewMessage$1(false);
        this._parseDetailedStates$1(ticket.Status.State);
    },
    
    onRejected: function LotteryPlacementComponent_LotteryPlacementComponent$onRejected(eventSource, ticket) {
        this._showAfterPreviewActions$1(true);
        this._showBetReference$1(false, null);
        this._showBetslipSummary$1(this._numbersService$1.isBetConfirmationScreenShownBeforePlacement());
        this._showConfirmationRequiredActions$1(false);
        this._showContinueActions$1(false);
        this._showPlacementActions$1(false);
        this._showPreviewMessage$1(false);
        this._parseDetailedStates$1(ticket.Status.State);
    },
    
    onWaitingForResponse: function LotteryPlacementComponent_LotteryPlacementComponent$onWaitingForResponse(eventSource) {
        this._showConfirmationRequiredActions$1(false);
        this._showPlacementActions$1(false);
        this._showAfterPreviewActions$1(false);
        this._showContinueActions$1(false);
        this._showWaitingMessage$1(true);
    },
    
    onNotWaitingForResponse: function LotteryPlacementComponent_LotteryPlacementComponent$onNotWaitingForResponse(eventSource) {
        this._showWaitingMessage$1(false);
    },
    
    init: function LotteryPlacementComponent_LotteryPlacementComponent$init(environment, componentInstanceName, domElementId, parameters) {
        LotteryPlacementComponent.LotteryPlacementComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
    },
    
    repaintWithLottery: function LotteryPlacementComponent_LotteryPlacementComponent$repaintWithLottery(lottery) {
        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['max-number-of-balls'] = Math.max(this._numbersService$1.getMaxMultipleBalls(), 5);
            xsltParameters['place-using-free'] = ((this._numbersService$1.getPlaceUsingFree()) ? 'Y' : 'N');
            xsltParameters['ifosport'] = lottery;
            this._environment.transformAndUpdate(this._domElementId, this._parameters$1.get_contentUrl().replace('${language}', this._environment.getLanguage()).replace('${idfoSport}', lottery), this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, this._afterRepaint$1));
        }
        else {
            this.hide();
        }
    },
    
    repaint: function LotteryPlacementComponent_LotteryPlacementComponent$repaint() {
        this.repaintWithLottery(this._numbersService$1.getLottery());
    },
    
    _afterRepaint$1: function LotteryPlacementComponent_LotteryPlacementComponent$_afterRepaint$1() {
        var placeUsingFree = this._environment.getDomElement(String.format('{0}-place-using-free', this._domElementId));
        if (placeUsingFree) {
            placeUsingFree.checked = this._numbersService$1.getPlaceUsingFree();
        }
        this._setComponentForAction$1();
    },
    
    _setComponentForAction$1: function LotteryPlacementComponent_LotteryPlacementComponent$_setComponentForAction$1() {
        if (!String.compare(this._numbersService$1.get_lottoHomePageAction(), this._navigationService$1.getAction(), false)) {
            var betTotals = this._numbersService$1.getBetTotals();
            this.onBetTotalsChanged(this._numbersService$1, betTotals);
            this._showAfterPreviewActions$1(false);
            this._showBetReference$1(false, null);
            this._showBetslipSummary$1(false);
            this._showConfirmationRequiredActions$1(false);
            this._showContinueActions$1(false);
            this._showPlacementActions$1(betTotals.totalStake > 0);
            this._showPreviewMessage$1(false);
        }
        else {
            this._showAfterPreviewActions$1(this._numbersService$1.isBetConfirmationScreenShownBeforePlacement());
            this._showBetReference$1(false, null);
            this._showBetslipSummary$1(this._numbersService$1.isBetConfirmationScreenShownBeforePlacement());
            this._showConfirmationRequiredActions$1(false);
            this._showContinueActions$1(false);
            this._showPlacementActions$1(false);
            this._showPreviewMessage$1(this._numbersService$1.isBetConfirmationScreenShownBeforePlacement());
        }
    },
    
    _parseDetailedStates$1: function LotteryPlacementComponent_LotteryPlacementComponent$_parseDetailedStates$1(detailedTicketState) {
        this._parseDetailedState$1(detailedTicketState, NumbersService.DetailedTicketStates.accepted);
        this._parseDetailedState$1(detailedTicketState, NumbersService.DetailedTicketStates.abortProcessing);
        this._parseDetailedState$1(detailedTicketState, NumbersService.DetailedTicketStates.maxTakeoutViolation);
        this._parseDetailedState$1(detailedTicketState, NumbersService.DetailedTicketStates.rejected);
        this._parseDetailedState$1(detailedTicketState, NumbersService.DetailedTicketStates.topupRequired);
    },
    
    _parseDetailedState$1: function LotteryPlacementComponent_LotteryPlacementComponent$_parseDetailedState$1(detailedTicketState, detailedState) {
        var ele = this._environment.getDomElement(String.format('{0}-detailed-status-{1}', this._domElementId, detailedState));
        if (ele) {
            ele.style.display = (((detailedTicketState & detailedState)) ? '' : 'none');
        }
    },
    
    _showConfirmationRequiredActions$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showConfirmationRequiredActions$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-confirmation-required', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    _showContinueActions$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showContinueActions$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-continue', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    _showPlacementActions$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showPlacementActions$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-place-bets', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    _showAfterPreviewActions$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showAfterPreviewActions$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-after-preview-actions', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    _showWaitingMessage$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showWaitingMessage$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-waiting-message', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    _showBetReference$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showBetReference$1(show, ticketRef) {
        var ele = this._environment.getDomElement(String.format('{0}-bet-reference', this._domElementId));
        var eletext = this._environment.getDomElement(String.format('{0}-bet-reference-text', this._domElementId));
        if (ele) {
            if (eletext) {
                ele.innerHTML = String.format('<h3>{0} {1}</h3>', eletext.value, ticketRef);
                ele.style.display = ((show) ? '' : 'none');
            }
        }
    },
    
    _showPreviewMessage$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showPreviewMessage$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-bet-preview-message', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    _showBetslipSummary$1: function LotteryPlacementComponent_LotteryPlacementComponent$_showBetslipSummary$1(show) {
        var ele = this._environment.getDomElement(String.format('{0}-betslip-summary', this._domElementId));
        if (ele) {
            ele.style.display = ((show) ? '' : 'none');
        }
    },
    
    updateBetSlipReferences: function LotteryPlacementComponent_LotteryPlacementComponent$updateBetSlipReferences(ticketRef, ticket) {
        if (!ticket || !ticket.length) {
            return '';
        }
        var lineRefs = '';
        var isFirst = true;
        for (var i = 0; i < ticket.length; i++) {
            var line = ticket[i];
            var betRef = this._environment.getDomElement(String.format('{0}-lotto-bet-reference-{1}', this._domElementId, i));
            if (line) {
                if (betRef) {
                    betRef.innerHTML = String.format('{0}/{1}', line.ExternalReference, ticketRef);
                }
                if (isFirst) {
                    lineRefs = line.ExternalReference;
                    isFirst = false;
                }
                else {
                    lineRefs = String.format('{0},{1}', lineRefs, line.ExternalReference);
                }
            }
        }
        return String.format('{0}/{1}', lineRefs, ticketRef);
    },
    
    displayBetSlip: function LotteryPlacementComponent_LotteryPlacementComponent$displayBetSlip(ticketRef, ticket) {
        var place = this._environment.getDomElement(String.format('{0}-betslip-lines', this._domElementId));
        if (!place) {
            return;
        }
        place.innerText = '';
        if (!ticket || !ticket.length) {
            return;
        }
        for (var lineOrdinal = 0; lineOrdinal < ticket.length; lineOrdinal++) {
            var line = ticket[lineOrdinal];
            var market = this._environment.getDomElement(String.format('{0}-market-{1}', this._domElementId, line.IDFOMarket.toString()));
            if (!market) {
                market = this._environment.getDomElement(String.format('{0}-market-{1}', this._domElementId, line.IDFOMarket.toFixed(2)));
            }
            if (!market) {
                continue;
            }
            var tr = document.createElement('TR');
            place.appendChild(tr);
            var draw = document.createElement('TD');
            draw.className = 'lottoplacement-text-cell';
            draw.innerHTML = market.value;
            tr.appendChild(draw);
            for (var ballOrdinal = 0; ballOrdinal < Math.max(this._numbersService$1.getMaxMultipleBalls(), 5); ballOrdinal++) {
                var ball = document.createElement('TD');
                if (ballOrdinal < line.Balls.length && line.Balls[ballOrdinal]) {
                    ball.innerHTML = line.Balls[ballOrdinal].Number.toString();
                    ball.className = 'lottoplacement-nc lottoplacement-nc0 lottoplacement-nchx lottoplacement-nch' + line.Balls[ballOrdinal].Number.toString();
                }
                else {
                    ball.innerHTML = '&nbsp;';
                    ball.className = 'lottoplacement-nc';
                }
                tr.appendChild(ball);
            }
            var bettype = document.createElement('TD');
            bettype.innerHTML = this._numbersService$1.getBetTypeDescription(line.IDFOBetType);
            tr.appendChild(bettype);
            var stake = document.createElement('TD');
            stake.setAttribute('class', 'num');
            stake.innerHTML = line.Stake.toFixed(2);
            tr.appendChild(stake);
            var bets = document.createElement('TD');
            bets.setAttribute('class', 'num');
            bets.innerHTML = line.UnitCount.toString();
            tr.appendChild(bets);
            var totalStake = document.createElement('TD');
            totalStake.setAttribute('class', 'num');
            totalStake.innerHTML = line.TotalStake.toFixed(2);
            tr.appendChild(totalStake);
            var potentialReturn = document.createElement('TD');
            potentialReturn.setAttribute('class', 'num');
            potentialReturn.innerHTML = this._numbersService$1.getRealPotentialProfit(line.PotentialReturn, line.TotalStake).toFixed(2);
            tr.appendChild(potentialReturn);
            var betRef = document.createElement('TD');
            betRef.id = String.format('{0}-lotto-bet-reference-{1}', this._domElementId, lineOrdinal);
            if (ticketRef && ticketRef.trim().length > 0) {
                betRef.innerHTML = String.format('{0}/{1}', ticketRef, line.ExternalReference);
            }
            tr.appendChild(betRef);
        }
        var totals = this._numbersService$1.getBetTotals();
        if (totals) {
            var totalStake = this._environment.getDomElement(String.format('{0}-total-stake', this._domElementId));
            if (totalStake) {
                totalStake.setAttribute('class', 'num');
                totalStake.innerHTML = totals.totalStake.toFixed(2);
            }
            var potentialReturn = this._environment.getDomElement(String.format('{0}-return', this._domElementId));
            if (potentialReturn) {
                potentialReturn.setAttribute('class', 'num');
                potentialReturn.innerHTML = this._numbersService$1.getRealPotentialProfit(totals.potentialReturn, totals.totalStake).toFixed(2);
            }
        }
    },
    
    placeBets: function LotteryPlacementComponent_LotteryPlacementComponent$placeBets() {
        try {
            this._numbersService$1.placeBets();
        }
        catch (e) {
            alert(this._numbersService$1.getErrorMessage(this._domElementId, e));
        }
    },
    
    placeBetsConfirmed: function LotteryPlacementComponent_LotteryPlacementComponent$placeBetsConfirmed() {
        try {
            this._numbersService$1.placeBetsConfirmed();
        }
        catch (e) {
            alert(this._numbersService$1.getErrorMessage(this._domElementId, e));
        }
    },
    
    showLotto: function LotteryPlacementComponent_LotteryPlacementComponent$showLotto() {
        this._numbersService$1.showLotto();
    },
    
    setPlaceUsingFree: function LotteryPlacementComponent_LotteryPlacementComponent$setPlaceUsingFree(placeUsingFree) {
        this._numbersService$1.setPlaceUsingFree(placeUsingFree);
    },
    
    confirmTicket: function LotteryPlacementComponent_LotteryPlacementComponent$confirmTicket() {
        this._numbersService$1.confirmTicket();
    },
    
    rejectTicket: function LotteryPlacementComponent_LotteryPlacementComponent$rejectTicket() {
        this._numbersService$1.rejectTicket();
    }
}


LotteryPlacementComponent.LotteryPlacementComponent.createClass('LotteryPlacementComponent.LotteryPlacementComponent', Framework.AbstractComponent, NavigationService.IPageFilterChangedListener, NumbersService.ILotteryChangedListener, NumbersService.IBetsChangedListener, NumbersService.IBetPlacementListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('DebugInfoComponent');

////////////////////////////////////////////////////////////////////////////////
// DebugInfoComponent.DebugInfoComponent

DebugInfoComponent.DebugInfoComponent = function DebugInfoComponent_DebugInfoComponent() {
    DebugInfoComponent.DebugInfoComponent.constructBase(this);
}
DebugInfoComponent.DebugInfoComponent.prototype = {
    _parameters: null,
    _textColor$1: null,
    _loadDelaySeconds$1: 0,
    
    init: function DebugInfoComponent_DebugInfoComponent$init(environment, componentInstanceName, domElementId, parameters) {
        DebugInfoComponent.DebugInfoComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._loadDelaySeconds$1 = parameters['load-delay-seconds'];
        this._textColor$1 = parameters['text-color'];
    },
    
    start: function DebugInfoComponent_DebugInfoComponent$start() {
        window.setTimeout(Delegate.create(this, this.repaint), this._loadDelaySeconds$1);
    },
    
    repaint: function DebugInfoComponent_DebugInfoComponent$repaint() {
        this._log.debug('Repaint');
        var placeHolder = document.getElementById(this._domElementId);
        placeHolder.style.color = this._textColor$1;
        this._environment.updateDomElementDirect(placeHolder, this._environment.get_debugInfo());
    }
}


DebugInfoComponent.DebugInfoComponent.createClass('DebugInfoComponent.DebugInfoComponent', Framework.AbstractComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('IncludeComponent');

////////////////////////////////////////////////////////////////////////////////
// IncludeComponent.IncludeComponent

IncludeComponent.IncludeComponent = function IncludeComponent_IncludeComponent() {
    IncludeComponent.IncludeComponent.constructBase(this);
}
IncludeComponent.IncludeComponent.prototype = {
    _parameters$1: null,
    _navigationService$1: null,
    
    setNavigationService: function IncludeComponent_IncludeComponent$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 IncludeComponent_IncludeComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.repaint();
    },
    
    init: function IncludeComponent_IncludeComponent$init(environment, componentInstanceName, domElementId, parameters) {
        IncludeComponent.IncludeComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
    },
    
    repaint: function IncludeComponent_IncludeComponent$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 contentUrl = this._parameters$1.get_contentUrl().replace('${region}', this._environment.getRegion()).replace('${language}', this._environment.getLanguage());
            var page = this._navigationService$1.getPageFilter()[NavigationService.NavigationService.page];
            if (!String.isNullOrEmpty(page)) {
                contentUrl = contentUrl.replace('${page}', page);
            }
            var ajaxUpdater = new Framework.AjaxUpdater(this._domElementId, contentUrl, null, null);
            ajaxUpdater.update();
        }
        else {
            this.hide();
        }
    }
}


IncludeComponent.IncludeComponent.createClass('IncludeComponent.IncludeComponent', Framework.AbstractComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
