/**
 * @fileoverview update.js
 * 
 * Repository for JavaScript functions used by the screen update.php.
 * 
 * @author Chris 'Chopper' Vincent (24 June 2008)
 */

/******** Validation / Utility Functions *******************************/

/**
 * Function enables or disables the dropdown select list for a new player
 * based upon whether the checkbox is checked or not.
 * 
 * @param [Object] checkboxObject The checkbox object
 * @param [String] fieldId The id of the dropdown select list
 */
function enableNewPlayer(checkboxObject, fieldId)
{
	// Disable the new player select list if the checkbox is not checked 
	var fieldDisabled = ( checkboxObject.checked == true ) ? false : true;
	document.getElementById(fieldId).disabled = fieldDisabled;
	
	if ( fieldDisabled )
	{
		// If disabled, reset the value to blank
		document.getElementById(fieldId).value = -1;
	}
}

/**
 * Function hides all the teams apart from the one specified on footy/update.php
 * 
 * @param string showTeam The identifier of the team specified
 */
function hideTeams(showTeam)
{
    var oldTeamId = "team" + document.getElementById("selectedTeam").value;
    var newTeamId = "team" + showTeam;

    showDiv(newTeamId);
    hideDiv(oldTeamId);
    document.getElementById("selectedTeam").value = showTeam;

    var numChanges = document.getElementById("changes" + showTeam).value;
    if (numChanges > 0) 
    {
        showDiv("submitButton");
    } 
    else 
    {
        hideDiv("submitButton");
    }
}

/**
 * Function validating changes made to teams
 * 
 * @param object form The form object to be validated
 * @return boolean True if the form is valid else false
 */
function validateUpdatePoints(form)
{
    var blnOK = true;
    var teamId = form.selectedTeam.value;
    var numChanges = form["changes"+teamId].value;
    var oldTeamArr = new Array(form["oldgk_"+teamId].value,form["olddf1_"+teamId].value,form["olddf2_"+teamId].value,form["olddf3_"+teamId].value,form["olddf4_"+teamId].value,form["oldmd1_"+teamId].value,form["oldmd2_"+teamId].value,form["oldmd3_"+teamId].value,form["oldmd4_"+teamId].value,form["oldst1_"+teamId].value,form["oldst2_"+teamId].value);
    var newTeamArr = new Array(form["newgk_"+teamId].value,form["newdf1_"+teamId].value,form["newdf2_"+teamId].value,form["newdf3_"+teamId].value,form["newdf4_"+teamId].value,form["newmd1_"+teamId].value,form["newmd2_"+teamId].value,form["newmd3_"+teamId].value,form["newmd4_"+teamId].value,form["newst1_"+teamId].value,form["newst2_"+teamId].value);
    var changeArray = form[teamId+"chk[]"];
    var countChanges = 0;
    
    for ( var i=0, l=changeArray.length; i<l; i++ ) 
    {
        if ( changeArray[i].checked ) 
        {
            countChanges++;
        }
    }

    if ( blnOK && numChanges == 0 ) 
    {
        alert("You have no changes left to make");
        blnOK = false;
    }
    if ( blnOK && countChanges == 0 ) 
    {
        alert("You have not selected any players to change");
        blnOK = false;
    }
    if ( blnOK && countChanges > numChanges ) 
    {
        alert("You have selected too many players to change.  Please select a maximum of " + numChanges);
        blnOK = false;
    }
    if ( blnOK ) 
    {
        for ( var i=0, l=newTeamArr.length; i<l; i++ ) 
        {
            if ( changeArray[i].checked && newTeamArr[i] == '-1' ) 
            {
                alert("You have checked a player for change, but have not selected a new player.");
                blnOK = false;
                break;
            }
        }
    }
    if ( blnOK )
    {
        for ( var i=0, l=newTeamArr.length; i<l; i++ ) 
        {
            if ( changeArray[i].checked && newTeamArr[i] == oldTeamArr[i] ) 
            {
                alert("You have checked a player for change, but have selected the same player to change to.");
                blnOK = false;
                break;
            }
        }
    }
    if ( blnOK ) 
    {
        for ( var i=0, nl=newTeamArr.length; i<nl; i++ ) 
        {
            for ( var j=0, ol=oldTeamArr.length; j<ol; j++ ) 
            {
                if ( changeArray[i].checked && i != j && newTeamArr[i] == oldTeamArr[j] ) 
                {
                    alert("You have checked a player for change, but the new player selected is already in the team.");
                    blnOK = false;
                    break;
                }
            }
        }
    }
    return blnOK;
}