﻿function getData() {
    window.status = 'Checking for updates...';
    if (null != window.IScoringDataService) {
        IScoringDataService.GetScorecardSummaryData(window.__matchId, window.__scorecardVersion, onGetDataComplete, onGetDataError);
    } else {
        window.location.reload(); //Service not loaded
    }
}

function onGetDataComplete(result) {

    text("lastUpdated", new Date().format('d MMMM yyyy HH:mm:ss'));

    if (!result) {
        window.status = 'No new data';
        return;
    }

    document.title = result.CurrentScore ? String.format("{0} | {1}", result.CurrentScore, result.MatchTitle) : result.MatchTitle;

    text("state", result.State);
    $get("state").className = result.StateColour;
    visible("noTeams", result.ShowNoTeamsMessage);
    text("battingTeam", result.BattingTeam);
    text("battingScores", result.BattingTeamScores);
    visible("teams", result.BattingTeamScores != null && result.BattingTeamScores != "");
    text("bowlingTeam", result.BowlingTeam);
    
    // If there is no BowlingTeamScores value, then populate with &nbsp; to hold position of bowlers figures
    if (result.BowlingTeamScores != "") {
        text("bowlingScores", result.BowlingTeamScores);
    }
    else {
        result.BowlingTeamScores = "&nbsp;";
    }

    if (result.Batsman1ProfileLink != "" && result.Batsman1ProfileLink != null) {
        href("batsman1Link", result.Batsman1ProfileLink);
        text("batsman1Link", result.Batsman1);
    }
    else {
        text("batsman1Name", result.Batsman1);
    }

    visibleInline("batsman1Link", result.Batsman1ProfileLink != "" && result.Batsman1ProfileLink != null);
    visibleInline("batsman1Name", result.Batsman1ProfileLink == "" || result.Batsman1ProfileLink == null);
    text("batsman1Runs", result.Batsman1Runs + " (" + result.Batsman1Balls + ")");
    visible("batsman1", result.ShowBatsman1);

    if (result.Batsman2ProfileLink != "" && result.Batsman2ProfileLink != null) {
        href("batsman2Link", result.Batsman2ProfileLink);
        text("batsman2Link", result.Batsman2);
    }
    else {
        text("batsman2Name", result.Batsman2);
    }

    visibleInline("batsman2Link", result.Batsman2ProfileLink != "" && result.Batsman2ProfileLink != null);
    visibleInline("batsman2Name", result.Batsman2ProfileLink == "" || result.Batsman2ProfileLink == null);
    text("batsman2Runs", result.Batsman2Runs + " (" + result.Batsman2Balls + ")");

    visible("batsman2", result.ShowBatsman2);
    visibleInline("currentBatsman1", result.ShowCurrentBatsman1);
    visibleInline("currentBatsman2", result.ShowCurrentBatsman2);

    if (result.Bowler1ProfileLink != "" && result.Bowler1ProfileLink != null) {
        href("bowler1Link", result.Bowler1ProfileLink);
        text("bowler1Link", result.Bowler1);
    }
    else {
        text("bowler1Name", result.Bowler1);
    }

    visibleInline("bowler1Link", result.Bowler1ProfileLink != "" && result.Bowler1ProfileLink != null);
    visibleInline("bowler1Name", result.Bowler1ProfileLink == "" || result.Bowler1ProfileLink == null);

    text("bowler1Figures", result.Bowler1Figures);
    visible("bowler1", result.ShowBowler1);

    if (result.Bowler2ProfileLink != "" && result.Bowler2ProfileLink != null) {
        text("bowler2Link", result.Bowler2);
        href("bowler2Link", result.Bowler2ProfileLink);
    }
    else {
        text("bowler2Name", result.Bowler2);
    }

    visibleInline("bowler2Link", result.Bowler2ProfileLink != "" && result.Bowler2ProfileLink != null);
    visibleInline("bowler2Name", result.Bowler2ProfileLink == "" || result.Bowler2ProfileLink == null);

    text("bowler2Figures", result.Bowler2Figures);
    visible("bowler2", result.ShowBowler2);

    text("matchSummary", result.MatchSummary);
    visible("matchSummaryBox", result.MatchSummary != null && result.MatchSummary != "");
    text("daySession", result.DaySession);
    visibleInline("daySession", result.DaySession != null && result.DaySession != "");

    text("runRate", result.RunRate);
    visible("runRateBox", result.RunRate != null);
    text("reqRunRate", result.ReqRunRate);
    visible("reqRunRateBox", result.ReqRunRate != null);

    text("lastWicket", result.LastWicket);
    visible("lastWicketBox", result.LastWicket != null);

    text("currentOver", result.CurrentOver);
    visible("currentOverBox", result.CurrentOver != null);
    visible("stats", result.CurrentOver != null || result.LastWicket != null || result.ReqRunRate != null || result.RunRate != null);

    text("recentOvers", result.RecentOvers);
    visible("recentOversBox", result.RecentOvers != null);

    text("partnership", result.Partnership);
    visible("partnershipBox", result.Partnership != null);

    window.__scorecardVersion = result.ScorecardVersion;

    window.status = 'Update complete';
}

function onGetDataError(error) {
    window.status = "Error: " + error.message;
}

function text(id, val) {
    var element = $get(id);
    if (!element) return;
    if (element.innerHTML == (val + '')) return;
    if (val == null) val = "";
    element.innerHTML = val;
}

function href(id, val) {
    var element = $get(id);
    if (!element) return;
    if (element.href == (val + '')) return;
    if (val == null) val = "";
    element.href = val;
}

function visible(id, show) {
    var element = $get(id);
    if (!element) return;
    element.style.display = show ? "block" : "none";
}

function visibleInline(id, show) {
    var element = $get(id);
    if (!element) return;
    element.style.display = show ? "inline" : "none";
}
