var initialised = false;
var playerListHeadingCount;
var playerListRowClone;
var playerListRoot;
var teamListHeadingCount;
var teamListRowClone;
var teamListRoot;
var aiSquadFormation_l;
var aiCategoryRows_l = [];
var selectedSquad = [];
var playerType = "Player";
var oRegForm = document.forms["reg"];
var captains = [];
var selectedxi = [];
var currentCategoryName = "";
var padRows = true;
var defaultStartLetter = "1";
var defaultEndLetter = "z";

function init() {

/*  playerListHeadingCount = document.getElementById('playerlisttable').getElementsByTagName('tr').length - 1;
  playerListRowClone = document.getElementById('playerlisttable').getElementsByTagName('tr')[playerListHeadingCount].cloneNode(true);
  playerListRoot = document.getElementById('playerlisttable').getElementsByTagName('tr')[playerListHeadingCount].parentNode;*/
  teamListHeadingCount = document.getElementById('teamListTable').getElementsByTagName('tr').length - 1;
  teamListRowClone = document.getElementById('teamListTable').getElementsByTagName('tr')[teamListHeadingCount].cloneNode(true);
  teamListRoot = document.getElementById('teamListTable').getElementsByTagName('tr')[teamListHeadingCount].parentNode;
  initialised = true;
}

var starttime = new Date().getTime();
function populatePlayerList(categoryName, startLetter, endLetter) {
        
  var catIndex = getMatchingIndex(axCatNames_l, categoryName);
  starttime = new Date().getTime();
  
  if (typeof startLetter == "undefined") {
  
    if (typeof startLetters != "undefined") {
              
      startLetter = startLetters[catIndex];
    } else {

      startLetter = defaultStartLetter;
    }
  }  

  if (typeof endLetter == "undefined") {
            
    if (typeof endLetters != "undefined") {
                
      endLetter = endLetters[catIndex];
    } else {

      endLetter = defaultEndLetter;
    }
  }

  if (!initialised) {init();}
         
  var categoryKey = categoryName + startLetter + endLetter;
  /*
        
  if (currentCategoryName != categoryKey) {
  
    var count = 0;
    var tab = document.getElementById('playerlisttable');
    deleteRows(tab, playerListHeadingCount);
    var categoryId = aiCatIDs_l[catIndex];
                          
    var a = new Date().getTime() - starttime;
    for (var i=0; i<aiPlayerIDs_l.length; i++) {

      if (aiPlayerCats_l[i] == categoryId) {

        var playerName = axPlayerNames_l[i].toLowerCase();
        var firstLetter = playerName.charAt(0);
        if (firstLetter &&
            firstLetter >= startLetter &&
            firstLetter <= endLetter) {

          var playerRow = playerListRowClone.cloneNode(true);
          buildPlayerRow(playerRow, 
                         aiPlayerIDs_l[i],
                         axPlayerNames_l[i], 
                         axSideNames_l[getMatchingIndex(aiSideIDs_l, aiPlayerSides_l[i])], 
                         aiPlayerValues_l[i], 
                         aiPlayerScores_l[i], 
                         axCatNames_l[getMatchingIndex(aiCatIDs_l, aiPlayerCats_l[i])],
                         getInfo1(i),
                         "playerList");
          playerListRoot.appendChild(playerRow); //appends the clone
          count ++;
        }
      }
    }   
    
    var b = new Date().getTime() - starttime;

    if (padRows) {

      // starts new tfci section added by steve
      if (count < 15) {

        var numRows = 15 - count;
        for (var i=0; i<numRows; i++) {

          var playerRow = playerListRowClone.cloneNode(true);
          buildPlayerRow(playerRow, 
                         "",
                         "", 
                         "", 
                         "", 
                         "", 
                         "",
                         "",
                         "playerList");
          playerListRoot.appendChild(playerRow); //appends the clone

        }
      }
    }     
       
    // Move to top of scroll bar
    var scrollToTop = document.getElementById("playerlisttablecontainer");
    if (scrollToTop) {

      scrollToTop.scrollTop = 0;
    }
    
    var scrollToTop = document.getElementById("playerlisttablecontainer-tfc");
    if (scrollToTop) {

      scrollToTop.scrollTop = 0;
    }
    
    var scrollToTop = document.getElementById("innerTableContainer");
    if (scrollToTop) {

      scrollToTop.scrollTop = 0;
    }
    
    if (typeof selectteamstabs=="function") {
                        
    
      var c = new Date().getTime() - starttime;
      selectteamstabs(categoryName.toLowerCase(), startLetter, endLetter);
    
      var d = new Date().getTime() - starttime;
    }
  } */ 
  // alert (a + "," + b + "," + c + "," + d);  
  currentCategoryName = categoryKey; 
     
  return false;
}

function resetPlayers() {

  selectedSquad = [];
  populateTeamList(aiSquadFormation_l);
  updateBudget();
}

function addTeam() {


  var playerids = "";
  
  for (var i=0; i<selectedSquad.length; i++) {

    playerids += selectedSquad[i] + ":";
  }
  oRegForm.elements["playerids"].value = playerids;

  return validateForm();
}

function confirmTransfers() {

  var playerids = "";
  for (var i=0; i<selectedSquad.length; i++) {

    playerids += selectedSquad[i] + ":";
  }
  oRegForm.elements["playerids"].value = playerids;
  
  if (false == validateForm()) {
    
    return false;
  } else {     

    // Give every transfer submission a unique id to prevent back button issues
    var uuid = (oRegForm.elements["entryId"].value + "" + new Date().getTime()).substring(4);
    setHiddenField(oRegForm, "uuid", uuid);
        
    if (countCaptainChanges() == 0 && countTransfers() == 0) {
    
      return confirm(translate2("CONFIRM_NO_TRANSFERS", countTransfers(), activationDate));
    } else if (countTransfers() == 0) {
    
      return confirm(translate2("CONFIRM_CAPTAIN_CHANGES", countCaptainChanges(), activationDate));
    }  else if (countCaptainChanges() == 0) {
    
      return confirm(translate2("CONFIRM_TRANSFERS", countTransfers(), activationDate));
    } else {
    
      return confirm(translate3("CONFIRM_TRANSFER_CAPTAIN_CHANGES", countTransfers(), countCaptainChanges(), activationDate));
    }    
  }
}

function updateBudget() {


  var budget = dispMoney;
  for (var i=0; i<selectedSquad.length; i++) {

    var playerIndex = getMatchingIndex(aiPlayerIDs_l, selectedSquad[i]);
    budget -= aiPlayerValues_l[playerIndex];
  }
  budget = roundNumber(budget);
  oRegForm.elements["money"].value = budgetPrefix + budget + budgetSuffix;

  if (budget >= 0) {
    oRegForm.elements["money"].style.backgroundColor = 'transparent';
  } else {
    oRegForm.elements["money"].style.backgroundColor = '#FF0007';
  }


  return budget;
}

function getCell(row, tdId) {
  
  var cells = row.getElementsByTagName('td');
  for (var j=0; j<cells.length; j++) {
    
    if(cells[j].id == tdId) {
      
      return cells[j].id;
    }
  }
  
  return null;
}

Array.prototype.remove=function(s){
  for(i=0;i<this .length;i++){
    if(s==this[i]) this.splice(i, 1);
  }
}  

Array.prototype.clone = function () {

  var a = new Array(); 
  for (var property in this) 
  {
    a[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property]
  } return a
}

function repopulate() {

  for (var i=0; i<aiPostPlayers_l.length; i++) {

    selectPlayer(aiPostPlayers_l[i]);
  }
}

function getInfo1(playerIndex) {
 
  if (typeof axInfo1s_l != "undefined" ) {
  
    return axInfo1s_l[playerIndex];
  } 
  
  return "";
}

function selectPlayer(playerId) {

  var playerIndex = getMatchingIndex(aiPlayerIDs_l, playerId);
  var categoryId = aiPlayerCats_l[playerIndex];
  var sideId = aiPlayerSides_l[playerIndex];
  var playerName = axPlayerNames_l[playerIndex];  
  var categoryName = axCatNames_l[getMatchingIndex(aiCatIDs_l, categoryId)];
  var sideName = axSideNames_l[getMatchingIndex(aiSideIDs_l, sideId)];
  var categoryStartRow = aiCategoryRows_l[getMatchingIndex(aiCatIDs_l, categoryId)];
  var categoryEndRow = aiCategoryRows_l[getMatchingIndex(aiCatIDs_l, categoryId) + 1];
  var tab = document.getElementById('teamListTable');
  var originalTeam = aiSelectedTeams_l[0];
  var rows = tab.getElementsByTagName('tr');
  var inserted = false;
  var error = false;

  if (getRemainingTransfers() <= 0 &&
      getMatchingIndex(originalTeam, playerId) < 0) {

    error =  translate("NO_MORE_TRANSFERS");
  } 
    
  for (var i=categoryStartRow+1; i<rows.length && i<categoryEndRow && !inserted && !error; i++) {

    if (rows[i].id == playerId) {

      error = "You have already selected " + playerName;  
    } 
  }
    
  if (!error) {
  
    for (var i=categoryStartRow+1; i<rows.length && i<categoryEndRow && !inserted; i++) {

      if (rows[i].id == 0 && rows[i].id != playerId) {

        var row = teamListRowClone.cloneNode(true);
        row.id = playerId;
        row.getElementsByTagName('td')[0].innerHTML = "-";
        teamListRoot.insertBefore(row, rows[i]);
        tab.deleteRow(i+1);         
        selectedSquad.push(playerId);  
        updateBudget();
        buildPlayerRow(row, 
                       playerId,
                       playerName, 
                       sideName, 
                       aiPlayerValues_l[playerIndex], 
                       aiPlayerScores_l[playerIndex], 
                       categoryName,
                       getInfo1(playerIndex),
                       "teamList");

        inserted = true;
      }  
    }
  }
  
  if (!inserted && !error) {

    error = "You do not have space for another " + categoryName;
  }

  if (error) {

    alert(error);
  }
  
  getRemainingTransfers();
  getRemainingCaptainChanges();
  return false;
}

function countTransfers() {

  // If this is a transfer form then calculate transfers remaining
  var transferCount = 0;
  var originalTeam = aiSelectedTeams_l[0];
  for (var i=0; i<selectedSquad.length; i++) {

    if (selectedSquad[i] != 0 &&
        getMatchingIndex(originalTeam, selectedSquad[i]) < 0) {

      transferCount++;
    }
  }
  
  return transferCount;
}

function getRemainingTransfers() {

    
  // If this is a transfer form then calculate transfers remaining
  var remainingTransfers = 999;
  if (eval(document.reg["remainingTransfers"])) {

    var originalTeam = aiSelectedTeams_l[0];
    remainingTransfers = aiSelectedRemainingTransfers_l[0];
    for (var i=0; i<selectedSquad.length; i++) {

      if (selectedSquad[i] != 0 &&
          getMatchingIndex(originalTeam, selectedSquad[i]) < 0) {

        remainingTransfers--;
      }
    }
    
    document.reg["remainingTransfers"].value = remainingTransfers;
  }  
  
  return remainingTransfers;
}

function getSelectedCheckboxes(checkboxes) {

  var selectedValues = new Array(); 
  
  if (null != checkboxes) {
  
    if (null != checkboxes.length) {
    
      for (var i=0; i<checkboxes.length; i++) {

        if (checkboxes[i].checked) {

          selectedValues.push(checkboxes[i].value);
        }
      }
    } else if (checkboxes.checked) {
    
      selectedValues.push(checkboxes.value);
    }
  }
  
  return selectedValues;
}

function getSelectedCaptains() {
  
  return getSelectedCheckboxes(oRegForm.elements["captains"]);
}

function getSelectedXi() {
  
  return getSelectedCheckboxes(oRegForm.elements["xi"]);
}

function isPlayerSelected(checkboxes, playerId) {

  if (checkboxes != null) {
  
    for (var i=0; i<checkboxes.length; i++) {

      if (checkboxes[i].checked &&
          checkboxes[i].value == playerId) {
          
        return true;
      }
    }  
  }
  
  return false;
}

function getRemainingCaptainChanges() {
  
  var remainingCaptainChanges = aiSelectedRemainingCaptainChanges_l[0] - countCaptainChanges();
  if (eval(document.reg["captainChangesRemaining"])) {
  
    document.reg["captainChangesRemaining"].value = remainingCaptainChanges;
  }
  
  return remainingCaptainChanges;
}

function countCaptainChanges() {

  var originalTeam = aiSelectedTeams_l[0];
  var originalCaptains = aiSelectedCaptains_l[0];
  var selectedCaptains = getSelectedCaptains();
  var captainChanges = 0;
  
  if (null != originalCaptains) {
  
    for (var i=0; i<originalCaptains.length; i++) {

      if (originalCaptains[i] != 0 &&
          getMatchingIndex(selectedSquad, originalCaptains[i]) >= 0 &&
          getMatchingIndex(selectedCaptains, originalCaptains[i] )< 0) {

        captainChanges++; 
      }
    }
  }
  
  return captainChanges;
}

function editTeam(iTeamIndex)
{

  if (iTeamIndex <= aiSelectedTeams_l.length) {

    copyTeam(iTeamIndex);

    // Set the player name and index 
    oRegForm.elements["teamName"].value = aiSelectedTeamNames_l[iTeamIndex - 1];
    if (eval(document.reg["addTeam"])) {oRegForm.elements["addTeam"].value = "Update Team";}
    if(eval(document.getElementById("addTeamImageButton"))) {document.getElementById("addTeamImageButton").src=updateImage;}
    oRegForm.elements["editTeamIndex"].value = iTeamIndex - 1;
  }
}  

function copyTeam(iTeamIndex)
{

  if (iTeamIndex <= aiSelectedTeams_l.length) {

    // display the selected team
    resetPlayers();
    if (eval(document.reg["smsAlerts"])) {select("reg", "smsAlerts", aiSelectedSmsAlerts_l[iTeamIndex - 1]);}
    if (eval(document.reg["unlimitedTransfers"])) {select("reg", "unlimitedTransfers", aiSelectedUnlimitedTransfers_l[iTeamIndex - 1]);}
    captains = aiSelectedCaptains_l[iTeamIndex - 1];

    // Add each of the selected players into the selected squad
    selectedSquad = [];
    aiSquadFormation_l = [];
    var playerList = aiSelectedTeams_l[iTeamIndex - 1].slice(0);
    for (var i=0; i<playerList.length; i++)
    {
      var playerId = playerList[i];    
      var playerIndex = getMatchingIndex(aiPlayerIDs_l, playerId);
      var categoryId = aiPlayerCats_l[playerIndex];
      var categoryIndex = getMatchingIndex(aiCatIDs_l, categoryId);
      if (aiSquadFormation_l[categoryIndex] == null) {

        aiSquadFormation_l[categoryIndex] = 0;
      }
      aiSquadFormation_l[categoryIndex]++;
      selectedSquad.push(playerList[i]);  
    }    

    if (eval(document.reg["addTeam"])) {oRegForm.elements["addTeam"].value = "Add Team";}  
    if(eval(document.getElementById("addTeamImageButton"))) {document.getElementById("addTeamImageButton").src=addImage;}

    oRegForm.elements["editTeamIndex"].value = -1;  

    populateTeamList(aiSquadFormation_l);
      
    if (null != oRegForm.elements["captains"]) {
    
      for (var i=0; i<oRegForm.elements["captains"].length; i++) {

        oRegForm.elements["captains"][i].checked = (getMatchingIndex(aiSelectedCaptains_l[iTeamIndex - 1], oRegForm.elements["captains"][i].value) >= 0);
      }
      getRemainingCaptainChanges();
    }
      
    if (null != oRegForm.elements["xi"]) {
    
      for (var i=0; i<oRegForm.elements["xi"].length; i++) {

        var playerId = oRegForm.elements["xi"][i].value;
        selectXi(playerId, getMatchingIndex(aiSelectedXi_l[iTeamIndex - 1], playerId) >= 0);
      }
    }
  }
} 

function selectXi(playerId, checked) {
      
  // If we've exceeded the maximum xi in this category then unselect another one
  var categoryId = aiPlayerCats_l[getMatchingIndex(aiPlayerIDs_l, playerId)];
  var categoryIndex = getMatchingIndex(aiCatIDs_l, categoryId);
  var deselect = getXiCategoryCount(categoryId) - aiCatMaxTeam_l[categoryIndex];
  var xiCheckboxes = oRegForm.elements["xi"];    
  if (null != xiCheckboxes) {

    for (var i=0; i<xiCheckboxes.length; i++) {

      if (xiCheckboxes[i].value == playerId) {
      
        xiCheckboxes[i].checked = checked;
      } else if (checked && xiCheckboxes[i].checked) {

        var thisCategoryId = aiPlayerCats_l[getMatchingIndex(aiPlayerIDs_l, xiCheckboxes[i].value)];
        if (thisCategoryId == categoryId) {

          if (deselect > 0) {

            selectXi(xiCheckboxes[i].value, false);
            deselect--;
          }
        }
      }
    }
  }
  
  
  // Disable any captain checkboxes where the player isn't in the xi  
  var captainCheckboxes = oRegForm.elements["captains"];
  if (null != captainCheckboxes) {

    for (var i=0; i<captainCheckboxes.length; i++) {

      if (captainCheckboxes[i].value == playerId) {

        captainCheckboxes[i].checked=captainCheckboxes[i].checked && checked;
        captainCheckboxes[i].disabled=!checked;
      }
    }

    captains = getSelectedCaptains();
    getRemainingCaptainChanges();
  }
    
  selectedxi = getSelectedXi();  
}

function selectCaptain(playerId, checked) {

  if (checked) {
  
    // Unselect any other players in this category
    var categoryId = aiPlayerCats_l[getMatchingIndex(aiPlayerIDs_l, playerId)];
    var captainCheckboxes = oRegForm.elements["captains"];    
    if (null != oRegForm.elements["captains"]) {
    
      for (var i=0; i<captainCheckboxes.length; i++) {
      
        if (captainCheckboxes[i].value != playerId) {
        
          var thisCategoryId = aiPlayerCats_l[getMatchingIndex(aiPlayerIDs_l, captainCheckboxes[i].value)];
          if (thisCategoryId == categoryId) {
            
            captainCheckboxes[i].checked = false;
          }
        }
      }
    }
  } 
    
  captains = getSelectedCaptains();  
  getRemainingCaptainChanges();
}

function selectCaptains() {
  
  var captainCheckboxes = oRegForm.elements["captains"];    
  if (null != oRegForm.elements["captains"]) {

    for (var i=0; i<captainCheckboxes.length; i++) {

      if (getMatchingIndex(captains, captainCheckboxes[i].value) >= 0) {
        
        captainCheckboxes[i].checked = true;
      } else {
      
        captainCheckboxes[i].checked = false;
      }
    }
  }
}

function getCaptainCount() {

  var i = 0;
  captains = getSelectedCaptains();
  for (var j=0; j<captains.length; j++) {

    if (captains[j] != 0) {

      i++;
    }
  }

  return i;
}

function getCaptainCategoryCount(catId) {

  // Find how many captains have been selected in this category
  var categoryCaptainCount = 0;
  captains = getSelectedCaptains();
  for (var j=0; j<captains.length; j++) {

    var playerId = captains[j];
    var playerIndex = getMatchingIndex(aiPlayerIDs_l, playerId);
    var playerCategoryId = aiPlayerCats_l[playerIndex];
    if (playerCategoryId == catId) {

      categoryCaptainCount++;
    }
  }
  
  return categoryCaptainCount;
}

function getXiCategoryCount(catId) {

  // Find how many captains have been selected in this category
  var categoryXiCount = 0;
  selectedXi = getSelectedXi();
  for (var j=0; j<selectedXi.length; j++) {

    var playerId = selectedXi[j];
    var playerIndex = getMatchingIndex(aiPlayerIDs_l, playerId);
    var playerCategoryId = aiPlayerCats_l[playerIndex];
    if (playerCategoryId == catId) {

      categoryXiCount++;
    }
  }
  
  return categoryXiCount;
}

function validateCategories() {

  // Loop through each category
  for (var i=0; i<aiCatIDs_l.length - 1; i++) {
  
    var catName = axCatNames_l[i];
    var catId = aiCatIDs_l[i];
    var categoryCount = 0;
    var minimum = aiCatMinTeam_l[i];

    for (var j=0; j<selectedSquad.length; j++) {
      
      var playerId = selectedSquad[j];
      var playerIndex = getMatchingIndex(aiPlayerIDs_l, playerId);
      var playerCategoryId = aiPlayerCats_l[playerIndex];

      if (playerCategoryId == catId){
        
        categoryCount++;
      }
    }

    if (categoryCount < minimum) {
      
      var msg = translate1("SELECT_CATEGORY", translate(catName));
      if (msg != "SELECT_CATEGORY" && msg != "") {
        
        alert(msg);
        return false;
      } 
    }
  }
  
  return true;
}

function validateCaptainCategories() {

  // Loop through each category
  for (var i=0; i<aiCatIDs_l.length; i++) {
  
    var catName = axCatNames_l[i];
    var catId = aiCatIDs_l[i];
    var minimumCaptains = aiCatCaptainMin_l[i];
    
    if (minimumCaptains <= captainCount &&
        minimumCaptains > 0) {
    
      // Find how many captains have been selected in this category
      var categoryCaptainCount = getCaptainCategoryCount(catId);      
      if (categoryCaptainCount < minimumCaptains) {
        
        if (minimumCaptains == 1) {
        
          alert("Please select a " + catName + " captain");
        } else {
        
                
          alert("Please select " + minimumCaptains + " " + catName + " captains");
        }
        return false;
      }
    }
  }
  
  return true;
}

function validateXi() {

  var xiCheckboxes = oRegForm.elements["xi"];    
  if (null != xiCheckboxes) {

    for (var i=0; i<aiCatIDs_l.length; i++) {

      var categoryIndex = getMatchingIndex(aiCatIDs_l, aiCatIDs_l[i]);
      var categoryName = axCatNames_l[categoryIndex];
      if (getXiCategoryCount(aiCatIDs_l[i]) < aiCatMinTeam_l[categoryIndex] ||
          getXiCategoryCount(aiCatIDs_l[i]) > aiCatMaxTeam_l[categoryIndex]) {

        alert("Please Select " + aiCatMinTeam_l[categoryIndex] + " " + categoryName + "s");
        return false;
      }
    }
  }
  
  return true;
}

function countPlayersInSide(sideId) {

  // Count players in this side
  var count=0;
  for (var j=0; j<selectedSquad.length; j++) {

    if (aiPlayerSides_l[getMatchingIndex(aiPlayerIDs_l, selectedSquad[j])] == sideId) {

      count++;
    }
  }

  return count;
}

function validateSides(alertErrors) {

  // Check that enough players have been selected from each side
  for (var i=0; i< aiSideIDs_l.length; i++) {

    var sideId = aiSideIDs_l[i];

    if (sideId != 0) {

      var sideName = axSideNames_l[i];

      var count = countPlayersInSide(sideId);
      if (count > maximumPlayersPerSide) {

        if (alertErrors) {

          alert(translate1("TOO_MANY_SIDE", sideName));
        }
        return false;
      }

      if (count < minimumPlayersPerSide) {

        if (alertErrors) {

          alert(translate1("Your team selection is invalid - when selecting your Trainers and Jockeys, please select one from each of Pool A, Pool B, Pool C and Pool D", sideName));
        }
        return false;
      }
    }
  }
  
  return true;
}

function countSelectedPlayers() {
  
  var count=0;
  
  for (var i=0; i<selectedSquad.length; i++) {
    
    if (selectedSquad[i] != 0) {
      
      count++;
    }
  }
  
  return count;
}

function validateForm() {

  captains = getSelectedCaptains();
  // Check the correct number of players has been selected
  if (countSelectedPlayers() < iMaxPlayers) {

    if (validateCategories()) {

      alert (translate("SELECT_ALL_PLAYERS"));
    }
    return false;
  } else if (captainCount != getCaptainCount() ) {

    if (captainCount == 1) {
    
      alert (translate("SELECT_A_CAPTAIN"));
    } else {
            
      alert (translate1("SELECT_CAPTAINS", captainCount));
    }
    return false;
  } else if (!validateCaptainCategories()) {

    return false;
  } else if (!validateXi()) {

    return false;
  } else if (!validateSides(true)) {

    return false;
  } else if (eval(document.reg["teamName"]) && oRegForm.elements["teamName"].value == "") {

    alert (translate("SPECIFY_TEAM_NAME"));
    return false;
  } else if (eval(document.reg["smsAlerts"]) && oRegForm.elements["smsAlerts"].value == "") {

    alert (translate("SPECIFY_SMS_ALERTS"));
    return false;
  } else if (updateBudget() < 0) {

    alert ("You have gone over budget");
    return false;
  } else if (getRemainingCaptainChanges() < 0) {

    alert ("You do not have any captain changes left.");
    return false;
  }

  return true;
}

function randomTeam() {

  var tries = 0;
  do {

    selectedSquad = [];
    captains = [];
    var budget = dispMoney; 

    for (var i=0; i<aiSquadFormation_l.length; i++) {

      for (var j=0; j<aiSquadFormation_l[i]; j++) {

        var categoryId = aiCatIDs_l[i];
        var playerId = 0;

        while (playerId == 0) {

          var randomIndex = Math.floor((aiPlayerIDs_l.length) * Math.random());
          var randomPlayerId = aiPlayerIDs_l[randomIndex];
          var randomCategoryId = aiPlayerCats_l[randomIndex];
          var randomSideId = aiPlayerSides_l[randomIndex];
            
          if (randomCategoryId == categoryId &&
              getMatchingIndex(selectedSquad, randomPlayerId) < 0) {
          
            var playersInSide = countPlayersInSide(randomSideId);

            if (playersInSide < maximumPlayersPerSide) {

              playerId = randomPlayerId;
              budget -= aiPlayerValues_l[randomIndex];
            }
          }
        }

        selectedSquad.push(playerId); 
      }
    }
    
    tries++;

  } while (budget < 0 || !validateSides(false));

  populateTeamList(aiSquadFormation_l);
}


