Type.createNamespace('PCCookieCheckerComponent');

////////////////////////////////////////////////////////////////////////////////
// PCCookieCheckerComponent.PCCookieCheckerComponent

PCCookieCheckerComponent.PCCookieCheckerComponent = function PCCookieCheckerComponent_PCCookieCheckerComponent() {
    PCCookieCheckerComponent.PCCookieCheckerComponent.constructBase(this);
}
PCCookieCheckerComponent.PCCookieCheckerComponent.prototype = {
    _navigationService$2: null,
    
    setNavigationService: function PCCookieCheckerComponent_PCCookieCheckerComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function PCCookieCheckerComponent_PCCookieCheckerComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
    },
    
    init: function PCCookieCheckerComponent_PCCookieCheckerComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCCookieCheckerComponent.PCCookieCheckerComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
    },
    
    preTransformation: function PCCookieCheckerComponent_PCCookieCheckerComponent$preTransformation(eventArgs) {
        this._setPageAction$2();
    },
    
    getXsltParameters: function PCCookieCheckerComponent_PCCookieCheckerComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    get_isComponentVisible: function PCCookieCheckerComponent_PCCookieCheckerComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    _setPageAction$2: function PCCookieCheckerComponent_PCCookieCheckerComponent$_setPageAction$2() {
        if (!String.isNullOrEmpty(Framework.CookieUtil.getCookie('action@area'))) {
            var storedAction = Framework.CookieUtil.getCookie('action@area');
            this._navigationService$2.setAction(storedAction);
            Framework.CookieUtil.clearCookie('action@area');
        }
    }
}


PCCookieCheckerComponent.PCCookieCheckerComponent.createClass('PCCookieCheckerComponent.PCCookieCheckerComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('BodyClassOverrideComponent');

////////////////////////////////////////////////////////////////////////////////
// BodyClassOverrideComponent.BodyClassOverrideComponent

BodyClassOverrideComponent.BodyClassOverrideComponent = function BodyClassOverrideComponent_BodyClassOverrideComponent() {
    this._bodycssclass = String.Empty;
    BodyClassOverrideComponent.BodyClassOverrideComponent.constructBase(this);
}
BodyClassOverrideComponent.BodyClassOverrideComponent.prototype = {
    _parameters$1: null,
    
    init: function BodyClassOverrideComponent_BodyClassOverrideComponent$init(environment, componentInstanceName, domElementId, parameters) {
        BodyClassOverrideComponent.BodyClassOverrideComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._bodycssclass = parameters['body-css-class'];
        if (this._bodycssclass !== String.Empty) {
            document.body.className += ' ' + this._bodycssclass;
        }
    }
}


BodyClassOverrideComponent.BodyClassOverrideComponent.createClass('BodyClassOverrideComponent.BodyClassOverrideComponent', Framework.Component.AbstractComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('NavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// NavigationComponent.NavigationComponent

NavigationComponent.NavigationComponent = function NavigationComponent_NavigationComponent() {
    NavigationComponent.NavigationComponent.constructBase(this);
}


NavigationComponent.NavigationComponent.createClass('NavigationComponent.NavigationComponent', AbstractWarpComponents.AbstractNavigationComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCLoginComponent');

////////////////////////////////////////////////////////////////////////////////
// PCLoginComponent.PCLoginComponentMessageTokenNames

PCLoginComponent.PCLoginComponentMessageTokenNames = function PCLoginComponent_PCLoginComponentMessageTokenNames() {
}


////////////////////////////////////////////////////////////////////////////////
// PCLoginComponent.PCLoginComponent

PCLoginComponent.PCLoginComponent = function PCLoginComponent_PCLoginComponent() {
    PCLoginComponent.PCLoginComponent.constructBase(this);
}
PCLoginComponent.PCLoginComponent.prototype = {
    _validationManager: null,
    _checkDetailsArea$3: 'accounting',
    _checkDetailsAction$3: 'check-details',
    _navigateTo$3: null,
    _translateTokens$3: null,
    
    init: function PCLoginComponent_PCLoginComponent$init(environment, componentInstanceName, domElementId, parameters) {
        if (parameters['support-cryptogram-login']) {
            this._supportCryptogramLogin = Boolean.parse(parameters['support-cryptogram-login']);
        }
        if (parameters['enable-remember-me']) {
            this._enableRememberMe = Boolean.parse(parameters['enable-remember-me']);
        }
        if (parameters['navigate-to'] && !String.isNullOrEmpty(parameters['navigate-to'])) {
            this._navigateTo$3 = parameters['navigate-to'];
        }
        this._checkDetailsArea$3 = parameters['check-details-area'];
        this._checkDetailsAction$3 = parameters['check-details-action'];
        this._validationManager = new Framework.Validation.ValidationManager(this._environment);
        this.registerValidators();
    },
    
    renderComplete: function PCLoginComponent_PCLoginComponent$renderComplete(eventArgs) {
        PCLoginComponent.PCLoginComponent.callBase(this, 'renderComplete', [ eventArgs ]);
        var objData = Framework.JsonUtil.deserialize(this.getPrivateDomElement('translate-tokens').innerHTML);
        this._translateTokens$3 = objData;
    },
    
    onLoginClicked: function PCLoginComponent_PCLoginComponent$onLoginClicked() {
        if (!this.get_usernameTextbox()) {
            return;
        }
        if (!this.get_passwordTextbox()) {
            return;
        }
        var CheckUsernameBlank = this.get_usernameTextbox().value.trim();
        var CheckPassswordBlank = this.get_passwordTextbox().value.trim();
        if (!CheckUsernameBlank.length || !CheckPassswordBlank.length) {
            alert(this._translateTokens$3[PCLoginComponent.PCLoginComponentMessageTokenNames.enteR_CREDENTIALS]);
            window.event.returnValue = false;
            return;
        }
        this.disable();
        if (!this._validationManager.validateAll()) {
            alert(this.getPrivateDomElement('errorRUT').innerHTML);
            this.enable();
            window.event.returnValue = false;
            return;
        }
        if (this.get_rememberMeCheckbox()) {
            if (this.get_rememberMeCheckbox().checked) {
                Framework.CookieUtil.setCookie('username', CheckUsernameBlank);
            }
            else {
                Framework.CookieUtil.clearCookie('username');
            }
        }
        var tempusername = CheckUsernameBlank;
        var Kcheck = CheckUsernameBlank.charAt(CheckUsernameBlank.length - 1);
        tempusername = CheckUsernameBlank.substring(0, CheckUsernameBlank.length - 1);
        tempusername = tempusername.replace((new RegExp('[^0-9]', 'gi')), '') + Kcheck.toString();
        this._userService.login(Delegate.create(this, function(result) {
            this.enable();
        }), Delegate.create(this, function(exception) {
            this.enable();
            var message = Framework.ExceptionUtil.getExceptionDetails(exception).get_message();
            if (message.trim() === 'ResetPasswordRequired') {
                this.get_usernameTextbox().value = '';
                this.get_passwordTextbox().value = '';
                this._navigationService.goTo(this._checkDetailsArea$3, { action: this._checkDetailsAction$3 });
            }
            else {
                alert(Framework.ExceptionUtil.getExceptionDetails(exception).get_message());
            }
        }), tempusername, CheckPassswordBlank);
        window.event.returnValue = false;
    },
    
    registerValidators: function PCLoginComponent_PCLoginComponent$registerValidators() {
        this._validationManager.registerValidateRUT(this._domElementId + '.username', null, null);
        this._validationManager.registerMandatoryValidator(this._domElementId + '.password', null, null);
    },
    
    onUserChanged: function PCLoginComponent_PCLoginComponent$onUserChanged(eventSource) {
        PCLoginComponent.PCLoginComponent.callBase(this, 'onUserChanged', [ eventSource ]);
        if (!this._userService.isLoggedIn() && !isNullOrUndefined(this._navigateTo$3)) {
            window.navigate(this._navigateTo$3);
        }
    },
    
    correctRUTEventHandler: function PCLoginComponent_PCLoginComponent$correctRUTEventHandler(sender, eventArgs) {
        var oInput = eventArgs.domElement;
        var entry = oInput.value.trim();
        if (String.isNullOrEmpty(entry)) {
            return;
        }
        while (entry.substr(0, 1) === '0' && entry.length > 0) {
            entry = entry.substr(1, entry.length);
        }
        oInput.value = entry;
    },
    
    onUsernameDivClickEventHandler: function PCLoginComponent_PCLoginComponent$onUsernameDivClickEventHandler(sender, eventArgs) {
        this.onUsernameDivClick(eventArgs.domElement);
    },
    
    onPasswordDivClickEventHandler: function PCLoginComponent_PCLoginComponent$onPasswordDivClickEventHandler(sender, eventArgs) {
        this.onPasswordDivClick(eventArgs.domElement);
    },
    
    onUsernameDivClick: function PCLoginComponent_PCLoginComponent$onUsernameDivClick(element) {
        if (!this.get_usernameTextbox()) {
            return;
        }
        this._environment.safelySetCssClassOnElement(element, 'invisible');
        this.get_usernameTextbox().focus();
    },
    
    onPasswordDivClick: function PCLoginComponent_PCLoginComponent$onPasswordDivClick(element) {
        if (!this.get_passwordTextbox()) {
            return;
        }
        this._environment.safelySetCssClassOnElement(element, 'invisible');
        this.get_passwordTextbox().focus();
    },
    
    onUsernameBlur: function PCLoginComponent_PCLoginComponent$onUsernameBlur(element) {
        if (!this.get_usernameTextbox()) {
            return;
        }
        if (this.get_usernameTextbox().value === '') {
            this._environment.safelyRemoveCssClassOnElement(document.getElementById('userlayer'), 'invisible');
        }
    },
    
    onPasswordBlur: function PCLoginComponent_PCLoginComponent$onPasswordBlur(element) {
        if (!this.get_passwordTextbox()) {
            return;
        }
        if (this.get_passwordTextbox().value === '') {
            this._environment.safelyRemoveCssClassOnElement(document.getElementById('passlayer'), 'invisible');
        }
    },
    
    onUsernameFocus: function PCLoginComponent_PCLoginComponent$onUsernameFocus(element) {
        this._environment.safelySetCssClassOnElement(document.getElementById('userlayer'), 'invisible');
    },
    
    onPasswordFocus: function PCLoginComponent_PCLoginComponent$onPasswordFocus(element) {
        this._environment.safelySetCssClassOnElement(document.getElementById('passlayer'), 'invisible');
    }
}


PCLoginComponent.PCLoginComponentMessageTokenNames.createClass('PCLoginComponent.PCLoginComponentMessageTokenNames');
PCLoginComponent.PCLoginComponent.createClass('PCLoginComponent.PCLoginComponent', AbstractMMCoreComponents.AbstractLoginComponent);
PCLoginComponent.PCLoginComponentMessageTokenNames.enteR_CREDENTIALS = 'Please enter your credentials';

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('AccountsDetailsComponent');

////////////////////////////////////////////////////////////////////////////////
// AccountsDetailsComponent.AccountsDetailsComponent

AccountsDetailsComponent.AccountsDetailsComponent = function AccountsDetailsComponent_AccountsDetailsComponent() {
    AccountsDetailsComponent.AccountsDetailsComponent.constructBase(this);
}
AccountsDetailsComponent.AccountsDetailsComponent.prototype = {
    _changeActionOnLogout$2: null,
    _webSection$2: 'SPORTSBOOK',
    
    refreshBalanceOnClickEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$refreshBalanceOnClickEventHandler(sender, eventArgs) {
        this.refreshBalance();
        window.event.returnValue = false;
    },
    
    goToEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$goToEventHandler(sender, eventArgs) {
        new NavigationService.GoToBehavior(eventArgs.domElement, null, this._navigationService$2);
    },
    
    logoutOnClickEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$logoutOnClickEventHandler(sender, eventArgs) {
        this.logout();
    },
    
    logOutAndGotoPageEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$logOutAndGotoPageEventHandler(sender, eventArgs) {
        this.logout();
        this.removeBSselections();
        this.goToPageArea(eventArgs.parameters.getAsString('pagename'));
    },
    
    logoutAndRemoveSelectionsEventHandler: function AccountsDetailsComponent_AccountsDetailsComponent$logoutAndRemoveSelectionsEventHandler(sender, eventArgs) {
        this.logout();
        this.removeBSselections();
    },
    
    _accountService$2: null,
    
    setAccountService: function AccountsDetailsComponent_AccountsDetailsComponent$setAccountService(accountService) {
        this._log.debug('SetAccountService');
        this._accountService$2 = accountService;
    },
    
    onBalanceChanged: function AccountsDetailsComponent_AccountsDetailsComponent$onBalanceChanged(eventSource) {
        this._log.debug('OnBalanceChanged');
        this.update();
    },
    
    onAccountPreferencesChanged: function AccountsDetailsComponent_AccountsDetailsComponent$onAccountPreferencesChanged(eventSource) {
        this._log.debug('OnAccountPreferencesChanged');
        this.update();
    },
    
    _navigationService$2: null,
    
    setNavigationService: function AccountsDetailsComponent_AccountsDetailsComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function AccountsDetailsComponent_AccountsDetailsComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _userService$2: null,
    
    setUserService: function AccountsDetailsComponent_AccountsDetailsComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    _betSlipService$2: null,
    
    setBetSlipService: function AccountsDetailsComponent_AccountsDetailsComponent$setBetSlipService(betSlipService) {
        this._log.debug('SetBetSlipService');
        this._betSlipService$2 = betSlipService;
    },
    
    init: function AccountsDetailsComponent_AccountsDetailsComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._changeActionOnLogout$2 = parameters['change-action-on-logout'];
        this._webSection$2 = parameters['web-section'];
    },
    
    preTransformation: function AccountsDetailsComponent_AccountsDetailsComponent$preTransformation(eventArgs) {
        if (!this._accountService$2.get_accountsDetails() && this._userService$2.isLoggedIn()) {
            this._accountService$2.onUserChanged(null);
        }
    },
    
    get_isComponentVisible: function AccountsDetailsComponent_AccountsDetailsComponent$get_isComponentVisible() {
        return (this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction()) && this._userService$2.isLoggedIn());
    },
    
    getXsltParameters: function AccountsDetailsComponent_AccountsDetailsComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['web-section'] = this._webSection$2;
        if (this._userService$2.get_personalDetails()) {
            xsltParameters['name'] = this._userService$2.get_personalDetails().FullName;
        }
        if (this._accountService$2.get_accountsDetails()) {
            xsltParameters['trading-cache-balance'] = this._accountService$2.get_creditAccountDetails().TradingBalance.format('N', true);
            xsltParameters['account-number'] = this._accountService$2.get_creditAccountDetails().AccountNumber;
            xsltParameters['currency-symbol'] = this._accountService$2.getCurrencySimbol();
            xsltParameters['cash-balance'] = this._accountService$2.get_creditAccountDetails().WithdrawalBalance.format('N', true);
            xsltParameters['credit-limit'] = ((this._accountService$2.get_creditAccountDetails().TradingBalance - this._accountService$2.get_creditAccountDetails().WithdrawalBalance)).format('N', true);
            xsltParameters['free-balance'] = this._accountService$2.get_freeAccountDetails().WithdrawalBalance.format('N', true);
            xsltParameters['available-funds'] = ((this._accountService$2.get_creditAccountDetails().TradingBalance + this._accountService$2.get_freeAccountDetails().TradingBalance)).format('N', true);
            xsltParameters['is-account-balance-constantly-displayed'] = this._accountService$2.get_preferences().IsAccountBalanceConstantlyDisplayed;
            xsltParameters['is-call-centre-account-number-constantly-displayed'] = this._accountService$2.get_preferences().IsCallCentreAccountNumberConstantlyDisplayed;
        }
        return xsltParameters;
    },
    
    refreshBalance: function AccountsDetailsComponent_AccountsDetailsComponent$refreshBalance() {
        this._log.debug('RefreshBalance');
        this._accountService$2.fetchAccountsDetails();
    },
    
    logout: function AccountsDetailsComponent_AccountsDetailsComponent$logout() {
        this._log.debug('Logout');
        this.changeActionOnLogout();
        this.disable();
        this._userService$2.logout(Delegate.create(this, function(result) {
            this.enable();
        }), Delegate.create(this, function(exception) {
            this.enable();
        }));
    },
    
    changeActionOnLogout: function AccountsDetailsComponent_AccountsDetailsComponent$changeActionOnLogout() {
        if (!String.isNullOrEmpty(this._changeActionOnLogout$2)) {
            var pageFilter = this._navigationService$2.getPageFilter();
            pageFilter['action'] = this._changeActionOnLogout$2;
            this._navigationService$2.setPageFilter(pageFilter);
        }
    },
    
    goTo: function AccountsDetailsComponent_AccountsDetailsComponent$goTo(pageArea, pageFilter) {
        this._navigationService$2.goTo(pageArea, pageFilter);
        return false;
    },
    
    goToPageArea: function AccountsDetailsComponent_AccountsDetailsComponent$goToPageArea(pageArea) {
        var pageFilter = this._navigationService$2.getPageFilter();
        return this.goTo(pageArea, pageFilter);
    },
    
    removeBSselections: function AccountsDetailsComponent_AccountsDetailsComponent$removeBSselections() {
        this._betSlipService$2.removeAllSelections();
    }
}


AccountsDetailsComponent.AccountsDetailsComponent.createClass('AccountsDetailsComponent.AccountsDetailsComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, AccountService.IBalanceChangedListener, AccountService.IAccountPreferencesChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('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,
    _ignoreCurrentActionAsSelectedChannel$1: true,
    _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'];
        this._ignoreCurrentActionAsSelectedChannel$1 = Boolean.parse(parameters['ignore-current-action-as-selected-channel'].toString());
    },
    
    start: function ChannelNavigationComponent_ChannelNavigationComponent$start() {
        this.repaint();
    },
    
    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['navigation-section'] = (String.isNullOrEmpty(this._navigationSection$1)) ? 'channels' : this._navigationSection$1;
        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() {
            Framework.Behavior.Binding.BehaviorBinder.autoBind(this._environment.getDomElement(this._domElementId), (this));
            this._setActiveElement$1();
        }));
    },
    
    setPageFilterEventHandler: function ChannelNavigationComponent_ChannelNavigationComponent$setPageFilterEventHandler(sender, eventArgs) {
        var liElement = eventArgs.domElement.parentNode;
        var area = eventArgs.parameters.getAsString('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);
        window.event.returnValue = false;
    },
    
    setPageFilterWithRegionEventHandler: function ChannelNavigationComponent_ChannelNavigationComponent$setPageFilterWithRegionEventHandler(sender, eventArgs) {
        var liElement = eventArgs.domElement.parentNode;
        var area = eventArgs.parameters.getAsString('area');
        var region = eventArgs.parameters.getAsString('region');
        if (liElement.tagName !== 'LI') {
            throw new Error('Expected an LI element');
        }
        if (liElement.className.indexOf(' cur') === -1 && liElement.className.indexOf('cur') === -1) {
            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);
        window.event.returnValue = false;
    },
    
    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');
        }
    },
    
    _setActiveElement$1: function ChannelNavigationComponent_ChannelNavigationComponent$_setActiveElement$1() {
        var actionToChoose;
        if (this._ignoreCurrentActionAsSelectedChannel$1) {
            actionToChoose = this._currentChannel$1;
        }
        else {
            actionToChoose = this._navigationService$1.getAction();
            if (String.isNullOrEmpty(actionToChoose)) {
                actionToChoose = null;
            }
            if (!isNullOrUndefined(this._currentChannel$1) && this._currentChannel$1.length) {
                actionToChoose = this._currentChannel$1;
            }
        }
        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 === actionToChoose) {
                this._activateElement$1(liElement);
                break;
            }
        }
    },
    
    _activateElement$1: function ChannelNavigationComponent_ChannelNavigationComponent$_activateElement$1(liElement) {
        this._activeElement$1 = liElement;
        this._environment.safelySetCssClassOnElement(this._activeElement$1, 'cur');
    },
    
    _deactivateElement$1: function ChannelNavigationComponent_ChannelNavigationComponent$_deactivateElement$1() {
        if (this._activeElement$1) {
            this._environment.safelyRemoveCssClassOnElement(this._activeElement$1, 'cur');
            this._activeElement$1 = null;
        }
    }
}


ChannelNavigationComponent.ChannelNavigationComponent.createClass('ChannelNavigationComponent.ChannelNavigationComponent', Framework.Component.AbstractComponent, UserService.IUserChangedListener, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LotteryPrizeAnnouncementComponent');

////////////////////////////////////////////////////////////////////////////////
// LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent

LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent = function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent() {
    this._visibleOnView$2 = [];
    this._notVisibleOnView$2 = [];
    LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent.constructBase(this);
}
LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent.prototype = {
    _dateFormatType$2: '',
    _urlPlayArea$2: null,
    _urlPlayAction$2: null,
    _navigationService$2: null,
    
    setNavigationService: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _userService$2: null,
    
    setUserService: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
    },
    
    init: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$init(environment, componentInstanceName, domElementId, parameters) {
        var d = new Date();
        var da = d.getHours();
        var mi = d.getMinutes();
        if (da === 21 && mi > 0 && mi < 31)
        {
        parameters['content-url'] = '/static/home/Loto.xml';
        }
        else
        {
        parameters['content-url'] = (parameters['content-url']).replace('${language}', environment.getLanguage());
        parameters['content-url'] = String.format(parameters['content-url'], parameters['game-externalid']);
        }
        if (Object.keyExists(parameters, 'url-play-area') && (parameters['url-play-area']).length > 0) {
            this._urlPlayArea$2 = parameters['url-play-area'];
        }
        if (Object.keyExists(parameters, 'url-play-action') && (parameters['url-play-action']).length > 0) {
            this._urlPlayAction$2 = parameters['url-play-action'];
        }
        LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._dateFormatType$2 = parameters['date-time-format'];
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._getVisibleOnView$2(parameters);
    },
    
    _getVisibleOnView$2: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$_getVisibleOnView$2(parameters) {
        if (!String.isNullOrEmpty(parameters['visible-on-view'])) {
            this._visibleOnView$2 = (parameters['visible-on-view']).split(',');
        }
        if (!String.isNullOrEmpty(parameters['not-visible-on-view'])) {
            this._notVisibleOnView$2 = (parameters['not-visible-on-view']).split(',');
        }
        var $enum1 = this._visibleOnView$2.getEnumerator();
        while ($enum1.moveNext()) {
            var i = $enum1.get_current();
            var $enum2 = this._notVisibleOnView$2.getEnumerator();
            while ($enum2.moveNext()) {
                var j = $enum2.get_current();
                if (i === j) {
                    throw new Error(String.format('visible-on-view and not-visible-on-view cannot contain the same action(s) [{0}]', i));
                }
            }
        }
    },
    
    renderComplete: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$renderComplete(eventArgs) {
        this._formatDate$2(this._dateFormatType$2);
    },
    
    get_isComponentVisible: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction()) && this.isVisible(this._visibleOnView$2, this._notVisibleOnView$2, this._navigationService$2.getPageFilter()['view']);
    },
    
    getXsltParameters: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    _formatDate$2: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$_formatDate$2(formattype) {
        var oDateElement = document.getElementById(this._domElementId + '-nextDrawDate');
        if (isNullOrUndefined(oDateElement)) {
            return;
        }
        var cleanDateTime = oDateElement.innerHTML.replace('T', ' ');
        cleanDateTime = cleanDateTime.replace(':', '-');
        var separatedDateTime = cleanDateTime.split(' ');
        var separatedDateValues = separatedDateTime[0].split('-');
        var separatedTimeValues = separatedDateTime[1].split('-');
        var tempYear = separatedDateValues[0];
        if (tempYear.length > 1 && tempYear.charAt(0) === '0') {
            tempYear = tempYear.substr(1);
        }
        var year = Number.parse(tempYear);
        var tempMonth = separatedDateValues[1];
        if (tempMonth.length > 1 && tempMonth.charAt(0) === '0') {
            tempMonth = tempMonth.substr(1);
        }
        var month = Number.parse(tempMonth) - 1;
        var tempDay = separatedDateValues[2];
        if (tempDay.length > 1 && tempDay.charAt(0) === '0') {
            tempDay = tempDay.substr(1);
        }
        var day = Number.parse(tempDay);
        var tempHour = separatedTimeValues[0];
        if (tempHour.length > 1 && tempHour.charAt(0) === '0') {
            tempHour = tempHour.substr(1);
        }
        var hour = Number.parse(tempHour);
        var tempMin = separatedTimeValues[1];
        if (tempMin.length > 1 && tempMin.charAt(0) === '0') {
            tempMin = tempMin.substr(1);
        }
        var min = Number.parse(tempMin);
        var tempSec = separatedTimeValues[2];
        if (tempSec.length > 1 && tempSec.charAt(0) === '0') {
            tempSec = tempSec.substr(1);
        }
        var sec = Number.parse(tempSec);
        var oDateTime = new Date(year, month, day, hour, min, sec);
        oDateElement.innerHTML = oDateTime.format(formattype, true).toString();
        oDateElement.style.visibility = 'visible';
    },
    
    goToPlayEventHandler: function LotteryPrizeAnnouncementComponent_LotteryPrizeAnnouncementComponent$goToPlayEventHandler(eventArgs) {
        if (isNullOrUndefined(this._urlPlayArea$2) || isNullOrUndefined(this._urlPlayAction$2)) {
            return;
        }
        this._navigationService$2.goTo(this._urlPlayArea$2, { action: this._urlPlayAction$2 });
        window.event.returnValue = false;
    }
}


LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent.createClass('LotteryPrizeAnnouncementComponent.LotteryPrizeAnnouncementComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, UserService.IUserChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LastDrawResultComponent');

////////////////////////////////////////////////////////////////////////////////
// LastDrawResultComponent.LastDrawResultComponent

LastDrawResultComponent.LastDrawResultComponent = function LastDrawResultComponent_LastDrawResultComponent() {
    this._visibleOnView$2 = [];
    this._notVisibleOnView$2 = [];
    LastDrawResultComponent.LastDrawResultComponent.constructBase(this);
}
LastDrawResultComponent.LastDrawResultComponent.prototype = {
    _parameters$2: null,
    _customheader$2: '',
    _initiallyOpened$2: true,
    _doShowTable$2: true,
    _doShowResults$2: true,
    _urlResultsArea$2: null,
    _urlResultsAction$2: null,
    _urlPlayArea$2: null,
    _urlPlayAction$2: null,
    _navigationService$2: null,
    
    setNavigationService: function LastDrawResultComponent_LastDrawResultComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, 'view');
    },
    
    onPageFilterChanged: function LastDrawResultComponent_LastDrawResultComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    get_isComponentVisible: function LastDrawResultComponent_LastDrawResultComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters$2.get_visibleOn(), this._parameters$2.get_notVisibleOn(), this._navigationService$2.getAction()) && this.isVisible(this._visibleOnView$2, this._notVisibleOnView$2, this._navigationService$2.getPageFilter()['view']);
    },
    
    init: function LastDrawResultComponent_LastDrawResultComponent$init(environment, componentInstanceName, domElementId, parameters) {
        parameters['content-url'] = (parameters['content-url']).replace('${language}', environment.getLanguage());
        if (Object.keyExists(parameters, 'custom-header')) {
            this._customheader$2 = parameters['custom-header'];
        }
        if (Object.keyExists(parameters, 'initially-opened')) {
            this._initiallyOpened$2 = Boolean.parse(parameters['initially-opened']);
        }
        if (Object.keyExists(parameters, 'url-results-area') && (parameters['url-results-area']).length > 0) {
            this._urlResultsArea$2 = parameters['url-results-area'];
        }
        if (Object.keyExists(parameters, 'url-results-action') && (parameters['url-results-action']).length > 0) {
            this._urlResultsAction$2 = parameters['url-results-action'];
        }
        if (Object.keyExists(parameters, 'url-play-area') && (parameters['url-play-area']).length > 0) {
            this._urlPlayArea$2 = parameters['url-play-area'];
        }
        if (Object.keyExists(parameters, 'url-play-action') && (parameters['url-play-action']).length > 0) {
            this._urlPlayAction$2 = parameters['url-play-action'];
        }
        this._doShowTable$2 = Boolean.parse(parameters['do-show-table']);
        this._doShowResults$2 = Boolean.parse(parameters['do-show-results']);
        LastDrawResultComponent.LastDrawResultComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$2 = new Framework.CommonComponentParameters(parameters);
        this._getVisibleOnView$2(parameters);
    },
    
    _getVisibleOnView$2: function LastDrawResultComponent_LastDrawResultComponent$_getVisibleOnView$2(parameters) {
        if (!String.isNullOrEmpty(parameters['visible-on-view'])) {
            this._visibleOnView$2 = (parameters['visible-on-view']).split(',');
        }
        if (!String.isNullOrEmpty(parameters['not-visible-on-view'])) {
            this._notVisibleOnView$2 = (parameters['not-visible-on-view']).split(',');
        }
        var $enum1 = this._visibleOnView$2.getEnumerator();
        while ($enum1.moveNext()) {
            var i = $enum1.get_current();
            var $enum2 = this._notVisibleOnView$2.getEnumerator();
            while ($enum2.moveNext()) {
                var j = $enum2.get_current();
                if (i === j) {
                    throw new Error(String.format('visible-on-view and not-visible-on-view cannot contain the same action(s) [{0}]', i));
                }
            }
        }
    },
    
    getXsltParameters: function LastDrawResultComponent_LastDrawResultComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['custom-header'] = this._customheader$2;
        xsltParameters['initially-opened'] = this._initiallyOpened$2;
        xsltParameters['do-show-table'] = this._doShowTable$2;
        xsltParameters['do-show-results'] = this._doShowResults$2;
        xsltParameters['culture-name'] = CultureInfo.Current.name;
        if (!isNullOrUndefined(this._urlResultsArea$2) && !isNullOrUndefined(this._urlResultsAction$2)) {
            xsltParameters['url-results-link'] = this._urlResultsArea$2;
            xsltParameters['url-results-action'] = this._urlResultsAction$2;
        }
        if (!isNullOrUndefined(this._urlPlayArea$2) && !isNullOrUndefined(this._urlPlayAction$2)) {
            xsltParameters['url-play-area'] = this._urlPlayArea$2;
            xsltParameters['url-play-action'] = this._urlPlayAction$2;
        }
        return xsltParameters;
    },
    
    toggleContent: function LastDrawResultComponent_LastDrawResultComponent$toggleContent(idSuffix) {
        var oElement = document.getElementById(this._domElementId + idSuffix);
        var displayState = oElement.style.display.toString();
        oElement.style.display = (displayState === 'none') ? 'block' : 'none';
    },
    
    goToResults: function LastDrawResultComponent_LastDrawResultComponent$goToResults() {
        if (isNullOrUndefined(this._urlResultsArea$2) || isNullOrUndefined(this._urlResultsAction$2)) {
            return;
        }
        this._navigationService$2.goTo(this._urlResultsArea$2, { action: this._urlResultsAction$2 });
        window.event.returnValue = false;
    },
    
    goToPlay: function LastDrawResultComponent_LastDrawResultComponent$goToPlay() {
        if (isNullOrUndefined(this._urlPlayArea$2) || isNullOrUndefined(this._urlPlayAction$2)) {
            return;
        }
        this._navigationService$2.goTo(this._urlPlayArea$2, { action: this._urlPlayAction$2 });
        window.event.returnValue = false;
    },
    
    goToPlayEventHandler: function LastDrawResultComponent_LastDrawResultComponent$goToPlayEventHandler(eventArgs) {
        if (isNullOrUndefined(this._urlPlayArea$2) || isNullOrUndefined(this._urlPlayAction$2)) {
            return;
        }
        this._navigationService$2.goTo(this._urlPlayArea$2, { action: this._urlPlayAction$2 });
        window.event.returnValue = false;
    }
}


LastDrawResultComponent.LastDrawResultComponent.createClass('LastDrawResultComponent.LastDrawResultComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('ResultsSelectorComponent');

////////////////////////////////////////////////////////////////////////////////
// ResultsSelectorComponent.ResultsSelectorComponent

ResultsSelectorComponent.ResultsSelectorComponent = function ResultsSelectorComponent_ResultsSelectorComponent() {
    this._parseGameSetsAsNumber$2 = [ 'Loto', 'Toto3', 'Polla4', 'LotoEspecial' ];
    this._xmlHttpRequestDecorator$2 = new Framework.XMLHttpRequestDecorator();
    ResultsSelectorComponent.ResultsSelectorComponent.constructBase(this);
}
ResultsSelectorComponent.ResultsSelectorComponent.prototype = {
    _parseAsNumber$2: false,
    _historyUrlCsv$2: null,
    _historyUrlXls$2: null,
    _displayHistoryXlsLink$2: false,
    _useViewFilter$2: false,
    _gameExternalId$2: '',
    _extractGameParameters$2: true,
    parametersFetched: false,
    renderIsDone: false,
    _resultsDetailsContainer$2: '',
    _resultsDetailsXsltUrl$2: '',
    _resultsDetailsNoWinnerXsltUrl$2: '',
    _resultsDetailsNoWinnerByDrawDateContentUrl$2: '',
    _resultsDetailsNoWinnerByDrawNumberContentUrl$2: '',
    _hideDetailsContainerOnActions$2: '',
    _useExternalIdForImageNames$2: false,
    _resultsDetailsAlreadyTransformed$2: false,
    _activeFilter$2: '',
    _dateTimeFormat$2: '',
    _shortDateFormat$2: '',
    _numberSize$2: null,
    _numberSizeAdd$2: null,
    _validateNumberSize$2: false,
    _showResultsIfNoWinner$2: false,
    _checkAddSet$2: false,
    _previouslyEnteredValues$2: null,
    _navigationService$2: null,
    
    setNavigationService: function ResultsSelectorComponent_ResultsSelectorComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function ResultsSelectorComponent_ResultsSelectorComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        var filters = this._parameters.get_visibleOn();
        this._removeResultsDetails$2();
        var filterValue = this._getFilterViewValue$2();
        if (filterValue === filters[0]) {
            this.update();
            return;
        }
        for (var i = 1; i < filters.length; i++) {
            if (filterValue === filters[i]) {
                return;
            }
        }
        this.update();
    },
    
    _userService$2: null,
    
    setUserService: function ResultsSelectorComponent_ResultsSelectorComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function ResultsSelectorComponent_ResultsSelectorComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
    },
    
    _dgeService$2: null,
    
    setDGEService: function ResultsSelectorComponent_ResultsSelectorComponent$setDGEService(dgeService) {
        this._log.debug('SetDGEService');
        this._dgeService$2 = dgeService;
    },
    
    init: function ResultsSelectorComponent_ResultsSelectorComponent$init(environment, componentInstanceName, domElementId, parameters) {
        ResultsSelectorComponent.ResultsSelectorComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._gameExternalId$2 = parameters['game-externalid'];
        this._historyUrlCsv$2 = parameters['history-url-csv'];
        this._historyUrlCsv$2 = this._historyUrlCsv$2.replace('${language}', this._environment.getLanguage());
        this._historyUrlCsv$2 = String.format(this._historyUrlCsv$2, this._gameExternalId$2);
        this._historyUrlXls$2 = parameters['history-url-xls'];
        this._historyUrlXls$2 = this._historyUrlXls$2.replace('${language}', this._environment.getLanguage());
        this._historyUrlXls$2 = String.format(this._historyUrlXls$2, this._gameExternalId$2);
        this._displayHistoryXlsLink$2 = (parameters['display-history-xls-link']) ? Boolean.parse(parameters['display-history-xls-link'].toString()) : false;
        this._extractGameParameters$2 = (parameters['extract-game-parameters']) ? Boolean.parse(parameters['extract-game-parameters'].toString()) : true;
        this._loadGameConfigurationParameters$2();
        this._resultsDetailsContainer$2 = parameters['results-details-container'];
        this._resultsDetailsXsltUrl$2 = parameters['results-details-xslt-url'];
        this._resultsDetailsNoWinnerXsltUrl$2 = parameters['results-details-nowinner-xslt-url'];
        this._resultsDetailsNoWinnerByDrawDateContentUrl$2 = parameters['results-details-nowinner-by-drawdate-content-url'];
        this._resultsDetailsNoWinnerByDrawNumberContentUrl$2 = parameters['results-details-nowinner-by-drawnumber-content-url'];
        this._resultsDetailsAlreadyTransformed$2 = false;
        this._dateTimeFormat$2 = parameters['date-time-format'];
        this._shortDateFormat$2 = parameters['short-date-format'];
        this._hideDetailsContainerOnActions$2 = ',' + parameters['hide-details-container-on-viewfilters'].toString() + ',';
        this._useViewFilter$2 = (parameters['use-view-filter']) ? Boolean.parse(parameters['use-view-filter'].toString()) : true;
        this._numberSize$2 = (isNullOrUndefined(parameters['number-size'].toString())) ? 2 : parseInt(parameters['number-size'].toString(), 10);
        this._numberSizeAdd$2 = (isNullOrUndefined(parameters['number-size-add'].toString())) ? 2 : parseInt(parameters['number-size-add'].toString(), 10);
        this._validateNumberSize$2 = (parameters['validate-number-size']) ? Boolean.parse(parameters['validate-number-size'].toString()) : true;
        this._showResultsIfNoWinner$2 = (parameters['show-result-if-nowinner']) ? Boolean.parse(parameters['show-result-if-nowinner'].toString()) : false;
        this._parseAsNumber$2 = this._parseGameSetsAsNumber$2.contains(this._gameExternalId$2);
        if (Object.keyExists(parameters, 'use-external-id-for-image-names')) {
            this._useExternalIdForImageNames$2 = Boolean.parse(parameters['use-external-id-for-image-names']);
        }
        this._parameters = new Framework.CommonComponentParameters(parameters);
    },
    
    renderComplete: function ResultsSelectorComponent_ResultsSelectorComponent$renderComplete(eventArgs) {
        this._removeResultsDetails$2();
        this._loadDatepicker$2();
        if (this._resultsDetailsAlreadyTransformed$2) {
            this._resultsDetailsAlreadyTransformed$2 = false;
        }
        else {
            this._setupResultsDetails$2();
        }
    },
    
    get_isComponentVisible: function ResultsSelectorComponent_ResultsSelectorComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    getXsltParameters: function ResultsSelectorComponent_ResultsSelectorComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['game-id'] = this._gameExternalId$2;
        xsltParameters['history-url-csv'] = this._historyUrlCsv$2;
        xsltParameters['history-url-xls'] = this._historyUrlXls$2;
        xsltParameters['display-history-xls-link'] = this._displayHistoryXlsLink$2;
        xsltParameters['number-size'] = this._numberSize$2;
        this.renderIsDone = true;
        if (this._extractGameParameters$2 && this.parametersFetched) {
            xsltParameters['hasAddSet'] = (this._getSetCount$2() > 1) ? 'true' : 'false';
            xsltParameters['count'] = this._getGameParam$2(1, 'count');
            xsltParameters['lowSymbol'] = this._getGameParam$2(1, 'lowSymbol');
            xsltParameters['highSymbol'] = this._getGameParam$2(1, 'highSymbol');
            if (this._getSetCount$2() > 1) {
                xsltParameters['count-add'] = this._getGameParam$2(2, 'count');
                xsltParameters['number-size-add'] = this._numberSizeAdd$2;
                xsltParameters['lowSymbol-add'] = this._getGameParam$2(2, 'lowSymbol');
                xsltParameters['highSymbol-add'] = this._getGameParam$2(2, 'highSymbol');
            }
        }
        return xsltParameters;
    },
    
    getDrawByNumberEventHandler: function ResultsSelectorComponent_ResultsSelectorComponent$getDrawByNumberEventHandler(sender, eventArgs) {
        this._clearErrorDivs$2();
        var componentFilter = document.getElementById(this._domElementId + '-drawnumber-filters');
        var inputElement = document.getElementById(this._domElementId + '-drawnumber');
        if (!this._checkDrawNumber$2(inputElement)) {
            this._handleDisplayState$2('-error-number-drawnumber', 'block');
            return;
        }
        this._dgeService$2.setResultsSearchFilters(this._getGameInfo$2('externalId'), this._getGameInfo$2('name'), new Date(), '', Number.parse(inputElement.value), 'draw');
        this._setFilterViewValue$2(componentFilter.attributes.getNamedItem('action').value);
    },
    
    getDrawByDateEventHandler: function ResultsSelectorComponent_ResultsSelectorComponent$getDrawByDateEventHandler(sender, eventArgs) {
        this._clearErrorDivs$2();
        var componentFilter = document.getElementById(this._domElementId + '-drawdate-filters');
        var dateContainer = document.getElementById(this._domElementId + '-drawdate');
        if (!this.checkDrawDate(dateContainer)) {
            this._handleDisplayState$2('-error-drawdate', 'block');
            return;
        }
        var dateParts = dateContainer.value.split('/');
        var year = Number.parse(dateParts[2]);
        var month = Number.parse(dateParts[1]) - 1;
        var day = Number.parse(dateParts[0]);
        var currDateTime = new Date();
        var offset1 = currDateTime.getTimezoneOffset();
        var demandedDateTime = new Date(year, month, day);
        var offset2 = demandedDateTime.getTimezoneOffset();
        var diff = offset2 - offset1;
        if (diff < 0) {
            diff = 0;
        }
        var dateTime = new Date(year, month, day, diff / 60);
        this._dgeService$2.setResultsSearchFilters(this._getGameInfo$2('externalId'), this._getGameInfo$2('name'), dateTime, '', 0, 'date');
        this._setFilterViewValue$2(componentFilter.attributes.getNamedItem('action').value);
    },
    
    _getFilterViewValue$2: function ResultsSelectorComponent_ResultsSelectorComponent$_getFilterViewValue$2() {
        var pageFilter = this._navigationService$2.getPageFilter();
        var viewFilter = (this._useViewFilter$2) ? pageFilter['view'] : pageFilter['action'];
        return (!viewFilter) ? null : viewFilter.toString();
    },
    
    _setFilterViewValue$2: function ResultsSelectorComponent_ResultsSelectorComponent$_setFilterViewValue$2(value) {
        var pageFilter = this._navigationService$2.getPageFilter();
        if (this._useViewFilter$2) {
            pageFilter['view'] = value;
        }
        else {
            pageFilter['action'] = value;
        }
        this._navigationService$2.setPageFilter(pageFilter);
    },
    
    getJackpotEventHandler: function ResultsSelectorComponent_ResultsSelectorComponent$getJackpotEventHandler(sender, eventArgs) {
        this._clearErrorDivs$2();
        var componentFilter = document.getElementById(this._domElementId + '-jackpot-filters');
        this._activeFilter$2 = 'jackpot';
        if (!this._areNumbersAllowed$2()) {
            return;
        }
        this._setFilterViewValue$2(componentFilter.attributes.getNamedItem('action').value);
        this._setupResultsDetails$2();
    },
    
    getNumbersEventHandler: function ResultsSelectorComponent_ResultsSelectorComponent$getNumbersEventHandler(sender, eventArgs) {
        if (!this._areNumbersAllowed$2()) {
            return;
        }
        var componentFilter = document.getElementById(this._domElementId + '-numbers-filters');
        this._navigationService$2.setAction(componentFilter.attributes.getNamedItem('action').value);
        this._resultsDetailsAlreadyTransformed$2 = false;
        this._setupResultsDetails$2();
    },
    
    checkIsAllowedNumberEventHandler: function ResultsSelectorComponent_ResultsSelectorComponent$checkIsAllowedNumberEventHandler(sender, eventArgs) {
        this._areNumbersAllowed$2();
    },
    
    _loadDatepicker$2: function ResultsSelectorComponent_ResultsSelectorComponent$_loadDatepicker$2() {
        var scriptToRun = new StringBuilder('window.jQuery(function(){window.jQuery(\'#');
        scriptToRun.append(this._domElementId);
        scriptToRun.append('-drawdate\').datepicker(window.jQuery.extend({ changeYear: true, changeMonth: true }, window.jQuery.datepicker.regional[\'es\']));});');
        eval(scriptToRun.toString());
    },
    
    _gameParameterXML$2: null,
    
    _loadGameConfigurationParameters$2: function ResultsSelectorComponent_ResultsSelectorComponent$_loadGameConfigurationParameters$2() {
        this._xmlHttpRequestDecorator$2.onreadystatechange = Delegate.create(this, function() {
            if (this._xmlHttpRequestDecorator$2.readyState === 4) {
                if (this._xmlHttpRequestDecorator$2.status === 200 || this._xmlHttpRequestDecorator$2.status === 304) {
                    this._gameParameterXML$2 = this._xmlHttpRequestDecorator$2.responseXML;
                    this.parametersFetched = true;
                    if (this.renderIsDone) {
                        this.update();
                    }
                }
            }
        });
        var configPath = String.format('/cache/dgGameParams/{0}/{1}.xml', this._environment.getLanguage(), this._gameExternalId$2);
        this._xmlHttpRequestDecorator$2.open('GET', configPath, true);
        this._xmlHttpRequestDecorator$2.send(null);
    },
    
    _getSetCount$2: function ResultsSelectorComponent_ResultsSelectorComponent$_getSetCount$2() {
        var sets = this._gameParameterXML$2.selectNodes(ResultsSelectorComponent.ResultsSelectorComponent._gamE_INFO_PATH$2 + 'params/parameters/sets/set');
        return sets.length;
    },
    
    _getGameParam$2: function ResultsSelectorComponent_ResultsSelectorComponent$_getGameParam$2(setId, paramName) {
        var setNode = this._gameParameterXML$2.selectSingleNode(String.format(ResultsSelectorComponent.ResultsSelectorComponent._gamE_INFO_PATH$2 + 'params/parameters/sets/set[@id={0}]', setId));
        if (isNullOrUndefined(setNode)) {
            return null;
        }
        var attribs = setNode.attributes;
        var attr = attribs.getNamedItem(paramName);
        return (!isNullOrUndefined(attr)) ? attr.text : null;
    },
    
    _getGameInfo$2: function ResultsSelectorComponent_ResultsSelectorComponent$_getGameInfo$2(parameter) {
        var oParameterNode = this._gameParameterXML$2.selectSingleNode(ResultsSelectorComponent.ResultsSelectorComponent._gamE_INFO_PATH$2 + parameter);
        if (isNullOrUndefined(oParameterNode)) {
            return null;
        }
        return oParameterNode.text;
    },
    
    _clearErrorDivs$2: function ResultsSelectorComponent_ResultsSelectorComponent$_clearErrorDivs$2() {
        this._handleDisplayState$2('-error-number-drawnumber', 'none');
        this._handleDisplayState$2('-error-drawdate', 'none');
        this._handleDisplayState$2('-error-number', 'none');
        this._handleDisplayState$2('-error-number-length', 'none');
    },
    
    _checkDrawNumber$2: function ResultsSelectorComponent_ResultsSelectorComponent$_checkDrawNumber$2(oInputElement) {
        var drawNumber = oInputElement.value.trim();
        if (String.isNullOrEmpty(drawNumber)) {
            return false;
        }
        if (drawNumber !== drawNumber.replace(new RegExp('\\D'), '')) {
            return false;
        }
        var dn = Number.parse(drawNumber);
        if (dn.toString() === 'NaN') {
            return false;
        }
        return true;
    },
    
    checkDrawDate: function ResultsSelectorComponent_ResultsSelectorComponent$checkDrawDate(oInputElement) {
        var drawNumber = oInputElement.value.trim();
        if (String.isNullOrEmpty(drawNumber)) {
            return false;
        }
        return true;
    },
    
    _handleDisplayState$2: function ResultsSelectorComponent_ResultsSelectorComponent$_handleDisplayState$2(key, state) {
        var errorElem = document.getElementById(this._domElementId + key);
        if (!isNullOrUndefined(errorElem)) {
            errorElem.style.display = state;
        }
    },
    
    _isResultsForKansasProcessing$2: function ResultsSelectorComponent_ResultsSelectorComponent$_isResultsForKansasProcessing$2() {
        return (this._activeFilter$2 && this._activeFilter$2 === 'draw');
    },
    
    _getNumbersSelected$2: function ResultsSelectorComponent_ResultsSelectorComponent$_getNumbersSelected$2() {
        if (!this._extractGameParameters$2 || !this.parametersFetched) {
            return null;
        }
        var setCnt = this._getSetCount$2();
        var dictionary = {};
        for (var i = 0; i < setCnt; i++) {
            var count = parseInt(this._getGameParam$2(i + 1, 'count'), 10);
            var numbers = new Array(count);
            for (var j = 0; j < count; j++) {
                var elemNumber = this.getPrivateDomElement(String.format('{0}-set-{1}-number-{2}', this._activeFilter$2, i + 1, j + 1));
                if (isNullOrUndefined(elemNumber)) {
                    return null;
                }
                if (this._parseAsNumber$2) {
                    numbers[j] = parseInt((elemNumber).value, 10).toString();
                }
                else {
                    numbers[j] = (elemNumber).value;
                }
            }
            var key = (i + 1).toString();
            dictionary[key] = numbers;
        }
        return dictionary;
    },
    
    _areNumbersAllowed$2: function ResultsSelectorComponent_ResultsSelectorComponent$_areNumbersAllowed$2() {
        var isOptional = false;
        var dictionary = this._getNumbersSelected$2();
        var $dict1 = dictionary;
        for (var $key2 in $dict1) {
            var entry = { key: $key2, value: $dict1[$key2] };
            var set = parseInt(entry.key, 10);
            if (!this._checkAddSet$2 && set > 1) {
                isOptional = true;
            }
            var numbers = entry.value;
            var $enum3 = numbers.getEnumerator();
            while ($enum3.moveNext()) {
                var number = $enum3.get_current();
                if (!this._isNumberAllowed$2(set, number, isOptional)) {
                    return false;
                }
            }
        }
        return true;
    },
    
    _isNumberAllowed$2: function ResultsSelectorComponent_ResultsSelectorComponent$_isNumberAllowed$2(set, stringValue, isOptional) {
        if (isOptional && String.isNullOrEmpty(stringValue)) {
            return true;
        }
        this._handleDisplayState$2('-error-number', 'none');
        this._handleDisplayState$2('-error-number-length', 'none');
        this._handleDisplayState$2('-error-number-length-add', 'none');
        this._handleDisplayState$2('-error-range', 'none');
        this._handleDisplayState$2('-error-range-add', 'none');
        var value = parseInt(stringValue, 10);
        if (this._validateNumberSize$2) {
            if (!this._validateNumSize$2(stringValue, set)) {
                return false;
            }
        }
        if (isNaN(value)) {
            this._handleDisplayState$2('-error-number', 'block');
            return false;
        }
        if (this._extractGameParameters$2) {
            return this._validateNumberRange$2(set, value);
        }
        return true;
    },
    
    _validateNumberRange$2: function ResultsSelectorComponent_ResultsSelectorComponent$_validateNumberRange$2(set, value) {
        var minNumber = Number.parse(this._getGameParam$2(set, 'lowSymbol'));
        var maxNumber = Number.parse(this._getGameParam$2(set, 'highSymbol'));
        if (minNumber > value || value > maxNumber) {
            var errorelemId = (set < 2) ? '-error-range' : '-error-range-add';
            this._handleDisplayState$2(errorelemId, 'block');
            return false;
        }
        return this._checkRepetition$2(set);
    },
    
    _validateNumSize$2: function ResultsSelectorComponent_ResultsSelectorComponent$_validateNumSize$2(stringValue, set) {
        var numSize = (set < 2) ? this._numberSize$2 : this._numberSizeAdd$2;
        var errorElemId = (set < 2) ? '-error-number-length' : '-error-number-length-add';
        if (isNullOrUndefined(stringValue) || stringValue.length !== numSize) {
            this._handleDisplayState$2(errorElemId, 'block');
            return false;
        }
        return true;
    },
    
    _checkRepetition$2: function ResultsSelectorComponent_ResultsSelectorComponent$_checkRepetition$2(set) {
        var isAllowed = Boolean.parse(this._getGameParam$2(set, 'repetitionAllowed'));
        this._handleDisplayState$2('-error-repetition', 'none');
        if (isAllowed) {
            return true;
        }
        var containerElement = this.getPrivateDomElement(this._activeFilter$2);
        var inputElements = containerElement.getElementsByTagName('input');
        var dictionary = {};
        for (var i = 0; i < inputElements.length; i++) {
            var inputElement = inputElements[i];
            var idPart = String.format('{0}-jackpot-set-{1}', this._domElementId, set);
            var notContain = String.format('{0}-numbers-drawnumber', this._domElementId);
            if (inputElement.type === 'text' && !(inputElement.id === notContain) && (inputElement.id.startsWith(idPart))) {
                if (!String.isNullOrEmpty(inputElement.value)) {
                    if (!Object.keyExists(dictionary, inputElement.value)) {
                        dictionary[inputElement.value] = inputElement.value;
                    }
                    else {
                        this._handleDisplayState$2('-error-repetition', 'block');
                        return false;
                    }
                }
            }
        }
        return true;
    },
    
    _viewFilterIsInListOfShouldBeHidden$2: function ResultsSelectorComponent_ResultsSelectorComponent$_viewFilterIsInListOfShouldBeHidden$2() {
        if (String.isNullOrEmpty(this._hideDetailsContainerOnActions$2)) {
            return false;
        }
        if (!Object.keyExists(this._navigationService$2.getPageFilter(), 'view')) {
            return false;
        }
        var viewFilter = this._navigationService$2.getPageFilter()['view'].toString();
        return this._hideDetailsContainerOnActions$2.indexOf(',' + viewFilter + ',') !== -1;
    },
    
    _setupResultsDetails$2: function ResultsSelectorComponent_ResultsSelectorComponent$_setupResultsDetails$2() {
        if (this._viewFilterIsInListOfShouldBeHidden$2()) {
            this._getOrCreateContentHolder$2().style.display = 'none';
            return;
        }
        if (this._isResultsForKansasProcessing$2()) {
            return;
        }
        var selNumbers = this._getNumbersSelected$2();
        if (isNullOrUndefined(selNumbers)) {
            return;
        }
        var numbers = selNumbers['1'];
        if (isNullOrUndefined(selNumbers) || Object.getKeyCount(selNumbers) < 1) {
            return;
        }
        var selectedNumbersString = this._sortNumbersIfNotOrdered$2(selNumbers);
        var contentHolder = this._getOrCreateContentHolder$2();
        if (!contentHolder) {
            return;
        }
        var isCheckNumbers = this._activeFilter$2 === 'numbers';
        var drawNumber = (isCheckNumbers) ? this._extractDrawNumberIfSearchParam$2() : null;
        var drawDate = (isCheckNumbers) ? this._extractDrawDateIfSearchParam$2() : null;
        this._dgeService$2.getHypotheticalWinnings(Delegate.create(this, function(response) {
            var winningInfos = response;
            if ((!winningInfos || winningInfos.length <= 0) && this._showResultsIfNoWinner$2 && isCheckNumbers) {
                this._executeResultInfoProcessing$2(contentHolder, isCheckNumbers, numbers, drawNumber, drawDate);
            }
            else {
                this._executeWinningInfoProcessing$2(winningInfos, contentHolder, isCheckNumbers, numbers, drawNumber, drawDate);
            }
        }), Delegate.create(this, function(exception) {
            alert(exception.message);
            this._executeWinningInfoProcessing$2(null, contentHolder, isCheckNumbers, numbers, drawNumber, drawDate);
        }), this._gameExternalId$2, selectedNumbersString, drawNumber, drawDate, null);
    },
    
    _extractDrawNumberIfSearchParam$2: function ResultsSelectorComponent_ResultsSelectorComponent$_extractDrawNumberIfSearchParam$2() {
        var drawOption = document.getElementById(this._domElementId + '-numbers-drawoption');
        if (drawOption.checked) {
            var drawNumberHolder = document.getElementById(this._domElementId + '-numbers-drawnumber');
            if (!this._checkDrawNumber$2(drawNumberHolder)) {
                this._handleDisplayState$2('-error-number', 'block');
                return null;
            }
            return (drawNumberHolder).value;
        }
        return null;
    },
    
    _extractDrawDateIfSearchParam$2: function ResultsSelectorComponent_ResultsSelectorComponent$_extractDrawDateIfSearchParam$2() {
        var dateOption = document.getElementById(this._domElementId + '-numbers-dateoption');
        if (dateOption.checked) {
            var ScriptToRun = String.format('var oNumbersDate = window.jQuery(\'#{0}-numbers-datepicker\').datepicker(\'getDate\'); ' + 'document' + '.getElementById(\'{0}-numbers-selecteddate\')' + '.innerHTML = oNumbersDate.getDate() + \'/\' + (oNumbersDate.getMonth()+1) + \'/\' +(oNumbersDate.getFullYear());', this._domElementId);
            eval(ScriptToRun);
            var dateContainer = document.getElementById(this._domElementId + '-numbers-selecteddate');
            var dateParts = dateContainer.innerHTML.split('/');
            var dateTime = new Date(Number.parse(dateParts[2]), Number.parse(dateParts[1]) - 1, Number.parse(dateParts[0]));
            return Framework.JSONFormat.formatDateTime(dateTime);
        }
        return null;
    },
    
    _getOrCreateContentHolder$2: function ResultsSelectorComponent_ResultsSelectorComponent$_getOrCreateContentHolder$2() {
        var contentHolder = document.getElementById(this._domElementId + '-contentHolder');
        if (!contentHolder) {
            contentHolder = document.createElement('div');
            contentHolder.id = this._domElementId + '-contentHolder';
            contentHolder.className = 'resultDetailsContentHolder';
            var contentContainer = document.getElementById(this._resultsDetailsContainer$2);
            if (!contentContainer) {
                return null;
            }
            contentContainer.appendChild(contentHolder);
        }
        return contentHolder;
    },
    
    _sortNumbersIfNotOrdered$2: function ResultsSelectorComponent_ResultsSelectorComponent$_sortNumbersIfNotOrdered$2(selNumbers) {
        var sb = new StringBuilder();
        var first = true;
        var $dict1 = selNumbers;
        for (var $key2 in $dict1) {
            var entry = { key: $key2, value: $dict1[$key2] };
            if (first) {
                first = false;
            }
            else {
                sb.append(':');
            }
            var set = parseInt(entry.key, 10);
            var numbers = entry.value;
            var isOrdered = this._getGameParam$2(set, 'ordered');
            if (isNullOrUndefined(isOrdered) || (isOrdered.toLowerCase() !== 'true')) {
                this._sortNumbers$2(numbers);
            }
            sb.append(numbers.join(','));
        }
        return sb.toString();
    },
    
    _sortNumbers$2: function ResultsSelectorComponent_ResultsSelectorComponent$_sortNumbers$2(numbers) {
        for (var i = 0; i < numbers.length - 1; i++) {
            for (var j = i + 1; j < numbers.length; j++) {
                if (Number.parse(numbers[i]) > Number.parse(numbers[j])) {
                    var tmp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = tmp;
                }
            }
        }
    },
    
    _removeResultsDetails$2: function ResultsSelectorComponent_ResultsSelectorComponent$_removeResultsDetails$2() {
        var contentContainer = document.getElementById(this._resultsDetailsContainer$2);
        if (!contentContainer) {
            return;
        }
        var contentHolder = document.getElementById(this._domElementId + '-contentHolder');
        if (contentHolder) {
            contentContainer.removeChild(contentHolder);
        }
    },
    
    _executeWinningInfoProcessing$2: function ResultsSelectorComponent_ResultsSelectorComponent$_executeWinningInfoProcessing$2(winningInfos, contentHolder, isCheckNumbers, numbers, drawNumber, drawDate) {
        var builder = new StringBuilder('<?xml version=\"1.0\" encoding=\"utf-8\"?>');
        builder.append('<winning-infos xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">');
        builder.append('<search-numbers>');
        var $enum1 = numbers.getEnumerator();
        while ($enum1.moveNext()) {
            var number = $enum1.get_current();
            builder.append(String.format('<search-number>{0}</search-number>', number));
        }
        builder.append('</search-numbers>');
        builder.append('<winning-infos>');
        var parameters = this.getXsltParameters(null);
        parameters['external-id'] = this._gameExternalId$2;
        parameters['is-check-numbers'] = (isCheckNumbers) ? 'true' : 'false';
        parameters['draw-number'] = drawNumber;
        parameters['requested-numbers'] = (!isNullOrUndefined(numbers) && numbers.length > 0) ? numbers.join(',') : '';
        parameters['culture-name'] = CultureInfo.Current.name;
        if (drawDate) {
            var dateTime = Framework.JSONFormat.parseDateTime(drawDate);
            parameters['draw-date'] = dateTime.format(this._dateTimeFormat$2);
        }
        parameters['use-external-id-for-image-names'] = (this._useExternalIdForImageNames$2) ? 'true' : 'false';
        if (winningInfos && winningInfos.length > 0) {
            var $enum2 = winningInfos.getEnumerator();
            while ($enum2.moveNext()) {
                var info = $enum2.get_current();
                builder.append('<winning-info>');
                builder.append(String.format('<draw-number>{0}</draw-number>', info.EventInfo.DrawNumber));
                var drawDateAsDateTime = Framework.JSONFormat.parseDateTime(info.EventInfo.DrawDate);
                var closeTimeAsDateTime = Framework.JSONFormat.parseDateTime(info.EventInfo.DrawCloseTime);
                var drawDateXsltFriendly = drawDateAsDateTime.format(this._dateTimeFormat$2);
                var closeTimeXsltFriendly = closeTimeAsDateTime.format(this._dateTimeFormat$2);
                builder.append(String.format('<draw-date>{0}</draw-date>', drawDateXsltFriendly));
                builder.append(String.format('<draw-close-time>{0}</draw-close-time>', closeTimeXsltFriendly));
                builder.append(String.format('<draw-name>{0}</draw-name>', info.DrawName));
                var resultValues = info.ResultValues;
                resultValues = resultValues.replace('[', '');
                resultValues = resultValues.replace(']', '');
                builder.append(String.format('<draw-results>{0}</draw-results>', resultValues));
                var resultBonusValues = info.ResultBonusValues;
                resultBonusValues = resultBonusValues.replace('[', '');
                resultBonusValues = resultBonusValues.replace(']', '');
                builder.append(String.format('<draw-bonus-results>{0}</draw-bonus-results>', resultBonusValues));
                builder.append(String.format('<division-level>{0}</division-level>', info.DivisionLevel));
                builder.append(String.format('<division-name>{0}</division-name>', info.DivisionName));
                builder.append(String.format('<division-shares>{0}</division-shares>', info.Shares));
                builder.append(String.format('<division-prize>{0}</division-prize>', info.Prize));
                builder.append('</winning-info>');
            }
            parameters['found'] = 'true';
        }
        builder.append('</winning-infos>');
        builder.append('</winning-infos>');
        this._resultsDetailsAlreadyTransformed$2 = true;
        this._environment.transformAndUpdate(this._resultsDetailsContainer$2, null, this._resultsDetailsXsltUrl$2, parameters, Delegate.create(this, function() {
        }), contentHolder, Delegate.create(this, function(domElement) {
        }), builder.toString());
    },
    
    _executeResultInfoProcessing$2: function ResultsSelectorComponent_ResultsSelectorComponent$_executeResultInfoProcessing$2(contentHolder, isCheckNumbers, numbers, drawNumber, drawDate) {
        var contentUrl = '';
        var parameters = this.getXsltParameters(null);
        parameters['is-check-numbers'] = (isCheckNumbers) ? 'true' : 'false';
        parameters['draw-number'] = drawNumber;
        parameters['culture-name'] = CultureInfo.Current.name;
        parameters['search-numbers'] = numbers.join(',');
        if (drawDate) {
            var dateTime = Framework.JSONFormat.parseDateTime(drawDate);
            parameters['draw-date'] = dateTime.format(this._dateTimeFormat$2);
            contentUrl = this._resultsDetailsNoWinnerByDrawDateContentUrl$2;
            contentUrl = contentUrl.replace('${language}', this._environment.getLanguage());
            contentUrl = contentUrl.replace('${externalid}', this._gameExternalId$2);
            contentUrl = contentUrl.replace('${drawdate}', dateTime.format(this._shortDateFormat$2));
        }
        else {
            contentUrl = this._resultsDetailsNoWinnerByDrawNumberContentUrl$2;
            contentUrl = contentUrl.replace('${language}', this._environment.getLanguage());
            contentUrl = contentUrl.replace('${externalid}', this._gameExternalId$2);
            contentUrl = contentUrl.replace('${drawnumber}', drawNumber);
        }
        this._resultsDetailsAlreadyTransformed$2 = true;
        this._environment.transformAndUpdate(contentHolder.id, contentUrl, this._resultsDetailsNoWinnerXsltUrl$2, parameters, Delegate.create(this, function() {
        }));
    }
}


ResultsSelectorComponent.ResultsSelectorComponent.createClass('ResultsSelectorComponent.ResultsSelectorComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, UserService.IUserChangedListener);
ResultsSelectorComponent.ResultsSelectorComponent._gamE_INFO_PATH$2 = 'game/';

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('CheckNumbersComponent');

////////////////////////////////////////////////////////////////////////////////
// CheckNumbersComponent.CheckNumbersComponent

CheckNumbersComponent.CheckNumbersComponent = function CheckNumbersComponent_CheckNumbersComponent() {
    this._selNumbers$2 = {};
    this._winningsPerDraw$2 = {};
    this._xmlHttpRequestDecorator$2 = new Framework.XMLHttpRequestDecorator();
    CheckNumbersComponent.CheckNumbersComponent.constructBase(this);
}
CheckNumbersComponent.CheckNumbersComponent.prototype = {
    _gameExternalId$2: '',
    _extractGameParameters$2: true,
    parametersFetched: false,
    renderIsDone: false,
    _checkNumbersDetailsXsltUrl$2: '',
    _checkNumbersDetailsNoWinnerByDrawDateContentUrl$2: '',
    _checkNumbersDetailsNoWinnerByDrawNumberContentUrl$2: '',
    _state$2: 'FILTER',
    _dateTimeFormat$2: '',
    _shortDateFormat$2: '',
    _longDateFormat$2: '',
    _numberSize$2: null,
    _showSystems$2: true,
    _numberSizeAdd$2: null,
    _choseNumbers$2: false,
    _currentSelectedIndex$2: 1,
    _useExternalIdForImageNames: false,
    _drawNumber$2: null,
    _firstDrawNumber$2: null,
    _drawDate$2: null,
    _firstDrawDate$2: null,
    _drawCount$2: 1,
    _showDraws$2: '0',
    _previousFilterValue$2: null,
    _linkToAction$2: '',
    _allowedMultipleDrawNumbers$2: null,
    _navigationService$2: null,
    
    setNavigationService: function CheckNumbersComponent_CheckNumbersComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    _dgeService$2: null,
    
    setDGEService: function CheckNumbersComponent_CheckNumbersComponent$setDGEService(dgeService) {
        this._log.debug('SetDGEService');
        this._dgeService$2 = dgeService;
    },
    
    onPageFilterChanged: function CheckNumbersComponent_CheckNumbersComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        var filterValue = this._getFilterViewValue$2();
        if (!filterValue) {
            this._clearState$2();
            this.update();
            return;
        }
        if (!this._previousFilterValue$2) {
            this._previousFilterValue$2 = filterValue;
            return;
        }
        if (this._previousFilterValue$2.startsWith('checknumbers-drawnumber') && filterValue.startsWith('checknumbers-drawnumber') || this._previousFilterValue$2.startsWith('checknumbers-multi-drawnumber') && filterValue.startsWith('checknumbers-multi-drawnumber')) {
            this._previousFilterValue$2 = filterValue;
            return;
        }
        this._previousFilterValue$2 = filterValue;
        this.update();
    },
    
    get_isComponentVisible: function CheckNumbersComponent_CheckNumbersComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    preTransformation: function CheckNumbersComponent_CheckNumbersComponent$preTransformation(eventArgs) {
        if (!this.get_isComponentVisible()) {
            return;
        }
        if (this._state$2 === 'RESULTS') {
            this._setupResultsDetails$2(eventArgs);
            eventArgs.get_contextObject().xsltUrl = this._checkNumbersDetailsXsltUrl$2;
        }
        else if (this._state$2 === 'NEXT_DRAW') {
            this._setupResultsDetailsCached$2(eventArgs);
            eventArgs.get_contextObject().xsltUrl = this._checkNumbersDetailsXsltUrl$2;
        }
        else {
            var filterValue = this._getFilterViewValue$2();
            if (filterValue && filterValue.startsWith('checknumbers-drawnumber')) {
                this._setFilterViewValue$2('');
            }
        }
    },
    
    init: function CheckNumbersComponent_CheckNumbersComponent$init(environment, componentInstanceName, domElementId, parameters) {
        CheckNumbersComponent.CheckNumbersComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._gameExternalId$2 = parameters['game-externalid'];
        this._extractGameParameters$2 = (parameters['extract-game-parameters']) ? Boolean.parse(parameters['extract-game-parameters'].toString()) : true;
        this._loadGameConfigurationParameters$2();
        this._checkNumbersDetailsXsltUrl$2 = parameters['check-numbers-details-xslt-url'];
        this._checkNumbersDetailsNoWinnerByDrawDateContentUrl$2 = parameters['check-numbers-details-nowinner-by-drawdate-content-url'];
        this._checkNumbersDetailsNoWinnerByDrawNumberContentUrl$2 = parameters['check-numbers-details-nowinner-by-drawnumber-content-url'];
        this._dateTimeFormat$2 = parameters['date-time-format'];
        this._shortDateFormat$2 = parameters['short-date-format'];
        this._longDateFormat$2 = parameters['long-date-format'];
        this._choseNumbers$2 = (parameters['chose-numbers']) ? Boolean.parse(parameters['chose-numbers'].toString()) : true;
        this._showSystems$2 = (parameters['show-systems']) ? Boolean.parse(parameters['show-systems'].toString()) : true;
        this._numberSize$2 = (isNullOrUndefined(parameters['number-size'])) ? 0 : parseInt(parameters['number-size'].toString(), 10);
        if (Object.keyExists(parameters, 'link-to-action')) {
            this._linkToAction$2 = parameters['link-to-action'];
        }
        if (Object.keyExists(parameters, 'allowed-multiple-draw-numbers')) {
            this._allowedMultipleDrawNumbers$2 = parameters['allowed-multiple-draw-numbers'];
        }
        this._numberSizeAdd$2 = (isNullOrUndefined(parameters['number-size-add'])) ? 0 : parseInt(parameters['number-size-add'].toString(), 10);
        this._useExternalIdForImageNames = Boolean.parse(parameters['use-external-id-for-image-names']);
        this._parameters = new Framework.CommonComponentParameters(parameters);
    },
    
    renderComplete: function CheckNumbersComponent_CheckNumbersComponent$renderComplete(eventArgs) {
        if (this._state$2 === 'FILTER') {
            if (!this._gameParameterXML$2) {
                return;
            }
            var systemsSelect = document.getElementById(this._domElementId + '-systems-select');
            if (!isNullOrUndefined(systemsSelect) && !systemsSelect.options.length && this.parametersFetched) {
                var systemNodes = this._gameParameterXML$2.selectNodes(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/systems/system');
                for (var i = 0; i < systemNodes.length; i++) {
                    if (systemNodes[i].attributes.getNamedItem('enabled').nodeValue === 'true') {
                        var elem = document.createElement('option');
                        elem.text = systemNodes[i].attributes.getNamedItem('name').nodeValue;
                        elem.value = systemNodes[i].attributes.getNamedItem('id').nodeValue;
                        elem.innerText = systemNodes[i].attributes.getNamedItem('name').nodeValue;
                        systemsSelect.appendChild(elem);
                    }
                }
            }
            this._fixDrawsCheckboxes$2();
            this._loadDatepicker$2();
        }
        else if (this._state$2 === 'RESULTS' || this._state$2 === 'NEXT_DRAW') {
            this._updateWinningDetails$2();
            var drawDateElement = this.getPrivateDomElement('date-in-long-format');
            if (!isNullOrUndefined(drawDateElement)) {
                var date = Date.parse(drawDateElement.innerHTML.replace('-', '/').substring(0, 10));
                drawDateElement.innerText = date.format(this._longDateFormat$2, true);
                drawDateElement.style.visibility = 'visible';
            }
            if (!String.isNullOrEmpty(this._allowedMultipleDrawNumbers$2)) {
                if (isNullOrUndefined(this._nextDraws$2)) {
                    this._loadNextDraws$2(this._firstDrawNumber$2, this._firstDrawNumber$2, this._firstDrawDate$2, this._drawNumber$2, this._drawCount$2);
                    this._state$2 = 'NEXT_DRAW';
                }
                else {
                    this._showLinksForAllDraws$2(this._drawNumber$2);
                }
            }
        }
    },
    
    _fixDrawsCheckboxes$2: function CheckNumbersComponent_CheckNumbersComponent$_fixDrawsCheckboxes$2() {
        var disable = false;
        if (this._getDrawCount$2() > 1) {
            for (var k = 1; k < this._getDrawCount$2(); k++) {
                var drawEnabled = this.getPrivateDomElement('draws-' + k);
                if (isNullOrUndefined(drawEnabled)) {
                    return;
                }
                if (disable) {
                    drawEnabled.disabled = true;
                    drawEnabled.checked = false;
                }
                else {
                    if (!drawEnabled.checked) {
                        disable = true;
                    }
                    drawEnabled.disabled = false;
                }
            }
        }
    },
    
    getXsltParameters: function CheckNumbersComponent_CheckNumbersComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['game-id'] = this._gameExternalId$2;
        xsltParameters['number-size'] = this._getSymbolCountForCurrentSystemAndSet$2(1);
        xsltParameters['chose-numbers'] = this._choseNumbers$2;
        xsltParameters['use-external-id-for-image-names'] = (this._useExternalIdForImageNames) ? 'true' : 'false';
        xsltParameters['chosen-numbers'] = this._serializeNumbers$2(this._selNumbers$2);
        xsltParameters['show-results'] = !this._showSystems$2 || (Object.getKeyCount(this._selNumbers$2) > 0 && (this._selNumbers$2['1']).length === this._getMainSetsSymbolCount$2());
        this.renderIsDone = true;
        xsltParameters['link-to-action'] = this._linkToAction$2;
        xsltParameters['allowed-multiple-draw-numbers'] = this._allowedMultipleDrawNumbers$2;
        if (this._extractGameParameters$2 && this.parametersFetched) {
            xsltParameters['show-systems'] = this._getActiveSystemCount$2() > 1 && this._showSystems$2;
            xsltParameters['draws-count'] = this._getDrawCount$2();
            xsltParameters['draws-names'] = this._getDrawsNames$2();
            xsltParameters['hasAddSet'] = (this._getSetCount$2() > 1) ? 'true' : 'false';
            xsltParameters['count'] = this._getGameParam$2(1, 'count');
            xsltParameters['lowSymbol'] = this._getGameParam$2(1, 'lowSymbol');
            xsltParameters['highSymbol'] = this._getGameParam$2(1, 'highSymbol');
            xsltParameters['show-selected-balls'] = this._getGameParam$2(1, 'repetitionAllowed');
            if (this._getSetCount$2() > 1) {
                xsltParameters['count-add'] = this._getGameParam$2(2, 'count');
                xsltParameters['number-size-add'] = this._getSymbolCountForCurrentSystemAndSet$2(2);
                xsltParameters['lowSymbol-add'] = this._getGameParam$2(2, 'lowSymbol');
                xsltParameters['highSymbol-add'] = this._getGameParam$2(2, 'highSymbol');
            }
        }
        return xsltParameters;
    },
    
    _getSetCount$2: function CheckNumbersComponent_CheckNumbersComponent$_getSetCount$2() {
        if (!this.parametersFetched) {
            return 0;
        }
        var sets = this._gameParameterXML$2.selectNodes(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/sets/set');
        return sets.length;
    },
    
    _getMainSetsSymbolCount$2: function CheckNumbersComponent_CheckNumbersComponent$_getMainSetsSymbolCount$2() {
        if (!this.parametersFetched) {
            return 0;
        }
        var mainSet = this._gameParameterXML$2.selectSingleNode(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/sets/set[@id=1]');
        var countStr = mainSet.attributes.getNamedItem('count').text;
        return parseInt(countStr);
    },
    
    _getDrawsNames$2: function CheckNumbersComponent_CheckNumbersComponent$_getDrawsNames$2() {
        if (!this.parametersFetched) {
            return '';
        }
        var draws = this._gameParameterXML$2.selectNodes(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/draws/draw');
        var drawNames = '';
        for (var i = 0; i < draws.length; i++) {
            var nameNode = draws[i].attributes.getNamedItem('name');
            drawNames += nameNode.text + ',';
        }
        return drawNames;
    },
    
    _getDrawCount$2: function CheckNumbersComponent_CheckNumbersComponent$_getDrawCount$2() {
        if (!this.parametersFetched) {
            return 0;
        }
        var draws = this._gameParameterXML$2.selectNodes(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/draws/draw');
        return draws.length;
    },
    
    _getActiveSystemCount$2: function CheckNumbersComponent_CheckNumbersComponent$_getActiveSystemCount$2() {
        var systemNodes = this._gameParameterXML$2.selectNodes(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/systems/system[@enabled=\"true\"]');
        if (systemNodes) {
            return systemNodes.length;
        }
        return 1;
    },
    
    _gameParameterXML$2: null,
    
    _loadGameConfigurationParameters$2: function CheckNumbersComponent_CheckNumbersComponent$_loadGameConfigurationParameters$2() {
        this._xmlHttpRequestDecorator$2.onreadystatechange = Delegate.create(this, function() {
            if (this._xmlHttpRequestDecorator$2.readyState === 4) {
                if (this._xmlHttpRequestDecorator$2.status === 200 || this._xmlHttpRequestDecorator$2.status === 304) {
                    this._gameParameterXML$2 = this._xmlHttpRequestDecorator$2.responseXML;
                    this.parametersFetched = true;
                    if (this.renderIsDone) {
                        this.update();
                    }
                }
            }
        });
        var configPath = String.format('/cache/dgGameParams/{0}/{1}.xml', this._environment.getLanguage(), this._gameExternalId$2);
        this._xmlHttpRequestDecorator$2.open('GET', configPath, true);
        this._xmlHttpRequestDecorator$2.send(null);
    },
    
    _nextDraws$2: null,
    
    _loadNextDraws$2: function CheckNumbersComponent_CheckNumbersComponent$_loadNextDraws$2(byNumber, firstDrawNumber, firstDrawDate, currentDrawNumber, count) {
        this._xmlHttpRequestDecorator$2.onreadystatechange = Delegate.create(this, function() {
            if (this._xmlHttpRequestDecorator$2.readyState === 4) {
                if (this._xmlHttpRequestDecorator$2.status === 200 || this._xmlHttpRequestDecorator$2.status === 304) {
                    this._nextDraws$2 = this._xmlHttpRequestDecorator$2.responseXML;
                    this._showLinksForAllDraws$2(currentDrawNumber);
                }
            }
        });
        var formatedDate = null;
        if (!isNullOrUndefined(firstDrawDate)) {
            var firstDate = Framework.JSONFormat.parseDateTime(firstDrawDate);
            formatedDate = firstDate.format('MM/dd/yyyy');
        }
        var configPath = String.format('/cache/dgSimpleEventsAfterDraw{0}/{1}/{2}-{3}-{4}.xml', (byNumber) ? 'Number' : 'Date', this._environment.getLanguage(), this._gameExternalId$2, (byNumber) ? firstDrawNumber : formatedDate, count);
        this._xmlHttpRequestDecorator$2.open('GET', configPath, true);
        this._xmlHttpRequestDecorator$2.send(null);
    },
    
    _showLinksForAllDraws$2: function CheckNumbersComponent_CheckNumbersComponent$_showLinksForAllDraws$2(currentDrawNumber) {
        var list = this._nextDraws$2.selectNodes('/ArrayOfSimpleGameEventInfo/SimpleGameEventInfo');
        for (var i = 0; i < list.length; i++) {
            this._showLink$2(i + 1, list[i].selectSingleNode('drawnumber').text, list[i].selectSingleNode('drawdate').text, currentDrawNumber);
        }
    },
    
    _showLink$2: function CheckNumbersComponent_CheckNumbersComponent$_showLink$2(position, drawNumber, drawDateStr, currentDrawNumber) {
        var link = this.getPrivateDomElement('link-to-draw-' + position);
        var formatedDrawDate = null;
        if (!isNullOrUndefined(drawDateStr)) {
            var drawDate = Date.parse(drawDateStr);
            formatedDrawDate = drawDate.format('MM/dd/yyyy');
        }
        if (!isNullOrUndefined(link)) {
            this._removeClassName$2(link, 'hidden');
            var firstDrawDateFormated = null;
            if (!isNullOrUndefined(this._firstDrawDate$2)) {
                var firstDate = Framework.JSONFormat.parseDateTime(this._firstDrawDate$2);
                firstDrawDateFormated = firstDate.format('MM/dd/yyyy');
            }
            if (drawNumber === currentDrawNumber || (isNullOrUndefined(currentDrawNumber) && formatedDrawDate === firstDrawDateFormated)) {
                this._addClassName$2(link, 'current');
            }
        }
        var linkContent = this.getPrivateDomElement('show-draw-' + position);
        if (!isNullOrUndefined(linkContent)) {
            linkContent.innerHTML = drawNumber;
        }
        if (!Object.getKeyCount(this._winningsPerDraw$2)) {
            this._checkWinnings$2(drawNumber, position);
        }
        else {
            this._showWinningInfoInLink$2(this._winningsPerDraw$2[drawNumber], position);
        }
    },
    
    _checkWinnings$2: function CheckNumbersComponent_CheckNumbersComponent$_checkWinnings$2(drawNumber, position) {
        var selectedNumbersString = this._serializeNumbers$2(this._selNumbers$2);
        this._dgeService$2.getHypotheticalWinnings(Delegate.create(this, function(response) {
            var winningInfos = response;
            var hasWinnings = !isNullOrUndefined(winningInfos) && winningInfos.length > 0;
            this._winningsPerDraw$2[drawNumber] = hasWinnings;
            this._showWinningInfoInLink$2(hasWinnings, position);
        }), Delegate.create(this, function(exception) {
            alert(exception.message);
            this._executeWinningInfoProcessing$2(null);
        }), this._gameExternalId$2, selectedNumbersString, drawNumber, null, null);
    },
    
    _showWinningInfoInLink$2: function CheckNumbersComponent_CheckNumbersComponent$_showWinningInfoInLink$2(hasWinnings, position) {
        var wonElement = this.getPrivateDomElement('show-draw-won-' + position);
        var lostElement = this.getPrivateDomElement('show-draw-lost-' + position);
        if (hasWinnings) {
            this._removeClassName$2(wonElement, 'hidden');
        }
        else {
            this._removeClassName$2(lostElement, 'hidden');
        }
    },
    
    _loadDatepicker$2: function CheckNumbersComponent_CheckNumbersComponent$_loadDatepicker$2() {
        var scriptToRun = new StringBuilder('window.jQuery(function(){window.jQuery(\'#');
        scriptToRun.append(this._domElementId);
        scriptToRun.append('-numbers-drawdate\').datepicker(window.jQuery.extend({ changeYear: true, changeMonth: true }, window.jQuery.datepicker.regional[\'es\']));});');
        eval(scriptToRun.toString());
    },
    
    _getGameParam$2: function CheckNumbersComponent_CheckNumbersComponent$_getGameParam$2(setId, paramName) {
        var setNode = this._gameParameterXML$2.selectSingleNode(String.format(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/sets/set[@id={0}]', setId));
        if (isNullOrUndefined(setNode)) {
            return null;
        }
        var attribs = setNode.attributes;
        var attr = attribs.getNamedItem(paramName);
        return (!isNullOrUndefined(attr)) ? attr.text : null;
    },
    
    _getSelectedSymbols$2: function CheckNumbersComponent_CheckNumbersComponent$_getSelectedSymbols$2(setId) {
        var parentNode;
        parentNode = document.getElementById(this._domElementId + '-numbers');
        var liNodes = parentNode.getElementsByTagName('li');
        var selectedSymbols = [];
        var selectedCount = 0;
        for (var i = 0; i < liNodes.length; i++) {
            var liNodeClassName = liNodes[i].className;
            if (liNodeClassName.indexOf('selected') > 0) {
                var s = liNodes[i].children[0].innerHTML;
                selectedSymbols[selectedCount++] = s;
            }
        }
        return selectedSymbols;
    },
    
    _handleDisplayState$2: function CheckNumbersComponent_CheckNumbersComponent$_handleDisplayState$2(key, state) {
        var errorElem = document.getElementById(this._domElementId + key);
        errorElem.style.display = state;
    },
    
    _checkDrawNumber$2: function CheckNumbersComponent_CheckNumbersComponent$_checkDrawNumber$2(oInputElement) {
        var drawNumber = oInputElement.value.trim();
        if (String.isNullOrEmpty(drawNumber)) {
            return false;
        }
        if (drawNumber !== drawNumber.replace(new RegExp('\\D'), '')) {
            return false;
        }
        var dn = Number.parse(drawNumber);
        if (dn.toString() === 'NaN') {
            return false;
        }
        return true;
    },
    
    _getFilterViewValue$2: function CheckNumbersComponent_CheckNumbersComponent$_getFilterViewValue$2() {
        var pageFilter = this._navigationService$2.getPageFilter();
        var viewFilter = pageFilter['view'];
        return (!viewFilter) ? null : viewFilter.toString();
    },
    
    _setFilterViewValue$2: function CheckNumbersComponent_CheckNumbersComponent$_setFilterViewValue$2(value) {
        var pageFilter = this._navigationService$2.getPageFilter();
        if (String.isNullOrEmpty(value)) {
            delete pageFilter.view;
        }
        else {
            pageFilter['view'] = value;
        }
        this._navigationService$2.setPageFilter(pageFilter);
    },
    
    _getSymbolCountForCurrentSystemAndSet$2: function CheckNumbersComponent_CheckNumbersComponent$_getSymbolCountForCurrentSystemAndSet$2(setId) {
        if (this._numberSize$2 && setId === 1) {
            return this._numberSize$2;
        }
        if (this._numberSizeAdd$2 && setId === 2) {
            return this._numberSizeAdd$2;
        }
        var systemsSelect = document.getElementById(this._domElementId + '-systems-select');
        if (isNullOrUndefined(systemsSelect)) {
            return 0;
        }
        var value = systemsSelect.value;
        if (!isNullOrUndefined(value) && this.parametersFetched) {
            var systemNodesSet = this._gameParameterXML$2.selectNodes(String.format(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/systems/system[@id=\"{0}\"]/set[@id=\"{1}\"]', value, setId));
            if (systemNodesSet && systemNodesSet.length > 0) {
                var symbolCountNode = systemNodesSet[0].attributes.getNamedItem('symbolCount');
                var symbolCount = parseInt(symbolCountNode.text);
                return symbolCount;
            }
        }
        return 0;
    },
    
    _removeClassName$2: function CheckNumbersComponent_CheckNumbersComponent$_removeClassName$2(element, className) {
        if (isNullOrUndefined(element)) {
            return;
        }
        var oldClassName = element.className;
        var newClassName;
        var selectedIndex = oldClassName.indexOf(className);
        if (selectedIndex >= 0) {
            newClassName = oldClassName.substring(0, selectedIndex - 1);
            element.className = newClassName;
        }
    },
    
    _addClassName$2: function CheckNumbersComponent_CheckNumbersComponent$_addClassName$2(element, className) {
        var oldClassName = element.className;
        var newClassName;
        var selectedIndex = oldClassName.indexOf(className);
        if (selectedIndex < 0) {
            newClassName = oldClassName + ' ' + className;
            element.className = newClassName;
        }
    },
    
    _toggleClassName$2: function CheckNumbersComponent_CheckNumbersComponent$_toggleClassName$2(element, toggleClass, allowOnlyRemove) {
        var className = element.className;
        var selectedIndex = className.indexOf(toggleClass);
        var newClassName;
        if (selectedIndex >= 0) {
            newClassName = className.substring(0, selectedIndex - 1);
        }
        else {
            newClassName = (allowOnlyRemove) ? className : className + ' ' + toggleClass;
        }
        var same = element.className === newClassName;
        element.className = newClassName;
        return same;
    },
    
    _extractDrawNumberIfSearchParam$2: function CheckNumbersComponent_CheckNumbersComponent$_extractDrawNumberIfSearchParam$2() {
        var drawOption = document.getElementById(this._domElementId + '-numbers-drawoption');
        if (drawOption.checked) {
            var drawNumberHolder = document.getElementById(this._domElementId + '-numbers-drawnumber');
            if (!this._checkDrawNumber$2(drawNumberHolder)) {
                this._handleDisplayState$2('-error-number', 'block');
                return null;
            }
            return (drawNumberHolder).value;
        }
        return null;
    },
    
    _extractDrawDateIfSearchParam$2: function CheckNumbersComponent_CheckNumbersComponent$_extractDrawDateIfSearchParam$2() {
        var dateOption = document.getElementById(this._domElementId + '-numbers-dateoption');
        if (dateOption.checked) {
            var dateInput = document.getElementById(this._domElementId + '-numbers-drawdate');
            var dateParts = dateInput.value.split('/');
            var year = Number.parse(dateParts[2]);
            var month = Number.parse(dateParts[1]) - 1;
            var day = Number.parse(dateParts[0]);
            var currDateTime = new Date();
            var offset1 = currDateTime.getTimezoneOffset();
            var demandedDateTime = new Date(year, month, day);
            var offset2 = demandedDateTime.getTimezoneOffset();
            var diff = offset2 - offset1;
            if (diff < 0) {
                diff = 0;
            }
            var dateTime = new Date(year, month, day, diff / 60);
            return Framework.JSONFormat.formatDateTime(dateTime);
        }
        return null;
    },
    
    _serializeNumbers$2: function CheckNumbersComponent_CheckNumbersComponent$_serializeNumbers$2(selNumbers) {
        var sb = new StringBuilder();
        var first = true;
        var $dict1 = selNumbers;
        for (var $key2 in $dict1) {
            var entry = { key: $key2, value: $dict1[$key2] };
            if (first) {
                first = false;
            }
            else {
                sb.append(':');
            }
            var numbers = entry.value;
            sb.append(numbers.join(','));
        }
        return sb.toString();
    },
    
    _setupResultsDetailsCached$2: function CheckNumbersComponent_CheckNumbersComponent$_setupResultsDetailsCached$2(eventArgs) {
        if (isNullOrUndefined(this._selNumbers$2)) {
            return;
        }
        var numbers = this._selNumbers$2['1'];
        if (isNullOrUndefined(this._selNumbers$2) || Object.getKeyCount(this._selNumbers$2) < 1) {
            return;
        }
        this._executeResultInfoProcessing$2(true, numbers, this._drawNumber$2, null, this._drawCount$2, eventArgs);
    },
    
    _setupResultsDetails$2: function CheckNumbersComponent_CheckNumbersComponent$_setupResultsDetails$2(eventArgs) {
        for (var i = 1; i <= this._getSetCount$2(); i++) {
            var setId = i.toString();
            this._selNumbers$2[setId] = this._getSelectedSymbols$2(setId);
        }
        if (isNullOrUndefined(this._selNumbers$2)) {
            return;
        }
        var numbers = this._selNumbers$2['1'];
        if (isNullOrUndefined(this._selNumbers$2) || Object.getKeyCount(this._selNumbers$2) < 1) {
            return;
        }
        this._drawNumber$2 = this._extractDrawNumberIfSearchParam$2();
        this._firstDrawNumber$2 = this._drawNumber$2;
        this._drawDate$2 = this._extractDrawDateIfSearchParam$2();
        this._firstDrawDate$2 = this._drawDate$2;
        this._drawCount$2 = this._getNextDrawsCount$2();
        this._extractShowDraws$2();
        this._executeResultInfoProcessing$2(true, numbers, this._drawNumber$2, this._drawDate$2, this._drawCount$2, eventArgs);
    },
    
    _getNextDrawsCount$2: function CheckNumbersComponent_CheckNumbersComponent$_getNextDrawsCount$2() {
        var drawCountSelect = document.getElementById(this._domElementId + '-multiple-draws');
        return (isNullOrUndefined(drawCountSelect)) ? 1 : Number.parse(drawCountSelect.value);
    },
    
    _extractShowDraws$2: function CheckNumbersComponent_CheckNumbersComponent$_extractShowDraws$2() {
        var i = 1;
        while (true) {
            var drawCheckBox = document.getElementById(this._domElementId + '-draws-' + i);
            if (isNullOrUndefined(drawCheckBox)) {
                break;
            }
            if (drawCheckBox.checked) {
                this._showDraws$2 += ',' + i;
            }
            i++;
        }
    },
    
    _getNumbersFromDOMElement$2: function CheckNumbersComponent_CheckNumbersComponent$_getNumbersFromDOMElement$2(parentElement) {
        var drawnNumbers = [];
        var resultElements = parentElement.getElementsByTagName('li');
        if (isNullOrUndefined(resultElements)) {
            return null;
        }
        for (var j = 0; j < resultElements.length; j++) {
            var resultElement = resultElements[j];
            drawnNumbers[j] = resultElement.children[0].innerHTML;
        }
        return drawnNumbers;
    },
    
    _checkMatchedNumbers$2: function CheckNumbersComponent_CheckNumbersComponent$_checkMatchedNumbers$2(contentHolder, drawDetailDOMElement) {
        var mainNumbers = drawDetailDOMElement.getElementsByTagName('ul')[0];
        var bonusNumbers = drawDetailDOMElement.getElementsByTagName('ul')[1];
        var mainDrawnNumbers = this._getNumbersFromDOMElement$2(mainNumbers);
        var bonusDrawnNumbers = null;
        if (!isNullOrUndefined(bonusNumbers)) {
            bonusDrawnNumbers = this._getNumbersFromDOMElement$2(bonusNumbers);
        }
        var elements = contentHolder.getElementsByTagName('li');
        if (isNullOrUndefined(elements)) {
            return;
        }
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i];
            var number = element.children[0].innerHTML;
            for (var j = 0; j < mainDrawnNumbers.length; j++) {
                if (number === mainDrawnNumbers[j]) {
                    element.children[1].className = 'checked';
                }
            }
            if (bonusDrawnNumbers) {
                for (var t = 0; t < bonusDrawnNumbers.length; t++) {
                    if (number === bonusDrawnNumbers[t]) {
                        element.children[1].className = 'checked';
                        element.className = 'ltnumber bonusCell';
                    }
                }
            }
        }
    },
    
    _toto3CheckMatchedNumbers$2: function CheckNumbersComponent_CheckNumbersComponent$_toto3CheckMatchedNumbers$2(contentHolder, drawDetailDOMElement) {
        var mainNumbers = drawDetailDOMElement.getElementsByTagName('ul')[0];
        var mainDrawnNumbers = this._getNumbersFromDOMElement$2(mainNumbers);
        var elements = contentHolder.getElementsByTagName('li');
        var chosenNumbers = [];
        if (isNullOrUndefined(elements)) {
            return;
        }
        if (isNullOrUndefined(elements)) {
            return;
        }
        for (var i = 0; i < elements.length; i++) {
            var element = elements[i];
            var number = element.children[0].innerHTML;
            chosenNumbers[i] = number;
        }
        if (this._isExacta$2(chosenNumbers, mainDrawnNumbers) || this._isTrio$2(chosenNumbers, mainDrawnNumbers) || this._isPar1$2(chosenNumbers, mainDrawnNumbers)) {
            elements[0].children[1].className = 'checked';
        }
        if (this._isExacta$2(chosenNumbers, mainDrawnNumbers) || this._isTrio$2(chosenNumbers, mainDrawnNumbers) || this._isPar1$2(chosenNumbers, mainDrawnNumbers) || this._isPar2$2(chosenNumbers, mainDrawnNumbers)) {
            elements[1].children[1].className = 'checked';
        }
        if (this._isExacta$2(chosenNumbers, mainDrawnNumbers) || this._isTrio$2(chosenNumbers, mainDrawnNumbers) || this._isPar2$2(chosenNumbers, mainDrawnNumbers) || this._isTermination$2(chosenNumbers, mainDrawnNumbers)) {
            elements[2].children[1].className = 'checked';
        }
        return;
    },
    
    _isExacta$2: function CheckNumbersComponent_CheckNumbersComponent$_isExacta$2(chosenNumbers, mainDrawnNumbers) {
        for (var j = 0; j < mainDrawnNumbers.length; j++) {
            if (chosenNumbers[j] !== mainDrawnNumbers[j]) {
                return false;
            }
        }
        return true;
    },
    
    _isTrio$2: function CheckNumbersComponent_CheckNumbersComponent$_isTrio$2(chosenNumbers, mainDrawnNumbers) {
        var chosenNumbersCopy = chosenNumbers.clone();
        chosenNumbersCopy.sort();
        var mainDrawnNumbersCopy = mainDrawnNumbers.clone();
        mainDrawnNumbersCopy.sort();
        return this._isExacta$2(chosenNumbersCopy, mainDrawnNumbersCopy);
    },
    
    _isPar1$2: function CheckNumbersComponent_CheckNumbersComponent$_isPar1$2(chosenNumbers, mainDrawnNumbers) {
        for (var j = 0; j < mainDrawnNumbers.length - 1; j++) {
            if (chosenNumbers[j] !== mainDrawnNumbers[j]) {
                return false;
            }
        }
        return true;
    },
    
    _isPar2$2: function CheckNumbersComponent_CheckNumbersComponent$_isPar2$2(chosenNumbers, mainDrawnNumbers) {
        for (var j = 1; j < mainDrawnNumbers.length; j++) {
            if (chosenNumbers[j] !== mainDrawnNumbers[j]) {
                return false;
            }
        }
        return true;
    },
    
    _isTermination$2: function CheckNumbersComponent_CheckNumbersComponent$_isTermination$2(chosenNumbers, mainDrawnNumbers) {
        return chosenNumbers[chosenNumbers.length - 1] === mainDrawnNumbers[chosenNumbers.length - 1];
    },
    
    backEventHandler: function CheckNumbersComponent_CheckNumbersComponent$backEventHandler(sender, eventArgs) {
        this._clearState$2();
        this._setFilterViewValue$2(null);
        this.update();
    },
    
    _clearState$2: function CheckNumbersComponent_CheckNumbersComponent$_clearState$2() {
        this._selNumbers$2 = {};
        this._drawNumber$2 = null;
        this._firstDrawNumber$2 = null;
        this._drawDate$2 = null;
        this._firstDrawDate$2 = null;
        this._drawCount$2 = 1;
        this._showDraws$2 = '0';
        this._state$2 = 'FILTER';
        this._winningsPerDraw$2 = {};
        this._nextDraws$2 = null;
    },
    
    showDrawEventHandler: function CheckNumbersComponent_CheckNumbersComponent$showDrawEventHandler(sender, eventArgs) {
        var index = eventArgs.parameters.getAsInt32('index');
        var requestedDrawNumberElem = this.getPrivateDomElement('show-draw-' + index);
        if (isNullOrUndefined(requestedDrawNumberElem)) {
            return;
        }
        var requestedDrawNumber = requestedDrawNumberElem.innerHTML;
        this._drawNumber$2 = requestedDrawNumber;
        this._state$2 = 'NEXT_DRAW';
        this.update();
    },
    
    changeActionEventHandler: function CheckNumbersComponent_CheckNumbersComponent$changeActionEventHandler(sender, eventArgs) {
        var pageFilter = this._navigationService$2.getPageFilter();
        pageFilter['action'] = this._linkToAction$2;
        this._navigationService$2.setPageFilter(pageFilter);
    },
    
    selectDrawEventHandler: function CheckNumbersComponent_CheckNumbersComponent$selectDrawEventHandler(sender, eventArgs) {
        this._fixDrawsCheckboxes$2();
    },
    
    getNumbersEventHandler: function CheckNumbersComponent_CheckNumbersComponent$getNumbersEventHandler(sender, eventArgs) {
        var dateOption = document.getElementById(this._domElementId + '-numbers-dateoption');
        var drawOption = document.getElementById(this._domElementId + '-numbers-drawoption');
        this._handleDisplayState$2('-error-draw', 'none');
        this._handleDisplayState$2('-error-number-length', 'none');
        this._handleDisplayState$2('-error-number-length-too-many', 'none');
        if (dateOption.checked) {
            var dateContainer = document.getElementById(this._domElementId + '-numbers-drawdate');
            var dateString = dateContainer.value;
            if ('' === dateString) {
                this._handleDisplayState$2('-error-draw', 'block');
                return;
            }
            var dateParts = dateContainer.value.split('/');
            var dateTime = new Date();
            dateTime.setFullYear(Number.parse(dateParts[2]));
            dateTime.setMonth(Number.parse(dateParts[1]) - 1);
            dateTime.setDate(Number.parse(dateParts[0]));
        }
        if (drawOption.checked) {
            var inputElement = document.getElementById(this._domElementId + '-numbers-drawnumber');
            if (!this._checkDrawNumber$2(inputElement)) {
                this._handleDisplayState$2('-error-draw', 'block');
                return;
            }
        }
        for (var i = 1; i <= this._getSetCount$2(); i++) {
            var symbolCount = this._getSymbolCountForCurrentSystemAndSet$2(i);
            if (symbolCount > 0) {
                var selectedCount = this._getSelectedSymbols$2(i.toString()).length;
                if (selectedCount !== symbolCount) {
                    this._handleDisplayState$2('-error-number-length', 'block');
                    this.getPrivateDomElement('expected-number-length').innerHTML = symbolCount.toString();
                    return;
                }
            }
        }
        this._state$2 = 'RESULTS';
        var firstSetSymbolCount = this._getSymbolCountForCurrentSystemAndSet$2(1);
        if (String.isNullOrEmpty(this._allowedMultipleDrawNumbers$2)) {
            this._setFilterViewValue$2('checknumbers-drawnumber-' + firstSetSymbolCount);
        }
        else {
            this._setFilterViewValue$2('checknumbers-multi-drawnumber-' + firstSetSymbolCount);
        }
        this.update();
    },
    
    selectNumberEventHandler: function CheckNumbersComponent_CheckNumbersComponent$selectNumberEventHandler(sender, eventArgs) {
        var element = eventArgs.domElement;
        var systemsSelect = document.getElementById(this._domElementId + '-systems-select');
        var maxSelCount = 0;
        var setId = '1';
        if (isNullOrUndefined(systemsSelect)) {
            maxSelCount = this._numberSize$2;
        }
        else {
            var elementIdString = element.id;
            if (!isNullOrUndefined(elementIdString)) {
                setId = elementIdString.substr((this._domElementId + '-numbers-set-').length, 1);
            }
            var selectedSystemIndex = systemsSelect.selectedIndex;
            var systemId = (systemsSelect.options[selectedSystemIndex]).value;
            if (this.parametersFetched) {
                var systemNodeSet = this._gameParameterXML$2.selectSingleNode(String.format(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/systems/system[@id=\"{0}\"]/set[@id=\"{1}\"]', systemId, setId));
                var maxSelCountStr = systemNodeSet.attributes.getNamedItem('symbolCount').nodeValue;
                try {
                    maxSelCount = parseInt(maxSelCountStr);
                }
                catch ($e1) {
                }
            }
        }
        if (this._getGameParam$2(1, 'repetitionAllowed') === 'true') {
            var chosenSymbol;
            var position = eventArgs.domElement.id.indexOf('-number-');
            if (position > 0) {
                chosenSymbol = eventArgs.domElement.id.substring(position + 8, eventArgs.domElement.id.length);
                var spanWithNumber = this.getPrivateDomElement('selected-numbers-set-1-number-' + this._currentSelectedIndex$2++);
                var parentLi = spanWithNumber.parentNode;
                this._addClassName$2(parentLi, 'selected');
                spanWithNumber.innerHTML = chosenSymbol;
                if (this._currentSelectedIndex$2 > this._numberSize$2) {
                    this._currentSelectedIndex$2 = 1;
                }
            }
        }
        else {
            var selectedCount = this._getSelectedSymbols$2(setId).length;
            this._handleDisplayState$2('-error-number-length-too-many', 'none');
            this._handleDisplayState$2('-error-draw', 'none');
            this._handleDisplayState$2('-error-number-length', 'none');
            if (selectedCount < maxSelCount) {
                this._toggleClassName$2(element, 'selected', false);
            }
            else {
                if (this._toggleClassName$2(element, 'selected', true)) {
                    if (this._showSystems$2) {
                        this._handleDisplayState$2('-error-number-length-too-many', 'block');
                    }
                    else {
                        this._handleDisplayState$2('-error-number-length', 'block');
                    }
                }
            }
        }
    },
    
    clearEventHandler: function CheckNumbersComponent_CheckNumbersComponent$clearEventHandler(sender, eventArgs) {
        var selectedBalls = this.getPrivateDomElement('selected-balls');
        var currentSelectedBalls = selectedBalls.getElementsByTagName('SPAN');
        for (var i = 0; i < currentSelectedBalls.length; i++) {
            var span = currentSelectedBalls[i];
            if (span.className !== 'button') {
                span.innerHTML = '';
            }
        }
        this._currentSelectedIndex$2 = 1;
    },
    
    changeDateNumberEventHandler: function CheckNumbersComponent_CheckNumbersComponent$changeDateNumberEventHandler(sender, eventArgs) {
        var dateRadio = document.getElementById(this._domElementId + '-numbers-dateoption');
        if (dateRadio.checked) {
            var dateInput = document.getElementById(this._domElementId + '-numbers-drawdate');
            this._removeClassName$2(dateInput, 'hidden');
            var numberInput = document.getElementById(this._domElementId + '-numbers-drawnumber');
            this._addClassName$2(numberInput, 'hidden');
        }
        else {
            var dateInput = document.getElementById(this._domElementId + '-numbers-drawdate');
            this._addClassName$2(dateInput, 'hidden');
            var numberInput = document.getElementById(this._domElementId + '-numbers-drawnumber');
            this._removeClassName$2(numberInput, 'hidden');
        }
    },
    
    _updateWinningDetails$2: function CheckNumbersComponent_CheckNumbersComponent$_updateWinningDetails$2() {
        if (isNullOrUndefined(this._selNumbers$2)) {
            return;
        }
        if (isNullOrUndefined(this._selNumbers$2) || Object.getKeyCount(this._selNumbers$2) < 1) {
            return;
        }
        var selectedNumbersString = this._serializeNumbers$2(this._selNumbers$2);
        this._dgeService$2.getHypotheticalWinnings(Delegate.create(this, function(response) {
            var winningInfos = response;
            this._executeWinningInfoProcessing$2(winningInfos);
        }), Delegate.create(this, function(exception) {
            alert(exception.message);
            this._executeWinningInfoProcessing$2(null);
        }), this._gameExternalId$2, selectedNumbersString, this._drawNumber$2, this._drawDate$2, null);
    },
    
    _executeWinningInfoProcessing$2: function CheckNumbersComponent_CheckNumbersComponent$_executeWinningInfoProcessing$2(winningInfos) {
        var hasShownWinnings = false;
        var contentHolder = document.getElementById(this._domElementId + '-winnings-container');
        if (isNullOrUndefined(contentHolder)) {
            return;
        }
        var drawNumbers = contentHolder.children;
        for (var t = 0; t < drawNumbers.length; t++) {
            var currentDrawNumber = drawNumbers[t].id.substring(contentHolder.id.length + 1, drawNumbers[t].id.length);
            var draws = this._gameParameterXML$2.selectNodes(CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 + 'params/parameters/draws/draw');
            if (draws.length > 0) {
                for (var k = 0; k < draws.length; k++) {
                    var drawid = draws[k].attributes.getNamedItem('id').text;
                    var contentHolderToUpdate = document.getElementById(this._domElementId + '-chosen-numbers-' + currentDrawNumber + '-' + drawid);
                    var numbersHolder = document.getElementById(this._domElementId + '-drawn-numbers-' + currentDrawNumber + '-' + drawid);
                    if (this._gameExternalId$2 === 'Toto3') {
                        this._toto3CheckMatchedNumbers$2(contentHolderToUpdate, numbersHolder);
                    }
                    else {
                        this._checkMatchedNumbers$2(contentHolderToUpdate, numbersHolder);
                    }
                }
            }
            var winningInfoCounts = this._cumulateWinningInfo$2(winningInfos);
            var hasMoreThanOnePerDraw = this._hasMoreThanOnePerDraw$2(winningInfoCounts);
            if (winningInfos && winningInfos.length > 0) {
                if (hasMoreThanOnePerDraw) {
                    var $dict1 = winningInfoCounts;
                    for (var $key2 in $dict1) {
                        var winningInfoCount = { key: $key2, value: $dict1[$key2] };
                        var parts = winningInfoCount.key.split('|');
                        if (this._showDraws$2.indexOf(parts[0]) >= 0) {
                            this._showWinningInfo$2(winningInfoCount.value.toString(), parts[1], parts[2], parts[3], parts[5]);
                            hasShownWinnings = true;
                        }
                        else {
                            var div = this.getPrivateDomElement('winning-message-' + parts[1] + '-' + parts[2]);
                            div.className = div.className.replace('invisible', 'visible');
                        }
                    }
                }
                else {
                    for (var i = 0; i < winningInfos.length; i++) {
                        var info = winningInfos[i];
                        if (info.EventInfo.DrawNumber.toString() !== currentDrawNumber) {
                            continue;
                        }
                        if (this._showDraws$2.indexOf(info.DrawId) >= 0) {
                            this._showWinningInfo$2(info.Shares.toString(), info.EventInfo.DrawNumber.toString(), info.DrawName, info.DivisionName, info.Prize);
                            hasShownWinnings = true;
                        }
                        else {
                            var div = this.getPrivateDomElement('winning-message-' + info.EventInfo.DrawNumber + '-' + info.DrawName);
                            div.className = div.className.replace('invisible', 'visible');
                        }
                    }
                }
            }
        }
        var divLost = this.getPrivateDomElement('winnings-lost');
        var divWon = this.getPrivateDomElement('winnings-won');
        if (hasShownWinnings) {
            divLost.className = 'info2 hidden';
            divWon.className = 'info2';
        }
        else {
            divLost.className = 'info2';
            divWon.className = 'info2 hidden';
        }
    },
    
    _showWinningInfo$2: function CheckNumbersComponent_CheckNumbersComponent$_showWinningInfo$2(winningInfoCount, drawNumber, drawName, divisionName, prize) {
        var div = this.getPrivateDomElement('winning-' + drawNumber + '-' + drawName);
        div.className = div.className.replace('invisible', 'visible');
        var newTR = document.createElement('tr');
        var nameTD = document.createElement('td');
        var prizeTD = document.createElement('td');
        var winnersTD = document.createElement('td');
        newTR.appendChild(nameTD);
        nameTD.innerHTML = divisionName;
        var prizeNumber = Number.parse(prize);
        prizeTD.innerHTML = prizeNumber.format('N', true);
        winnersTD.innerHTML = winningInfoCount;
        newTR.appendChild(prizeTD);
        newTR.appendChild(winnersTD);
        div.children[0].children[0].appendChild(newTR);
        nameTD.className = 'first';
        winnersTD.className = 'last';
    },
    
    _hasMoreThanOnePerDraw$2: function CheckNumbersComponent_CheckNumbersComponent$_hasMoreThanOnePerDraw$2(dictionary) {
        var count = Object.getKeyCount(dictionary);
        if (count < 2) {
            if (count === 1) {
                var $dict1 = dictionary;
                for (var $key2 in $dict1) {
                    var entry = { key: $key2, value: $dict1[$key2] };
                    return entry.value !== '1';
                }
            }
            return false;
        }
        var oldDrawId = '';
        var $dict3 = dictionary;
        for (var $key4 in $dict3) {
            var entry = { key: $key4, value: $dict3[$key4] };
            var newDrawId = entry.key.substring(0, entry.key.indexOf('|') - 1);
            if (newDrawId === oldDrawId) {
                return true;
            }
        }
        return false;
    },
    
    _cumulateWinningInfo$2: function CheckNumbersComponent_CheckNumbersComponent$_cumulateWinningInfo$2(infos) {
        infos.sort(Delegate.create(this, function(a, b) {
            var winningInfoA = a;
            var winningInfoB = b;
            var drawCompare = winningInfoA.DrawId.compareTo(winningInfoA.DrawId);
            if (drawCompare) {
                return drawCompare;
            }
            if (winningInfoA.DivisionLevel > winningInfoB.DivisionLevel) {
                return 1;
            }
            if (winningInfoA.DivisionLevel < winningInfoB.DivisionLevel) {
                return -1;
            }
            return 0;
        }));
        var winningInfoCount = {};
        for (var i = 0; i < infos.length; i++) {
            var info = infos[i];
            var key = info.DrawId + '|' + info.EventInfo.DrawNumber + '|' + info.DrawName + '|' + info.DivisionName + '|' + info.DivisionLevel + '|' + info.Prize;
            if (Object.keyExists(winningInfoCount, key)) {
                winningInfoCount[key] = parseInt(winningInfoCount[key]) + 1;
            }
            else {
                winningInfoCount[key] = '1';
            }
        }
        return winningInfoCount;
    },
    
    _executeResultInfoProcessing$2: function CheckNumbersComponent_CheckNumbersComponent$_executeResultInfoProcessing$2(isCheckNumbers, numbers, drawNumber, drawDate, drawCount, eventArgs) {
        var contentUrl = '';
        var parameters = this.getXsltParameters(null);
        parameters['is-check-numbers'] = (isCheckNumbers) ? 'true' : 'false';
        parameters['draw-number'] = drawNumber;
        parameters['first-draw-number'] = this._firstDrawNumber$2;
        parameters['culture-name'] = CultureInfo.Current.name;
        parameters['search-numbers'] = numbers.join(',');
        parameters['show-draws'] = this._showDraws$2;
        parameters['allowed-multiple-draw-numbers'] = this._allowedMultipleDrawNumbers$2;
        parameters['draw-count'] = drawCount;
        if (!isNullOrUndefined(this._firstDrawDate$2)) {
            var firstDateTime = Framework.JSONFormat.parseDateTime(this._firstDrawDate$2);
            if (!isNullOrUndefined(firstDateTime)) {
                parameters['first-draw-date'] = firstDateTime.format(this._shortDateFormat$2);
            }
        }
        if (drawDate) {
            var dateTime = Framework.JSONFormat.parseDateTime(drawDate);
            parameters['draw-date'] = dateTime.format(this._dateTimeFormat$2);
            contentUrl = this._checkNumbersDetailsNoWinnerByDrawDateContentUrl$2;
            contentUrl = contentUrl.replace('${language}', this._environment.getLanguage());
            contentUrl = contentUrl.replace('${externalid}', this._gameExternalId$2);
            contentUrl = contentUrl.replace('${drawdate}', dateTime.format(this._shortDateFormat$2));
        }
        else {
            contentUrl = this._checkNumbersDetailsNoWinnerByDrawNumberContentUrl$2;
            contentUrl = contentUrl.replace('${language}', this._environment.getLanguage());
            contentUrl = contentUrl.replace('${externalid}', this._gameExternalId$2);
            contentUrl = contentUrl.replace('${drawnumber}', drawNumber);
        }
        eventArgs.get_contextObject().xsltParameters = parameters;
        eventArgs.get_contextObject().contentUrl = contentUrl;
    }
}


CheckNumbersComponent.CheckNumbersComponent.createClass('CheckNumbersComponent.CheckNumbersComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);
CheckNumbersComponent.CheckNumbersComponent._gamE_INFO_PATH$2 = 'game/';

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('VideoComponent');

////////////////////////////////////////////////////////////////////////////////
// VideoComponent.VideoComponent

VideoComponent.VideoComponent = function VideoComponent_VideoComponent() {
    this._monthNames$2 = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ];
    VideoComponent.VideoComponent.constructBase(this);
}
VideoComponent.VideoComponent.prototype = {
    _videoContainer$2: '',
    _videoURL$2: '',
    _gamename$2: '',
    _pendingPlayerHtml$2: '',
    _navigationService$2: null,
    
    setNavigationService: function VideoComponent_VideoComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function VideoComponent_VideoComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this._removePlayerContainer$2();
        this.update();
    },
    
    init: function VideoComponent_VideoComponent$init(environment, componentInstanceName, domElementId, parameters) {
        VideoComponent.VideoComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._videoContainer$2 = parameters['player-container'];
        this._videoURL$2 = parameters['video-url'];
        this._gamename$2 = parameters['gamename'];
    },
    
    renderComplete: function VideoComponent_VideoComponent$renderComplete(eventArgs) {
        this._loadDatePicker$2();
        if (!String.isNullOrEmpty(this._pendingPlayerHtml$2) && ('show-video' === this._navigationService$2.getPageFilter()['view'])) {
            var temp = this._pendingPlayerHtml$2;
            this._pendingPlayerHtml$2 = '';
            this._addPlayerContainer$2(temp);
        }
    },
    
    getXsltParameters: function VideoComponent_VideoComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    get_isComponentVisible: function VideoComponent_VideoComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    showDrawVideoEventHandler: function VideoComponent_VideoComponent$showDrawVideoEventHandler(sender, eventArgs) {
        var ScriptToRun = String.format('var oDate = window.jQuery(\'#{0}-datepicker\').datepicker(\'getDate\'); document.getElementById(\'{0}-selecteddate\').innerHTML = oDate.getDate() + \'/\' + (oDate.getMonth()+1) + \'/\' +(oDate.getFullYear());', this._domElementId);
        eval(ScriptToRun);
        var oWMPOption = document.getElementById(this._domElementId + '-wmp');
        var oRPOption = document.getElementById(this._domElementId + '-rp');
        var selectedPlayer = (oWMPOption.checked) ? oWMPOption.value : oRPOption.value;
        this._createAndActivatePlayer$2(selectedPlayer);
    },
    
    _createAndActivatePlayer$2: function VideoComponent_VideoComponent$_createAndActivatePlayer$2(selectedPlayer) {
        var html = '';
        if ('WMP' === selectedPlayer) {
            html = this._generateHtmlAndActivateWindowsMediaPlayer$2(this._generateVideoURL$2());
        }
        else if ('RP' === selectedPlayer) {
            html = this._generateHtmlAndActivateRealPlayer$2(this._generateVideoURL$2());
        }
        if (String.isNullOrEmpty(html)) {
            return;
        }
        this._removePlayerContainer$2();
        this._addPlayerContainer$2(html);
    },
    
    _generateHtmlAndActivateWindowsMediaPlayer$2: function VideoComponent_VideoComponent$_generateHtmlAndActivateWindowsMediaPlayer$2(url) {
        if (window.navigator.userAgent.indexOf('MSIE') > 0) {
            return String.format('\r\n                    <div class=\'videotitle\'>{1} {2}</div>\r\n                    <OBJECT id=\'WMPlayer\' width=\'405\' height=\'310\' CLASSID=\'CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\' type=\'application/x-oleobject\'>\r\n    \t                <PARAM NAME=\'URL\' VALUE=\'{0}\'>\r\n                        <PARAM NAME=\'SendPlayStateChangeEvents\' VALUE=\'True\'>\r\n                        <PARAM NAME=\'AutoStart\' VALUE=\'True\'>\r\n                        <PARAM name=\'uiMode\' value=\'mini\'>\r\n                    </OBJECT>', url, 'FECHA SORTEO:', this.getDateAsText());
        }
        return String.format('\r\n                    <div class=\'videotitle\'><span class=\'accented\'>{1}</span> {2}</div>\r\n                    <object id=\'WMPlayer\' codebase=\'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701\'\r\n                    type=\'application/x-oleobject\' height=\'310\' width=\'405\' align=\'absmiddle\'\r\n                    classid=\'CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\'>\r\n                        <param name=\'FileName\' value=\'http://{0}.wmv\'>\r\n                        <param name=\'ShowControls\' value=\'0\'>\r\n                        <param name=\'ShowStatusBar\' value=\'0\'>\r\n                        <param name=\'ShowDisplay\' value=\'0\'>\r\n                        <param name=\'DefaultFrame\' value=\'Slide\'>\r\n                        <param name=\'PlayCount\' value=\'1\'>\r\n                        <param name=\'Autostart\' value=\'1\'>\r\n                        <embed src=\'http://{0}.wmv\' width=405 height=310 autostart=1 loop=0\r\n                           align=\'absmiddle\' type=\'application/x-mplayer2\'pluginspage=\'http://www.microsoft.com/Windows/MediaPlayer/download/default.asp\'\r\n                           showcontrols=1 showdisplay=0 showstatusbar=1 >\r\n                        </embed>\r\n                    </object>', url, 'FECHA SORTEO:', this.getDateAsText());
    },
    
    _generateHtmlAndActivateRealPlayer$2: function VideoComponent_VideoComponent$_generateHtmlAndActivateRealPlayer$2(url) {
        return String.format('\r\n                <div class=\'videotitle\'><span class=\'accented\'>{1}</span> {2}</div>\r\n                <OBJECT ID=\'RPlayer\' CLASSID=\'clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA\' WIDTH=405 HEIGHT=275>\r\n                    <PARAM NAME=\'SRC\' VALUE=\'pnm://{0}.rm\'>\r\n                    <PARAM NAME=\'CONTROLS\' VALUE=\'ImageWindow\'>\r\n                    <PARAM NAME=\'CONSOLE\' VALUE=\'_master\'>\r\n                    <PARAM NAME=\'autostart\' VALUE=\'true\'>\r\n                    <PARAM NAME=\'center\' VALUE=\'true\'>\r\n                    <embed \r\n                        type=\'audio/x-pn-realaudio-plugin\'\r\n                        src=\'pnm://{0}.rm\'\r\n                        width=\'405\'\r\n                        height=\'275\'\r\n                        autostart=\'true\' \r\n                        controls=\'ImageWindow\' \r\n                        console=\'_master\'\r\n                     >\r\n                    </embed>\r\n                </OBJECT>\r\n                <OBJECT ID=\'RPlayer\' CLASSID=\'clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA\' WIDTH=405 HEIGHT=26>\r\n                    <PARAM NAME=\'controls\' VALUE=\'ControlPanel\'>\r\n                    <PARAM NAME=\'console\' VALUE=\'_master\'>\r\n                    <PARAM NAME=\'autostart\' VALUE=\'true\'>\r\n                     <embed \r\n                        type=\'audio/x-pn-realaudio-plugin\'\r\n                        width=\'405\'\r\n                        height=\'26\'\r\n                        autostart=\'true\' \r\n                        controls=\'ControlPanel\' \r\n                        console=\'_master\'\r\n                     >\r\n                    </embed>\r\n                </OBJECT>\r\n                <br /><br />\r\n                <a href=\'http://www.real.com/player\' target=\'_blank\'>Download RealPlayer</a>', url, 'FECHA SORTEO:', this.getDateAsText());
    },
    
    _addPlayerContainer$2: function VideoComponent_VideoComponent$_addPlayerContainer$2(playerHtml) {
        if ('show-video' === this._navigationService$2.getPageFilter()['view']) {
            this._appendPlayerHtml$2(playerHtml);
        }
        else {
            this._pendingPlayerHtml$2 = playerHtml;
            this._changeViewToVideoView$2();
        }
    },
    
    _appendPlayerHtml$2: function VideoComponent_VideoComponent$_appendPlayerHtml$2(playerHtml) {
        var playerDivContainer = document.getElementById(this._videoContainer$2);
        if (!playerDivContainer) {
            return;
        }
        var playerDiv = document.createElement('div');
        playerDiv.id = this._domElementId + '-video';
        playerDiv.innerHTML = playerHtml;
        playerDiv.className = 'videoPlayer';
        if (playerDivContainer.hasChildNodes()) {
            playerDivContainer.insertBefore(playerDiv, playerDivContainer.childNodes[0]);
        }
        else {
            playerDivContainer.appendChild(playerDiv);
        }
    },
    
    _changeViewToVideoView$2: function VideoComponent_VideoComponent$_changeViewToVideoView$2() {
        var pageFilter = this._navigationService$2.getPageFilter();
        pageFilter['view'] = 'show-video';
        this._navigationService$2.setPageFilter(pageFilter);
    },
    
    _removePlayerContainer$2: function VideoComponent_VideoComponent$_removePlayerContainer$2() {
        var oContainer = document.getElementById(this._videoContainer$2);
        if (!oContainer) {
            return;
        }
        var oPlayerHolder = document.getElementById(this._domElementId + '-video');
        if (oPlayerHolder) {
            oContainer.removeChild(oPlayerHolder);
        }
    },
    
    _generateVideoURL$2: function VideoComponent_VideoComponent$_generateVideoURL$2() {
        var oDateContainer = document.getElementById(this._domElementId + '-selecteddate');
        var oDateParts = oDateContainer.innerHTML.split('/');
        var oDateTime = new Date(Number.parse(oDateParts[2]), Number.parse(oDateParts[1]), Number.parse(oDateParts[0]));
        var year = oDateTime.getFullYear().toString();
        year = year.substr(2, 2);
        var day = (oDateTime.getDate() < 10) ? '0' + oDateTime.getDate().toString() : oDateTime.getDate().toString();
        var month = (oDateTime.getMonth() < 10) ? '0' + oDateTime.getMonth().toString() : oDateTime.getMonth().toString();
        var fileName = String.format('{0}-{1}{2}{3}', this._gamename$2, day, month, year);
        var port = (window.location.port.toString() !== '') ? ':' + window.location.port.toString() : '';
        var videoURL = String.format(this._videoURL$2, document.domain + port, fileName);
        return videoURL;
    },
    
    getDateAsText: function VideoComponent_VideoComponent$getDateAsText() {
        var oDateContainer = document.getElementById(this._domElementId + '-selecteddate');
        var oDateParts = oDateContainer.innerHTML.split('/');
        var oDateTime = new Date(Number.parse(oDateParts[2]), Number.parse(oDateParts[1]) - 1, Number.parse(oDateParts[0]));
        var year = oDateTime.getFullYear().toString();
        var day = (oDateTime.getDate() < 10) ? '0' + oDateTime.getDate().toString() : oDateTime.getDate().toString();
        var month = this._translateString$2(this._monthNames$2[oDateTime.getMonth()]);
        return day + VideoComponent.VideoComponent._datE_SEPARATOR$2 + month + VideoComponent.VideoComponent._datE_SEPARATOR$2 + year;
    },
    
    _loadDatePicker$2: function VideoComponent_VideoComponent$_loadDatePicker$2() {
        var scriptToRun = new StringBuilder('window.jQuery(function(){window.jQuery(\'#');
        scriptToRun.append(this._domElementId);
        scriptToRun.append('-datepicker\').datepicker(window.jQuery.extend({ changeYear: true, changeMonth: true }, window.jQuery.datepicker.regional[\'es\']));});');
        eval(scriptToRun.toString());
    },
    
    _translateString$2: function VideoComponent_VideoComponent$_translateString$2(inEnglish) {
        var domElement = this._environment.getDomElement(this._domElementId + '-strings');
        if (!domElement) {
            return inEnglish;
        }
        var xml = String.format('<xml>{0}</xml>', domElement.innerHTML);
        var xmlDocument = XMLDocumentParser.parse(xml);
        var xPath = '//string[@english=\'' + inEnglish + '\']';
        var node = xmlDocument.selectSingleNode(xPath);
        return (node) ? node.text : inEnglish;
    }
}


VideoComponent.VideoComponent.createClass('VideoComponent.VideoComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);
VideoComponent.VideoComponent._datE_SEPARATOR$2 = '-';

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('StatisticsComponent');

////////////////////////////////////////////////////////////////////////////////
// StatisticsComponent.StatisticsComponent

StatisticsComponent.StatisticsComponent = function StatisticsComponent_StatisticsComponent() {
    StatisticsComponent.StatisticsComponent.constructBase(this);
}
StatisticsComponent.StatisticsComponent.prototype = {
    _statisticsContainer: '',
    _statisticsUrlXml: '',
    _statisticsSinceUrlXml: '',
    _statisticsUrlCsv: '',
    _statisticsSinceUrlCsv: '',
    _statisticsUrlXls: '',
    _statisticsSinceUrlXls: '',
    _statisticsDetailsXsltUrl: '',
    _displayXlsLink: false,
    _displayTitle: false,
    _useExternalIdForImageNames: false,
    _gameName: '',
    _autoShowTable: true,
    _dgeService$2: null,
    _statisticsSince: '',
    _statisticDetailsAlreadyTransformed$2: false,
    _previouslySelectedElementId$2: null,
    _navigationService$2: null,
    
    setNavigationService: function StatisticsComponent_StatisticsComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function StatisticsComponent_StatisticsComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this._removeDrawStatistics$2();
        this.update();
    },
    
    setDGEService: function StatisticsComponent_StatisticsComponent$setDGEService(dgeService) {
        this._log.debug('SetDGEService');
        this._dgeService$2 = dgeService;
    },
    
    init: function StatisticsComponent_StatisticsComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._gameName = parameters['game-name'];
        var contentUrl = parameters['content-url'];
        contentUrl = contentUrl.replace('${language}', this._environment.getLanguage());
        parameters['content-url'] = String.format(contentUrl, this._gameName);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        StatisticsComponent.StatisticsComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._statisticsContainer = parameters['statistics-container'];
        this._statisticsUrlXml = parameters['statistics-url-xml'];
        this._statisticsUrlXml = this._statisticsUrlXml.replace('${language}', this._environment.getLanguage());
        this._statisticsSinceUrlXml = parameters['statistics-since-url-xml'];
        this._statisticsSinceUrlXml = this._statisticsSinceUrlXml.replace('${language}', this._environment.getLanguage());
        this._statisticsUrlCsv = parameters['statistics-url-csv'];
        this._statisticsUrlCsv = this._statisticsUrlCsv.replace('${language}', this._environment.getLanguage());
        this._statisticsSinceUrlCsv = parameters['statistics-since-url-csv'];
        this._statisticsSinceUrlCsv = this._statisticsSinceUrlCsv.replace('${language}', this._environment.getLanguage());
        this._statisticsUrlXls = parameters['statistics-url-xls'];
        this._statisticsUrlXls = this._statisticsUrlXls.replace('${language}', this._environment.getLanguage());
        this._statisticsSinceUrlXls = parameters['statistics-since-url-xls'];
        this._statisticsSinceUrlXls = this._statisticsSinceUrlXls.replace('${language}', this._environment.getLanguage());
        this._displayXlsLink = Boolean.parse(parameters['display-xls-link']);
        this._displayTitle = Boolean.parse(parameters['display-title']);
        this._statisticsDetailsXsltUrl = parameters['statistics-xslt-url'];
        this._statisticDetailsAlreadyTransformed$2 = false;
        this._statisticsSince = parameters['statistics-since'];
        this._autoShowTable = Boolean.parse(parameters['auto-show-table']);
        this._useExternalIdForImageNames = Boolean.parse(parameters['use-external-id-for-image-names']);
    },
    
    getXsltParameters: function StatisticsComponent_StatisticsComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['auto-show-table'] = this._autoShowTable;
        xsltParameters['display-xls-link'] = this._displayXlsLink;
        xsltParameters['use-external-id-for-image-names'] = (this._useExternalIdForImageNames) ? 'true' : 'false';
        return xsltParameters;
    },
    
    renderComplete: function StatisticsComponent_StatisticsComponent$renderComplete(eventArgs) {
        StatisticsComponent.StatisticsComponent.callBase(this, 'renderComplete', [ eventArgs ]);
        if (this._previouslySelectedElementId$2) {
            this._setCurrentlySelectedElement$2(this._previouslySelectedElementId$2);
            this._previouslySelectedElementId$2 = null;
        }
        var viewFilter = this._navigationService$2.getPageFilter()['view'];
        var viewFilterValue = (!viewFilter) ? '' : viewFilter.toString();
        if (this._autoShowTable || viewFilterValue === 'statistics') {
            if (this._statisticDetailsAlreadyTransformed$2) {
                this._statisticDetailsAlreadyTransformed$2 = false;
            }
            else {
                this._setupDrawStatistics$2();
            }
        }
    },
    
    get_isComponentVisible: function StatisticsComponent_StatisticsComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    explicitShowDrawStatisticsEventHandler: function StatisticsComponent_StatisticsComponent$explicitShowDrawStatisticsEventHandler(sender, eventArgs) {
        this._statisticDetailsAlreadyTransformed$2 = false;
        var element = this._getCurrentlySelectedElement$2();
        if (element) {
            this._previouslySelectedElementId$2 = element.id;
        }
        var pageFilter = this._navigationService$2.getPageFilter();
        pageFilter['view'] = 'statistics';
        this._navigationService$2.setPageFilter(pageFilter);
        this._setupDrawStatistics$2();
    },
    
    sortTableEventHandler: function StatisticsComponent_StatisticsComponent$sortTableEventHandler(sender, eventArgs) {
        var ascending = eventArgs.parameters.getAsBoolean('ascending');
        var column = eventArgs.parameters.getAsInt32('column');
        var isnumber = eventArgs.parameters.getAsBoolean('isnumber');
        var tableElement = this._tryToFindTableElement$2(eventArgs.domElement);
        if (isNullOrUndefined(tableElement)) {
            return;
        }
        var data = this._getTableData$2(tableElement.rows);
        this._doSort$2(data, column, ascending, isnumber);
        this._setTableData$2(tableElement.rows, data);
        this._setCssOfSortSpans$2(eventArgs.domElement, tableElement);
    },
    
    selectRadioButtonEventHandler: function StatisticsComponent_StatisticsComponent$selectRadioButtonEventHandler(sender, eventArgs) {
        var targetId = eventArgs.parameters.getAsString('targetid');
        var radio = document.getElementById(targetId);
        radio.checked = true;
    },
    
    _setupDrawStatistics$2: function StatisticsComponent_StatisticsComponent$_setupDrawStatistics$2() {
        var selectedItem = this._getCurrentlySelectedElement$2();
        if (!selectedItem) {
            return;
        }
        var selectedDrawName = selectedItem.getAttribute('drawname').toString();
        var contentHolder = document.getElementById(this._domElementId + '-contentHolder');
        if (!contentHolder) {
            contentHolder = document.createElement('div');
            contentHolder.id = this._domElementId + '-contentHolder';
            contentHolder.className = 'statisticsContentHolder';
            var contentContainer = document.getElementById(this._statisticsContainer);
            if (!contentContainer) {
                return;
            }
            if (contentContainer.hasChildNodes()) {
                contentContainer.insertBefore(contentHolder, contentContainer.childNodes[0]);
            }
            else {
                contentContainer.appendChild(contentHolder);
            }
        }
        var fullStatisticsUrlXml;
        var fullStatisticsUrlCsv;
        var fullStatisticsUrlXls;
        if (this._statisticsSince && this._statisticsSince.length > 0) {
            fullStatisticsUrlXml = String.format(this._statisticsSinceUrlXml, this._gameName, selectedDrawName, this._statisticsSince);
            fullStatisticsUrlCsv = String.format(this._statisticsSinceUrlCsv, this._gameName, selectedDrawName, this._statisticsSince);
            fullStatisticsUrlXls = String.format(this._statisticsSinceUrlXls, this._gameName, selectedDrawName, this._statisticsSince);
        }
        else {
            fullStatisticsUrlXml = String.format(this._statisticsUrlXml, this._gameName, selectedDrawName);
            fullStatisticsUrlCsv = String.format(this._statisticsUrlCsv, this._gameName, selectedDrawName);
            fullStatisticsUrlXls = String.format(this._statisticsUrlXls, this._gameName, selectedDrawName);
        }
        var parameters = this.getXsltParameters(null);
        parameters['draw-name'] = selectedDrawName;
        parameters['download-link'] = fullStatisticsUrlCsv;
        parameters['download-link-xls'] = fullStatisticsUrlXls;
        parameters['display-title'] = this._displayTitle.toString();
        this._statisticDetailsAlreadyTransformed$2 = true;
        this.update(document.getElementById(this._domElementId + '-contentHolder'), fullStatisticsUrlXml, this._statisticsDetailsXsltUrl, parameters);
    },
    
    _removeDrawStatistics$2: function StatisticsComponent_StatisticsComponent$_removeDrawStatistics$2() {
        var contentContainer = document.getElementById(this._statisticsContainer);
        if (!contentContainer) {
            return;
        }
        var contentHolder = document.getElementById(this._domElementId + '-contentHolder');
        if (contentHolder) {
            contentContainer.removeChild(contentHolder);
        }
    },
    
    _getCurrentlySelectedElement$2: function StatisticsComponent_StatisticsComponent$_getCurrentlySelectedElement$2() {
        var radioContainerElement = document.getElementById(this._domElementId + '-draw-selector');
        if (isNullOrUndefined(radioContainerElement)) {
            return null;
        }
        var selectedItem = null;
        var childNodes = radioContainerElement.childNodes;
        for (var i = 0; i < childNodes.length; i++) {
            var element = childNodes[i];
            if (element.nodeType !== 1) {
                continue;
            }
            if (element.tagName.toUpperCase() === 'INPUT' && element.getAttribute('type').toString() === 'radio') {
                if ((element).checked) {
                    selectedItem = element;
                }
            }
        }
        return selectedItem;
    },
    
    _setCurrentlySelectedElement$2: function StatisticsComponent_StatisticsComponent$_setCurrentlySelectedElement$2(id) {
        var element = document.getElementById(id);
        if (isNullOrUndefined(element)) {
            return;
        }
        element.checked = true;
    },
    
    _tryToFindTableElement$2: function StatisticsComponent_StatisticsComponent$_tryToFindTableElement$2(embeddedElement) {
        var tableDomElement = null;
        var iter = embeddedElement;
        while (true) {
            if (iter.nodeName.toLowerCase() === 'table') {
                tableDomElement = iter;
                break;
            }
            if (isNullOrUndefined(iter.parentNode)) {
                break;
            }
            else {
                iter = iter.parentNode;
            }
        }
        return tableDomElement;
    },
    
    _doSort$2: function StatisticsComponent_StatisticsComponent$_doSort$2(data, column, ascending, isnumber) {
        var sortMethodShouldSwap = null;
        if (ascending) {
            if (isnumber) {
                sortMethodShouldSwap = Delegate.create(this, function(first, second) {
                    return parseFloat(first) > parseFloat(second);
                });
            }
            else {
                sortMethodShouldSwap = Delegate.create(this, function(first, second) {
                    return first.compareTo(second) > 0;
                });
            }
        }
        else {
            if (isnumber) {
                sortMethodShouldSwap = Delegate.create(this, function(first, second) {
                    return parseFloat(first) < parseFloat(second);
                });
            }
            else {
                sortMethodShouldSwap = Delegate.create(this, function(first, second) {
                    return first.compareTo(second) < 0;
                });
            }
        }
        for (var i = 0; i < data.length - 1; i++) {
            for (var j = i + 1; j < data.length; j++) {
                if (sortMethodShouldSwap.invoke(data[i][column], data[j][column])) {
                    var tmp = data[i];
                    data[i] = data[j];
                    data[j] = tmp;
                }
            }
        }
    },
    
    _getTableData$2: function StatisticsComponent_StatisticsComponent$_getTableData$2(rows) {
        var colCount = (rows[0]).cells.length;
        var data = new Array(rows.length - 1);
        for (var i = 0; i < rows.length - 1; i++) {
            var rowElement = rows[i + 1];
            data[i] = new Array(rowElement.cells.length);
            for (var j = 0; j < rowElement.cells.length; j++) {
                data[i][j] = rowElement.cells[j].innerText;
            }
        }
        return data;
    },
    
    _setTableData$2: function StatisticsComponent_StatisticsComponent$_setTableData$2(rows, data) {
        for (var i = 0; i < rows.length - 1; i++) {
            var rowElement = rows[i + 1];
            for (var j = 0; j < rowElement.cells.length; j++) {
                rowElement.cells[j].innerText = data[i][j];
            }
        }
    },
    
    _setCssOfSortSpans$2: function StatisticsComponent_StatisticsComponent$_setCssOfSortSpans$2(clickedSelectSpan, tableElement) {
        if (tableElement.rows.length > 0) {
            var headerElement = tableElement.rows[0];
            for (var i = 0; i < headerElement.cells.length; i++) {
                var elements = headerElement.cells[i].childNodes;
                for (var j = 0; j < elements.length; j++) {
                    if (elements[j].nodeName.toLowerCase() === 'span') {
                        elements[j].id = 'unselected';
                    }
                }
            }
        }
        clickedSelectSpan.id = 'selected';
    }
}


StatisticsComponent.StatisticsComponent.createClass('StatisticsComponent.StatisticsComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);

// ---- 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,
    _repaintOnFilterChanged$1: true,
    _useIframe$1: false,
    _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');
        if (this._repaintOnFilterChanged$1) {
            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);
        if (Object.keyExists(parameters, 'repaint-on-filter-changed')) {
            this._repaintOnFilterChanged$1 = Boolean.parse(parameters['repaint-on-filter-changed']);
        }
        if (Object.keyExists(parameters, 'use-iframe')) {
            this._useIframe$1 = Boolean.parse(parameters['use-iframe']);
        }
    },
    
    start: function IncludeComponent_IncludeComponent$start() {
        this.repaint();
    },
    
    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);
            }
            if (this._useIframe$1) {
                var target = document.getElementById(this._domElementId);
                target.innerHTML = String.format('<iframe class=\'embeddedIFrame\' src=\'{0}\'></iframe>', contentUrl);
            }
            else {
                var ajaxUpdater = new Framework.AjaxUpdater(this._domElementId, contentUrl, null, null);
                ajaxUpdater.update();
            }
        }
        else {
            this.hide();
        }
    }
}


IncludeComponent.IncludeComponent.createClass('IncludeComponent.IncludeComponent', Framework.Component.AbstractComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCNavigationButtonComponent');

////////////////////////////////////////////////////////////////////////////////
// PCNavigationButtonComponent.PCNavigationButtonComponent

PCNavigationButtonComponent.PCNavigationButtonComponent = function PCNavigationButtonComponent_PCNavigationButtonComponent() {
    PCNavigationButtonComponent.PCNavigationButtonComponent.constructBase(this);
}
PCNavigationButtonComponent.PCNavigationButtonComponent.prototype = {
    _navigationArea$2: null,
    _navigationAction$2: null,
    _navigationService$2: null,
    
    setNavigationService: function PCNavigationButtonComponent_PCNavigationButtonComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function PCNavigationButtonComponent_PCNavigationButtonComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    init: function PCNavigationButtonComponent_PCNavigationButtonComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCNavigationButtonComponent.PCNavigationButtonComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._navigationArea$2 = parameters['navigation-area'].toString();
        this._navigationAction$2 = parameters['navigation-action'].toString();
    },
    
    getXsltParameters: function PCNavigationButtonComponent_PCNavigationButtonComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    get_isComponentVisible: function PCNavigationButtonComponent_PCNavigationButtonComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    navigationClickEventHandler: function PCNavigationButtonComponent_PCNavigationButtonComponent$navigationClickEventHandler(sender, eventArgs) {
        var currentArea = this._navigationService$2.getPageArea();
        if (!String.equals(currentArea, this._navigationArea$2, true)) {
            var pageFilter = {};
            pageFilter['action'] = this._navigationAction$2;
            this._navigationService$2.goTo(this._navigationArea$2, pageFilter);
        }
        else {
            var pageFilter = {};
            pageFilter['action'] = this._navigationAction$2;
            this._navigationService$2.setPageFilter(pageFilter);
        }
    }
}


PCNavigationButtonComponent.PCNavigationButtonComponent.createClass('PCNavigationButtonComponent.PCNavigationButtonComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCBnrComponent');

////////////////////////////////////////////////////////////////////////////////
// PCBnrComponent.RecordedMacroField

PCBnrComponent.RecordedMacroField = function PCBnrComponent_RecordedMacroField() {
}
PCBnrComponent.RecordedMacroField.prototype = {
    id: null,
    text: null,
    externalid: null,
    sourcetype: null,
    spanclass: null
}


////////////////////////////////////////////////////////////////////////////////
// PCBnrComponent.ParsedFields

PCBnrComponent.ParsedFields = function PCBnrComponent_ParsedFields(externalGameId) {
    this._externalGameId = externalGameId;
}
PCBnrComponent.ParsedFields.prototype = {
    _externalGameId: null,
    totalPrizeAmount: 0,
    jackpotAmounts: null,
    drawDateList: null,
    drawCloseTimeList: null,
    drawNumberList: null,
    resultNumbers: null,
    
    getExternalGameId: function PCBnrComponent_ParsedFields$getExternalGameId() {
        return this._externalGameId;
    }
}


////////////////////////////////////////////////////////////////////////////////
// PCBnrComponent.SourceType

PCBnrComponent.SourceType = function PCBnrComponent_SourceType(sourceType) {
    this._sourceType = sourceType;
}
PCBnrComponent.SourceType.createFromString = function PCBnrComponent_SourceType$createFromString(sourceType) {
    if (PCBnrComponent.SourceType.CURRENT.getSourceType() === sourceType) {
        return PCBnrComponent.SourceType.CURRENT;
    }
    if (PCBnrComponent.SourceType.LAST.getSourceType() === sourceType) {
        return PCBnrComponent.SourceType.LAST;
    }
    if (PCBnrComponent.SourceType.lasT_2_FOR_TOTO3.getSourceType() === sourceType) {
        return PCBnrComponent.SourceType.lasT_2_FOR_TOTO3;
    }
    if (PCBnrComponent.SourceType.lasT_FOR_BOLETO.getSourceType() === sourceType) {
        return PCBnrComponent.SourceType.lasT_FOR_BOLETO;
    }
    return PCBnrComponent.SourceType.CURRENT;
}
PCBnrComponent.SourceType.prototype = {
    _sourceType: null,
    
    getSourceType: function PCBnrComponent_SourceType$getSourceType() {
        return this._sourceType;
    }
}


////////////////////////////////////////////////////////////////////////////////
// PCBnrComponent.PCBnrComponent

PCBnrComponent.PCBnrComponent = function PCBnrComponent_PCBnrComponent() {
    this._currentTimer$2 = -1;
    this._recordedMacroTargets$2 = {};
    PCBnrComponent.PCBnrComponent.constructBase(this);
}
PCBnrComponent.PCBnrComponent.prototype = {
    _activeSheet$2: 1,
    _urlForCurrentEvent$2: null,
    _urlForLastEvent$2: null,
    _urlForLastTwoEventsForToto3$2: null,
    _urlForLastEventForBoleto$2: null,
    _bannerId$2: null,
    _imagesLocation$2: null,
    _timeoutValue$2: null,
    _navigationService$2: null,
    
    setNavigationService: function PCBnrComponent_PCBnrComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    _userService$2: null,
    
    setUserService: function PCBnrComponent_PCBnrComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function PCBnrComponent_PCBnrComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        this.update();
    },
    
    init: function PCBnrComponent_PCBnrComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCBnrComponent.PCBnrComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._imagesLocation$2 = parameters['images-location'].toString();
        this._bannerId$2 = parameters['banner-id'].toString();
        this._urlForCurrentEvent$2 = parameters['url-for-current-event'].toString();
        this._urlForLastEvent$2 = parameters['url-for-last-event'].toString();
        this._urlForLastTwoEventsForToto3$2 = parameters['url-for-last-two-events-for-toto3'].toString();
        this._urlForLastEventForBoleto$2 = parameters['url-for-last-event-for-boleto'].toString();
    },
    
    xmlContentReceived: function PCBnrComponent_PCBnrComponent$xmlContentReceived(eventArgs) {
        PCBnrComponent.PCBnrComponent.callBase(this, 'xmlContentReceived', [ eventArgs ]);
        window.setTimeout(Delegate.create(this, function() {
            this._nonBlockingXmlContentReceived$2(eventArgs);
        }), 0);
    },
    
    _nonBlockingXmlContentReceived$2: function PCBnrComponent_PCBnrComponent$_nonBlockingXmlContentReceived$2(eventArgs) {
        var document = eventArgs.get_contentXmlDocument();
        var singleBanner = document.selectSingleNode(String.format('/dgebanners/dgebanner[id=\'{0}\']', this._bannerId$2));
        this._parseThroughSingleBanner$2(singleBanner);
        var multiBanner = document.selectSingleNode(String.format('/dgebanners/dgemultibanner[id=\'{0}\']', this._bannerId$2));
        if (!isNullOrUndefined(multiBanner)) {
            var bannerList = multiBanner.selectNodes('dgebanner');
            for (var i = 0; i < bannerList.length; i++) {
                var banner = bannerList[i];
                this._parseThroughSingleBanner$2(banner);
            }
        }
    },
    
    _parseThroughSingleBanner$2: function PCBnrComponent_PCBnrComponent$_parseThroughSingleBanner$2(bannerDefinition) {
        if (isNullOrUndefined(bannerDefinition)) {
            return;
        }
        var timeoutNode = bannerDefinition.selectSingleNode('container/timeout');
        if (timeoutNode) {
            this._timeoutValue$2 = Number.parse(timeoutNode.text);
            this._setContainerSheetTimeout$2();
        }
        var gameexternalid = bannerDefinition.selectSingleNode('gameexternalid');
        if (isNullOrUndefined(gameexternalid)) {
            return;
        }
        var sourcetype = bannerDefinition.selectSingleNode('sourcetype');
        var sourcetypeAsString = ((!sourcetype) ? null : sourcetype.text);
        var sourceType = PCBnrComponent.SourceType.createFromString(sourcetypeAsString);
        var infoElements = bannerDefinition.selectNodes('infofields/info');
        for (var i = 0; i < infoElements.length; i++) {
            var infoElement = infoElements[i];
            var idObject = infoElement.selectSingleNode('@id');
            var spanClassObject = infoElement.selectSingleNode('@span-class');
            if (isNullOrUndefined(idObject)) {
                continue;
            }
            var id = idObject.text;
            var spanClass = null;
            if (!isNullOrUndefined(spanClassObject)) {
                spanClass = spanClassObject.text;
            }
            var recordedMacroTarget = new PCBnrComponent.RecordedMacroField();
            recordedMacroTarget.id = id;
            recordedMacroTarget.externalid = gameexternalid.text;
            recordedMacroTarget.sourcetype = sourceType;
            recordedMacroTarget.text = infoElement.text;
            recordedMacroTarget.spanclass = spanClass;
            this._recordedMacroTargets$2[id] = recordedMacroTarget;
        }
        this._doDownloadGameSourceDescriptor$2(gameexternalid.text, sourceType);
    },
    
    getXsltParameters: function PCBnrComponent_PCBnrComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['bannerid'] = this._bannerId$2;
        xsltParameters['images-location'] = this._imagesLocation$2;
        xsltParameters['view-value'] = this._getViewValue$2();
        xsltParameters['logged-in'] = (this._userService$2.isLoggedIn()) ? 'true' : 'false';
        return xsltParameters;
    },
    
    _getViewValue$2: function PCBnrComponent_PCBnrComponent$_getViewValue$2() {
        var pageFilter = this._navigationService$2.getPageFilter();
        var viewValue = pageFilter['view'];
        if (isNullOrUndefined(viewValue)) {
            return null;
        }
        return viewValue.toString();
    },
    
    get_isComponentVisible: function PCBnrComponent_PCBnrComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    onPageFilterChanged: function PCBnrComponent_PCBnrComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    bannerNavigationEventHandler: function PCBnrComponent_PCBnrComponent$bannerNavigationEventHandler(sender, eventArgs) {
        var index = eventArgs.parameters.getAsNumber('index');
        if (this._currentTimer$2 !== -1) {
            window.clearInterval(this._currentTimer$2);
            this._currentTimer$2 = -1;
            this._setContainerSheetTimeout$2();
        }
        this._activateSheet$2(index);
    },
    
    goToPageEventHandler: function PCBnrComponent_PCBnrComponent$goToPageEventHandler(sender, eventArgs) {
        var area = eventArgs.parameters.getAsString('pagearea');
        var action = eventArgs.parameters.getAsString('action');
        if (!String.isNullOrEmpty(area) && !String.isNullOrEmpty(action)) {
            this._navigationService$2.goTo(area, { action: action });
            return;
        }
        var javascript = eventArgs.parameters.getAsString('javascript');
        if (!String.isNullOrEmpty(javascript) && !String.isNullOrEmpty(javascript)) {
            eval(javascript);
            return;
        }
        var externallink = eventArgs.parameters.getAsString('externallink');
        if (!String.isNullOrEmpty(externallink)) {
            window.open(externallink, '_blank');
            return;
        }
    },
    
    _activateSheet$2: function PCBnrComponent_PCBnrComponent$_activateSheet$2(index) {
        this._activeSheet$2 = index;
        this._environment.safelyRemoveCssClassOnElement(this.getPrivateDomElement('button-1'), 'selected');
        this._environment.safelyRemoveCssClassOnElement(this.getPrivateDomElement('button-2'), 'selected');
        this._environment.safelyRemoveCssClassOnElement(this.getPrivateDomElement('button-3'), 'selected');
        this._environment.safelySetCssClassOnElement(this.getPrivateDomElement('button-' + index), 'selected');
        var banner1 = this.getPrivateDomElement(this._bannerId$2 + '-1');
        if (!isNullOrUndefined(banner1)) {
            banner1.style.display = 'none';
        }
        var banner2 = this.getPrivateDomElement(this._bannerId$2 + '-2');
        if (!isNullOrUndefined(banner2)) {
            banner2.style.display = 'none';
        }
        var banner3 = this.getPrivateDomElement(this._bannerId$2 + '-3');
        if (!isNullOrUndefined(banner3)) {
            banner3.style.display = 'none';
        }
        var bannerX = this.getPrivateDomElement(this._bannerId$2 + '-' + index);
        if (!isNullOrUndefined(bannerX)) {
            bannerX.style.display = 'block';
        }
    },
    
    _doDownloadGameSourceDescriptor$2: function PCBnrComponent_PCBnrComponent$_doDownloadGameSourceDescriptor$2(externalGameId, sourceType) {
        var contentRequest = new Framework.XMLHttpRequestDecorator();
        contentRequest.onreadystatechange = Delegate.create(this, function() {
            if (contentRequest.status === 200 || contentRequest.status === 304) {
                var parsedFields = new PCBnrComponent.ParsedFields(externalGameId);
                parsedFields.jackpotAmounts = this._extractJackpotAmountsFromGameDescriptor$2(contentRequest.responseXML, sourceType);
                parsedFields.totalPrizeAmount = this._extractTotalPrizeAmountFromGameDescriptor$2(parsedFields.jackpotAmounts);
                parsedFields.drawDateList = this._extractDrawDatesFromGameDescriptor$2(contentRequest.responseXML, sourceType);
                parsedFields.drawCloseTimeList = this._extractDrawCloseTimesFromGameDescriptor$2(contentRequest.responseXML, sourceType);
                parsedFields.drawNumberList = this._extractDrawNumbersFromGameDescriptor$2(contentRequest.responseXML, sourceType);
                parsedFields.resultNumbers = this._extractResultNumbersFromGameDescriptor$2(contentRequest.responseXML, sourceType, externalGameId);
                this._expandMacroExpressions$2(externalGameId, sourceType, parsedFields);
            }
        });
        var url;
        if (sourceType === PCBnrComponent.SourceType.CURRENT) {
            url = this._prepareUrlForLanguageAndGame$2(this._urlForCurrentEvent$2, externalGameId);
        }
        else if (sourceType === PCBnrComponent.SourceType.LAST) {
            url = this._prepareUrlForLanguageAndGame$2(this._urlForLastEvent$2, externalGameId);
        }
        else if (sourceType === PCBnrComponent.SourceType.lasT_2_FOR_TOTO3) {
            url = this._prepareUrlForLanguageAndGame$2(this._urlForLastTwoEventsForToto3$2, externalGameId);
        }
        else {
            url = this._prepareUrlForLanguageAndGame$2(this._urlForLastEventForBoleto$2, externalGameId);
        }
        contentRequest.open('GET', url, true);
        contentRequest.send(null);
    },
    
    _prepareUrlForLanguageAndGame$2: function PCBnrComponent_PCBnrComponent$_prepareUrlForLanguageAndGame$2(urlTemplate, gameExternalId) {
        var temp = urlTemplate.replace('${language}', this._environment.getLanguage());
        temp = temp.replace('${gameexternalid}', gameExternalId);
        return temp;
    },
    
    _extractDrawDatesFromGameDescriptor$2: function PCBnrComponent_PCBnrComponent$_extractDrawDatesFromGameDescriptor$2(responseXml, sourceType) {
        var nodeLocation = ((sourceType === PCBnrComponent.SourceType.lasT_2_FOR_TOTO3) ? '/gameevents/gameevents/gameevent/drawdate' : '/gameevent/drawdate');
        var dateNodes = responseXml.selectNodes(nodeLocation);
        var dateNodeList = [];
        if (isNullOrUndefined(dateNodes)) {
            return dateNodeList;
        }
        for (var i = 0; i < dateNodes.length; i++) {
            var dateNode = dateNodes[i];
            var dateAndTime = dateNode.text.split('T');
            var date = dateAndTime[0];
            var dateParts = date.split('-');
            var dateTime = new Date();
            dateTime.setYear(Number.parse(dateParts[0]));
            dateTime.setMonth(Number.parse(dateParts[1]) - 1);
            dateTime.setDate(Number.parse(dateParts[2]));
            dateNodeList.add(dateTime);
        }
        return dateNodeList;
    },
    
    _extractDrawCloseTimesFromGameDescriptor$2: function PCBnrComponent_PCBnrComponent$_extractDrawCloseTimesFromGameDescriptor$2(responseXml, sourceType) {
        var nodeLocation = ((sourceType === PCBnrComponent.SourceType.lasT_2_FOR_TOTO3) ? '/gameevents/gameevents/gameevent/drawclosetime' : '/gameevent/drawclosetime');
        var dateNodes = responseXml.selectNodes(nodeLocation);
        var dateNodeList = [];
        if (isNullOrUndefined(dateNodes)) {
            return dateNodeList;
        }
        for (var i = 0; i < dateNodes.length; i++) {
            var dateNode = dateNodes[i];
            var dateAndTime = dateNode.text.split('T');
            var date = dateAndTime[0];
            var dateParts = date.split('-');
            var dateTime = new Date();
            dateTime.setYear(Number.parse(dateParts[0]));
            dateTime.setMonth(Number.parse(dateParts[1]) - 1);
            dateTime.setDate(Number.parse(dateParts[2]));
            var time = dateAndTime[1];
            var timeParts = time.split(':');
            dateTime.setHours(Number.parse(timeParts[0]));
            dateTime.setMinutes(Number.parse(timeParts[1]));
            dateTime.setSeconds(Number.parse(timeParts[2]));
            dateNodeList.add(dateTime);
        }
        return dateNodeList;
    },
    
    _extractDrawNumbersFromGameDescriptor$2: function PCBnrComponent_PCBnrComponent$_extractDrawNumbersFromGameDescriptor$2(responseXml, sourceType) {
        var nodeLocation = ((sourceType === PCBnrComponent.SourceType.lasT_2_FOR_TOTO3) ? '/gameevents/gameevents/gameevent/drawnumber' : '/gameevent/drawnumber');
        var drawNumberNodes = responseXml.selectNodes(nodeLocation);
        var drawNumberList = [];
        if (isNullOrUndefined(drawNumberNodes)) {
            return drawNumberList;
        }
        for (var i = 0; i < drawNumberNodes.length; i++) {
            var drawNumberNode = drawNumberNodes[i];
            drawNumberList.add(drawNumberNode.text);
        }
        return drawNumberList;
    },
    
    _extractJackpotAmountsFromGameDescriptor$2: function PCBnrComponent_PCBnrComponent$_extractJackpotAmountsFromGameDescriptor$2(responseXml, sourceType) {
        var eventNodeLocation = ((sourceType === PCBnrComponent.SourceType.lasT_2_FOR_TOTO3) ? '/gameevents/gameevents/gameevent' : '/gameevent');
        var eventNode = responseXml.selectSingleNode(eventNodeLocation);
        var drawNodes = eventNode.selectNodes('gamedraws/gamedraw');
        var resultJackpots = [];
        for (var i = 0; i < drawNodes.length; i++) {
            var drawNode = drawNodes[i];
            resultJackpots.add(this._extractJackpotAmountForGameDrawNode$2(drawNode));
        }
        return resultJackpots;
    },
    
    _extractJackpotAmountForGameDrawNode$2: function PCBnrComponent_PCBnrComponent$_extractJackpotAmountForGameDrawNode$2(drawNode) {
        var valueNode = drawNode.selectSingleNode('guaranteedjackpot');
        if (isNullOrUndefined(valueNode) || String.isNullOrEmpty(valueNode.text)) {
            valueNode = drawNode.selectSingleNode('estimatedjackpot');
        }
        if (isNullOrUndefined(valueNode) || String.isNullOrEmpty(valueNode.text)) {
            return 0;
        }
        return Number.parse(valueNode.text);
    },
    
    _extractTotalPrizeAmountFromGameDescriptor$2: function PCBnrComponent_PCBnrComponent$_extractTotalPrizeAmountFromGameDescriptor$2(jackpots) {
        var totalAmount = 0;
        for (var i = 0; i < jackpots.length; i++) {
            var jackpot = jackpots[i];
            totalAmount = totalAmount + jackpot;
        }
        return totalAmount;
    },
    
    _extractResultNumbersFromGameDescriptor$2: function PCBnrComponent_PCBnrComponent$_extractResultNumbersFromGameDescriptor$2(responseXml, sourceType, externalId) {
        var url;
        if (sourceType === PCBnrComponent.SourceType.LAST || sourceType === PCBnrComponent.SourceType.lasT_FOR_BOLETO) {
            url = '/gameevent/gamedraws/gamedraw';
        }
        else if (sourceType === PCBnrComponent.SourceType.lasT_2_FOR_TOTO3) {
            url = '/gameevents/gameevents/gameevent/gamedraws/gamedraw';
        }
        else {
            return {};
        }
        var drawNodes = responseXml.selectNodes(url);
        if (isNullOrUndefined(drawNodes)) {
            return null;
        }
        var resultNumbers = {};
        for (var i = 0; i < drawNodes.length; i++) {
            var drawNode = drawNodes[i];
            var mainValues = drawNode.selectSingleNode('resultsets/resultset/mainvalues');
            var bonusValues = drawNode.selectSingleNode('resultsets/resultset/bonusvalues');
            if (!isNullOrUndefined(mainValues)) {
                var numbers = mainValues.text.split(',');
                var builder = new StringBuilder();
                for (var j = 0; j < numbers.length; j++) {
                    builder.append(String.format('<span class=\'set-{0}\'>{1}</span>', i + 1, numbers[j]));
                }
                resultNumbers[String.format('%NUMBERS_DRAW_{0}%', i + 1)] = builder.toString();
            }
            if (!isNullOrUndefined(bonusValues)) {
                var numbers = bonusValues.text.split(',');
                var builder = new StringBuilder();
                for (var j = 0; j < numbers.length; j++) {
                    builder.append(String.format('<span class=\'set-{0}-bonus\'>{1}</span>', i + 1, numbers[j]));
                }
                resultNumbers[String.format('%NUMBERS_DRAW_{0}_BONUS%', i + 1)] = builder.toString();
            }
        }
        if (externalId === 'Boleto') {
            this._resultNumbersPostProcessingForBoleto$2(resultNumbers, responseXml);
        }
        return resultNumbers;
    },
    
    _resultNumbersPostProcessingForBoleto$2: function PCBnrComponent_PCBnrComponent$_resultNumbersPostProcessingForBoleto$2(resultNumbers, responseXml) {
        var mainValues = responseXml.selectSingleNode('/gameevent/maindraw/resultsets/resultset/mainvalues');
        if (isNullOrUndefined(mainValues)) {
            return;
        }
        resultNumbers['%NUMBERS_DRAW_1%'] = mainValues.text;
        if (isNullOrUndefined(mainValues)) {
            return;
        }
        var firstTermination = mainValues.text.substring(4, 5);
        var secondTermination = '';
        var thirdTermination = '';
        var allDivisionNames = responseXml.selectNodes('/gameevent/gamedraws/gamedraw/resultdivisions/resultdivision/name');
        for (var i = 0; i < allDivisionNames.length; i++) {
            var divisionName = allDivisionNames[i];
            if (divisionName.text.indexOf('2ra') !== -1) {
                secondTermination = divisionName.selectSingleNode('../../../resultsets/resultset/mainvalues').text.substring(4, 5);
            }
            else if (divisionName.text.indexOf('3ra') !== -1) {
                thirdTermination = divisionName.selectSingleNode('../../../resultsets/resultset/mainvalues').text.substring(4, 5);
            }
        }
        resultNumbers['%NUMBERS_DRAW_BOLETO_TERMINATIONS%'] = String.format('{0} {1} {2}', firstTermination, secondTermination, thirdTermination);
    },
    
    _expandMacroExpressions$2: function PCBnrComponent_PCBnrComponent$_expandMacroExpressions$2(externalGameId, sourceType, parsedFields) {
        var $dict1 = this._recordedMacroTargets$2;
        for (var $key2 in $dict1) {
            var recordedElement = { key: $key2, value: $dict1[$key2] };
            var macroField = recordedElement.value;
            if (macroField.externalid !== externalGameId || macroField.sourcetype !== sourceType) {
                continue;
            }
            macroField.text = this._expandSingleMacroExpansion$2(externalGameId, parsedFields, macroField.text);
            this._recordedMacroTargets$2[recordedElement.key] = macroField;
            if (!String.isNullOrEmpty(macroField.text) && macroField.text.indexOf('%') === -1) {
                this._fillUpRetry$2(recordedElement.key, macroField, 1);
            }
        }
    },
    
    _fillUpRetry$2: function PCBnrComponent_PCBnrComponent$_fillUpRetry$2(infoId, macroField, retryCount) {
        var value = macroField.text;
        var spanClass = macroField.spanclass;
        var target = this.getPrivateDomElement(this._bannerId$2 + '-' + infoId);
        if (isNullOrUndefined(target) && retryCount < 50) {
            window.setTimeout(Delegate.create(this, function() {
                this._fillUpRetry$2(infoId, macroField, retryCount + 1);
            }), 100 * retryCount);
            return;
        }
        if (isNullOrUndefined(target)) {
            return;
        }
        if (isNullOrUndefined(spanClass)) {
            target.innerHTML = value;
        }
        else {
            var asTemplate = new StringBuilder();
            for (var i = 0; i < value.length; i++) {
                var digit = value.charAt(i);
                asTemplate.append(String.format('<span class=\'{0}{1}\'></span>', spanClass, digit));
            }
            target.innerHTML = asTemplate.toString();
        }
    },
    
    _expandSingleMacroExpansion$2: function PCBnrComponent_PCBnrComponent$_expandSingleMacroExpansion$2(externalGameId, parsedFields, initialValue) {
        var workingTemplate = initialValue.replace('%TOTAL_PRIZE_AMOUNT_IN_MILLIONS%', (Math.truncate(parsedFields.totalPrizeAmount / 1000000)).toString());
        workingTemplate = workingTemplate.replace('%TOTAL_PRIZE_AMOUNT%', parsedFields.totalPrizeAmount.toLocaleString());
        if (!isNullOrUndefined(parsedFields.jackpotAmounts)) {
            for (var i = 0; i < parsedFields.jackpotAmounts.length; i++) {
                var jackpotAmount = parsedFields.jackpotAmounts[i];
                workingTemplate = workingTemplate.replace(String.format('%JACKPOT_AMOUNT_{0}%', i + 1), jackpotAmount.toLocaleString());
                workingTemplate = workingTemplate.replace(String.format('%JACKPOT_AMOUNT_{0}_IN_MILLIONS%', i + 1), (Math.truncate(jackpotAmount / 1000000)).toString());
            }
        }
        if (!isNullOrUndefined(parsedFields.drawNumberList[0])) {
            var firstDrawDate = parsedFields.drawDateList[0];
            workingTemplate = workingTemplate.replace('%DRAW_DATE_LONG%', firstDrawDate.format('dddd, MMMM d, yyyy', true));
            workingTemplate = workingTemplate.replace('%DRAW_DATE%', firstDrawDate.format('dd/MM/yyyy', true));
            var firstDrawCloseTime = parsedFields.drawCloseTimeList[0];
            workingTemplate = workingTemplate.replace('%DRAW_CLOSE_TIME%', firstDrawCloseTime.format('HH:mm', true));
            if ('Toto3' === externalGameId) {
                if (!isNullOrUndefined(parsedFields.drawNumberList[1])) {
                    var secondDrawDate = parsedFields.drawDateList[1];
                    workingTemplate = workingTemplate.replace('%DRAW_DATE_1%', secondDrawDate.format('dd/MM/yyyy', true));
                    var secondDrawCloseTime = parsedFields.drawCloseTimeList[1];
                    workingTemplate = workingTemplate.replace('%DRAW_CLOSE_TIME_1%', secondDrawCloseTime.format('HH:mm', true));
                }
            }
        }
        if (!isNullOrUndefined(parsedFields.drawNumberList[0])) {
            workingTemplate = workingTemplate.replace('%DRAW_NUMBER%', parsedFields.drawNumberList[0].toString());
            if (!isNullOrUndefined(parsedFields.drawNumberList[1])) {
                workingTemplate = workingTemplate.replace('%DRAW_NUMBER_1%', parsedFields.drawNumberList[1].toString());
            }
        }
        var $dict1 = parsedFields.resultNumbers;
        for (var $key2 in $dict1) {
            var resultNumbers = { key: $key2, value: $dict1[$key2] };
            workingTemplate = workingTemplate.replace(resultNumbers.key, resultNumbers.value.toString());
        }
        return workingTemplate;
    },
    
    _setContainerSheetTimeout$2: function PCBnrComponent_PCBnrComponent$_setContainerSheetTimeout$2() {
        this._currentTimer$2 = window.setInterval(Delegate.create(this, this._toggleNextSheet$2), this._timeoutValue$2);
    },
    
    _toggleNextSheet$2: function PCBnrComponent_PCBnrComponent$_toggleNextSheet$2() {
        this._activateSheet$2(this._activeSheet$2 % 3 + 1);
    }
}


PCBnrComponent.RecordedMacroField.createClass('PCBnrComponent.RecordedMacroField');
PCBnrComponent.ParsedFields.createClass('PCBnrComponent.ParsedFields');
PCBnrComponent.SourceType.createClass('PCBnrComponent.SourceType');
PCBnrComponent.PCBnrComponent.createClass('PCBnrComponent.PCBnrComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, UserService.IUserChangedListener);
PCBnrComponent.SourceType.CURRENT = new PCBnrComponent.SourceType('CURRENT');
PCBnrComponent.SourceType.LAST = new PCBnrComponent.SourceType('LAST');
PCBnrComponent.SourceType.lasT_2_FOR_TOTO3 = new PCBnrComponent.SourceType('LAST_2_FOR_TOTO3');
PCBnrComponent.SourceType.lasT_FOR_BOLETO = new PCBnrComponent.SourceType('LAST_FOR_BOLETO');

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('LotoComponent');

////////////////////////////////////////////////////////////////////////////////
// LotoComponent.LotoComponent

LotoComponent.LotoComponent = function LotoComponent_LotoComponent() {
    LotoComponent.LotoComponent.constructBase(this);
}
LotoComponent.LotoComponent.prototype = {
    _navigationService: null,
    _accountService: null,
    _userService: null,
    _lotteryBoardService: null,
    _messages: null,
    _wagerController: null,
    _boardStackController: null,
    _wager: null,
    _board: null,
    _priceList: null,
    _pickSystems: null,
    _disableAlert$2: false,
    
    setNavigationService: function LotoComponent_LotoComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService = navigationService;
    },
    
    setLotteryBoardService: function LotoComponent_LotoComponent$setLotteryBoardService(lotteryBoardService) {
        this._log.debug('LotteryBoardService');
        this._lotteryBoardService = lotteryBoardService;
    },
    
    setAccountService: function LotoComponent_LotoComponent$setAccountService(accountService) {
        this._log.debug('AccountBoardService');
        this._accountService = accountService;
    },
    
    setUserService: function LotoComponent_LotoComponent$setUserService(userService) {
        this._log.debug('UserService');
        this._userService = userService;
    },
    
    onPageFilterChanged: function LotoComponent_LotoComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    onBoardStackContentChanged: function LotoComponent_LotoComponent$onBoardStackContentChanged(eventObject) {
        this._log.debug('OnBoardContentChanged');
        if (eventObject.allChanged || !isNullOrUndefined(eventObject.pickSystemID)) {
            this._updatePickSystem$2();
        }
        if (eventObject.allChanged || eventObject.drawsChanged) {
            this._updateAllDrawPrices$2(eventObject.boardIndex);
        }
        if (eventObject.allChanged || eventObject.selectedNumbersChanged) {
            if (isNullOrUndefined(eventObject.fieldIndex)) {
                this._updateSet$2();
            }
            else {
                this._updatePickNumber$2(eventObject.oldNumberProxy, eventObject.newNumberProxy);
                if (eventObject.fieldIndex !== -1) {
                    this._updateSelectedNumber$2(eventObject.fieldIndex);
                }
            }
        }
    },
    
    onLotteryPropertyChanged: function LotoComponent_LotoComponent$onLotteryPropertyChanged(eventObject) {
        if (!(Type.canCast(eventObject.source, LotteryBoardService.WagerController))) {
            return;
        }
        if (eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.alL_PROPERTIES_CHANGED || eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.editioN_COUNT_CHANGED) {
            this._updateDrawCount$2();
        }
        if (eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.alL_PROPERTIES_CHANGED || eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.pricE_CHANGED) {
            this._updatePrice$2();
        }
        if (eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.alL_PROPERTIES_CHANGED || eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.vieW_STATE_CHANGED) {
            this._updateViewState$2();
        }
        if (eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.alL_PROPERTIES_CHANGED || eventObject.propertyName === LotteryBoardService.LotteryPropertyChangedEvent.wageR_RESULT_ID) {
            this._updateWagerResultReference$2();
        }
    },
    
    onActionPerformed: function LotoComponent_LotoComponent$onActionPerformed(eventObject) {
    },
    
    onLotteryMessage: function LotoComponent_LotoComponent$onLotteryMessage(eventObject) {
        if (this._disableAlert$2) {
            this._disableAlert$2 = false;
            return;
        }
        if (eventObject.confirmationRequired) {
            var confirmed = this.confirm(eventObject.messageVO.messageText);
            if (confirmed) {
                eventObject.confirmCallback.invoke(null);
            }
            else {
                eventObject.rejectCallback.invoke(null);
            }
        }
        else {
            this.alertOpen(eventObject.messageVO);
        }
    },
    
    drawCountEventHandler: function LotoComponent_LotoComponent$drawCountEventHandler(sender, eventArgs) {
        var selectDrawCount = this.getPrivateDomElement('selectDrawCount');
        this._wagerController.setEditionCount(selectDrawCount.value);
    },
    
    pickSystemEventHandler: function LotoComponent_LotoComponent$pickSystemEventHandler(sender, eventArgs) {
        var selectPS = this.getPrivateDomElement('pickSystem');
        this._boardStackController.setPickSystem(0, selectPS.value);
    },
    
    drawChangeEventHandler: function LotoComponent_LotoComponent$drawChangeEventHandler(sender, eventArgs) {
        var drawID = eventArgs.parameters.getAsString('drawid');
        var isSelected = !isNullOrUndefined(this._board.getBoardRowPrice(drawID));
        if (this._board.isBoardRowEnabled(drawID)) {
            this._boardStackController.setDefaultDrawPrice(0, drawID, !isSelected);
        }
    },
    
    clearEventHandler: function LotoComponent_LotoComponent$clearEventHandler(sender, eventArgs) {
        this._boardStackController.clearBoard(0);
    },
    
    pickNumberEventHandler: function LotoComponent_LotoComponent$pickNumberEventHandler(sender, eventArgs) {
        var val = eventArgs.parameters.getAsNumber('numbervalue');
        this._boardStackController.injectNumber(val, 0, 0, Delegate.create(this, function(result) {
        }));
    },
    
    quickPickEventHandler: function LotoComponent_LotoComponent$quickPickEventHandler(sender, eventArgs) {
        var count = 3 + Math.random() * 4;
        this._boardStackController.quickPick(0, count);
    },
    
    playEventHandler: function LotoComponent_LotoComponent$playEventHandler(sender, eventArgs) {
        this._wagerController.placeWager();
    },
    
    _confirmationDisabled$2: false,
    
    confirmEventHandler: function LotoComponent_LotoComponent$confirmEventHandler(sender, eventArgs) {
        if (this._confirmationDisabled$2) {
            return;
        }
        this._confirmationDisabled$2 = true;
        this._wagerController.confirmWager(Delegate.create(this, function(res) {
            this._confirmationDisabled$2 = false;
        }), Delegate.create(this, function(e) {
            this._confirmationDisabled$2 = false;
            var dgen = (isNullOrUndefined(e)) ? null : e.userData;
            if (!isNullOrUndefined(dgen) && !isNullOrUndefined(dgen.get_notificationEvent())) {
                this._disableAlert$2 = true;
            }
        }));
    },
    
    cancelConfirmWagerEventHandler: function LotoComponent_LotoComponent$cancelConfirmWagerEventHandler(sender, eventArgs) {
        this._wagerController.cancelWager();
    },
    
    addToFavoritesEventHandler: function LotoComponent_LotoComponent$addToFavoritesEventHandler() {
        this._wagerController.addToFavorites(Delegate.create(this, function() {
        }), Delegate.create(this, function() {
        }));
    },
    
    replayEventHandler: function LotoComponent_LotoComponent$replayEventHandler(sender, eventArgs) {
        this._wagerController.replayWager();
    },
    
    closeAlertEventHandler: function LotoComponent_LotoComponent$closeAlertEventHandler(sender, eventArgs) {
        this.alertClose();
    },
    
    get_isComponentVisible: function LotoComponent_LotoComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService.getAction());
    },
    
    getXsltParameters: function LotoComponent_LotoComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['auto-change-system'] = 'updown';
        return xsltParameters;
    },
    
    renderComplete: function LotoComponent_LotoComponent$renderComplete(eventArgs) {
        LotoComponent.LotoComponent.callBase(this, 'renderComplete', [ eventArgs ]);
        this._startService$2();
    },
    
    preRender: function LotoComponent_LotoComponent$preRender(eventArgs) {
        LotoComponent.LotoComponent.callBase(this, 'preRender', [ eventArgs ]);
        this._createModel$2(eventArgs.get_inMemoryContent().ownerDocument);
    },
    
    _createModel$2: function LotoComponent_LotoComponent$_createModel$2(owner) {
        this._messages = this._deserializeMessages$2(owner);
        var dgConfig = this._deserializeDGConfiguration$2(owner);
        var instanceContext = new LotteryBoardService.InstanceContext();
        instanceContext.instanceID = this._navigationService.getPageArea() + '-' + this._componentInstanceName + '-wager';
        instanceContext.dgConfigVO = dgConfig;
        instanceContext.messages = this._messages;
        instanceContext.lotteryBoardService = this._lotteryBoardService;
        instanceContext.displayAddons = false;
        var factory = new LotteryBoardService.LotteryControllerFactory(instanceContext);
        this._wagerController = factory.create();
        this._wager = this._wagerController.get_wager();
        this._boardStackController = this._wagerController.get_boardStackControllers()[0];
        this._board = this._boardStackController.get_boardStack().getBoard(0);
        this._priceList = this._boardStackController.get_gameConfig().dgGameConfigVO.draws[0].priceList;
        this._pickSystems = this._boardStackController.get_gameConfig().dgGameConfigVO.pickSystems;
    },
    
    _startService$2: function LotoComponent_LotoComponent$_startService$2() {
        this._boardStackController.get_eventDispatcher().registerMessageListener(this);
        this._wagerController.get_eventDispatcher().registerPropertyChangedListener(this);
        this._wagerController.get_eventDispatcher().registerBoardContentChangedListener(this);
        this._wagerController.get_eventDispatcher().registerActionListener(this);
        this._wagerController.get_eventDispatcher().registerMessageListener(this);
        if (!this._wagerController.get_externalState()) {
            this._boardStackController.setDefaultDrawPrice(0, '1', true);
            this._boardStackController.setDefaultDrawPrice(0, '2', true);
        }
        var $enum1 = this._wagerController.get_boardStackControllers().getEnumerator();
        while ($enum1.moveNext()) {
            var boardController = $enum1.get_current();
            boardController.start();
        }
        this._wagerController.start();
    },
    
    _updateSet$2: function LotoComponent_LotoComponent$_updateSet$2() {
        var set = this._board.getSet(0);
        for (var i = 0; i < set.max; i++) {
            if (set.getIndexOf(i + 1) !== -1) {
                var numberProxy = set.getNumber(set.getIndexOf(i + 1));
                this._updatePickNumber$2(null, numberProxy);
            }
            else {
                this._clearPickNumber$2(i + 1);
            }
        }
        for (var i = 0; i < set.get_numberCount(); i++) {
            this._updateSelectedNumber$2(i);
        }
    },
    
    _clearPickNumber$2: function LotoComponent_LotoComponent$_clearPickNumber$2(index) {
        var set = this._board.getSet(0);
        var numberId = this._domElementId + String.format('.LotteryNumber-{0}', index);
        var numberElement = this._environment.getDomElement(numberId);
        if (!set.get_active()) {
            numberElement.className = 'picknumber-disabled';
        }
        else {
            if (this._board.isServerQuickPick() && this._board.hasQPFields()) {
                numberElement.className = 'picknumber-qp';
            }
            else {
                numberElement.className = 'picknumber-regular';
            }
        }
        this._environment.safelySetCssClassOnElement(numberElement, 'unselectable');
    },
    
    _updatePickNumber$2: function LotoComponent_LotoComponent$_updatePickNumber$2(oldNumberProxy, newNumberProxy) {
        var indexOfNumber = ((!oldNumberProxy || oldNumberProxy.get_value() === -1) ? newNumberProxy.get_value() : oldNumberProxy.get_value());
        var entry = ((!oldNumberProxy || oldNumberProxy.get_value() === -1) ? newNumberProxy.get_entry() : oldNumberProxy.get_entry());
        var isSetting = (!oldNumberProxy || oldNumberProxy.get_value() === -1);
        var numberId = this._domElementId + String.format('.LotteryNumber-{0}', indexOfNumber);
        var numberElement = this._environment.getDomElement(numberId);
        numberElement.firstChild.innerHTML = entry;
        if (!this._board.getSet(0).get_active()) {
            numberElement.className = 'picknumber-disabled';
        }
        else if (isSetting) {
            if (newNumberProxy.isClientQP()) {
                numberElement.className = 'picknumber-qp';
            }
            else if (newNumberProxy.isRegular()) {
                numberElement.className = 'picknumber-selected';
            }
        }
        else {
            if (this._board.isServerQuickPick() && this._board.hasQPFields()) {
                numberElement.className = 'picknumber-qp';
            }
            else {
                numberElement.className = 'picknumber-regular';
            }
        }
        this._environment.safelySetCssClassOnElement(numberElement, 'unselectable');
    },
    
    _updateSelectedNumber$2: function LotoComponent_LotoComponent$_updateSelectedNumber$2(fieldIndex) {
        var set = this._board.getSet(0);
        var number = set.getNumber(fieldIndex);
        if (isNullOrUndefined(number)) {
            return;
        }
        var entry = number.get_entry();
        var visible = !number.isEmpty() && set.get_active();
        var confirmationNumberElement = this.getPrivateDomElement(String.format('LotteryNumberConfirmation-{0}', fieldIndex + 1));
        confirmationNumberElement.innerHTML = entry;
        this.setDisplayed(confirmationNumberElement, visible);
        var resultsNumberElement = this.getPrivateDomElement(String.format('LotteryNumberResults-{0}', fieldIndex + 1));
        resultsNumberElement.innerHTML = entry;
        this.setDisplayed(resultsNumberElement, visible);
    },
    
    _updatePickSystem$2: function LotoComponent_LotoComponent$_updatePickSystem$2() {
        this._clearSelectedNumbers$2();
        var selectDrawCount = this.getPrivateDomElement('pickSystem');
        selectDrawCount.value = this._board.get_pickSystem().id;
        var pickSystemConfirm = this.getPrivateDomElement('pickSystemConfirm');
        pickSystemConfirm.innerHTML = this._board.get_pickSystem().name;
        var pickSystemResults = this.getPrivateDomElement('pickSystemResults');
        pickSystemResults.innerHTML = this._board.get_pickSystem().name;
    },
    
    _clearSelectedNumbers$2: function LotoComponent_LotoComponent$_clearSelectedNumbers$2() {
        for (var i = 0; i < 10; i++) {
            var visible = i < this._board.getSet(0).get_numberCount();
            this.getPrivateDomElement(String.format('LotteryNumberConfirmation-{0}', i + 1)).innerHTML = '';
            var confirmationNumberElement = this.getPrivateDomElement(String.format('LotteryCellConfirmation-{0}', i + 1));
            this.setDisplayed(confirmationNumberElement, visible);
            this.getPrivateDomElement(String.format('LotteryNumberResults-{0}', i + 1)).innerHTML = '';
            var resultsNumberElement = this.getPrivateDomElement(String.format('LotteryCellResults-{0}', i + 1));
            this.setDisplayed(resultsNumberElement, visible);
        }
    },
    
    _updateDrawCount$2: function LotoComponent_LotoComponent$_updateDrawCount$2() {
        var val = (this._wager.get_editionCount()) ? this._wager.get_editionCount().toString() : null;
        var selectDrawCount = this.getPrivateDomElement('selectDrawCount');
        selectDrawCount.value = val;
        var drawCountConfirmElement = this.getPrivateDomElement('drawCountConfirm');
        drawCountConfirmElement.innerHTML = val;
        var drawCountResultsElement = this.getPrivateDomElement('drawCountResults');
        drawCountResultsElement.innerHTML = val;
    },
    
    _updateAllDrawPrices$2: function LotoComponent_LotoComponent$_updateAllDrawPrices$2(boardIndex) {
        for (var d = 0; d < this._board.get_availableDraws().length; d++) {
            this._updateDrawPrice$2(this._board.get_availableDraws()[d].id);
        }
    },
    
    _updateDrawPrice$2: function LotoComponent_LotoComponent$_updateDrawPrice$2(drawID) {
        var checkDraw = this.getPrivateDomElement('drawChoice-' + drawID);
        var price = this._board.getBoardRowPrice(drawID);
        var enabled = this._board.isBoardRowEnabled(drawID);
        if (!isNullOrUndefined(checkDraw)) {
            var isChecked = !isNullOrUndefined(price);
            if (isChecked) {
                this._environment.safelySetCssClassOnElement(checkDraw, 'draw-selected');
            }
            else {
                this._environment.safelyRemoveCssClassOnElement(checkDraw, 'draw-selected');
            }
            if (enabled) {
                this._environment.safelyRemoveCssClassOnElement(checkDraw, 'draw-disabled');
            }
            else {
                this._environment.safelySetCssClassOnElement(checkDraw, 'draw-disabled');
            }
        }
    },
    
    _updatePrice$2: function LotoComponent_LotoComponent$_updatePrice$2() {
        var totalPrice = this._wager.get_totalPrice();
        var priceToShow = '0';
        if (!isNullOrUndefined(totalPrice)) {
            priceToShow = totalPrice.format('N', true);
        }
        var priceElement = this.getPrivateDomElement('price');
        var priceConfirmElement = this.getPrivateDomElement('priceConfirm');
        var priceResultsElement = this.getPrivateDomElement('priceResults');
        priceElement.innerHTML = priceToShow;
        priceConfirmElement.innerHTML = priceToShow;
        priceResultsElement.innerHTML = priceToShow;
    },
    
    _updateViewState$2: function LotoComponent_LotoComponent$_updateViewState$2() {
        if (this._wager.get_viewState() === LotteryBoardService.ViewState.INPUT) {
            this.viewPlayShow();
            this.viewConfirmHide();
            this.viewResultsClose();
            this.placementInProgressClose();
        }
        else if (this._wager.get_viewState() === LotteryBoardService.ViewState.CONFIRMATION) {
            this.viewPlayHide();
            this.viewConfirmShow();
            this.viewResultsClose();
            this.placementInProgressClose();
        }
        else if (this._wager.get_viewState() === LotteryBoardService.ViewState.PLACEMENT) {
            this.placementInProgressOpen();
        }
        else if (this._wager.get_viewState() === LotteryBoardService.ViewState.RESULT) {
            this.viewPlayHide();
            this.placementInProgressClose();
            this.viewConfirmHide();
            this.alertClose();
            this.viewResultsShow();
        }
    },
    
    _updateWagerResultReference$2: function LotoComponent_LotoComponent$_updateWagerResultReference$2() {
        var wagerID = '';
        if (this._wager.get_wagerResult() && this._wager.get_wagerResult().WagerReference) {
            wagerID = this._wager.get_wagerResult().WagerReference;
        }
        var wagerIdElement = this.getPrivateDomElement('wagerResultsReference');
        wagerIdElement.innerHTML = wagerID;
        this._showWagerResultDetailsInElement$2('wagerResultsEvents', this._wager.get_wagerResult());
    },
    
    _showWagerResultDetailsInElement$2: function LotoComponent_LotoComponent$_showWagerResultDetailsInElement$2(elementName, wagerResult) {
        var builder = new StringBuilder();
        if (wagerResult && wagerResult.BoardStacks) {
            var $enum1 = wagerResult.BoardStacks.getEnumerator();
            while ($enum1.moveNext()) {
                var stack = $enum1.get_current();
                var first = true;
                var $enum2 = stack.Events.getEnumerator();
                while ($enum2.moveNext()) {
                    var eventInfo = $enum2.get_current();
                    var drawNumber = eventInfo.DrawNumber;
                    if (first) {
                        first = false;
                    }
                    else {
                        builder.append('<br />');
                    }
                    var gameEvent = this._wager.getEventData(drawNumber);
                    if (gameEvent) {
                        builder.append(drawNumber);
                        builder.append(' - ');
                        builder.append(gameEvent.name);
                        builder.append(', <br>');
                        builder.append(gameEvent.date);
                        builder.append(' ');
                    }
                    var builderDrawNames = new StringBuilder();
                    var countOfDrawNamesWritten = 0;
                    builderDrawNames.append(' (');
                    var first2 = true;
                    var $enum3 = stack.Boards.getEnumerator();
                    while ($enum3.moveNext()) {
                        var boardInfo = $enum3.get_current();
                        if (!boardInfo.Rows) {
                            continue;
                        }
                        if (first2) {
                            first2 = false;
                        }
                        else {
                            builderDrawNames.append('; ');
                        }
                        var first3 = true;
                        var $enum4 = boardInfo.Rows.getEnumerator();
                        while ($enum4.moveNext()) {
                            var rowInfo = $enum4.get_current();
                            if (rowInfo.PickSystemId) {
                                var pickSystemName = rowInfo.PickSystemName;
                                if (first3) {
                                    first3 = false;
                                }
                                else {
                                    builderDrawNames.append(', ');
                                }
                                if (pickSystemName) {
                                    builderDrawNames.append(pickSystemName);
                                    builderDrawNames.append(':');
                                    builderDrawNames.append(rowInfo.Stake);
                                }
                            }
                            else {
                                var drawId = rowInfo.DrawId;
                                if (first3) {
                                    first3 = false;
                                }
                                else {
                                    builderDrawNames.append(', ');
                                }
                                var drawName = '?';
                                var drawData = this._wager.getDrawData(drawId);
                                if (drawData) {
                                    drawName = drawData.name;
                                }
                                builderDrawNames.append(drawName);
                            }
                            countOfDrawNamesWritten++;
                        }
                    }
                    builderDrawNames.append(')');
                    if (countOfDrawNamesWritten > 1) {
                        builder.append(builderDrawNames.toString());
                    }
                }
            }
        }
        this.updatePrivateDomElement(elementName, builder.toString());
    },
    
    _deserializeDGConfiguration$2: function LotoComponent_LotoComponent$_deserializeDGConfiguration$2(owner) {
        var oElement = owner.getElementById(this._domElementId + '-data');
        var initData = null;
        try {
            initData = Framework.JsonUtil.deserialize(oElement.innerHTML);
        }
        catch (e) {
            throw new Error('Error deserializing JSON DGConfiguration data: ' + e.message);
        }
        var dgConfig = initData;
        return dgConfig;
    },
    
    _deserializeMessages$2: function LotoComponent_LotoComponent$_deserializeMessages$2(owner) {
        var msgsElement = owner.getElementById(this._domElementId + '-messages');
        var initData = null;
        try {
            initData = Framework.JsonUtil.deserialize(msgsElement.innerHTML);
        }
        catch (e) {
            throw new Error('Error deserializing JSON Messages data: ' + e.message);
        }
        return initData;
    },
    
    alertOpen: function LotoComponent_LotoComponent$alertOpen(messageVO) {
        var infoTitle = this.getPrivateDomElement('alertTitle');
        infoTitle.innerHTML = messageVO.messageTitle;
        var infoText = this.getPrivateDomElement('alertMessage');
        infoText.innerHTML = messageVO.messageText;
        var alertElement = this.getPrivateDomElement('alert');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-block', 'display-none');
    },
    
    alertClose: function LotoComponent_LotoComponent$alertClose() {
        var alertElement = this.getPrivateDomElement('alert');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-none', 'display-block');
    },
    
    viewPlayShow: function LotoComponent_LotoComponent$viewPlayShow() {
        var alertElement = this.getPrivateDomElement('viewPlay');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-block', 'display-none');
    },
    
    viewPlayHide: function LotoComponent_LotoComponent$viewPlayHide() {
        var alertElement = this.getPrivateDomElement('viewPlay');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-none', 'display-block');
    },
    
    viewConfirmShow: function LotoComponent_LotoComponent$viewConfirmShow() {
        var alertElement = this.getPrivateDomElement('viewConfirm');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-block', 'display-none');
    },
    
    viewConfirmHide: function LotoComponent_LotoComponent$viewConfirmHide() {
        var alertElement = this.getPrivateDomElement('viewConfirm');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-none', 'display-block');
    },
    
    placementInProgressOpen: function LotoComponent_LotoComponent$placementInProgressOpen() {
        var alertElement = this.getPrivateDomElement('placementInProgress');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-block', 'display-none');
    },
    
    placementInProgressClose: function LotoComponent_LotoComponent$placementInProgressClose() {
        var alertElement = this.getPrivateDomElement('placementInProgress');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-none', 'display-block');
    },
    
    viewResultsShow: function LotoComponent_LotoComponent$viewResultsShow() {
        var alertElement = this.getPrivateDomElement('viewResults');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-block', 'display-none');
    },
    
    viewResultsClose: function LotoComponent_LotoComponent$viewResultsClose() {
        var alertElement = this.getPrivateDomElement('viewResults');
        this._environment.safelySetAndUnsetCssClassOnElement(alertElement, 'display-none', 'display-block');
    },
    
    confirm: function LotoComponent_LotoComponent$confirm(o) {
        return confirm(o.toString());
    },
    
    setDisplayed: function LotoComponent_LotoComponent$setDisplayed(element, visible) {
        if (visible) {
            this._environment.safelyRemoveCssClassOnElement(element, 'display-none');
        }
        else {
            this._environment.safelySetCssClassOnElement(element, 'display-none');
        }
    }
}


LotoComponent.LotoComponent.createClass('LotoComponent.LotoComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, LotteryBoardService.IBoardStackContentListener, LotteryBoardService.ILotteryPropertyChangedListener, LotteryBoardService.IActionListener, LotteryBoardService.ILotteryMessageListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('ResultsDrawComponent');

////////////////////////////////////////////////////////////////////////////////
// ResultsDrawComponent.ResultsDrawComponentState

ResultsDrawComponent.ResultsDrawComponentState = function() { };
ResultsDrawComponent.ResultsDrawComponentState.prototype = {
    WINNERS: 1, 
    DETAILS: 2
}
ResultsDrawComponent.ResultsDrawComponentState.createEnum('ResultsDrawComponent.ResultsDrawComponentState', false);


////////////////////////////////////////////////////////////////////////////////
// ResultsDrawComponent.ResultsDrawInitData

ResultsDrawComponent.ResultsDrawInitData = function ResultsDrawComponent_ResultsDrawInitData() {
}
ResultsDrawComponent.ResultsDrawInitData.prototype = {
    gameDraws: null
}


////////////////////////////////////////////////////////////////////////////////
// ResultsDrawComponent.GameDraw

ResultsDrawComponent.GameDraw = function ResultsDrawComponent_GameDraw() {
}
ResultsDrawComponent.GameDraw.prototype = {
    iddggamedraw: null,
    resultdivisions: null
}


////////////////////////////////////////////////////////////////////////////////
// ResultsDrawComponent.ResultDivision

ResultsDrawComponent.ResultDivision = function ResultsDrawComponent_ResultDivision() {
}
ResultsDrawComponent.ResultDivision.prototype = {
    levelid: null,
    name: null,
    shares: null,
    prizeamount: null
}


////////////////////////////////////////////////////////////////////////////////
// ResultsDrawComponent.ResultsDrawComponent

ResultsDrawComponent.ResultsDrawComponent = function ResultsDrawComponent_ResultsDrawComponent() {
    ResultsDrawComponent.ResultsDrawComponent.constructBase(this);
}
ResultsDrawComponent.ResultsDrawComponent._setVisible$2 = function ResultsDrawComponent_ResultsDrawComponent$_setVisible$2(element, visible) {
    if (isNullOrUndefined(element)) {
        return;
    }
    element.style.display = (visible) ? 'block' : 'none';
}
ResultsDrawComponent.ResultsDrawComponent.getChildByID = function ResultsDrawComponent_ResultsDrawComponent$getChildByID(element, id) {
    return ResultsDrawComponent.ResultsDrawComponent._getChildByID$2(id, element, true);
}
ResultsDrawComponent.ResultsDrawComponent._getChildByID$2 = function ResultsDrawComponent_ResultsDrawComponent$_getChildByID$2(id, element, checkContent) {
    if (checkContent) {
        if (element.id === id) {
            return element;
        }
    }
    for (var i = 0; i < element.childNodes.length; i++) {
        var e = ResultsDrawComponent.ResultsDrawComponent._getChildByID$2(id, element.childNodes[i], true);
        if (!isNull(e)) {
            return e;
        }
    }
    return null;
}
ResultsDrawComponent.ResultsDrawComponent.prototype = {
    _gameID$2: null,
    _gameName$2: null,
    _searchDate$2: null,
    _searchDraw$2: null,
    _typeOfSearch$2: null,
    _dateTimeFormat$2: null,
    _resultsUrlCsv$2: null,
    _resultsUrlXsl$2: null,
    _hideDetailsContainerOnActions$2: null,
    _hideDetailsContainerOnEmptyView$2: false,
    _useExternalIdForImageNames$2: false,
    _initData$2: null,
    _state$2: 0,
    _navigationService$2: null,
    
    setNavigationService: function ResultsDrawComponent_ResultsDrawComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function ResultsDrawComponent_ResultsDrawComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _dgeService$2: null,
    
    setDGEService: function ResultsDrawComponent_ResultsDrawComponent$setDGEService(dgeService) {
        this._log.debug('SetDGEService');
        this._dgeService$2 = dgeService;
    },
    
    onResultsFiltersChanged: function ResultsDrawComponent_ResultsDrawComponent$onResultsFiltersChanged(dgeService) {
        this._log.debug('OnResulsFiltersChanged');
        this._getSearchFilter$2();
        var oXsltParameters = {};
        oXsltParameters['component-instance-name'] = this._componentInstanceName;
        oXsltParameters['component-dom-element-id'] = this._domElementId;
        oXsltParameters['game-name'] = this._gameName$2;
        oXsltParameters['search-type'] = this._typeOfSearch$2;
        oXsltParameters['search-date'] = this._formatDate$2(this._searchDate$2, this._dateTimeFormat$2);
        oXsltParameters['search-number'] = this._searchDraw$2;
        oXsltParameters['culture-name'] = CultureInfo.Current.name;
        oXsltParameters['results-url-csv'] = String.format(this._resultsUrlCsv$2, this._gameID$2);
        oXsltParameters['results-url-xls'] = String.format(this._resultsUrlXsl$2, this._gameID$2);
        oXsltParameters['use-external-id-for-image-names'] = (this._useExternalIdForImageNames$2) ? 'true' : 'false';
        var oElement = document.getElementById(this._domElementId);
        var contenturl = '';
        if (this._typeOfSearch$2 === 'date') {
            contenturl = String.format('/cache/dgEventsWithDrawResultsForDrawDateAndGame/{0}/{1}-{2}.xml', this._environment.getLanguage(), this._gameID$2, this._searchDate$2.toDateString());
            if (this._gameID$2 === 'Boleto') {
                contenturl = String.format('/cache/dgEventWithFilteredResultsForDrawDate/{0}/{1}-{2}.xml', this._environment.getLanguage(), this._gameID$2, this._searchDate$2.toDateString());
            }
        }
        else if (this._typeOfSearch$2 === 'draw') {
            contenturl = String.format('/cache/dgEventWithDrawResultsForDrawNumberAndGame/{0}/{1}-{2}.xml', this._environment.getLanguage(), this._gameID$2, this._searchDraw$2);
            if (this._gameID$2 === 'Boleto') {
                contenturl = String.format('/cache/dgEventWithFilteredResultsForDrawNumber/{0}/{1}-{2}.xml', this._environment.getLanguage(), this._gameID$2, this._searchDraw$2);
            }
        }
        else {
            contenturl = '';
        }
        this.update(oElement, contenturl, this._parameters.get_xsltUrl(), oXsltParameters);
    },
    
    init: function ResultsDrawComponent_ResultsDrawComponent$init(environment, componentInstanceName, domElementId, parameters) {
        ResultsDrawComponent.ResultsDrawComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._dateTimeFormat$2 = parameters['date-time-format'].toString();
        this._resultsUrlCsv$2 = parameters['results-url-csv'].toString();
        this._resultsUrlCsv$2 = this._resultsUrlCsv$2.replace('${language}', this._environment.getLanguage());
        this._resultsUrlXsl$2 = parameters['results-url-xls'].toString();
        this._resultsUrlXsl$2 = this._resultsUrlXsl$2.replace('${language}', this._environment.getLanguage());
        this._hideDetailsContainerOnActions$2 = ',' + parameters['hide-details-container-on-viewfilters'].toString() + ',';
        this._hideDetailsContainerOnEmptyView$2 = Boolean.parse(parameters['hide-details-container-on-emptyview'].toString());
        if (Object.keyExists(parameters, 'use-external-id-for-image-names')) {
            this._useExternalIdForImageNames$2 = Boolean.parse(parameters['use-external-id-for-image-names']);
        }
    },
    
    renderComplete: function ResultsDrawComponent_ResultsDrawComponent$renderComplete(eventArgs) {
        var dataElement = this.getPrivateDomElement('data');
        if (!isNullOrUndefined(dataElement)) {
            var objData = Framework.JsonUtil.deserialize(dataElement.innerHTML);
            this._initData$2 = objData;
        }
        this._setState$2(ResultsDrawComponent.ResultsDrawComponentState.WINNERS);
        this._replaceMessageContent$2();
    },
    
    get_isComponentVisible: function ResultsDrawComponent_ResultsDrawComponent$get_isComponentVisible() {
        return ((!this._viewFilterIsInListOfShouldBeHidden$2()) && !isNullOrUndefined(this._typeOfSearch$2)) && this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    _viewFilterIsInListOfShouldBeHidden$2: function ResultsDrawComponent_ResultsDrawComponent$_viewFilterIsInListOfShouldBeHidden$2() {
        if (String.isNullOrEmpty(this._hideDetailsContainerOnActions$2)) {
            return false;
        }
        if (!Object.keyExists(this._navigationService$2.getPageFilter(), 'view')) {
            return this._hideDetailsContainerOnEmptyView$2;
        }
        var viewFilter = this._navigationService$2.getPageFilter()['view'].toString();
        return this._hideDetailsContainerOnActions$2.indexOf(',' + viewFilter + ',') !== -1;
    },
    
    getXsltParameters: function ResultsDrawComponent_ResultsDrawComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['use-external-id-for-image-names'] = (this._useExternalIdForImageNames$2) ? 'true' : 'false';
        return xsltParameters;
    },
    
    showDetailsEventHandler: function ResultsDrawComponent_ResultsDrawComponent$showDetailsEventHandler(sender, eventArgs) {
        var gameDrawId = eventArgs.parameters.getAsNumber('gamedrawid');
        this._showDetailsForGameDrawWithId$2(gameDrawId);
    },
    
    showWinnersEventHandler: function ResultsDrawComponent_ResultsDrawComponent$showWinnersEventHandler(sender, eventArgs) {
        this._setState$2(ResultsDrawComponent.ResultsDrawComponentState.WINNERS);
    },
    
    _getSearchFilter$2: function ResultsDrawComponent_ResultsDrawComponent$_getSearchFilter$2() {
        var oResultsFilters = new DGEService.ResultsFilters();
        this._gameID$2 = oResultsFilters.get_gameFilter();
        this._gameName$2 = oResultsFilters.get_gameName();
        this._searchDate$2 = oResultsFilters.get_resultsSearchDate();
        this._searchDraw$2 = oResultsFilters.get_resultsSearchDraw();
        this._typeOfSearch$2 = oResultsFilters.get_resultsSearchType();
    },
    
    _formatDate$2: function ResultsDrawComponent_ResultsDrawComponent$_formatDate$2(oDate, format) {
        return oDate.format(format, true);
    },
    
    _updateState$2: function ResultsDrawComponent_ResultsDrawComponent$_updateState$2() {
        var winnersElement = this.getPrivateDomElement('winners-state');
        var detailsElement = this.getPrivateDomElement('details-state');
        ResultsDrawComponent.ResultsDrawComponent._setVisible$2(winnersElement, this._state$2 === ResultsDrawComponent.ResultsDrawComponentState.WINNERS);
        ResultsDrawComponent.ResultsDrawComponent._setVisible$2(detailsElement, this._state$2 === ResultsDrawComponent.ResultsDrawComponentState.DETAILS);
    },
    
    _showDetailsForGameDrawWithId$2: function ResultsDrawComponent_ResultsDrawComponent$_showDetailsForGameDrawWithId$2(gameDrawId) {
        if (isNullOrUndefined(this._initData$2)) {
            return;
        }
        var $enum1 = this._initData$2.gameDraws.getEnumerator();
        while ($enum1.moveNext()) {
            var gameDraw = $enum1.get_current();
            if (gameDraw.iddggamedraw === gameDrawId) {
                this._generateContentForGameDraw$2(gameDraw);
                return;
            }
        }
    },
    
    _generateContentForGameDraw$2: function ResultsDrawComponent_ResultsDrawComponent$_generateContentForGameDraw$2(draw) {
        var idSeed = 0;
        var drawTableDiv = this.getPrivateDomElement('details-drawTableDiv');
        var rowTableTemplateElement = this.getPrivateDomElement('boardRowTable');
        var rowCellTemplateElement = this.getPrivateDomElement('boardRowCell');
        var newTableElement = rowTableTemplateElement.cloneNode(true);
        newTableElement.id = newTableElement.id + (idSeed.toString());
        idSeed++;
        var $enum1 = draw.resultdivisions.getEnumerator();
        while ($enum1.moveNext()) {
            var resultDivision = $enum1.get_current();
            var newRowElement = ResultsDrawComponent.ResultsDrawComponent.getChildByID(newTableElement, this._domElementId + '-boardRowRow').cloneNode(true);
            newRowElement.id = newRowElement.id + (idSeed.toString());
            var newCellElement = rowCellTemplateElement.cloneNode(true);
            newCellElement.id = newCellElement.id + (idSeed.toString());
            idSeed++;
            newCellElement.innerText = resultDivision.name;
            this._environment.safelySetCssClassOnElement(newCellElement, 'boardrow-system');
            newRowElement.appendChild(newCellElement);
            newCellElement = rowCellTemplateElement.cloneNode(true);
            newCellElement.id = newCellElement.id + (idSeed.toString());
            idSeed++;
            newCellElement.innerText = resultDivision.prizeamount.format('N', true);
            newRowElement.appendChild(newCellElement);
            newCellElement = rowCellTemplateElement.cloneNode(true);
            newCellElement.id = newCellElement.id + (idSeed.toString());
            idSeed++;
            newCellElement.innerText = resultDivision.shares.toString();
            newRowElement.appendChild(newCellElement);
            newTableElement.appendChild(newRowElement);
        }
        drawTableDiv.innerHTML = '';
        drawTableDiv.appendChild(newTableElement);
        this._setState$2(ResultsDrawComponent.ResultsDrawComponentState.DETAILS);
    },
    
    _setState$2: function ResultsDrawComponent_ResultsDrawComponent$_setState$2(newState) {
        this._state$2 = newState;
        this._updateState$2();
    },
    
    _replaceMessageContent$2: function ResultsDrawComponent_ResultsDrawComponent$_replaceMessageContent$2() {
        var oElement = document.getElementById(this._domElementId + '-download-label');
        var oElementS1 = document.getElementById(this._domElementId + '-download-labels1');
        var oElementS2 = document.getElementById(this._domElementId + '-download-labels2');
        var oElementS3 = document.getElementById(this._domElementId + '-download-labels3');
        if (oElement && oElementS1 && oElementS2 && oElementS3) {
            var msgValue = oElement.innerHTML;
            var indexOfFirstParam = msgValue.indexOf('{0}');
            var indexOfSecondParam = msgValue.indexOf('{1}');
            if (indexOfFirstParam < 0 || indexOfSecondParam < 0 || indexOfSecondParam < indexOfFirstParam) {
                return;
            }
            oElementS1.innerHTML = msgValue.substr(0, indexOfFirstParam);
            oElementS2.innerHTML = msgValue.substr(indexOfFirstParam + 3, indexOfSecondParam - indexOfFirstParam - 3);
            oElementS3.innerHTML = msgValue.substr(indexOfSecondParam + 3);
        }
    }
}


ResultsDrawComponent.ResultsDrawInitData.createClass('ResultsDrawComponent.ResultsDrawInitData');
ResultsDrawComponent.GameDraw.createClass('ResultsDrawComponent.GameDraw');
ResultsDrawComponent.ResultDivision.createClass('ResultsDrawComponent.ResultDivision');
ResultsDrawComponent.ResultsDrawComponent.createClass('ResultsDrawComponent.ResultsDrawComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, DGEService.IResultsFiltersChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('DGENotifierComponent');

////////////////////////////////////////////////////////////////////////////////
// DGENotifierComponent.SimpleNotificationActivator

DGENotifierComponent.SimpleNotificationActivator = function DGENotifierComponent_SimpleNotificationActivator(node, owner) {
    this._owner = owner;
    this._eventName = (node.attributes.getNamedItem('event')).value;
    var nodeList = node.childNodes;
    for (var i = 0; i < nodeList.length; i++) {
        var notificationChildNode = nodeList[i];
        if (notificationChildNode.nodeName === 'message') {
            this._message = notificationChildNode.text;
        }
        else if (notificationChildNode.nodeName === 'forward-to-area') {
            this._forwardToArea = notificationChildNode.text;
        }
        else if (notificationChildNode.nodeName === 'forward-to-action') {
            this._forwardToAction = notificationChildNode.text;
        }
    }
}
DGENotifierComponent.SimpleNotificationActivator.prototype = {
    _eventName: null,
    _message: null,
    _forwardToArea: null,
    _forwardToAction: null,
    _owner: null,
    
    executeForNotification: function DGENotifierComponent_SimpleNotificationActivator$executeForNotification(notification) {
        if (notification.getNotificationEventName() === this._eventName) {
            this._execute();
        }
    },
    
    _execute: function DGENotifierComponent_SimpleNotificationActivator$_execute() {
        if (!isNullOrUndefined(this._message)) {
            alert(this._message);
        }
        if (!isNullOrUndefined(this._forwardToArea) && !isNullOrUndefined(this._forwardToAction)) {
            this._owner.getNavigationService().forwardTo(this._forwardToArea, { action: this._forwardToAction });
        }
    }
}


////////////////////////////////////////////////////////////////////////////////
// DGENotifierComponent.DGENotifierComponent

DGENotifierComponent.DGENotifierComponent = function DGENotifierComponent_DGENotifierComponent() {
    this._xhrDecorator$2 = new Framework.XMLHttpRequestDecorator();
    this._activators$2 = [];
    DGENotifierComponent.DGENotifierComponent.constructBase(this);
}
DGENotifierComponent.DGENotifierComponent.prototype = {
    _navigationService$2: null,
    
    setNavigationService: function DGENotifierComponent_DGENotifierComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    getNavigationService: function DGENotifierComponent_DGENotifierComponent$getNavigationService() {
        return this._navigationService$2;
    },
    
    onPageFilterChanged: function DGENotifierComponent_DGENotifierComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
    },
    
    _userService$2: null,
    
    setUserService: function DGENotifierComponent_DGENotifierComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function DGENotifierComponent_DGENotifierComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        this.update();
    },
    
    _dgeService$2: null,
    
    setDGEService: function DGENotifierComponent_DGENotifierComponent$setDGEService(dgeService) {
        this._log.debug('SetDGEService');
        this._dgeService$2 = dgeService;
    },
    
    onDGENotification: function DGENotifierComponent_DGENotifierComponent$onDGENotification(notification) {
        var $enum1 = this._activators$2.getEnumerator();
        while ($enum1.moveNext()) {
            var activator = $enum1.get_current();
            activator.executeForNotification(notification);
        }
    },
    
    init: function DGENotifierComponent_DGENotifierComponent$init(environment, componentInstanceName, domElementId, parameters) {
        DGENotifierComponent.DGENotifierComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._loadNotifierParameters$2();
    },
    
    get_isComponentVisible: function DGENotifierComponent_DGENotifierComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    getXsltParameters: function DGENotifierComponent_DGENotifierComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    _checkState$2: function DGENotifierComponent_DGENotifierComponent$_checkState$2() {
        if (this._xhrDecorator$2.readyState === 4) {
            if (this._xhrDecorator$2.status === 200 || this._xhrDecorator$2.status === 304) {
                var _document = this._xhrDecorator$2.responseXML;
                this._createListeners$2(_document);
            }
        }
    },
    
    _loadNotifierParameters$2: function DGENotifierComponent_DGENotifierComponent$_loadNotifierParameters$2() {
        this._xhrDecorator$2.onreadystatechange = Delegate.create(this, this._checkState$2);
        var xmlPath = this._parameters.get_contentUrl();
        this._xhrDecorator$2.open('GET', xmlPath, true);
        this._xhrDecorator$2.send(null);
    },
    
    _createListeners$2: function DGENotifierComponent_DGENotifierComponent$_createListeners$2(doc) {
        var nodeList = doc.getElementsByTagName('notification');
        for (var i = 0; i < nodeList.length; i++) {
            var node = nodeList[i];
            this._activators$2.add(new DGENotifierComponent.SimpleNotificationActivator(node, this));
        }
    }
}


DGENotifierComponent.SimpleNotificationActivator.createClass('DGENotifierComponent.SimpleNotificationActivator');
DGENotifierComponent.DGENotifierComponent.createClass('DGENotifierComponent.DGENotifierComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, UserService.IUserChangedListener, DGEService.IDGENotificationListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------

