﻿// JScript File

var FCActiveBox = '';
var TeamBudget = 0;
var FCControlList = '';
var FCSortColumn = 'Cost';
var FCSortDirection = 1;
var FCPageSize = 20;
var FCPageNumber = 1;
var FCControlList = new Array();
var FantasyTeamID = -1;
var RemainingTransfers = -1;
var UseCaptains = true;
var MaximumCaptainValue = -1;
function ActionItem(ic, alt, hrf)
{
    this.Icon = ic;
    this.Alt = alt;
    this.Href = hrf;
}
    function FCBasketItem(i,n,s,p)
    {
        this.ID = i;
        this.Name = n;
        this.Season = s;
        this.Price = p;
    }
    var BIs = new Array();
    
var FCSortColumns = ['Surname', 'FirstName', 'CategoryName', 'TeamName', 'Cost'];
var FCActionsList = [new ActionItem('Content/selectPlayerBtn.png', 'Select Player', 'javascript:FCSelectPlayer(GETFIELD[SeasonPlayerID],GETFIELD[PlayerCategoryID],GETFIELD[Cost],GETFIELD[TeamID])')];    
function FCGetPlayers()
{
    sndReq('/XML/Cricket/GetSeasonPlayersFC.aspx' +
        '?SeasonID=' + SeasonID +
        '&PlayerCategoryID=' + PlayerCategoryID +
        '&SortColumn=' + FCSortColumn +
        '&SortDirection=' + FCSortDirection +
        '&PageSize=' + FCPageSize + 
        '&PageNumber=' + FCPageNumber, 'getplayers');
    SetTableLoading('tblResults',6);
}

function LoadFCPlayers(doc)
{
    var tbl = document.getElementById('tblResults');

    while (tbl.rows.length > 1)
        tbl.deleteRow(tbl.rows.length-1);
        
    var x = GetXMLObject(doc).childNodes[0];
    
    var StartRecord = x.getAttribute("StartRecord");
    var EndRecord = x.getAttribute("EndRecord");
    var PageNumber = x.getAttribute("PageNumber");
    var PageSize = x.getAttribute("PageSize");
    var TotalRecords = x.getAttribute("TotalRecords");
    var TotalPages = x.getAttribute("TotalPages");
    var StartRecord = x.getAttribute("StartRecord");
    var EndRecord = x.getAttribute("EndRecord");
    
    FCBuildPaging(TotalPages, TotalRecords, PageSize, PageNumber, StartRecord, EndRecord);
    
    
    var Actions = ''
    var spc  = '&nbsp;&nbsp;'
    for (j=0; j<FCActionsList.length; j++)
    {
        Actions += '<a href="' + FCActionsList[j].Href + '">';
        Actions += '<img src="' + jsImagePath + FCActionsList[j].Icon + '" alt="' + FCActionsList[j].Alt + '" border="0">';
        Actions += '</a>' + spc;
    }   
    if (Actions.substr(Actions.length-spc.length) == spc) Actions = Actions.substr(0, Actions.length-spc.length);
    var stcount = 0;
    for (i=0; i<x.childNodes.length; i++)
    {
        var ItemID = x.childNodes[i].getAttribute("ID");
        if (!FCPlayerIsInTeam(ItemID))
        {
            var rw = tbl.insertRow(tbl.rows.length);
            if (stcount == 0)
            {
                rw.className = 'FCTeamRow';
                stcount = 1;
            }
            else
            {
                rw.className = 'FCTeamRowAlt';
                stcount = 0;
            }
            rw.id = 'rwResult' + ItemID;
            var cl = rw.insertCell(0);
            cl.className = 'FCTeamDataCell';

            var UseActions = doReplace(Actions, '[IDVALUE]', ItemID);
            UseActions = ReplaceTagsWithValues(UseActions, x.childNodes[i]);
            
            cl.innerHTML = UseActions;
            
            for (j=0; j<FCSortColumns.length; j++)
            {   
                cl = rw.insertCell(j+1);
                cl.className = 'FCTeamPlayerDataCell';
                var val = doReplace(x.childNodes[i].getAttribute(FCSortColumns[j]), '#ampis#', '&');
                if (j == FCSortColumns.length-1)
                    val = formatMoney(val.substr(1))
                cl.innerHTML = val
            }
        }
    }
}

function FCBuildPaging(TotalPages, TotalRecords, PageSize, CurrentPage, StartRecord, EndRecord)
{
        //document.getElementById('spnStartRecord').innerHTML = StartRecord;
        //document.getElementById('spnEndRecord').innerHTML = EndRecord;
        
        //document.getElementById('spnTotalRecords').innerHTML = TotalRecords;
            
        //document.getElementById('drpPageSize').value = PageSize;
        
        document.getElementById('spnCurrentPage').innerHTML = CurrentPage;
        document.getElementById('spnCurrentPage1').innerHTML = document.getElementById('spnCurrentPage').innerHTML
        document.getElementById('spnTotalPages').innerHTML = TotalPages;   
        document.getElementById('spnTotalPages1').innerHTML =  document.getElementById('spnTotalPages').innerHTML
        
        var first = document.getElementById('btnPagingFirst')
        var prev = document.getElementById('btnPagingPrevious')
        var next = document.getElementById('btnPagingNext')
        var last = document.getElementById('btnPagingLast')
        
        var first1 = document.getElementById('btnPagingFirst1')
        var prev1 = document.getElementById('btnPagingPrevious1')
        var next1 = document.getElementById('btnPagingNext1')
        var last1 = document.getElementById('btnPagingLast1')
           
        first.src = jsImagePath + 'Content/firstBtn_dis.jpg';
        first.onclick = '';
        first.style.cursor = 'default';
        prev.src = jsImagePath + 'Content/previousBtn_dis.jpg';
        prev.onclick = '';
        prev.style.cursor = 'default';
        next.src = jsImagePath + 'Content/nextBtn_dis.jpg';
        next.onclick = '';
        next.style.cursor = 'default';
        last.src = jsImagePath + 'Content/lastBtn_dis.jpg';
        last.onclick = '';
        last.style.cursor = 'default';
        
        if (CurrentPage != 1)
        {
            first.onclick = function () { FCChangePaging('PageNumber', 1); };
            prev.onclick = function () { FCChangePaging('PageNumber', CurrentPage-1); };
        }
        
        if (CurrentPage != TotalPages)
        {
            last.onclick = function () { FCChangePaging('PageNumber', TotalPages); };
            next.onclick = function () { FCChangePaging('PageNumber', (1*(CurrentPage)+1)); };
        }
        
        if (first.onclick != '') 
        {
            first.src = jsImagePath + 'Content/firstBtn.jpg';
            first.style.cursor = 'pointer';
        }
        
        if (prev.onclick != '') 
        {
            prev.src = jsImagePath + 'Content/previousBtn.jpg';
            prev.style.cursor = 'pointer';
        }
        
        if (next.onclick != '') 
        {
            next.src = jsImagePath + 'Content/nextBtn.jpg';
            next.style.cursor = 'pointer';
        }
        
        if (last.onclick != '') 
        {
            last.src = jsImagePath + 'Content/lastBtn.jpg';
            last.style.cursor = 'pointer';
        }
        
        first1.src = first.src;
        first1.onclick = first.onclick;
        first1.style.cursor = first.style.cursor;
        
        prev1.src = prev.src;
        prev1.onclick = prev.onclick;
        prev1.style.cursor = prev.style.cursor;
        
        next1.src = next.src;
        next1.onclick = next.onclick;
        next1.style.cursor = next.style.cursor;
        
        last1.src = last.src;
        last1.onclick = last.onclick;
        last1.style.cursor = last.style.cursor;
}

function FCPlayerIsInTeam(id)
{
    for (xx in FCControlList)
    {
        if (document.getElementById(FCControlList[xx] + 'hid').value == id)
            return true;
    }
    return false;
}

function FCChangeSort(val)
{
    if (FCSortColumn == val)
        FCSortDirection = - FCSortDirection;
    else
    {
        FCSortColumn = val;
        FCSortDirection = 1;
    }
    FCPageNumber = 1;
    FCSetOrderBy();
    FCGetPlayers();
}

function FCSetOrderBy()
{
    for (i in FCSortColumns)
        document.getElementById('imgsrt' + FCSortColumns[i]).style.display = 'none';
    
    document.getElementById('imgsrt' + FCSortColumn).style.display = 'inline';
    if (FCSortDirection == 1)
        document.getElementById('imgsrt' + FCSortColumn).src = jsImagePath + 'Content/arrow_down.jpg';
    else
        document.getElementById('imgsrt' + FCSortColumn).src = jsImagePath + 'Content/arrow_up.jpg';

}
function FCChangePaging(what, newval)
{
    if (what == 'PageSize')
    {
        FCPageSize = newval;
        FCPageNumber = 1;
    }
    else if (what == 'PageNumber')
    {
        FCPageNumber = newval;
    }
    
    FCGetPlayers();
}

function FCSelected(id)
{
    for (i in FCControlList)
    {
        FCSetNormal(FCControlList[i]);
    }
    FCSetSelected(id);
}

function FCSetNormal(id)
{
    document.getElementById(id).style.backgroundColor = ''
}

function FCSetSelected(id)
{
    FCActiveBox = id;
    document.getElementById(id).style.backgroundColor = '#FFF380'
    var catid = FCGetCategoryFromControlName(id);
    FCCatChanged(catid);
}

function FCGetCategoryFromControlName(id)
{
    var catid = id.substring(9);
    var bits = catid.split('Cnt');
    catid = bits[0];
    return catid;
}

function FCvalidate(src, args)
{
    args.IsValid = true;
    
    var TeamName = document.getElementById(TeamNameTextBox).value;
    var ManagerName = document.getElementById(ManagerNameTextBox).value;
    
    if (TeamName == '')
    {
        if (!CMSDesk)
            alertDHTML('FCTeamEnterTeamName', plh)
        else
            alert('Please enter a team name');
        args.IsValid = false;
        return;
    }
    
    if (ManagerName == '')
    {
        if (!CMSDesk)
            alertDHTML('FCTeamEnterManagerName', plh)
        else
            alert('Please enter a manager name');
        args.IsValid = false;
        return;
    }
    
    var total = getMoneyValue(document.getElementById('spnTeamTotal').innerHTML);

    if (total > (TeamBudget*1))
    {
        if (!CMSDesk)
        {
            var plh = new Array();
            plh[0] = new DHTMLPlaceHolderValue('%%TEAMBUDGET%%', formatMoney(TeamBudget));
            alertDHTMLPlaceHolders('FCTeamExceedsBudget', plh)
        }
        else
            alert('Team exceeds allowed  budget of £' + TeamBudget);
        args.IsValid = false;
        return;
    }
    
    var TeamFilled = true;
    var captainFound = false;
    var CaptainValue = 0;
    for (xx in FCControlList)
    {
        var sp = FCControlList[xx].substring(9).split('Cnt');
        var currentpcid = sp[0];
        var currentcnt = sp[1];
        
        if (UseCaptains)
        {
            if (document.getElementById('chkCaptainPlayer' + currentpcid + 'Cnt' + currentcnt).checked)
            {
                CaptainValue = document.getElementById(FCControlList[xx] + 'cost').innerHTML;
                CaptainValue = getMoneyValue(CaptainValue);
                captainFound = true;
            }
        }
        
        var pid = document.getElementById('txtPlayer' + currentpcid + 'Cnt' + currentcnt).value;
        if ((pid == -1) || (pid == ''))
            TeamFilled = false;
                   
        var TeamID = document.getElementById(FCControlList[xx] + 'TeamID').innerHTML;
        if (TeamID != -1)
            eval('TeamCount' + TeamID + '++');
    }
    
    if (!TeamFilled)
    {
        if (!CMSDesk)
            alertDHTML('FCTeamNotFilled')
        else
            alert('Please ensure all team players have been selected');
        args.IsValid = false;
        return;
    }
    
    if (UseCaptains)
    {
        if (!captainFound)
        {
            if (!CMSDesk)
                alertDHTML('FCSelectCaptain')
            else
                alert('Please select a captain');
            args.IsValid = false;
            return;
        }
        if ((CaptainValue > MaximumCaptainValue) && (MaximumCaptainValue !=-1))
        {
            if (!CMSDesk)
            {
                var plh = new Array();
                plh[0] = new DHTMLPlaceHolderValue('%%MAXCAPTAINVALUE%%', formatMoney(MaximumCaptainValue));
                alertDHTMLPlaceHolders('FCMaxCaptainValue', plh)
            }
            else
                alert('Captain exceeds the maximum allowed value of ' + formatMoney(MaximumCaptainValue));
            args.IsValid = false;
            return;
        }
    }
    for (xx in TeamList)
    {
        var TeamID = TeamList[xx];
        var Limit = TeamRules[xx];
        var Count = eval('TeamCount' + TeamID);
        
        if (((Count*1) > (Limit*1)) && ((Limit*1)>-1))
        {
            if (!CMSDesk)
            {
                var plh = new Array();
                plh[0] = new DHTMLPlaceHolderValue('%%PLAYERLIMIT%%', Limit);
                plh[1] = new DHTMLPlaceHolderValue('%%TEAMNAME%%', TeamName[xx]);
                alertDHTMLPlaceHolders('FCMaxPlayersFromTeam', plh)
            }
            else
                alert('You may only select a maximum of ' + Limit + ' players from ' + TeamName[xx]);
            args.IsValid = false;
            return;
        }
    }
}


//SearchFunction = 'GoSeasonPlayerSearch()';
//SortColumn = 'Cost';
//SortColumns = ['Surname', 'FirstName', 'CategoryName', 'TeamName', 'Cost'];
//FCActionsList = [new ActionItem('edit.gif', 'Select Player', 'javascript:FCSelectPlayer(GETFIELD[SeasonPlayerID],GETFIELD[PlayerCategoryID],GETFIELD[Cost],GETFIELD[TeamID])')];    

function doUndo(txtbox, id, selectedplayercatid, cost, TeamID)
{
    var OldActiveBox = FCActiveBox;
    FCActiveBox = txtbox;
    FCSelectPlayer(id, selectedplayercatid, cost, TeamID);
    FCSelected(OldActiveBox);
}

function FCSelectPlayer(id, selectedplayercatid, cost, TeamID)
{
    var OriginalInThisBox = document.getElementById(FCActiveBox + 'hidOrig').value;
    var CurrentInThisBox = document.getElementById(FCActiveBox + 'hid').value;
       
    var AlreadyTransfered = (OriginalInThisBox != CurrentInThisBox)   
    
    if ((FantasyTeamID ==-1) || (RemainingTransfers > 0) || (RemainingTransfers == -1) || (AlreadyTransfered))
    {
        if (FCActiveBox == '')
        {
            if (!CMSDesk)
                alertDHTML('FCSelectPlayerTarget');
            else
                alert('Please select a location to insert this player');
        }
        else
        {
            var controlcatid = FCGetCategoryFromControlName(FCActiveBox);
            if (controlcatid != selectedplayercatid)
                if (!CMSDesk)
                    alertDHTML('FCWrongTypeOfPlayer');
                else
                    alert('This player cannot be inserted into this location as they are the wrong type');
            else
            {
                if ((FantasyTeamID !=-1) && (RemainingTransfers != -1))
                {
                    if (id == OriginalInThisBox) 
                    {
                        //trying to put the original back in so add 1 to remainingtransfers 
                        RemainingTransfers ++;
                        document.getElementById(FCActiveBox + 'div').style.display = 'none';
                    }
                    else
                    {
                        // subtract 1 from transfers
                        if (!AlreadyTransfered)  RemainingTransfers--;
                        document.getElementById(FCActiveBox + 'div').style.display = 'block';
                    }
                    FCUpdateTransfersMadeText();
                }
                FCAddPlayerToTeam(id, cost, TeamID);
            }
        }
    }
    else
    {
        if (!CMSDesk)
            alertDHTML('FCNoMoreTransfers');
        else
            alert('You may not make any more transfers during this transfer window');
    }
}

function FCUpdateTransfersMadeText()
{
    if (document.getElementById('spnTransferLimit'))
        document.getElementById('spnTransferLimit').innerHTML = RemainingTransfers;
}

function FCAddPlayerToTeam(id, cost, TeamID)
{
    var found = false;
    for (xx in FCControlList)
    {
        if (document.getElementById(FCControlList[xx] + 'hid').value == id)
        {
            found = true;
            break;
        }
    }
    
    if (!found)
    {
        var nme = '';
        if (document.getElementById('rwResult' + id))
            nme = document.getElementById('rwResult' + id).cells[1].innerHTML + ', ' + document.getElementById('rwResult' + id).cells[2].innerHTML;
        else
            nme = document.getElementById(FCActiveBox + 'hidOrigName').value;    
        document.getElementById(FCActiveBox).value = nme;
        document.getElementById(FCActiveBox + 'hid').value = id;
        document.getElementById(FCActiveBox + 'cost').innerHTML = formatMoney(cost.substr(1));
        document.getElementById(FCActiveBox + 'TeamID').innerHTML = TeamID;
        FCCalculateTeamTotal();
        var i = 0;
        var roundonce = false
        
        while (FCControlList[i] != FCActiveBox)
        {
            i++;
            if (i>=FCControlList.length) 
            {
                if (roundonce) break;
                i = 0;
                roundonce = true;
            }
        }
        if (roundonce)
            i = 0;
        else
        {
            i++;
            if (i>=FCControlList.length) i = 0;
        }
        FCSelected(FCControlList[i]);
    }
    else
    {
        if (!CMSDesk)
            alertDHTML('FCPlayerAlreadySelected');
        else
            alert('This player is already selected');
    }
}

function FCCalculateTeamTotal()
{
    var cost = 0;
    for (xx in FCControlList)
    {
        var txt = document.getElementById(FCControlList[xx] + 'cost').innerHTML;
        if (txt != '')
        {                    
            cost += getMoneyValue(txt);
        }
    }
    var tot = formatMoney(cost);
    if (cost > TeamBudget)
        document.getElementById('spnTeamTotal').style.color='Red';
    else
        document.getElementById('spnTeamTotal').style.color='';
    
    document.getElementById('spnTeamTotal').innerHTML = tot;
}

function FCEditTeam(sid, id)
{                
    document.location = 'frameset.aspx?SeasonID=' + sid + '&FantasyTeamID=' + id;
}

function FCCatChanged(catid)
{
    document.getElementById('drpCat').value = catid;
    PlayerCategoryID = catid;
    FCPageNumber = 1;
    FCGetPlayers();
}

function FCSelectCaptain(pcid, cnt)
{
    for (xx in FCControlList)
    {
        if (FCControlList[xx] == 'txtPlayer' + pcid + 'Cnt' + cnt)
        {
            //Selected Text Box
        }
        else
        {
            var sp = FCControlList[xx].substring(9).split('Cnt');
            var currentpcid = sp[0];
            var currentcnt = sp[1];
            document.getElementById('chkCaptainPlayer' + currentpcid + 'Cnt' + currentcnt).checked = false;
        }
    }
}

function ReplaceTagsWithValues(txt, node)
{
    var ret = '';
    var xx = 0;
    var TagOpen = false;
    var TagName = '';
    while (xx < txt.length)
    {
        if (txt.substring(xx, xx+9) == 'GETFIELD[')
        {
            TagOpen = true;
            xx += 9;
        } 
        else 
        {
            if (TagOpen)
            {
                if (txt.substring(xx, xx+1) == ']')
                {
                    TagOpen = false;
                    ret += '\'' + node.getAttribute(TagName) + '\'';
                    TagName = '';
                }
                else
                    TagName += txt.substring(xx,xx+1);
            }
            else
                ret += txt.substring(xx,xx+1);
                
            xx++;
        }
    }
    return ret;
}
