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('PCBONavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// PCBONavigationComponent.PCBONavigationComponent

PCBONavigationComponent.PCBONavigationComponent = function PCBONavigationComponent_PCBONavigationComponent() {
    this._oXMLHttpRequestDecorator$1 = new Framework.XMLHttpRequestDecorator();
    PCBONavigationComponent.PCBONavigationComponent.constructBase(this);
}
PCBONavigationComponent.PCBONavigationComponent.prototype = {
    _headerText$1: '',
    _parameters$1: null,
    _sportType$1: 'CATFOOTBALL',
    _programNumber$1: '',
    _bettingNavigationService$1: null,
    
    setBettingNavigationService: function PCBONavigationComponent_PCBONavigationComponent$setBettingNavigationService(bettingNavigationService) {
        this._log.debug('SetBettingNavigationService');
        this._bettingNavigationService$1 = bettingNavigationService;
    },
    
    _navigationService$1: null,
    
    setNavigationService: function PCBONavigationComponent_PCBONavigationComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.boNavigation);
    },
    
    onPageFilterChanged: function PCBONavigationComponent_PCBONavigationComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        var oPageFilter = this._navigationService$1.getPageFilter();
        if (Object.keyExists(oPageFilter, 'boid')) {
            this._PCBONavigationService$1.setNavigationColor('2');
            this._PCBONavigationService$1.hideQuickNavigation();
        }
        this._repaintFirstMarketGroup$1();
    },
    
    _PCBONavigationService$1: null,
    
    setPCBONavigationService: function PCBONavigationComponent_PCBONavigationComponent$setPCBONavigationService(pcBONavigationService) {
        this._log.debug('SetPCBONavigationService');
        this._PCBONavigationService$1 = pcBONavigationService;
    },
    
    init: function PCBONavigationComponent_PCBONavigationComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCBONavigationComponent.PCBONavigationComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._headerText$1 = parameters['header'];
        this._sportType$1 = parameters['sport-type'];
    },
    
    start: function PCBONavigationComponent_PCBONavigationComponent$start() {
        this.repaint();
    },
    
    _bindBehaviors$1: function PCBONavigationComponent_PCBONavigationComponent$_bindBehaviors$1(domID) {
        Framework.Behavior.Binding.BehaviorBinder.autoBind(this._environment.getDomElement(domID), (this));
    },
    
    _getXsltParameters$1: function PCBONavigationComponent_PCBONavigationComponent$_getXsltParameters$1(BONavigationContext) {
        var result = {};
        result['component-instance-name'] = this._componentInstanceName;
        result['component-dom-element-id'] = this._domElementId;
        result['level'] = BONavigationContext.length;
        var context = '[';
        for (var i = 0; i < BONavigationContext.length; i++) {
            context += String.format('\'{0}\'{1}', BONavigationContext[i], (i < BONavigationContext.length - 1) ? ', ' : '');
        }
        context += ']';
        result['bo-navigation-context'] = context;
        result['header'] = this._headerText$1;
        result['current-day'] = Date.get_today().format('yyyy-MM-dd');
        return result;
    },
    
    _repaintLevel$1: function PCBONavigationComponent_PCBONavigationComponent$_repaintLevel$1(currentBONavigation, IDFWMarketGroup, level) {
        if (level >= Math.min(2, currentBONavigation.length)) {
            this._adjust$1(currentBONavigation, IDFWMarketGroup, this._environment.getDomElement(this._domElementId), 0);
            return;
        }
        var domElement = this.getPrivateDomElement('link-' + currentBONavigation[level]);
        if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._expanded$1) >= 0) {
            this._repaintLevel$1(currentBONavigation, IDFWMarketGroup, level + 1);
        }
        else if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._collapsed$1) >= 0) {
            domElement.className = domElement.className.replace(PCBONavigationComponent.PCBONavigationComponent._collapsed$1, PCBONavigationComponent.PCBONavigationComponent._expanded$1);
            this._repaintLevel$1(currentBONavigation, IDFWMarketGroup, level + 1);
        }
        else {
            var contentId = this._parameters$1.get_contentUrl().replace('${idfwbonavigation}', currentBONavigation[level]);
            var BONavigationContext = currentBONavigation.extract(0, level + 1);
            domElement.className += ' ' + PCBONavigationComponent.PCBONavigationComponent._expanded$1;
            var domID = this._domElementId + '-child-' + currentBONavigation[level];
            this._environment.transformAndUpdate(domID, contentId, this._parameters$1.get_xsltUrl(), this._getXsltParameters$1(BONavigationContext), Delegate.create(this, function() {
                this._bindBehaviors$1(domID);
                this._repaintLevel$1(currentBONavigation, IDFWMarketGroup, level + 1);
            }));
        }
    },
    
    _adjust$1: function PCBONavigationComponent_PCBONavigationComponent$_adjust$1(BONavigationContext, IDFWMarketGroup, domElement, depth) {
        if (!String.isNullOrEmpty(domElement.id)) {
            if (domElement.id.indexOf('-link-') >= 0) {
                if (depth === 2) {
                    if (BONavigationContext.length === depth + 1 && domElement.id.endsWith('-' + BONavigationContext[2])) {
                        domElement.className += (domElement.className.indexOf('active') < 0) ? ' active' : '';
                    }
                    else {
                        domElement.className = domElement.className.replace('active', '');
                    }
                }
                else {
                    if (depth >= BONavigationContext.length || !domElement.id.endsWith('-' + BONavigationContext[depth])) {
                        if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._expanded$1) >= 0) {
                            domElement.className = domElement.className.replace(PCBONavigationComponent.PCBONavigationComponent._expanded$1, PCBONavigationComponent.PCBONavigationComponent._collapsed$1);
                        }
                    }
                    else if (depth < BONavigationContext.length && domElement.id.endsWith('-' + BONavigationContext[depth])) {
                        if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._collapsed$1) >= 0) {
                            domElement.className = domElement.className.replace(PCBONavigationComponent.PCBONavigationComponent._collapsed$1, PCBONavigationComponent.PCBONavigationComponent._expanded$1);
                        }
                        else if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._expanded$1) < 0) {
                            domElement.className += ' ' + PCBONavigationComponent.PCBONavigationComponent._expanded$1;
                        }
                    }
                }
                depth++;
            }
            else if (domElement.id.indexOf('-mg-') >= 0) {
                if (!String.isNullOrEmpty(IDFWMarketGroup) && domElement.id.endsWith('-' + IDFWMarketGroup)) {
                    domElement.className += (domElement.className.indexOf('active') < 0) ? ' active' : '';
                }
                else {
                    domElement.className = domElement.className.replace('active', '');
                }
            }
        }
        for (var i = 0; i < domElement.childNodes.length; i++) {
            this._adjust$1(BONavigationContext, IDFWMarketGroup, domElement.childNodes[i], depth);
        }
    },
    
    _collapse$1: function PCBONavigationComponent_PCBONavigationComponent$_collapse$1(BONavigationContext, IDFWMarketGroup, domElement, depth) {
        if (!String.isNullOrEmpty(domElement.id)) {
            if (domElement.id.indexOf('-link-') >= 0) {
                if (depth === 2) {
                    if (BONavigationContext.length === depth + 1 && domElement.id.endsWith('-' + BONavigationContext[2])) {
                        domElement.className += (domElement.className.indexOf('active') < 0) ? ' active' : '';
                    }
                    else {
                        domElement.className = domElement.className.replace('active', '');
                    }
                }
                else {
                    if (depth >= BONavigationContext.length || !domElement.id.endsWith('-' + BONavigationContext[depth])) {
                        if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._expanded$1) >= 0) {
                            domElement.className = domElement.className.replace('', PCBONavigationComponent.PCBONavigationComponent._collapsed$1);
                        }
                    }
                    else if (depth < BONavigationContext.length && domElement.id.endsWith('-' + BONavigationContext[depth])) {
                        if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._collapsed$1) >= 0) {
                            domElement.className = domElement.className.replace(PCBONavigationComponent.PCBONavigationComponent._collapsed$1, PCBONavigationComponent.PCBONavigationComponent._expanded$1);
                        }
                        else if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._expanded$1) < 0) {
                            domElement.className += ' ' + PCBONavigationComponent.PCBONavigationComponent._expanded$1;
                        }
                    }
                }
                depth++;
            }
            else if (domElement.id.indexOf('-mg-') >= 0) {
                if (!String.isNullOrEmpty(IDFWMarketGroup) && domElement.id.endsWith(IDFWMarketGroup)) {
                    domElement.className += (domElement.className.indexOf('active') < 0) ? ' active' : '';
                }
                else {
                    domElement.className = domElement.className.replace('active', '');
                }
            }
            else if (domElement.id.indexOf('-showall') >= 0) {
                domElement.className = domElement.className.replace(PCBONavigationComponent.PCBONavigationComponent._collapsed$1, PCBONavigationComponent.PCBONavigationComponent._expanded$1);
            }
        }
        for (var i = 0; i < domElement.childNodes.length; i++) {
            this._collapse$1(BONavigationContext, IDFWMarketGroup, domElement.childNodes[i], depth);
        }
    },
    
    _repaintFirstMarketGroup$1: function PCBONavigationComponent_PCBONavigationComponent$_repaintFirstMarketGroup$1() {
        var pageFilter = {};
        pageFilter = this._navigationService$1.getPageFilter();
        if (pageFilter['action'] === 'Xperto') {
            var liCollection = this.getPrivateDomElement('treelist').getElementsByTagName('li');
            if (liCollection.length > 0) {
                var splitli = liCollection[0].getAttribute('id').toString().split('-');
                var IDFWMarketGroup = splitli[2];
                var BONavigationContext = [];
                this._log.debug(String.format('RepaintFirstMarketGroup IDFWMarketGroup=[{0}]', IDFWMarketGroup));
                var newBONavigation = [];
                newBONavigation.addRange(BONavigationContext);
                newBONavigation.add(IDFWMarketGroup);
                this._bettingNavigationService$1.setBONavigationLevels(newBONavigation);
                this._PCBONavigationService$1.setBoNavigationID(IDFWMarketGroup);
                this._PCBONavigationService$1.hideQuickNavigation();
                this._PCBONavigationService$1.setNavigationColor('2');
            }
        }
    },
    
    repaint: function PCBONavigationComponent_PCBONavigationComponent$repaint() {
        this._log.debug('Repaint');
        var currentBONavigation = this._bettingNavigationService$1.getBONavigation();
        var IDFWMarketGroup = this._bettingNavigationService$1.getMarketGroup();
        var contentUrl = this._parameters$1.get_contentUrl().replace('${idfwbonavigation}', 'top');
        if (!this._environment.getDomElement(this._domElementId).childNodes.length) {
            this._environment.transformAndUpdate(this._domElementId, contentUrl, this._parameters$1.get_xsltUrl(), this._getXsltParameters$1([]), Delegate.create(this, function() {
                this._bindBehaviors$1(this._domElementId);
                if (String.isNullOrEmpty(this._programNumber$1)) {
                    this._loadSportPrograms$1();
                }
            }));
        }
        else {
            this._repaintLevel$1(currentBONavigation, IDFWMarketGroup, 0);
        }
    },
    
    showAll: function PCBONavigationComponent_PCBONavigationComponent$showAll() {
        this.repaint();
    },
    
    toggleEventHandler: function PCBONavigationComponent_PCBONavigationComponent$toggleEventHandler(sender, eventArgs) {
        var BONavigationContext = eventArgs.parameters.getAsStringArray('navcontext');
        var IDFWBONavigation = eventArgs.parameters.getAsString('idfwbonavigation');
        var numfwmarketgroups = eventArgs.parameters.getAsNumber('numfwmarketgroups');
        this._log.debug(String.format('Toggle BONavigationContext=[{0}] IDFWBONavigation=[{1}]', BONavigationContext, IDFWBONavigation));
        if (numfwmarketgroups > 0) {
            var newBONavigation = [];
            newBONavigation.addRange(BONavigationContext);
            newBONavigation.add(IDFWBONavigation);
            this._bettingNavigationService$1.setBONavigationLevels(newBONavigation);
            this._PCBONavigationService$1.setBoNavigationID(IDFWBONavigation);
            this._PCBONavigationService$1.setNavigationColor('2');
            this._PCBONavigationService$1.hideQuickNavigation();
        }
        else {
            var domElement = this.getPrivateDomElement('link-' + IDFWBONavigation);
            var expandedBONavigation = [];
            expandedBONavigation.addRange(BONavigationContext);
            if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._expanded$1) < 0) {
                expandedBONavigation.add(IDFWBONavigation);
                if (domElement.className.indexOf(PCBONavigationComponent.PCBONavigationComponent._collapsed$1) < 0) {
                    var contentUrl = this._parameters$1.get_contentUrl().replace('${idfwbonavigation}', IDFWBONavigation);
                    var domID = String.format('{0}-child-{1}', this._domElementId, IDFWBONavigation);
                    this._environment.transformAndUpdate(domID, contentUrl, this._parameters$1.get_xsltUrl(), this._getXsltParameters$1(expandedBONavigation), Delegate.create(this, function() {
                        this._bindBehaviors$1(domID);
                    }));
                }
            }
            var IDFWMarketGroup = this._bettingNavigationService$1.getMarketGroup();
            this._adjust$1(expandedBONavigation, IDFWMarketGroup, this._environment.getDomElement(this._domElementId), 0);
        }
        window.event.returnValue = false;
    },
    
    setMarketGroupEventHandler: function PCBONavigationComponent_PCBONavigationComponent$setMarketGroupEventHandler(sender, eventArgs) {
        var BONavigationContext = eventArgs.parameters.getAsStringArray('navcontext');
        var IDFWMarketGroup = eventArgs.parameters.getAsString('idfwmarketgroup');
        this._log.debug(String.format('SetMarketGroup BONavigationContext=[{0}] IDFWMarketGroup=[{1}]', BONavigationContext, IDFWMarketGroup));
        this._bettingNavigationService$1.setNavigation(BONavigationContext, IDFWMarketGroup, null, null, null, null);
        window.scrollTo(0, 0);
        window.event.returnValue = false;
    },
    
    repaintMarketGroupEventHandler: function PCBONavigationComponent_PCBONavigationComponent$repaintMarketGroupEventHandler(sender, eventArgs) {
        this._repaintFirstMarketGroup$1();
        if (!isNullOrUndefined(window.event)) {
            window.event.returnValue = false;
        }
    },
    
    _loadSportPrograms$1: function PCBONavigationComponent_PCBONavigationComponent$_loadSportPrograms$1() {
        this._oXMLHttpRequestDecorator$1.onreadystatechange = Delegate.create(this, function() {
            if (this._oXMLHttpRequestDecorator$1.readyState === 4) {
                if (this._oXMLHttpRequestDecorator$1.status === 200 || this._oXMLHttpRequestDecorator$1.status === 304) {
                    var SportProgramsXML = this._oXMLHttpRequestDecorator$1.responseXML;
                    this._setProgramNumber$1(SportProgramsXML);
                }
            }
        });
        var contentURL = String.format('/cache/pcBOProgramNumber/{0}/{1}.xml', this._environment.getLanguage(), this._sportType$1);
        this._oXMLHttpRequestDecorator$1.open('GET', contentURL, true);
        this._oXMLHttpRequestDecorator$1.send(null);
    },
    
    _setProgramNumber$1: function PCBONavigationComponent_PCBONavigationComponent$_setProgramNumber$1(SportProgramsXML) {
        var oXMLNode = SportProgramsXML.selectSingleNode('/BOProgramNumber/ProgramNumbers/FOSport/idmmtrproductclass');
        var oElement = document.getElementById(this._domElementId + '-programno');
        if (oElement && oXMLNode) {
            oElement.innerHTML = oXMLNode.text;
        }
    }
}


PCBONavigationComponent.PCBONavigationComponent.createClass('PCBONavigationComponent.PCBONavigationComponent', Framework.Component.AbstractComponent, NavigationService.IPageFilterChangedListener);
PCBONavigationComponent.PCBONavigationComponent._expanded$1 = 'expanded';
PCBONavigationComponent.PCBONavigationComponent._collapsed$1 = 'collapsed';

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('FastSearchBoxComponent');

////////////////////////////////////////////////////////////////////////////////
// FastSearchBoxComponent.FastSearchBoxComponent

FastSearchBoxComponent.FastSearchBoxComponent = function FastSearchBoxComponent_FastSearchBoxComponent() {
    FastSearchBoxComponent.FastSearchBoxComponent.constructBase(this);
}
FastSearchBoxComponent.FastSearchBoxComponent.prototype = {
    _parameters$2: null,
    _AutoComplete$2: true,
    _kansasAdaptorUrl$2: '../template__/components/FastSearchBoxComponent/KansasAdapter.aspx',
    _minimumPrefixLength$2: 3,
    _searchResultsPageArea$2: 'Betting',
    _searchResultsPageAction$2: 'fast-search-results',
    
    showResultsEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$showResultsEventHandler(sender, eventArgs) {
        var value = (this._environment.getDomElement(eventArgs.parameters.getAsString('domelementid'))).value;
        if (String.isNullOrEmpty(value)) {
            return;
        }
        this.showResults(value);
        window.event.returnValue = false;
    },
    
    hideAndFocusEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$hideAndFocusEventHandler(sender, eventArgs) {
        eventArgs.domElement.style.display = 'none';
        var oUsername = this._environment.getDomElement(eventArgs.parameters.getAsString('domelementid'));
        oUsername.focus();
    },
    
    setHiddenClassEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$setHiddenClassEventHandler(sender, eventArgs) {
        eventArgs.domElement.className = 'hidden';
    },
    
    hideSearchEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$hideSearchEventHandler(sender, eventArgs) {
        var oUserLayer = this._environment.getDomElement(eventArgs.parameters.getAsString('domelementid'));
        oUserLayer.style.display = 'none';
    },
    
    showSearchEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$showSearchEventHandler(sender, eventArgs) {
        if ((eventArgs.domElement).value === '') {
            var oUserLayer = this._environment.getDomElement(eventArgs.parameters.getAsString('domelementid'));
            oUserLayer.style.display = 'block';
        }
    },
    
    onSearchDivClickEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$onSearchDivClickEventHandler(sender, eventArgs) {
        this.onSearchDivClick(eventArgs.domElement);
    },
    
    onSearchDivClick: function FastSearchBoxComponent_FastSearchBoxComponent$onSearchDivClick(element) {
        var SearchTextbox = document.getElementById(this._domElementId + '-query');
        if (!SearchTextbox) {
            return;
        }
        this._environment.safelySetCssClassOnElement(element, 'invisible');
        SearchTextbox.focus();
    },
    
    searchOnBlurEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$searchOnBlurEventHandler(sender, eventArgs) {
        this.onSearchBlur(eventArgs.domElement);
    },
    
    onSearchBlur: function FastSearchBoxComponent_FastSearchBoxComponent$onSearchBlur(element) {
        var SearchTextbox = document.getElementById(this._domElementId + '-query');
        if (!SearchTextbox) {
            return;
        }
        if (SearchTextbox.value === '') {
            this._environment.safelyRemoveCssClassOnElement(document.getElementById('searchlayer'), 'invisible');
        }
    },
    
    searchOnFocusEventHandler: function FastSearchBoxComponent_FastSearchBoxComponent$searchOnFocusEventHandler(sender, eventArgs) {
        this.onSearchFocus(document.getElementById('searchlayer'));
    },
    
    onSearchFocus: function FastSearchBoxComponent_FastSearchBoxComponent$onSearchFocus(element) {
        this._environment.safelySetCssClassOnElement(element, 'invisible');
    },
    
    _bettingNavigationService$2: null,
    
    setBettingNavigationService: function FastSearchBoxComponent_FastSearchBoxComponent$setBettingNavigationService(bettingNavigationService) {
        this._log.debug('SetBettingNavigationService');
        this._bettingNavigationService$2 = bettingNavigationService;
    },
    
    _navigationService$2: null,
    
    setNavigationService: function FastSearchBoxComponent_FastSearchBoxComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    init: function FastSearchBoxComponent_FastSearchBoxComponent$init(environment, componentInstanceName, domElementId, parameters) {
        if (Object.keyExists(parameters, 'auto-complete')) {
            this._AutoComplete$2 = Boolean.parse(parameters['auto-complete']);
        }
        if (Object.keyExists(parameters, 'kansas-adaptor-url')) {
            this._kansasAdaptorUrl$2 = parameters['kansas-adaptor-url'];
        }
        if (Object.keyExists(parameters, 'minimum-prefix-length')) {
            this._minimumPrefixLength$2 = Number.parse((parameters['minimum-prefix-length']));
        }
        if (Object.keyExists(parameters, 'search-results-page-area')) {
            this._searchResultsPageArea$2 = parameters['search-results-page-area'];
        }
        if (Object.keyExists(parameters, 'search-results-page-action')) {
            this._searchResultsPageAction$2 = parameters['search-results-page-action'];
        }
    },
    
    renderComplete: function FastSearchBoxComponent_FastSearchBoxComponent$renderComplete(eventArgs) {
        if (this._AutoComplete$2) {
            var options = ScriptFX.UI.$create_AutoCompleteOptions(this._kansasAdaptorUrl$2);
            options.minimumPrefixLength = this._minimumPrefixLength$2;
            this._autoCompleteBehavior$2 = new ScriptFX.UI.AutoCompleteBehavior(this.getPrivateDomElement('query'), options);
            this._autoCompleteBehavior$2.add_itemDisplay(Delegate.create(this, this._onAutoCompleteItemDisplay$2));
            this._autoCompleteBehavior$2.add_itemSelected(Delegate.create(this, this._onAutoCompleteItemSelected$2));
        }
    },
    
    get_isComponentVisible: function FastSearchBoxComponent_FastSearchBoxComponent$get_isComponentVisible() {
        return true;
    },
    
    getXsltParameters: function FastSearchBoxComponent_FastSearchBoxComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    showResults: function FastSearchBoxComponent_FastSearchBoxComponent$showResults(query) {
        this._log.debug(String.format('ShowResults query=[{0}]', query));
        this._bettingNavigationService$2.setSearchPhrase(query, this._searchResultsPageArea$2, this._searchResultsPageAction$2);
    },
    
    _autoCompleteBehavior$2: null,
    
    _onAutoCompleteItemDisplay$2: function FastSearchBoxComponent_FastSearchBoxComponent$_onAutoCompleteItemDisplay$2(sender, e) {
        var query = e.get_item();
        e.set_text('<table><tr><td align=\'right\'>' + query + '</td></tr></table>');
    },
    
    _onAutoCompleteItemSelected$2: function FastSearchBoxComponent_FastSearchBoxComponent$_onAutoCompleteItemSelected$2(sender, e) {
        e.set_text(e.get_item());
        (document.getElementById(this._domElementId + '-query')).value = e.get_text();
        this.showResults(e.get_text());
    }
}


FastSearchBoxComponent.FastSearchBoxComponent.createClass('FastSearchBoxComponent.FastSearchBoxComponent', Framework.Component.AbstractXsltBasedComponent);

// ---- 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('PCMarketTypeNavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent

PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent = function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent() {
    this._BONavigationColorHistoryList$2 = [];
    PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent.constructBase(this);
}
PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent.prototype = {
    _updateWithParams$2: false,
    _bettingNavigationService$2: null,
    
    setBettingNavigationService: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$setBettingNavigationService(bettingNavigationService) {
        this._log.debug('SetBettingNavigationService');
        this._bettingNavigationService$2 = bettingNavigationService;
    },
    
    _navigationService$2: null,
    
    setNavigationService: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.boNavigation);
    },
    
    onPageFilterChanged: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this._setBONavigationColorFromHistory$2();
        this.update();
    },
    
    _PCBONavigationService$2: null,
    
    setPCBONavigationService: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$setPCBONavigationService(pcBONavigationService) {
        this._log.debug('SetPCBONavigationService');
        this._PCBONavigationService$2 = pcBONavigationService;
    },
    
    onBONavigationIsSet: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$onBONavigationIsSet(eventSource) {
        this.update();
    },
    
    init: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._environment.registerPageWillChangeListener(this);
        var state = this._environment.getStoredState(this._domElementId);
        if (state && Object.keyExists(state, 'BONavigationColorHistoryList')) {
            this._BONavigationColorHistoryList$2 = state['BONavigationColorHistoryList'];
        }
    },
    
    onPageWillChange: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$onPageWillChange() {
        this._log.debug('OnPageWillChange');
        this._environment.storeState(this._domElementId, { BONavigationColorHistoryList: this._BONavigationColorHistoryList$2 });
    },
    
    preTransformation: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$preTransformation(eventArgs) {
        if (!this._updateWithParams$2) {
            eventArgs.set_cancelUpdate(true);
            this._updateWithParams$2 = true;
            if (String.isNullOrEmpty(this._PCBONavigationService$2.get_currentBOID())) {
                return;
            }
            var oElement = document.getElementById(this._domElementId);
            var ContentID = this._parameters.get_contentUrl().replace('${idfwbonavigation}', this._PCBONavigationService$2.get_currentBOID());
            this.update(oElement, ContentID, this._parameters.get_xsltUrl(), this.getXsltParameters(null));
        }
        else {
            this._updateWithParams$2 = false;
        }
    },
    
    getXsltParameters: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    get_isComponentVisible: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    showMarketEventHandler: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$showMarketEventHandler(sender, eventArgs) {
        var IDFWBONavigation = eventArgs.parameters.getAsString('idfwbonavigation');
        var numfwmarketgroups = eventArgs.parameters.getAsNumber('numfwmarketgroups');
        var colorid = eventArgs.parameters.getAsString('colorid');
        var currentBONavigation = this._bettingNavigationService$2.getBONavigation();
        var newBONavigation = [];
        newBONavigation.add(IDFWBONavigation);
        this._bettingNavigationService$2.setBONavigationLevels(newBONavigation);
        this._PCBONavigationService$2.showQuickNavigation(colorid);
        this._registerBONavigationColorHistory$2(IDFWBONavigation, colorid);
        window.event.returnValue = false;
    },
    
    _registerBONavigationColorHistory$2: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$_registerBONavigationColorHistory$2(BONavigation, Color) {
        var oBONavigationColorHistory = new PCMarketTypeNavigationComponent.BONavigationColorHistory();
        oBONavigationColorHistory.BoNavigationRootKey = this._PCBONavigationService$2.get_currentBOID();
        oBONavigationColorHistory.BoNavigationKey = BONavigation;
        oBONavigationColorHistory.BoNavigationColor = Color;
        this._BONavigationColorHistoryList$2.add(oBONavigationColorHistory);
    },
    
    _setBONavigationColorFromHistory$2: function PCMarketTypeNavigationComponent_PCMarketTypeNavigationComponent$_setBONavigationColorFromHistory$2() {
        var oPageFilter = this._navigationService$2.getPageFilter();
        if (!Object.keyExists(oPageFilter, 'boid') && Object.keyExists(oPageFilter, 'bo-navigation')) {
            var BOKey = oPageFilter['bo-navigation'].toString();
            for (var i = 0; i < this._BONavigationColorHistoryList$2.length; i++) {
                var oBONavigationColorHistory = this._BONavigationColorHistoryList$2[i];
                if (oBONavigationColorHistory.BoNavigationKey === BOKey) {
                    this._PCBONavigationService$2.setBoNavigationID(oBONavigationColorHistory.BoNavigationRootKey);
                    this._PCBONavigationService$2.showQuickNavigation(oBONavigationColorHistory.BoNavigationColor);
                }
            }
        }
    }
}


////////////////////////////////////////////////////////////////////////////////
// PCMarketTypeNavigationComponent.BONavigationColorHistory

PCMarketTypeNavigationComponent.BONavigationColorHistory = function PCMarketTypeNavigationComponent_BONavigationColorHistory() {
}
PCMarketTypeNavigationComponent.BONavigationColorHistory.prototype = {
    BoNavigationRootKey: null,
    BoNavigationKey: null,
    BoNavigationColor: null
}


PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent.createClass('PCMarketTypeNavigationComponent.PCMarketTypeNavigationComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener, PCBONavigationService.IBONavigationIsSetListener, Framework.IPageWillChangeListener);
PCMarketTypeNavigationComponent.BONavigationColorHistory.createClass('PCMarketTypeNavigationComponent.BONavigationColorHistory');

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCQuickNavigationComponent');

////////////////////////////////////////////////////////////////////////////////
// PCQuickNavigationComponent.QuickNavigation

PCQuickNavigationComponent.QuickNavigation = function PCQuickNavigationComponent_QuickNavigation() {
}
PCQuickNavigationComponent.QuickNavigation.prototype = {
    id: null,
    contentUrl: null,
    
    compareTo: function PCQuickNavigationComponent_QuickNavigation$compareTo(obj) {
        var quickNavigation = obj;
        var result = this.contentUrl.compareTo(quickNavigation.contentUrl);
        if (result) {
            return result;
        }
        else if (String.isNullOrEmpty(this.id) && String.isNullOrEmpty(quickNavigation.id)) {
            return 0;
        }
        else if (String.isNullOrEmpty(this.id)) {
            return -1;
        }
        else if (String.isNullOrEmpty(quickNavigation.id)) {
            return 1;
        }
        else {
            return this.id.compareTo(quickNavigation.id);
        }
    }
}


////////////////////////////////////////////////////////////////////////////////
// PCQuickNavigationComponent.PCQuickNavigationComponent

PCQuickNavigationComponent.PCQuickNavigationComponent = function PCQuickNavigationComponent_PCQuickNavigationComponent() {
    this._previousLevels$1 = [];
    PCQuickNavigationComponent.PCQuickNavigationComponent.constructBase(this);
}
PCQuickNavigationComponent.PCQuickNavigationComponent.prototype = {
    _parameters$1: null,
    _hideMe$1: true,
    _repaintLast$1: false,
    _boNavigationContentUrl$1: null,
    _marketGroupContentUrl$1: null,
    _eventContentUrl$1: null,
    _autoRefreshPeriod: 10000,
    _marketGroupType$1: null,
    
    get__showMarketGroupDropdown$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$get__showMarketGroupDropdown$1() {
        if (String.isNullOrEmpty(this._marketGroupType$1)) {
            return true;
        }
        return (String.isNullOrEmpty(this._bettingNavigationService$1.getEvent()) || ((this._marketGroupType$1 === 'SIMPLECOUPON') || (this._marketGroupType$1 === 'USCOUPON')));
    },
    
    _bettingNavigationService$1: null,
    
    setBettingNavigationService: function PCQuickNavigationComponent_PCQuickNavigationComponent$setBettingNavigationService(bettingNavigationService) {
        this._log.debug('SetBettingNavigationService');
        this._bettingNavigationService$1 = bettingNavigationService;
    },
    
    _navigationService$1: null,
    
    setNavigationService: function PCQuickNavigationComponent_PCQuickNavigationComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$1 = navigationService;
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.boNavigation);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.marketGroup);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.marketFromMarketGroup);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.event);
        this._navigationService$1.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.marketFromEvent);
    },
    
    onPageFilterChanged: function PCQuickNavigationComponent_PCQuickNavigationComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.repaint();
    },
    
    _PCBONavigationService$1: null,
    
    setPCBONavigationService: function PCQuickNavigationComponent_PCQuickNavigationComponent$setPCBONavigationService(pcBONavigationService) {
        this._log.debug('SetPCBONavigationService');
        this._PCBONavigationService$1 = pcBONavigationService;
    },
    
    onHideQuickNavigation: function PCQuickNavigationComponent_PCQuickNavigationComponent$onHideQuickNavigation(eventSource) {
        this.repaint();
    },
    
    onShowQuickNavigation: function PCQuickNavigationComponent_PCQuickNavigationComponent$onShowQuickNavigation(eventSource) {
        this.repaint();
    },
    
    init: function PCQuickNavigationComponent_PCQuickNavigationComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCQuickNavigationComponent.PCQuickNavigationComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$1 = new Framework.CommonComponentParameters(parameters);
        this._repaintLast$1 = Boolean.parse(parameters['repaint-last']);
        this._boNavigationContentUrl$1 = parameters['bo-navigation-content-url'];
        this._marketGroupContentUrl$1 = parameters['market-group-content-url'];
        this._eventContentUrl$1 = parameters['event-content-url'];
        this._autoRefreshPeriod = Number.parse(parameters['auto-refresh-period']);
    },
    
    start: function PCQuickNavigationComponent_PCQuickNavigationComponent$start() {
        this.repaint();
    },
    
    repaint: function PCQuickNavigationComponent_PCQuickNavigationComponent$repaint() {
        this._log.debug('Repaint');
        if (this.isVisible(this._parameters$1.get_visibleOn(), this._parameters$1.get_notVisibleOn(), this._navigationService$1.getAction()) && !this._PCBONavigationService$1.get_hideQuickNavigationFlag()) {
            this.show();
            var levels = this._getLevels$1();
            var differenceLevel = this._findDifferenceLevel$1(this._previousLevels$1, levels);
            if (differenceLevel >= 0) {
                for (var i = differenceLevel; i < levels.length; i++) {
                    var level = levels[i];
                    this._repaintItem$1(level.contentUrl, i + 1, level.id);
                }
                for (var i = levels.length; i < this._previousLevels$1.length; i++) {
                    this._environment.updateDomElementDirect(this._getContainingElement$1(i + 1), String.Empty);
                }
            }
            this._previousLevels$1 = levels;
        }
        else {
            this.hide();
        }
    },
    
    setBONavigationEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setBONavigationEventHandler(sender, eventArgs) {
        this._setBONavigation$1(eventArgs.parameters.getAsNumber('level'), eventArgs.parameters.getAsString('idfwbonavigation'));
    },
    
    setBONavigationOnLoadEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setBONavigationOnLoadEventHandler(sender, eventArgs) {
        this._setBONavigation$1(eventArgs.parameters.getAsNumber('level'), eventArgs.parameters.getAsString('idfwbonavigation'));
    },
    
    setMarketGroupEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setMarketGroupEventHandler(sender, eventArgs) {
        this._setMarketGroup$1(eventArgs.parameters.getAsNumber('level'), eventArgs.parameters.getAsString('idfwmarketgroup'));
    },
    
    setMarketGroupOnLoadEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setMarketGroupOnLoadEventHandler(sender, eventArgs) {
        this._setMarketGroup$1(eventArgs.parameters.getAsNumber('level'), eventArgs.parameters.getAsString('idfwmarketgroup'));
    },
    
    setMarketFromMarketGroupEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setMarketFromMarketGroupEventHandler(sender, eventArgs) {
        this._setMarketFromMarketGroup$1(eventArgs.parameters.getAsNumber('level'), eventArgs.parameters.getAsString('idfomarket'));
    },
    
    setMarketFromMarketGroupOnChangeEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setMarketFromMarketGroupOnChangeEventHandler(sender, eventArgs) {
        this._setMarketFromMarketGroup$1(eventArgs.parameters.getAsNumber('level'), (eventArgs.domElement).value.split('|')[0]);
    },
    
    setMarketGroupTypeOnLoadEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setMarketGroupTypeOnLoadEventHandler(sender, eventArgs) {
        this._marketGroupType$1 = eventArgs.parameters.getAsString('idfwmarketgrouptype');
    },
    
    setFromEventEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$setFromEventEventHandler(sender, eventArgs) {
        var attributes = (eventArgs.domElement).value.split('|');
        var level = eventArgs.parameters.getAsNumber('level');
        if (attributes[0] === 'idfomarket') {
            this._log.debug(String.format('SetMarketFromEvent level=[{0}] IDFOMarket=[{1}]', level, attributes[1]));
            this._updatePersistedSelection$1(level, attributes[1]);
            this._bettingNavigationService$1.setMarketFromEvent(attributes[1]);
        }
        else {
            this._log.debug(String.format('SetEventScorecastFromEvent level=[{0}] IDFOEventScorecast=[{1}]', level, attributes[1]));
            this._updatePersistedSelection$1(level, attributes[1]);
            this._bettingNavigationService$1.setEventScorecastFromEvent(attributes[1]);
        }
    },
    
    changeDropdownEventHandler: function PCQuickNavigationComponent_PCQuickNavigationComponent$changeDropdownEventHandler(sender, eventArgs) {
        this._changeDropdown$1(eventArgs.domElement, eventArgs.parameters.getAsNumber('level'));
    },
    
    _setBONavigation$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_setBONavigation$1(level, IDFWBONavigation) {
        this._log.debug(String.format('SetBONavigation level=[{0}] IDFWBONavigation=[{1}]', level, IDFWBONavigation));
        this._updatePersistedSelection$1(level, IDFWBONavigation);
        this._bettingNavigationService$1.setBONavigation(level, IDFWBONavigation);
    },
    
    _setMarketGroup$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_setMarketGroup$1(level, IDFWMarketGroup) {
        this._log.debug(String.format('SetMarketGroup level=[{0}] IDFWMarketGroup=[{1}]', level, IDFWMarketGroup));
        this._updatePersistedSelection$1(level, IDFWMarketGroup);
        this._bettingNavigationService$1.setMarketGroup(level, IDFWMarketGroup);
    },
    
    _setMarketFromMarketGroup$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_setMarketFromMarketGroup$1(level, IDFOMarket) {
        this._log.debug(String.format('SetMarketFromMarketGroup level=[{0}] IDFOMarket=[{1}]', level, IDFOMarket));
        this._updatePersistedSelection$1(level, IDFOMarket);
        this._bettingNavigationService$1.setMarketFromMarketGroup(IDFOMarket);
    },
    
    _changeDropdown$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_changeDropdown$1(sele, level) {
        var type = sele.value.split('|')[0];
        var id = sele.value.split('|')[1];
        if (type === 'idfwbonavigation') {
            this._setBONavigation$1(level, id);
        }
        else {
            this._setMarketGroup$1(level, id);
        }
    },
    
    _updatePersistedSelection$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_updatePersistedSelection$1(level, id) {
        (this._previousLevels$1[level - 1]).id = id;
    },
    
    _getContainingElement$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_getContainingElement$1(level) {
        return this._environment.getDomElement(this._getContainingElementId$1(level));
    },
    
    _getContainingElementId$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_getContainingElementId$1(level) {
        return this._domElementId + '-' + level;
    },
    
    _createContainingElement$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_createContainingElement$1(level) {
        var result = document.createElement('SPAN');
        result.id = this._getContainingElementId$1(level);
        this._environment.getDomElement(this._domElementId).appendChild(result);
        return result;
    },
    
    _getSelect$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_getSelect$1(level) {
        var containingElement = this._getContainingElement$1(level);
        if (containingElement && containingElement.children.length > 0 && !String.compare(containingElement.children[0].tagName, 'SELECT', true)) {
            return containingElement.children[0];
        }
        return null;
    },
    
    _findDifferenceLevel$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_findDifferenceLevel$1(oldLevels, newLevels) {
        for (var i = 0; i < newLevels.length; i++) {
            if (oldLevels.length - 1 < i || (newLevels[i]).compareTo(oldLevels[i])) {
                return i - ((this._repaintLast$1 && i > 0) ? 1 : 0);
            }
        }
        if (oldLevels.length > newLevels.length) {
            return newLevels.length;
        }
        return -1;
    },
    
    _getLevels$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_getLevels$1() {
        var result = [];
        var boNavigation = this._bettingNavigationService$1.getBONavigation();
        for (var i = 0; i < boNavigation.length; i++) {
            var level = new PCQuickNavigationComponent.QuickNavigation();
            level.id = (i === boNavigation.length - 1) ? this._bettingNavigationService$1.getMarketGroup() : boNavigation[i + 1];
            level.contentUrl = this._boNavigationContentUrl$1.replace('${idfwbonavigation}', boNavigation[i]);
            result.add(level);
        }
        if (this.get__showMarketGroupDropdown$1()) {
            var IDFOMarketGroup = this._bettingNavigationService$1.getMarketGroup();
            if (!String.isNullOrEmpty(IDFOMarketGroup)) {
                var level = new PCQuickNavigationComponent.QuickNavigation();
                level.contentUrl = this._marketGroupContentUrl$1.replace('${idfwmarketgroup}', IDFOMarketGroup);
                level.id = this._bettingNavigationService$1.getMarketFromMarketGroup();
                result.add(level);
            }
        }
        var IDFOEvent = this._bettingNavigationService$1.getEvent();
        if (!String.isNullOrEmpty(IDFOEvent)) {
            var level = new PCQuickNavigationComponent.QuickNavigation();
            level.contentUrl = this._eventContentUrl$1.replace('${idfoevent}', IDFOEvent);
            level.id = this._bettingNavigationService$1.getMarketFromEvent() || this._bettingNavigationService$1.getEventScorecastFromEvent();
            result.add(level);
        }
        return result;
    },
    
    _repaintItem$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_repaintItem$1(contentUrl, level, selectedId) {
        this._log.debug(String.format('RepaintItem ContentUrl=[{0}] level=[{1}] selectedId=[{2}]', contentUrl, level, selectedId));
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['level'] = level;
        xsltParameters['currently-selected-identifier-value'] = selectedId;
        xsltParameters['current-day'] = Date.get_today().format('yyyy-MM-dd');
        var containingElement = this._getContainingElement$1(level);
        if (!containingElement) {
            containingElement = this._createContainingElement$1(level);
        }
        else {
            this._environment.updateDomElementDirect(containingElement, String.Empty);
        }
        if (!this._autoRefreshPeriod) {
            this._environment.transformAndUpdate(containingElement.id, contentUrl, this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, function() {
                this._bindBehaviors$1(containingElement.id);
            }));
        }
        else {
            this._environment.clearPeriodicalTransformAndUpdate(containingElement.id);
            this._environment.periodicalTransformAndUpdate(containingElement.id, contentUrl, this._parameters$1.get_xsltUrl(), xsltParameters, Delegate.create(this, function() {
                this._bindBehaviors$1(containingElement.id);
                var element = this._environment.getDomElement(containingElement.id);
                if (element && element.childNodes.length > 0) {
                    var sele = element.childNodes[0];
                    if (sele) {
                        var type = sele.value.split('|')[0];
                        var marketGroup = this._bettingNavigationService$1.getMarketGroup();
                        var id;
                        if (type === 'idfwbonavigation') {
                            id = this._bettingNavigationService$1.getBONavigation()[level];
                        }
                        else {
                            id = this._bettingNavigationService$1.getMarketGroup();
                        }
                        var seleValue = String.format('{0}|{1}', type, id);
                        if (sele.value !== seleValue) {
                            sele.value = String.format('{0}|{1}', type, id);
                        }
                        if (sele.value !== seleValue) {
                            this._changeDropdown$1(sele, level);
                        }
                    }
                }
            }), containingElement.id, this._autoRefreshPeriod);
        }
    },
    
    _bindBehaviors$1: function PCQuickNavigationComponent_PCQuickNavigationComponent$_bindBehaviors$1(domID) {
        Framework.Behavior.Binding.BehaviorBinder.autoBind(this._environment.getDomElement(domID), (this));
    }
}


PCQuickNavigationComponent.QuickNavigation.createClass('PCQuickNavigationComponent.QuickNavigation');
PCQuickNavigationComponent.PCQuickNavigationComponent.createClass('PCQuickNavigationComponent.PCQuickNavigationComponent', Framework.Component.AbstractComponent, NavigationService.IPageFilterChangedListener, PCBONavigationService.IHideQuickNavigationListener, PCBONavigationService.IShowQuickNavigationListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('MarketGroupListComponent');

////////////////////////////////////////////////////////////////////////////////
// MarketGroupListComponent.MarketGroupListComponent

MarketGroupListComponent.MarketGroupListComponent = function MarketGroupListComponent_MarketGroupListComponent() {
    MarketGroupListComponent.MarketGroupListComponent.constructBase(this);
}
MarketGroupListComponent.MarketGroupListComponent.prototype = {
    
    start: function MarketGroupListComponent_MarketGroupListComponent$start() {
        MarketGroupListComponent.MarketGroupListComponent.callBase(this, 'start');
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.boNavigation);
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.marketGroup);
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.marketFromMarketGroup);
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.event);
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.marketFromEvent);
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.eventScorecastFromEvent);
    },
    
    repaint: function MarketGroupListComponent_MarketGroupListComponent$repaint() {
        this._log.debug('Repaint');
        this.clearPeriodicalTransformAndUpdateTasks();
        if (this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService.getAction())) {
            this.show();
            var xsltUrl = this._marketGroupXsltUrl;
            var contentUrl = null;
            var displayShowAll = true;
            var autoRefresh = true;
            var IDFOMarketFromEvent = this._bettingNavigationService.getMarketFromEvent();
            if (!String.isNullOrEmpty(IDFOMarketFromEvent)) {
                contentUrl = this._marketContentUrl.replace('${idfomarket}', IDFOMarketFromEvent);
            }
            else {
                var IDFOEventScorecast = this._bettingNavigationService.getEventScorecastFromEvent();
                if (!String.isNullOrEmpty(IDFOEventScorecast)) {
                    contentUrl = this._eventScorecastContentUrl.replace('${idfoeventscorecast}', IDFOEventScorecast).replace('${idfoselectedgoalscorer}', '0');
                }
                else {
                    var IDFOEvent = this._bettingNavigationService.getEvent();
                    if (!String.isNullOrEmpty(IDFOEvent)) {
                        displayShowAll = false;
                        autoRefresh = false;
                        contentUrl = this._eventContentUrl.replace('${idfoevent}', IDFOEvent);
                    }
                    else {
                        var IDFOMarketFromMarketGroup = this._bettingNavigationService.getMarketFromMarketGroup();
                        if (!String.isNullOrEmpty(IDFOMarketFromMarketGroup)) {
                            contentUrl = this._marketContentUrl.replace('${idfomarket}', IDFOMarketFromMarketGroup);
                        }
                        else {
                            var IDFWMarketGroup = this._bettingNavigationService.getMarketGroup();
                            if (!String.isNullOrEmpty(IDFWMarketGroup)) {
                                contentUrl = this._marketGroupContentUrl.replace('${idfwmarketgroup}', IDFWMarketGroup);
                            }
                            else {
                                var IDFWBONavigation = this._bettingNavigationService.getBONavigation();
                                if (IDFWBONavigation && IDFWBONavigation.length > 0) {
                                    xsltUrl = this._parameters.get_xsltUrl();
                                    autoRefresh = false;
                                    contentUrl = this._parameters.get_contentUrl().replace('${idfwbonavigation}', IDFWBONavigation[IDFWBONavigation.length - 1]);
                                }
                            }
                        }
                    }
                }
            }
            if (!String.isNullOrEmpty(contentUrl)) {
                if (autoRefresh) {
                    this._environment.periodicalTransformAndUpdate(this._domElementId, contentUrl, xsltUrl, this.getXsltParameters(displayShowAll), Delegate.create(this, function() {
                        this.transformAndUpdateCallback(this._domElementId);
                    }), this._domElementId, this._autoRefreshPeriod);
                }
                else {
                    this._environment.transformAndUpdate(this._domElementId, contentUrl, xsltUrl, this.getXsltParameters(displayShowAll), Delegate.create(this, function() {
                        this.transformAndUpdateCallback(this._domElementId);
                    }));
                }
            }
            else {
                this._environment.updateDomElement(this._domElementId, '');
            }
        }
        else {
            this.hide();
        }
    },
    
    hideRightSide: function MarketGroupListComponent_MarketGroupListComponent$hideRightSide() {
        var right = document.getElementById('right');
        if (right) {
            right.style.display = 'none';
        }
    },
    
    onEventNameOverEventHandler: function MarketGroupListComponent_MarketGroupListComponent$onEventNameOverEventHandler(sender, eventArgs) {
        var EventName = eventArgs.parameters.getAsString('eventname');
        var oDiv = document.createElement('div');
        oDiv.className = 'eventnamepop';
        if (eventArgs.domElement.innerText.indexOf('...') > -1) {
            oDiv.innerHTML = EventName;
            eventArgs.domElement.appendChild(oDiv);
        }
    },
    
    onEventNameOutEventHandler: function MarketGroupListComponent_MarketGroupListComponent$onEventNameOutEventHandler(sender, eventArgs) {
        var oDivElements = eventArgs.domElement.getElementsByTagName('div');
        for (var i = 0; i < oDivElements.length; i++) {
            eventArgs.domElement.removeChild(oDivElements[i]);
        }
    }
}


MarketGroupListComponent.MarketGroupListComponent.createClass('MarketGroupListComponent.MarketGroupListComponent', AbstractWarpComponents.AbstractMarketGroupListComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCBetPlacementComponent');

////////////////////////////////////////////////////////////////////////////////
// PCBetPlacementComponent.PCBetPlacementComponent

PCBetPlacementComponent.PCBetPlacementComponent = function PCBetPlacementComponent_PCBetPlacementComponent() {
    PCBetPlacementComponent.PCBetPlacementComponent.constructBase(this);
}
PCBetPlacementComponent.PCBetPlacementComponent.prototype = {
    
    tableDataFront: function PCBetPlacementComponent_PCBetPlacementComponent$tableDataFront() {
        return '\r\n\t\t\t<div class=\'betholder\'>\r\n\t\t\t\t<h4>{3}{4} {0}{1} {2}</h4>\r\n\t\t\t\t<table class=\'betinfo\'>\r\n\t\t\t\t\t<col class=\'colbpmk\' />\r\n\t\t\t\t\t<col class=\'colbpsel\' />\r\n\t\t\t\t\t<col class=\'colbpprc\' />\r\n\t\t\t\t\t<col class=\'colbphcp\' />\r\n\t\t\t\t\t\t<thead>\r\n\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t<th>Mercado</th>\r\n\t\t\t\t\t\t\t<th>Seleccion</th>\r\n\t\t\t\t\t\t\t<th>Precio</th>\r\n\t\t\t\t\t\t\t<th>Hcp</th>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t</thead>';
    },
    
    tableDataBottom: function PCBetPlacementComponent_PCBetPlacementComponent$tableDataBottom() {
        return '\r\n\t\t\t\t</table>\r\n\t\t\t\t<table class=\'money\'>\r\n\t\t\t\t\t<col class=\'coltotal\'/>\r\n\t\t\t\t\t<col class=\'coltotalnum\'/>\r\n\t\t\t\t\t\t<tbody>\r\n\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t<th>Monto Total</th>\r\n\t\t\t\t\t\t\t\t<td>{2} {0}</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t<th>Retorno estimado</th>\r\n\t\t\t\t\t\t\t\t<td>{2} {1}</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t</tbody>\r\n\t\t\t\t</table>\r\n\t\t\t</div>';
    },
    
    tableDataFinal: function PCBetPlacementComponent_PCBetPlacementComponent$tableDataFinal() {
        return '\r\n\t\t\t\t<table class=\'money fullmoney\'>\r\n\t\t\t\t\t<col class=\'coltotal\'/>\r\n\t\t\t\t\t<col class=\'coltotalnum\'/>\r\n\t\t\t\t\t\t<tbody>\r\n\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t<th>Monto Total</th>\r\n\t\t\t\t\t\t\t\t<td>{2} {0}</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t<th>Retorno estimado total</th>\r\n\t\t\t\t\t\t\t\t<td>{2} {1}</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t</tbody>\r\n\t\t\t\t</table>';
    },
    
    createSpanBetRef: function PCBetPlacementComponent_PCBetPlacementComponent$createSpanBetRef(placementState, outboundExternalRef, outboundIndividualBetExternalRef) {
        return (placementState === FixedOddsBettingService.BetPlacementState.placed) ? String.format('<span class=\'bpbetref\'>Numero de referencia: {0}/{1}</span>', outboundExternalRef, outboundIndividualBetExternalRef) : '';
    },
    
    createFreeSpanBetRef: function PCBetPlacementComponent_PCBetPlacementComponent$createFreeSpanBetRef(isInboundSlipFree) {
        return (isInboundSlipFree) ? '<span class=\'bpfreebet\'>LIBRE! </span>' : '';
    },
    
    formatChanged: function PCBetPlacementComponent_PCBetPlacementComponent$formatChanged(newValue, oldValue) {
        return String.format('<span style=\'color: red\'>{0}</span> (<del>{1}</del>)', newValue, oldValue);
    },
    
    resetActionEventHandler: function PCBetPlacementComponent_PCBetPlacementComponent$resetActionEventHandler(sender, eventArgs) {
        this._navigationService.setAction('Xperto');
    }
}


PCBetPlacementComponent.PCBetPlacementComponent.createClass('PCBetPlacementComponent.PCBetPlacementComponent', AbstractMMCoreComponents.AbstractBetPlacementComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('FastSearchResultsComponent');

////////////////////////////////////////////////////////////////////////////////
// FastSearchResultsComponent.FastSearchResultsComponent

FastSearchResultsComponent.FastSearchResultsComponent = function FastSearchResultsComponent_FastSearchResultsComponent() {
    FastSearchResultsComponent.FastSearchResultsComponent.constructBase(this);
}
FastSearchResultsComponent.FastSearchResultsComponent.prototype = {
    _fastSearchUrl$2: null,
    
    init: function FastSearchResultsComponent_FastSearchResultsComponent$init(environment, componentInstanceName, domElementId, parameters) {
        FastSearchResultsComponent.FastSearchResultsComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._fastSearchUrl$2 = parameters['fast-search-content-url'];
    },
    
    start: function FastSearchResultsComponent_FastSearchResultsComponent$start() {
        FastSearchResultsComponent.FastSearchResultsComponent.callBase(this, 'start');
        this._navigationService.registerTopicalizedPageFilterChangedListener(this, BettingNavigationService.BettingNavigationService.phrase);
    },
    
    repaint: function FastSearchResultsComponent_FastSearchResultsComponent$repaint() {
        this._log.debug('Repaint');
        if (this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService.getAction())) {
            this.show();
            var xsltParameters = {};
            xsltParameters['component-instance-name'] = this._componentInstanceName;
            xsltParameters['component-dom-element-id'] = this._domElementId;
            var phrase = this._bettingNavigationService.getSearchPhrase();
            var contentUrl = this._fastSearchUrl$2.replace('${phrase}', eval('escape(escape(\'' + phrase + '\'))').toString());
            this._environment.transformAndUpdate(this._domElementId, contentUrl, this._parameters.get_xsltUrl(), xsltParameters, Delegate.create(this, function() {
                this.bindBehaviors(this._domElementId);
            }));
        }
        else {
            this.hide();
        }
    }
}


FastSearchResultsComponent.FastSearchResultsComponent.createClass('FastSearchResultsComponent.FastSearchResultsComponent', AbstractWarpComponents.AbstractMarketGroupListComponent);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCResultsForSettledEventsComponent');

////////////////////////////////////////////////////////////////////////////////
// PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent

PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent = function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent() {
    this.milliSecondsInADay = 24 * 60 * 60 * 1000;
    this._oExternalXsltParameters$2 = {};
    PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent.constructBase(this);
}
PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent.prototype = {
    _navigationService$2: null,
    
    setNavigationService: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    init: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
    },
    
    renderComplete: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$renderComplete(eventArgs) {
        if (!String.isNullOrEmpty(this._oExternalXsltParameters$2['event-name'])) {
            var oNameRadio = document.getElementById(this._domElementId + '-name');
            oNameRadio.checked = true;
            this._showFilterForm$2();
        }
        if (!String.isNullOrEmpty(this._oExternalXsltParameters$2['event-date'])) {
            var oDateRadio = document.getElementById(this._domElementId + '-date');
            oDateRadio.checked = true;
            this._showFilterForm$2();
        }
        if (!String.isNullOrEmpty(this._oExternalXsltParameters$2['event-period'])) {
            var oPeriodRadio = document.getElementById(this._domElementId + '-period');
            oPeriodRadio.checked = true;
            this._showFilterForm$2();
        }
        this._attachDatePickers$2(this._domElementId + '-dateinput');
        this._attachDatePickers$2(this._domElementId + '-daterange1');
        this._attachDatePickers$2(this._domElementId + '-daterange2');
    },
    
    getXsltParameters: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        this._oExternalXsltParameters$2 = xsltParameters;
        return xsltParameters;
    },
    
    get_isComponentVisible: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    showFilterFormEventHandler: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$showFilterFormEventHandler(sender, eventArgs) {
        this._showFilterForm$2();
    },
    
    showEventsByNameEventHandler: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$showEventsByNameEventHandler(sender, eventArgs) {
        var oElement = document.getElementById(this._domElementId);
        var oInputElement = document.getElementById(this._domElementId + '-nameinput');
        var oName = oInputElement.value.trim();
        oName = oName.replace('*', '');
        oName = oName.replace('/', '');
        oName = oName.replace('#', '');
        oName = oName.replace('%', '');
        oName = oName.replace('&', '');
        var NameToShow = oName;
        oName = oName.toLowerCase();
        oName = oName.replace('\u00f1', '[n]');
        oName = oName.replace('\u00e1', '[a]');
        oName = oName.replace('\u00ed', '[i]');
        oName = oName.replace('\u00f3', '[o]');
        oName = oName.replace('\u00fa', '[u]');
        oName = oName.replace('\u00fc', '[u1]');
        oName = oName.replace('\u00e9', '[e]');
        if (String.isNullOrEmpty(oName)) {
            return;
        }
        var contentURL = String.format('/cache/settledeventsresults/{0}/{1}--.xml', this._environment.getLanguage(), oName);
        this._oExternalXsltParameters$2['event-name'] = NameToShow;
        this._oExternalXsltParameters$2['event-date'] = '';
        this._oExternalXsltParameters$2['event-period'] = '';
        this.update(oElement, contentURL, this._parameters.get_xsltUrl(), this._oExternalXsltParameters$2);
    },
    
    showEventsByDateEventHandler: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$showEventsByDateEventHandler(sender, eventArgs) {
        var oInputElement = document.getElementById(this._domElementId + '-dateinput');
        var SelectedDate = oInputElement.value.trim();
        if (!SelectedDate.length) {
            return;
        }
        var selectedDate = this._getDateTimeAsObject$2(SelectedDate);
        var date1 = selectedDate.toDateString();
        var generatedDate = new Date(selectedDate.getTime() + this.milliSecondsInADay);
        var date2 = generatedDate.toDateString();
        var oElement = document.getElementById(this._domElementId);
        var contentURL = String.format('/cache/settledeventsresults/{0}/-{1}-{2}.xml', this._environment.getLanguage(), date1, date2);
        this._oExternalXsltParameters$2['event-name'] = '';
        this._oExternalXsltParameters$2['event-date'] = SelectedDate;
        this._oExternalXsltParameters$2['event-period'] = '';
        this.update(oElement, contentURL, this._parameters.get_xsltUrl(), this._oExternalXsltParameters$2);
    },
    
    showEventsByPeriodEventHandler: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$showEventsByPeriodEventHandler(sender, eventArgs) {
        var oInputElement1 = document.getElementById(this._domElementId + '-daterange1');
        var oInputElement2 = document.getElementById(this._domElementId + '-daterange2');
        var daterange1 = oInputElement1.value.trim();
        var daterange2 = oInputElement2.value.trim();
        if (!daterange1.length || !daterange2.length) {
            return;
        }
        var oDateTime1 = this._getDateTimeAsObject$2(daterange1);
        var oDateTime2 = this._getDateTimeAsObject$2(daterange2);
        var oElement = document.getElementById(this._domElementId);
        var contentURL = String.format('/cache/settledeventsresults/{0}/-{1}-{2}.xml', this._environment.getLanguage(), oDateTime1.toDateString(), oDateTime2.toDateString());
        this._oExternalXsltParameters$2['event-name'] = '';
        this._oExternalXsltParameters$2['event-date'] = '';
        this._oExternalXsltParameters$2['event-period'] = daterange1 + ' - ' + daterange2;
        this.update(oElement, contentURL, this._parameters.get_xsltUrl(), this._oExternalXsltParameters$2);
    },
    
    _attachDatePickers$2: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$_attachDatePickers$2(InputElementID) {
        var scriptToRun = new StringBuilder('window.jQuery(function(){window.jQuery(\'#');
        scriptToRun.append(InputElementID);
        scriptToRun.append('\').datepicker(window.jQuery.extend({ changeYear: true, changeMonth: true }, window.jQuery.datepicker.regional[\'es\']));});');
        eval(scriptToRun.toString());
    },
    
    _getDateTimeAsObject$2: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$_getDateTimeAsObject$2(DateTimeIn) {
        var DateTimeParts = DateTimeIn.split('/');
        if (!DateTimeParts[0].indexOf('0')) {
            DateTimeParts[0] = DateTimeParts[0].replace('0', '');
        }
        if (!DateTimeParts[1].indexOf('0')) {
            DateTimeParts[1] = DateTimeParts[1].replace('0', '');
        }
        var oDateTime = new Date(Number.parse(DateTimeParts[2]), Number.parse(DateTimeParts[1]) - 1, Number.parse(DateTimeParts[0]));
        return oDateTime;
    },
    
    _showFilterForm$2: function PCResultsForSettledEventsComponent_PCResultsForSettledEventsComponent$_showFilterForm$2() {
        var oNameRadio = document.getElementById(this._domElementId + '-name');
        var oDateRadio = document.getElementById(this._domElementId + '-date');
        var oRangeRadio = document.getElementById(this._domElementId + '-period');
        var oFormName = document.getElementById(this._domElementId + '-nameform');
        var oFormDate = document.getElementById(this._domElementId + '-dateform');
        var oFormRange = document.getElementById(this._domElementId + '-periodform');
        oFormName.style.display = 'none';
        oFormDate.style.display = 'none';
        oFormRange.style.display = 'none';
        if (oNameRadio.checked) {
            oFormName.style.display = 'block';
        }
        if (oDateRadio.checked) {
            oFormDate.style.display = 'block';
        }
        if (oRangeRadio.checked) {
            oFormRange.style.display = 'block';
        }
    }
}


PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent.createClass('PCResultsForSettledEventsComponent.PCResultsForSettledEventsComponent', 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('PCCheckBetComponent');

////////////////////////////////////////////////////////////////////////////////
// PCCheckBetComponent.PCCheckBetComponent

PCCheckBetComponent.PCCheckBetComponent = function PCCheckBetComponent_PCCheckBetComponent() {
    PCCheckBetComponent.PCCheckBetComponent.constructBase(this);
}
PCCheckBetComponent.PCCheckBetComponent.prototype = {
    _parameters$2: null,
    
    init: function PCCheckBetComponent_PCCheckBetComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCCheckBetComponent.PCCheckBetComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters$2 = new Framework.CommonComponentParameters(parameters);
        this._validationManager = new Framework.Validation.ValidationManager(this._environment);
        this._area = [ 'input', 'resultholder', 'resultopen', 'unknown', 'error', 'nonexistentId' ];
        this._registerValidators$2();
    },
    
    renderComplete: function PCCheckBetComponent_PCCheckBetComponent$renderComplete(eventArgs) {
        PCCheckBetComponent.PCCheckBetComponent.callBase(this, 'renderComplete', [ eventArgs ]);
        this._navigationService$2.setAction('checkticket1');
        this.activateArea(this._area.indexOf('input'), null);
    },
    
    get_isComponentVisible: function PCCheckBetComponent_PCCheckBetComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters$2.get_visibleOn(), this._parameters$2.get_notVisibleOn(), this._navigationService$2.getAction());
    },
    
    getXsltParameters: function PCCheckBetComponent_PCCheckBetComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        xsltParameters['currency-symbol'] = this._accountService$2.getCurrencySimbol();
        return xsltParameters;
    },
    
    _navigationService$2: null,
    
    setNavigationService: function PCCheckBetComponent_PCCheckBetComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
        this._navigationService$2.registerTopicalizedPageFilterChangedListener(this, NavigationService.NavigationService.action);
    },
    
    onPageFilterChanged: function PCCheckBetComponent_PCCheckBetComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
    },
    
    _accountService$2: null,
    
    setAccountService: function PCCheckBetComponent_PCCheckBetComponent$setAccountService(accountService) {
        this._log.debug('AccountService');
        this._accountService$2 = accountService;
    },
    
    onBalanceChanged: function PCCheckBetComponent_PCCheckBetComponent$onBalanceChanged(eventSource) {
        this._log.debug('OnBalanceChanged');
        var currencySymbol = this._accountService$2.getCurrencySimbol() || '';
        this.updatePrivateDomElement('currencySymbol', currencySymbol);
    },
    
    _userService$2: null,
    
    setUserService: function PCCheckBetComponent_PCCheckBetComponent$setUserService(userService) {
        this._log.debug('SetUserService');
        this._userService$2 = userService;
    },
    
    onUserChanged: function PCCheckBetComponent_PCCheckBetComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        this.update();
    },
    
    _rtsService$2: null,
    
    setRTSService: function PCCheckBetComponent_PCCheckBetComponent$setRTSService(rtsService) {
        this._log.debug('SetRTSService');
        this._rtsService$2 = rtsService;
    },
    
    checkTicketEventHandler: function PCCheckBetComponent_PCCheckBetComponent$checkTicketEventHandler(sender, eventArg) {
        this._checkTicket$2();
    },
    
    _checkTicket$2: function PCCheckBetComponent_PCCheckBetComponent$_checkTicket$2() {
        var tid1 = (this.getPrivateDomElement('bttid1')).value;
        var tid2 = (this.getPrivateDomElement('bttid2')).value;
        var bsid = (this.getPrivateDomElement('bsid')).value;
        var tid = String.format('{0}-{1}-{2}', tid1, tid2, bsid);
        if (this._validationManager.validateAll()) {
            this._rtsService$2.checkBetStatus(Delegate.create(this, function(result) {
                this._showResult$2(result, tid);
            }), Delegate.create(this, function(exception) {
                if (exception.message.indexOf('Invalid bet slip ID') !== -1) {
                    this.activateArea(this._area.indexOf('nonexistentId'), null);
                }
                else {
                    this.activateArea(this._area.indexOf('error'), null);
                }
            }), tid1 + tid2, bsid);
        }
    },
    
    _showResult$2: function PCCheckBetComponent_PCCheckBetComponent$_showResult$2(result, tid) {
        var response = result;
        var ticketNoEl = this.getPrivateDomElement('ticketno');
        if (ticketNoEl) {
            ticketNoEl.innerHTML = tid;
        }
        var resultEl = this.getPrivateDomElement('result');
        if (!String.isNullOrEmpty(response.Status)) {
            switch (response.Status) {
                case 'W':
                    resultEl.innerHTML = this._translateString$2('Winner');
                    this._setPayout$2(response.Payout);
                    this.activateArea(this._area.indexOf('resultholder'), null);
                    break;
                case 'L':
                    resultEl.innerHTML = this._translateString$2('Loser');
                    this.activateArea(this._area.indexOf('resultholder'), null);
                    break;
                case 'C':
                    resultEl.innerHTML = this._translateString$2('Cancelled');
                    this.activateArea(this._area.indexOf('resultholder'), null);
                    break;
                case 'O':
                    this.activateArea(this._area.indexOf('resultopen'), null);
                    break;
                default:
                    this.activateArea(this._area.indexOf('unknown'), null);
                    break;
            }
        }
        else {
            this.activateArea(this._area.indexOf('unknown'), null);
        }
    },
    
    _setPayout$2: function PCCheckBetComponent_PCCheckBetComponent$_setPayout$2(payout) {
        var payoutHolder = this.getPrivateDomElement('payoutholder');
        if (payoutHolder) {
            payoutHolder.style.display = 'block';
        }
        var payoutEl = this.getPrivateDomElement('payout');
        if (payoutEl) {
            payoutEl.innerHTML = String.format('{0} {1}', this._accountService$2.getCurrencySimbol(), payout.format('N', true));
        }
    },
    
    _validationManager: null,
    
    _registerDefaultElementMandatoryValidator$2: function PCCheckBetComponent_PCCheckBetComponent$_registerDefaultElementMandatoryValidator$2(validationManager, elementName) {
        elementName = elementName.trim();
        var validator = new Framework.Validation.MandatoryValidator();
        validator.inputElementId = this._domElementId + '-' + elementName;
        validator.errorElementId = this._domElementId + '-errorEmpty' + '-' + elementName;
        validator.set_applyInputParentElementErrorClassOnError(false);
        validationManager.registerInputForValidation(validator);
    },
    
    _registerRegexValidator$2: function PCCheckBetComponent_PCCheckBetComponent$_registerRegexValidator$2(validationManager, regex, elementName) {
        elementName = elementName.trim();
        var regexValidator = new Framework.Validation.RegexValidator(regex);
        regexValidator.inputElementId = this._domElementId + '-' + elementName;
        regexValidator.errorElementId = this._domElementId + '-errorInvalid' + '-' + elementName;
        regexValidator.set_applyInputParentElementErrorClassOnError(false);
        validationManager.registerInputForValidation(regexValidator);
    },
    
    _registerValidators$2: function PCCheckBetComponent_PCCheckBetComponent$_registerValidators$2() {
        this._registerDefaultElementMandatoryValidator$2(this._validationManager, 'bttid1');
        this._registerDefaultElementMandatoryValidator$2(this._validationManager, 'bttid2');
        this._registerDefaultElementMandatoryValidator$2(this._validationManager, 'bsid');
        this._registerRegexValidator$2(this._validationManager, '\\d{6}', 'bttid1');
        this._registerRegexValidator$2(this._validationManager, '\\d{6}', 'bttid2');
        this._registerRegexValidator$2(this._validationManager, '\\d{10}', 'bsid');
    },
    
    _translateString$2: function PCCheckBetComponent_PCCheckBetComponent$_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;
    }
}


PCCheckBetComponent.PCCheckBetComponent.createClass('PCCheckBetComponent.PCCheckBetComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCBetSlipComponent');

////////////////////////////////////////////////////////////////////////////////
// PCBetSlipComponent.PCBetSlipComponent

PCBetSlipComponent.PCBetSlipComponent = function PCBetSlipComponent_PCBetSlipComponent() {
    this._oColors$3 = {};
    this._oSelectionColorList$3 = [];
    PCBetSlipComponent.PCBetSlipComponent.constructBase(this);
}
PCBetSlipComponent.PCBetSlipComponent.prototype = {
    _minimumAllowedStake$3: 0,
    _maximumAllowedStake$3: 1000000,
    _hoverNextTo$3: '',
    _PCBONavigationService$3: null,
    
    setPCBONavigationService: function PCBetSlipComponent_PCBetSlipComponent$setPCBONavigationService(pcBONavigationService) {
        this._log.debug('SetPCBONavigationService');
        this._PCBONavigationService$3 = pcBONavigationService;
    },
    
    onHideQuickNavigation: function PCBetSlipComponent_PCBetSlipComponent$onHideQuickNavigation(eventSource) {
        this.update();
    },
    
    onShowQuickNavigation: function PCBetSlipComponent_PCBetSlipComponent$onShowQuickNavigation(eventSource) {
        this.update();
    },
    
    toggleLocalEventHandler: function PCBetSlipComponent_PCBetSlipComponent$toggleLocalEventHandler(sender, eventArgs) {
        this._log.debug('Toggle');
        var betslip = this._environment.getDomElement(this._domElementId);
        if (betslip.className.indexOf('bson') === -1) {
            this._expandLocal$3();
            this.adjustHeight();
        }
        else {
            this._collapseLocal$3();
        }
        eventArgs.domElement.blur();
        window.event.returnValue = false;
    },
    
    _expandLocal$3: function PCBetSlipComponent_PCBetSlipComponent$_expandLocal$3() {
        this._log.debug('Expand');
        var betslip = document.getElementById(this._domElementId);
        betslip.className = betslip.className.replace('bsoff', 'bson');
    },
    
    _collapseLocal$3: function PCBetSlipComponent_PCBetSlipComponent$_collapseLocal$3() {
        this._log.debug('Collapse');
        var betslip = document.getElementById(this._domElementId);
        betslip.className = betslip.className.replace('bson', 'bsoff');
    },
    
    onSelectionsAdded: function PCBetSlipComponent_PCBetSlipComponent$onSelectionsAdded(eventSource, selection) {
        this._log.debug('OnSelectionsAdded');
        if (this.get_isComponentVisible()) {
            this.update();
        }
        if (this._expandWhenFirstSelectionAdded && this._betSlipService.getSelectionsCount() === 1) {
            this.expand();
        }
        if (this._isBetSlipOpened$3()) {
            this.adjustHeight();
        }
        this._addSelectionAndColor$3(selection);
    },
    
    onSelectionsRemoved: function PCBetSlipComponent_PCBetSlipComponent$onSelectionsRemoved(eventSource, selection) {
        this._log.debug('OnSelectionsRemoved');
        if (this.get_isComponentVisible()) {
            this.update();
        }
        if (this._expandWhenFirstSelectionAdded && !this._betSlipService.getSelectionsCount()) {
            this.collapse();
        }
        if (this._isBetSlipOpened$3()) {
            this.adjustHeight();
        }
        this._removeSelectionAndColor$3(selection);
    },
    
    onAllowedBetTypesChanged: function PCBetSlipComponent_PCBetSlipComponent$onAllowedBetTypesChanged(eventSource) {
        this._log.debug('OnAllowedBetTypesChanged');
        if (this.get_isComponentVisible()) {
            this.update();
        }
        if (this._isBetSlipOpened$3()) {
            this.adjustHeight();
        }
    },
    
    onBetSlipCalculationChanged: function PCBetSlipComponent_PCBetSlipComponent$onBetSlipCalculationChanged(eventSource) {
        this._log.debug('OnBetSlipCalculationChanged');
        if (this.get_isComponentVisible()) {
            this.populateBetSlipCalculation();
            this._addCurrency$3();
        }
    },
    
    onLastRecalculationBeforeBetPlacementIsDone: function PCBetSlipComponent_PCBetSlipComponent$onLastRecalculationBeforeBetPlacementIsDone(eventSource) {
    },
    
    onPageFilterChanged: function PCBetSlipComponent_PCBetSlipComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
        this.update();
        if (this._isBetSlipOpened$3()) {
            this.adjustHeight();
        }
        if (this._navigationService.getAction() !== 'market-group-list') {
            this._PCBONavigationService$3.setNavigationColor('');
        }
    },
    
    onUserChanged: function PCBetSlipComponent_PCBetSlipComponent$onUserChanged(eventSource) {
        this._log.debug('OnUserChanged');
        this._collapseLocal$3();
    },
    
    init: function PCBetSlipComponent_PCBetSlipComponent$init(environment, componentInstanceName, domElementId, parameters) {
        this._showCheckBetslip = Boolean.parse(parameters['show-check-betslip']);
        this._enableSlipToggling = Boolean.parse(parameters['enable-slip-toggling']);
        this._heightThreshold = parameters['height-threshold'];
        this._expandWhenFirstSelectionAdded = Boolean.parse(parameters['expand-when-first-selection-added']);
        this._autoAdjustHeight = Boolean.parse(parameters['auto-adjust-height']);
        if (!String.isNullOrEmpty(parameters['update-stake-textbox-on-state-change'])) {
            this._updateStakeTextboxOnStateChange = Boolean.parse(parameters['update-stake-textbox-on-state-change']);
        }
        if (!String.isNullOrEmpty(parameters['do-validation'])) {
            this._doValidation = Boolean.parse(parameters['do-validation']);
        }
        this._minimumAllowedStake$3 = Number.parse(parameters['min-total-stake']);
        this._maximumAllowedStake$3 = Number.parse(parameters['max-total-stake']);
        this._hoverNextTo$3 = parameters['hover-next-to'];
        this._validationManager = new Framework.Validation.ValidationManager(this._environment);
        this._oColors$3['1'] = 'blue_local';
        this._oColors$3['2'] = 'orange_local';
        this._oColors$3['3'] = 'yellow_local';
        this._oColors$3['4'] = 'pink_local';
        this._oColors$3['5'] = 'green_local';
        this._oColors$3['6'] = 'lightblue_local';
        this._environment.registerPageWillChangeListener(this);
        var state = this._environment.getStoredState(this._domElementId);
        if (state && Object.keyExists(state, 'SelectionColorList')) {
            this._oSelectionColorList$3 = state['SelectionColorList'];
        }
    },
    
    renderComplete: function PCBetSlipComponent_PCBetSlipComponent$renderComplete(eventArgs) {
        if (this._doValidation) {
            this._validationManager.clearValidators();
            var $dict1 = this._betSlipService.getSelections();
            for (var $key2 in $dict1) {
                var entry = { key: $key2, value: $dict1[$key2] };
                var key = entry.key;
                var selection = entry.value;
                var labelElementID = String.format('{0}-{1}-price-type', this._domElementId, selection.IDFOSelection);
                var _validator = new Framework.Validation.RegexValidator('^\\d*(\\.\\d{1,2})?$');
                _validator.set_applyInputParentElementErrorClassOnError(false);
                _validator.inputElementId = String.format('{0}-{1}-unit-stake', this._domElementId, selection.IDFOSelection);
                _validator.errorElementId = String.format('{0}-{1}-unit-stake-error', this._domElementId, selection.IDFOSelection);
                _validator.set_errorLabelClass('LabelError');
                this._validationManager.registerInputForValidation(_validator);
            }
            for (var i = 0; i < this._betSlipService.getAllowedBetTypes().length; i++) {
                var selection = this._betSlipService.getAllowedBetTypes()[i];
                var _validator = new Framework.Validation.RegexValidator('^\\d*(\\.\\d{1,2})?$');
                _validator.set_applyInputParentElementErrorClassOnError(false);
                _validator.inputElementId = String.format('{0}-{1}-unit-stake', this._domElementId, selection.IDFOBetType);
                _validator.errorElementId = String.format('{0}-{1}-unit-stake-error', this._domElementId, selection.IDFOBetType);
                _validator.set_errorLabelClass('LabelError');
                this._validationManager.registerInputForValidation(_validator);
            }
        }
        this._setBetSlipColor$3();
    },
    
    onPageWillChange: function PCBetSlipComponent_PCBetSlipComponent$onPageWillChange() {
        this._log.debug('OnPageWillChange');
        this._environment.storeState(this._domElementId, { SelectionColorList: this._oSelectionColorList$3 });
    },
    
    getXsltParameters: function PCBetSlipComponent_PCBetSlipComponent$getXsltParameters(contextObject) {
        var xsltParameters = PCBetSlipComponent.PCBetSlipComponent.callBase(this, 'getXsltParameters', [ contextObject ]);
        if (this._showCheckBetslip) {
            xsltParameters['show-check-betslip'] = true;
        }
        if (this._enableSlipToggling) {
            xsltParameters['enable-slip-toggling'] = true;
        }
        xsltParameters['height-threshold'] = this._heightThreshold;
        xsltParameters['retain-after-placement'] = this._betSlipService.getRetainSelectionsAfterPlacement();
        xsltParameters['is-free-bet'] = this._betSlipService.getIsFree();
        xsltParameters['currency-symbol'] = this._accountService.getCurrencySimbol();
        xsltParameters['min-total-stake'] = this._minimumAllowedStake$3;
        xsltParameters['max-total-stake'] = this._maximumAllowedStake$3;
        var freeAccount = this._accountService.get_freeAccountDetails();
        xsltParameters['show-free-bet'] = (freeAccount && freeAccount.TradingBalance > 0) ? true : false;
        if (this._betSlipService.getIsFree() && (!freeAccount || freeAccount.TradingBalance <= 0)) {
            this._betSlipService.setIsFree(false);
        }
        return xsltParameters;
    },
    
    startPlaceBetInnerEventHandler: function PCBetSlipComponent_PCBetSlipComponent$startPlaceBetInnerEventHandler(sender, eventArgs) {
        this.startPlaceBetInner();
    },
    
    startPlaceBetInner: function PCBetSlipComponent_PCBetSlipComponent$startPlaceBetInner() {
        if (this._userService.isLoggedIn()) {
            var betSlipCalculation = this._betSlipService.getBetSlipCalculation();
            var oGetStakePerBetType = this._betSlipService.getStakePerBetType();
            var StakeMinIssue = false;
            var StakeMaxIssue = false;
            var oTotal = 0;
            var $dict1 = oGetStakePerBetType;
            for (var $key2 in $dict1) {
                var oBetType = { key: $key2, value: $dict1[$key2] };
                var betTypeCalculation = (Object.keyExists(betSlipCalculation.PerBetType, oBetType.key)) ? betSlipCalculation.PerBetType[oBetType.key] : null;
                if (!StakeMinIssue) {
                    if (this._minimumAllowedStake$3 > betTypeCalculation.TotalStake) {
                        StakeMinIssue = true;
                    }
                }
                if (!StakeMaxIssue) {
                    if (this._maximumAllowedStake$3 < betTypeCalculation.TotalStake) {
                        StakeMaxIssue = true;
                    }
                }
                oTotal = oTotal + betTypeCalculation.TotalStake;
            }
            if (!this._betSlipService.getIsFree()) {
                var oCreditAccountDetails = this._accountService.get_creditAccountDetails();
                if (oCreditAccountDetails.TradingBalance <= 0) {
                    alert(this._getMoneyIssueMessage$3(0));
                    this._navigationService.goTo('accounting', { action: 'deposit' });
                    return;
                }
                if (oCreditAccountDetails.TradingBalance < oTotal) {
                    alert(this._getMoneyIssueMessage$3(1));
                    return;
                }
            }
            if (StakeMinIssue) {
                alert(this._getMoneyIssueMessage$3(2));
                return;
            }
            if (StakeMaxIssue) {
                alert(this._getMoneyIssueMessage$3(3));
                return;
            }
        }
        this.placeBet();
    },
    
    _addCurrency$3: function PCBetSlipComponent_PCBetSlipComponent$_addCurrency$3() {
        var allowedBetTypes = this._betSlipService.getAllowedBetTypes();
        for (var i = 0; i < allowedBetTypes.length; i++) {
            var TotalStakeTypeElement = this.getPrivateDomElement(String.format('{0}-total-stake', allowedBetTypes[i].IDFOBetType));
            var PotentialReturnTypeElement = this.getPrivateDomElement(String.format('{0}-potential-return', allowedBetTypes[i].IDFOBetType));
            if (TotalStakeTypeElement) {
                var TotalTypeStake = TotalStakeTypeElement.innerHTML;
                if (String.isNullOrEmpty(TotalTypeStake)) {
                    TotalTypeStake = '0';
                }
                if (TotalTypeStake.indexOf('$') === -1) {
                    TotalStakeTypeElement.innerHTML = '$' + TotalTypeStake;
                }
            }
            if (PotentialReturnTypeElement) {
                var TotalTypeReturn = PotentialReturnTypeElement.innerHTML;
                if (String.isNullOrEmpty(TotalTypeReturn)) {
                    TotalTypeReturn = '0';
                }
                if (TotalTypeReturn.indexOf('$') === -1) {
                    PotentialReturnTypeElement.innerHTML = '$' + TotalTypeReturn;
                }
            }
        }
        var TotalStakeElement = this.getPrivateDomElement('total-stake');
        if (TotalStakeElement) {
            var totalBetSlipStake = TotalStakeElement.innerHTML;
            if (totalBetSlipStake.indexOf('$') === -1) {
                TotalStakeElement.innerHTML = '$' + totalBetSlipStake;
            }
        }
        var PotentialReturnElement = this.getPrivateDomElement('potential-return');
        if (PotentialReturnElement) {
            var totalReturn = PotentialReturnElement.innerHTML;
            if (totalReturn.indexOf('$') === -1) {
                PotentialReturnElement.innerHTML = '$' + totalReturn;
            }
        }
    },
    
    adjustHeight: function PCBetSlipComponent_PCBetSlipComponent$adjustHeight() {
        if (this._autoAdjustHeight) {
            this._log.debug('AdjustHeight');
            if (this._heightThreshold !== '-1') {
                var betslip = document.getElementById(this._domElementId);
                var bshead = document.getElementById(this._domElementId + '-bshead');
                var bsbody = document.getElementById(this._domElementId + '-bsbody');
                var hoverNextTo = document.getElementById(this._hoverNextTo$3);
                if (this._heightThreshold === '0') {
                    var nDiff = hoverNextTo.offsetHeight - betslip.offsetHeight;
                    if (nDiff < 0) {
                        bsbody.style.height = String.format('{0}px', hoverNextTo.offsetHeight - bshead.offsetHeight);
                        bsbody.style.overflow = 'auto';
                    }
                    else if (nDiff > 0) {
                        bsbody.style.height = 'auto';
                        bsbody.style.overflow = 'visible';
                    }
                }
                else if (bsbody.offsetHeight > parseInt(this._heightThreshold)) {
                    bsbody.style.height = this._heightThreshold + 'px';
                    bsbody.style.overflow = 'auto';
                }
                else {
                    bsbody.style.height = 'auto';
                    bsbody.style.overflow = 'visible';
                }
            }
        }
    },
    
    _getMoneyIssueMessage$3: function PCBetSlipComponent_PCBetSlipComponent$_getMoneyIssueMessage$3(typeOfIssue) {
        var messageOut = '';
        if (!typeOfIssue) {
            var oElement0 = document.getElementById(this._domElementId + '-nomoneyissue');
            messageOut = oElement0.innerText;
        }
        if (typeOfIssue === 1) {
            var oElement1 = document.getElementById(this._domElementId + '-moneyissue');
            messageOut = oElement1.innerText;
        }
        if (typeOfIssue === 2) {
            var oElement1 = document.getElementById(this._domElementId + '-minimum-stake');
            messageOut = oElement1.innerText;
        }
        if (typeOfIssue === 3) {
            var oElement1 = document.getElementById(this._domElementId + '-maximum-stake');
            messageOut = oElement1.innerText;
        }
        return messageOut;
    },
    
    _isBetSlipOpened$3: function PCBetSlipComponent_PCBetSlipComponent$_isBetSlipOpened$3() {
        var betslip = this._environment.getDomElement(this._domElementId);
        if (betslip.className.indexOf('bson') > -1) {
            return true;
        }
        return false;
    },
    
    _setBetSlipPosition$3: function PCBetSlipComponent_PCBetSlipComponent$_setBetSlipPosition$3() {
        window.setTimeout(Delegate.create(this, function() {
            var oElement = document.getElementById(this._domElementId);
            var userMenu = 0;
            if (this._userService.isLoggedIn()) {
                userMenu = 25;
            }
            if (oElement) {
                var scrollTop = document.documentElement.scrollTop;
                if ((159 - scrollTop) >= 0) {
                    oElement.style.top = String.format('{0}px', 159 + userMenu - scrollTop);
                }
                else {
                    oElement.style.top = '0px';
                }
            }
            this.adjustHeight();
        }), 200);
    },
    
    _addSelectionAndColor$3: function PCBetSlipComponent_PCBetSlipComponent$_addSelectionAndColor$3(selections) {
        var oSelection = selections[0];
        var oSelectionColorInner = new PCBetSlipComponent.SelectionColor();
        oSelectionColorInner.IDFOSelection = oSelection.IDFOSelection;
        oSelectionColorInner.SelectionColorName = (Object.keyExists(this._oColors$3, this._PCBONavigationService$3.get_navigationColorID())) ? this._oColors$3[this._PCBONavigationService$3.get_navigationColorID()].toString() : '2';
        this._oSelectionColorList$3.add(oSelectionColorInner);
        this._setBetSlipColor$3();
    },
    
    _removeSelectionAndColor$3: function PCBetSlipComponent_PCBetSlipComponent$_removeSelectionAndColor$3(selections) {
        for (var i = 0; i < this._oSelectionColorList$3.length; i++) {
            var oSelection = this._oSelectionColorList$3[i];
            if (!selections.length || selections.length > 1) {
                this._oSelectionColorList$3.clear();
                this._setBetSlipColor$3();
            }
            else {
                if (oSelection.IDFOSelection === selections[0].IDFOSelection) {
                    this._oSelectionColorList$3.removeAt(i);
                    this._setBetSlipColor$3();
                    return;
                }
            }
        }
    },
    
    _setBetSlipColor$3: function PCBetSlipComponent_PCBetSlipComponent$_setBetSlipColor$3() {
        var color = '';
        var oThis = document.getElementById(this._domElementId);
        var CurrentClassSelectors = oThis.className;
        if (!this._oSelectionColorList$3.length) {
            var $dict1 = this._oColors$3;
            for (var $key2 in $dict1) {
                var oEntry = { key: $key2, value: $dict1[$key2] };
                CurrentClassSelectors = CurrentClassSelectors.replace(' ' + oEntry.value.toString(), '');
            }
            oThis.className = CurrentClassSelectors;
        }
        for (var i = 0; i < this._oSelectionColorList$3.length; i++) {
            var oSelection = this._oSelectionColorList$3[i];
            if (!i) {
                color = oSelection.SelectionColorName;
            }
            else {
                if (color !== oSelection.SelectionColorName) {
                    color = 'orange_local';
                }
            }
            var $dict3 = this._oColors$3;
            for (var $key4 in $dict3) {
                var oEntry = { key: $key4, value: $dict3[$key4] };
                CurrentClassSelectors = CurrentClassSelectors.replace(' ' + oEntry.value.toString(), '');
            }
            if (this._oSelectionColorList$3.length > 0) {
                CurrentClassSelectors = CurrentClassSelectors + ' ' + color;
                oThis.className = CurrentClassSelectors;
            }
        }
    }
}


////////////////////////////////////////////////////////////////////////////////
// PCBetSlipComponent.SelectionColor

PCBetSlipComponent.SelectionColor = function PCBetSlipComponent_SelectionColor() {
}
PCBetSlipComponent.SelectionColor.prototype = {
    IDFOSelection: null,
    SelectionColorName: null
}


PCBetSlipComponent.PCBetSlipComponent.createClass('PCBetSlipComponent.PCBetSlipComponent', AbstractMMCoreComponents.AbstractBetSlipComponent, UserService.IUserChangedListener, PCBONavigationService.IHideQuickNavigationListener, PCBONavigationService.IShowQuickNavigationListener, Framework.IPageWillChangeListener, BetSlipService.ILastRecalculationBeforeBetPlacement);
PCBetSlipComponent.SelectionColor.createClass('PCBetSlipComponent.SelectionColor');

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
Type.createNamespace('PCLastSettledEventsResultsComponent');

////////////////////////////////////////////////////////////////////////////////
// PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent

PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent = function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent() {
    this._oExternalXsltParameters$2 = {};
    PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent.constructBase(this);
}
PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent.prototype = {
    _refreshPeriod$2: 300000,
    _navigationService$2: null,
    
    setNavigationService: function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent$setNavigationService(navigationService) {
        this._log.debug('SetNavigationService');
        this._navigationService$2 = navigationService;
    },
    
    onPageFilterChanged: function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent$onPageFilterChanged(eventSource) {
        this._log.debug('OnPageFilterChanged');
    },
    
    init: function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent$init(environment, componentInstanceName, domElementId, parameters) {
        PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent.callBase(this, 'init', [ environment, componentInstanceName, domElementId, parameters ]);
        this._parameters = new Framework.CommonComponentParameters(parameters);
        this._refreshPeriod$2 = Number.parse(parameters['refresh-period'].toString());
    },
    
    renderComplete: function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent$renderComplete(eventArgs) {
        this._environment.periodicalTransformAndUpdate(this._domElementId, this._parameters.get_contentUrl(), this._parameters.get_xsltUrl(), this.getXsltParameters(null), Delegate.create(this, function() {
        }), this._domElementId, this._refreshPeriod$2);
    },
    
    getXsltParameters: function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent$getXsltParameters(contextObject) {
        var xsltParameters = {};
        xsltParameters['component-instance-name'] = this._componentInstanceName;
        xsltParameters['component-dom-element-id'] = this._domElementId;
        return xsltParameters;
    },
    
    get_isComponentVisible: function PCLastSettledEventsResultsComponent_PCLastSettledEventsResultsComponent$get_isComponentVisible() {
        return this.isVisible(this._parameters.get_visibleOn(), this._parameters.get_notVisibleOn(), this._navigationService$2.getAction());
    }
}


PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent.createClass('PCLastSettledEventsResultsComponent.PCLastSettledEventsResultsComponent', Framework.Component.AbstractXsltBasedComponent, NavigationService.IPageFilterChangedListener);

// ---- Do not remove this footer ----
// Generated using Script# v0.5.1.0 (http://projects.nikhilk.net)
// -----------------------------------
// RSSComponent.js
//


Type.createNamespace('RSSComponent');

////////////////////////////////////////////////////////////////////////////////
// RSSComponent.RSSComponent

RSSComponent.RSSComponent = function RSSComponent_RSSComponent() {
    RSSComponent.RSSComponent.constructBase(this);
}
RSSComponent.RSSComponent.prototype = {
    
    get_isComponentVisible: function RSSComponent_RSSComponent$get_isComponentVisible() {
        return true;
    }
}


RSSComponent.RSSComponent.createClass('RSSComponent.RSSComponent', Framework.Component.AbstractXsltBasedComponent);

// ---- 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)
// -----------------------------------

