﻿function callbackSucceeded(result, userContext, methodName) {
    if (methodName == "LoadSelections") {
        var i = 0;
        var message = new Array();
        for (var item in result) {
            message[i] = result[item].SelectionName;
            i++;
        }
        alert(message.toString());
    }
}

// Live betting menu item
var liveBettingMenuItemTimerId = 0;
function liveBettingMenuItemTimerTick() {
    SportService.GetLiveBettingMenuItem(liveBettingMenuItemCallback);
    //if (liveBettingMenuItemTimerId != 0) 
    liveBettingMenuItemTimerId = setTimeout("liveBettingMenuItemTimerTick()", 10000);
}
function liveBettingMenuItemCallback(result) {
    $get('sptLiveMenuItem').innerHTML = result;
}
function startliveBettingMenuItem() {
    liveBettingMenuItemTimerTick();
}

// Modal popup
function revealModal(divID) {
    window.onscroll = function() { document.getElementById(divID).style.top = document.body.scrollTop; };
    document.getElementById(divID).style.display = "block";
    document.getElementById(divID).style.top = document.body.scrollTop;
}

function hideModal(divID) {
    document.getElementById(divID).style.display = "none";
}

// Betting slip in modal popup
function getBetSlipInModal(amount, useFreeBetCredit) {
    $get('hfAmount').value = amount;
    $get('hfUsingFreeBetCredit').value = useFreeBetCredit;

    if (!(amount > 0))
        alert("Invalid bet amount");
    else {
        SportService.GetSelectionsInBetSlip(amount, useFreeBetCredit, getBetSlipInModalCallback);
        revealModal('sptPlaceBetModal');
    }
}
function getBetSlipInModalCallback(result) {

    var content = "";

    if (result.IsEmpty) {
        content += "<div style='padding: 20px;'>There is no selection in the betting slip. Please add some selections.</div>";
        $get('btnPlaceBet').style.display = 'none';
    }
    else {
        content += "<table align=center class=singleLineTable width=100% border=1>";
        var totalPrice = 1;

        for (var index in result.Selections) {
            var item = result.Selections[index];

            content += "<tr>";

            if (item.BetOnWinPrice) {
                content += "<td align=left class=sports_bet_cell>" + item.CategoryName + " " + item.GameName + " " + " " + item.SelectionName + "</td>";
                content += "<td class=sports_bet_col_prc>$" + item.WinPrice.toFixed(3) + "</td>";

                if (item.WinPrice > 0) totalPrice *= item.WinPrice;
            }
            else {
                content += "<td align=left class=sports_bet_cell>" + item.CategoryName + " " + item.GameName + " " + " " + item.SelectionName + " (Place)</td>";
                content += "<td class=sports_bet_col_prc>$" + item.PlacePrice.toFixed(3) + "</td>";

                if (item.PlacePrice > 0) totalPrice *= item.PlacePrice;
            }

        }

        content += "</tr>"

        if (totalPrice > 1) {
            content += "</tr><td align=right class=sports_bet_cell_alt>Price: </td><td class=sports_bet_col_prc>$" + totalPrice.toFixed(3) + "</td></tr>";
            var payout = result.Amount * totalPrice;
        }

        content += "</tr><td align=right class=sports_bet_cell_alt>Amount: </td><td class=sports_bet_col_prc>$" + result.Amount.toFixed(2) + "</td></tr>";

        if (totalPrice > 1) {
            content += "</tr><td align=right class=sports_bet_cell_alt>Payout: </td><td class=sports_bet_col_prc>$" + payout.toFixed(2) + "</td></tr>";
            var winning = payout - result.Amount;
            content += "</tr><td align=right class=sports_bet_cell_alt>Winning: </td><td class=sports_bet_col_prc>$" + winning.toFixed(2) + "</td></tr>";
        }

        if (result.UseFreeBetCredit)
            content += "</tr><td align=right class=sports_bet_cell_alt colspan=2>Use Free Bet Credit </td></tr>";

        //content += "<tr><td align=left colspan=2 class=sports_bet_cell_alt><br /><span style='color:red'>VERY IMPORTANT:</span> Please take note of the Bet Ticket Number for future reference after the bet is confirmed. If you can't see the Bet Ticket Number, the bet might not be processed successfully and you may phone our support number immediately to request help on it.</td></tr>";
        content += "</table>";
    }
    
    $get("sptPlaceBetModalBetSlip").innerHTML = content;
    $get("sptPlaceBetModalBetSlip").style.display = "block";
}


// Submit bet request
var betRequestSubmitted = 0;
function submitBetRequest(amount, useFreeBetCredit) {
    if (!(amount > 0))
        alert("Invalid bet amount");
    else {
        SportService.SubmitBetRequest(amount, useFreeBetCredit, submitBetRequestCallback);
        $get("modalBetResult").innerHTML = "<img alt='Please wait ...' src='../_images/wait.gif' /> &nbsp; Please wait for the system to process the bet ...";
    }
}
function submitBetRequestCallback(result) {
    betRequestSubmitted = 1;
    showBetStatus(result);
}

// Check bet status
var checkBetStatusTimerId = 0;
var checkBetStatusInterval = 5000;
function checkBetStatusTimerTick() {
    SportService.CheckBetStatus(checkBetStatusCallback);
    if (checkBetStatusTimerId != 0) checkBetStatusTimerId = setTimeout("checkBetStatusTimerTick()", checkBetStatusInterval);
}
function checkBetStatusCallback(result) {
    showBetStatus(result);
}
function startCheckBetStatus() {
    checkBetStatusTimerId = setTimeout("checkBetStatusTimerTick()", checkBetStatusInterval);
}
function stopCheckBetStatus() {
    if (checkBetStatusTimerId != 0) {
        clearTimeout(checkBetStatusTimerId);
        checkBetStatusTimerId = 0;
    }
}

// Display bet status
function showBetStatus(result) {
//    var currentTime = new Date();
//    var hours = currentTime.getHours();
//    var minutes = currentTime.getMinutes();
//    var seconds = currentTime.getSeconds();

//    if (minutes < 10)
//        minutes = "0" + minutes;

//    if (seconds < 10)
//        seconds = "0" + seconds;

//    $get("modalBetResult").innerHTML = hours + ":" + minutes + ":" + seconds + " > " + result.Message;

    var message = result.Message;

    switch (result.BetStatus) {
        case 0:
            startCheckBetStatus();
            break;
        case 1:
            stopCheckBetStatus();
            resetConfirmState();
            $get('btnCancelSportBet').value = 'Close';
            break;
        case 4:
            stopCheckBetStatus();
            getBetSlipInModal(result.AdjustedBetAmount, result.UseFreeBetCredit);
            $get('btnPlaceBet').style.display = 'inline';
            break;
        default:
            stopCheckBetStatus();
            break;
    }
    
    $get("modalBetResult").innerHTML=message;
}


// Reset confirm state
function resetConfirmState() {
    SportService.ResetComfirmState();
}

// Cancel bet request
function cancelBetRequest() {
    SportService.CancelPendingBetRequest();
}
