//**************************************************************************************
//
// Champ Analysis / Champ Calc
//
// Copyright Tony Barson 2004 - 2007
//
// PLEASE do not use or alter this code without the permission of the author. 
// 
// The system can be purchased or optimised for any client. Please contact the author
// for further details.
//
// E-Mail : Tony_Barson@yahoo.co.uk
//
// 17/01/07 - Version 2.3
//**************************************************************************************
function Simulate(){

var bNoRoundsLeft;

bNoRoundsLeft = false;

if(nCurrent_Round + 1 > nRounds){
   bNoRoundsLeft = true;
}

if(bNoRoundsLeft){
   alert("Cannot Simulate as no rounds left in Championship");
   return;
}

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

nSimulated_Round = nCurrent_Round + 1;

Build_Selected_List(nSimulated_Round);

if(sHTML2 == ""){
   sHTML2 = "<OPTION>No Selections";
}

Build_Screen();

}

//********************************************************************************************c

function Build_Screen(){

var n;
var m;

sHTML = "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>Results Simulation</TD></TR>";
sHTML += "</TABLE><BR>";


sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=200>";
sHTML += "<TR><TD ALIGN=CENTER><A HREF='" + sInstructionsLinkPrefix + "#ResultsSimulation' TARGET='_blank'><img src='../images/information.png'></A></TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=800>";
sHTML += "<TR>";

//**************************************************************
sHTML += "<TD ALIGN=LEFT>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD BGCOLOR='#A8D3FF' ALIGN=CENTER>Select Round</TD></TR>";
sHTML += "<TR><TD class='HeadBox2'><SELECT NAME='ListRounds'>";

for (n = nCurrent_Round + 1;n <= nRounds;n++) {
    if(n == nSimulated_Round){
       sHTML += "<OPTION SELECTED>Round " + n;
    }else{
       sHTML += "<OPTION>Round " + n;
    }
}

sHTML += "<SELECT>";
sHTML += "<INPUT TYPE='button' onclick='ListRounds_Click()' value='Select'>";
sHTML += "</SELECT>";

sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
//**************************************************************

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Select Driver</TD></TR>";

sHTML += "<TR><TD><SELECT NAME='ListDrivers'>";

 for (n = 1;n <= nDriver_Records;n++) {
     sHTML += "<OPTION>" + asDriver[n];
 }

sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
//**************************************************************

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Select Points</TD></TR>";

sHTML += "<TR><TD><SELECT NAME='ListPointsTable'>";

nAnchor = 0;

if(sChamp_Type.substring(0,6) == "SPRINT"){
   for (m = 1;m <= 3;m++) {
       for (n = 1;n <= sPoints_Array.length-1;n++) {
           if(m == 1){ 
              nAnchor = 100;
           }

           if(m == 2){ 
              nAnchor = 70;
           }

           if(m == 3){
              nAnchor = 40;
           }

           if(m == 2 || m == 3){
              if(n > 4){
                 sHTML += "<OPTION>" + (nAnchor + Number(sPoints_Array[n].substring(0,3)));
              }
           }else{
              sHTML += "<OPTION>" + (nAnchor + Number(sPoints_Array[n].substring(0,3)));
           }
       }
   }
   for (n = 39; n >= 36;n--) {
       sHTML += "<OPTION>" + n;
   }
}

if(sChamp_Type.substring(0,9) == "ENDURANCE"){
   for (n = 1; n <= sPoints_Array.length-1;n++) {
       sHTML += "<OPTION>" + sPoints_Array[n].substring(0,3);
   }
}

if(sChamp_Type.substring(0,3) == "CAR"){
   for (n = 1;n <= sPoints_Array.length-1;n++) {
       sHTML += "<OPTION>" + sPoints_Array[n].substring(0,3);
   }
}

sHTML += "<OPTION>0";

sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
//******************************************************************

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Selections Made</TD></TR>";
sHTML += "<TR><TD><SELECT NAME='ListSimScores'>";
sHTML += sHTML2;
sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
sHTML += "</TR></TABLE>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=800>";
sHTML += "<TR>";
sHTML += "<TD ALIGN=LEFT>";
sHTML += "<B>Simulated Results for Round " + nSimulated_Round + "</B>";
sHTML += "</TD>";
sHTML += "<BR><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=800>";
sHTML += "<TR>";
sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Add To Selections ->' onclick='Add_To_List_Click()'>";
sHTML += "</TD>";

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Apply Average Scores To All' onclick='ApplyAvg_Click()'>";
sHTML += "</TD>";

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Clear Selections for Round' onclick='Clear_Click()'>";
sHTML += "</TD>";

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE ='BUTTON' VALUE='Recalculate Table' onclick='ReCalculate_Required()'>";
sHTML += "</TD>";
sHTML += "</TR></TABLE>";

//****************************************************************
//****************************************************************
//AJPB************************************************************
//****************************************************************
//****************************************************************

sHTML += "<BR><HR><BR>";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>Extra Points Simulation</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";

//**************************************************************

sHTML += "<TD ALIGN=CENTER>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Select Driver</TD></TR>";

sHTML += "<TR><TD><SELECT NAME='ListDriversEP'>";

 for (n = 1;n <= nDriver_Records;n++) {
     sHTML += "<OPTION>" + asDriver[n];
 }

sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
//**************************************************************

sHTML += "<TD ALIGN=CENTER>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Select Points</TD></TR>";

sHTML += "<TR><TD><SELECT NAME='ListPointsTableEP'>";

for (n = 0; n <= 100;n++) {
    sHTML += "<OPTION>" + n;
}

sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
//******************************************************************

Build_ExtraPoints_Selected_List();

sHTML += "<TD ALIGN=CENTER>";
sHTML += "<TABLE class='HeadTable2' BORDER=0><TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Selections Made</TD></TR>";
sHTML += "<TR><TD><SELECT NAME='ListSimScoresEP'>";
sHTML += sHTML3;
sHTML += "</SELECT>";
sHTML += "</TD></TR></TABLE></TD>";
sHTML += "</TR></TABLE>";

sHTML += "<BR><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";
sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Add To Extra Points Selections ->' onclick='Add_To_ExtraPoints_List_Click()'>";
sHTML += "</TD>";

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Apply Extra Points To All' onclick='Apply_ExtraPoints_All_Click()'>";
sHTML += "</TD>";

sHTML += "<TD ALIGN=LEFT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Clear Extra Points Selections' onclick='Clear_ExtraPoints_Click()'>";
sHTML += "</TD>";

sHTML += "</TR></TABLE>";


document.getElementById("DivText2").innerHTML = sHTML;

}

//********************************************************************************************c

function Build_Selected_List(nSimulated_Round){

var Space30 = "                              ";
var nLength = 0;
var sString = "";
sHTML2 = "";

for (n = 1;n <= nDriver_Records;n++) {
    if(anSimulatedScore[nSimulated_Round][n] != 0){
       sString = Space30 + asDriver[n];
       nLength = sString.length;
       sHTML2 = sHTML2 + "<OPTION>" + sString.substring(nLength-30,nLength) + " - " + anSimulatedScore[nSimulated_Round][n];
   }
}

if(sHTML2 == ""){
   sHTML2 = "<OPTION>No Selections";
} 

}

//********************************************************************************************c
//AJPB**********************************************

function Build_ExtraPoints_Selected_List(){

var Space30 = "                              ";
var nLength = 0;
var sString = "";
sHTML3 = "";

for (n = 1;n <= nDriver_Records;n++) {
    if(anSimulateExtraPoints[n] != 0){
       sString = Space30 + asDriver[n];
       nLength = sString.length;
       sHTML3 = sHTML3 + "<OPTION>" + sString.substring(nLength-30,nLength) + " - " + anSimulateExtraPoints[n];
   }
}

if(sHTML3 == ""){
   sHTML3 = "<OPTION>No Selections";
} 

}

//********************************************************************************************c

function ApplyAvg_Click(){

var nTempFullTotal;
var nTempAvgScore;
var nNoScoringRounds;
var nAvgScore;
var X;
var m;
var nIndex;
var sSelected;

var nScores = new Array();
var nNoNonZeros;
var Xstring;
var nScores = new Array();
var Space30 = "                              ";
var nLength = 0;
var sString = "";
var sScore_String = 0;

//** Clear Grid First
for (n = 1;n <= nDriver_Records;n++) {
    anSimulatedScore[nSimulated_Round][n] = 0;
}

sHTML2 = "";

for (X = 1;X <= nDriver_Records;X++) {

    nNoNonZeros = 0;

    for (m = 1;m <= nRounds;m++) {
        nScores[m] = anScore[m][X];
        if(anScore[m][X] > 0){
           nNoNonZeros = nNoNonZeros + 1;
        }
    }

    if(anTopNTotal[X] != 0){
       if(nNoNonZeros < nScores_To_Include){
          sScore_String = (anTopNTotal[X]/nNoNonZeros);
       }else{
          sScore_String = (anTopNTotal[X]/nScores_To_Include);
       }
    }else{
       sScore_String = 0;
    }

    nPos = String(sScore_String).indexOf(".");

    if(nPos == -1){
    }else{
       sScore_String = String(sScore_String).substring(0,nPos);
    }

    Xstring = Get_Avg_Score(sChamp_Type, sScore_String);

    anSimulatedScore[nSimulated_Round][X] = Number(Xstring);

    sString = Space30 + asDriver[X];
    nLength = sString.length;
    sHTML2 = sHTML2 + "<OPTION>" + sString.substring(nLength-30,nLength) + " - " + Xstring;
    bSimRecalc = true;
}

Build_Screen();

}

//AJPB*********************************************************
//*************************************************************

function Apply_ExtraPoints_All_Click(){

var nTempFullTotal;
var nTempAvgScore;
var nNoScoringRounds;
var nAvgScore;
var X;
var m;
var nIndex;
var sSelected;

var nScores = new Array();
var nNoNonZeros;
var Xstring;
var nScores = new Array();
var Space30 = "                              ";
var nLength = 0;
var sString = "";
var sScore_String = 0;

//** Clear Grid First
for (n = 1;n <= nDriver_Records;n++) {
    anSimulateExtraPoints[n] = 0;
}

sHTML3 = "";

for (X = 1;X <= nDriver_Records;X++) {

    nIndex = document.Form1.ListPointsTableEP.selectedIndex;
    sSelected = document.Form1.ListPointsTableEP.options[nIndex].text;

    anSimulateExtraPoints[X] = Number(sSelected);

    Xstring = sSelected;

    sString = Space30 + asDriver[X];
    nLength = sString.length;
    sHTML3 = sHTML3 + "<OPTION>" + sString.substring(nLength-30,nLength) + " - " + Xstring;
    bSimRecalc = true;
}

Build_Screen();

}

//********************************************************************************************c
//if(The ListRounds Combo is Clicked

function ListRounds_Click(){

var n;
var nIndex ;
var sSelected;

nIndex = document.Form1.ListRounds.selectedIndex;
sSelected = document.Form1.ListRounds.options[nIndex].text;

nSimulated_Round = sSelected.substring(6,sSelected.length)

Build_Selected_List(nSimulated_Round);

Build_Screen();

}

//********************************************************************************************c
// ADD DRIVER/POINTS TO LIST

function Add_To_List_Click(){

var n;
var bExists;
var nIndex1;
var nIndex2;
var sSelected1;
var sSelected2;
var oObject4;

nIndex1 = document.Form1.ListDrivers.selectedIndex;
sSelected1 = document.Form1.ListDrivers.options[nIndex1].text;

nIndex2 = document.Form1.ListPointsTable.selectedIndex;
sSelected2 = document.Form1.ListPointsTable.options[nIndex2].text;

oObject4 = document.Form1.ListSimScores;

if(sSelected1 == ""){
   return;
}

bExists = false;

for (m = 1;m <= (document.Form1.ListSimScores.length);m++) {
    
    if(sSelected1 == (document.Form1.ListSimScores.options[m-1].text).substring(0,29)){
       bExists = true;
       m = (document.Form1.ListSimScores.length)+1;
    }
}

if(bExists == false){
   anSimulatedScore[nSimulated_Round][nIndex1+1] = Number(sSelected2);
   bSimRecalc = true;
}

Build_Selected_List(nSimulated_Round);

Build_Screen();

}

//********************************************************************************************c
// ADD DRIVER/POINTS TO EXTRA POINTS LIST
//AJPB********************************************************

function Add_To_ExtraPoints_List_Click(){

var n;
var bExists;
var nIndex1;
var nIndex2;
var sSelected1;
var sSelected2;
var oObject4;

nIndex1 = document.Form1.ListDriversEP.selectedIndex;
sSelected1 = document.Form1.ListDriversEP.options[nIndex1].text;

nIndex2 = document.Form1.ListPointsTableEP.selectedIndex;
sSelected2 = document.Form1.ListPointsTableEP.options[nIndex2].text;

oObject4 = document.Form1.ListSimScoresEP;

if(sSelected1 == ""){
   return;
}

bExists = false;

for (m = 1;m <= (document.Form1.ListSimScoresEP.length);m++) {
    
    if(sSelected1 == (document.Form1.ListSimScoresEP.options[m-1].text).substring(0,29)){
       bExists = true;
       m = (document.Form1.ListSimScoresEP.length)+1;
    }
}

if(bExists == false){
   anSimulateExtraPoints[nIndex1+1] = Number(sSelected2);
   bSimRecalc = true;
}

Build_ExtraPoints_Selected_List();

Build_Screen();

}

//********************************************************************************************c
// CLEAR ALL BUTTON

function Clear_Click(){

for (n = 1;n <= nDriver_Records;n++) {
    anSimulatedScore[nSimulated_Round][n] = 0;
}

Build_Selected_List(nSimulated_Round);

Build_Screen();

}

//********************************************************************************************c
// CLEAR ALL EXTRA POINTS BUTTON

function Clear_ExtraPoints_Click(){

for (n = 1;n <= nDriver_Records;n++) {
    anSimulateExtraPoints[n] = 0;
}

Build_ExtraPoints_Selected_List();

Build_Screen();

}

//********************************************************************************************c
// Recalculate Table

function ReCalculate_Required(){

bSimulationOn = true;

ReCalculate_Table();

}
