﻿// Hook up Application event handlers.
var app = Sys.Application;
app.add_load(bettingResults_loadPage);

var _progressLayerId = 'progressLayer';
var _sportSelectBox;
var _leagueSelectBox;
var _periodsSelectBox;
var _personalBetsCheckBox;
var _filterButton;

function bettingResults_loadPage(sender, e) {
    _sportSelectBox = $get('SportFilterSelectBox');
    _leagueSelectBox = $get('LeagueFilterSelectBox');
    _periodsSelectBox = $get('PeriodFilterSelectBox');
    _personalBetsCheckBox = $get('PersonalBetsFilterCheckBox');
    _filterButton = $get('FilterButton');

    //Load period items
    loadPeriods();
    
    if (!_showPersonalBets) {
        _personalBetsCheckBox.disabled = true;
    }

    //Set Localized Button text
    _filterButton.value = _filterButtonText;

    WorldMatch.Gnp2.Web.Services.BettingWebService.LoadScheduleSports(_scheduleID, _language, onLoadSportsSuccess, onError);
}
function loadPeriods() {
    clearListBox(_periodsSelectBox);
    addListBoxItem(_periodsSelectBox, _oneMonthPeriodOptionText, _oneMonthPeriodOptionValue);
    addListBoxItem(_periodsSelectBox, _threeWeeksPeriodOptionText, _threeWeeksPeriodOptionValue);
    addListBoxItem(_periodsSelectBox, _twoWeeksPeriodOptionText, _twoWeeksPeriodOptionValue);
    addListBoxItem(_periodsSelectBox, _oneWeekPeriodOptionText, _oneWeekPeriodOptionValue);
    addListBoxItem(_periodsSelectBox, _threeDaysPeriodOptionText, _threeDaysPeriodOptionValue);
    addListBoxItem(_periodsSelectBox, _oneDayPeriodOptionText, _oneDayPeriodOptionValue);
    addListBoxItem(_periodsSelectBox, _twelveHoursPeriodOptionText, _twelveHoursPeriodOptionValue);
    _periodsSelectBox.selectedIndex = 5;
}
function onLoadSportsSuccess(sports) {
    if (sports) {
        for (var i = 0; i < sports.length; i++) {
            addListBoxItem(_sportSelectBox, sports[i].Name, sports[i].ID);
        }

        $addHandler(_sportSelectBox, 'change', onSportsChange);

        //Load Leagues Immediately only if sports have been loaded
        if (_sportSelectBox.options.length > 0) {
            loadLeagues();
        }
    }
}
function onSportsChange(e) {
    if (parseInt(_sportSelectBox.options[_sportSelectBox.selectedIndex].value) > -1) {
        loadLeagues();
    }
}
function loadLeagues() {
    $get(_progressLayerId).style.display = '';
    WorldMatch.Gnp2.Web.Services.BettingWebService.GetLeagueBySport(_scheduleID, parseInt(_sportSelectBox.options[_sportSelectBox.selectedIndex].value), _language, onLoadLeaguesSuccess, onError);
}
function onLoadLeaguesSuccess(leagues) {
    if (leagues) {
    
        //Clear Previous items
        clearListBox(_leagueSelectBox);
        addListBoxItem(_leagueSelectBox, _allLeaguesOptionText, -1);

        for (var i = 0; i < leagues.length; i++) {
            addListBoxItem(_leagueSelectBox, leagues[i].Name, leagues[i].ID);
        }

        $addHandler(_leagueSelectBox, 'change', onLeaguesChange);

        $get(_progressLayerId).style.display = 'none';
        //Load events Immediately
        loadEventResults();
    }
}
function onLeaguesChange(e) {
    //if (parseInt(_leagueSelectBox.options[_leagueSelectBox.selectedIndex].value) > -1) {
        loadEventResults();
    //}
}
function loadEventResults() {
    //Continue only if sports exists
    if (_sportSelectBox.options.length > 0) {
        $get(_progressLayerId).style.display = '';
        var sportID = parseInt(_sportSelectBox.options[_sportSelectBox.selectedIndex].value);
        var leagueID = parseInt(_leagueSelectBox.options[_leagueSelectBox.selectedIndex].value);
        var targetPeriod = _periodsSelectBox.options[_periodsSelectBox.selectedIndex].value;
        var userToken = '';
        if (_personalBetsCheckBox.checked)
            userToken = _userToken;
            
        WorldMatch.Gnp2.Web.Services.BettingWebService.GetEventResults(_scheduleID, sportID, leagueID, targetPeriod, userToken, _language, onLoadEventSuccess, onError);
    }
}
function onLoadEventSuccess(eventResults) {
    var resultsRepeater = $find(_bettingResultsRepeater);

    resultsRepeater.set_dataSource(eventResults);
    resultsRepeater.dataBind();

    $get(_progressLayerId).style.display = 'none';
}
function onItemDataBound(sender, e) {
    var item = e.get_item();

    if (item.get_isDataItemType()) {
        var eventResult = item.get_dataItem();

        var eventDateLabel = item.findControl('EventDateLabel');
        var sportLeagueLabel = item.findControl('SportLeagueLabel');
        var eventCodeLabel = item.findControl('EventCodeLabel');
        var eventNameLabel = item.findControl('EventNameLabel');
        var resultsLayer = item.findControl('ResultsLayer');

        setText(eventDateLabel, eventResult.StartDate.localeFormat('dd MMM yyyy HH:mm')); //d
        setText(sportLeagueLabel, eventResult.SportLeagueDescription);
        setText(eventCodeLabel, eventResult.EventID);
        setText(eventNameLabel, eventResult.EventName);
        if (!eventResult.IsOrderList) {
            setHtml(resultsLayer, eventResult.Scores);
        }
        else {
            setHtml(resultsLayer, eventResult.ResultOrderList[0].ParticipantFinalScore + '.&nbsp;' + eventResult.ResultOrderList[0].ParticipantName);

            //There is a Order List to display
            //Clear Previous Items
//            while (resultsLayer.childNodes[0]) {
//                resultsLayer.removeChild(resultsLayer.childNodes[0]);
//            }

            //Create new Table
//            var orderListTable = document.createElement('table');            
//            orderListTable.className = 'participantScores';
//            if (isIE()) {
//                bodyContainer = document.createElement("TBODY");
//                orderListTable.appendChild(bodyContainer);
//            }
            
            //Add rows for each order item
//            if (eventResult.ResultOrderList) {
//                for (i = 0; i < eventResult.ResultOrderList.length; i++) {
//                    createParticipantScoresTableRow(orderListTable, eventResult.ResultOrderList[i])
//                }
//            }

            //Add Table to DIV
//            resultsLayer.appendChild(orderListTable);
        }
    }
}
function createParticipantScoresTableRow(table, participantScore) {
    var itemRow = document.createElement('tr');
    var itemParticipanNameCell = document.createElement('td');
    var itemParticipantFinalScoreCell = document.createElement('td');

    itemParticipanNameCell.className = 'resultsCellNested';
    itemParticipanNameCell.align = 'left';
    itemParticipantFinalScoreCell.className = 'resultsCellNested';

    var itemParticipanNameLabel = document.createElement('span');
    setText(itemParticipanNameLabel, participantScore.ParticipantName);
    //Add Span to Cell
    itemParticipanNameCell.appendChild(itemParticipanNameLabel);

    var itemParticipantFinalScoreLabel = document.createElement('span');
    setText(itemParticipantFinalScoreLabel, participantScore.ParticipantFinalScore);
    //Add Span to Cell
    itemParticipantFinalScoreCell.appendChild(itemParticipantFinalScoreLabel);

    //Add Cells to Row
    itemRow.appendChild(itemParticipanNameCell);
    itemRow.appendChild(itemParticipantFinalScoreCell);
    
    //Add Item Row to table or tbody
    if (isIE())
        table.childNodes[0].appendChild(itemRow);
    else
        table.appendChild(itemRow);
}
function pageUnload(sender, e) {
    if ((_sportSelectBox) && (elementHasEvent(_sportSelectBox, 'change')))
        $removeHandler(_sportSelectBox, 'change', onSportsChange);
    if ((_leagueSelectBox) && (elementHasEvent(_leagueSelectBox, 'change')))
        $removeHandler(_leagueSelectBox, 'change', onLeaguesChange);
}

