﻿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 += "</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();
}