﻿// Hook up Application event handlers.
var app = Sys.Application;
app.add_load(betting_loadPage);
Sys.Net.WebRequestManager.add_invokingRequest(OnInvokingRequest);
Sys.Net.WebRequestManager.add_completedRequest(OnWebRequestCompleted);

//General Variables
var _filterRqCount = 0;
var _leagueLinkOnId = '';
var _updating = false;
var _currentTabIndexKey = 'currentBetTabIndex';
var _tabIndexExpireMinutes = 10;
var _currentTabIndex;
var _previousTabIndex = 0;
var _cartItems;
var _singleCartItems;
var _multiCartItems;
var _systemCartItems;
var _systemTypes = new Array();
var _isOneResultItem = false;
var _justAdded = false;
var _justDeleted = false;
var _bankerCartItemImage;
var _tempPendingBets;
var _manyAcceptedRefusedBets;
var _manyPendingAlternativeBets;
var _manyPendingBets;
var _leaveInPendingBetIDs = new Array();
var _confirmingTableId;
var _acceptIds;
var _pendingBetsDeleteIds;
var _numberOfPendingUpdates = 0;
var _isNotBankerImgSrc = '/DesktopModules/BettingSlip/images/banker_off.png';
var _isBankerImgSrc = '/DesktopModules/BettingSlip/images/banker_on.png';
var _acceptedBetImgSrc = '/DesktopModules/BettingSlip/images/happyBuddy_big.png';
var _refusedBetImgSrc = '/DesktopModules/BettingSlip/images/sadBuddy_big.png';
var _acceptedBetSmallImgSrc = '/DesktopModules/BettingSlip/images/happyBuddy.png';
var _refusedBetSmallImgSrc = '/DesktopModules/BettingSlip/images/sadBuddy.png';
var _leavePendingBetSmallImgSrc = '/DesktopModules/BettingSlip/images/yellow_dummy_small.png';
var _alternativeBetImgSrc = '/DesktopModules/BettingSlip/images/attention.png';
var _leaveInReserveBetImgSrc = '/DesktopModules/BettingSlip/images/important.png';
var _printCouponAfterConfirm = false;
var _oneItemResultAction;
var _statusAccepted = 'Accepted';
var _statusRefused = 'Refused';
var _statusPending = 'Pending';
//Controls
var _navigationFilterSelectBox;
var _quickInsertOddsTypeMarkCodeSelectBoxId = 'quickInsertOddsTypeMarkCodeSelectBox';
var _cartItemsCountSpan = 'cartItemsCountSpan';
var _systemTitleSpanId = 'systemTitleSpan';
var _systemSelectorRadioButtonTableId = 'systemSelectorRadioButtonTable';
var _checkOutModalBehaviorId = 'checkOutModalPopupBehavior';
var _processingMessageLayerId = 'processingMessageDiv';
var _checkOurProgressLayerId = 'checkOutProgressDiv';
var _processingRowId = 'processingRow';
var _inReserveRowId = 'inReserveRow';
var _inReserveLayerId = 'inReserveDiv';
var _checkOutProgressRowId = 'checkOutProgressRow';
var _progressLayerId = 'progressLayer';
var _inFocusControlId;
//Dinamic Controls
var _resultLogoLayerId = 'resultLogoLayer';
var _resultSimpleLayerId = 'resultSimpleLayer';
var _closeBettingButtonId = 'closeBettingButton';
var _printCouponBettingButtonId = 'printCouponBettingButton';
var _printA4BettingButtonId = 'printA4BettingButton';
var _acceptPendingBetButtonId = 'acceptPendingBetButton';
var _refusePendingBetButtonId = 'refusePendingBetButton';
var _summaryBetsTableId = 'summaryBetsTable';
var _alternativeBetsTableId = 'alternativeBetsTable';
var _pendingBetsTableId = 'pendingBetsTable';
var _confirmPendingBetsButtonId = 'confirmPendingBetsButton';
var _confirmPrintPendingBetsButtonId = 'confirmPrintPendingBetsButton';

document.onkeypress = function(e) {
    if (window.event) e = window.event;
    _inFocusControlId = e.srcElement ? e.srcElement.id : e.target.id;
    return handleReturnKeyPress(e, this.forms[0]);
}

//********************************************************************
//                          Betting Events
//********************************************************************
function startTimerUpdate(leagueID, oddsTypeID, detailIDs, itemList) {
    setTimeout('updateValues(' + leagueID + ', ' + oddsTypeID + ', \'' + detailIDs + '\', \'' + itemList + '\')', 10000);
}

function updateValues(leagueID, oddsTypeID, detailIDs, itemList) {
    var description = '';
    var updateIDs = detailIDs.split(';');
    var updateItems = itemList.split(';');
    var updateSet = new Array(updateItems.length);
    var oddsValueSet;
    var valueIndex;
    var itemValue;

    //If array items exist and also at least one span item and OddsTypeID is current
    if (isArrayValid(updateIDs) && isArrayValid(updateItems) && elementExists($get(updateItems[0]))) {
        for (i = 0; i < updateItems.length; i++) {
            valueIndex = extractValueIndex(updateItems[i]);
            itemValue = trim(getText($get(updateItems[i])));
            if (itemValue.length > 0) {
                itemValue = itemValue.replace(_decimalSeparator, '');
                //Create new Set Object
                oddsValueSet = new WorldMatch.Gnp2.Web.Betting.Services.OddsValueSet();
                oddsValueSet.LeagueID = leagueID;
                oddsValueSet.OddsTypeID = oddsTypeID;
                oddsValueSet.OddsDetailID = updateIDs[i];
                oddsValueSet.OddsValueOld = itemValue;
                oddsValueSet.ValueIndex = valueIndex;
                oddsValueSet.ControlID = updateItems[i];
                //Add Item to array of sets
                updateSet[i] = oddsValueSet;
            }
        }
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.UpdateOddsValues(updateSet, onOddsValueUpdateResult, onErrorEmptyOutput);
        setTimeout('updateValues(' + leagueID + ', ' + oddsTypeID + ', \'' + detailIDs + '\', \'' + itemList + '\')', 60000);
    }
}

function onOddsValueUpdateResult(result, userContext) {
    if (result) {
        if (isArrayValid(result.ValueSets)) {
            var valueIncreased = false;
            for (i = 0; i < result.ValueSets.length; i++) {
                if (result.ValueSets[i].OddsValueNew != result.ValueSets[i].OddsValueOld) {
                    //Make Sure Item exists
                    if (elementExists($get(result.ValueSets[i].ControlID))) {
                        updatateValue(result.ValueSets[i].ControlID, formatNumber(result.ValueSets[i].OddsValueNew));
                        if (result.ValueSets[i].OddsValueNew > result.ValueSets[i].OddsValueOld)
                            valueIncreased = true;
                        else
                            valueIncreased = false;
                        //Call function for graphic display
                        valueUpdateded(result.ValueSets[i].ControlID, valueIncreased);
                    }
                }
            }
            if (result.UpdateCart) {
                getBettingCart(true);
            }
        }
    }
} 

function extractValueIndex(itemID) {
    var startIndex = itemID.indexOf('OddsValue') + 9;
    var result = itemID.substring(startIndex);
    switch (result) {
        case '1':
            return result;
        case '2':
            return result;
        case '3':
            return result;
        default:
            return '1';
    }
}

function updatateValue(itemID, itemValue) {
    var item = $get(itemID);
    setText(item, itemValue);
}

function valueUpdateded(itemID, increased) {
    var item = $get(itemID);
    var cell = item.parentNode;
    var imageScr = '';
    var updateImage = document.createElement('img');
    updateImage.setAttribute('id', itemID + 'updateImage');
    updateImage.setAttribute('name', itemID + 'updateImage');
    if (increased)
        imageScr = '/images/action_up.gif';
    else
        imageScr = '/images/action_down.gif';
    updateImage.setAttribute('src', imageScr);
    cell.appendChild(updateImage);
    setTimeout('setDefaultValueClass(\'' + itemID + '\')', 1000);
}

function setDefaultValueClass(itemID) {
    var item = $get(itemID);
    var cell = item.parentNode;
    var updateImage = $get(itemID + 'updateImage');
    cell.removeChild(cell.childNodes[1])
}

function ChangeOnHover(cell) {
    if(cell.className.indexOf('InCart') < 0)
        cell.className = 'OddsCellHover';
}
function ChangeOnOut(cell, betType) {
    if (cell.className.indexOf('InCart') < 0)
        cell.className = 'OddsValue' + betType;
}

//********************************************************************
//                          Betting navigation
//********************************************************************
function postbackItem(itemLinkValue) {
    crossPostBack.postbackEventPanel(itemLinkValue);
}
function canPostBackLeague() {
//    var prm = Sys.WebForms.PageRequestManager.getInstance();
//    var result = true;
//    if (prm.get_isInAsyncPostBack()) {
//        result = false;
//    }
    //    return result;
    return !_updating;
}

function leagueClick(linkId, token) {
    if (canPostBackLeague()) {
        handleNavigationTokens(token.replace(_navToEventsPrefix, ''));
        var clickedLink = $get(linkId);
        var selectedClassName = 'LeagueItemSelected';
        var normalClassName = 'LeagueItem';
        if (clickedLink.className == normalClassName) {
            clickedLink.className = selectedClassName;
        }
        else {
            clickedLink.className = normalClassName;
        }            
        getFilterControl(-1);
    }
}
function handleNavigationTokens(token) {
    var oldArray = new Array();
    var tokenArray = new Array();
    var beforeSportCount;
    var tempToken = token.split('-');
    var currentScheduleId = tempToken[0];
    var currentSportId = tempToken[1];
    var tokens = getCookie(_tokenKey);

    if (tokens == null || tokens == '') {
        tokens = token;
    }
    else {
        //Remove all tokens of different ScheduleID
        oldArray = tokens.split('|');
        tokenArray = filterNavTokensByScheduleID(oldArray, currentScheduleId);
        beforeSportCount = tokenArray.length;
        tokenArray = filterNavTokensBySportID(tokenArray, currentSportId);
        
        //If Items of different Sport were deleted then reset link classes
        if (beforeSportCount != tokenArray.length)
            resetAllNavigationLinks();
            
        tokenArray = filterByCurrentToken(tokenArray, token);
        tokens = tokenArray.join('|')
    }
    setCookie(_tokenKey, tokens, 20, 'M', '', '', '');
}

function filterNavTokensByScheduleID(startTokens, currentScheduleId) {
    var newTokenArray = new Array();
    var tempSchedueId;
    var counter = 0;
    for (i = 0; i < startTokens.length; i++) {
        tempSchedueId = startTokens[i].substring(0, 1);
        if (tempSchedueId == currentScheduleId) {
            newTokenArray[counter] = startTokens[i];
            counter++;
        }
    }
    return newTokenArray;
}
function filterNavTokensBySportID(startTokens, currentSportId) {
    var newTokenArray = new Array();
    var tempTokenArray;
    var counter = 0;
    for (i = 0; i < startTokens.length; i++) {
        tempTokenArray = startTokens[i].split('-');
        if (tempTokenArray[1] == currentSportId) {
            newTokenArray[counter] = startTokens[i];
            counter++;
        }
        else {
            //Reset Filter Request Counter So can default to QuickBet if necessary
            _filterRqCount = 0;
        }
    }
    return newTokenArray;
}
function filterByCurrentToken(startTokens, token) {
    var newTokenArray = new Array();
    var tempTokenArray;
    var counter = 0;
    var tokenFound = false;
    for (i = 0; i < startTokens.length; i++) {
        if (startTokens[i] == token) {
            tokenFound = true;
        }
        else {
            newTokenArray[counter] = startTokens[i];
            counter++;
        }
    }
    if (!tokenFound) {
        newTokenArray[counter] = token;
    }    
    return newTokenArray;
}
function resetAllNavigationLinks() {
    links = document.getElementsByTagName("A");
    var findIdName = 'leagueLink_';
    var selectedClassName = 'LeagueItemSelected';
    var normalClassName = 'LeagueItem';
    for (var x = 0; x < links.length; x++) {
        if ((links[x]) && 
            (links[x].id != null) &&
            (links[x].id != 'undefined') &&
            (links[x].id.indexOf(findIdName) != -1) &&
            (links[x].className == selectedClassName)) {
            links[x].className = normalClassName;
        }
    }
}
function navigationTreeViewClick(e) {
    if (canPostBackLeague()) {
        if (window.event) e = window.event;
        var linkSpan = e.srcElement ? e.srcElement : e.target;
        if (linkSpan.tagName.toLowerCase() == 'a') {
            var newClassName = '';
            if (linkSpan.className == 'LeagueItemSelected') {
                newClassName = 'LeagueItem';
                _leagueLinkOnId = '';
            }
            if (linkSpan.className == 'LeagueItem') {
                newClassName = 'LeagueItemSelected';
                _leagueLinkOnId = linkSpan.id;
            }

            if (newClassName != '')
                linkSpan.className = newClassName;
        }
    }
}

//********************************************************************
//                          Betting Slip
//********************************************************************
function betting_loadPage(sender, e) {
    if (!e.get_isPartialLoad()) {
        var tabIndex = getCookie(_currentTabIndexKey);
        if (tabIndex == null || tabIndex == '') {
            _currentTabIndex = 0;
            setCookie(_currentTabIndexKey, _currentTabIndex.toString(), _tabIndexExpireMinutes, 'M', '', '', '');
        }
        else {
            _currentTabIndex = parseInt(tabIndex);
        }
        
        $get(_progressLayerId).style.display = '';
        //Bind Cart Items
        getBettingCart(true);
    }

    //Determine Layout First Page Load
    bettingLayoutFirstPageLoad();
}

function pageUnload(sender, e) {
    var quickEventCode = $get(_quickInsertEventCodeTextBoxId);
    if ((quickEventCode) && (elementHasEvent(quickEventCode, 'change')))
        $removeHandler(quickEventCode, 'change', loadMarkCodesByEvent);

    //Remove WebRequest Handlers
    Sys.Net.WebRequestManager.remove_completedRequest(OnWebRequestCompleted);
    Sys.Net.WebRequestManager.remove_invokingRequest(OnInvokingRequest);
    
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ManageToken();
}

function bettingLayoutFirstPageLoad() {
    //Quick Add handler
    var quickEventCode = $get(_quickInsertEventCodeTextBoxId);
    if (quickEventCode)
        $addHandler(quickEventCode, 'change', loadMarkCodesByEvent);

    //Get Navigation
    loadNavigation();
    
    //Load Promo Images
    if ($get('promoBannersLayer').style.display != 'none') {
        rotateImage('rotatingBanner');
    }
    
    //Bind Events
    var tokenString = getCookie(_tokenKey);
    if (tokenString != null && tokenString != '') {
        getFilterControl(-1);
    }
    else {
        //Get Last Minute Bets
        generateDefaultView();
    }    
}

function tabHover(cell, isSelected) {
    if (!isSelected) {
        cell.style.cursor = 'pointer';
        cell.className = 'TabCellHover';
    }
}
function tabOut(cell, isSelected) {
    if (isSelected) {
        cell.className = 'TabSelectedCell';
    }
    else {
        cell.className = 'TabCell';
    }
    cell.style.cursor = 'default';
}

// Move an element directly on top of another element (and optionally
// make it the same size)
function cover(bottom, top, ignoreSize) {
    var location = Sys.UI.DomElement.getLocation(bottom);
    top.style.position = 'absolute';
    top.style.top = (location.y + 30) + 'px';
    top.style.left = (location.x) + 'px';
    if (!ignoreSize) {
        top.style.height = bottom.offsetHeight + 'px';
        top.style.width = bottom.offsetWidth + 'px';
    }
}

function setContinueButtonState(disable) {
    var button = $get(_continueButtonId);
    var resetButton = $get(_resetButtonId);
    button.disabled = disable;
//    if (disable)
//        button.className = 'positiveDisabled';
//    else
//        button.className = 'positive';
    
    if((_cartItems) && (_cartItems.length > 0))
        resetButton.disabled = false;
    else
        resetButton.disabled = true;
    
}

function openUserMessage(fromControl, message) {
    if (message != '') {
        var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
        var layer = $get(_userMessagesPanelId);
        var messageLabel = $get(_userMessagesLabelId);
        bettingCartHtmlTable.disabled = true;
        setHtml(messageLabel, message);
        cover(fromControl, layer, true);
        layer.style.display = 'block';
        setContinueButtonState(true);
    }
    
}

function closeUserMessage() {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    var layer = $get(_userMessagesPanelId);
    layer.style.display = 'none';
    bettingCartHtmlTable.disabled = false;
    var disableButton = true;
    if (
        (_cartItems != null) &&
        (_cartItems.length > 0) 
       ){
            switch (_currentTabIndex) {
                case 1:
                    if(_multiCartItems.length <= _maxCartItems)
                        disableButton = false;
                    break;
                case 2:
                    if(_systemCartItems.length <= _maxSystemCartItems)
                        disableButton = false;
                    break;
                default:
                    if(_cartItems.length <= _maxCartItems)
                        disableButton = false;
                    break;
            }
        }
        setContinueButtonState(disableButton);
}

function changeSelectedTab(newCurrentIndex, itemJustAdded) {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (!bettingCartHtmlTable.disabled) {
        $get(_progressLayerId).style.display = '';
        if ((_cartItems != null) && (_cartItems.length > 0)) {
            _previousTabIndex = _currentTabIndex;
            _currentTabIndex = newCurrentIndex;
            setCookie(_currentTabIndexKey, _currentTabIndex.toString(), _tabIndexExpireMinutes, 'M', '', '', '');
            //Call Method for binding Cart to New Form
            WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ChangeSelectedTab(_previousTabIndex, _currentTabIndex, itemJustAdded, changeSelectedTabResult, onError);
        }
        else {
            if (newCurrentIndex == 1) {
                openUserMessage($get(_multiBetsHtmlTableCellId), _noMultiBetItemsAvailableMsg);
            }
            else if (newCurrentIndex == 2) {
                openUserMessage($get(_systemBetsHtmlTableCellId), _noSystemBetItemsAvailableMsg);
            }
            getBettingCart(true);
        }
    }
}

function changeSelectedTabResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        getBettingCart(true);
    }
    else {
        if (result.IsSuccessful) {
            //Reload items
            getBettingCart(true);
        }
        else {
            var singleBetsHtmlTableCell = $get(_singleBetsHtmlTableCellId);
            var multiBetsHtmlTableCell = $get(_multiBetsHtmlTableCellId);
            var systemBetsHtmlTableCell = $get(_systemBetsHtmlTableCellId);
            _currentTabIndex = _previousTabIndex;
            if (result.Message == '[UNIQUEITEMS]') {
                openUserMessage(multiBetsHtmlTableCell, _uniqueBetItemsInCartMsg);
            }
            else if (result.Message == '[NOMULTITEMS]') {
                openUserMessage(multiBetsHtmlTableCell, _noMultiBetItemsAvailableMsg);
            }
            else if (result.Message == '[NOSYSTEMITEMS]') {
            openUserMessage(multiBetsHtmlTableCell, _noSystemBetItemsAvailableMsg);
            }
            else {
                alert(result.Message);
            }
            handleTabsDisplay();
            $get(_progressLayerId).style.display = 'none';
        }
    }
}

function loadMarkCodesByEvent() {
    var quickEventCode = $get(_quickInsertEventCodeTextBoxId);
    if (quickEventCode) {
        var markCodesSelectBox = $get(_quickInsertOddsTypeMarkCodeSelectBoxId);
        if ((quickEventCode.value.length > 0) && (!isNaN(quickEventCode.value))) {
            markCodesSelectBox.disabled = true;
            WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.LoadMarkCodesByEvent(quickEventCode.value, loadMarkCodesResult, onError);
        }
        else {
            quickEventCode.value = '';
            clearListBox(markCodesSelectBox);
            markCodesSelectBox.disabled = false;
            markCodesSelectBox.selectedIndex = -1;
        }
    }
}
function loadMarkCodesResult(codes) {
    if (codes) {
        var markCodesSelectBox = $get(_quickInsertOddsTypeMarkCodeSelectBoxId);
        clearListBox(markCodesSelectBox);
        for (var i = 0; i < codes.length; i++) {
            addListBoxItem(markCodesSelectBox, codes[i], codes[i]);
        }
        markCodesSelectBox.disabled = false;
        markCodesSelectBox.selectedIndex = -1;
    }
}
function quickAdd() {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (!bettingCartHtmlTable.disabled) {
        var quickEventCode = $get(_quickInsertEventCodeTextBoxId);
        var markCodesSelectBox = $get(_quickInsertOddsTypeMarkCodeSelectBoxId);
        if (
            (quickEventCode.value.length > 0) &&
            (!isNaN(quickEventCode.value)) &&
            (markCodesSelectBox.selectedIndex > -1) &&
            (markCodesSelectBox.options[markCodesSelectBox.selectedIndex].value.length > 0) &&
            (markCodesSelectBox.options[markCodesSelectBox.selectedIndex].value.indexOf('--') <= -1)
           ) {
           WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.QuickAdd(quickEventCode.value, markCodesSelectBox.value, _currentTabIndex, _tabID, _language, quickAddResult, onError);
        }
        else {
            alert(_quickAddMissingCodesMsg);
            markCodesSelectBox.selectedIndex = -1;
            quickEventCode.focus();
        }
    }
}

function quickAddResult(result, userContext) {
    var quickEventCode = $get(_quickInsertEventCodeTextBoxId);
    var markCodesSelectBox = $get(_quickInsertOddsTypeMarkCodeSelectBoxId);
    if (result.IsSuccessful) {
        //Determine item just added
        _justAdded = true;
        //Reload items
        getBettingCart(true);
    }
    else {
        if (result.Message == '[NOODDSTYPE]') {
            alert(_quickAddWrongCodesMsg);
        }
        else if (result.Message == '[UNIQUEONLYSINGLE]') {
            openUserMessage($get(_multiBetsHtmlTableCellId), _uniqueOnlyInSingleMsg);
        }
        else if ((result.Message == '[MAXCARTITEMS]') || (result.Message == '[MAXSYSTEMCARTITEMS]')) {
            var numberOfItemsMessage;
            if (_currentTabIndex == 2)
                numberOfItemsMessage = _maxSystemCartItemsMsg.replace('[MAXSYSTEMCARTITEMS]', _maxSystemCartItems + '');
            else
                numberOfItemsMessage = _maxCartItemsMsg.replace('[MAXCARTITEMS]', _maxCartItems + '');
            openUserMessage($get(_multiBetsHtmlTableCellId), numberOfItemsMessage);
        }
        else
            alert(result.Message);
        $get(_progressLayerId).style.display = 'none';
    }
    quickEventCode.value = '';
    clearListBox(markCodesSelectBox);
    quickEventCode.focus();
}

function handleReturnKeyPress(e, form) {
    var key = e.keyCode || e.which;
    if (key == 13) {
        switch(_inFocusControlId){
            case _stakePerBetTextBoxId:
                $get(_stakePerBetTextBoxId).onchange();
                $get(_stakePerBetTextBoxId).focus();
                return false;
            case _totalBetTextBoxId:
                $get(_totalBetTextBoxId).onchange();
                $get(_totalBetTextBoxId).focus();
                return false;
            default:
                //If QuickAdd Table is Visible
                if ($get(_quickInsertEventCodeTextBoxId)) {
                    quickAdd();
                }
                return false;
                break;
        }        
    }
}

function addCartItem(cellItem, leagueID, eventID, betType, oddsTypeID, oddsDetailID, oddsValue, valueIndex, lineDescription) {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (!bettingCartHtmlTable.disabled) {

        if ((_currentTabIndex != 0) && (betType.toUpperCase() == 'U')) {
            openUserMessage($get(_multiBetsHtmlTableCellId), _uniqueOnlyInSingleMsg);
        }
        else {

            //Verify if Item already in Cart and return id
            var existingId = itemExistsInCart(oddsDetailID, valueIndex, betType);
            if (existingId <= -1) {
                //Verify Number of Items
                if (canAddItem()) {
                    $get(_progressLayerId).style.display = '';
                    cellItem.className = 'OddsValue' + betType.toUpperCase() + 'InCart';
                    selectSameCells(cellItem);
                    var cartItem = new WorldMatch.Gnp2.Web.Betting.Services.CartItem();
                    cartItem.LeagueID = leagueID;
                    cartItem.EventID = eventID;
                    cartItem.BetType = betType;
                    cartItem.OddsDetailID = oddsDetailID;
                    cartItem.OddsTypeID = oddsTypeID;
                    cartItem.OddsValue = oddsValue;
                    cartItem.ValueIndex = valueIndex;
                    cartItem.LineDescription = lineDescription + ' (' + betType.toUpperCase() + ')';
                    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.AddBet(_tabID, _periodFilter, cartItem, _language, addCartItemResult, onError);
                }
                else {
                    var numberOfItemsMessage;
                    if (_currentTabIndex == 2)
                        numberOfItemsMessage = _maxSystemCartItemsMsg.replace('[MAXSYSTEMCARTITEMS]', _maxSystemCartItems + '');
                    else
                        numberOfItemsMessage = _maxCartItemsMsg.replace('[MAXCARTITEMS]', _maxCartItems + '');
                    openUserMessage($get(_stakePerBetTitleLabelId), numberOfItemsMessage);
                }
            }
            else {
                removeCartItem(existingId, oddsDetailID, valueIndex, betType);
            }
        }
    }
}
function addCartItemResult(result, userContext) {
    if (result.IsSuccessful) {
        //Determine item just added
        _justAdded = true;
        
        //Reload items
        getBettingCart(true);
    }
    else {
        $get(_progressLayerId).style.display = 'none';        
        if (result.Message == '[EVENTNOTPUB]') {
            openUserMessage($get(_multiBetsHtmlTableCellId), _invalidEventMsg);
        }
        else {
            alert(result.Message);
        }        
    }
}
function itemExistsInCart(oddsDetailID, valueIndex, betType) {
    var itemId = -1;
    for (i = 0; i < _cartItems.length; i++) {
        if (
            (_cartItems[i].OddsDetailID == oddsDetailID) &&
            (_cartItems[i].BetType == betType) &&
            (_cartItems[i].ValueIndex == valueIndex)
           ) {
            itemId = _cartItems[i].BetItemID;
            break;
        }
    }
    return itemId;
}
function canAddItem() {
    var result = true;
    if (_cartItems != null) {
        //Verify number of items based on currentTabIndex
        var count = 0;
        switch (_currentTabIndex) {
            case 1:
                for (i = 0; i < _cartItems.length; i++) {
                    if (_cartItems[i].IsSelectedInMulti)
                        count++;
                }
                if (count >= _maxCartItems)
                    result = false;
                break;
            case 2:
                for (i = 0; i < _cartItems.length; i++) {
                    if (_cartItems[i].IsSelectedInSystem)
                        count++;
                }
                if (count >= _maxSystemCartItems)
                    result = false;
                break;
            default:
                for (i = 0; i < _cartItems.length; i++) {
                    if (_cartItems[i].IsSelectedInSingle)
                        count++;
                }
                if (count >= _maxCartItems)
                    result = false;
                break;
        }
    }
    return result;
}
function removeCartItem(cartItemID, detailId, valueIndex, betType) {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (!bettingCartHtmlTable.disabled) {
        if (!_updating) {
            $get(_progressLayerId).style.display = '';
            resetOddsCell(detailId, valueIndex, betType);
            WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.RemoveCartItem(cartItemID, removeCartItemResult, onError);
        }
    }
}
function removeCartItemResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        getBettingCart(true);
    }
    else {
        if (result.IsSuccessful){
            _justDeleted = true;
            getBettingCart(true);
        }
        else {
            alert(result.Message);
        }
    }
}
function resetOddsCell(detailId, valueIndex, betType) {
    cells = document.getElementsByTagName("TD");
    var stdIdName = 'DID_' + detailId + '_' + valueIndex;
    var bestSaleIdName = 'BDID_' + detailId + '_' + valueIndex;
    var lastMinIdName = 'LDID_' + detailId + '_' + valueIndex;
    for (var x = 0; x < cells.length; x++) {
        if (
            (cells[x].id != null) &&
            (cells[x].id != 'undefined') &&
            ((cells[x].id.endsWith(stdIdName)) ||
             (cells[x].id.endsWith(bestSaleIdName)) ||
             (cells[x].id.endsWith(lastMinIdName))
            )
           ) {
            cells[x].className = 'OddsValue' + betType;
        }
    }
}

function selectSameCells(cellItem) {
    //First determine if there could be other cells to set
    if ((cellItem.id.indexOf('BDID') > -1) || (cellItem.id.indexOf('LDID') > -1)) {
        var oddsDetailId = '';
        if (cellItem.id.indexOf('BDID') > -1)
            oddsDetailId = cellItem.id.substring(cellItem.id.indexOf('BDID')).replace('BDID', 'LDID');
        if (cellItem.id.indexOf('LDID') > -1)
            oddsDetailId = cellItem.id.substring(cellItem.id.indexOf('LDID')).replace('LDID', 'BDID');

        cells = document.getElementsByTagName("TD");
        for (var x = 0; x < cells.length; x++) {
            if (
                (cells[x].id != null) &&
                (cells[x].id != 'undefined') &&
                (cells[x].id != cellItem.id) &&
                (cells[x].id.endsWith(oddsDetailId))
               ) {
                cells[x].className = cellItem.className;
            }
        }
    }
}

function resetCart() {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (!bettingCartHtmlTable.disabled) {
        for (i = 0; i < _cartItems.length; i++)
            resetOddsCell(_cartItems[i].OddsDetailID, _cartItems[i].ValueIndex, _cartItems[i].BetType);
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.EmptyCart(resetCartResult, onError);
    }
}
function resetCartResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
    }
    else {
        if (!result.IsSuccessful){        
            alert(result.Message);
        }
    }
    getBettingCart(true);
}
function getBettingCart(forceRefresh) {
    if ((_cartItems == null) || (forceRefresh)) {
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.GetBettingCart(getBettingCartResult, onError);
    }
}

function getBettingCartResult(result, userContext) {
    _cartItems = result;
    _singleCartItems = getCartSubItems('single');
    _multiCartItems = getCartSubItems('multi');
    _systemCartItems = getCartSubItems('system');
    var justAddedOrDeleted = false;

    if ((_cartItems != null) && (_cartItems.length > 0)) {

        if ((_justAdded) || (_justDeleted))
            justAddedOrDeleted = true;

        //Reset Variables;
        _justAdded = false;
        _justDeleted = false;
        
        //Bring to Multi if:
        //1. New addition occured,
        //2. CurrentTabIndex is different than 1
        //3. There are at least 2 items
        //4. No BetTypes 3 and 5 exists
        //5. All items refer DIFFERENT Events

        //Bring to System if:
        //1. New addition occured,
        //2. CurrentTabIndex is different than 2
        //3. There are at least 3 items
        //5. All items refer ANY Event even the same
        
//            (!betTypeExists('3')) &&
//            (!betTypeExists('5')) &&
        if (
            (justAddedOrDeleted) &&
            (_currentTabIndex != 1) &&
            (_multiCartItems.length >= 2) &&
            (!betTypeExists('U')) &&
            (cartItemsHaveDistinctEvent())
           ) {
           changeSelectedTab(1, true);
        }
        else if (
                 (justAddedOrDeleted) &&
                 (_currentTabIndex != 2) &&
                 (_systemCartItems.length >= 3) &&
                 (!betTypeExists('U')) &&
                 (!cartItemsHaveDistinctEvent())
                ) {
            if (cartDistinctEventCount() > 1) {
                changeSelectedTab(2, true);
            }
            else{
                changeSelectedTab(0, true);
            }
        }
        //Verify _multiCartItems in cart based on current tab. just those selected
        else if ((_currentTabIndex == 1) && (_multiCartItems.length <= 1)) {
            changeSelectedTab(0, false);
        }
        //Verify Number of Items in cart based on current tab for system evaluate all items
        else if ((_currentTabIndex == 2) && (_cartItems.length == 2)) {
            if (cartItemsHaveDistinctEvent() && (!betTypeExists('U')))
                changeSelectedTab(1, false);
            else
                changeSelectedTab(0, false);
        }
        else if ((_currentTabIndex == 2) && (_cartItems.length < 2)) {
            changeSelectedTab(0, false);
        }
        else {
            //Bind Cart
            bindBettingCart();
        }
    }
    else {
        //Bind empty cart and set on first tab
        _currentTabIndex = 0;
        bindBettingCart();
    }
}

function cartItemsHaveDistinctEvent() {
    var events = new Array();
    var areDistinct = true;
    for (i = 0; i < _cartItems.length; i++) {
        for (e = 0; e < events.length; e++) {
            if ((!_cartItems[i].IsRace) && (_cartItems[i].EventID == events[e]))
                areDistinct = false;
        }
        events[i] = _cartItems[i].EventID;
    }
    return areDistinct;
}

function cartDistinctEventCount() {
    var events = new Array();
    var addEvent = true;
    for (i = 0; i < _cartItems.length; i++) {
        addEvent = true;
        for (e = 0; e < events.length; e++) {
            if (_cartItems[i].EventID == events[e])
                addEvent = false;
        }
        if(addEvent)
            events[events.length] = _cartItems[i].EventID;
    }
    return events.length;
}

function bindBettingCart() {
    var repeater = $find(_bettingCartRepeaterId);
    if (repeater) {
        //Bind Repeater
        repeater.set_dataSource(_cartItems);
        repeater.dataBind();

        //Recalculate Totals
        getCartSummary();

        //Eventually hide default label and show CartTable
        displayCart((_cartItems != null) && (_cartItems.length > 0));
    }    
}

function getCartSummary() {
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.GetCartSummary(_currentTabIndex, _userCulture, getCartSummaryResult, onError);
}
function getCartSummaryResult(result, userContext) {
    var itemsCountMultiTableRow = $get('ItemsCountMultiTableRow');
    var minPossibleWinningsTableRow = $get('MinPossibleWinningsTableRow');
    var cartItemsCountSpan = $get(_cartItemsCountSpan);
    var totalOddsForMultiLabel = $get(_totalOddsForMultiLabelId);
    var stakePerBetTextBox = $get(_stakePerBetTextBoxId);
    var bonusForMultiTableRow = $get(_bonusForMultiHtmlTableRowId);
    var bonusTitleForMultiLabel = $get(_bonusTitleForMultiLabelId);
    var bonusValueForMultiLabel = $get(_bonusValueForMultiLabelId);
    var systemTitleHtmlTableRow = $get(_systemTitleHtmlTableRowId);
    var systemTitleSpan = $get(_systemTitleSpanId);
    var systemSelectorHtmlTableRow = $get(_systemSelectorHtmlTableRowId);
    var systemSelectorRadioButtonTable = $get(_systemSelectorRadioButtonTableId);
    var bonusForSystemLabel = $get(_bonusForSystemLabel);
    var totalBetHtmlTableRow = $get(_totalBetHtmlTableRowId);
    var totalBetLabel = $get(_totalBetLabelId);
    var totalBetTextBox = $get(_totalBetTextBoxId);
    var minPossibleWinningsLabel = $get(_minPossibleWinningsLabelId);
    var maxPossibleWinningsLabel = $get(_maxPossibleWinningsLabelId);
    var totalBetText = '';
    var totalBet = '';
    var totalWinning = '';

    switch (_currentTabIndex) {
        case 1:
            itemsCountMultiTableRow.style.display = '';
            setHtml(cartItemsCountSpan, _multiCartItems.length);

            systemTitleHtmlTableRow.style.display = 'none';
            systemSelectorHtmlTableRow.style.display = 'none';
            minPossibleWinningsTableRow.style.display = 'none';
            if (result.MultiBonusPercentage > 0) {
                //Show Row and set label with percentage and label with value
                bonusForMultiTableRow.style.display = '';
                setHtml(bonusTitleForMultiLabel, _bonusForMultiText.replace('{0}', formatNumber(result.MultiBonusPercentage)));
                setHtml(bonusValueForMultiLabel, result.MultiBonusTextValue);
            }
            else {
                bonusForMultiTableRow.style.display = 'none'
            }

            //Get Total Winning
            totalWinning = result.MultiTotalWinning;

            //Show Label Hide TextBox for Total Bet
            totalBetHtmlTableRow.style.display = 'none';

            //If values are = 0 then Invalid Bet
            if (
                (result.ErrorCode != '') ||
                ((result.StakePerBet != 0) &&
                 (result.TotalOdds == 0) &&
                 (result.MultiTotalBetValue == 0)
                )
               ) {
                var errorMessage = '';
                switch (result.ErrorCode) {
                    case '0190':
                        errorMessage = ''; //_noUOrWrongNumberInMultiMsg;
                        break;
                    case '0191':
                        errorMessage = _error0191MultiDuplicatedEvent;
                        break;
                    case '0192':
                        errorMessage = _error0192MultiDuplicatedParticipant;
                        break;
                    case '0193':
                        errorMessage = _error0193MultiExceedingMaxOccurences;
                        break;
                    default:
                        errorMessage = _error0190MultiNotCompliant;
                        break;
                }
                openUserMessage($get(_stakePerBetTitleLabelId), errorMessage);
            }
            break;
        case 2:
            if (isArrayValid(result.SystemTypes)) {
                var systemCounter = -1; //Start at -1
                var itemSelected = new Array();
                var selectionCount = 0;

                //Set System Title
                if (result.HasDuplicatedEvents) {
                    setText(systemTitleSpan, _systemTitleDoubleIntegral);
                    totalWinning = 'N.D.';
                }
                else {
                    setText(systemTitleSpan, _systemTitleMarginError);
                    totalWinning = result.SystemMaxPotentialWinning;
                }

                _systemTypes = result.SystemTypes;

                //Clear Previous Items in RadioButton List 
                while (systemSelectorRadioButtonTable.childNodes[0]) {
                    systemSelectorRadioButtonTable.removeChild(systemSelectorRadioButtonTable.childNodes[0]);
                }

                //Set a local parent container variable for table 
                var parentContainer = systemSelectorRadioButtonTable;
                //If Internet Explorer 7 or earlier add TBODY
                if (isIE()) {
                    var bodyContainer = document.createElement("TBODY");
                    systemSelectorRadioButtonTable.appendChild(bodyContainer);
                    parentContainer = systemSelectorRadioButtonTable.childNodes[0];
                }

                for (i = 0; i < result.SystemTypes.length; i++) {
                    if (result.SystemTypes[i].IsEnabled) {
                        addCheckButtonItem(parentContainer, result.SystemTypes[i].Value, result.SystemTypes[i].Description);
                        systemCounter++; //increase system index counter
                        if (result.SystemTypes[i].IsSelected) {
                            itemSelected[selectionCount] = systemCounter;
                            selectionCount++;
                        }
                    }
                }

                //Select first Item (1st Row, 1st Cell, 1st control is Radio input)
                for (e = 0; e < itemSelected.length; e++) {
                    parentContainer.childNodes[itemSelected[e]].childNodes[0].childNodes[0].checked = true;
                }

                //Show Row
                systemTitleHtmlTableRow.style.display = '';
                systemSelectorHtmlTableRow.style.display = '';
                totalBetHtmlTableRow.style.display = '';
            }
            else {
                systemTitleHtmlTableRow.style.display = 'none';
                systemSelectorHtmlTableRow.style.display = 'none';
            }

            //Handle Bonus Display
            if (result.SystemBonusPercentage > 0) {
                setHtml(bonusForSystemLabel, _bonusForSystemText.replace('{0}', formatNumber(result.SystemBonusPercentage)));
                bonusForSystemLabel.style.display = '';
            }
            else {
                bonusForSystemLabel.style.display = 'none'
            }

            //Set Totals
            totalBet = formatNumber(result.SystemTotalBetValue);
            totalBetText = result.SystemTotalBetText;
            var totalMinWinning = result.SystemMinPotentialWinning;

            //Show TextBox Hide Label for Total Bet
            totalBetTextBox.style.display = '';
            totalBetLabel.style.display = 'none';

            //Set Minimun Possible Winning
            setText(minPossibleWinningsLabel, totalMinWinning);
            minPossibleWinningsTableRow.style.display = '';

            //If values are = 0 then Invalid Bet
            if (
                (result.ErrorCode != '') ||
                ((result.SystemTypes) &&
                 (result.SystemTypes.length == 0)
                )
               ) {
                if (result.ErrorCode != '')
                    openUserMessage($get(_stakePerBetTitleLabelId), result.ErrorCode);
                else
                    openUserMessage($get(_stakePerBetTitleLabelId), _noUOrWrongNumberInMultiMsg);
            }

            //Hide non applicable items
            itemsCountMultiTableRow.style.display = 'none';
            bonusForMultiTableRow.style.display = 'none'

            break;
        default:
            //Hide non applicable items
            itemsCountMultiTableRow.style.display = 'none';
            bonusForMultiTableRow.style.display = 'none'
            systemTitleHtmlTableRow.style.display = 'none';
            systemSelectorHtmlTableRow.style.display = 'none';
            minPossibleWinningsTableRow.style.display = 'none';

            //Verify ErrorCode
//            if (result.ErrorCode != '') {
//                openUserMessage($get(_stakePerBetTitleLabelId), _noM3M5InSingleMsg);
//            }

            //Show Label Hide TextBox for Total Bet
            totalBetHtmlTableRow.style.display = '';
            totalBetTextBox.style.display = 'none';
            totalBetLabel.style.display = '';
            totalBetText = result.SingleTotalBetText;
            totalWinning = result.SingleTotalWinning;
            break;
    }

    //Bind values
    setText(totalOddsForMultiLabel, formatNumber(result.TotalOdds));
    setText(stakePerBetTextBox, formatNumber(result.StakePerBet));
    setText(totalBetLabel, totalBetText);
    setText(totalBetTextBox, totalBet);
    setText(maxPossibleWinningsLabel, totalWinning);

    $get(_progressLayerId).style.display = 'none';
//    _updating = false;
}
function addCheckButtonItem(parent, value, text) {
    var radioRow = document.createElement('tr');
    var radioButtonCell = document.createElement('td');
    var radioLabelCell = document.createElement('td');
    var radioButtonItem;
    radioButtonCell.vAlign = 'middle';
    radioLabelCell.vAlign = 'middle';

    if (value == 'TOT') {
        radioButtonCell.style.borderTop = '1px black dotted';
        radioLabelCell.style.borderTop = '1px black dotted';
    }

    if (isIE()) {
        radioButtonItem = document.createElement('<input type=\'checkbox\' id=\'sysCheck_' + value + '\' name=\'sysCheck_' + value + '\' value=\'' + value + '\' />');
    }
    else if (document.createElement && document.createTextNode) {
        radioButtonItem = document.createElement('input');
        radioButtonItem.setAttribute('type', 'checkbox');
        radioButtonItem.setAttribute('id', 'sysCheck_' + value);
        radioButtonItem.setAttribute('name', 'sysCheck_' + value);
        if (value != null) {
            radioButtonItem.setAttribute("value", value);
        }
    }
    
    //Add OnClick Event Handler
    radioButtonItem.onclick = function() {
        systemTypeChange(this);
    }

    //Add Radio Button to Cell
    radioButtonCell.appendChild(radioButtonItem);

    //Create Span element
    var radioLabelItem = document.createElement('span');
    radioLabelItem.className = 'systemSelectorItemLabel';
    setText(radioLabelItem, text);

    //Add Span to Cell
    radioLabelCell.appendChild(radioLabelItem);

    //Add Cells to Row
    radioRow.appendChild(radioButtonCell);
    radioRow.appendChild(radioLabelCell);

    //Add Row to Table
    parent.appendChild(radioRow);    
}

function displayCart(show) {
    var defaultMessageLabel = $get(_defaultMessageLabelId);
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (show) {
        defaultMessageLabel.style.display = 'none';
    }
    else {
        defaultMessageLabel.style.display = '';
    }

    //Display and Configure Tabs based on CurrentTabIndex
    handleTabsDisplay();
}

function handleTabsDisplay() {
    //Reset Tabs
    SetTabs();
    
    //1. Display additional items based on Tab Index
    //2. Handle Continue Button display based on CurrentTabIndex or BetType
    //Single at least 1 bet selected;
    //Multi at least 2 bets selected;
    //System at least 3 bets selected
    var betSlipSummaryTableRow = $get(_betSlipSummaryTableRowId);
    var betSlipCommandsTableRow = $get(_betSlipCommandsTableRowId);
    var totalOddsForMultiHtmlTableRow = $get(_totalOddsForMultiHtmlTableRowId);
    var continueButtonEnabled = false;
    var reachedMaxItems = false;
    
    //Check if there are items in cart
    if (_cartItems.length > 0) {

        //Show ALL Summary
        betSlipSummaryTableRow.style.display = '';
        betSlipCommandsTableRow.style.display = '';
        switch (_currentTabIndex) {
            case 1:
                totalOddsForMultiHtmlTableRow.style.display = '';
                continueButtonEnabled = ((_multiCartItems.length > 1) && (_multiCartItems.length <= _maxCartItems));
                if (_multiCartItems.length > _maxCartItems) {
                    reachedMaxItems = true;
                    numberOfItemsMessage = _maxCartItemsMsg.replace('[MAXCARTITEMS]', _maxCartItems + '');
                }
                break;
            case 2:
                totalOddsForMultiHtmlTableRow.style.display = 'none';
                continueButtonEnabled = ((_systemCartItems.length > 2) && (_systemCartItems.length <= _maxSystemCartItems));
                if (_systemCartItems.length > _maxSystemCartItems) {
                    reachedMaxItems = true;
                    numberOfItemsMessage = _maxSystemCartItemsMsg.replace('[MAXSYSTEMCARTITEMS]', _maxSystemCartItems + '');
                }
                break;
            default:
                totalOddsForMultiHtmlTableRow.style.display = 'none';
                continueButtonEnabled = ((_cartItems.length > 0) && (_cartItems.length <= _maxCartItems));
                if (_cartItems.length > _maxCartItems) {
                    reachedMaxItems = true;
                    numberOfItemsMessage = _maxCartItemsMsg.replace('[MAXCARTITEMS]', _maxCartItems + '');
                }
                break;
        }
        setContinueButtonState(!continueButtonEnabled);

        //Show Max items message
        if (reachedMaxItems) {
            openUserMessage($get(_stakePerBetTitleLabelId), numberOfItemsMessage);
        }
    }
    else {
        //Hide ALL Summary
        var systemTitleHtmlTableRow = $get(_systemTitleHtmlTableRowId);
        var systemSelectorHtmlTableRow = $get(_systemSelectorHtmlTableRowId);        
        systemTitleHtmlTableRow.style.display = 'none';
        systemSelectorHtmlTableRow.style.display = 'none';
        betSlipSummaryTableRow.style.display = 'none';
        betSlipCommandsTableRow.style.display = 'none';
    }
}

function SetTabs() {
    var singleBetsHtmlTableCell = $get(_singleBetsHtmlTableCellId);
    var multiBetsHtmlTableCell = $get(_multiBetsHtmlTableCellId);
    var systemBetsHtmlTableCell = $get(_systemBetsHtmlTableCellId);

    switch (_currentTabIndex) {
        case 1:
            multiBetsHtmlTableCell.className = 'TabSelectedCell';
            singleBetsHtmlTableCell.className = 'TabCell';
            systemBetsHtmlTableCell.className = 'TabCell';
            singleBetsHtmlTableCell.onclick = function() {
                changeSelectedTab(0, false);
            }
            systemBetsHtmlTableCell.onclick = function() {
                changeSelectedTab(2, false);
            }
            break;
        case 2:
            systemBetsHtmlTableCell.className = 'TabSelectedCell';
            singleBetsHtmlTableCell.className = 'TabCell';
            multiBetsHtmlTableCell.className = 'TabCell';
            singleBetsHtmlTableCell.onclick = function() {
                changeSelectedTab(0, false);
            }
            multiBetsHtmlTableCell.onclick = function() {
                changeSelectedTab(1, false);
            }
            break;
        default:
            singleBetsHtmlTableCell.className = 'TabSelectedCell';
            multiBetsHtmlTableCell.className = 'TabCell';
            systemBetsHtmlTableCell.className = 'TabCell';

            //Need to distinguish behaviour according to Number of Bets.
            //Enable Multi bet tabs ONLY if the cart contains more than 1 Bet
            multiBetsHtmlTableCell.onclick = function() {
                changeSelectedTab(1, false);
            }

            //Enable System bet tabs ONLY if the cart contains more than 2 Bet
            systemBetsHtmlTableCell.onclick = function() {
                changeSelectedTab(2, false);
            }

            break;
    }

    //Set Specific Mouse Events
    singleBetsHtmlTableCell.onmouseover = function() {
        tabHover(this, ((_currentTabIndex == 0) ? true : false)); 
    }
    singleBetsHtmlTableCell.onmouseout = function() {
        tabOut(this, ((_currentTabIndex == 0) ? true : false)); 
    }

    multiBetsHtmlTableCell.onmouseover = function() {
        tabHover(this, ((_currentTabIndex == 1) ? true : false)); 
    }
    multiBetsHtmlTableCell.onmouseout = function() {
        tabOut(this, ((_currentTabIndex == 1) ? true : false)); 
    }
    
    //Enable Cells
    multiBetsHtmlTableCell.disabled = false;

    systemBetsHtmlTableCell.onmouseover = function() {
        tabHover(this, ((_currentTabIndex == 2) ? true : false));
    }
    systemBetsHtmlTableCell.onmouseout = function() {
        tabOut(this, ((_currentTabIndex == 2) ? true : false)); 
    }

    //Enable Cells
    systemBetsHtmlTableCell.disabled = false;
}

function getCartSubItems(itemType) {
    var subItems = new Array();
    var count = 0;
    if ((_cartItems) && (_cartItems.length > 0)) {
        switch (itemType) {
            case 'single':
                for (i = 0; i < _cartItems.length; i++) {
                    if (_cartItems[i].IsSelectedInSingle) {
                        subItems[count] = _cartItems[i];
                        count++;
                    }
                }
                break;
            case 'multi':
                for (e = 0; e < _cartItems.length; e++) {
                    if (_cartItems[e].IsSelectedInMulti) {
                        subItems[count] = _cartItems[e];
                        count++;
                    }
                }
                break;
            case 'system':
                for (f = 0; f < _cartItems.length; f++) {
                    if (_cartItems[f].IsSelectedInSystem) {
                        subItems[count] = _cartItems[f];
                        count++;
                    }
                }
                break;
            default:
                subItems = _cartItems;
                break;
        }
    }

    return subItems;
}

function manageBanker(cartItemID, bankerImageId) {
    if (!_updating) {
        $get(_progressLayerId).style.display = '';
        //Save in memory reference to clicked bankerImage
        _bankerCartItemImage = $get(bankerImageId);
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ManageBanker(cartItemID, manageBankerResult, onError);
    }
}

function manageBankerResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        getBettingCart(true);
    }
    else {
        if (result.IsSuccessful) {
            getBettingCart(true);
        }
        else {
            var bankerMessage = result.Message;
            if (bankerMessage == '[BANKER2SAMEEVENT]')
                bankerMessage = _no2BankersSameEventMsg;
            if (bankerMessage == '[BANKERATLEAST2]')
                bankerMessage = _atLeast2NonBankersMsg;
            openUserMessage($get(_bettingCartHtmlTableId), bankerMessage);
        }
    }
}

function betTypeExists(searchBetType){
    var typeExists = false;
    for (x = 0; x < _cartItems.length; x++) {
        if (_cartItems[x].BetType == searchBetType) {
            typeExists = true;
            break;
        }
    }
    return typeExists;
}

function cartItemCheckedChanged(eventID, betItemID, checkBox) {
    var isChecked = checkBox.checked;
    var canAddItems = true;
    var canManageSelection = true;
    var betItem;
    if ((_currentTabIndex == 1) || (_currentTabIndex == 2)) {
        for (x = 0; x < _cartItems.length; x++) {
            if (_cartItems[x].BetItemID == betItemID) {
                betItem = _cartItems[x];
                break;
            }
        }
        if (betItem.BetType == 'U')
            canManageSelection = false;
        if ((_currentTabIndex == 1) && (checkBox.checked) && (betItem.BetType == '3')) {
            if(_multiCartItems.length < 2)
                canManageSelection = false;
        }
        if ((_currentTabIndex == 1) && (checkBox.checked) && (betItem.BetType == '5')) {
            if (_multiCartItems.length < 4)
                canManageSelection = false;
        }
    }
    //Verify Number of Items
    if (isChecked) {
        canAddItems = canAddItem();
        canManageSelection = canAddItems;
    }
    if (canManageSelection) {
        $get(_progressLayerId).style.display = '';
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ManageCartItemSelection(eventID, betItemID, _currentTabIndex, isChecked, cartItemCheckedChangedResult, onError);
    }
    else {
        checkBox.checked = !checkBox.checked;
        
        //Show Item Number alert if necessary
        if (!canAddItems) {
            var numberOfItemsMessage;
            if (_currentTabIndex == 2)
                numberOfItemsMessage = _maxSystemCartItemsMsg.replace('[MAXSYSTEMCARTITEMS]', _maxSystemCartItems + '');
            else
                numberOfItemsMessage = _maxCartItemsMsg.replace('[MAXCARTITEMS]', _maxCartItems + '');
            openUserMessage($get(_stakePerBetTitleLabelId), numberOfItemsMessage);
        }
    }        
}

function cartItemCheckedChangedResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
    }
    else {
        if (result.IsSuccessful) {
        }
        else {
            alert(result.Message);
        }
    }
    //Rebind Items
    getBettingCart(true);
}

function stakePerBetChanged(newStake) {
    if (!_updating) {
        $get(_progressLayerId).style.display = '';
        var newStakeAmount = parseNumber(newStake.value);
        //Update Stake Per Bet
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ChangeStakePerBet(formatFloat(newStakeAmount), _userCulture, stakePerBetChangedResult, onError);
    }
}

function stakePerBetChangedResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        getBettingCart(true);
    }
    else {
        //display any error
        if (!result.IsSuccessful) {
            alert(result.Message);
        }
        //Rebind Summary
        bindBettingCart();
    }
}

function totalBetChanged(newTotal) {
    if ((!_updating) && (_currentTabIndex == 2)) {
        $get(_progressLayerId).style.display = '';
        var newTotalAmount = parseNumber(newTotal.value);
        //Update Stake Per Bet
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ChangeTotalBet(formatFloat(newTotalAmount), _userCulture, totalBetChangedResult, onError);
    }
}

function totalBetChangedResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        getBettingCart(true);
    }
    else {
        //display any error
        if (!result.IsSuccessful) {
            alert(result.Message);
        }
        //Rebind Summary
        bindBettingCart();
    }
}

function systemTypeChange(radioItem) {
    if (!_updating) {
        $get(_progressLayerId).style.display = '';
        var newSystemBet = radioItem.value;
        var systemTypeBetSizes = updateSystemTypeBetSizes(((newSystemBet == 'TOT') || (newSystemBet == 'FTS')));

        if (systemTypeBetSizes.length <= 0) {
            if (radioItem.checked) {
                if (newSystemBet == 'TOT') {
                    $get('sysCheck_' + 'FTS').checked = false;
                }
                if (newSystemBet == 'FTS') {
                    $get('sysCheck_' + 'TOT').checked = false;
                }
            }
            else {
                radioItem.checked = true; //Recheck item
                $get(_progressLayerId).style.display = 'none';
                return false;
            }
        }
        
        if (systemTypeBetSizes.length > 1) {
            newSystemBet = 'COM';
        }

        if (systemTypeBetSizes.length == 1) {
            if (radioItem.checked) {
                newSystemBet = radioItem.value;
            }
            else {
                //Single System must recreate value string if reading from collection
                newSystemBet = createSystemValue(newSystemBet, systemTypeBetSizes[0]);
            }
        }
        
        //Update Stake Per Bet
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ChangeSystemBet(newSystemBet, systemTypeBetSizes, systemTypeChangeResult, onError);
    }
}
function systemTypeChangeResult(result, userContext) {
    if (result.CartExpired) {
        //Cart Empty Rebind for correct display
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        getBettingCart(true);
    }
    else {
        //display any error
        if (!result.IsSuccessful) {
            alert(result.Message);
        }
        //Rebind Summary
        getCartSummary();
    }
}
function updateSystemTypeBetSizes(reset) {
    var systemTypeArray = new Array();
    var systemTypeItem;
    var counter = 0;
    var inputs = document.getElementsByTagName("input");
    if (!reset) {
        var systemChecks = $get('sysCheck_' + 'TOT');
        if (systemChecks)
            systemChecks.checked = false;
        systemChecks = $get('sysCheck_' + 'FTS')
        if (systemChecks)
            systemChecks.checked = false;
    }
    for (var x = 0; x < inputs.length; x++) {
        if (
            (inputs[x].id != null) &&
            (inputs[x].id != 'undefined') &&
            (inputs[x].type == 'checkbox') &&
            (inputs[x].id.indexOf('sysCheck_') > -1) &&
            (inputs[x].value != 'TOT') &&
            (inputs[x].value != 'FTS') &&
            (inputs[x].checked)
           ) {
            if (reset) {
                inputs[x].checked = false;
            }
            else {
                if (inputs[x].value.indexOf(':') > -1) {
                    //Is a Banker System
                    systemTypeItem = inputs[x].value.split(':');
                    systemTypeItem = systemTypeItem[1].split('-');
                }
                else {
                    systemTypeItem = inputs[x].value.split('-');
                }
                //Add Item to array
                systemTypeArray[counter] = parseInt(systemTypeItem[0]);
                counter++
            }
        }
    }
    return systemTypeArray;
}
function createSystemValue(itemFormat, betSize) {
    var generalArray, systemDefinitionArray;
    var itemValue;
    if (itemFormat.indexOf(':') > -1) {
        //Is a Banker System
        generalArray = itemFormat.split(':');
        systemDefinitionArray = generalArray[1].split('-');
        itemValue = generalArray[0] + ':' + betSize + '-' + systemDefinitionArray[1];
    }
    else {
        systemDefinitionArray = itemFormat.split('-');
        itemValue = betSize + '-' + systemDefinitionArray[1];
    }
    return itemValue;
}

function onItemDataBound(sender, e) {
    var item = e.get_item();
    if (item.get_isDataItemType()) {
        var bettingCartItem = item.get_dataItem();

//        var betItemTableRow = item.findControl('BetItemDescriptionTableRow');
//        var betItemPickTableRow = item.findControl('BetItemPickTableRow');
        var betSelectionCheckBox = item.findControl('BetSelectionCheckBox');
//        var betHelpImage = item.findControl('betHelpImage');
        var betDescriptionDescriptionLabel = item.findControl('BetDescriptionDescriptionLabel');
        var oddsPickLabel = item.findControl('OddsPickLabel');
        var oddsValueLabel = item.findControl('OddsValueLabel');
        var bankerImage = item.findControl('bankerImage');
        var deleteImage = item.findControl('deleteImage');
//        var helpText = _localizedHelpText;
//        helpText = encodeMessage(helpText);
        itemSelected = false;
        itemEnabled = true;

        betSelectionCheckBox.checked = bettingCartItem.IsSelectedInSingle;

//        betHelpImage.onmouseover = function() {
//            ddrivetip(helpText);
//        }
//        betHelpImage.onmouseout = function() {
//            hideddrivetip();
//        }
//        betHelpImage.alt = _localizedHelpText;
        setHtml(betDescriptionDescriptionLabel, bettingCartItem.LeagueName + ' - <b>' + bettingCartItem.LineDescription + '</b>');
        setHtml(oddsPickLabel, _localizedPickText + '<b>' + bettingCartItem.OddsTypeMarkName + '</b>');
        setText(oddsValueLabel, formatNumber(bettingCartItem.OddsValue));
        bankerImage.onclick = function() {
            manageBanker(bettingCartItem.BetItemID, bankerImage.id);
        }
        deleteImage.onclick = function() {
            removeCartItem(bettingCartItem.BetItemID, bettingCartItem.OddsDetailID, bettingCartItem.ValueIndex, bettingCartItem.BetType);
        }
        deleteImage.onmouseover = function() {
            deleteImage.style.cursor = 'pointer';
        }
        deleteImage.onmouseout = function() {
            deleteImage.style.cursor = 'default';
        }

        //Determine if item must be checked
        switch (_currentTabIndex) {
            case 1:
                itemSelected = bettingCartItem.IsSelectedInMulti;
                itemEnabled = !itemSelected;
//                if (!itemEnabled) {
//                    betItemTableRow.style.backgroundColor = '#999';
//                    betItemPickTableRow.style.backgroundColor = '#999';
//                }
                bankerImage.style.display = 'none';
                break;
            case 2:
                itemSelected = bettingCartItem.IsSelectedInSystem;
                itemEnabled = !itemSelected;
//                if (!itemEnabled) {
//                    betItemTableRow.style.backgroundColor = '#999';
//                    betItemPickTableRow.style.backgroundColor = '#999';
//                }
                if (bettingCartItem.IsBankerItem)
                    bankerImage.src = _isBankerImgSrc;
                else
                    bankerImage.src = _isNotBankerImgSrc;

                //Handle Visibility of banker functionality based on it's internal Selection for System
                bankerImage.disabled = (itemSelected) ? !itemSelected : true;
                bankerImage.style.display = (itemSelected) ? '' : 'none';
                bankerImage.onmouseover = function() {
                    bankerImage.style.cursor = 'pointer';
                }
                bankerImage.onmouseout = function() {
                    bankerImage.style.cursor = 'default';
                }
                break;
            default:
                itemSelected = bettingCartItem.IsSelectedInSingle;
                bankerImage.style.display = 'none';
                break;
        }

        betSelectionCheckBox.checked = itemSelected;

        //Set PostBack Javascript for Checkbox item
        betSelectionCheckBox.onclick = function() {
            cartItemCheckedChanged(bettingCartItem.EventID, bettingCartItem.BetItemID, this);
        }
        if (bettingCartItem.OddsValueUpdated)
            oddsValueLabel.style.backgroundColor = 'Red'; ;
    }
}

function bettingCheckOut() {
    var bettingCartHtmlTable = $get(_bettingCartHtmlTableId);
    if (!bettingCartHtmlTable.disabled) {
        var stakePerBet = $get(_stakePerBetTextBoxId);

        //Disable Button
        setContinueButtonState(true);

        if (!_userIsAuthenticated) {
            location = _loginPage;
        }
        else {
            if (parseNumber(stakePerBet.value) != 0) {
                WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.ValidateCheckOut(_currentTabIndex, validateCheckOutResult, onError);
            }
            else {
                openUserMessage($get(_stakePerBetTitleLabelId), _noStakePerBetCheckOutMsg);
            }
        }
    }
}
function validateCheckOutResult(result, userContext) {
    var modalPopupBehavior = $find(_checkOutModalBehaviorId);
    var processingMessageDiv = $get(_processingMessageLayerId);
    var checkOutProgressRow = $get(_checkOutProgressRowId);
    var checkOutProgressDiv = $get(_checkOurProgressLayerId);
    var processingRow = $get(_processingRowId);
    var inReserveRow = $get(_inReserveRowId);
    var logout = false;
    var updateCart = false;
    //Reset Number of Pending trials
    _numberOfPendingUpdates = 0;

    if (result.CartExpired) {
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        //Cancel Modal Popup            
        modalPopupBehavior.hide();
        //Cart Empty Rebind for correct display
        getBettingCart(true);
    }
    else {
        //display any error
        if (result.IsSuccessful) {
            if (confirm(_confirmCheckOutMsg)) {
                if (modalPopupBehavior) {
                    inReserveRow.style.display = 'none';
                    processingRow.style.display = '';
                    checkOutProgressRow.style.display = '';
                    checkOutProgressDiv.style.display = '';
                    setHtml(processingMessageDiv, _progressCheckOutMsg);
                    modalPopupBehavior.show();
                    checkOutCart();
                }
            }
            else {
                //Enable Button
                setContinueButtonState(false);
            }
        }
        else {
            var errorMessage = result.Message;
            switch (errorMessage) {
                case '[NOUSERTOKEN]':
                    logout = true;
                    errorMessage = _userNotAuthenticatedMsg;
                    break;
                case '[NOBETAMOUNT]':
                    errorMessage = _noStakePerBetCheckOutMsg;
                    break;
                case '[MINBETAMOUNT]':
                    var minAmount = '';
                    if (_currentTabIndex == 0)
                        minAmount = _singleBetMinAmount;
                    else
                        minAmount = _multiBetMinAmount;
                    errorMessage = _minStakePerBetMsg.replace('[MINAMOUNT]', minAmount);
                    break;
                case '[NOBALANCE]':
                    errorMessage = _noBalanceMsg;
                    break; 
                case '[NOUORWRONGNUMBERINMULTI]':
                    errorMessage = _noUOrWrongNumberInMultiMsg;
                    break;
                case '[NOM3M5INSINGLE]':
                    errorMessage = _noM3M5InSingleMsg;
                    break;
                case '[VALUESUPDATED]':
                    errorMessage = _cartItemValuesUpdatedMsg;
                    updateCart = true;
                    break;
                default:
                    if (errorMessage.indexOf('[EVENTNOTPUB]') > -1) {
                        errorMessage = errorMessage.replace('[EVENTNOTPUB]', '');
                        errorMessage = _cartEventsInvalidMsg.replace('{0}', errorMessage);
                    }
                    break;
            }
            openUserMessage($get(_stakePerBetTitleLabelId), errorMessage);
            //Cancel Modal Popup
            modalPopupBehavior.hide();

            if (updateCart)
                getBettingCart(true);
            
            // Force Logout
            if ((logout) && (_logoutUrl != null))
                window.location = _logoutUrl;
        }
    }
}
function checkOutCart() {
    //Confirm Cart
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.CheckOut(_currentTabIndex, _autoEmptyCart, checkOutCartResult, onError);
}

function checkOutCartResult(result, userContext) {
    var modalPopupBehavior = $find(_checkOutModalBehaviorId);
    var processingMessageDiv = $get(_processingMessageLayerId);
    var checkOutProgressRow = $get(_checkOutProgressRowId);
    var checkOutProgressDiv = $get(_checkOurProgressLayerId);
    var processingRow = $get(_processingRowId);
    var inReserveRow = $get(_inReserveRowId);
    //Enable Button
    setContinueButtonState(false);

    if (result.CartExpired) {
        if (trim(_cartExpiredMsg).length > 0)
            alert(_cartExpiredMsg);
        //Cancel Modal Popup            
        modalPopupBehavior.hide();
        //Cart Empty Rebind for correct display
        getBettingCart(true);
    }
    else {
        //display any error
        if (result.IsSuccessful) {
            //Undefined = 0, Pending = 1, Accepted = 2, Refused = 3, Aborted = 4  
            switch (result.Status) {
                case _statusPending:
                    processingRow.style.display = '';
                    setHtml(processingMessageDiv, _reserveCheckOutMsg);
                    _tempPendingBets = result.BetResults;
                    _isOneResultItem = result.BetResults.length == 1
                    if (_isCurrentTimeOutsideOfficeHours) {
                        getPendingBetsStatus(false);
                    }
                    else {
                        setTimeout('getPendingBetsStatus(false)', _intermediateClick * 1000);
                    }
                    break;
                case _statusAccepted:
                    processingRow.style.display = '';
                    setHtml(processingMessageDiv, _okCheckOutMsg);
                    _tempPendingBets = result.BetResults;
                    addCloseButton(processingMessageDiv, true);
                    inReserveRow.style.display = 'none';
                    checkOutProgressRow.style.display = 'none';
                    checkOutProgressDiv.style.display = 'none';
                    break;
            }          
        }
        else {            
            //Cancel Modal Popup
            modalPopupBehavior.hide();
            //Show General Error Message
            openUserMessage($get(_stakePerBetTitleLabelId), result.Message);
        }
        //Rebind Cart
        //getBettingCart(true);
    }
}

function addCloseButton(destinationDiv, addMargins) {
    var buttonLabel = document.createElement('div');
    if (addMargins) {
        buttonLabel.style.styleFloat = 'right';
        buttonLabel.style.marginTop = '60px';
        buttonLabel.style.marginBottom = '0px';
    }
    buttonLabel.style.textAlign = 'right';
    var closeButton = document.createElement('input');
    closeButton.setAttribute('type', 'button');
    closeButton.setAttribute('id', _closeBettingButtonId);
    closeButton.setAttribute('name', _closeBettingButtonId);
    closeButton.setAttribute('value', _modalWindowCloseButtonText);
    closeButton.className = 'positiveSmall';
    //Add OnChange Event Handler
    closeButton.onclick = function() {
        closeModalButton();
    }
    var printButton = document.createElement('input');
    printButton.setAttribute('type', 'button');
    printButton.setAttribute('id', _printCouponBettingButtonId);
    printButton.setAttribute('name', _printCouponBettingButtonId);
    printButton.setAttribute('value', _modalWindowPrintCouponButtonText);
    printButton.className = 'positiveSmall';
    //Add OnChange Event Handler
    printButton.onclick = function() {
        printSlip('CO');
    }
    buttonLabel.appendChild(printButton);
    
    printButton = document.createElement('input');
    printButton.setAttribute('type', 'button');
    printButton.setAttribute('id', _printA4BettingButtonId);
    printButton.setAttribute('name', _printA4BettingButtonId);
    printButton.setAttribute('value', _modalWindowPrintA4ButtonText);
    printButton.className = 'positiveSmall';
    //Add OnChange Event Handler
    printButton.onclick = function() {
        printSlip('A4');
    }
    buttonLabel.appendChild(printButton);
    
    buttonLabel.appendChild(closeButton);
    destinationDiv.appendChild(document.createElement('br'));
    destinationDiv.appendChild(buttonLabel);
}

function closeModalButton() {
    var modalPopupBehavior = $find(_checkOutModalBehaviorId);
    var inReserveDiv = $get(_inReserveLayerId);
    var bettingCheckOutPanel = $get(_bettingCheckOutPanelId);
    //Clear Previous Items
    while (inReserveDiv.childNodes[0]) {
        inReserveDiv.removeChild(inReserveDiv.childNodes[0]);
    }
    
    //Cancel Modal Popup
    if (modalPopupBehavior) {
        bettingCheckOutPanel.style.width = '500px';
        bettingCheckOutPanel.style.height = '';
        modalPopupBehavior._layout();
        modalPopupBehavior.hide();
    }

    //Cart Empty Rebind for correct display
    if (_autoEmptyCart)
        resetCart();
}

function printSlip(printType) {
    var windowWidth;
    var betType;
    var betIdentifiers = '';
    
    if(printType == 'A4')
        windowWidth = '750';
    else
        windowWidth = '320';        
    switch (_currentTabIndex) {
        case 1:
            betType = 'MUL';
            break;
        case 2:
            betType = 'SYS';
            break;
        default:
            betType = 'SIN';
            break;
    }

    var printingBets = getBetResultIDsToPrint();
    if (printingBets.length == 1) {
        //Multiple or System bets have only 1 ID
        betIdentifiers = printingBets[0].ResultID.toString()
    }
    else {
        //Single Bets may have more then 1 ID
        for (i = 0; i <= printingBets.length - 1; i++) {
            betIdentifiers += printingBets[i].ResultID.toString() + '-';
        }
        //Trim final char
        betIdentifiers = betIdentifiers.substring(0, betIdentifiers.length - 1);
    }

    var url = '/Betting/Coupon.ashx?a=' + betType + '&b=' + betIdentifiers + '&c=' + _userCulture + '&d=' + _token + '&e=' + printType + '&f=' + _skinId;
    var windowFeatures = 'toolbar=0,scrollbars=1,menubar=0,location=0,resizable=0,directories=0,status=0,fullscreen=no,width=' + windowWidth + ',height=600,left=0,top=0';
    var newWindow = open(url, printingBets[0].ResultID.toString() + '_' + printType, windowFeatures);    
}


function getPendingBetResultIDs() {
    var resultIDs = new Array();
    var counter = 0;

    for (x = 0; x < _tempPendingBets.length; x++) {
        if (_tempPendingBets[x].Status == _statusPending){
            resultIDs[counter] = _tempPendingBets[x].ResultID;
            counter++;
        }
    }
    return resultIDs;
}

function getPendingBets() {
    var pendingBets = new Array();
    var counter = 0;

    for (x = 0; x < _tempPendingBets.length; x++) {
        if (_tempPendingBets[x].Status == _statusPending){
            pendingBets[counter] = _tempPendingBets[x];
            counter++;
        }
    }
    return pendingBets;
}

function getBetResultIDsToPrint() {
    var pendingBets = new Array();
    var counter = 0;
    var canAddBet = true;

    for (x = 0; x < _tempPendingBets.length; x++) {
        if ((_tempPendingBets[x].Status == _statusPending) ||
            (_tempPendingBets[x].Status == _statusAccepted)) {
            //reset for each loop
            canAddBet = true;
            if (isArrayValid(_pendingBetsDeleteIds)) {
                for (y = 0; y <= _pendingBetsDeleteIds.length - 1; y++) {
                    if (_pendingBetsDeleteIds[y] == _tempPendingBets[x].ResultID) {
                        canAddBet = false;
                        break;
                    }
                }
            }
            if(canAddBet){
                pendingBets[counter] = _tempPendingBets[x];
                counter++;                
            }
        }
    }
    return pendingBets;
}

function updatePendingBets(updatedResults) {
    if (updatedResults) {
        for (i = 0; i < updatedResults.length; i++) {
            for (j = 0; j < _tempPendingBets.length; j++) {
                if (updatedResults[i].ResultID == _tempPendingBets[j].ResultID) {
                    if (
                        (updatedResults[i].Status == _statusAccepted) &&
                        (_tempPendingBets[i].Status == _statusPending) &&
                        (_tempPendingBets[j].AlternativeBetAmount != 0)
                       ) {
                        //If current item is Accepted and was previously Pending with an AlternativeAmount then update BetAmount
                        _tempPendingBets[j].StakePerBet = _tempPendingBets[j].AlternativeBetAmount; 
                    }
                    //Always Update AlternativeBetAmount and Status
                    _tempPendingBets[j].AlternativeBetAmount = updatedResults[i].AlternativeBetAmount;
                    _tempPendingBets[j].Status = updatedResults[i].Status;
                }
            }
        }
    }
}

function pendingBetsChanged(resultsToCompare) {
    var betsHaveChanged = false;
    if (resultsToCompare) {
        for (i = 0; i < resultsToCompare.length; i++) {
            for (j = 0; j < _tempPendingBets.length; j++) {
                if (
                    (resultsToCompare[i].ResultID == _tempPendingBets[j].ResultID) && 
                    (resultsToCompare[i].Status != _tempPendingBets[j].Status) 
                   ){
                    betsHaveChanged = true;
                    break;
                }
            }
            if (betsHaveChanged)
                break;
        }
    }
    return betsHaveChanged;
}

function getPendingBetsStatus(forceFinal) {
    if (!forceFinal) {
        //Refresh Pending Items for their status
        if (_numberOfPendingUpdates == 0)
            _numberOfPendingUpdates = 1;
        else
            _numberOfPendingUpdates += 1
        var isFinalRequest = (_numberOfPendingUpdates == 10) ? true : false;
        //If This is outside Office Hours call final list immediately
        if (_isCurrentTimeOutsideOfficeHours)
            isFinalRequest = true;
    }
    else {
        isFinalRequest = true;
    }
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.RefreshPendingBetStatus(_currentTabIndex, getPendingBetResultIDs(), isFinalRequest, getPendingBetsStatusResult, onError);
}

function getPendingBetsStatusResult(result, userContext) {
    var modalPopupBehavior = $find(_checkOutModalBehaviorId);
    if (!result.IsSuccessful) {
        alert(result.Message);
        //Cancel Modal Popup            
        modalPopupBehavior.hide();
        //Cart Empty Rebind for correct display
        getBettingCart(true);
    }
    else {
        //Refresh/Update Local Copy of pending BetResults
        if (isArrayValid(result.BetResults)) {
            updatePendingBets(result.BetResults);
            managePendingBetsDisplay();
        }
        else {
            //Recall getPendingBetsStatus again
            setTimeout('getPendingBetsStatus(false)', _intermediateClick * 1000);
        }
    }
}

function updateSubSetPendingBets() {
    _manyAcceptedRefusedBets = new Array();
    _manyPendingAlternativeBets = new Array();
    _manyPendingBets = new Array();
    var acceptedRefusedCounter = 0;
    var pendingAlternativeCounter = 0;
    var pendingCounter = 0;
    var canAddFinalBet;
    var canAddPendingBet;
    
    for (x = 0; x < _tempPendingBets.length; x++) {
        if ((_tempPendingBets[x].Status == _statusAccepted) || (_tempPendingBets[x].Status == _statusRefused)) {
            _manyAcceptedRefusedBets[acceptedRefusedCounter] = _tempPendingBets[x];
            acceptedRefusedCounter++;
        }
        else {
            canAddFinalBet = false;
            for (i = 0; i < _leaveInPendingBetIDs.length; i++) {
                if (_tempPendingBets[x].ResultID == _leaveInPendingBetIDs[i]) {
                    canAddFinalBet = true;
                    break;
                }
            }
            if (canAddFinalBet) {
                _manyAcceptedRefusedBets[acceptedRefusedCounter] = _tempPendingBets[x];
                acceptedRefusedCounter++;
            }
        }
        if ((_tempPendingBets[x].Status == _statusPending) && (_tempPendingBets[x].AlternativeBetAmount != 0)) {
            _manyPendingAlternativeBets[pendingAlternativeCounter] = _tempPendingBets[x];
            pendingAlternativeCounter++;
        }
        if ((_tempPendingBets[x].Status == _statusPending) && (_tempPendingBets[x].AlternativeBetAmount == 0)) {
            canAddPendingBet = true;
            for (i = 0; i < _leaveInPendingBetIDs.length; i++) {
                if (_tempPendingBets[x].ResultID == _leaveInPendingBetIDs[i]) {
                    canAddPendingBet = false;
                    break;
                }    
            }
            if (canAddPendingBet) {
                _manyPendingBets[pendingCounter] = _tempPendingBets[x];
                pendingCounter++;
            }
        }
    }
}

function managePendingBetsDisplay() {
    if (_isOneResultItem) {
        var bet = _tempPendingBets[0];
        switch (bet.Status) {
            case _statusAccepted:
                displayOneItemAccepted();
                break;
            case _statusRefused:
                displayOneItemRefused();
                break;
            default:
                //Pending
                //Determine if Alternative Amount was specified
                if (bet.AlternativeBetAmount != 0){
                    displayOneItemAlternative();
                }
                else{
                    displayOneItemPending();
                }
                break;
        }
    }
    else {
        //Table Display (Only for many Single Bets)
        //Update all local subsets of pending bets
        updateSubSetPendingBets();
        displayManyResults();
    }
}

function displayOneItemAccepted() {
    //Reset Panel Height
    $get(_bettingCheckOutPanelId).style.height = '';
    $find(_checkOutModalBehaviorId)._layout();
    var displayText = _oneItemAcceptedText;
    displayText = displayText.replace('{0}', _acceptedBetImgSrc);
    displaySimpleResultMessage(displayText, 'OneItemAccepted');
    //Add Printing and Close Buttons
    addSimpleResultButtons($get(_inReserveLayerId), true, true, false);
}
function displayOneItemRefused() {
    //Reset Panel Height
    $get(_bettingCheckOutPanelId).style.height = '';
    $find(_checkOutModalBehaviorId)._layout();
    var displayText = _oneItemRefusedText;
    displayText = displayText.replace('{0}', _refusedBetImgSrc);
    displaySimpleResultMessage(displayText, 'OneItemRefused');
    //Add Close Button
    addSimpleResultButtons($get(_inReserveLayerId), true, false, false);
}
function displayOneItemAlternative(){
    //Reset Panel Height
    $get(_bettingCheckOutPanelId).style.height = '';
    $find(_checkOutModalBehaviorId)._layout();
    var displayText = _oneItemAlternativeText;
    displayText = displayText.replace('{0}', _alternativeBetImgSrc);
    displayText = displayText.replace('{1}', formatNumber(_tempPendingBets[0].StakePerBet));
    displayText = displayText.replace('{2}', formatNumber(_tempPendingBets[0].AlternativeBetAmount));
    displaySimpleResultMessage(displayText, 'OneItemAlternative');
    //Add Accept/Refuse Buttons
    addSimpleResultButtons($get(_inReserveLayerId), false, false, true);
}
function displayOneItemPending() {
    //Reset Panel Height
    $get(_bettingCheckOutPanelId).style.height = '';
    $find(_checkOutModalBehaviorId)._layout();
    var displayText = _oneItemPendingText;
    displayText = displayText.replace('{0}', _leaveInReserveBetImgSrc);
    displayText = displayText.replace('{1}', _reserveTimeout);
    displaySimpleResultMessage(displayText, 'OneItemLeaveInReserve');
    //Add Accept/Refuse Buttons
    addSimpleResultButtons($get(_inReserveLayerId), false, false, true);
}
function displaySimpleResultMessage(content, className) {
    var processingRow = $get(_processingRowId);
    var inReserveRow = $get(_inReserveRowId);
    var inReserveDiv = $get(_inReserveLayerId);
    var checkOutProgressRow = $get(_checkOutProgressRowId);
    var checkOutProgressDiv = $get(_checkOurProgressLayerId);

    //Clear Previous Items
    while (inReserveDiv.childNodes[0]) {
        inReserveDiv.removeChild(inReserveDiv.childNodes[0]);
    }

    inReserveDiv.className = 'PendingDisplayLayer';
    createLogoLayer(inReserveDiv);
    createSimpleResultLayer(inReserveDiv, content, className);
    
    processingRow.style.display = 'none';
    checkOutProgressRow.style.display = 'none';
    checkOutProgressDiv.style.display = 'none';
    inReserveRow.style.display = '';
}
function createLogoLayer(parentLayer) {
    var logoLayer = document.createElement('div');
    logoLayer.setAttribute('id', _resultLogoLayerId);
    //logoLayer.className = '';
    var logoImage = document.createElement('img');
    logoImage.id = _resultLogoLayerId + 'Image';
    logoImage.src = _logoUrl;
    logoLayer.appendChild(logoImage);
    logoLayer.appendChild(document.createElement('br'));
    logoLayer.appendChild(document.createElement('br')); 
    parentLayer.appendChild(logoLayer);
}
function createSimpleResultLayer(parentLayer, content, className) {
    var simpleLayer = document.createElement('div');
    simpleLayer.setAttribute('id', _resultSimpleLayerId);
    simpleLayer.className = className;
    var simpleTextSpan = document.createElement('div');
    if (className != 'OneItemLeaveInReserve')
        simpleTextSpan.className = 'PendingDisplayMessage';
    setHtml(simpleTextSpan, content);

    simpleLayer.appendChild(simpleTextSpan);
    parentLayer.appendChild(simpleLayer);
}
function addSimpleResultButtons(destinationDiv, addClosing, addPrinting, addConfirming) {
    var buttonLabel = document.createElement('div');
    buttonLabel.style.textAlign = 'center';

    if (addConfirming) {
        var confirmingButton = document.createElement('input');
        confirmingButton.setAttribute('type', 'button');
        confirmingButton.setAttribute('id', _acceptPendingBetButtonId);
        confirmingButton.setAttribute('name', _acceptPendingBetButtonId);
        confirmingButton.setAttribute('value', _modalWindowAcceptPendingBetButtonText);
        confirmingButton.className = 'positiveSmall';
        //Add OnClick Event Handler
        confirmingButton.onclick = function() {
            _oneItemResultAction = 'accept';
            verifyPendingBetsStatus();
        }
        buttonLabel.appendChild(confirmingButton);

        confirmingButton = document.createElement('input');
        confirmingButton.setAttribute('type', 'button');
        confirmingButton.setAttribute('id', _refusePendingBetButtonId);
        confirmingButton.setAttribute('name', _refusePendingBetButtonId);
        confirmingButton.setAttribute('value', _modalWindowRefusePendingBetButtonText);
        confirmingButton.className = 'positiveSmall';
        //Add OnClick Event Handler
        confirmingButton.onclick = function() {
            _oneItemResultAction = 'refuse';
            verifyPendingBetsStatus();
        }
        buttonLabel.appendChild(confirmingButton);
    }
    else {
        
        //Insert Final state Buttons
        if (addClosing) {
            var closeButton = document.createElement('input');
            closeButton.setAttribute('type', 'button');
            closeButton.setAttribute('id', _closeBettingButtonId);
            closeButton.setAttribute('name', _closeBettingButtonId);
            closeButton.setAttribute('value', _modalWindowCloseButtonText);
            closeButton.className = 'positiveSmall';
            //Add OnChange Event Handler
            closeButton.onclick = function() {
                closeModalButton();
            }
        }

        if (addPrinting) {
            var printButton = document.createElement('input');
            printButton.setAttribute('type', 'button');
            printButton.setAttribute('id', _printCouponBettingButtonId);
            printButton.setAttribute('name', _printCouponBettingButtonId);
            printButton.setAttribute('value', _modalWindowPrintCouponButtonText);
            printButton.className = 'positiveSmall';
            //Add OnChange Event Handler
            printButton.onclick = function() {
                printSlip('CO');
            }

            buttonLabel.appendChild(printButton);

            var printButton = document.createElement('input');
            printButton.setAttribute('type', 'button');
            printButton.setAttribute('id', _printA4BettingButtonId);
            printButton.setAttribute('name', _printA4BettingButtonId);
            printButton.setAttribute('value', _modalWindowPrintA4ButtonText);
            printButton.className = 'positiveSmall';
            //Add OnChange Event Handler
            printButton.onclick = function() {
                printSlip('A4');
            }

            buttonLabel.appendChild(printButton);
        }

        //Add Close Button, if case, AFTER Print Buttons
        buttonLabel.appendChild(closeButton);
    }
    
    destinationDiv.appendChild(document.createElement('br'));
    destinationDiv.appendChild(buttonLabel);
}
function displayManyResults() {
    var processingRow = $get(_processingRowId);
    var inReserveRow = $get(_inReserveRowId);
    var inReserveDiv = $get(_inReserveLayerId);
    var checkOutProgressRow = $get(_checkOutProgressRowId);
    var checkOutProgressDiv = $get(_checkOurProgressLayerId);
    var bettingCheckOutPanel = $get(_bettingCheckOutPanelId);
    var modalPopup = $find(_checkOutModalBehaviorId);
    var tableDisplayCount = 0;
    var panelHeight = '320px';
    var divHeight = '310px';
    
    bettingCheckOutPanel.style.width = "750px";
    modalPopup._layout();
    
    //Clear Previous Items
    while (inReserveDiv.childNodes[0]) {
        inReserveDiv.removeChild(inReserveDiv.childNodes[0]);
    }
    
    //Add Logo to Layer
    createLogoLayer(inReserveDiv);
    
    //Display Summary Accepted / Refused bets if any
    if (_manyAcceptedRefusedBets.length > 0) {
        displaySummaryFinalBets();
        tableDisplayCount++;
    }

    //Display Summary Pending Alternative bets if any
    if (_manyPendingAlternativeBets.length > 0) {
        displayManyAlternativeBets();
        tableDisplayCount++;
    }

    //Display Summary Pending Leave in Reserve bets if any
    if (_manyPendingBets.length > 0) {
        displayManyPendingBets();
        tableDisplayCount++;
    }
    
    switch (tableDisplayCount) {
        case 3:
            panelHeight = '765px';
            divHeight = '755px';
            break;
        case 2:
            panelHeight = '565px';
            divHeight = '555px';
            break;
        default:
            //Case 1 table only
            panelHeight = '350px';
            divHeight = '340px';
    }

    //Modify inReserveDiv layer in order to add Scrooling
    bettingCheckOutPanel.style.height = panelHeight;
    inReserveDiv.style.height = divHeight;
    inReserveDiv.style.overflowX = 'hidden';
    inReserveDiv.style.overflowY = 'auto';
    modalPopup._layout();
    
    processingRow.style.display = 'none';
    checkOutProgressRow.style.display = 'none';
    checkOutProgressDiv.style.display = 'none';
    inReserveRow.style.display = '';
}
function displaySummaryFinalBets() {
    var inReserveDiv = $get(_inReserveLayerId);
    var hasAcceptedBets = false;
    //Add Summary Header Div
    createSummaryHeader(inReserveDiv);
    //Add Divider to DIV
    addDivider(inReserveDiv, false);
    //Add Summary Table
    var tableLayer = document.createElement('div');
    tableLayer.className = 'SummaryTableLayer';
    //Add Table Layer To Layer
    inReserveDiv.appendChild(tableLayer);
    //Create Table Header
    createSummaryTableHeader(tableLayer);
    //Add rows for each item
    if (isArrayValid(_manyAcceptedRefusedBets)) {
        for (i = 0; i < _manyAcceptedRefusedBets.length; i++) {
            //Add Row
            createSummaryTableRow(_manyAcceptedRefusedBets[i])
            if (!hasAcceptedBets) {
                if (_manyAcceptedRefusedBets[i].Status == _statusAccepted)
                    hasAcceptedBets = true;
            }
        }
    }
    //Add Divider to DIV
    addDivider(inReserveDiv, false);
    //Show Buttons ONLY if No other table needs attention
    if ((_manyPendingAlternativeBets.length == 0) && (_manyPendingBets.length == 0)) {
        //Add Final Buttons
        addSimpleResultButtons(inReserveDiv, true, hasAcceptedBets, false);
    }

    //Add Divider to DIV
    addDivider(inReserveDiv, true);  
}
function addDivider(parentDiv, isSpacer) {
    var dividerDiv = document.createElement('div');
    if (isSpacer)
        dividerDiv.className = 'ClearSpacerDivider';
    else
        dividerDiv.className = 'ClearDivider';
    parentDiv.appendChild(dividerDiv);
}
function createSummaryHeader(inReserveDiv) {
    var mainHeaderLayer = document.createElement('div');
    mainHeaderLayer.className = 'SummaryHeaderLayer';
    var headerLayer = document.createElement('div');
    headerLayer.className = 'SummaryHeaderImage';
    var headerImage = document.createElement('img');
    headerImage.src = '/DesktopModules/BettingSlip/images/recycle_list.png';
    headerImage.alt = '';
    headerLayer.appendChild(headerImage);
    mainHeaderLayer.appendChild(headerLayer);
    headerLayer = document.createElement('div');
    headerLayer.className = 'SummaryHeaderTitle';
    var headerTitle = document.createElement('H1');
    setHtml(headerTitle, _summaryBetsHeaderText);
    headerLayer.appendChild(headerTitle);
    mainHeaderLayer.appendChild(headerLayer);
    headerLayer = document.createElement('div');
    headerLayer.className = 'SummaryHeaderLegend';
    setHtml(headerLayer, '<img src=\'' + _acceptedBetSmallImgSrc + '\' alt=\'' + _summaryBetsHeaderAcceptedText + '\' style=\'vertical-align:middle;\'>&nbsp;' + _summaryBetsHeaderAcceptedText + '&nbsp;&nbsp;<img src=\'' + _refusedBetSmallImgSrc + '\' alt=\'' + _summaryBetsHeaderRefusedText + '\' style=\'vertical-align:middle;\'>&nbsp;' + _summaryBetsHeaderRefusedText + '&nbsp;&nbsp;<img src=\'' + _leavePendingBetSmallImgSrc + '\' alt=\'' + _summaryBetsHeaderLeavePendingText + '\' style=\'vertical-align:middle;\'>&nbsp;' + _summaryBetsHeaderLeavePendingText);
    mainHeaderLayer.appendChild(headerLayer);
    inReserveDiv.appendChild(mainHeaderLayer);
}
function createSummaryTableHeader(parentDiv) {
    var summaryBetsTable = document.createElement('table');
    summaryBetsTable.setAttribute('id', _summaryBetsTableId);
    summaryBetsTable.className = 'SummaryBetsTable';
    var bodyContainer;
    if (isIE()) {
        bodyContainer = document.createElement("TBODY");
    }
    var headerRow = document.createElement('tr');
    var headerDescriptionCell = document.createElement('td');
    var headerOddsValueCell = document.createElement('td');
    var headerBetAmountCell = document.createElement('td');
    var headerStatusCell = document.createElement('td');

    headerDescriptionCell.className = 'ManyTableHeaderCell';
    headerDescriptionCell.style.textalign = 'left';
    headerOddsValueCell.className = 'ManyTableHeaderCell';
    headerBetAmountCell.className = 'ManyTableHeaderCell';    
    headerStatusCell.className = 'ManyTableHeaderCell';

    var headerDescriptionLabel = document.createElement('span');
    setText(headerDescriptionLabel, _pendingBetsTableHeaderDescriptionText);
    //Add Span to Cell
    headerDescriptionCell.appendChild(headerDescriptionLabel);

    var headerOddsValueLabel = document.createElement('span');
    setText(headerOddsValueLabel, _pendingBetsTableHeaderOddsValueText);
    //Add Span to Cell
    headerOddsValueCell.appendChild(headerOddsValueLabel);
    
    var headerBetAmountLabel = document.createElement('span');
    setText(headerBetAmountLabel, _pendingBetsTableHeaderBetAmountText);
    //Add Span to Cell
    headerBetAmountCell.appendChild(headerBetAmountLabel);

    var headerStatusLabel = document.createElement('span');
    setText(headerStatusLabel, _pendingBetsTableHeaderStatusText);
    //Add Span to Cell
    headerStatusCell.appendChild(headerStatusLabel);    
    //Add Cells to Row
    headerRow.appendChild(headerDescriptionCell);
    headerRow.appendChild(headerOddsValueCell);
    headerRow.appendChild(headerBetAmountCell);
    headerRow.appendChild(headerStatusCell);
    //Add Header Row to table or TBODY 
    if (isIE()) {
        bodyContainer.appendChild(headerRow);
        summaryBetsTable.appendChild(bodyContainer);
    }
    else {
        summaryBetsTable.appendChild(headerRow);
    }
    //Add Table to DIV
    parentDiv.appendChild(summaryBetsTable);
}
function createSummaryTableRow(betResult) {
    if (betResult) {
        var table = $get(_summaryBetsTableId);
        var itemRow = document.createElement('tr');
        var itemDescriptionCell = document.createElement('td');
        var itemOddsValueCell = document.createElement('td');
        var itemBetAmountCell = document.createElement('td');
        var itemStatusCell = document.createElement('td');
        if ((betResult.Status == _statusAccepted) || (betResult.Status == _statusPending)) {
            itemDescriptionCell.className = 'TableItemCellHighlighted';
            itemOddsValueCell.className = 'TableItemCellCenterHighlighted';
            itemBetAmountCell.className = 'TableItemCellCenterHighlighted';
        }
        if (betResult.Status == _statusRefused) {
            itemDescriptionCell.className = 'TableItemCell';
            itemOddsValueCell.className = 'TableItemCellCenter';
            itemBetAmountCell.className = 'TableItemCellCenter';
        }
        itemStatusCell.className = 'TableItemStatusCell';

        var itemDescriptionLabel = document.createElement('span');
        var betItemDescription = betResult.Description;
        setText(itemDescriptionLabel, betItemDescription);
        //Add Span to Cell
        itemDescriptionCell.appendChild(itemDescriptionLabel);

        var itemOddsValueLabel = document.createElement('span');
        setText(itemOddsValueLabel, formatNumber(betResult.OddsValue));
        //Add Span to Cell
        itemOddsValueCell.appendChild(itemOddsValueLabel);

        var itemBetAmountLabel = document.createElement('span');
        setText(itemBetAmountLabel, formatNumber(betResult.StakePerBet));
        //Add Span to Cell
        itemBetAmountCell.appendChild(itemBetAmountLabel);

        var itemStatusLabel = document.createElement('span');
        var statusImage = document.createElement('img');
        if (betResult.Status == _statusAccepted)
            statusImage.src = _acceptedBetSmallImgSrc;
        if (betResult.Status == _statusRefused)
            statusImage.src = _refusedBetSmallImgSrc;
        if (betResult.Status == _statusPending)
            statusImage.src = _leavePendingBetSmallImgSrc
        statusImage.alt = betResult.Status;
        itemStatusLabel.appendChild(statusImage)        
        //Add Span to Cell
        itemStatusCell.appendChild(itemStatusLabel);
        
        //Add Cells to Row
        itemRow.appendChild(itemDescriptionCell);
        itemRow.appendChild(itemOddsValueCell);
        itemRow.appendChild(itemBetAmountCell);
        itemRow.appendChild(itemStatusCell);
        //Add Item Row to table or tbody
        if (isIE())
            table.childNodes[0].appendChild(itemRow);
        else
            table.appendChild(itemRow);
    }
}
function displayManyAlternativeBets() {
    var inReserveDiv = $get(_inReserveLayerId);
    //Add Summary Header Div
    createAlternativeBetsHeader(inReserveDiv);
    //Add Divider to DIV
    addDivider(inReserveDiv, false);
    //Add Summary Table
    var tableLayer = document.createElement('div');
    tableLayer.className = 'AlternativeBetsTableLayer';
    //Add Table Layer To Layer
    inReserveDiv.appendChild(tableLayer);
    //Create Table Header
    createGeneralPendingBetsTableHeader(tableLayer, _alternativeBetsTableId);
    //Add rows for each item
    if (isArrayValid(_manyPendingAlternativeBets)) {
        for (i = 0; i < _manyPendingAlternativeBets.length; i++) {
            //Add Row
            createGeneralPendingBetsTableRow(_manyPendingAlternativeBets[i], _alternativeBetsTableId)
        }
    }
    //Add Divider to DIV
    addDivider(inReserveDiv, false);
    //Show Buttons ONLY if No other table needs attention
    addConfirmSection(inReserveDiv, _alternativeBetsTableId);
}
function createAlternativeBetsHeader(inReserveDiv) {
    var mainHeaderLayer = document.createElement('div');
    mainHeaderLayer.className = 'AlternativeBetsHeaderLayer';
    var headerLayer = document.createElement('div');
    headerLayer.className = 'AlternativeBetsHeaderImage';
    var headerImage = document.createElement('img');
    headerImage.src = '/DesktopModules/BettingSlip/images/attention_list.png';
    headerImage.alt = '';
    headerLayer.appendChild(headerImage);
    mainHeaderLayer.appendChild(headerLayer);
    headerLayer = document.createElement('div');
    headerLayer.className = 'AlternativeBetsHeaderTitle';
    var headerTitle = document.createElement('H1');
    setHtml(headerTitle, _alternativeBetsHeaderTitleText);
    headerLayer.appendChild(headerTitle);
    var headerText = document.createElement('p');
    setHtml(headerText, _alternativeBetsHeaderText);
    headerLayer.appendChild(headerText);
    mainHeaderLayer.appendChild(headerLayer);
    inReserveDiv.appendChild(mainHeaderLayer);
}
function displayManyPendingBets() {
    var inReserveDiv = $get(_inReserveLayerId);
    //Add Summary Header Div
    createPendingBetsHeader(inReserveDiv);
    //Add Divider to DIV
    addDivider(inReserveDiv, false);
    //Add Summary Table
    var tableLayer = document.createElement('div');
    tableLayer.className = 'PendingBetsTableLayer';
    //Add Table Layer To Layer
    inReserveDiv.appendChild(tableLayer);
    //Create Table Header
    createGeneralPendingBetsTableHeader(tableLayer, _pendingBetsTableId);
    //Add rows for each item
    if (isArrayValid(_manyPendingBets)) {
        for (i = 0; i < _manyPendingBets.length; i++) {
            //Add Row
            createGeneralPendingBetsTableRow(_manyPendingBets[i], _pendingBetsTableId)
        }
    }
    //Add Divider to DIV
    addDivider(inReserveDiv, false);
    //Show Buttons ONLY if No other table needs attention
    addConfirmSection(inReserveDiv, _pendingBetsTableId);
}
function createPendingBetsHeader(inReserveDiv) {
    var mainHeaderLayer = document.createElement('div');
    mainHeaderLayer.className = 'PendingBetsHeaderLayer';
    var headerLayer = document.createElement('div');
    headerLayer.className = 'PendingBetsHeaderImage';
    var headerImage = document.createElement('img');
    headerImage.src = '/DesktopModules/BettingSlip/images/alert_list.png';
    headerImage.alt = '';
    headerLayer.appendChild(headerImage);
    mainHeaderLayer.appendChild(headerLayer);
    headerLayer = document.createElement('div');
    headerLayer.className = 'PendingBetsHeaderTitle';
    var headerTitle = document.createElement('H1');
    setHtml(headerTitle, _pendingBetsHeaderTitleText);
    headerLayer.appendChild(headerTitle);
    var headerText = document.createElement('p');
    setHtml(headerText, _pendingBetsHeaderText);
    headerLayer.appendChild(headerText);
    mainHeaderLayer.appendChild(headerLayer);
    inReserveDiv.appendChild(mainHeaderLayer);
}
function createGeneralPendingBetsTableHeader(parentDiv, tableId) {
    var generalBetsTable = document.createElement('table');
    generalBetsTable.setAttribute('id', tableId);
    if(tableId == _alternativeBetsTableId)
        generalBetsTable.className = 'AlternativeBetsTable';
    if (tableId == _pendingBetsTableId)
        generalBetsTable.className = 'PendingBetsTable';
    var bodyContainer;
    if (isIE()) {
        bodyContainer = document.createElement("TBODY");
    }
    var headerRow = document.createElement('tr');
    var headerDescriptionCell = document.createElement('td');
    var headerOddsValueCell = document.createElement('td');
    var headerBetAmountCell = document.createElement('td');
    var headerAcceptActionCell = document.createElement('td');
    var headerRefuseActionCell = document.createElement('td');
    if (tableId == _alternativeBetsTableId) {
        var headerAlternativeAmountCell = document.createElement('td');
        headerAlternativeAmountCell.className = 'ManyTableHeaderCell';
    }
    //Set Classes
    headerDescriptionCell.className = 'ManyTableHeaderCell';
    headerDescriptionCell.style.textalign = 'left';
    headerOddsValueCell.className = 'ManyTableHeaderCell';
    headerBetAmountCell.className = 'ManyTableHeaderCell';
    headerRefuseActionCell.className = 'ManyTableHeaderRefuseCell';
    if (tableId == _alternativeBetsTableId)
        headerAcceptActionCell.className = 'ManyTableHeaderAcceptCell';
    if (tableId == _pendingBetsTableId)
        headerAcceptActionCell.className = 'ManyTableHeaderPendingCell';

    var headerDescriptionLabel = document.createElement('span');
    setText(headerDescriptionLabel, _pendingBetsTableHeaderDescriptionText);
    //Add Span to Cell
    headerDescriptionCell.appendChild(headerDescriptionLabel);

    var headerOddsValueLabel = document.createElement('span');
    setText(headerOddsValueLabel, _pendingBetsTableHeaderOddsValueText);
    //Add Span to Cell
    headerOddsValueCell.appendChild(headerOddsValueLabel);

    var headerBetAmountLabel = document.createElement('span');
    setText(headerBetAmountLabel, _pendingBetsTableHeaderBetAmountText);
    //Add Span to Cell
    headerBetAmountCell.appendChild(headerBetAmountLabel);

    if (tableId == _alternativeBetsTableId) {
        var headerAlternativeAmountLabel = document.createElement('span');
        setText(headerAlternativeAmountLabel, _pendingBetsTableHeaderAlternativeAmountText);
        //Add Span to Cell
        headerAlternativeAmountCell.appendChild(headerAlternativeAmountLabel);
    }

    var headerAcceptActionLabel = document.createElement('span');
    if (tableId == _alternativeBetsTableId)
        setText(headerAcceptActionLabel, _pendingBetsTableHeaderAcceptText);
    if (tableId == _pendingBetsTableId)
        setText(headerAcceptActionLabel, _pendingBetsTableHeaderPendingText);
    //Add Span to Cell
    headerAcceptActionCell.appendChild(headerAcceptActionLabel);

    var headerRefuseActionLabel = document.createElement('span');
    if (tableId == _alternativeBetsTableId)
        setText(headerRefuseActionLabel, _pendingBetsTableHeaderRefuseText);
    if (tableId == _pendingBetsTableId)
        setText(headerRefuseActionLabel, _pendingBetsTableHeaderDeleteText);
    //Add Span to Cell
    headerRefuseActionCell.appendChild(headerRefuseActionLabel);
    
    //Add Cells to Row
    headerRow.appendChild(headerDescriptionCell);
    headerRow.appendChild(headerOddsValueCell);
    headerRow.appendChild(headerBetAmountCell);
    if (tableId == _alternativeBetsTableId)
        headerRow.appendChild(headerAlternativeAmountCell);
    headerRow.appendChild(headerAcceptActionCell);
    headerRow.appendChild(headerRefuseActionCell);
    //Add Header Row to table or TBODY 
    if (isIE()) {
        bodyContainer.appendChild(headerRow);
        generalBetsTable.appendChild(bodyContainer);
    }
    else {
        generalBetsTable.appendChild(headerRow);
    }
    //Add Table to DIV
    parentDiv.appendChild(generalBetsTable);
}
function createGeneralPendingBetsTableRow(betResult, tableId) {
    if (betResult) {
        var table = $get(tableId);
        var itemRow = document.createElement('tr');
        var itemDescriptionCell = document.createElement('td');
        var itemOddsValueCell = document.createElement('td');
        var itemBetAmountCell = document.createElement('td');
        var itemAcceptActionsCell = document.createElement('td');
        var itemRefuseActionsCell = document.createElement('td');
        if (tableId == _alternativeBetsTableId) {
            var itemAlternativeAmountCell = document.createElement('td');
            itemAlternativeAmountCell.className = 'TableItemCellCenterAlternative';
        }

        itemDescriptionCell.className = 'TableItemCellHighlighted';
        itemOddsValueCell.className = 'TableItemCellCenterHighlighted';
        itemBetAmountCell.className = 'TableItemCellCenterHighlighted';        
        itemAcceptActionsCell.className = 'TableItemStatusCell';
        itemRefuseActionsCell.className = 'TableItemStatusCell';

        var itemDescriptionLabel = document.createElement('span');
        var betItemDescription = betResult.Description;
        setText(itemDescriptionLabel, betItemDescription);
        //Add Span to Cell
        itemDescriptionCell.appendChild(itemDescriptionLabel);

        var itemOddsValueLabel = document.createElement('span');
        setText(itemOddsValueLabel, formatNumber(betResult.OddsValue));
        //Add Span to Cell
        itemOddsValueCell.appendChild(itemOddsValueLabel);
        
        var itemBetAmountLabel = document.createElement('span');
        setText(itemBetAmountLabel, formatNumber(betResult.StakePerBet));
        //Add Span to Cell
        itemBetAmountCell.appendChild(itemBetAmountLabel);

        if (tableId == _alternativeBetsTableId) {
            var itemAlternativeAmountLabel = document.createElement('span');
            setText(itemAlternativeAmountLabel, formatNumber(betResult.AlternativeBetAmount));
            //Add Span to Cell
            itemAlternativeAmountCell.appendChild(itemAlternativeAmountLabel);
        }

        //Add Buttons
        if (betResult.Status == _statusPending) {
            //Only if alternative bet amount was specified add an accept button
            var itemAcceptCheckbox = document.createElement('input');
            itemAcceptCheckbox.setAttribute('type', 'checkbox');
            itemAcceptCheckbox.setAttribute('id', tableId + '_accept_' + betResult.ResultID);
            itemAcceptCheckbox.setAttribute('name', tableId + '_accept_' + betResult.ResultID);

            //Add OnChange Event Handler
            itemAcceptCheckbox.onclick = function() {
            verifyAcceptDeleteCheckBox(this, tableId, 'accept');
            }

            //Add CheckBox to Cell
            itemAcceptActionsCell.appendChild(itemAcceptCheckbox);
            itemAcceptActionsCell.align = 'center';

            var itemRefuseCheckbox = document.createElement('input');
            itemRefuseCheckbox.setAttribute('type', 'checkbox');
            itemRefuseCheckbox.setAttribute('id', tableId + '_delete_' + betResult.ResultID);
            itemRefuseCheckbox.setAttribute('name', tableId + '_delete_' + betResult.ResultID);

            //Add OnChange Event Handler
            itemRefuseCheckbox.onclick = function() {
            verifyAcceptDeleteCheckBox(this, tableId, 'delete');
            }

            //Add CheckBox to Cell
            itemRefuseActionsCell.appendChild(itemRefuseCheckbox);
            itemRefuseActionsCell.align = 'center';
        }
        //Add Cells to Row
        itemRow.appendChild(itemDescriptionCell);
        itemRow.appendChild(itemOddsValueCell);
        itemRow.appendChild(itemBetAmountCell);
        if (tableId == _alternativeBetsTableId)
            itemRow.appendChild(itemAlternativeAmountCell);
        itemRow.appendChild(itemAcceptActionsCell);
        itemRow.appendChild(itemRefuseActionsCell);
        //Add Item Row to table or tbody
        if (isIE())
            table.childNodes[0].appendChild(itemRow);
        else
            table.appendChild(itemRow);
    }
}
function addConfirmSection(parentDiv, tableId){
    var footerLayer = document.createElement('div');
    footerLayer.className = 'ManyTableFooterLayer';

    var checkBoxTableLabel = document.createElement('div');
    checkBoxTableLabel.className = 'ManyTableFooterAllBoxLayer';
    footerLayer.appendChild(checkBoxTableLabel);
    addCheckAllBox(checkBoxTableLabel, tableId);    
    
    var buttonLabel = document.createElement('div');
    buttonLabel.className = 'ManyTableFooterButtonLayer';
    var confirmButton = document.createElement('input');
    confirmButton.setAttribute('type', 'button');
    confirmButton.setAttribute('id', tableId + '_' + _confirmPendingBetsButtonId);
    confirmButton.setAttribute('name', tableId + '_' + _confirmPendingBetsButtonId);
    confirmButton.setAttribute('value', _modalWindowConfirmPendingBetsButtonText);
    confirmButton.disabled = true;
    confirmButton.className = 'positiveSmallDisabled';
    //Add OnChange Event Handler
    confirmButton.onclick = function() {
        _confirmingTableId = tableId;
        if (tableId == _pendingBetsTableId)
            setBetsLeaveInPending();
        verifyPendingBetsStatus();
    }    
    buttonLabel.appendChild(confirmButton);
    footerLayer.appendChild(buttonLabel);
    
    parentDiv.appendChild(footerLayer);
}
function addCheckAllBox(parentDiv, tableId){
    var checkBoxLabel = document.createElement('div');
    if (tableId == _alternativeBetsTableId)
        checkBoxLabel.className = 'ManyTableFooterAcceptAllTextLayer';
    if (tableId == _pendingBetsTableId)
        checkBoxLabel.className = 'ManyTableFooterPendingAllTextLayer';
    setHtml(checkBoxLabel, _footerCheckAllText);
    parentDiv.appendChild(checkBoxLabel);
    checkBoxLabel = document.createElement('div');
    checkBoxLabel.className = 'ManyTableFooterRefuseAllTextLayer';
    setHtml(checkBoxLabel, _footerCheckAllText);
    parentDiv.appendChild(checkBoxLabel);
    
    //Add Divider to DIV
    addDivider(parentDiv, false);
    
    var acceptCheckBoxLabel = document.createElement('div');
    acceptCheckBoxLabel.className = 'ManyTableFooterAcceptAllCheckBoxLayer';
    var footerAcceptCheckbox = document.createElement('input');
    footerAcceptCheckbox.setAttribute('type', 'checkbox');
    footerAcceptCheckbox.setAttribute('id', tableId + '_acceptAll');
    footerAcceptCheckbox.setAttribute('name', tableId + '_acceptAll');
    //Add OnChange Event Handler
    footerAcceptCheckbox.onclick = function() {
        checkAll(this, tableId, 'accept');
    }
    acceptCheckBoxLabel.appendChild(footerAcceptCheckbox);
    parentDiv.appendChild(acceptCheckBoxLabel);

    refuseCheckBoxLabel = document.createElement('div');
    refuseCheckBoxLabel.className = 'ManyTableFooterRefuseAllCheckBoxLayer';
    var footerDeleteCheckbox = document.createElement('input');
    footerDeleteCheckbox.setAttribute('type', 'checkbox');
    footerDeleteCheckbox.setAttribute('id', tableId + '_deleteAll');
    footerDeleteCheckbox.setAttribute('name', tableId + '_deleteAll');
    //Add OnChange Event Handler
    footerDeleteCheckbox.onclick = function() {
        checkAll(this, tableId, 'delete');
    }
    refuseCheckBoxLabel.appendChild(footerDeleteCheckbox);
    parentDiv.appendChild(refuseCheckBoxLabel);
}

function verifyAcceptDeleteCheckBox(checkbox, tableId, sourceType) {
    var resultID = checkbox.id.replace(tableId + '_' + sourceType + '_', '');
    var oppositeCheckboxName;
    if (sourceType == 'accept')
        oppositeCheckboxName = tableId + '_delete_' + resultID;
    else
        oppositeCheckboxName = tableId + '_accept_' + resultID;

    if (checkbox.checked) {
        //Uncheck the corresponding checkbox
        $get(oppositeCheckboxName).checked = false;
    }
    //Enable Disable Confirm Button
    var confirmButton = $get(tableId + '_' + _confirmPendingBetsButtonId);
    confirmButton.disabled = disableConfirmPendingButton(tableId);
    if (confirmButton.disabled)
        confirmButton.className = 'positiveSmallDisabled';
    else
        confirmButton.className = 'positiveSmall';

    //Eventually uncheck the Check ALL checkboxes
    $get(tableId + '_acceptAll').checked = false;
    $get(tableId + '_deleteAll').checked = false;
}

function checkAll(checkbox, tableId, sourceType) {
    if (sourceType == 'accept') {
        checkUncheckPendingCheckboxes(tableId + '_accept_', checkbox.checked);
        if (checkbox.checked) {
            checkUncheckPendingCheckboxes(tableId + '_delete_', !checkbox.checked);
            $get(tableId + '_deleteAll').checked = false;
        }
    }
    else {
        checkUncheckPendingCheckboxes(tableId + '_delete_', checkbox.checked);
        if (checkbox.checked) {
            checkUncheckPendingCheckboxes(tableId + '_accept_', !checkbox.checked);
            $get(tableId + '_acceptAll').checked = false;
        }
    }
    //Enable Disable Confirm Button
    var confirmButton = $get(tableId + '_' + _confirmPendingBetsButtonId);    
    confirmButton.disabled = disableConfirmPendingButton(tableId);
    if (confirmButton.disabled)
        confirmButton.className = 'positiveSmallDisabled';        
    else
        confirmButton.className = 'positiveSmall';
}

function checkUncheckPendingCheckboxes(checkboxTypeName, checked) {
    var inputs = document.getElementsByTagName("INPUT");
    for (var x = 0; x < inputs.length; x++) {
        if ((inputs[x].type == 'checkbox') &&
               (inputs[x].id != null) &&
               (inputs[x].id != 'undefined') &&
               (inputs[x].id.indexOf(checkboxTypeName) != -1)) {
            $get(inputs[x].id).checked = checked;
        }
    }
}

function disableConfirmPendingButton(tableId) {
    var inputs = document.getElementsByTagName("INPUT");
    var isDisabled = false;
    var itemID;
    for (var x = 0; x < inputs.length; x++) {
        if ((inputs[x].type == 'checkbox') &&
               (inputs[x].id != null) &&
               (inputs[x].id != 'undefined') &&
               (inputs[x].id.indexOf(tableId + '_accept_') != -1)) {
            itemID = inputs[x].id.replace(tableId + '_accept_', '')
            if ((!$get(inputs[x].id).checked) && (!$get(tableId + '_delete_' + itemID).checked)) {
                isDisabled = true;
                break;
            }
        }
    }
    return isDisabled;
}

function disablePrintPendingButton(tableId) {
    var inputs = document.getElementsByTagName("INPUT");
    var isDisabled = true;    
    //First Check if any Accept Checkboxes where checked
    for (var x = 0; x < inputs.length; x++) {
        if ((inputs[x].type == 'checkbox') &&
               (inputs[x].id != null) &&
               (inputs[x].id != 'undefined') &&
               (inputs[x].id.indexOf(tableId + '_accept_') != -1)) {
            if ($get(inputs[x].id).checked) {
                isDisabled = false;
                break;
            }
        }
    }
    //Then verify items in memory for any bets in the Accepted Status
    if (isDisabled) {
        for (j = 0; j < _tempPendingBets.length; j++) {
            if (_tempPendingBets[i].Status == _statusAccepted) {
                isDisabled = false;
                break;
            }
        }
    }    
    return isDisabled;
}

function getPendingBetIDByType(tableId, checkboxType) {
    var inputs = document.getElementsByTagName("INPUT");
    var itemID;
    var resultIDs = new Array();
    var count = 0;
    for (var x = 0; x < inputs.length; x++) {
        if ((inputs[x].type == 'checkbox') &&
               (inputs[x].id != null) &&
               (inputs[x].id != 'undefined') &&
               (inputs[x].id.indexOf(tableId + '_' + checkboxType + '_') != -1)) {
            if ($get(inputs[x].id).checked) {
                itemID = inputs[x].id.replace(tableId + '_' + checkboxType + '_', '');
                switch (checkboxType) {
                    case 'accept':
                        //'Accept' case 
                        for (i = 0; i < _tempPendingBets.length; i++) {
                            if (
                                (_tempPendingBets[i].ResultID == itemID) &&
                                (_tempPendingBets[i].Status == _statusPending) &&
                                (_tempPendingBets[i].AlternativeBetAmount != 0)
                             ) {
                                resultIDs[count] = itemID;
                                //Increment Returning Array count
                                count++;
                                break;
                            }
                        }
                        break;
                    default:
                        //'Delete' case
                        resultIDs[count] = itemID;
                        //Increment Returning Array count
                        count++;
                        break
                }
            }
        }
    }
    return resultIDs;
}

function setBetsLeaveInPending() {
    var inputs = document.getElementsByTagName("INPUT");
    var itemID;
    var count = 0;
    _leaveInPendingBetIDs = new Array();
    for (var x = 0; x < inputs.length; x++) {
        if ((inputs[x].type == 'checkbox') &&
               (inputs[x].id != null) &&
               (inputs[x].id != 'undefined') &&
               (inputs[x].id.indexOf(_pendingBetsTableId + '_accept_') != -1)) {
            if ($get(inputs[x].id).checked) {
                itemID = inputs[x].id.replace(_pendingBetsTableId + '_accept_', '');
                _leaveInPendingBetIDs[count] = itemID;
                //Increment Array count
                count++;
            }
        }
    }
}

function verifyPendingBetsStatus() {
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.RefreshPendingBetStatus(_currentTabIndex, getPendingBetResultIDs(), true, verifyPendingBetsStatusResult, onError);
}
function verifyPendingBetsStatusResult(result, userContext) {
    var modalPopupBehavior = $find(_checkOutModalBehaviorId);
    if (!result.IsSuccessful) {
        alert(result.Message);
        //Cancel Modal Popup            
        //modalPopupBehavior.hide();
        //Cart Empty Rebind for correct display
        //getBettingCart(true);
    }
    else {
        //Refresh/Update Local Copy of pending BetResults
        if (isArrayValid(result.BetResults)) {
            if (pendingBetsChanged(result.BetResults)) {
                updatePendingBets(result.BetResults);
                managePendingBetsDisplay();
                //Alert User PendingBets status has changed
                alert(_pendingBetsUpdateMsg);
            }
            else {
                //All Ok Continue to confirm
                confirmPendingBets(_confirmingTableId);
            }
        }
    }
}
function confirmPendingBets(tableId) {
    _acceptIds = new Array();
    _pendingBetsDeleteIds = new Array();
    if (_isOneResultItem) {
        switch(_oneItemResultAction){
            case 'accept':
                //Add ONLY if There is an Alternative Amount For the Pending Bet
                if (
                    (_tempPendingBets[0].Status == _statusPending) &&
                    (_tempPendingBets[0].AlternativeBetAmount != 0)
                   ) {
                    _acceptIds[0] = _tempPendingBets[0].ResultID;
                }
                break;
            case 'refuse':
                _pendingBetsDeleteIds[0] = _tempPendingBets[0].ResultID;
                break;
        }
    }
    else {
        //Get Accepted items and send to method
        _acceptIds = getPendingBetIDByType(tableId, 'accept');
        //Get Deleted Items and send to method
        _pendingBetsDeleteIds = getPendingBetIDByType(tableId, 'delete');
    }
    //If Items are specified
    if ((_acceptIds.length > 0) || (_pendingBetsDeleteIds.length > 0)) {
        WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.UpdatePendingBets(_currentTabIndex, _acceptIds, _pendingBetsDeleteIds, _autoEmptyCart, confirmPendingItemsResult, onError);
    }
    else {
        //If in single Item mode and User Accepted To leave
        if (_isOneResultItem) {
            if (_oneItemResultAction == 'accept') {
                displayOneItemAccepted();
            }
        }
        else {
            _confirmingTableId = '';
            getPendingBetsStatus(true);
        }
    }
}

function confirmPendingItemsResult(result, userContext) {
    if (!result.IsSuccessful) {
        alert(result.Message);
    }
    else {
        //If not already empty client Cart and Rebind
        if ((_autoEmptyCart) && (_cartItems)) {
            _cartItems = null;
        }
    }

    if (_isOneResultItem) {
        if (_oneItemResultAction == 'accept')
            displayOneItemAccepted();

        if (_oneItemResultAction == 'refuse')
            displayOneItemRefused();
        
        _oneItemResultAction = ''; //Reset Variable
    }
    else {
        _confirmingTableId = '';
        getPendingBetsStatus(true);
    }
}


function acceptPendingItemsResult(result, userContext) {
    if (!result.IsSuccessful) {
        alert(result.Message);
    }
    else {
        //If not already empty client Cart and Rebind
        if ((_autoEmptyCart) && (_cartItems)) {
            _cartItems = null;
        }
        //Cart Empty Rebind for correct display
        getBettingCart(true);
    }
}

function deletePendingItemsResult(result, userContext) {
    if (!result.IsSuccessful) {
        alert(result.Message);
    }
    else {
        //If not already empty client Cart and Rebind
        if ((_autoEmptyCart) && (_cartItems)) {
            _cartItems = null;
        }
        //Cart Empty Rebind for correct display
        getBettingCart(true);
    }
}

//Get Navigation
function loadNavigation() {
    var tokenString = getCookie(_tokenKey);
    var tokens = new Array();
    if (tokenString != null && tokenString != '') {
        tokens = tokenString.split('|');
    }
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.LoadBettingNavigation(_tabID, _periodFilter, tokens, _defaultSportID, _userCulture, onLoadNavigation, onError);
}
function onLoadNavigation(result, userContext) {
    var navTreeLayer = $get('navTreeLayer');
    navTreeLayer.innerHTML = result;
    initMenus();
}
function navFilterPeriodChanged() {
    var navFilterPeriodSelectBox = $get(_navFilterPeriodSelectBoxId);
    _periodFilter = parseInt(navFilterPeriodSelectBox.options[navFilterPeriodSelectBox.selectedIndex].value);
    loadNavigation()
    //Reset Events
    var tokenString = getCookie(_tokenKey);
    if (tokenString != null && tokenString != '') {
        tokenString = '';
        setCookie(_tokenKey, tokenString, 20, 'M', '', '', '');
        generateDefaultView();
    }
}
//Banner Functions
function rotateImage(bannerImageId) {
    getNextImage();
    var bannerImage = $get(bannerImageId);
    bannerImage.src = _newImageSource;
    bannerImage.onclick = function() {
        openBannerItem(_newImageAction);
    }
    var recur_call = 'rotateImage(\'' + bannerImageId + '\')';
    setTimeout(recur_call, _imageChangeInterval);
}
function getNextImage() {
    if (_randomImageDisplay) {
        _image_index = generateRandomIndex(0, _imagesCount-1);
    }
    else {
        _image_index = (_image_index+1) % _imagesCount;
    }
    _newImageSource = _imageList[_image_index].src;
    _newImageAction = _imageActionList[_image_index];
}
function generateRandomIndex(x, y) {
    var range = y - x + 1;
    return Math.floor(Math.random() * range) + x;
}
function getImageItemLocation(imageObj) {
    return(imageObj.src);
}
function openBannerItem(params) {
    var navTokenParams;
    if (params.indexOf('|') > -1) {
        //Event Item
        var mainParams = params.split('|');
        navTokenParams = mainParams[0];
        getEventDetail(mainParams[1]);
    }
    else {
        navTokenParams = params;
    }

    //Update Cookies
    handleNavigationTokens(navTokenParams.replace(_navToEventsPrefix, ''));
    
    //Get Navigation
    loadNavigation();
    
    //Bind Default League Display
    getFilterControl(-1);

    //Hide Banner Div only if banners present
    if ($get('rotatingBanner').src.indexOf('_progressbar.gif') <= -1) {
        $get('promoBannersLayer').style.display = 'none';
    }    
}
//End Banner Functions

function filterEventsByQuickBet(checkbox) {
    if (checkbox.checked)
        getFilterControl(-1);
}
function quickBetIsChecked() {
    var isChecked = false;
    var inputs = document.getElementsByTagName("input");
    for (var x = 0; x < inputs.length; x++) {
        if ((inputs[x].id != null) &&
               (inputs[x].id != 'undefined') &&
               (inputs[x].id.indexOf('QuickBetTitleCheckBox') != -1)) {
            isChecked = inputs[x].checked;
            break;
        }
    }

    if ((!isChecked) && (_quickBetIsDefaultView) && (_filterRqCount == 0))
        isChecked = true;
    return isChecked;
}
function filterEventListByOddsType(radio) {
    getFilterControl(parseInt(radio.value))
}
function getFilterControl(oddsTypeID) {
    var tokenString = getCookie(_tokenKey);
    var qBetIsChecked = quickBetIsChecked();
    if (tokenString != null && tokenString != '') {
        var tokens = tokenString.split('|');
        if (tokens) {
            _filterRqCount++;
            WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.GetFilterList(_tabID, _quickBetEnabled, _quickBetIsDefaultView, qBetIsChecked, oddsTypeID, tokens, _userCulture, onGetFilterControl, onError);
        }
    }
    else {
        _filterRqCount = 0;//reset counters
        generateDefaultView();
    }
}
function onGetFilterControl(result, userContext) {
    //Hide Banner Div only if banners present
    if ($get('rotatingBanner').src.indexOf('_progressbar.gif') <= -1) {
        $get('promoBannersLayer').style.display = 'none';
    }
    var resultLayer = $get('resultLayer');
    resultLayer.innerHTML = result;
}
function generateDefaultView() {
    //Show Banner Div only if banners present
    if ($get('rotatingBanner').src.indexOf('_progressbar.gif') <= -1) {
        $get('promoBannersLayer').style.display = '';
    }
    getBestSellersEvents()
}
function getBestSellersEvents() {
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.GetBestSellersEvents(_tabID, _defaultSportID, _userCulture, onGetBestSellersEvents, onError);
}
function onGetBestSellersEvents(result, userContext) {
    var resultLayer = $get('resultLayer');
    resultLayer.innerHTML = result;

    //Call LastMinuteBets
    getLastMinuteEvents();
}
function getLastMinuteEvents() {
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.GetLastMinuteEvents(_tabID, _defaultSportID, _userCulture, onGetLastMinuteBets, onError);
}
function onGetLastMinuteBets(result, userContext) {
    var resultLayer = $get('resultLayer');
    resultLayer.innerHTML += result;
}
function showSportTab(tabHeaderId, tabName) {
    setMenuHeaderVisibility(tabHeaderId);
    var tab = setTabVisibility(tabName);
}
function setMenuHeaderVisibility(tabHeaderId) {
    var tabPartialHeaderId = tabHeaderId.substring(0, 14)
    var cells = document.getElementsByTagName("td");
    for (var x = 0; x < cells.length; x++) {
        if ((cells[x].id != null) &&
            (cells[x].id != 'undefined') &&
            (cells[x].id.indexOf(tabPartialHeaderId) != -1)) {
            if (cells[x].id.endsWith(tabHeaderId)) {
                if (cells[x].className == 'SportMenuTabCell')
                    cells[x].className = 'SportMenuTabSelectedCell';
                else
                    cells[x].className = 'SportMenuTabCell';
            }
            else {
                cells[x].className = 'SportMenuTabCell';
            }
        }
    }
}
function setTabVisibility(tabName) {
    var tab;
    var tabPartialName = tabName.substring(0, 9)
    var layers = document.getElementsByTagName("div");
    for (var x = 0; x < layers.length; x++) {
        if ((layers[x].id != null) &&
            (layers[x].id != 'undefined') &&
            (layers[x].id.indexOf(tabPartialName) != -1)) {
            if (layers[x].id.endsWith(tabName)) {
                layers[x].style.display = '';
                tab = layers[x];
            }
            else {
                layers[x].style.display = 'none';
            }
        }
    }
    return tab;
}
function getEventDetail(token) {
    var isFromLastMinute = true;
    var tokenString = getCookie(_tokenKey);
    if (tokenString != null && tokenString != '') {
        isFromLastMinute = false;
    }
    //Reset Content
    $get('detailResultLayer').innerHTML = '';
    //Hide previous later if visible
    if (popUpIsVisible('renderLayer'))
        setVisible('renderLayer');
    
    WorldMatch.Gnp2.Web.Betting.Services.BettingWebService.GetEventDetail(_tabID, token, isFromLastMinute, _userCulture, onGetEventDetail, onError);
}
function onGetEventDetail(result, userContext) {
    var detailResultLayer = $get('detailResultLayer');
    detailResultLayer.innerHTML = result;
    setVisible('renderLayer');
}

function OnInvokingRequest(sender, networkRequestEventArgs) {
    _updating = true;
}
function OnWebRequestCompleted(executor, eventArgs) {
    _updating = false;
}

