//**************************************************************************************
//
// Champ Analysis / Race Analysis
//
// 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
//
//**************************************************************************************
// Version 2.2 04/07/2006 - Convert to use Array for everything !
//
// Version 2.3 17/01/2007 - Grid displayed if grid positions exists and lap starts from 0
//
// Version 2.4 10/11/2007 - Multi Class Added
//
// Version 2.4.1 03/05/2008 - Added Avg Grid Position in Driver Stats
//
// Version 2.5 26/04/2009 - Mouseover Driver Details display now works for Mozilla
//
//**************************************************************************************

var sInstructionsLinkPrefix = "http://www.tonybarson.co.uk/html/instructions.html";

var sMostActiveDriver;
var nMostActiveDriverMoves;
var nTotalOvertakes;


var nSummaryPos;
var nSummaryLapTime;

var bDebugFlag  = false;
var bConvertNum = false;

var bUseJavaGraphs = false;
var bUseHTMLGraphs = false; 

var nSub;
var nCount;
var nCurPos;
var nStartPos;

var sChamp_Name;
var sChamp_Type;
var sChamp_Year;
var nCurrent_Round;
var nChallenge_RaceNo = 0;
var nRaceLaps;
var nDriver_records;
var nSelectedLap = 1;
var sSaved_Driver;
var sSaved_TableHTML;
var sSaved_Driver;
var sSaved_Driver;
var anSaved_Score        = new Array();
var sSaved_LapPos        = new Array();

var asINITDriver         = new Array();
var asINITGridPos        = new Array();
var asINITFinishingTime  = new Array();

var sData                = new Array();
var anLapTime            = new Array();
var asDriver             = new Array();
var anTotalTime          = new Array();
var anLapsCompleted      = new Array();

var asFinishingTime      = new Array();
var asGridPos            = new Array();
var asLapPos             = new Array();

var nSavedRaceBestLap = 0;
var nSavedCurrentBestLap = 0;

var bPlaying_Race = false;
var tRace_Timer;
var timerID;

var sSelectedDriver1 = "";
var sSelectedDriver2 = "";
var nSelectedDriver;
var nSelectedTeam1;
var nSelectedTeam2;
var nSelectedInterval;
var nSelectedGraph;
var sSelectedClass = "All";

var nOverride_AvgLap = 0;

var anGraphLapTime   = new Array();
var anGraphLapMPH    = new Array();
var anGraphTotalTime = new Array();
var anGraphDiff      = new Array();
var anGraphAvgLap    = new Array();
var anGraphAvgMPH    = new Array();
var anGraphPos       = new Array();

var asTrackName          = new Array();
var asTrackTabName       = new Array();
var asTrackDate          = new Array();
var anTrackLength        = new Array();
var asRace_Analysis_Page = new Array();
var asTrackWebSite_Link  = new Array();
var asTrackWeather_Link  = new Array();
var asTrackHistory       = new Array();

var asIndicator		 = new Array();
var asComIndicator       = new Array();

var asDriver_Photo       = new Array();
var asDriver_WebPage     = new Array();
var anDriverFastestLaps  = new Array();
var anDriverPoles        = new Array();
var anDriverWinTimes     = new Array();
var asDriver_BestFinish  = new Array();
var asDriver_AvgGridPos  = new Array();
var asDriverRaceLeader   = new Array();

var anStatsLeaderLaps    = new Array();
var asStatsDriver        = new Array();
var asConsistency        = new Array();

var sCarImage = "../images/car.gif";

var bNoGridTimes;
var bFirstTime;

var nAvgLap;
var anStintNo = new Array();
var anBestLap = new Array();
var anBestLapOn = new Array();

var sHTML2;
var sColour1;
var sColour2;

//*************************************************
//COMMENTARY Variables !!

var sCommentary_String;

var asT10_Driver_1        = new Array(10);
var anT10_TotalTime_1     = new Array(10);
var anT10_LapsCompleted_1 = new Array(10);
var asT10_GridPos_1       = new Array(10);
var anT10_LapTime_1       = new Array(10);
var anT10_LapPos_1        = new Array(10);

var asT10_Driver_2        = new Array(10);
var anT10_TotalTime_2     = new Array(10);
var anT10_LapsCompleted_2 = new Array(10);
var asT10_GridPos_2       = new Array(10);
var anT10_LapTime_2       = new Array(10);
var anT10_LapPos_2        = new Array(10);

var asDropOut_Driver      = new Array(10);
var anDropOut_LapTime     = new Array(10);
var anDropOut_LapPos      = new Array(10);

var asNewIn_Driver        = new Array(10);
var anNewIn_LapTime       = new Array(10);
var anNewIn_LapPos        = new Array(10);

var asEdit_Rules_Array = new Array(10);
var nEditArrayLen;

var bTeam_Gap_Down;
var bTeam_Gap_Up;

var nTeamGapNEW;
var nTeamGapOLD;

var nFound_Pos;
var nFound_LapTime;

var bLeader_Gap_Down;
var bLeader_Gap_Up;

var nLeaderGapNEW;
var nLeaderGapOLD;

var nBestGain;
var sBestGain_Driver;

var nCommentary_FastestLap = 0;
var nCommentary_FastestLapOn = 0;
var sCommentary_FastestDriver = "";
var sCommentary_WinningDriver = "";
var nCommentary_Saved_BestPos = 0;
var nSelectedCommInterval = 1;

var bCommentary_Switch_On = false;
var bReporting_Switch_On = false;

var bNoRaceAnalysisDisplay;

var asWatchedDrivers = new Array();

var nSlowestLap;
var nSlowestLapOn;
var sSlowestDriver; 

var nFastestLap;
var nFastestLapOn;
var sFastestDriver; 

var nFastestAverageLap;
var sFastestAverageLapDriver;

var nSlowestAverageLap;
var sSlowestAverageLapDriver;

var nRaceAverageLap;

var nBestGain;
var sBestGainDriver;
var nBestGainGrid;
var nBestGainFinish;
var nBestGain2;
var sBestGainDriver2 = "";
var nBestGainGrid2;
var nBestGainFinish2;
var nBestGain3;
var sBestGainDriver3 = "";
var nBestGainGrid3;
var nBestGainFinish3;

var nWorstDrop;
var sWorstDropDriver;
var nWorstDropGrid;
var nWorstDropFinish;
var nWorstDrop2;
var sWorstDropDriver2 = "";
var nWorstDropGrid2;
var nWorstDropFinish2;
var nWorstDrop3;
var sWorstDropDriver3 = "";
var nWorstDropGrid3;
var nWorstDropFinish3;

bNoRaceAnalysisDisplay = false;
nSelectedCommInterval = 1;

var bExtra_Race = false;
var sExtra_Race_Desc = "";

var nGridVehiclesPerRow;
var sPoleSide;

var sHome_Page_Link;
var sHome_Main_Menu_Text;
var sChamp_Calc_Link = "";
var bIs_Fastest_Lap_Record = false;

var bMulti_Class_Race = false;
var sClass_Name = "";
var sClass_Podium_1st = "";
var sClass_Podium_2nd = "";
var sClass_Podium_3rd = "";
var sClass_Fastest_Lap = "";
var sClass_Pole_Position = "";
var asDriverClass	= new Array();
var bIncidentFeedback = false;

//****************************************************
// RACE CHART VARIABLES !!

var nLastLap = 0;
var nSlowLap = 0;
var glap = 1;

//****************************************************

//*
//* Fun Cup Changes24/09/05
//*
var asSaved_PitLap       = new Array();
var asINITPitLap         = new Array();
var asPitLap             = new Array();
var asGraphPitLap    	 = new Array();
var asT10_PitLap_1        = new Array(10);
var asT10_PitLap_2        = new Array(10);
var asDropOut_PitLap      = new Array(10);
var asNewIn_PitLap        = new Array(10);
var aGraphData		  = new Array();
var XScale;
var YScale;
var leftOffset;
var topOffset;
var graphWidth;
var graphHeight;
var raceChartIMG;
var oldLap;
var oldPos;
var bDistanceDisplay = false;

//sColour1 = "#EBEBFF";
//sColour2 = "#FFFFFF";

sColour1 = "#E8F3FF";
sColour2 = "#D2E8FF";

sSaved_Driver = "";
nSelectedLap = 1;

bFirstTime = true;

//*****************************************
function Get_Fields(sString,aPassedArray) {

var sField;
var nCount;
var n;
var nPos;
var bEndOfString = false;
var sTemp;

nCount = 0;
n = 0;

while (n <= sString.length) {

nPos = sString.indexOf("\t");

if (nPos == -1) {
nPos = (sString.length +1);
bEndOfString = true;
}

nCount = nCount + 1;

sTemp = sString.substring(0, nPos);

if (bConvertNum == true) {
aPassedArray[nCount] = Number(sTemp);
}
else {
aPassedArray[nCount] = sTemp;
}

sString = sString.substring((nPos+1), sString.length);

if (bEndOfString == true) {
n = (sString.length + 1);
}
else {
n = 0;
}

}

return "";

}

//******************************************

function Initialise() {

var nPos;
var nSub;
var nCount;


if(bExtra_Race == true) {
   alert(sChamp_Name + " - " + sChamp_Year + "\n\n" + "Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + ". \n\nPlease Wait - Loading Data");
} else {
   alert(sChamp_Name + " - " + sChamp_Year + "\n\n" + "Race Analysis for Round " + nCurrent_Round + " - " + asTrackName[nCurrent_Round] + ". \n\nPlease Wait - Loading Data");
}

bConvertNum = false;
Get_Fields(sData[0],asINITDriver);

bConvertNum = true;
Get_Fields(sData[1],asINITFinishingTime);

bConvertNum = true;
Get_Fields(sData[2],asINITGridPos);

//*** Check to see if Grid Positions are present

bNoGridTimes = true;

for (nSub = 1; nSub <= nDriver_Records; nSub++) {
if (asINITGridPos[nSub] != 0) {
    bNoGridTimes = false;
}

}

if (!bNoGridTimes) {
   glap = 0;
   nSelectedLap = 0;
}

}


//******************************************

function Set_Menu_Text() {

//document.all.DivText1.innerHTML = "";
document.getElementById("DivText1").innerHTML = "";

sHTML = "";
sHTML += "<TABLE BORDER=0 WIDTH=1000 ALIGN=CENTER>";
sHTML += "<TR>";

sHTML += "<div id='tabs' align=center>";
sHTML += "<ul>";

if (sHome_Page_Link != "" && sHome_Main_Menu_Text != "") {
    sHTML += "<li><a href='" + sHome_Page_Link + "' TARGET='_blank' title='"  + sHome_Main_Menu_Text + "'><span>" + sHome_Main_Menu_Text + "</span></a></li>";
} else {
    sHTML += "<li><a href='http://www.TonyBarson.co.uk' TARGET='_blank' title='Home'><span>Home</span></a></li>";
}

sHTML += "<li><a href='#' title='Lap By Lap Analysis'><span onclick='Race_Table()'>Lap By Lap Analysis</span></a></li>";
sHTML += "<li><a href='#' title='Race Chart'><span onclick='Race_Chart()'>Race Chart</span></a></li>";
sHTML += "<li><a href='#' title='Graphs'><span onclick='Display_Graph_Menu()'>Graphs</span></a></li>";
sHTML += "<li><a href='#' title='Race Stats'><span onclick='Race_Stats()'>Race Stats</span></a></li>";
sHTML += "<li><a href='#' title='Commentary'><span onclick='Race_Reporting()'>Commentary</span></a></li>";

if (bIncidentFeedback) {
    sHTML += "<li><a href='#' title='Incident Feedback'><span onclick='Feedback(0)'>Incident Feedback</span></a></li>";
}

if (sChamp_Calc_Link != "") {
    sHTML += "<li><a href='" + sChamp_Calc_Link + "' TARGET='_blank' title='Champ Calc Table'><span>Champ Calc Table</span></a></li>";
}

sHTML += "</ul>";
sHTML += "</div>";

sHTML += "</TR>";
sHTML += "</TABLE>";
sHTML += "<BR>";


//document.all.DivText1.innerHTML = sHTML;
document.getElementById("DivText1").innerHTML = sHTML;

}

//*****************************************************************************

function Race_Table(){

var X;
var sHTML;
var nPos;

var anSaved_Score = new Array(nRaceLaps);
var sSaved_LapPos = new Array(nRaceLaps);

var nMatch1 = 0;
var nMatch2 = 0;

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sSaved_Driver = "";
sSaved_TableHTML = "";

clearTimeout(timerID);

if(bFirstTime == true) {

   for (X = 1; X <= nDriver_Records; X++) {

       anTotalTime[X] = 0;
       asWatchedDrivers[X] = "";
       asDriver[X] = asINITDriver[X];
       asFinishingTime[X] = asINITFinishingTime[X];
       asGridPos[X] = asINITGridPos[X];
       anBestLap[X] = 0;
       anBestLapOn[X] = 0;

   }         

   for (n = 0; n <= nRaceLaps; n++) {

       anLapTime[n] = new Array();
       asLapPos[n] = new Array();
      
       anLapTime[n][X] = 0;
       asLapPos[n][X] = 0;
   }

   if(bNoGridTimes == false) {

      for (n = 1; n <= nDriver_Records; n++) {
          asLapPos[1][n] = asINITGridPos[n];
      }
   }

   nSavedRaceBestLap = nFastestLap;

}

if(nSelectedLap > 1){
   Lap_Positions((nSelectedLap-1),true);
}

Lap_Positions(nSelectedLap,false);

if(bFirstTime == true){
   bFirstTime = false;
   if(bNoGridTimes == true){
      for (n = 1; n <= nDriver_Records; n++) {
          asGridPos[n] = n;
      }
   }
}


//************************************************************************
//** COMMENTARY - Store Top Ten from this lap
//************************************************************************

for (x = 1; x <= 10; x++) {
    asT10_Driver_2[x] = asDriver[x];
    anT10_TotalTime_2[x] = anTotalTime[x];
    anT10_LapsCompleted_2[x] = anLapsCompleted[x];
    asT10_GridPos_2[x] = asGridPos[x];
    anT10_LapTime_2[x] = anLapTime[nSelectedLap][x];
    anT10_LapPos_2[x] = x;
    asT10_PitLap_2[x] = aGraphData[nSelectedLap][x].getPitLap();
}

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? sExtra_Race_Desc : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=200>";
sHTML += "<TR><TD ALIGN=CENTER><A HREF='" + sInstructionsLinkPrefix + "#LapByLap' TARGET='_blank'><img src='../images/information.png'></A></TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='ControlTable' BORDER=1 ALIGN=CENTER WIDTH=" + (bMulti_Class_Race ? 800 : 600) + ">";
sHTML += "<TR><TD>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=" + (bMulti_Class_Race ? 800 : 600) + ">";
sHTML += "<TR>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=50><INPUT TYPE='BUTTON' VALUE='Prev' onClick='Previous_Lap()'></INPUT></TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=200>";

sHTML += " Select Lap : <SELECT NAME='SelectLap' onChange='Prepare_for_Recalc()'>";

if (!bNoGridTimes) {
   nStart = 0
} else {
   nStart = 1
}

for (nLoop = nStart; nLoop <= nRaceLaps; nLoop++) {

    if(nLoop == nSelectedLap){
       sHTML += "<OPTION SELECTED>" + nLoop;
    }else{
       sHTML += "<OPTION>" + nLoop;
    }
}

sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=180><INPUT TYPE='BUTTON' VALUE='Next' onClick='Next_Lap()'> <INPUT TYPE='BUTTON' VALUE='Play' onClick='Play_Race()'></INPUT> <INPUT TYPE='BUTTON' VALUE='Stop' onClick='Stop_Race();'></INPUT></TD>"

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=200>";
sHTML += " View : <SELECT NAME='SelectView' onChange='Prepare_for_Recalc()'>";

if(bDistanceDisplay == false){
   sHTML += "<OPTION SELECTED>Lap Times";
   sHTML += "<OPTION>Distance Graph";
}else{
   sHTML += "<OPTION>Lap Times";
   sHTML += "<OPTION SELECTED>Distance Graph";
}

sHTML += "</SELECT>";

sHTML += "</TD>";

//********************************
// Add Classes to drop-down

var nPos = 0;
var sClass = "";
var sDriver_Class = "";
var nSub = 0;

var asClassArray = new Array();

if(bMulti_Class_Race) {

	asClassArray[0] = "All";

	for (n = 1;n <= asDriverClass.length-1;n++) {

		nPos = asDriverClass[n].indexOf("|");

		if (nPos != -1) {
     			sClass = asDriverClass[n].substring(0, nPos);
		} else {
			sClass = "?????";
    		}

		nPos = asDriverClass[n].indexOf("|");

		if (nPos != -1) {
			nPos = nPos + 1
       			sDriver_Class = asDriverClass[n].substring(nPos,asDriverClass[n].length);
		} else {
       			sDriver_Class = "";
		}

		bMatchFound = false;
		for(var m = 0;m <= asClassArray.length-1;m++) {
			if(sDriver_Class == asClassArray[m]) {
				bMatchFound = true;
				break;
			}
		}

		if(!bMatchFound) {
			nSub++;
			asClassArray[nSub] = sDriver_Class;
		}
	}
}

//************************************

if(bMulti_Class_Race) {
	sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=200>";
	sHTML += " Show Class : <SELECT NAME='SelectClass' onChange='Prepare_for_Recalc()'>";

	for(n = 0;n <= asClassArray.length-1;n++) {

		if (sSelectedClass == asClassArray[n]) {
			sHTML += "<OPTION SELECTED>" + asClassArray[n];
		} else {
			sHTML += "<OPTION>" + asClassArray[n];
		}
	}

	sHTML += "</SELECT>";
	sHTML += "</TD>";
}

//*********

sHTML += "</TR>";
sHTML += "</TABLE></TD>";

sHTML += "</TR>";
sHTML += "</TABLE><BR>";

nSwitch = 0;
sColour = "";

var sStoredHTML = "";
if (nSelectedLap == 0) {
   nVehicleCount = 1;
   nGridRow = 0;

   sHTML += "<TABLE class='DetTable' BORDER='0' WIDTH=700 ALIGN=CENTER BACKGROUND=''>";

   if(sPoleSide == "LEFT") {
      sHTML += "<TR>";
      nVehicleCount = 0;
      sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT></TD>";
      while (nVehicleCount < nGridVehiclesPerRow) {
             nVehicleCount++;
             if (nVehicleCount == 1) {
                sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=CENTER><B>Pole</B></TD>";
             } else {
                sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=LEFT></TD>";
             }
      }
      sHTML += "</TR>";
   } 

   if(sPoleSide == "RIGHT") {
      sHTML += "<TR>";
      nVehicleCount = 0;
      sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT></TD>";
      while (nVehicleCount < nGridVehiclesPerRow) {
             nVehicleCount++;
             if (nVehicleCount == nGridVehiclesPerRow) {
                sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=CENTER><B>Pole</B></TD>";
             } else {
                sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=LEFT></TD>";
             }
      }
      sHTML += "</TR>";
   } 

   z = 0;
   bFinishLoop = false;
   nRightDriver = 0; 

   while (z <= nDriver_Records && bFinishLoop == false) {
          if(nSwitch == 0){
             sColour = sColour1;
             nSwitch = 1;
          }else{
             sColour = sColour2;
             nSwitch = 0;
          }

          nGridRow++;
          sHTML += "<TR>";
          sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT><B>Row " + nGridRow + "</B></TD>";
          if(sPoleSide == "LEFT") {
             nVehicleCount = 0;
             while (nVehicleCount < nGridVehiclesPerRow) {
                z++;
                nVehicleCount++;
                sHTML += "<TD WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=LEFT>";
                sHTML += "<TABLE WIDTH=100% VALIGN=TOP ALIGN=LEFT>";

                if (z <= nDriver_Records) {
                   for (n = 1;n <= nVehicleCount;n++) {
                      sHTML += "<TR>";
                      sHTML += "<TD WIDTH=100% ALIGN=CENTER><IMG SRC='../images/Blank_Space.gif' WIDTH=19 HEIGHT=18></TD>";
                      sHTML += "</TR>";
                   }
                   if (Get_Grid_Photo(asDriver[z]) == "../images/Car_Vert.gif") {
                       sHTML += "<TR><TD WIDTH=100% ALIGN=CENTER><IMG SRC='" + Get_Grid_Photo(asDriver[z]) + "'</TD></TR>";
                   } else {
                       sHTML += "<TR><TD WIDTH=100% ALIGN=CENTER><IMG SRC='" + Get_Grid_Photo(asDriver[z]) + "' WIDTH=50 HEIGHT=50></TD></TR>";
                   }
                } else {
                   sHTML += "<TR><TD WIDTH=100% VALIGN=TOP ALIGN=CENTER></TD></TR>";
                } 
                if (z <= nDriver_Records) {
		   sHTML += "<TR><TD WIDTH=100%>";
                   sHTML += "<TABLE WIDTH=100%>";
		   sHTML += "<TR>";

                   if(z == 1) {
		   	sHTML += "<TD style='background: Red; color: Yellow; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=30 VALIGN=TOP ALIGN=LEFT><CENTER>" + z + "</CENTER></TD>";
		   } else {
			sHTML += "<TD style='background: Black; color: White; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=30 VALIGN=TOP ALIGN=LEFT><CENTER>" + z + "</CENTER></TD>";
		   }

		   if(bMulti_Class_Race) {
			sHTML += "<TD style='background: White; color: Black; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=" + ((600/nGridVehiclesPerRow)-60) + " VALIGN=TOP ALIGN=LEFT><CENTER>" + asDriver[z] + "</CENTER></TD>";
			sHTML += "<TD style='background: Navy; color: White; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=30 VALIGN=TOP ALIGN=LEFT><CENTER>" + Get_Driver_Class(asDriver[z]) + "</CENTER></TD>";
                   } else {
			sHTML += "<TD style='background: White; color: Black; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=" + ((600/nGridVehiclesPerRow)-30) + " VALIGN=TOP ALIGN=LEFT><CENTER>" + asDriver[z] + "</CENTER></TD>";
                   }

                   sHTML += "</TR>";

                   if (anLapTime[nSelectedLap][z] > 0) {
                      sHTML += "<TR>";
		      sHTML += "<TD WIDTH=30>";
		      sHTML += "<TD style='background: Black; color: White; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=" + ((600/nGridVehiclesPerRow)-30) + " VALIGN=TOP ALIGN=CENTER>" + Seconds_To_Time(anLapTime[nSelectedLap][z]) + " " + (z > 1 ? " (+" + Seconds_To_Time(aGraphData[nSelectedLap][z].getGapLeader()) + ")" : "") + "</TD>";
                      sHTML += "</TR>";
                   }

                   sHTML += "</TABLE>";
		   sHTML += "</TD>";
		   sHTML += "</TR>";

                } else {
                   sHTML += "<TR>";
                   sHTML += "<TD WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=CENTER></TD>";
                   sHTML += "</TR>";
                } 
                sHTML += "</TABLE>";
                sHTML += "</TD>";
            }

            if(z >= nDriver_Records) {
                bFinishLoop = true;
            }
         } 

          if(sPoleSide == "RIGHT") {
             nVehicleCount = (nGridVehiclesPerRow+1);
             nRightDriver = nRightDriver + (nGridVehiclesPerRow+1);
             z = nRightDriver;

             while (nVehicleCount > 1) {
                z--
                nVehicleCount--;

                sHTML += "<TD WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=LEFT>";
                sHTML += "<TABLE WIDTH=100% VALIGN=TOP ALIGN=LEFT>";

                if (z <= nDriver_Records) {
                   for (n = nVehicleCount;n >= 1;n--) {
                      sHTML += "<TR>";
                      sHTML += "<TD WIDTH=100% ALIGN=CENTER><IMG SRC='../images/Blank_Space.gif' WIDTH=19 HEIGHT=18></TD>";
                      sHTML += "</TR>";
                   }
                   sHTML += "<TR>";

                   if (Get_Grid_Photo(asDriver[z]) == "../images/Car_Vert.gif") {
                       sHTML += "<TD WIDTH=100% ALIGN=CENTER><IMG SRC='" + Get_Grid_Photo(asDriver[z]) + "'</TD>";
                   } else {
                       sHTML += "<TD WIDTH=100% ALIGN=CENTER><IMG SRC='" + Get_Grid_Photo(asDriver[z]) + "' WIDTH=50 HEIGHT=50></TD>";
                   }
                   sHTML += "</TR>";
                } else {
                   sHTML += "<TR><TD WIDTH=100% VALIGN=TOP ALIGN=CENTER></TD></TR>";
                } 

		if (z <= nDriver_Records) {
		   sHTML += "<TR><TD WIDTH=100%>";
                   sHTML += "<TABLE WIDTH=100%>";
		   sHTML += "<TR>";

                   if(z == 1) {
		   	sHTML += "<TD style='background: Red; color: Yellow; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=30 VALIGN=TOP ALIGN=LEFT><CENTER>" + z + "</CENTER></TD>";
		   } else {
			sHTML += "<TD style='background: Black; color: White; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=30 VALIGN=TOP ALIGN=LEFT><CENTER>" + z + "</CENTER></TD>";
		   }

		   if(bMulti_Class_Race) {
			sHTML += "<TD style='background: White; color: Black; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=" + ((600/nGridVehiclesPerRow)-60) + " VALIGN=TOP ALIGN=LEFT><CENTER>" + asDriver[z] + "</CENTER></TD>";
			sHTML += "<TD style='background: Navy; color: White; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=30 VALIGN=TOP ALIGN=LEFT><CENTER>" + Get_Driver_Class(asDriver[z]) + "</CENTER></TD>";
                   } else {
			sHTML += "<TD style='background: White; color: Black; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=" + ((600/nGridVehiclesPerRow)-30) + " VALIGN=TOP ALIGN=LEFT><CENTER>" + asDriver[z] + "</CENTER></TD>";
                   }

                   sHTML += "</TR>";

                   if (anLapTime[nSelectedLap][z] > 0) {
                      sHTML += "<TR>";
		      sHTML += "<TD WIDTH=30>";
		      sHTML += "<TD style='background: Black; color: White; font-family: Arial; font-size: 12; font-weight: bold;' WIDTH=" + ((600/nGridVehiclesPerRow)-30) + " VALIGN=TOP ALIGN=CENTER>" + Seconds_To_Time(anLapTime[nSelectedLap][z]) + " " + (z > 1 ? " (+" + Seconds_To_Time(aGraphData[nSelectedLap][z].getGapLeader()) + ")" : "") + "</TD>";
                      sHTML += "</TR>";
                   }

                   sHTML += "</TABLE>";
		   sHTML += "</TD>";
		   sHTML += "</TR>";

                } else {
                   sHTML += "<TR>";
                   sHTML += "<TD WIDTH=" + (600/nGridVehiclesPerRow) + " VALIGN=TOP ALIGN=CENTER></TD>";
                   sHTML += "</TR>";
                } 
                sHTML += "</TABLE>";
                sHTML += "</TD>";
            }

            nRightDriver--;

            if(nRightDriver >= nDriver_Records) {
                bFinishLoop = true;
            }
         } 

         sHTML += "</TR>";
         sHTML += "<TR><TD>&nbsp;</TD></TR>";
         sHTML += "<TR><TD>&nbsp;</TD></TR>";
   }
   sHTML += "</TABLE>";
}

sStoredHTML = sHTML;

sHTML += "<TABLE class='DetTable' BORDER='1' WIDTH=1000 ALIGN=CENTER>";

sHTML += "<TR>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=30 VALIGN=TOP ALIGN=LEFT>Pos</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=40 VALIGN=TOP ALIGN=LEFT>Lap Gain</TD>";

if(bNoGridTimes == false){
   sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=LEFT>Grid Gain</TD>";
}

if(bDistanceDisplay == false) {
   sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=30 VALIGN=TOP ALIGN=LEFT>Stint</TD>";
}

sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=200 VALIGN=TOP ALIGN=LEFT>Entrant</TD>";

sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>Lap Time</TD>";

if(bDistanceDisplay == true) {
   	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=650 VALIGN=TOP ALIGN=CENTER>Distance</TD>";
} else {
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>Speed (mph)</TD>";
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=CENTER>Laps</TD>";

	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>Race Time</TD>";
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>" + ((bMulti_Class_Race && sSelectedClass != "All") ? "Gap To Class Next" : "Gap To Next") + "</TD>";
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>Gap To Leader</TD>";
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=200 VALIGN=TOP ALIGN=CENTER>Best Lap Time</TD>";
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>Avg. Lap Time</TD>";
}

sHTML += "</TR>";

nSwitch = 0;
sColour = "";

var bDisplay = true;
var nClassSub = 0;

//Re-populate grid
 for (z = 1; z <= nDriver_Records; z++) {
    if (bMulti_Class_Race) {
	if(Get_Driver_Class(asDriver[z]) == sSelectedClass || sSelectedClass == "All") {
	   bDisplay = true;
        } else {
	   bDisplay = false;
        }
    }
	
if(bDisplay == true) {
    sHTML += "<TR>";

    if(nSwitch == 0){
       sColour = sColour1;
       nSwitch = 1;
    }else{
       sColour = sColour2;
       nSwitch = 0;
    }

    //Set nMatch1 when matching driver name with INIT Driver Name

    for (m = 1; m <= nDriver_Records; m++) {
        if (asDriver[z] == asINITDriver[m]) {
    
            nMatch1 = m;	
    
        }
    }

    if(anLapTime[nSelectedLap][z] == anBestLap[z]) {
               sColour = "#33FFFF";
    }


    if(Seconds_To_Time(anLapTime[nSelectedLap][z]) == Seconds_To_Time(nSavedCurrentBestLap)) {
       sColour = "#66FF66";
    }


    if(Seconds_To_Time(anLapTime[nSelectedLap][z]) == Seconds_To_Time(nSavedRaceBestLap)) {
       sColour = "#FFFF66";
    }

    if(anLapTime[nSelectedLap][z] > nAvgLap) {
       sColour = "#FF3366";
    }

    sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=30 VALIGN=TOP ALIGN=LEFT>" + z + "</TD>";

//Set nMatch2 when matching driver name with Array Driver Name for different lap
//** WORK OUT POSITIONS ON PREVIOUS LAP

    if(nSelectedLap > 1){
       sGain = 0;

       for (m = 1; m <= nDriver_Records; m++) {
           if (aGraphData[nSelectedLap-1][m].getEntrantName() == asDriver[z]) {
               nMatch2 = m;	

               sGain = m - z;
               m = nDriver_Records+1;

           }
       }


       if (sGain < 0)  {
          sGain = sGain * -1;
       }

       if((z - nMatch2) < 0){
          sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Gained' SRC='../images/UP_RED.gif' WIDTH=16 HEIGHT=16>" + sGain + "</TD>";
       }else if((z - nMatch2) > 0){
              sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Lost' SRC='../images/DOWN_RED.gif' WIDTH=16 HEIGHT=16>" + sGain + "</TD>";
       }else if((z - nMatch2) == 0){
              sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Same Position' SRC='../images/SAME_RED.gif' WIDTH=16 HEIGHT=16></TD>";
       }
    }else{
       if(bNoGridTimes == false){
          sGain = (z - asINITGridPos[nMatch1]);

          if (sGain < 0)  {
             sGain = sGain * -1;
          }

          if((z - asINITGridPos[nMatch1]) < 0){
             sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Gained' SRC='../images/UP_RED.gif' WIDTH=16 HEIGHT=16>" + sGain + "</TD>";
          }else if((z - asINITGridPos[nMatch1]) > 0){
                 sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Lost' SRC='../images/DOWN_RED.gif' WIDTH=16 HEIGHT=16>" + sGain + "</TD>";
          }else if((z - asINITGridPos[nMatch1]) == 0){
                 sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Same Position' SRC='../images/SAME_RED.gif' WIDTH=16 HEIGHT=16></TD>";
          }
       } else {
              sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=40 VALIGN=TOP ALIGN=LEFT><IMG ALT='Same Position' SRC='../images/SAME_RED.gif' WIDTH=16 HEIGHT=16></TD>";
       }
    }

//** WORK OUT POSITIONS GAINED/LOST FROM GRID SLOT

    if(bNoGridTimes == false){
  
       sGain = (z - asINITGridPos[nMatch1]);

       if (sGain < 0)  {
          sGain = sGain * -1;
       }

       if((z - asINITGridPos[nMatch1]) < 0){
          sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Gained' SRC='../images/UP_BLUE.gif' WIDTH=16 HEIGHT=16>" + sGain + "&nbsp;(" + asINITGridPos[nMatch1] + ")</TD>";
       }else if((z - asINITGridPos[nMatch1]) > 0){
              sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Lost' SRC='../images/DOWN_BLUE.gif' WIDTH=16 HEIGHT=16>" + sGain + "&nbsp;(" + asINITGridPos[nMatch1] + ")</TD>";
       }else if((z - asINITGridPos[nMatch1]) == 0){
              sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT><IMG ALT='Same Position' SRC='../images/SAME_BLUE.gif' WIDTH=16 HEIGHT=16>" + sGain + "&nbsp;(" + asINITGridPos[nMatch1] + ")</TD>";
       }
    }

    if(bDistanceDisplay == false) {
    	sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=30 VALIGN=TOP ALIGN=LEFT>" + anStintNo[z] + "</TD>";
    }	 	

    sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=200 VALIGN=TOP ALIGN=LEFT>";

    sHTML += "<TABLE WIDTH=200 ALIGN=LEFT BORDER=0><TR><TD class='DetBox' WIDTH=180 ALIGN=LEFT>";

    if (nSelectedLap == nRaceLaps) {
       if (z == 1) {
          sHTML += "<IMG SRC='../images/CheqFlag.gif' WIDTH=8 HEIGHT=16>" + "<A onclick='Stint_Stats(" + "\"" + asDriver[z] + "\"" + ");'><U>" + asDriver[z] + ((bMulti_Class_Race && sSelectedClass == "All") ? (" (" + Get_Driver_Class(asDriver[z]) + ")") : "") + "</U></A></TD><TD class='DetBox' WIDTH=20 ALIGN=RIGHT><IMG ALT='Podium - Winner' SRC='../images/Gold_Cup.gif' WIDTH=18 HEIGHT=15></TD>";
       } else if (z == 2) {
          sHTML += "<IMG SRC='../images/CheqFlag.gif' WIDTH=8 HEIGHT=16>" + "<A onclick='Stint_Stats(" + "\"" + asDriver[z] + "\"" + ");'><U>" + asDriver[z] + ((bMulti_Class_Race && sSelectedClass == "All") ? (" (" + Get_Driver_Class(asDriver[z]) + ")") : "") + "</U></A></TD><TD class='DetBox' WIDTH=20 ALIGN=RIGHT><IMG ALT='Podium - 2nd Position' SRC='../images/Silver_Cup.gif' WIDTH=18 HEIGHT=15></TD>";
       } else if (z == 3) {
          sHTML += "<IMG SRC='../images/CheqFlag.gif' WIDTH=8 HEIGHT=16>" + "<A onclick='Stint_Stats(" + "\"" + asDriver[z] + "\"" + ");'><U>" + asDriver[z] + ((bMulti_Class_Race && sSelectedClass == "All") ? (" (" + Get_Driver_Class(asDriver[z]) + ")") : "") + "</U></A></TD><TD class='DetBox' WIDTH=20 ALIGN=RIGHT><IMG ALT='Podium - 3rd Position' SRC='../images/Bronze_Cup.gif' WIDTH=18 HEIGHT=15></TD>";
       } else if (z > 3) {
          sHTML += "<IMG SRC='../images/CheqFlag.gif' WIDTH=8 HEIGHT=16>" + "<A onclick='Stint_Stats(" + "\"" + asDriver[z] + "\"" + ");'><U>" + asDriver[z] + ((bMulti_Class_Race && sSelectedClass == "All") ? (" (" + Get_Driver_Class(asDriver[z]) + ")") : "") + "</U></A></TD>";
       }
    } else {
       sHTML += "<A onclick='Stint_Stats(" + "\"" + asDriver[z] + "\"" + ");'><U>" + asDriver[z] + ((bMulti_Class_Race && sSelectedClass == "All") ? (" (" + Get_Driver_Class(asDriver[z]) + ")") : "") + "</U></A></TD>";
    }

 
    if(TrimString(aGraphData[nSelectedLap][z].getPitLap()) != "") {
        sHTML += "<TD class='DetBox' WIDTH=20 ALIGN=RIGHT><IMG ALT='" + TrimString(aGraphData[nSelectedLap][z].getPitLap()) + " - " + Get_Indicator_Description(TrimString(aGraphData[nSelectedLap][z].getPitLap()),"1") + "' SRC='" + "../images/" + TrimString(aGraphData[nSelectedLap][z].getPitLap()) + ".png'></TD>";
    }

    if(aGraphData[nSelectedLap][z].getMediaLink1() != "") {
       sHTML += "<TD class='DetBox' WIDTH=20 ALIGN=RIGHT><A HREF='" + aGraphData[nSelectedLap][z].getMediaLink1() + "' TARGET='_blank'><IMG BORDER='0' ALT='Media Link 1 - " + aGraphData[nSelectedLap][z].getMediaLink1() + "' SRC='../images/Media.png' WIDTH=22 HEIGHT=17></A></TD>";
    }

    if(aGraphData[nSelectedLap][z].getMediaLink2() != "") {
       sHTML += "<TD class='DetBox' WIDTH=20 ALIGN=RIGHT><A HREF='" + aGraphData[nSelectedLap][z].getMediaLink2() + "' TARGET='_blank'><IMG BORDER='0' ALT='Media Link 2 - " + aGraphData[nSelectedLap][z].getMediaLink2() + "' SRC='../images/Media.png' WIDTH=22 HEIGHT=17></A></TD>";
    }
 

    sHTML += "</TR></TABLE>";

    if(anLapTime[nSelectedLap][z] != 0){
       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
       sHTML += Seconds_To_Time(anLapTime[nSelectedLap][z]) + "</TD>";
    }else{
       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
       sHTML += "-----</TD>";
    }

    if(bDistanceDisplay == false) {
	    if(anLapTime[nSelectedLap][z] != 0) {
       		if(sChamp_Type == "SPRINT"){
          		sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
          		sHTML += format_MPH(3600 / (((anLapTime[nSelectedLap][z] / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "</TD>";
	       }else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        	      sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	              sHTML += format_MPH(3600 / (((anLapTime[nSelectedLap][z] / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "</TD>";
	       }else if(sChamp_Type == "CAR"){
        	      sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	              sHTML += format_MPH(3600 / (((anLapTime[nSelectedLap][z] / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "</TD>";
	       }
	    }else{
        	sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	        sHTML += "-----</TD>";
	    }
    }

    if(bDistanceDisplay == false) {
	    sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=RIGHT>";
	    sHTML += anLapsCompleted[z] + "</TD>";

	    sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	    sHTML += Seconds_To_Time(anTotalTime[z]) + "</TD>";

	//Gap to next team

	    if(z == 1) {
	       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	       sHTML += "0</TD>";
	       if(bMulti_Class_Race) {
          	  nClassSub = 1;
	       }
	    } else {
 		if(bMulti_Class_Race) {
			if(nClassSub == 0) {
	       			sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
				sHTML += "0</TD>";
			} else {
	       			if(anLapsCompleted[z] == anLapsCompleted[nClassSub]){ 
	          			nPoints_diff = (TruncNum(anTotalTime[z]) - TruncNum(anTotalTime[nClassSub]));

	          			sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
                			sHTML += Seconds_To_Time(nPoints_diff) + "</TD>";
	       			} else {
        	  			sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";

	          			if((anLapsCompleted[nClassSub] - anLapsCompleted[z]) == 1){
	       	     				sHTML += "<B>" + (anLapsCompleted[nClassSub] - anLapsCompleted[z]) + " Lap</B></TD>";
	          			}else{
        	     				sHTML += "<B>" + (anLapsCompleted[nClassSub] - anLapsCompleted[z]) + " Laps</B></TD>";
	          			}
				}
	       		}
	          	nClassSub = z;
		} else {
	       		if(anLapsCompleted[z] == anLapsCompleted[z-1]){ 
	          		nPoints_diff = (TruncNum(anTotalTime[z]) - TruncNum(anTotalTime[z-1]));

	          		sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
                  		sHTML += Seconds_To_Time(nPoints_diff) + (nSelectedLap >= 2 ? ((aGraphData[nSelectedLap][z].getGapNext() < aGraphData[nSelectedLap-1][z].getGapNext()) ? "<FONT COLOR='GREEN'>-</COLOR>" : "<FONT COLOR='RED'>+</COLOR>") : "") + "</TD>";
	       		} else {
        	  		sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";

	          		if((anLapsCompleted[z-1] - anLapsCompleted[z]) == 1){
        	     			sHTML += "<B>" + (anLapsCompleted[z-1] - anLapsCompleted[z]) + " Lap</B></TD>";
	          		}else{
        	     			sHTML += "<B>" + (anLapsCompleted[z-1] - anLapsCompleted[z]) + " Laps</B></TD>";
	          		}
	       		}
		}
	    }

	// gap to leader
	    if(z == 1){
	       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	       sHTML += "0</TD>";
	    }else{
	       if(anLapsCompleted[z] == anLapsCompleted[1]){ ;
	          nPoints_diff = (TruncNum(anTotalTime[z]) - TruncNum(anTotalTime[1]));

	          sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
        	  sHTML += Seconds_To_Time(nPoints_diff) + (nSelectedLap >= 2 ? ((aGraphData[nSelectedLap][z].getGapLeader() < aGraphData[nSelectedLap-1][z].getGapLeader()) ? "<FONT COLOR='GREEN'>-</COLOR>" : "<FONT COLOR='RED'>+</COLOR>") : "") + "</TD>";
	       }else{
        	  sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";

	          if((anLapsCompleted[1] - anLapsCompleted[z]) == 1){
        	     sHTML += "<B>" + (anLapsCompleted[1] - anLapsCompleted[z]) + " Lap</B></TD>";
	          }else{
        	     sHTML += "<B>" + (anLapsCompleted[1] - anLapsCompleted[z]) + " Laps</B></TD>";
	          }
	       }
	    }

	    if(anBestLap[z] != 0){
	       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=200 VALIGN=TOP ALIGN=RIGHT>";
	       sHTML += Seconds_To_Time(anBestLap[z]) + " (" + anBestLapOn[z] + ")</TD>";
	    }else{
	       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=200 VALIGN=TOP ALIGN=RIGHT>";
	       sHTML += "-----</TD>";
	    }


	    if(anTotalTime[z] != 0  && anLapsCompleted[z] != 0){
       		sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	       	sHTML += Seconds_To_Time(anTotalTime[z]/anLapsCompleted[z]) + "</TD>";
	    }else{
	       sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=RIGHT>";
	       sHTML += "-----</TD>";
	    }
   }


    if(bDistanceDisplay == true) {
	sHTML += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=650 VALIGN=TOP ALIGN=LEFT>";

	    if(z == 1){
	         sHTML += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar1.png' WIDTH=0 HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;<IMG SRC='" + sCarImage + "'>&nbsp; &nbsp;" + Seconds_To_Time(anTotalTime[z]) + "</TD>";
	    }else{
	       if(anLapsCompleted[z] == anLapsCompleted[1]){ ;
	          nPoints_diff = (TruncNum(anTotalTime[z]) - TruncNum(anTotalTime[1]));
		  if(nPoints_diff > (1*nAvgLap)) {
    			  sHTML += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar1.png' WIDTH=300 HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;<IMG SRC='" + sCarImage + "'>&nbsp; &nbsp;+" + Seconds_To_Time(nPoints_diff) + (nSelectedLap >= 2 ? ((aGraphData[nSelectedLap][z].getGapLeader() < aGraphData[nSelectedLap-1][z].getGapLeader()) ? "<FONT COLOR='GREEN'>-</COLOR>" : "<FONT COLOR='RED'>+</COLOR>") : "");
        		  sHTML += "</TD>";
		  } else {
                          sHTML += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar1.png' WIDTH=" + ((300/(1*nAvgLap))*nPoints_diff) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;<IMG SRC='" + sCarImage + "'>&nbsp; &nbsp;+" + Seconds_To_Time(nPoints_diff) + (nSelectedLap >= 2 ? ((aGraphData[nSelectedLap][z].getGapLeader() < aGraphData[nSelectedLap-1][z].getGapLeader()) ? "<FONT COLOR='GREEN'>-</COLOR>" : "<FONT COLOR='RED'>+</COLOR>") : "");
        		  sHTML += "</TD>";
		  }
	       }else{
	          if((anLapsCompleted[1] - anLapsCompleted[z]) == 1){
        	     sHTML += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar1.png' WIDTH=300 HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;<IMG SRC='" + sCarImage + "'>&nbsp; &nbsp;" + "<B>+" + (anLapsCompleted[1] - anLapsCompleted[z]) + " Lap</B></TD>";
	          }else{
        	     sHTML += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar1.png' WIDTH=300 HEIGHT=20></IMG><IMG SRC='" + sCarImage + "' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;<IMG SRC='" + sCarImage + "'>&nbsp; &nbsp;" + "<B>+" + (anLapsCompleted[1] - anLapsCompleted[z]) + " Laps</B></TD>";
	          }
	       }
	    }

    }


    sSaved_TableHTML = sHTML;
}
}


sHTML += "<TABLE WIDTH=900 ALIGN=CENTER>";
sHTML += "<TR>";
sHTML += "<TD WIDTH=20 BGCOLOR='#33FFFF'></TD><TD WIDTH=200> - Fastest Personal Lap</TD>";
sHTML += "<TD WIDTH=20 BGCOLOR='#66FF66'></TD><TD WIDTH=200> - Fastest On Current Lap</TD>";
sHTML += "<TD WIDTH=20 BGCOLOR='#FFFF66'></TD><TD WIDTH=150> - Fastest Race Lap</TD>";
sHTML += "<TD WIDTH=20 BGCOLOR='#FF3366'></TD><TD WIDTH=150> - 'Long' Lap</TD>";
sHTML += "</TR>";
sHTML += "</TABLE>";

sHTML += "</TR>";
sHTML += "</TABLE>";

sSaved_TableHTML = sHTML;

if (nSelectedLap == 0) {
   sSaved_TableHTML = sStoredHTML;
}

document.getElementById("DivText2").innerHTML = sSaved_TableHTML;

if (nSelectedLap != 0) {
   if (bCommentary_Switch_On == true) {
      if (nSelectedLap == 1) {
         for (x = 1; x <= 10; x++) {
             asT10_Driver_1[x] = asT10_Driver_2[x];
             anT10_TotalTime_1[x] = anT10_TotalTime_2[x];
             anT10_LapsCompleted_1[x] = anT10_LapsCompleted_2[x];
             asT10_GridPos_1[x] = asT10_GridPos_2[x];
             anT10_LapTime_1[x] = anT10_LapTime_2[x];
             anT10_LapPos_1[x] = anT10_LapPos_2[x];
             asT10_PitLap_1[x] = asT10_PitLap_2[x];
         }
      }
      Commentary(nSelectedLap);
   }
}

bNoRecalc = false;

if (bPlaying_Race == true) {
   tRace_Timer = setTimeout('Next_Lap()', 5000);
}


}

//***********************************************************************************

function Get_Grid_Photo(sPassed_Driver) {


var sPhoto_File_Name = "";
var nPos = 0;
var sPhoto_Driver;

for (n = 1;n <= asDriver_Photo.length-1;n++) {

    nPos = asDriver_Photo[n].indexOf("||");

    if (nPos != -1) {
        sPhoto_Driver = asDriver_Photo[n].substring(0, nPos);
    } else {
	sPhoto_Driver = "?????";
    }

    if(sPassed_Driver.substring(0, sPhoto_Driver.length).toUpperCase() == sPhoto_Driver.toUpperCase()){
       nPos = asDriver_Photo[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          sPhoto_File_Name = asDriver_Photo[n].substring(nPos,asDriver_Photo[n].length);
       } else {
             sPhoto_File_Name = "";
       }

       break;
    }
}

if(sPhoto_File_Name == "") {
   return "../images/Car_Vert.gif"
} else {
   return sPhoto_File_Name
} 

}

//***********************************************************************************

function Get_Driver_Class(sPassed_Driver) {


var nPos = 0;
var sClass = "";
var sDriver_Class = "";


for (n = 1;n <= asDriverClass.length-1;n++) {

    nPos = asDriverClass[n].indexOf("|");

    if (nPos != -1) {
        sClass = asDriverClass[n].substring(0, nPos);
    } else {
	sClass = "?????";
    }

    if(sPassed_Driver.substring(0, sClass.length).toUpperCase() == sClass.toUpperCase()){
       nPos = asDriverClass[n].indexOf("|");

       if (nPos != -1) {
          nPos = nPos + 1
          sDriver_Class = asDriverClass[n].substring(nPos,asDriverClass[n].length);
       } else {
             sDriver_Class = "";
       }

       break;
    }
}

if(sDriver_Class == "") {
   return "???"
} else {
   return sDriver_Class
} 

}

//***********************************************************************************

function Play_Race() {

bPlaying_Race = true;

tRace_Timer = setTimeout('Next_Lap()', 5000);

}

//***********************************************************************************

function Stop_Race() {

bPlaying_Race = false;

clearTimeout(tRace_Timer);

}


//***********************************************************************************

function ReDisplay_Table(){

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sSaved_Driver = "";

document.getElementById("DivText2").innerHTML = sSaved_TableHTML;

}

//********************************************************************************************

function Previous_Lap(){

if (!bNoGridTimes) {
   if(nSelectedLap >  0){
     nSelectedLap = nSelectedLap - 1;

     Race_Table();
   }
} else {
   if(nSelectedLap > 1){
     nSelectedLap = nSelectedLap - 1;

     Race_Table();
   }
}

}

//********************************************************************************************

function Next_Lap(){

if(nSelectedLap < nRaceLaps){
  nSelectedLap = nSelectedLap + 1;

  Race_Table();
}

}

//********************************************************************************************

function Prepare_for_Recalc(){

var nIndex;

if(bMulti_Class_Race) {
	nIndex = document.Form1.SelectClass.selectedIndex;
	sSelectedClass = document.Form1.SelectClass.options[nIndex].text;
}

nIndex = document.Form1.SelectLap.selectedIndex;
nSelectedLap = Number(document.Form1.SelectLap.options[nIndex].text);

nIndex = document.Form1.SelectView.selectedIndex;
var sSelectedView = document.Form1.SelectView.options[nIndex].text;

if(sSelectedView == "Distance Graph") {
	bDistanceDisplay = true;
} else {
	bDistanceDisplay = false;
}

Race_Table();

}

//********************************************************************************************

function TruncNum(nPassedValue) {

var sTempString;

sTempString = String(nPassedValue);

nPos = sTempString.indexOf(".");

if (nPos == -1) {
   return nPassedValue;
}

if (sTempString.length > (nPos + 3)) {
   sTempString = sTempString.substring(0, (nPos + 4));
}

return Number(sTempString);

}

//********************************************************************************************

function Seconds_To_Time(nSeconds){

var nHours;
var nMins;
var nSecs;

var nRemainder;
var nPos;

nHours = parseInt(nSeconds / 3600);

nRemainder = nSeconds - (nHours * 3600);

nMins = parseInt(nRemainder / 60);

nSecs = nSeconds - (nMins * 60);

//*** Now Work out remainder to 3 dec places

nRemainder = nSecs;

nSecs = parseInt(nSecs);

var sStrMins = "";
var sStrSecs = "";
var sStrRemainder = "";

sStrRemainder = String(nRemainder);

nPos = sStrRemainder.indexOf(".");

if(nPos == -1){
   sStrRemainder = sStrRemainder + ".000";
}else{
   sStrRemainder = sStrRemainder + "000";
}


nPos = sStrRemainder.indexOf(".");

sStrRemainder = sStrRemainder.substring(nPos, (nPos+4));

sStrMins = "00" + String(parseInt(nMins));
sStrMins = sStrMins.substring(sStrMins.length-2,sStrMins.length+1);

sStrSecs = "00" + String(parseInt(nSecs));
sStrSecs = sStrSecs.substring(sStrSecs.length-2,sStrSecs.length+1);

//*** Now return value

if(nHours > 0){
   return nHours + ":" + sStrMins + ":" + sStrSecs + sStrRemainder;
} 

if(nMins > 0){
   return nMins + ":" + sStrSecs + sStrRemainder;
} 

return nSecs + sStrRemainder;

}

//********************************************************************************************

function format_MPH(nValue){

var nPos;

nPos = String(nValue).indexOf(".");

if(nPos == -1){
   return nValue + ".000";
}else{
   nValue = nValue + "000";
   nPos = nValue.indexOf(".");
   return nValue.substring(0, nPos+4);
}

}

//***********************************************************************************************

//*******************************************************

function Lap_Positions(nPassed_Lap, bLastLapPos){

var n = 0;
var m = 0;

nSavedCurrentBestLap = 0;


for (n = 1; n <= nDriver_Records; n++) {
    asLapPos[nPassed_Lap][n] = n;
    anLapTime[nPassed_Lap][n] = aGraphData[nPassed_Lap][n].getLaptime();
    asDriver[n] = aGraphData[nPassed_Lap][n].getEntrantName();
    anTotalTime[n] = aGraphData[nPassed_Lap][n].getRaceTime();
    anLapsCompleted[n] = aGraphData[nPassed_Lap][n].getLapsCompleted();
    anStintNo[n] = aGraphData[nPassed_Lap][n].getStintNo();
    anBestLap[n] = aGraphData[nPassed_Lap][n].getBestLap();
    anBestLapOn[n] = aGraphData[nPassed_Lap][n].getBestLapOn();

    for (m = 1; m <= nDriver_Records; m++) {
        if (asDriver[n] == asINITDriver[m]) {

            asFinishingTime[n] = asINITFinishingTime[m];
            asGridPos[n] = asINITGridPos[m];

        }

        if((anLapTime[nPassed_Lap][n] <= nSavedCurrentBestLap && anLapTime[nPassed_Lap][n] != 0) || nSavedCurrentBestLap == 0) {
            nSavedCurrentBestLap = anLapTime[nPassed_Lap][n];
        } 

    }
} 

//************************************************************************
//** Store Top Ten from previous lap
//************************************************************************

if (bLastLapPos == true) {
   for (x = 1; x <= 10; x++) {
       asT10_Driver_1[x] = asDriver[x];
       anT10_TotalTime_1[x] = anTotalTime[x];
       anT10_LapsCompleted_1[x] = anLapsCompleted[x];
       asT10_GridPos_1[x] = asGridPos[x];
       anT10_LapTime_1[x] = anLapTime[nPassed_Lap][x];
       anT10_LapPos_1[x] = x;
       asT10_PitLap_1[x] = aGraphData[nPassed_Lap][x].getPitLap();
   }
}

}

//***********************************************************************************
function Race_Graphs(){

var X;
var nLap ;
var sHTML;

Stop_Race();
clearTimeout(timerID);

for (X=1;X <= nRaceLaps;X++) {
    anGraphLapTime[X] = new Array();
    asGraphPitLap[X] = new Array();
    anGraphLapMPH[X]  = new Array();
    anGraphTotalTime[X]  = new Array();
    anGraphDiff[X]  = new Array();
    anGraphAvgLap[X]  = new Array();
    anGraphAvgMPH[X]  = new Array();
    anGraphPos[X]  = new Array();

    for (n=1; n <= 2;n++) {
       anGraphLapTime[X][n] = 0;
       asGraphPitLap[X][n] = "";
       anGraphLapMPH[X][n] = 0;
       anGraphTotalTime[X][n] = 0;
       anGraphDiff[X][n] = 0;
       anGraphAvgLap[X][n] = 0;
       anGraphAvgMPH[X][n] = 0;
       anGraphPos[X][n] = 0;
    }
}

var    anSaved_Score = new Array(nRaceLaps);

if(bUseJavaGraphs) {
	Race_Analysis();
	return;
}	


document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sSelectedDriver1 = asDriver[1];
sSelectedDriver2 = asDriver[1];

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=200>";
sHTML += "<TR><TD ALIGN=CENTER><A HREF='" + sInstructionsLinkPrefix + "#Graphs' TARGET='_blank'><img src='../images/information.png'></A></TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=250>";
 
sHTML += " Select Entrant 1 : <SELECT ID='SelectTeam1' onChange='Select_Team1()'>";

for (nLoop = 1;nLoop <= nDriver_Records; nLoop++) {
 
    if(asDriver[nLoop] == nSelectedTeam1){
       sHTML += "<OPTION SELECTED>" + asDriver[nLoop];
    }else{
       sHTML += "<OPTION>" + asDriver[nLoop];
    }
}

sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=250>";

sHTML += " Select Entrant 2 : <SELECT ID='SelectTeam2' onChange='Select_Team2()'>";

for (nLoop = 1;nLoop <= nDriver_Records; nLoop++) {

    if(asDriver[nLoop] == nSelectedTeam2){
       sHTML += "<OPTION SELECTED>" + asDriver[nLoop];
    }else{
       sHTML += "<OPTION>" + asDriver[nLoop];
    }
}

sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=LEFT WIDTH=100><INPUT TYPE='BUTTON' VALUE='Run Race Analysis' onClick='Race_Analysis()'></INPUT></TD>";

sHTML += "</TR>";
sHTML += "</TABLE></TD>";

nSwitch = 0;
sColour = "";

document.getElementById("DivText2").innerHTML = sHTML;

bNoRecalc = false;

}

//***********************************************************************************************

function Select_Team1(){

var nIndex;

nIndex = document.Form1.SelectTeam1.selectedIndex;
sSelectedDriver1 = document.Form1.SelectTeam1.options[nIndex].text;

}

//***********************************************************************************************

function Select_Team2(){

var nIndex;

nIndex = document.Form1.SelectTeam2.selectedIndex;
sSelectedDriver2 = document.Form1.SelectTeam2.options[nIndex].text;

}

//***********************************************************************************************

function Race_Analysis(){

var nLap;
var Y;

if(bUseHTMLGraphs) {
   if(sSelectedDriver1 == sSelectedDriver2){
   	alert("Driver/Team Names Must Be Different !");
   	return;
   }
}   

if(sChamp_Type == "SPRINT"){
   alert(sChamp_Name + " - " + sChamp_Year + "\n\n" + "Performing Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + ". Please Wait");
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          alert(sChamp_Name + " - " + sChamp_Year + "\n\n" + "Performing Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackName[nCurrent_Round] + ". Please Wait");
       }else{
          alert(sChamp_Name + " - " + sChamp_Year + "\n\n" + "Performing Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + ". Please Wait");
       }
}else if(sChamp_Type == "CAR"){
       alert(sChamp_Name + " - " + sChamp_Year + "\n\n" + "Performing Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + ". Please Wait");
}

for (nLap = 1;nLap <= nRaceLaps;nLap++) {
//*************************************************

   sSaved_Driver = "";
   sSaved_TableHTML = "";

   Lap_Positions(nLap,false);

//*************************************************

   //Re-populate grid;
    for (z = 1;z <= nDriver_Records;z++) {

       if(TrimString(asDriver[z]) == TrimString(sSelectedDriver1)){
          nSelectedDriver = 1;
         }else if(TrimString(asDriver[z]) == TrimString(sSelectedDriver2)){
              nSelectedDriver = 2;
         }

       if(TrimString(asDriver[z]) == TrimString(sSelectedDriver1) || TrimString(asDriver[z]) == TrimString(sSelectedDriver2)){ 

          if(anLapTime[nLap][z] != 0){
             anGraphLapTime[nLap][nSelectedDriver] = anLapTime[nLap][z];
          }else{
             anGraphLapTime[nLap][nSelectedDriver] = 0;
          }

	  if (aGraphData[nLap][z].getPitLap() != "") {
             asGraphPitLap[nLap][nSelectedDriver] = aGraphData[nLap][z].getPitLap();
          } else {
             asGraphPitLap[nLap][nSelectedDriver] = "";
          }

          if(anLapTime[nLap][z] != 0){
             if(sChamp_Type == "SPRINT"){
                anGraphLapMPH[nLap][nSelectedDriver] = format_MPH(3600 / (((anLapTime[nLap][z] / anTrackLength[nCurrent_Round])*1000)*1.6093)) ;
             }else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
                    anGraphLapMPH[nLap][nSelectedDriver] = format_MPH(3600 / (((anLapTime[nLap][z] / anTrackLength[nCurrent_Round])*1000)*1.6093));
             }else if(sChamp_Type == "CAR"){
                    anGraphLapMPH[nLap][nSelectedDriver] = format_MPH(3600 / (((anLapTime[nLap][z] / anTrackLength[nCurrent_Round])*1000)*1.6093));
             }
          }else{
              anGraphLapMPH[nLap][nSelectedDriver] = 0;
          }

          anGraphTotalTime[nLap][nSelectedDriver] = anTotalTime[z];

          if(z == 1){
             anGraphDiff[nLap][nSelectedDriver] = 0;
          }else{
             anGraphDiff[nLap][nSelectedDriver] = TruncNum(anTotalTime[z]) - TruncNum(anTotalTime[1]);
          }

          if(anTotalTime[z] != 0){
             anGraphAvgLap[nLap][nSelectedDriver] = (anTotalTime[z]/anLapsCompleted[z]);
          }else{
             anGraphAvgLap[nLap][nSelectedDriver] = 0;
          }

          if(anTotalTime[z] != 0){
             if(sChamp_Type == "SPRINT"){
                anGraphAvgMPH[nLap][nSelectedDriver] = format_MPH(3600 / ((((anTotalTime[z]/anLapsCompleted[z]) / anTrackLength[nCurrent_Round])*1000)*1.6093));
             }else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
                    anGraphAvgMPH[nLap][nSelectedDriver] = format_MPH(3600 / ((((anTotalTime[z]/anLapsCompleted[z]) / anTrackLength[nCurrent_Round])*1000)*1.6093));
             }else if(sChamp_Type == "CAR"){
                    anGraphAvgMPH[nLap][nSelectedDriver] = format_MPH(3600 / ((((anTotalTime[z]/anLapsCompleted[z]) / anTrackLength[nCurrent_Round])*1000)*1.6093));
             }
          }else{
              anGraphAvgMPH[nLap][nSelectedDriver] = 0;
          }

          anGraphPos[nLap][nSelectedDriver] = z;
      }

   }
}

alert("Race Analysis Complete - Please Select Graph Settings");

nSelectedGraph = "Lap Times";
nSelectedInterval = 1;

sHTML2 = "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML2 += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML2 += "</TABLE><BR>";

sHTML2 += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       } ;
}else if(sChamp_Type == "CAR"){
        sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML2 += "</TABLE><BR>";

sHTML2 += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML2 += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML2 += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML2 += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML2 += "</TABLE><BR>";

if(bUseHTMLGraphs) {
	sHTML2 += "<TABLE class='SubjectTable' BORDER=1 ALIGN=CENTER WIDTH=600>";
	sHTML2 += "<TR><TD class='SubjectBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=600 COLSPAN=3>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + "</TD></TR>";
	sHTML2 += "</TABLE><BR>";
}	

if(bUseHTMLGraphs) {
	sHTML2 += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=600>";
} else {
	sHTML2 += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=400>";
}

sHTML2 += "<TR>";

sHTML2 += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=250>";

sHTML2 += " Select Graph Type : <SELECT ID='SelectGraph' onChange='Select_Graph()'>";

if(bUseHTMLGraphs) {
	sHTML2 += "<OPTION SELECTED>Lap Times";
	sHTML2 += "<OPTION> Lap Speed";
	sHTML2 += "<OPTION> Gap To Leader";
	sHTML2 += "<OPTION> Average Lap Time";
	sHTML2 += "<OPTION> Average Lap Speed";
	sHTML2 += "<OPTION> Race Position";
	sHTML2 += "<OPTION> Long Laps";
	sHTML2 += "</SELECT>";
	sHTML2 += "</TD>";
} else {
	sHTML2 += "<OPTION SELECTED>Lap Times";
	sHTML2 += "<OPTION> Lap Speed";
	sHTML2 += "<OPTION> Gap To Leader";
	//sHTML2 += "<OPTION> Average Lap Time";
	//sHTML2 += "<OPTION> Average Lap Speed";
	//sHTML2 += "<OPTION> Long Laps";
}

if(bUseHTMLGraphs) {
	sHTML2 += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=250>";

	sHTML2 += " Select Lap Interval for Graph : <SELECT ID='SelectInterval' onChange='Select_Interval()'>";

	for (nLoop=1;nLoop <= nRaceLaps;nLoop++) {
    		sHTML2 += "<OPTION>" + nLoop;
	}

	sHTML2 += "</SELECT>";
	sHTML2 += "</TD>";
}	

sHTML2 += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=LEFT WIDTH=100><INPUT TYPE='BUTTON' VALUE='Draw Graph' onClick='Draw_Graph()'></INPUT></TD>";

sHTML2 += "</TR>";
sHTML2 += "</TABLE></TD>";

document.getElementById("DivText2").innerHTML = sHTML + sHTML2;

}

//***********************************************************************************************

function Select_Graph(){

var nIndex;

nIndex = document.Form1.SelectGraph.selectedIndex;
nSelectedGraph = document.Form1.SelectGraph.options[nIndex].text;

}

//***********************************************************************************************

function Select_Interval(){

var nIndex;

nIndex = document.Form1.SelectInterval.selectedIndex;
nSelectedInterval = Number(document.Form1.SelectInterval.options[nIndex].text);

}

//***********************************************************************************************

function Draw_Graph(){

var sHTML3;

//START OF GRAPH HTML
sHTML3 = "<BR>";
sHTML3 += "<TABLE class='GraphTable' WIDTH=700 BORDER=0 BGCOLOR=#A8D3FF ALIGN=CENTER CELLSPACING=0 CELLPADDING=0>";

var nMaxValue1;
var nMaxValue2;

var nCount;
var nLap;
var sGraphType;
var nGrandTotal;
var nPos;
var anSavedReportPitLap = new Array(2);

sGraphType = nSelectedGraph;
nSelectedInterval = nSelectedInterval;

if(sGraphType == "Lap Times"){
   sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Lap Time</B></TD></TR>";
}

if(sGraphType == "Lap Speed"){
   sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Lap Speed (mph)</B></TD></TR>";
}

if(sGraphType == "Gap To Leader"){
      sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Gap To Leader</B></TD></TR>";
}

if(sGraphType == "Average Lap Time"){
   sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Average Lap Time</B></TD></TR>";
}

if(sGraphType == "Average Lap Speed"){
   sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Average Lap Speed (mph)</B></TD></TR>";
}

if(sGraphType == "Race Position"){
   sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Race Position</B></TD></TR>";
}

if(sGraphType == "Long Laps"){
   sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER><B>Comparison Between " + sSelectedDriver1 + " and " + sSelectedDriver2 + " - Long Laps</B></TD></TR>";
}

sHTML3 += "<TR><TD class='GraphBox' ><BR></TD></TR>";
sHTML3 += "<TR><TD class='GraphBox' WIDTH=700 ALIGN=CENTER>" + sSelectedDriver1 + " = <IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar1.png' WIDTH=10 HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp; &nbsp;" + sSelectedDriver2 + " = <IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar2.png' WIDTH=10 HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG></TD></TR>";
sHTML3 += "<TR><TD class='GraphBox'><BR><BR></TD></TR></TABLE>";

nMaxValue1 = 0;
nMaxValue2 = 0;

nGrandTotal = 0;

var nValue1;
var nValue2; 

nValue1 = 0;
nValue2 = 0; 

for (nLap = 1;nLap <= nRaceLaps;nLap++) {
    for (nDriver = 1;nDriver <= 2;nDriver++) {
        if(sGraphType == "Lap Times" || sGraphType == "Long Laps"){
           if(anGraphLapTime[nLap][nDriver] > nMaxValue1){
              nMaxValue1 = anGraphLapTime[nLap][nDriver];
           }           
        }

        if(sGraphType == "Lap Speed"){

           if(anGraphLapMPH[nLap][nDriver] > nMaxValue1){
              nMaxValue1 = anGraphLapMPH[nLap][nDriver];
           }           
        }

        if(sGraphType == "Gap To Leader"){

           nValue1 = anGraphDiff[nLap][nDriver];

           nValue2 = nMaxValue1;

           if(nValue1 > nValue2){
              nMaxValue1 = nValue1;
           }
        }

        if(sGraphType == "Average Lap Time"){
           if(anGraphAvgLap[nLap][nDriver] > nMaxValue1){
              nMaxValue1 = anGraphAvgLap[nLap][nDriver];
           }           
        }

        if(sGraphType == "Average Lap Speed"){
           if(anGraphAvgMPH[nLap][nDriver] > nMaxValue1){
              nMaxValue1 = anGraphAvgMPH[nLap][nDriver];
           }           
        }

        if(sGraphType == "Race Position"){
           if(anGraphPos[nLap][nDriver] > nMaxValue1){
              nMaxValue1 = anGraphPos[nLap][nDriver];
           }           
        }
    }
}

sHTML3 += "<TABLE class='GraphTable' WIDTH=700 BORDER=0 BGCOLOR=#A8D3FF ALIGN=CENTER CELLSPACING=0 CELLPADDING=0>";

sHTML3 += "<TR>";

sHTML3 += "<TD class='GraphBox' WIDTH=20 ALIGN=CENTER VALIGN=CENTER><IMG SRC='../images/LapNo.png' WIDTH=17 HEIGHT=86></IMG></TD>";
sHTML3 += "<TD class='GraphBox' WIDTH=680 ALIGN=CENTER><TABLE class='GraphTable' WIDTH=630 BORDER=0 BGCOLOR=#A8D3FF ALIGN=CENTER CELLSPACING=0 CELLPADDING=0>";

nCount = 0;

for (nLap = 1;nLap <= nRaceLaps;nLap++) {

    nCount++

    if(nLap == 1 || nCount == nSelectedInterval || sGraphType == "Long Laps"){

       for (nDriver = 1;nDriver <= 2;nDriver++) {
          sHTML3 += "<TR>";

          if(sGraphType == "Lap Times"){
             if(nDriver == 1){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=BOTTOM>";
             }else{
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=TOP>";
             }
             sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphLapTime[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + Seconds_To_Time(anGraphLapTime[nLap][nDriver]);

             if (asGraphPitLap[nLap][nDriver] != "") {
                 sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
             }
	     sHTML3 +="</TD>";
          }

          if(sGraphType == "Lap Speed"){
             if(nDriver == 1){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=BOTTOM>";
             }else{
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=TOP>";
             }
             sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphLapMPH[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + (anGraphLapMPH[nLap][nDriver]);

             if (asGraphPitLap[nLap][nDriver] != "") {
                 sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
             }
	     sHTML3 +="</TD>";
          }

          if(sGraphType == "Gap To Leader"){
             if(nDriver == 1){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=BOTTOM>";
             }else{
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=TOP>";
             }
             if(nMaxValue1 == 0){
                sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=0 HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>" + Seconds_To_Time(anGraphDiff[nLap][nDriver]);
             }else{
                sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphDiff[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + Seconds_To_Time(anGraphDiff[nLap][nDriver]);
             }

             if (asGraphPitLap[nLap][nDriver] != "") {
                 sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
             }
	     sHTML3 +="</TD>";
          }

          if(sGraphType == "Average Lap Time"){
             if(nDriver == 1){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=BOTTOM>";
             }else{
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=TOP>";
             }
             sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphAvgLap[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + Seconds_To_Time(anGraphAvgLap[nLap][nDriver]);

             if (asGraphPitLap[nLap][nDriver] != "") {
                 sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
             }
             sHTML3 +="</TD>";
          }

          if(sGraphType == "Average Lap Speed"){
             if(nDriver == 1){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=BOTTOM>";
             }else{
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=TOP>";
             }
             sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphAvgMPH[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + (anGraphAvgMPH[nLap][nDriver]);

             if (asGraphPitLap[nLap][nDriver] != "") {
                 sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
             }
	     sHTML3 +="</TD>";
          }

          if(sGraphType == "Race Position"){
             if(nDriver == 1){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=BOTTOM>";
             }else{
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT VALIGN=TOP>";
             }
             sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphPos[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + (anGraphPos[nLap][nDriver]);

             if (asGraphPitLap[nLap][nDriver] != "") {
                 sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
             }
	     sHTML3 +="</TD>";
          }

          if(sGraphType == "Long Laps"){
              if(anGraphLapTime[nLap][nDriver] > nAvgLap){
                sHTML3 += "<TD class='GraphBox' WIDTH=30 ALIGN=LEFT><B>" + nLap + "</B></TD><TD class='GraphBox' WIDTH=650 ALIGN=LEFT>";
                sHTML3 += "<IMG SRC='../images/Bar_Start.png' WIDTH=1 HEIGHT=20></IMG><IMG SRC='../images/Bar" + nDriver + ".png' WIDTH=" + (500/nMaxValue1)*(anGraphLapTime[nLap][nDriver]) + " HEIGHT=20></IMG><IMG SRC='../images/Bar_Shadow.png' WIDTH=2 HEIGHT=18></IMG>&nbsp; &nbsp;" + Seconds_To_Time(anGraphLapTime[nLap][nDriver]);
                if (asGraphPitLap[nLap][nDriver] != "" || asGraphPitLap[nLap-1][nDriver] != "" && anSavedReportPitLap[nDriver] != (nLap-1)) {
                   anSavedReportPitLap[nDriver] = nLap;
                   sHTML3 += "<IMG ALT='" + asGraphPitLap[nLap][nDriver] + " - " + Get_Indicator_Description(asGraphPitLap[nLap][nDriver],"1") + "' SRC='" + "../images/" + TrimString(asGraphPitLap[nLap][nDriver]) + ".png'>";
                }
                sHTML3 +="</TD>";
             } ;
          }

          sHTML3 += "</TR>";

       nCount = 0;
      }
   }
}

sHTML3 += "</TABLE></TD>";

sHTML3 += "</TR>";

sHTML3 += "<TR><TD class='GraphBox'><BR><BR></TD></TR></TABLE>";

sHTML3 += "</TABLE>";

if (bUseHTMLGraphs) {
	document.getElementById("DivText3").innerHTML = sHTML3;
} else {
	Java_Graph(sGraphType);
}

}


//***********************************************************************************
function Stint_Analysis(){

var X;
var nLap;
var sHTML;

Stop_Race();
clearTimeout(timerID);

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sSelectedDriver1 = asDriver[1];
sSelectedDriver2 = asDriver[1];

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=250>";

sHTML += " Select Entrant : <SELECT ID='SelectTeam1' onChange='Select_Team1()'>";

for (nLoop = 1;nLoop <= nDriver_Records;nLoop++) {

    if(asDriver[nLoop] == nSelectedTeam1){
       sHTML += "<OPTION SELECTED>" + TrimString(asDriver[nLoop]);
    }else{
       sHTML += "<OPTION>" + TrimString(asDriver[nLoop]);
    }
}

sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=LEFT WIDTH=100><INPUT TYPE='BUTTON' VALUE='Run Stint Analysis' onClick='Stint_Stats(" + "\"" + sSelectedDriver1 + "\"" + ")'></INPUT></TD>";

sHTML += "</TR>";
sHTML += "</TABLE></TD>";

nSwitch = 0;
sColour = "";

//document.all.DivText2.innerHTML = sHTML;
document.getElementById("DivText2").innerHTML = sHTML;

}

//***********************************************************************************
//***********************************************************************************
//***********************************************************************************
function Stint_Stats(sPassed_Driver){

var nLap;
var z;
var nGrandTotal;
var nPos;
var nSelectedDriver;

var nStintCount;
var nStintStartLap;
var nStintEndLap;
var nStintLaps;
var nStintTotalTime;
var nStintFastestLap;
var nSavedPitLap;
var nStintHighestPos = 0;
var nStintLowestPos = 0;
var sHTML2 = "";

nGrandTotal = 0;


if(sSelectedDriver1 == "" && sPassed_Driver != "") {
   sSelectedDriver1 = sPassed_Driver;
}

sPassed_Driver = " ";

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

//***********************************************************************************
// Start Of Changes 05/10/06
//***********************************************************************************

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='SubjectTable' WIDTH=500 BORDER=1 ALIGN=CENTER>";
sHTML += "<TR><TD class='SubjectBox' BGCOLOR='#E8F3FF' ALIGN=CENTER>Stint Analysis for Round " + nCurrent_Round + " - " + sSelectedDriver1 + "</TD></TR>";
sHTML += "</TABLE>";
sHTML += "<BR>";

//***********************************************************************************
// Photo
//***********************************************************************************

var sPhoto_File_Name = "";
var nPos = 0;
var sPhoto_Driver;

for (n = 1;n <= asDriver_Photo.length-1;n++) {

    nPos = asDriver_Photo[n].indexOf("||");

    if (nPos != -1) {
        sPhoto_Driver = asDriver_Photo[n].substring(0, nPos);
    } else {
	sPhoto_Driver = "?????";
    }

    if(sSelectedDriver1.substring(0, sPhoto_Driver.length).toUpperCase() == sPhoto_Driver.toUpperCase()){
       nPos = asDriver_Photo[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          sPhoto_File_Name = asDriver_Photo[n].substring(nPos,asDriver_Photo[n].length);
       } else {
             sPhoto_File_Name = "";
       }

       if(sPhoto_File_Name != ""){
          sHTML += "<TABLE BORDER='0' ALIGN='Center' BGCOLOR='#FFFFFF' CELLPADDING='1' CELLSPACING='3' WIDTH=250>";
          sHTML += "<TR>";
          sHTML += "<TD WIDTH=100%><CENTER><IMG ALT='" + sSelectedDriver1 + "' BORDER=1 SRC='" + sPhoto_File_Name + "' </CENTER></TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
	  sHTML += "<BR>";
       }
       n = asDriver_Photo.length+1;
    }
}

//***********************************************************************************
// Web Link
//***********************************************************************************

var sWebPage_Link = "";
var sTemp_WebPage_Link = "";

for (n = 1;n <= asDriver_WebPage.length-1;n++) {

    nPos = asDriver_WebPage[n].indexOf("||");

    if (nPos != -1) {
        sTemp_WebPage_Link = asDriver_WebPage[n].substring(0, nPos);
    } else {
	sTemp_WebPage_Link = "?????";
    }

    if(sSelectedDriver1.substring(0, sTemp_WebPage_Link.length).toUpperCase() == sTemp_WebPage_Link.toUpperCase()){
       nPos = asDriver_WebPage[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          sWebPage_Link = asDriver_WebPage[n].substring(nPos,asDriver_WebPage[n].length);
       } else {
             sWebPage_Link = "";
       }


       if(sWebPage_Link != ""){
          sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=400>";
          sHTML += "<TR><TD ALIGN=CENTER WIDTH=400><A HREF='" + sWebPage_Link + "' TARGET='_blank'><U>Click Here For Website</U></A></TD></TR>";
          sHTML += "</TABLE><BR>";
       }
       n = asDriver_WebPage.length+1;
    }
}

//***********************************************************************************
// Stint Table
//***********************************************************************************

sHTML += "<TABLE class='DetTable' BORDER='1' WIDTH=800 ALIGN=CENTER>";

sHTML += "<TR>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=30 VALIGN=TOP ALIGN=LEFT>'Stint'</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=70 VALIGN=TOP ALIGN=LEFT>Lap Range</TD>";

sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>No. Laps</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>'Stint' Time</TD>";

sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>'In Lap'</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>Avg Lap</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>Best Lap</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>Highest Position</TD>";
sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 VALIGN=TOP ALIGN=LEFT>Lowest Position</TD>";

sHTML += "</TR>";

nSwitch = 0;
sColour = "";

nStintCount = 0;
nStintStartLap = 1;
nStintTotalTime = 0;
nStintFastestLap = 0;
nStintLaps = 0;

nStintHighestPos = 0;
nStintLowestPos = 0;

for (nLap = 1;nLap <= nRaceLaps;nLap++) {

    for (m = 1; m <= nDriver_Records;m++) {
        if (TrimString(aGraphData[nLap][m].getEntrantName()) == TrimString(sSelectedDriver1)) {
            nMatchDriver = m;

            if (m < nStintHighestPos || nStintHighestPos == 0) {
		nStintHighestPos = m;
	    }

	    if (m > nStintLowestPos || nStintLowestPos == 0) {
		nStintLowestPos = m;
	    }

            m = nDriver_Records+1;
        }
    }


    if(aGraphData[nLap][nMatchDriver].getLaptime() != 0){
       nStintLaps++;
       nStintTotalTime += aGraphData[nLap][nMatchDriver].getLaptime();
    } 

    if((aGraphData[nLap][nMatchDriver].getLaptime() != 0 && aGraphData[nLap][nMatchDriver].getLaptime() < nStintFastestLap) || nStintFastestLap == 0){
       nStintFastestLap = aGraphData[nLap][nMatchDriver].getLaptime();
    }

    if(aGraphData[nLap][nMatchDriver].getLaptime() > nAvgLap || nLap == nRaceLaps || aGraphData[nLap][nMatchDriver].getStintChange() == "Y"){
       nStintCount++;
       nStintEndLap = nLap;

//*********************************************

       sHTML += "<TR>";

       if(nSwitch == 0){
          sColour = sColour1;
          nSwitch = 1;
       }else{
          sColour = sColour2;
          nSwitch = 0;
       }

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=30 VALIGN=TOP ALIGN=LEFT>" + nStintCount + "</TD>";

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=70 VALIGN=TOP ALIGN=LEFT>";
       sHTML += String(nStintStartLap) + " - " + String(nStintEndLap) + "</TD>";

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
       sHTML += String(nStintLaps) + "</TD>";

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
       sHTML += Seconds_To_Time(nStintTotalTime) + "</TD>";

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=80 VALIGN=TOP ALIGN=LEFT>";
       sHTML += Seconds_To_Time(aGraphData[nLap][nMatchDriver].getLaptime());

       var xLap = 0;
       var n = 0;
       var nMatchDriver = 0;
       var sPitInd1 = "";
       var sPitInd2 = "";

       for (xLap = (nLap-1);xLap <= nLap;xLap++) {
		for (n = 1; n <= nDriver_Records;n++) {
			if (TrimString(aGraphData[xLap][n].getEntrantName()) == TrimString(sSelectedDriver1)) {
				nMatchDriver = n;
				if(aGraphData[xLap][nMatchDriver].getPitLap() != "") {
					if(xLap == (nLap-1)) {
						sPitInd1 = aGraphData[xLap][nMatchDriver].getPitLap();
						n = (nDriver_Records+1);
					} else {
						sPitInd2 = aGraphData[xLap][nMatchDriver].getPitLap();
						n = (nDriver_Records+1);
					}
				}
			}
		}
	}

	if (sPitInd2 != "" || sPitInd1 != "") {
		if (nStintLaps == 1) {
			if (nSavedPitLap != (nLap-1)) {
			   if (sPitInd1 != "") {
				sHTML += "<IMG ALT='" + sPitInd1 + " - " + Get_Indicator_Description(sPitInd1,"1") + "' SRC='" + "../images/" + TrimString(sPitInd1) + ".png'>";
                           } else {
                                sHTML += "<IMG ALT='" + sPitInd2 + " - " + Get_Indicator_Description(sPitInd2,"1") + "' SRC='" + "../images/" + TrimString(sPitInd2) + ".png'>";
                           } 
			}
			nSavedPitLap = nLap;
	        } else {
		   if (sPitInd2 != "") {
             		sHTML += "<IMG ALT='" + sPitInd2 + " - " + Get_Indicator_Description(sPitInd2,"1") + "' SRC='" + "../images/" + TrimString(sPitInd2) + ".png'>";
                   } else {
                        sHTML += "<IMG ALT='" + sPitInd1 + " - " + Get_Indicator_Description(sPitInd1,"1") + "' SRC='" + "../images/" + TrimString(sPitInd1) + ".png'>";
                   }
          }
       }

 
       sHTML += "</TD>";

       if(nStintLaps != 0){
          sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
          sHTML += Seconds_To_Time(nStintTotalTime / nStintLaps) + "</TD>";
       }else{
          sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
          sHTML += "0</TD>";
       }

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
       sHTML += Seconds_To_Time(nStintFastestLap) + "</TD>";


       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
       sHTML += nStintHighestPos + "</TD>";

       sHTML += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 VALIGN=TOP ALIGN=LEFT>";
       sHTML += nStintLowestPos + "</TD>";

       sSaved_TableHTML = sHTML;

//****************************************************************

       nStintStartLap = (nLap+1);
       nStintTotalTime = 0;
       nStintFastestLap = 0;
       nStintLaps = 0;

       nStintHighestPos = 0;
       nStintLowestPos = 0;
    } 

}

//***********************************************************************************
// Consistency Table
//***********************************************************************************


sHTML = sSaved_TableHTML;

sHTML += "</TR>";
sHTML += "</TABLE>";

var sConsistency_String = "";
var nConsistency_Match = 0;

for (n = 1;n <= asConsistency.length-1;n++) {

    nPos = asConsistency[n].indexOf("|");

    if (nPos != -1) {
        sConsistency_String = asConsistency[n].substring(0, nPos);
    } else {
	sConsistency_String = "?????";
    }

    if(sSelectedDriver1.substring(0, sConsistency_String.length).toUpperCase() == sConsistency_String.toUpperCase()){
       sConsistency_String = asConsistency[n];
       nConsistency_Match = n
       n = asConsistency.length+1;
    } else {
       sConsistency_String = "";
    }
}

if(sConsistency_String != "") {
   var nField = -1;
   var sField = new Array();
   var n = 0;
   var sChar = "";
   var sTempField = "";

   while (n < sConsistency_String.length) {

      sTempField = "";

      sChar = sConsistency_String.substring(n, n+1);

      while (n < sConsistency_String.length && sChar != "|") {
            sTempField += sChar;
            n++;
            if (n < sConsistency_String.length) {
               sChar = sConsistency_String.substring(n, n+1);
            } 
      }

      nField++;

      sField[nField] = sTempField;

      sChar = sConsistency_String.substring(n, n+1);

      while (n < sConsistency_String.length && sChar == "|") {
            n++;
            if (n < sConsistency_String.length) {
               sChar = sConsistency_String.substring(n, n+1);
            }
      }
   }

   sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=500 BORDER=1 ALIGN=CENTER>";
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Consistency Analysis for Round " + nCurrent_Round + " - " + sSelectedDriver1 + "</TD></TR>";
   sHTML += "</TABLE>";
   sHTML += "<BR>";

   sHTML += "<TABLE class='DetTable' BORDER='1' ALIGN='Center' BGCOLOR='#FFFFFF' WIDTH=900>";
   sHTML += "<TR>"

   sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=CENTER>Position</TD>";
   sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=CENTER>Fastest Lap</TD>";
   sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=LEFT>Slowest Lap</TD>";
   sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=LEFT>Average Lap</TD>";
//
   var bConsistencyLaps = false;

   if (sField.length < 13) {
       bConsistencyLaps = false;
   } else {
       bConsistencyLaps = true;
   }

   if (bConsistencyLaps == true) {
   	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=400 ALIGN=CENTER COLSPAN=5>Best 5 Most Consistent Laps</TD>";
	sHTML += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=LEFT>Lap Range</TD>";
   }
//
   sHTML += "</TR>"

   sHTML += "<TR>"
   sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=100 ALIGN=CENTER>" + nConsistency_Match + " of " + (asConsistency.length-1) + "</TD>";
   sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=100 ALIGN=CENTER>" + Seconds_To_Time(sField[2]) + "</TD>";
   sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=100 ALIGN=CENTER>" + Seconds_To_Time(sField[3]) + "</TD>";
   sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=100 ALIGN=CENTER>" + Seconds_To_Time(sField[4]) + "</TD>";
//
   if (bConsistencyLaps == true) {
        sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[8]) + "</TD>";
        sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[9]) + "</TD>";
        sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[10]) + "</TD>";
        sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[11]) + "</TD>";
        sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[12]) + "</TD>";
        sHTML += "<TD class='DetBox1' BGCOLOR='" + sColour1 + "' WIDTH=100 ALIGN=CENTER>" + sField[7] + "</TD>";
   }
//
   sHTML += "</TR>"

   sHTML += "</TABLE>";
}

//Position/Change Summary

sHTML2 = "";
sHTML2 += "<BR><BR><TABLE class='HeadTable2' WIDTH=500 BORDER=1 ALIGN=CENTER>";
sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Position Change Summary for Round " + nCurrent_Round + " - " + sSelectedDriver1 + "</TD></TR>";
sHTML2 += "</TABLE>";
sHTML2 += "<BR>";

sHTML2 += "<TABLE class='DetTable' BORDER='1' WIDTH=820 ALIGN=CENTER>";

sHTML2 += "<TR>";
sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=30 VALIGN=TOP ALIGN=LEFT>Lap</TD>";
sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=30 VALIGN=TOP ALIGN=LEFT>Pos</TD>";
sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=60 VALIGN=TOP ALIGN=LEFT>Lap Gain</TD>";
sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 VALIGN=TOP ALIGN=CENTER>Lap Time</TD>";
sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=600 VALIGN=TOP ALIGN=CENTER>Notes</TD>";
sHTML2 += "</TR>";

nSwitch = 0;
sColour = "";

var bPositionChanges = false;

for(nLap = 1;nLap <= nRaceLaps;nLap++) {
        if((nLap-1) == 0 && bNoGridTimes) {
	   Summary_Driver_Position(nLap,sSelectedDriver1);
	   var pos1 = nSummaryPos;
	   var pos2 = nSummaryPos;
        } else {
	   Summary_Driver_Position(nLap-1,sSelectedDriver1);
	   var pos1 = nSummaryPos;

	   Summary_Driver_Position(nLap,sSelectedDriver1);
	   var pos2 = nSummaryPos;
        } 
	
	if(pos1 != pos2) {
		bPositionChanges = true;
		var sGain = pos2-pos1;
	
		if (sGain < 0)  {
	          	sGain = sGain * -1;
	        }
	        
	         if(nSwitch == 0){
		       sColour = sColour1;
		       nSwitch = 1;
		    }else{
		       sColour = sColour2;
		       nSwitch = 0;
    		}
	        
	        sHTML2 += "<TR>";
		sHTML2 += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=30 VALIGN=TOP ALIGN=LEFT><A onclick='nSelectedLap=" + nLap + ";Race_Table();'><U>" + nLap + "</U></A></TD>";
		sHTML2 += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=30 VALIGN=TOP ALIGN=LEFT>" + pos2 + "</TD>";
        
	        if((pos2 - pos1) < 0){
			sHTML2 += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=60 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Gained' SRC='../images/UP_RED.gif' WIDTH=16 HEIGHT=16>" + sGain + "</TD>";
		}else if((pos2 - pos1) > 0){
			sHTML2 += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=60 VALIGN=TOP ALIGN=LEFT><IMG ALT='Position Lost' SRC='../images/DOWN_RED.gif' WIDTH=16 HEIGHT=16>" + sGain + "</TD>";
       		}
       		
		sHTML2 += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=100 VALIGN=TOP ALIGN=LEFT>" + Seconds_To_Time(nSummaryLapTime) + "</TD>";
		sHTML2 += "<TD class='DetBox' BGCOLOR='" + sColour + "' WIDTH=600 VALIGN=TOP ALIGN=LEFT>" + Get_Notes(sSelectedDriver1,pos1,(nLap-1),pos2,nLap) + "</TD>";       		
		sHTML2 += "</TR>";
       	}
}       	


sHTML2 += "</TABLE>";

if (bPositionChanges) {
	sHTML += sHTML2;
}	

//***********************************************************************************
// Supplementary Season Table
//***********************************************************************************

var bHeaderNotWritten = true;
var nTempDriverPoles = 0;
var nTempDriverFastestLaps = 0;
var nTempDriverWins = 0;
var nTempBestFinish = 0;
var nTempGridPos = 0;

for (n = 1;n <= asDriver_BestFinish.length-1;n++) {

    nPos = asDriver_BestFinish[n].indexOf("||");

    if (nPos != -1) {
        nTempBestFinish = asDriver_BestFinish[n].substring(0, nPos);
    } else {
	nTempBestFinish = "?????";
    }

    if(sSelectedDriver1.substring(0, nTempBestFinish.length).toUpperCase() == nTempBestFinish.toUpperCase()){
       nPos = asDriver_BestFinish[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          nTempBestFinish = asDriver_BestFinish[n].substring(nPos,asDriver_BestFinish[n].length);
       } else {
             nTempBestFinish = "";
       }


       if(nTempBestFinish != 0){
          if(bHeaderNotWritten == true) {
             sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=400 BORDER=1 ALIGN=CENTER>";
             sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Supplementary Information : Season - " + sChamp_Year + "</TD></TR>";
             sHTML += "</TABLE>";
             sHTML += "<BR>";

             sHTML += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
             bHeaderNotWritten = false;
          }

          sHTML += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Finish</TD>";
          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF'>";
          sHTML += "<TABLE BORDER=0 ALIGN=LEFT>";
          sHTML += "<TR>";

          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#E8F3FF' WIDTH=230 ALIGN=LEFT>" + nTempBestFinish + "</TD>";

          sHTML += "</TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
          sHTML += "</TD>";
          sHTML += "</TR>";
       }
       n = asDriver_BestFinish.length+1;
    }
}


for (n = 1;n <= anDriverWinTimes.length-1;n++) {

    nPos = anDriverWinTimes[n].indexOf("||");

    if (nPos != -1) {
        nTempDriverWins = anDriverWinTimes[n].substring(0, nPos);
    } else {
	nTempDriverWins = "?????";
    }

    if(sSelectedDriver1.substring(0, nTempDriverWins.length).toUpperCase() == nTempDriverWins.toUpperCase()){
       nPos = anDriverWinTimes[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          nTempDriverWins = anDriverWinTimes[n].substring(nPos,anDriverWinTimes[n].length);
       } else {
             nTempDriverWins = "";
       }


       if(nTempDriverWins != 0){
          if(bHeaderNotWritten == true) {
             sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=400 BORDER=1 ALIGN=CENTER>";
             sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Supplementary Information : Season - " + sChamp_Year + "</TD></TR>";
             sHTML += "</TABLE>";
             sHTML += "<BR>";

             sHTML += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
             bHeaderNotWritten = false;
          }

          sHTML += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Wins</TD>";
          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF'>";
          sHTML += "<TABLE BORDER=0 ALIGN=LEFT>";
          sHTML += "<TR>";

          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#E8F3FF' WIDTH=230 ALIGN=LEFT>" + nTempDriverWins + "</TD>";

          sHTML += "</TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
          sHTML += "</TD>";
          sHTML += "</TR>";
       }
       n = anDriverWinTimes.length+1;
    }
}

for (n = 1;n <= anDriverPoles.length-1;n++) {

    nPos = anDriverPoles[n].indexOf("||");

    if (nPos != -1) {
        nTempDriverPoles = anDriverPoles[n].substring(0, nPos);
    } else {
	nTempDriverPoles = "?????";
    }

    if(sSelectedDriver1.substring(0, nTempDriverPoles.length).toUpperCase() == nTempDriverPoles.toUpperCase()){
       nPos = anDriverPoles[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          nTempDriverPoles = anDriverPoles[n].substring(nPos,anDriverPoles[n].length);
       } else {
             nTempDriverPoles = "";
       }


       if(nTempDriverPoles != 0){
          if(bHeaderNotWritten == true) {
             sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=400 BORDER=1 ALIGN=CENTER>";
             sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Supplementary Information : Season - " + sChamp_Year + "</TD></TR>";
             sHTML += "</TABLE>";
             sHTML += "<BR>";

             sHTML += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
             bHeaderNotWritten = false;
          }

          sHTML += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Pole Positions</TD>";
          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF'>";
          sHTML += "<TABLE BORDER=0 ALIGN=LEFT>";
          sHTML += "<TR>";

          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF' WIDTH=230 ALIGN=LEFT>" + nTempDriverPoles + "</TD>";

          sHTML += "</TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
          sHTML += "</TD>";
          sHTML += "</TR>";
       }
       n = anDriverPoles.length+1;
    }
}

for (n = 1;n <= anDriverFastestLaps.length-1;n++) {

    nPos = anDriverFastestLaps[n].indexOf("||");

    if (nPos != -1) {
        nTempDriverFastestLaps = anDriverFastestLaps[n].substring(0, nPos);
    } else {
	nTempDriverFastestLaps = "?????";
    }

    if(sSelectedDriver1.substring(0, nTempDriverFastestLaps.length).toUpperCase() == nTempDriverFastestLaps.toUpperCase()){
       nPos = anDriverFastestLaps[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          nTempDriverFastestLaps = anDriverFastestLaps[n].substring(nPos,anDriverFastestLaps[n].length);
       } else {
             nTempDriverFastestLaps = "";
       }


       if(nTempDriverFastestLaps != 0){
          if(bHeaderNotWritten == true) {
             sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=400 BORDER=1 ALIGN=CENTER>";
             sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Supplementary Information : Season - " + sChamp_Year + "</TD></TR>";
             sHTML += "</TABLE>";
             sHTML += "<BR>";

             sHTML += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
             bHeaderNotWritten = false;
          }

          sHTML += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Fastest Laps</TD>";
          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF'>";
          sHTML += "<TABLE BORDER=0 ALIGN=LEFT>";
          sHTML += "<TR>";

          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#E8F3FF' WIDTH=230 ALIGN=LEFT>" + nTempDriverFastestLaps + "</TD>";

          sHTML += "</TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
          sHTML += "</TD>";
          sHTML += "</TR>";
       }
       n = anDriverFastestLaps.length+1;
    }
}

//12/05/08 - Race Leads

var nTempRaceLeads = 0;
var nTempLapsLead = 0;

for (n = 1;n <= asDriverRaceLeader.length-1;n++) {

    nPos = asDriverRaceLeader[n].indexOf("||");

    if (nPos != -1) {
        nTempRaceLeads = asDriverRaceLeader[n].substring(0, nPos);
    } else {
	nTempRaceLeads = "?????";
    }

    if(sSelectedDriver1.substring(0, nTempRaceLeads.length).toUpperCase() == nTempRaceLeads.toUpperCase()){
       nPos = asDriverRaceLeader[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          nTempRaceLeads = asDriverRaceLeader[n].substring(nPos,asDriverRaceLeader[n].length);
       } else {
             nTempRaceLeads = "";
       }

       nPos = nTempRaceLeads.indexOf("||");

       if (nPos != -1) {
           nTempLapsLead = nTempRaceLeads;
           nTempRaceLeads = nTempRaceLeads.substring(0, nPos);
           nPos = nPos + 2
           nTempLapsLead = nTempLapsLead.substring(nPos,nTempLapsLead.length);
       }

       if(nTempRaceLeads != 0){
          if(bHeaderNotWritten == true) {
             sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=400 BORDER=1 ALIGN=CENTER>";
             sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Supplementary Information : Season - " + sChamp_Year + "</TD></TR>";
             sHTML += "</TABLE>";
             sHTML += "<BR>";

             sHTML += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
             bHeaderNotWritten = false;
          }

          sHTML += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>No. Races Led/No. Laps</TD>";
          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF'>";
          sHTML += "<TABLE BORDER=0 ALIGN=LEFT>";
          sHTML += "<TR>";

          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#E8F3FF' WIDTH=230 ALIGN=LEFT>" + nTempRaceLeads + " / " + nTempLapsLead + "</TD>";

          sHTML += "</TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
          sHTML += "</TD>";
          sHTML += "</TR>";
       }
       n = asDriverRaceLeader.length+1;
    }
}

//03/05/08 - Average Grid Positions

for (n = 1;n <= asDriver_AvgGridPos.length-1;n++) {

    nPos = asDriver_AvgGridPos[n].indexOf("||");

    if (nPos != -1) {
        nTempGridPos = asDriver_AvgGridPos[n].substring(0, nPos);
    } else {
	nTempGridPos = "?????";
    }

    if(sSelectedDriver1.substring(0, nTempGridPos.length).toUpperCase() == nTempGridPos.toUpperCase()){
       nPos = asDriver_AvgGridPos[n].indexOf("||");

       if (nPos != -1) {
          nPos = nPos + 2
          nTempGridPos = asDriver_AvgGridPos[n].substring(nPos,asDriver_AvgGridPos[n].length);
       } else {
             nTempGridPos = "";
       }


       if(nTempGridPos != 0){
          if(bHeaderNotWritten == true) {
             sHTML += "<BR><BR><TABLE class='HeadTable2' WIDTH=400 BORDER=1 ALIGN=CENTER>";
             sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Supplementary Information : Season - " + sChamp_Year + "</TD></TR>";
             sHTML += "</TABLE>";
             sHTML += "<BR>";

             sHTML += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
             bHeaderNotWritten = false;
          }

          sHTML += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Average Grid Position</TD>";
          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#D2E8FF'>";
          sHTML += "<TABLE BORDER=0 ALIGN=LEFT>";
          sHTML += "<TR>";

          sHTML += "<TD class='StatsDetBox1' BGCOLOR='#E8F3FF' WIDTH=230 ALIGN=LEFT>" + nTempGridPos + "</TD>";

          sHTML += "</TD>";
          sHTML += "</TR>";
          sHTML += "</TABLE>";
          sHTML += "</TD>";
          sHTML += "</TR>";
       }
       n = asDriver_AvgGridPos.length+1;
    }
}


if(bHeaderNotWritten = false) {
   sHTML += "</TABLE>";
}

//***********************************************************************************
// End Of Changes 05/10/06
//***********************************************************************************

document.getElementById("DivText2").innerHTML = sHTML;

sSelectedDriver1 = "";

}

//*******************************************************

function Summary_Driver_Position(nPassed_Lap,sPassed_Driver){

var n = 0;

for (n = 1; n <= nDriver_Records; n++) {
    if(aGraphData[nPassed_Lap][n].getEntrantName() == sPassed_Driver) {
       nSummaryPos = n;
       nSummaryLapTime = aGraphData[nPassed_Lap][n].getLaptime();
       break;
    }
} 

}

//*******************************************************

function Get_Notes(sPassed_Driver,nPos1,nLap1,nPos2,nLap2) {

var asNotesDriver1 = new Array(nDriver_Records+1);
var asNotesDriver2 = new Array(nDriver_Records+1);
var asNotesDriver3 = new Array(nDriver_Records+1);
var sNotesTextInit = "";
var sNotesText = "";

if(nPos1 < nPos2) {
	//ie. Lap_1 Position = 3 & Lap_2 Position = 4 ie. You have LOST a position
	//Get all Drivers from Lap_1 Who were BEHIND you to find out who passed you !!
	sNotesTextInit = "Passed By ";
	
	var sub = 0;
	for (n = nPos1+1; n <= nDriver_Records; n++) {
	    sub++;
	    asNotesDriver1[sub] = aGraphData[nLap1][n].getEntrantName();
	} 
	var sub = 0;
	for (n = nPos2+1; n <= nDriver_Records; n++) {
	    sub++;
	    asNotesDriver2[sub] = aGraphData[nLap2][n].getEntrantName();
	}
} else {
	if(nPos1 > nPos2) {
		//ie. Lap_1 Position = 4 & Lap_2 Position = 3 ie. You have GAINED a position
		//Get all Drivers from Lap_1 Who were LEADING you to find out who YOU have passed !!
		sNotesTextInit = "Overtook ";
		var sub = 0;
		for (n = nPos1-1; n >= 1; n--) {
		    sub++;
	    	    asNotesDriver1[sub] = aGraphData[nLap1][n].getEntrantName();
		} 		
		
		var sub = 0;
		for (n = nPos2-1; n >= 1; n--) {
		    sub++;
		    asNotesDriver2[sub] = aGraphData[nLap2][n].getEntrantName();
		}
		
	}
	
}	

//Now find out which driver's list 1 drivers ARE NOT in driver's list 2 and add to driver's list 3 !!
sub = 0;
for (n = 1;n <= asNotesDriver1.length; n++) {
	var bFound = false
	
	for (m = 1;m <= asNotesDriver2.length+1; m++) {
		if(asNotesDriver1[n] == asNotesDriver2[m]) {
			bFound = true;
			break;
		}
	}
				
	if(!bFound) {
		sub++;
    		asNotesDriver3[sub] = asNotesDriver1[n];
    		
    		if(sub <= 1) {
    		   sNotesText += sNotesTextInit;
    		} else {
    		   sNotesText += ", "
    		}  

    		if(sub <= 3) {    		
    			sNotesText += asNotesDriver3[sub];
    		}	
    		
    		if(sub > 3) {
			sNotesText += " etc";
			break;
    		}	
    	}	
}	

if (sNotesText != "") {
	return sNotesText;
} else {
	return "";
}

}

//*********************************************************************************

function Race_Stats(){

Stop_Race();
clearTimeout(timerID);

document.getElementById("DivText3").innerHTML = "<P></P>";

sHTML2 = "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML2 += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML2 += "</TABLE><BR>";

sHTML2 += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Statistics for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Statistics for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML2 += "<TR><TD  class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Statistics for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML2 += "<TR><TD  class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Statistics for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML2 += "</TABLE><BR>";

sHTML2 += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML2 += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML2 += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML2 += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML2 += "</TABLE><BR>";

//******************************************************************

sHTML2 += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=700>";

sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Most Laps Driven</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'>" + nRaceLaps + "&nbsp;(" + TruncNum((((nRaceLaps * anTrackLength[nCurrent_Round])/1000)/8)*5)  + "&nbsp;miles)</TD></TR>";

if(bNoGridTimes == false){
   if(nBestGain < 0){
      nBestGain = nBestGain * -1;
   }

   if(nBestGain == 1){
      sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Gained Positions</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sBestGainDriver + "</B>&nbsp;(+" + nBestGain  + "&nbsp; place) - Grid " + nBestGainGrid + " to " + nBestGainFinish + "</TD></TR>";
   }else{
      sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Gained Positions</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sBestGainDriver + "</B>&nbsp;(+" + nBestGain  + "&nbsp; places) - Grid " + nBestGainGrid + " to " + nBestGainFinish + "</TD></TR>";
   }

   if(sBestGainDriver2 != "") {
      if(nBestGain2 < 0){
         nBestGain2 = nBestGain2 * -1;
      }

      if(nBestGain2 == 1){
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Gained Positions 2</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sBestGainDriver2 + "</B>&nbsp;(+" + nBestGain2  + "&nbsp; place) - Grid " + nBestGainGrid2 + " to " + nBestGainFinish2 + "</TD></TR>";
      }else{
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Gained Positions 2</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sBestGainDriver2 + "</B>&nbsp;(+" + nBestGain2  + "&nbsp; places) - Grid " + nBestGainGrid2 + " to " + nBestGainFinish2 + "</TD></TR>";
      }
   }

   if(sBestGainDriver3 != "") {
      if(nBestGain3 < 0){
         nBestGain3 = nBestGain3 * -1;
      }

      if(nBestGain3 == 1){
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Gained Positions 3</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sBestGainDriver3 + "</B>&nbsp;(+" + nBestGain3  + "&nbsp; place) - Grid " + nBestGainGrid3 + " to " + nBestGainFinish3 + "</TD></TR>";
      }else{
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Best Gained Positions 3</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sBestGainDriver3 + "</B>&nbsp;(+" + nBestGain3  + "&nbsp; places) - Grid " + nBestGainGrid3 + " to " + nBestGainFinish3 + "</TD></TR>";
      }
   }


   if(nWorstDrop < 0){
      nWorstDrop = nWorstDrop * -1;
   }

   if(nWorstDrop == 1){
      sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Worst Lost Positions</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sWorstDropDriver + "</B>&nbsp;(-" + nWorstDrop  + "&nbsp; place) - Grid " + nWorstDropGrid + " to " + nWorstDropFinish + "</TD></TR>";
   }else{
      sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Worst Lost Positions</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sWorstDropDriver + "</B>&nbsp;(-" + nWorstDrop  + "&nbsp; places) - Grid " + nWorstDropGrid + " to " + nWorstDropFinish + "</TD></TR>";
   }


   if(sWorstDropDriver2 != "") {
      if(nWorstDrop2 < 0){
         nWorstDrop2 = nWorstDrop2 * -1;
      }

      if(nWorstDrop2 == 1){
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Worst Lost Positions 2</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sWorstDropDriver2 + "</B>&nbsp;(-" + nWorstDrop2  + "&nbsp; place) - Grid " + nWorstDropGrid2 + " to " + nWorstDropFinish2 + "</TD></TR>";
      }else{
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Worst Lost Positions 2</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sWorstDropDriver2 + "</B>&nbsp;(-" + nWorstDrop2  + "&nbsp; places) - Grid " + nWorstDropGrid2 + " to " + nWorstDropFinish2 + "</TD></TR>";
      }
   }

   if(sWorstDropDriver3 != "") {
      if(nWorstDrop3 < 0){
         nWorstDrop3 = nWorstDrop3 * -1;
      }

     
      if(nWorstDrop3 == 1){
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Worst Lost Positions 3</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sWorstDropDriver3 + "</B>&nbsp;(-" + nWorstDrop3  + "&nbsp; place) - Grid " + nWorstDropGrid3 + " to " + nWorstDropFinish3 + "</TD></TR>";
      }else{
         sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Worst Lost Positions 3</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sWorstDropDriver3 + "</B>&nbsp;(-" + nWorstDrop3  + "&nbsp; places) - Grid " + nWorstDropGrid3 + " to " + nWorstDropFinish3 + "</TD></TR>";
      }
   }
}

if(sMostActiveDriver != null && sMostActiveDriver != "") {
	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Most Active Driver</TD><TD class='StatsDetBox2' BGCOLOR='#D2E8FF'><B>" + sMostActiveDriver + "</B> (" + nMostActiveDriverMoves + " Position Changes)</TD></TR>";
}

if(nTotalOvertakes != null) {
	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Total Overtaking Moves</TD><TD class='StatsDetBox2' BGCOLOR='#D2E8FF'>" + nTotalOvertakes + "</TD></TR>";
}


sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Fastest Best Lap</TD><TD class='StatsDetBox2' BGCOLOR='#D2E8FF'><B>" + sFastestDriver + "</B> - " + Seconds_To_Time(nFastestLap) + "&nbsp;(" + format_MPH(3600 / (((nFastestLap / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "mph) On Lap " + nFastestLapOn + (bIs_Fastest_Lap_Record ? "<B> (LAP RECORD)</B>" : "") + "</TD></TR>";

sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Slowest Best Lap</TD><TD class='StatsDetBox1' BGCOLOR='#D2E8FF'><B>" + sSlowestDriver + "</B> - " + Seconds_To_Time(nSlowestLap) + "&nbsp;(" + format_MPH(3600 / (((nSlowestLap / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "mph)</TD></TR>";

sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Fastest Average Lap</TD><TD class='StatsDetBox2' BGCOLOR='#D2E8FF'><B>" + sFastestAverageLapDriver + "</B> - " + Seconds_To_Time(nFastestAverageLap) + "&nbsp;(" + format_MPH(3600 / (((nFastestAverageLap / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "mph)</TD></TR>";

sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Slowest Average Lap</TD><TD class='StatsDetBox1' BGCOLOR='#D2E8FF'><B>" + sSlowestAverageLapDriver + "</B> - " + Seconds_To_Time(nSlowestAverageLap) + "&nbsp;(" + format_MPH(3600 / (((nSlowestAverageLap / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "mph)</TD></TR>";

sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Race Average Lap</TD><TD class='StatsDetBox2' BGCOLOR='#D2E8FF'>" + Seconds_To_Time(nRaceAverageLap) + "&nbsp;(" + format_MPH(3600 / (((nRaceAverageLap / anTrackLength[nCurrent_Round])*1000)*1.6093)) + "mph)</TD></TR>";

sHTML2 += "</TABLE><BR><BR>";

//*******************************

if(bMulti_Class_Race) {

	sHTML2 += "<TABLE class='StatsLeadersTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
	sHTML2 += "<TR><TD class='StatsLeadersBox' BGCOLOR='#A8D3FF' ALIGN=CENTER>Class Details</TD></TR>";
	sHTML2 += "</TABLE><BR>";

	sHTML2 += "<TABLE class='StatsTable' BORDER=1 ALIGN=CENTER WIDTH=700>";
      	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Class 1st Position</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sClass_Podium_1st + "</B></TD></TR>";
      	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Class 2nd Position</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sClass_Podium_2nd + "</B></TD></TR>";
      	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Class 3rd Position</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sClass_Podium_3rd + "</B></TD></TR>";
      	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Class Fastest Lap</TD><TD class='StatsDetBox2' BGCOLOR='#E8F3FF'><B>" + sClass_Fastest_Lap + "</B></TD></TR>";
	sHTML2 += "<TR><TD class='StatsCatBox' BGCOLOR='#A8D3FF'>Class Pole Position</TD><TD class='StatsDetBox1' BGCOLOR='#E8F3FF'><B>" + sClass_Pole_Position + "</B></TD></TR>";

	sHTML2 += "</TABLE><BR><BR>";
}

//*******************************

sHTML2 += "<TABLE class='StatsLeadersTable' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML2 += "<TR><TD class='StatsLeadersBox' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Leaders</TD></TR>";
sHTML2 += "</TABLE><BR>";

nSwitch = 0;
sColour = "";

sHTML2 += "<TABLE class='StatsLeadersTable' BORDER=1 ALIGN=CENTER WIDTH=400>";

for (z = 1;z <= asStatsDriver.length-1;z++) {
    if(anStatsLeaderLaps[z] > 0){
       if(nSwitch == 0){
          sColour = sColour1;
          nSwitch = 1;
       }else{
          sColour = sColour2;
          nSwitch = 0;
       }

       if(anStatsLeaderLaps[z] == 1){
          sHTML2 += "<TR><TD class='LeaderBox" + nSwitch + "' BGCOLOR='" + sColour + "' ALIGN=CENTER>" + asStatsDriver[z] + " - " + anStatsLeaderLaps[z] + " Lap (" + parseInt((anStatsLeaderLaps[z]/nRaceLaps)*100) + "%)</TD></TR>";
       }else{
          sHTML2 += "<TR><TD class='LeaderBox" + nSwitch + "' BGCOLOR='" + sColour + "' ALIGN=CENTER>" + asStatsDriver[z] + " - " + anStatsLeaderLaps[z] + " Laps (" + parseInt((anStatsLeaderLaps[z]/nRaceLaps)*100) + "%)</TD></TR>";
       }
    }
}

sHTML2 += "</TABLE><BR>";

//***********************************************************************************
// Consistency Table
//***********************************************************************************

var sConsistency_String = "";
var nLoop = 0;
var bTableWritten = false;

nSwitch = 0;

for (nLoop = 1;nLoop <= asConsistency.length-1;nLoop++) {

    sConsistency_String = asConsistency[nLoop];

    var nField = -1;
    var sField = new Array();
    var n = 0;
    var sChar = "";
    var sTempField = "";

    while (n < sConsistency_String.length) {

       sTempField = "";

       sChar = sConsistency_String.substring(n, n+1);

       while (n < sConsistency_String.length && sChar != "|") {
             sTempField += sChar;
             n++;
             if (n < sConsistency_String.length) {
                sChar = sConsistency_String.substring(n, n+1);
             } 
       }

       nField++;

       sField[nField] = sTempField;
    
       sChar = sConsistency_String.substring(n, n+1);

       while (n < sConsistency_String.length && sChar == "|") {
             n++;
             if (n < sConsistency_String.length) {
                sChar = sConsistency_String.substring(n, n+1);
             }
       }
    }

    if (nLoop == 1) {
       bTableWritten = true;
       sHTML2 += "<BR><TABLE class='HeadTable2' WIDTH=500 BORDER=1 ALIGN=CENTER>";
       sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>Consistency Table for Round " + nCurrent_Round + "</TD></TR>";
       sHTML2 += "</TABLE>";
       sHTML2 += "<BR>";

       sHTML2 += "<TABLE class='DetTable' BORDER='1' ALIGN='Center' BGCOLOR='#FFFFFF' WIDTH=900>";
       sHTML2 += "<TR>";

       sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 ALIGN=CENTER>Pos</TD>";
       sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=50 ALIGN=CENTER>Race Pos</TD>";
       sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=300 ALIGN=CENTER>Entrant Name</TD>";
       sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=CENTER>Fastest Lap</TD>";
       sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=CENTER>Slowest Lap</TD>";
       sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=CENTER>Average Lap</TD>";


       var bConsistencyLaps = false;

       if (sField.length < 13) {
           bConsistencyLaps = false;
       } else {
	   bConsistencyLaps = true;
       }

       if (bConsistencyLaps == true) {
           sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=400 ALIGN=CENTER COLSPAN=5>Best 5 Most Consistent Laps</TD>";
           sHTML2 += "<TD class='DetHeadBox' BGCOLOR='#A8D3FF' WIDTH=100 ALIGN=LEFT>Lap Range</TD>";
       }
       sHTML2 += "</TR>";
    }

    if(nSwitch == 0){
       sColour = sColour1;
       nSwitch = 1;
    }else{
       sColour = sColour2;
       nSwitch = 0;
    }

    sHTML2 += "<TR>";
    sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 ALIGN=LEFT>" + nLoop + "</TD>";
    sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=50 ALIGN=LEFT>" + sField[5] + "</TD>";
    sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=300 ALIGN=LEFT><A onclick='Stint_Stats(" + "\"" + sField[0] + "\"" + ");'><U>" + sField[0] + "</U></A></TD>";
    sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=100 ALIGN=RIGHT>" + Seconds_To_Time(sField[2]) + "</TD>";
    sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=100 ALIGN=RIGHT>" + Seconds_To_Time(sField[3]) + "</TD>";
    sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=100 ALIGN=RIGHT>" + Seconds_To_Time(sField[4]) + "</TD>";

    if (bConsistencyLaps == true) {
        sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[8]) + "</TD>";
        sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[9]) + "</TD>";
        sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[10]) + "</TD>";
        sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[11]) + "</TD>";
        sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=80 ALIGN=CENTER>" + Seconds_To_Time(sField[12]) + "</TD>";
        sHTML2 += "<TD class='DetBox" + nSwitch + "' BGCOLOR='" + sColour + "' WIDTH=100 ALIGN=CENTER>" + sField[7] + "</TD>";
    }

    sHTML2 += "</TR>";

}

if (bTableWritten = true) {
    sHTML2 += "</TABLE>";
}

//*****************************************************

if(bNoRaceAnalysisDisplay == false){
     document.getElementById("DivText2").innerHTML = sHTML + sHTML2;
}

bNoRaceAnalysisDisplay = false;

}

//***********************************************************************************

function TrimString(sPassedString) {

var nLen;
var sTempString = sPassedString;
var nStart = 0;
var nEnd = 0;
var n = 0;
var bFound = false;

nLen = (sPassedString.length-1);

while (n <= nLen && bFound == false) {

      if (sPassedString.charAt(n) != " " && sPassedString.charAt(n) != "\t") {
         nStart = n;
         bFound = true;
      } else {
           n++;
      }
}

bFound = false;

n = (sPassedString.length);

while (n > 0 && bFound == false) {
      if (sPassedString.charAt(n) != " "  && sPassedString.charAt(n) != "\t") {
         nEnd = n;
         bFound = true;
      } else {
           n--;
      }
}


if (nStart != 0 && nEnd != 0) {
   sTempString = sPassedString.substring(nStart, nEnd-1);
}

return sTempString;

}   

//***********************************************************************************
function Feedback(nSelectDriver){

var X;
var nLap;
var sHTML;

Stop_Race();
clearTimeout(timerID);

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sSelectedDriver1 = "";
sSelectedDriver2 = "";

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='SubjectTable' WIDTH=400 BORDER=1 ALIGN=CENTER>";
sHTML += "<TR><TD class='SubjectBox' BGCOLOR='#E8F3FF' ALIGN=CENTER>Race Incident Feedback</TD></TR>";
sHTML += "</TABLE>";

//*************************************************************************************************************

sHTML += "<BR><BR><TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=750>";
sHTML += "<TR>";
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=300>";

//Driver who had incident

sHTML += " Driver : <SELECT ID='SelectDriver1' onChange='Select_Feedback_Driver()'>";

sHTML += "<OPTION>Please Select Driver</OPTION>"

for (nLoop = 1;nLoop <= nDriver_Records;nLoop++) {
    if (nSelectDriver == asDriver[nLoop]) {
    	sHTML += "<OPTION SELECTED>" + asDriver[nLoop];
    } else {
    	sHTML += "<OPTION>" + asDriver[nLoop];
    }
}

sHTML += "</SELECT>";
sHTML += "</TD>";

//Driver's Lap which the incident occurred on
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=150>";

sHTML += " on Lap : <SELECT ID='SelectLap'>";

Build_Driver_Lap_List(nSelectDriver);

sHTML += sHTML2;

sHTML += "</SELECT>";
sHTML += "</TD>";

//Driver who had they had the incident with
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=300>";

sHTML += " With Driver : <SELECT ID='SelectDriver2'>";

sHTML += "<OPTION>No Other Driver</OPTION>"

for (nLoop = 1;nLoop <= nDriver_Records;nLoop++) {
    if (asDriver[nLoop] == sSelectedDriver2) {
    	sHTML += "<OPTION SELECTED>" + asDriver[nLoop];
    } else {
    	sHTML += "<OPTION>" + asDriver[nLoop];
    }
}

sHTML += "</SELECT>";
sHTML += "</TD>";
sHTML += "</TR>";
sHTML += "</TABLE>";

//Incident Description
sHTML += "<BR>";
sHTML += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR>";
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=400>";


sHTML += " Incident Description : <SELECT ID='SelectIncident'>";

sString = "";

for (n = 1; n <= asIndicator.length-1; n++) {
        sString = "";
	nPos = asIndicator[n].indexOf("|");
	if (nPos != -1) {
		sString += asIndicator[n].substring(0, nPos) + " - ";
	} else {
		sString = "";
	}

	nPos = asIndicator[n].indexOf("|");

	if (nPos != -1) {
		nPos++;
		sString += asIndicator[n].substring(nPos, asIndicator[n].length+1);
	}

	sHTML += "<OPTION>" + sString;
}
sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "</TR>";
sHTML += "</TABLE>";


//Media Link 1
sHTML += "<BR>";
sHTML += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=600>";

sHTML += " Media Link 1 : <input id='FormMediaLink1' type=text name='Media_Link_1' value='Please Enter URL of photo/video starting http://' size=50 maxlength=255>";
sHTML += "<input type='BUTTON' value='View Link' onClick='View_URL(1)'></input>";

sHTML += "</TD>";

sHTML += "</TR>";
sHTML += "</TABLE>";

//Media Link 2
sHTML += "<BR>";
sHTML += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=600>";


sHTML += " Media Link 2 : <input id='FormMediaLink2' type=text name='Media_Link_2' value='Please Enter URL of photo/video starting http://' size=50 maxlength=255>";
sHTML += "<input type='BUTTON' value='View Link' onClick='View_URL(2)'></input>";

sHTML += "</TD>";
sHTML += "</TR>";
sHTML += "</TABLE>";

sHTML += "<BR><BR>";
sHTML += "<TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR>";
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=400>";

sHTML += "<input type=SUBMIT name='FormSubmitButton' value='E-mail Feedback' id='FormSubmitButton'></input>";

sHTML += "</TD>";
sHTML += "</TR>";
sHTML += "<TR><TD>";
sHTML += "<input type=hidden name='Champ_Type' value='" + sChamp_Type + "'>";
sHTML += "<input type=hidden name='Champ_Name' value='" + sChamp_Name + "'>";
sHTML += "<input type=hidden name='Champ_Round' value='" + nCurrent_Round + "'>";
sHTML += "</TD></TR>";
sHTML += "</TABLE>";

nSwitch = 0;
sColour = "";

//document.all.DivText2.innerHTML = sHTML;
document.getElementById("DivText2").innerHTML = sHTML;

bNoRecalc = false;

}

//***********************************************************************************
function View_URL(nPassedButton) {

var url;

url = document.getElementById("FormMediaLink" + nPassedButton).value;

if((url.substring(0,7) == "http://" && url.length > 7) || (url.substring(0,8) == "https://" && url.length > 8)) {
	var newWindow = window.open(document.getElementById("FormMediaLink" + nPassedButton).value, '_blank');
} else {
	alert("Please Enter Valid URL for your Media Link");
}

}

//***********************************************************************************
function Build_Driver_Lap_List(nSelectDriver) {

   sHTML2 = "";

   for (nLoop = 1;nLoop <= nRaceLaps;nLoop++) {
     for (driverLoop = 1;driverLoop <= nDriver_Records;driverLoop++) {
       if(aGraphData[nLoop][driverLoop].getEntrantName() == nSelectDriver) { 
         if (aGraphData[nLoop][driverLoop].getLaptime() > nAvgLap) {
            sHTML2 += "<OPTION>" + nLoop + " - " + aGraphData[nLoop][driverLoop].getLaptime() + " (Long Lap)"
         } else {
            sHTML2 += "<OPTION>" + nLoop + " - " + aGraphData[nLoop][driverLoop].getLaptime()
         }
         break;
       }  
     }  
   }
   
   if(sHTML2 == "") {
      sHTML2 = "<OPTION>N/A</OPTION>";
   }   
   
}

//***********************************************************************************
function Select_Feedback_Driver() {

var nIndex;

nIndex = document.Form1.SelectDriver1.selectedIndex;

sSelectedDriver1 = document.Form1.SelectDriver1.options[nIndex].text;

Feedback(sSelectedDriver1);

}

//***********************************************************************************
function Race_Reporting(){

var X;
var nLap;
var sHTML;

Stop_Race();
clearTimeout(timerID);

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sSelectedDriver1 = asDriver[1];
sSelectedDriver2 = asDriver[1];

sHTML2 = "";

Build_Selected_List();

if(sHTML2 == ""){
   sHTML2 = "<OPTION>No Selections";
}

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='SubjectTable' WIDTH=400 BORDER=1 ALIGN=CENTER>";
sHTML += "<TR><TD class='SubjectBox' BGCOLOR='#E8F3FF' ALIGN=CENTER>Commentary</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=200>";
sHTML += "<TR><TD ALIGN=CENTER><A HREF='" + sInstructionsLinkPrefix + "#Commentary' TARGET='_blank'><img src='../images/information.png'></A></TD></TR>";
sHTML += "</TABLE>";


//*************************************************************************************************************

sHTML += "<BR><TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=400>";

sHTML += " Select Entrant to Watch : <SELECT ID='SelectWatchTeam'>";

for (nLoop = 1;nLoop <= nDriver_Records;nLoop++) {
    sHTML += "<OPTION>" + asDriver[nLoop];
}

sHTML += "</TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=200>";

sHTML += "</SELECT>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Add To List' onClick='Add_To_WatchedList()'></INPUT>";
sHTML += "</TD>";

sHTML += "</TR>";
sHTML += "</TABLE>";

sHTML += "<BR><TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";
sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=400>";

sHTML += " Watched List : <SELECT ID='SelectWatchedTeams'>";
sHTML += sHTML2;
sHTML += "</SELECT>";
sHTML += "</TD>";

sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=200>";
sHTML += "<INPUT TYPE='BUTTON' VALUE='Clear List' onClick='Clear_WatchedList()'></INPUT>";
sHTML += "</TD>";

sHTML += "</TR>";
sHTML += "</TABLE></TD><BR>";

sHTML += "<BR><TABLE class='ControlTable' BORDER=0 ALIGN=CENTER WIDTH=300>";
sHTML += "<TR>";

//*****************************************************************************************************
// Remove race Report and Lap Interval Buttons
//*****************************************************************************************************
//
//sHTML += "<TD class='ControlBox' BGCOLOR='#E8F3FF' ALIGN=CENTER WIDTH=550>";
//sHTML += " Select Lap Interval for Reporting : <SELECT ID='SelectCommInterval'>";
//
//for (nLoop = 1;nLoop <= nRaceLaps;nLoop++) {
//    if (nLoop == nSelectedCommInterval) {
//       sHTML += "<OPTION SELECTED>" + nLoop;
//    } else {
//       sHTML += "<OPTION>" + nLoop;
//    }
//}
//
//sHTML += "</SELECT>";
//sHTML += "<INPUT TYPE='BUTTON' VALUE='Select' onClick='Select_Commentary_Interval()'></INPUT>";
//sHTML += "</TD>";
//
//*****************************************************************************************************
if(bCommentary_Switch_On == true){
   sHTML += "<TD class='ControlBox' ALIGN=CENTER WIDTH=300><INPUT TYPE='BUTTON' VALUE='Switch Commentary OFF' onClick='Commentary_OnOff()'></INPUT></TD>";
}else if(bCommentary_Switch_On == false){
   sHTML += "<TD class='ControlBox' ALIGN=CENTER WIDTH=300><INPUT TYPE='BUTTON' VALUE='Switch Commentary ON' onClick='Commentary_OnOff()'></INPUT></TD>";
}

//sHTML += "<TD class='ControlBox' ALIGN=CENTER WIDTH=300><INPUT TYPE='BUTTON' VALUE='Produce Race Report' onClick='Race_Reporting_Analysis()'></INPUT></TD>";

sHTML += "</TR>";
sHTML += "</TABLE>";
sHTML += "</TD>";

sHTML += "</TR>";
sHTML += "</TABLE>";

nSwitch = 0;
sColour = "";

//document.all.DivText2.innerHTML = sHTML;
document.getElementById("DivText2").innerHTML = sHTML;

bNoRecalc = false;

}

//***********************************************************************************************

function Select_Commentary_Interval(){

var nIndex;

nIndex = document.Form1.SelectCommInterval.selectedIndex;
nSelectedCommInterval = Number(document.Form1.SelectCommInterval.options[nIndex].text);

}


//***********************************************************************************************

function Add_To_WatchedList() {

var nIndex;
var bExists;

nIndex = document.Form1.SelectWatchTeam.selectedIndex;
sSelectedWatchedDriver = document.Form1.SelectWatchTeam.options[nIndex].text;

bExists = false;

for (m = 1;m <= nDriver_Records;m++) {
    if(sSelectedWatchedDriver == asWatchedDrivers[m]){
       bExists = true;
       m = nDriver_Records+1;
    }
}

if(bExists == false){
   for (n = 1;n <= nDriver_Records;n++) {
       if(asWatchedDrivers[n] == "") {
          asWatchedDrivers[n] = sSelectedWatchedDriver;
          n = nDriver_Records+1;
       }
   }
}

Race_Reporting();

}

//***********************************************************************************************

function Build_Selected_List() {

sHTML2 = "";

for (n = 1;n <= nDriver_Records;n++) {
    if(asWatchedDrivers[n] != ""){
      sHTML2 += "<OPTION>" + asWatchedDrivers[n];
    }
}

if(sHTML2 == ""){
   sHTML2 = "<OPTION>No Selections";
} 

}

//***********************************************************************************************

function Clear_WatchedList() {

for (n = 1;n <= nDriver_Records;n++) {
    asWatchedDrivers[n] = "";
}

sHTML2 = "<OPTION>No Selections";

Race_Reporting();

}

//************************************************************************
//** Store Top Ten from previous lap
//************************************************************************

function Top10_In_Out(){

var bDriverExists;
var nDropCount;
var nNewCount;

nDropCount = 0;
nNewCount  = 0;

for (n = 1;n <= 10;n++) {
    asDropOut_Driver[n] = "";
    anDropOut_LapTime[n] = 0;
    anDropOut_LapPos[n] = 0;
    asDropOut_PitLap[n] = "";

    asNewIn_Driver[n] = "";
    anNewIn_LapTime[n] = 0;
    anNewIn_LapPos[n] = 0;
    asNewIn_PitLap[n] = "";
}

//First the drop outs

for (x = 1;x <= 10;x++) {
    bDriverExists = false;
    for (y = 1;y <= 10;y++) {
        if(asT10_Driver_1[x] == asT10_Driver_2[y]){
           bDriverExists = true;
           y = 11;
        }
    }

    if(bDriverExists == false){
       nDropCount++;
       asDropOut_Driver[nDropCount] = asT10_Driver_1[x];
       anDropOut_LapTime[nDropCount] = anT10_LapTime_1[x];
       anDropOut_LapPos[nDropCount] = anT10_LapPos_1[x];
       asDropOut_PitLap[nDropCount] = asT10_PitLap_1[x];
    }
}

//Next The New Ins

for (x = 1;x <= 10;x++) {
    bDriverExists = false;
    for (y = 1;y <= 10;y++) {
        if(asT10_Driver_2[x] == asT10_Driver_1[y]){
           bDriverExists = true;
           y = 11;
        }
    }

    if(bDriverExists == false){
       nNewCount++;
       asNewIn_Driver[nNewCount] = asT10_Driver_2[x];
       anNewIn_LapTime[nNewCount] = anT10_LapTime_2[x];
       anNewIn_LapPos[nNewCount] = anT10_LapPos_2[x];
       asNewIn_PitLap[nNewCount] = asT10_PitLap_2[x];
    }
}

}

//*************************************************************************
//** Work out position string
//*************************************************************************

function Get_Position_String(nPassedPos) {

var nTempLen = 0;
var nTempString = "";
var asPositionString = new Array(19);

asPositionString[0] = "0th";
asPositionString[1] = "1st";
asPositionString[2] = "2nd";
asPositionString[3] = "3rd";
asPositionString[4] = "4th";
asPositionString[5] = "5th";
asPositionString[6] = "6th";
asPositionString[7] = "7th";
asPositionString[8] = "8th";
asPositionString[9] = "9th";
asPositionString[10] = "10th";
asPositionString[11] = "11th";
asPositionString[12] = "12th";
asPositionString[13] = "13th";
asPositionString[14] = "14th";
asPositionString[15] = "15th";
asPositionString[16] = "16th";
asPositionString[17] = "17th";
asPositionString[18] = "18th";
asPositionString[19] = "19th";

if(nPassedPos > 0 && nPassedPos < 20) {
   return asPositionString[nPassedPos];
}

if (nPassedPos > 19 && nPassedPos < 101) {
   nTempLen = String(nPassedPos).length;
   nTempString = String(nPassedPos).substring(nTempLen-1, nTempLen);
   return String(nPassedPos).substring(0, nTempLen-1) + asPositionString[Number(nTempString)];
}


if(nPassedPos > 100){
  return "P" + String(nPassedPos);
}

}

//**********************************************************************************************************
//** Work out gap to team in front, || leader, and/or if(gap has gone up || down since last lap
//**********************************************************************************************************

function Team_Gap(nPassedPos, nSelectedLap) {

bTeam_Gap_Down = false;
bTeam_Gap_Up = false;

nTeamGapNEW = 0;
nTeamGapOLD = 0;

if(nPassedPos = 1 || nPassedPos > 9){
   return;
}

//Gap to next team - Only if(selected team is on lead lap.

if(anT10_LapsCompleted_2[nPassedPos] == nSelectedLap){ 
   nPoints_diff = TruncNum(anT10_TotalTime_2[nPassedPos+1]) - TruncNum(anT10_TotalTime_2[nPassedPos]);

   nTeamGapNEW = Seconds_To_Time(nPoints_Diff);
}

//Now see if(team positions are the same as on previous lap && if(so, work out if(gap up || down.

if(nSelectedLap > 1){
   if(asT10_Driver_2[nPassedPos] == asT10_Driver_1[nPassedPos] && asT10_Driver_2[nPassedPos+1] == asT10_Driver_1[nPassedPos+1]){
      if(anT10_LapsCompleted_1[nPassedPos] == nSelectedLap-1) {
         nPoints_diff = TruncNum(anT10_TotalTime_1[nPassedPos+1]) - TruncNum(anT10_TotalTime_1[nPassedPos]);

        nTeamGapOLD = Seconds_To_Time(nPoints_Diff);
      }
   }
}

if(nTeamGapNEW != 0 && nTeamGapOLD != 0){
   if(nTeamGapOLD < nTeamGapNEW){
      bTeam_Gap_Up = true;
   }

   if(nTeamGapOLD > nTeamGapNEW){
      bTeam_Gap_Down = true;
   }
}

}

//**********************************************************************************************************
//** Work out gap to team in front, || leader, and/or if(gap has gone up || down since last lap
//**********************************************************************************************************

function Leader_Gap(nSelectedLap) {

var nPoints_Diff = 0;

bLeader_Down = false;
bLeader_Up = false;

nLeaderGapNEW = 0;
nLeaderGapOLD = 0;

if(nSelectedLap == 1){
   return;
}

//Gap to Leader - Only if 2nd Pos team is on lead lap.

if(anT10_LapsCompleted_2[2] == nSelectedLap) { 
   nPoints_Diff = TruncNum(anT10_TotalTime_2[2]) - TruncNum(anT10_TotalTime_2[1]);

   nLeaderGapNEW = Seconds_To_Time(nPoints_Diff);
}

//Now see if(team positions are the same as on previous lap && if(so, work out if(gap up || down.

if(nSelectedLap > 1) {
   if(asT10_Driver_2[2] == asT10_Driver_1[2] && asT10_Driver_2[1] == asT10_Driver_1[1]) {

      if(anT10_LapsCompleted_1[2] == nSelectedLap-1) {
         nPoints_Diff = TruncNum(anT10_TotalTime_1[2]) - TruncNum(anT10_TotalTime_1[1]);

         nLeaderGapOLD = Seconds_To_Time(nPoints_Diff);
      }
   }
}

if(nLeaderGapNEW != 0 && nLeaderGapOLD != 0) {
   if(nLeaderGapOLD < nLeaderGapNEW) {
      bLeader_Gap_Up = true;
   }

   if(nLeaderGapOLD > nLeaderGapNEW){
      bLeader_Gap_Down = true;
   }
}

}

//*****************************************************************************
//** Find Driver's Position now and Lap Time//*****************************************************************************

function Find_Driver_Pos(sPassedDriver, nSelectedLap) {

nFound_Pos = 0;
nFound_LapTime = 0;

for (n = 1;n <= nDriver_Records;n++) {
    if(TrimString(aGraphData[nSelectedLap][n].getEntrantName()) == TrimString(sPassedDriver)) {
       nFound_Pos = n;
       //nFound_LapTime = anINITLapTime[nSelectedLap][n];
       nFound_LapTime = aGraphData[nSelectedLap][n].getLaptime();
       n = nDriver_Records + 1;
    }
}

}

//*****************************************************************************
//** Find Best Gained Positions
//*****************************************************************************

function Best_Gained_Positions(nSelectedLap) {

//** WORK OUT BEST POSITIONS POSITIONS FROM PREVIOUS LAP/START

nBestGain = 0;
sBestGain_Driver = "";

for (z = 1;z <= nDriver_Records;z++) {
    if(nSelectedLap > 1) {

       for (m = 1; m <= nDriver_Records;m++) {
           if(TrimString(aGraphData[nSelectedLap-1][m].getEntrantName()) == TrimString(aGraphData[nSelectedLap][z].getEntrantName())) {
              nMatchDriver = m;
              m = nDriver_Records+1;
           }
       }

       sGain = z - nMatchDriver;

       if(sGain < 0) {
          sGain = sGain * -1;
       }

       if(z - nMatchDriver < 0){
          //Gained sGain places
          if(sGain > nBestGain) {
             nBestGain = sGain;
             sBestGain_Driver = aGraphData[nSelectedLap][z].getEntrantName();
          }   
       }
    }else{

       for (m = 1; m <= nDriver_Records;m++) {
           if(TrimString(aGraphData[nSelectedLap][z].getEntrantName()) == TrimString(asINITDriver[m])) {
              nMatchDriver = m;
              m = nDriver_Records+1;
           }
       }

       sGain = z - asINITGridPos[nMatchDriver];

       if(sGain < 0) {
          sGain = sGain * -1;
       }

       if(z - asINITGridPos[nMatchDriver] < 0){
          //Gained sGain places
          if(sGain > nBestGain) {
             nBestGain = sGain;
             sBestGain_Driver = aGraphData[nSelectedLap][z].getEntrantName();
          }  
       } 
    }
}

}

//*****************************************************************************
//** Populate Driver String
//*****************************************************************************

function Driver_String(nStartDriver, nEndDriver, sPositionsYN, sPassed_Array_Type, sPassed_UpDown) {

var sTemp_Driver_String;
var nDriver_NewPos;
var nDriver_OldPos;
var sUpDown;

sTemp_Driver_String = "";
sDriver = "";
nDriver_NewPos = 0;
nDriver_OldPos = 0;
sUpDown = " ";

if(nStartDriver > 10 || nStartDriver > nEndDriver) {
   return "";
}

for (n = nStartDriver;n <= nEndDriver-1;n++) {

   if(sPassed_Array_Type == "T10_1") {
      sDriver = asT10_Driver_1[n];
   }else if(sPassed_Array_Type == "T10_2") {
          sDriver = asT10_Driver_2[n];
          nDriver_NewPos = n;
          nDriver_OldPos = 0;

          for (x = 1;x <= 10;x++) {
              if(sDriver == asT10_Driver_1[x]) {
                 nDriver_OldPos = x;
              }
          }
   }else if(sPassed_Array_Type == "DropOuts") {
         sDriver = asDropOut_Driver[n];
   }else if(sPassed_Array_Type == "NewIns") {
          sDriver = asNewIn_Driver[n];
   }

   if(n == nStartDriver) {
      sTemp_Driver_String = sTemp_Driver_String + sDriver;
   }else{
      sTemp_Driver_String = sTemp_Driver_String + "," + sDriver;
   }

   if(TrimString(sPositionsYN) != "") {
      if(sPassed_Array_Type == "T10_2") {
         if(TrimString(sPassed_UpDown) != "") {
            if(nDriver_OldPos != 0 || nDriver_NewPos != 0) {
               sUpDown = " "; 

               if(nDriver_OldPos < nDriver_NewPos && nDriver_OldPos != 0) {
                  if((nDriver_NewPos - nDriver_OldPos) > 1 && nDriver_OldPos != 0) {
                     sUpDown = " down " + (nDriver_NewPos - nDriver_OldPos) + " to ";
                  }else{
                     sUpDown = " down to ";
                  }   
               }else{
                  if(nDriver_OldPos > nDriver_NewPos || nDriver_OldPos == 0) {
                     if((nDriver_OldPos - nDriver_NewPos) > 1 && nDriver_OldPos != 0) {
                        sUpDown = " up " + (nDriver_OldPos - nDriver_NewPos) + " to ";
                     }else{
                        sUpDown = " up to ";
                     }   
                  }
               }

               sTemp_Driver_String = sTemp_Driver_String + sUpDown + Get_Position_String(n);
            }
         }else{
            sTemp_Driver_String = sTemp_Driver_String + " " + Get_Position_String(n);
         }
      }else{
         sTemp_Driver_String = sTemp_Driver_String + " " + Get_Position_String(n);
      }
   }
}

if(sPassed_Array_Type == "T10_1") {
   sDriver = asT10_Driver_1[nEndDriver];
}else if(sPassed_Array_Type == "T10_2") {
       sDriver = asT10_Driver_2[nEndDriver];
       nDriver_NewPos = nEndDriver;
       nDriver_OldPos = 0;

       for (x = 1;x <= 10;x++) {
           if(sDriver == asT10_Driver_1[x]){
              nDriver_OldPos = x;
           }
       }
}else if(sPassed_Array_Type == "DropOuts") {
       sDriver = asDropOut_Driver[nEndDriver];
}else if(sPassed_Array_Type == "NewIns") {
       sDriver = asNewIn_Driver[nEndDriver];
}

if((nEndDriver - nStartDriver) > 0) {
   sTemp_Driver_String = sTemp_Driver_String + " and " + sDriver;
}else{
   sTemp_Driver_String = sTemp_Driver_String + sDriver;
}

if(TrimString(sPositionsYN) != "") { 
   if(sPassed_Array_Type == "T10_2") {
      if(TrimString(sPassed_UpDown) != "") {
         if(nDriver_OldPos != 0 || nDriver_NewPos != 0) {
            sUpDown = " "; 

            if(nDriver_OldPos < nDriver_NewPos && nDriver_OldPos != 0) {
               if((nDriver_NewPos - nDriver_OldPos) > 1 && nDriver_OldPos != 0) {
                  sUpDown = " down " + String(nDriver_NewPos - nDriver_OldPos) + " to ";
               }else{
                  sUpDown = " down to ";
               }  
            }else{
               if(nDriver_OldPos > nDriver_NewPos || nDriver_OldPos == 0) {
                  if((nDriver_OldPos - nDriver_NewPos) > 1 && nDriver_OldPos != 0) {
                     sUpDown = " up " + String(nDriver_OldPos - nDriver_NewPos) + " to ";
                  }else{
                     sUpDown = " up to ";
                  }   
               }
            }

            sTemp_Driver_String = sTemp_Driver_String + sUpDown + Get_Position_String(nEndDriver);
         }
      }else{
         sTemp_Driver_String = sTemp_Driver_String + " " + Get_Position_String(nEndDriver);
      }
   }else{
      sTemp_Driver_String = sTemp_Driver_String + " " + Get_Position_String(nEndDriver);
   }
}

return sTemp_Driver_String;

}

//*****************************************************************************
//** Edit Phrase
//****************************************************************************

function Phrase_Edit(sPassedPhrase) {

var sSearch = "";

sCopyPhrase = sPassedPhrase;

sTempPhrase = "";

for (n = 1;n <= nEditArrayLen;n++) {

    sSearch = "#" + asEdit_Rules_Array[n].substring(0,asEdit_Rules_Array[n].indexOf(" ")) + "#";

    nPos = sCopyPhrase.indexOf(sSearch);

    if (nPos != -1) {
       sTempPhrase = sCopyPhrase.substring(0, nPos) + asEdit_Rules_Array[n].substring(15, asEdit_Rules_Array[n].length);
       nPos2 = (nPos + sSearch.length);
       sTempPhrase = sTempPhrase + sCopyPhrase.substring(nPos2, sCopyPhrase.length);
       sCopyPhrase = sTempPhrase;
    }
}


return sCopyPhrase;

}

//*********************************************************************************
//** Race Reporting
//*********************************************************************************

function Race_Reporting_Analysis() {

var X;
var nPos;
var nCount;

nCount = 0;

bCommentary_Switch_On = true;

//****************************************************************************************************************

var oNewWin = window.open("", "newwin", "height=900, width=900,toolbar=yes,scrollbars=yes,menubar=yes");

if(sChamp_Type == "SPRINT") {
  oNewWin.document.write("<TITLE>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + "</TITLE>");
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR") {
       if(sChamp_Name == "Endurance Series - The Challenge") {
         oNewWin.document.write("<TITLE>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TITLE>");
       }else{
            oNewWin.document.write("<TITLE>Auto-Race Report for Round " + nCurrent_Round ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + "</TITLE>");
       }
}else if(sChamp_Type == "CAR"){
        oNewWin.document.write("<TITLE>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + "</TITLE>");
}

//oNewWin.document.write("<BODY>");
oNewWin.document.write("<LINK REL=STYLESHEET TYPE='text/css' HREF='CC_Style_Sheet.HTML'>");

oNewWin.document.write("<body BACKGROUND='BACKGROUND.JPG' text='#000000' bgcolor=WHITE link='#0000FF' vlink='#800080' alink='#FF0080' nosave>");

oNewWin.document.write("<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=2 WIDTH=25% ALIGN=CENTER>");
oNewWin.document.write("<TR>");
oNewWin.document.write("<TD><A HREF='http://www.tickled-pink.net'><img ALT='Click To Visit Tickled Pink' ALIGN='CENTER' BORDER='1' SRC='../images/TickledPink.jpg'></A></TD>");
oNewWin.document.write("</TR>");
oNewWin.document.write("</TABLE>");
oNewWin.document.write("<BR>");
oNewWin.document.write("<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=2 WIDTH=100% ALIGN=CENTER>");
oNewWin.document.write("<TR>");

if(sChamp_Name == "Endurance Series - The Challenge") {
  oNewWin.document.write("<TD ALIGN='CENTER'><A HREF='http://www.uk-go-karting.com/'><img ALT='Click To Visit The Challenge Series' BORDER='0' SRC='../images/Challenge.gif' WIDTH=95 HEIGHT=69></A></TD>");
} else if(sChamp_Name == "Uniroyal Fun Cup") {
          oNewWin.document.write("<TD ALIGN='CENTER'><A HREF='http://www.uniroyalfuncup.co.uk'><img ALT='Click To Uniroyal Fun Cup Website' BORDER='0' SRC='../images/FunCup.jpeg'></A></TD>");
} else if(sChamp_Type == "CAR") {
} else {
  oNewWin.document.write("<TD ALIGN='CENTER'><A HREF='http://www.club100.co.uk'><img ALT='Click To Visit Club 100' BORDER='0' SRC='../images/C100LogoSml.gif' WIDTH=119 HEIGHT=23></A></TD>");
}

oNewWin.document.write("</TR>");
oNewWin.document.write("<TR>");
oNewWin.document.write("<TD ALIGN='CENTER'><B>" + sChamp_Name + " - " + sChamp_Year + "</B></TD>");
oNewWin.document.write("</TR>");

oNewWin.document.write("<TR>");

if(sChamp_Type == "SPRINT") {
  oNewWin.document.write("<TD ALIGN='CENTER'><B>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + "</B></TD>");
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR") {
       if(sChamp_Name == "Endurance Series - The Challenge") {
         oNewWin.document.write("<TD ALIGN='CENTER'><B>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</B></TD>");
       }else{
            oNewWin.document.write("<TD ALIGN='CENTER'><B>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + "</B></TD>");
       }
}else if(sChamp_Type == "CAR"){
        oNewWin.document.write("<TD ALIGN='CENTER'><B>Auto-Race Report for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackName[nCurrent_Round] + " - " + asTrackDate[nCurrent_Round] + "</B></TD>");
}

oNewWin.document.write("</TR>");
oNewWin.document.write("</TABLE>");

//****************************************************************************************************************


if(sCommentary_WinningDriver == "" || sCommentary_FastestDriver == "" || nCommentary_FastestLap == 0) {
   bNoRaceAnalysisDisplay = true;
   Race_Stats();
} 

var          anSaved_Score = new Array(nRaceLaps);
var          sSaved_LapPos = new Array(nRaceLaps);

for (nSelectedLap = 1;nSelectedLap <= nRaceLaps;nSelectedLap++) {

    sSaved_Driver = "";

    if(nSelectedLap > 1) {
       Lap_Positions((nSelectedLap-1),true);
    }

    Lap_Positions(nSelectedLap,false);

//************************************************************************
//** COMMENTARY - Store Top Ten from this lap
//************************************************************************
    for (x = 1;x <= 10;x++) {
        asT10_Driver_2[x] = asDriver[x];
        anT10_TotalTime_2[x] = anTotalTime[x];
        anT10_LapsCompleted_2[x] = anLapsCompleted[x];
        asT10_GridPos_2[x] = asGridPos[x];
        anT10_LapTime_2[x] = anLapTime[nSelectedLap][x];
        anT10_LapPos_2[x] = x;
        asT10_PitLap_2[x] = aGraphData[nSelectedLap][x].getPitLap();
    }

    nCount++;

    if(nSelectedLap == 1 || nSelectedLap == (nRaceLaps-1) || nSelectedLap == nRaceLaps || nSelectedLap == parseInt(nRaceLaps/2) || nCount >= nSelectedCommInterval) {
       nCount = 0;

       if(bCommentary_Switch_On == true) {
         if (nSelectedLap == 1) {
            for (x = 1; x <= 10; x++) {
                asT10_Driver_1[x] = asT10_Driver_2[x];
                anT10_TotalTime_1[x] = anT10_TotalTime_2[x];
                anT10_LapsCompleted_1[x] = anT10_LapsCompleted_2[x];
                asT10_GridPos_1[x] = asT10_GridPos_2[x];
                anT10_LapTime_1[x] = anT10_LapTime_2[x];
                anT10_LapPos_1[x] = anT10_LapPos_2[x];
                asT10_PitLap_1[x] = asT10_PitLap_2[x];
            }
         }

         Commentary(nSelectedLap);
         oNewWin.document.write("<P>" + sCommentary_String + "</P>");
       }
    }
}

nSelectedLap = 1;

oNewWin.document.write("</BODY>");

}

//************************************************************************
//** COMMENTARY - ON/OFF
//************************************************************************

Commentary_OnOff = function() {

if(bCommentary_Switch_On == true){
   bCommentary_Switch_On = false;
}else if(bCommentary_Switch_On == false){
       bCommentary_Switch_On = true;
       if(sCommentary_WinningDriver == "" || sCommentary_FastestDriver == "" || nCommentary_FastestLap == 0){
          bNoRaceAnalysisDisplay = true;
          Race_Stats();
       } 
}

Race_Table();

}

//************************************************************************
//** COMMENTARY - Now the actual Commentary !
//************************************************************************

function Commentary(nPassed_Lap){

var asPhrases = new Array(43);

sCommentary_String = "";

Top10_In_Out();

//#DRIVER#
//#DRIVERSTRING# ie "X, Y && Z"
//#TIME#
//#POSITION#
//#LAPTIME#
//#TYPE# ie. "Driver/Team"
//#GRIDPOS#
//#AMOUNT#
//#LAPNO#

asPhrases[1] = "The gap between leader #DRIVER1# and #DRIVER2# was now down to #TIME#.";
asPhrases[2] = "The gap between leader #DRIVER1# and 2nd placed #DRIVER2# now increased to #TIME#.";
asPhrases[3] = "Leader #DRIVER# opened up a commanding #TIME# gap.";
asPhrases[4] = "#DRIVER# now had a slender #TIME# advantage over #DRIVERSTRING#.";
asPhrases[5] = " #DRIVER# had a slow #LAPTIME# lap dropping to #POSITION#.";
asPhrases[6] = " Meanwhile, #DRIVER# down in #POSITION# set the fastest lap of the race with a #LAPTIME#.";
asPhrases[7] = " #DRIVER1# dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
asPhrases[8] = " #DRIVER# gained a fantastic #AMOUNT# places up to #POSITION#.";
asPhrases[9] = " #DRIVER# was now running in #POSITION# position.";
asPhrases[10] = " #DRIVER# set the fastest lap of the race with a #LAPTIME#.";
asPhrases[11] = " The #TYPE# on the move at this stage of the race was #DRIVER# who was up #AMOUNT# places from grid #GRIDPOS#.";
asPhrases[12] = " #DRIVER# gained #AMOUNT# places, up to #POSITION#.";
asPhrases[13] = " #DRIVER# made a great start gaining #AMOUNT# places, slotting into #POSITION#, from grid #GRIDPOS#.";
asPhrases[14] = "Lap #LAPNO#.";
asPhrases[15] = "Lap #LAPNO#, the half way stage.";
asPhrases[16] = "Into the last lap and ";
asPhrases[17] = "#DRIVER# took an easy win ahead of #DRIVERSTRING#.";
asPhrases[18] = "#DRIVER# held on to take the chequered flag first ahead of #DRIVERSTRING#.";
asPhrases[19] = " these #AMOUNT# ahead of #DRIVERSTRING#.";
asPhrases[20] = " these #AMOUNT# covered by only #TIME# ! ";
asPhrases[21] = " these #AMOUNT# now #TIME# clear of #DRIVERSTRING#";
asPhrases[22] = "#DRIVER# led the first lap ahead of #DRIVERSTRING#.";
asPhrases[23] = " Next up were #DRIVERSTRING#";
asPhrases[24] = "#DRIVER# was #POSITION# and following, were #DRIVERSTRING#";
asPhrases[25] = " with #DRIVER# completing the top 10.";
asPhrases[26] = " #DRIVER# completed the top 10.";
asPhrases[27] = " #DRIVERSTRING1# all dropped down the order, promoting #DRIVERSTRING2# into the top 10.";
asPhrases[28] = " Then it was #DRIVERSTRING#.";
asPhrases[29] = "#DRIVER# led, with #DRIVERSTRING#.";
asPhrases[30] = "#DRIVER# led, ahead of #DRIVERSTRING#";
asPhrases[31] = " #DRIVER1# dropped to #POSITION#, allowing #DRIVER2# into the top 10.";
asPhrases[32] = " #DRIVER1# had a slow lap and dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
asPhrases[33] = " #DRIVER# was now down in #POSITION# position having been as high up as #BESTPOS# at one stage.";
asPhrases[34] = " #DRIVER# finished in #POSITION# position.";
asPhrases[35] = " #DRIVER# was in #POSITION# position.";
asPhrases[36] = " #DRIVER1# pitted and dropped to #POSITION#, allowing #DRIVER2# into the top 10.";
asPhrases[37] = " #DRIVER1# pitted and dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
asPhrases[38] = " #DRIVER1# pitted for #REASON# and dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
asPhrases[39] = " #DRIVER1# #REASON# and dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
asPhrases[40] = " #DRIVER1# #REASON# and dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
asPhrases[41] = " #DRIVER1# #REASON# and dropped to #POSITION#, allowing #DRIVER2# into the top 10.";
asPhrases[42] = " #DRIVER1# pitted for #REASON# and dropped to #POSITION#, allowing #DRIVER2# into the top 10.";
asPhrases[43] = " #DRIVER# set the fastest lap of the race with a #LAPTIME#, smashing the old lap record in the process!";

//**************************************************************************

//End of race, report phase(17) || Phase(18) + Phase(25) || Phase(26)

//Some phrases should only be used once, (Phrase(11))

//Check for more than 3 places being gained duraing a lap, && report Phrase(8) || Phrase(12)

//More than 3 drivers separated by less than 2 seconds, report Phrase(20)

//Gap to leader < than before, report Phrase(1)

//Gap to leader > than before report Phrase(2)
//   }else{ if(> 3 seconds report Phrase(3)

//if(Gap To Leader < 1 second, report Phrase(4)

//**************************************************************************


//******************************************************************
// Flags
//******************************************************************
bFlag_Gap_To_Leader = false;
bFlag_Gap_To_Team = false;
bFlag_DropOut_Slow_Lap = false;
bFlag_DropOut_Long_Lap = false;
bFlag_Man_On_The_Move = false;
//******************************************************************

asEdit_Rules_Array[1] = "";
asEdit_Rules_Array[2] = "";
asEdit_Rules_Array[3] = "";
asEdit_Rules_Array[4] = "";
asEdit_Rules_Array[5] = "";
asEdit_Rules_Array[6] = "";
asEdit_Rules_Array[7] = "";
asEdit_Rules_Array[8] = "";
asEdit_Rules_Array[9] = "";
asEdit_Rules_Array[10] = "";

var nDriverStringStart;
var nDriverStringEnd;

var bFlag_2sGap_REPORTED;
var bFlag_FastestLap_REPORTED;
var bFlag_3Places_REPORTED;

nDriverStringStart = 0;
nDriverStringEnd = 0;

bFlag_2sGap_REPORTED = false;

if(bFlag_FastestLap_REPORTED != true){
   bFlag_FastestLap_REPORTED = false;
}

bFlag_3Places_REPORTED = false;
bFlag_Leader_Reported = false;

nLoop = 1;
nDropOutCounter = 0;

while (nLoop < 11 && asDropOut_Driver[nLoop] != "") {
   nDropOutCounter++;
   nLoop++;
}

nDriver = 1;

if(nPassed_Lap > 1 && nPassed_Lap != (nRaceLaps-1) && nPassed_Lap != nRaceLaps && nPassed_Lap != parseInt(nRaceLaps/2)) {
   asEdit_Rules_Array[1] = "LAPNO         -" + nPassed_Lap;
   nEditArrayLen = 1;

   sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[14]);
}

if(nPassed_Lap == nRaceLaps-1) {
   sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[16]);
}

while (nDriver < (11 - nDropOutCounter)) {

    if(nPassed_Lap == 1) {
       asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1];
       asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(2, 10,"POSITIONS", "T10_2", "")      ;
       nEditArrayLen = 2;

       //******** asPhrases[22] = "#DRIVER# led the first lap ahead of #DRIVERSTRING#." *******      ;
       sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[22]);
       nDriver = 11;
    }


    if(nPassed_Lap == parseInt(nRaceLaps/2)) {

       asEdit_Rules_Array[1] = "LAPNO         -" + parseInt(nRaceLaps/2);
       nEditArrayLen = 1;

       //******** asPhrases[15] = "Lap #LAPNO#, the half way stage." *******      ;
       sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[15]);

       asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
       asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(2, 10,"POSITIONS", "T10_2", "")      ;
       nEditArrayLen = 2;

       //******** asPhrases[30] = "#DRIVER# led, ahead of #DRIVERSTRING#" *******      ;
       sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[30]);
       nDriver = 11;
    }

    if(nPassed_Lap == nRaceLaps) {

       bLeader_Gap_Down = false;
       bLeader_Gap_Up = false;

       nLeaderGapNEW = 0;
       nLeaderGapOLD = 0;

       Leader_Gap(nPassed_Lap);

       if(nLeaderGapNEW > 2) {
          asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
          asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(2, 10,"POSITIONS", "T10_2", "")      ;
          nEditArrayLen = 2;

          //******** asPhrases[17] = "#DRIVER# took an easy win ahead of #DRIVERSTRING#." *******      ;
          sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[17]);
          nDriver = 11;
       }else{
          asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
          asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(2, 10,"POSITIONS", "T10_2", "")      ;
          nEditArrayLen = 2;

          //******** asPhrases[18] = "#DRIVER# held on to take the chequered flag first ahead of #DRIVERSTRING#." *******      ;
          sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[18]);
          nDriver = 11;
       }

    }


    if(nDriver == 2) {
       nDriverStringStart = 2;
       //Check Gap To Leader;
       bLeader_Gap_Down = false;
       bLeader_Gap_Up = false;

       nLeaderGapNEW = 0;
       nLeaderGapOLD = 0;

       Leader_Gap(nPassed_Lap);

       if(bLeader_Gap_Down == true) {
          asEdit_Rules_Array[1] = "DRIVER1       -" + asT10_Driver_2[1];
          asEdit_Rules_Array[2] = "DRIVER2       -" + asT10_Driver_2[2];
          asEdit_Rules_Array[3] = "TIME          -" + nLeaderGapNEW + " seconds";
          nEditArrayLen = 3;
          //********** asPhrases[1] = "The gap between leader #DRIVER1# && #DRIVER2# was now down to #TIME#." ********;
          sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[1]);
          bFlag_Leader_Reported = true;
          nDriverStringStart = 3;
          nDriver = 3;
       }else if(bLeader_Gap_Up == true) {
              if(nLeaderGapNEW < 2.8) {
                 asEdit_Rules_Array[1] = "DRIVER1       -" + asT10_Driver_2[1];
                 asEdit_Rules_Array[2] = "DRIVER2       -" + asT10_Driver_2[2];
                 asEdit_Rules_Array[3] = "TIME          -" + Seconds_To_Time(nLeaderGapNEW) + " seconds";
                 nEditArrayLen = 3;
                 //********** asPhrases[2] = "The gap between leader #DRIVER1# && 2nd placed #DRIVER2# now increased to #TIME#." **********;
                 sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[2]);
                 bFlag_Leader_Reported = true;
                 nDriverStringStart = 3;
                 nDriver = 3;
              }else{
                 asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1];
                 asEdit_Rules_Array[2] = "TIME          -" + Seconds_To_Time(nLeaderGapNEW) + " seconds";
                 nEditArrayLen = 2;
                 //********** asPhrases[3] = "Leader #DRIVER# opened up a commanding #TIME# gap." **********;
                 sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[3]);
                 bFlag_Leader_Reported = true;
                 nDriverStringStart = 2;
               }
        }
        nDriverStringEnd = (10 - nDropOutCounter);
    }

    //if(nDriver < 11){ ;
    //   if(nPassed_Lap > 1){
    //      if(nDriver > 1){
    //         'Gap between other teams nPassed_Lap > 2;
    //         bTeam_Gap_Down = false;
    //         bTeam_Gap_Up = false;
    //       ;
    //         nTeamGapNEW = 0;
    //         nTeamGapOLD = 0;
    // ;
    //         Team_Gap(nDriver, nPassed_Lap);
    // ;
    //          asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2(nDriver) + " " + Get_Position_String(nDriver) ;
    //          asEdit_Rules_Array[2] = "TIME          -" + Seconds_To_Time(nTeamGapNEW) + "seconds ";
    //          asEdit_Rules_Array[3] = "DRIVERSTRING  -" + Driver_String(nDriver+1, 10,"POSITIONS", "T10_2", "UPDOWN")   ;
    //          nEditArrayLen = 3;
    //          '********** asPhrases[4] = "#DRIVER# now had a slender #TIME# advantage over #DRIVERSTRING#." **********;
    //          sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[4]);
    //  ;
    //          if(bTeam_Gap_Down == true){
    //             alert("Team Gap Down !");
    //          }else if(bTeam_Gap_Up == true){
    //                 alert("Team Gap Up !");
    //          }
    //       }
    //    }
    //}

    if(bFlag_2sGap_REPORTED == false){
       //COunt No. drivers in a 2 second gap;
       nTempGap = 0;
       nSavedTempGap = 0;
       nGapTotalDrivers = 0;

       nGapStartDriver = nDriver;
       nGapEndDriver = 0;
       nGapTotalDrivers = 0;

       for (nGapDriver = nGapStartDriver;nGapDriver <= 10;nGapDriver++) {
           if(anT10_LapsCompleted_2[nGapDriver] == anT10_LapsCompleted_2[nGapDriver-1]) {
              if(nGapDriver == nGapStartDriver) {
                 nTempGap = 0;
              }else{
                 nTempGap = nTempGap + (anT10_TotalTime_2[nGapDriver] - anT10_TotalTime_2[nGapDriver-1]);
              }

              if(nTempGap < 2) {
                 nGapTotalDrivers++;
                 nGapEndDriver = nGapDriver;
                 nSavedTempGap = nTempGap;
              }

           }
       }

       if(nGapTotalDrivers > 3) {

          nDriverStringEnd = (nDriver - 1);

          if(nDriverStringStart != 0 && nDriverStringEnd != 0 && nDriverStringStart <= nDriverStringEnd) {
             if(bFlag_Leader_Reported == false) {
                asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
                asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(nDriverStringStart, nDriverStringEnd,"POSITIONS", "T10_2", "UPDOWN")      ;
                nEditArrayLen = 2;
                //******** asPhrases[29] = "#DRIVER# led, with #DRIVERSTRING#." *******      ;
                sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[29]);
                bFlag_Leader_Reported = true;
             }else{
                asEdit_Rules_Array[1] = "DRIVERSTRING  -" + Driver_String(nDriverStringStart, nDriverStringEnd,"POSITIONS", "T10_2", "UPDOWN")      ;
                nEditArrayLen = 1;
                //********** asPhrases[28] = "#DRIVERSTRING#" *********;
                sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[28]);
             } ;
          }

          if(bFlag_Leader_Reported == false) {
             asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
             asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(2, nGapEndDriver, "POSITIONS", "T10_2", "UPDOWN")      ;
             nEditArrayLen = 2;
             //********** asPhrases[30] = "#DRIVER# led, ahead of #DRIVERSTRING#" **********;
             sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[30]);

             asEdit_Rules_Array[1] = "AMOUNT        -" + nGapTotalDrivers;
             asEdit_Rules_Array[2] = "TIME          -" + Seconds_To_Time(nSavedTempGap) + " seconds";
             nEditArrayLen = 2;
             //********** asPhrases[20] = " these #AMOUNT# covered by only #TIME# !" **********;
             sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[20]);
             bFlag_Leader_Reported = true;
          }else{
             asEdit_Rules_Array[1] = "DRIVERSTRING  -" + Driver_String(nGapStartDriver, nGapEndDriver, "POSITIONS", "T10_2", "UPDOWN")      ;
             nEditArrayLen = 1;
             //********** asPhrases[23] = "Next up were #DRIVERSTRING#" **********;
             sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[23]);

             asEdit_Rules_Array[1] = "AMOUNT        -" + nGapTotalDrivers;
             asEdit_Rules_Array[2] = "TIME          -" + Seconds_To_Time(nSavedTempGap) + " seconds";
             nEditArrayLen = 2;
             //********** asPhrases[20] = " these #AMOUNT# covered by only #TIME# !" **********;
             sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[20]);
          }


          nDriverStringStart = (nGapEndDriver + 1);
          nDriverStringEnd = (10 - nDropOutCounter);
          nDriver = (nGapEndDriver + 1);
          bFlag_2sGap_REPORTED = true;

       }
   }

    //Next check to see if(the current top 10 driver has had a slow lap (105% AVG)

    //Slow Lap

    if(nDriver < 11) {
       nSlowLap = (nAvgLap * 0.85);

       if(anT10_LapTime_2[nDriver] > nSlowLap && anT10_LapPos_2[nDriver] < anT10_LapPos_1[nDriver]){
          Find_Driver_Pos(asT10_Driver_2[nDriver], nPassed_Lap);
          asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[nDriver];
          asEdit_Rules_Array[2] = "LAPTIME       -" + Seconds_To_Time(anT10_LapTime_2[nDriver]);
          asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
          nEditArrayLen = 3;
          //********** asPhrases[5] = "#DRIVER# had a slow #LAPTIME# lap dropping them to #POSITION#." **********;
          sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[5]);
       }
    }

    nDriver++;
}

//Report latest DriverString

if(nDriverStringStart != 0 && nDriverStringEnd != 0 && nDriverStringStart <= nDriverStringEnd) {

   if(bFlag_Leader_Reported == false) {
      asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
      asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(nDriverStringStart, nDriverStringEnd,"POSITIONS", "T10_2", "UPDOWN")      ;
      nEditArrayLen = 2;
      //******** asPhrases[29] = "#DRIVER# led, with #DRIVERSTRING#." *******      ;
      sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[29]);
      bFlag_Leader_Reported = true;
      nDriverStringStart = nDriverStringEnd+1;
   } 

   if (nDriverStringStart < 10 && nDriverStringStart <= nDriverStringEnd) { 
      asEdit_Rules_Array[1] = "DRIVERSTRING  -" + Driver_String(nDriverStringStart, nDriverStringEnd,"POSITIONS", "T10_2", "UPDOWN")      ;
      nEditArrayLen = 1;
      //********** asPhrases[28] = "#DRIVERSTRING#" *********;
      sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[28]);
   }
   nDriverStringStart = 0;
   nDriverStringEnd = 0;

}

//Best positions Gained in this Lap

if(bFlag_3Places_REPORTED == false) {
   Best_Gained_Positions(nPassed_Lap);
   Find_Driver_Pos(sBestGain_Driver , nPassed_Lap);

   if(nPassed_Lap == 1){
       if (sBestGain_Driver != "") {
         asEdit_Rules_Array[1] = "DRIVER        -" + sBestGain_Driver   ;
         asEdit_Rules_Array[2] = "AMOUNT        -" + nBestGain;
         asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
         asEdit_Rules_Array[4] = "GRIDPOS       -" + asGridPos[nFound_Pos];
         nEditArrayLen = 4;
         //******* asPhrases[13] = "#DRIVER# made a great start gaining #AMOUNT# places, slotting into #POSITION#, from grid #GRIDPOS#.";
         sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[13]);
      }
   }else{
      if(nBestGain > 2){
         nDriverStringEnd = (nDriver - 1);

         if(nDriverStringStart != 0 && nDriverStringEnd != 0 && nDriverStringStart < nDriverStringEnd) {
            if(bFlag_Leader_Reported == false) {
               asEdit_Rules_Array[1] = "DRIVER        -" + asT10_Driver_2[1]   ;
               asEdit_Rules_Array[2] = "DRIVERSTRING  -" + Driver_String(nDriverStringStart, nDriverStringEnd,"POSITIONS", "T10_2", "UPDOWN")      ;
               nEditArrayLen = 2;
               //******** asPhrases[29] = "#DRIVER# led, with #DRIVERSTRING#." *******      ;
               sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[29]);
               bFlag_Leader_Reported = true;
               nDriverStringStart = nDriverStringEnd+1;
            } 
         }

         if (nDriverStringStart != 0 && nDriverStringEnd != 0 && nDriverStringStart < 10 && nDriverStringStart <= nDriverStringEnd) { 
            asEdit_Rules_Array[1] = "DRIVERSTRING  -" + Driver_String(nDriverStringStart, nDriverStringEnd,"POSITIONS", "T10_2", "UPDOWN")      ;
            nEditArrayLen = 1;
            //********** asPhrases[28] = "#DRIVERSTRING#" **********;
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[28]);
            nDriverStringStart = 0;
            nDriverStringStart = 0;
         }

         if(nBestGain > 4) {
            asEdit_Rules_Array[1] = "DRIVER        -" + sBestGain_Driver   ;
            asEdit_Rules_Array[2] = "AMOUNT        -" + nBestGain;
            asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
            nEditArrayLen = 3;
            //********** asPhrases[8] = "#DRIVER# gained a fantastic #AMOUNT# places up to #POSITION#." **************;
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[8]);
         }else{
            asEdit_Rules_Array[1] = "DRIVER        -" + sBestGain_Driver   ;
            asEdit_Rules_Array[2] = "AMOUNT        -" + nBestGain;
            asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
            nEditArrayLen = 3;
            //********** asPhrases[12] = "#DRIVER# gained #AMOUNT# places, up to #POSITION#.";
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[12]);
         }

         bFlag_3Places_REPORTED = true;
      }
   }
}

//at the end of the checks, report drop outs && New Ins.

nLoop = 1;
nCounter = 0;

while (nLoop < 11 && asDropOut_Driver[nLoop] != "") {
   nCounter = nCounter + 1;
   nLoop = nLoop + 1;
}

if(nCounter == 1) {
   Find_Driver_Pos(asDropOut_Driver[1], nPassed_Lap);
   if(aGraphData[nPassed_Lap][nFound_Pos].getLaptime() > nAvgLap) {
      asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
      asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
      asEdit_Rules_Array[3] = "DRIVER2       -" + asNewIn_Driver[1];
      nEditArrayLen = 3;
      //********** asPhrases[7] = "#DRIVER1# dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
      if(aGraphData[nPassed_Lap][nFound_Pos].getPitLap() != "") {
         if(Is_Pit_Indicator(aGraphData[nPassed_Lap][nFound_Pos].getPitLap())) {
            asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
            if (aGraphData[nPassed_Lap][nFound_Pos].getMediaLink1() != "" || aGraphData[nPassed_Lap][nFound_Pos].getMediaLink2() != "") {
               asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2") + " (media link available)";
            } else {
               asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2");
            } 
            asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
            asEdit_Rules_Array[4] = "DRIVER2       -" + asNewIn_Driver[1];
            nEditArrayLen = 4;
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[38]);
         } else {
            asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
            if (aGraphData[nPassed_Lap][nFound_Pos].getMediaLink1() != "" || aGraphData[nPassed_Lap][nFound_Pos].getMediaLink2() != "") {
               asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2") + " (media link available)";
            } else {
               asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2");
            } 
            asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
            asEdit_Rules_Array[4] = "DRIVER2       -" + asNewIn_Driver[1];
            nEditArrayLen = 4;
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[40]);
         }
      } else {
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[7]);
      }
   }else if(anDropOut_LapTime[1] > nSlowLap){
          asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
          asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
          asEdit_Rules_Array[3] = "DRIVER2       -" + asNewIn_Driver[1];
          nEditArrayLen = 3;
          //********** asPhrases[32] = "#DRIVER1# had a slow lap && dropped down the order restarting in #POSITION#, promoting #DRIVER2# into the top 10.";
          if(aGraphData[nPassed_Lap][nFound_Pos].getPitLap() != "") {
             if(Is_Pit_Indicator(aGraphData[nPassed_Lap][nFound_Pos].getPitLap())) {
                asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
                if (aGraphData[nPassed_Lap][nFound_Pos].getMediaLink1() != "" || aGraphData[nPassed_Lap][nFound_Pos].getMediaLink2() != "") {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2") + " (media link available)";
                } else {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2");
                } 

                asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
                asEdit_Rules_Array[4] = "DRIVER2       -" + asNewIn_Driver[1];
                nEditArrayLen = 4;
                sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[38]);
             } else {
                asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
                if (aGraphData[nPassed_Lap][nFound_Pos].getMediaLink1() != "" || aGraphData[nPassed_Lap][nFound_Pos].getMediaLink2() != "") {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2") + " (media link available)";
                } else {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2");
                } 

                asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
                asEdit_Rules_Array[4] = "DRIVER2       -" + asNewIn_Driver[1];
                nEditArrayLen = 4;
                sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[39]);
             }
          } else {
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[32]);
          }
   }else{
          asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
          asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
          asEdit_Rules_Array[3] = "DRIVER2       -" + asNewIn_Driver[1];
          nEditArrayLen = 3;
          //********** asPhrases[31] = "#DRIVER1# dropped to #POSITION#, allowing #DRIVER2# into the top 10.";
          if(aGraphData[nPassed_Lap][nFound_Pos].getPitLap() != "") {
             if(Is_Pit_Indicator(aGraphData[nPassed_Lap][nFound_Pos].getPitLap())) {
                asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
                if (aGraphData[nPassed_Lap][nFound_Pos].getMediaLink1() != "" || aGraphData[nPassed_Lap][nFound_Pos].getMediaLink2() != "") {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2") + " (media link available)";
                } else {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2");
                } 

                asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
                asEdit_Rules_Array[4] = "DRIVER2       -" + asNewIn_Driver[1];
                nEditArrayLen = 4;
                sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[42]);
             } else {
                asEdit_Rules_Array[1] = "DRIVER1       -" + asDropOut_Driver[1];
                if (aGraphData[nPassed_Lap][nFound_Pos].getMediaLink1() != "" || aGraphData[nPassed_Lap][nFound_Pos].getMediaLink2() != "") {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2") + " (media link available)";
                } else {
                   asEdit_Rules_Array[2] = "REASON        -" + Get_Indicator_Description(aGraphData[nPassed_Lap][nFound_Pos].getPitLap(),"2");
                } 

                asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
                asEdit_Rules_Array[4] = "DRIVER2       -" + asNewIn_Driver[1];
                nEditArrayLen = 4;
                sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[41]);
             }
          } else {
            sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[31]);
          }

   }
}else if(nCounter > 0){
       asEdit_Rules_Array[1] = "DRIVERSTRING1 -" + Driver_String(1, nCounter, "", "DropOuts", "");
       asEdit_Rules_Array[2] = "DRIVERSTRING2 -" + Driver_String(1, nCounter, "", "NewIns", "");
       nEditArrayLen = 2;
       //********** asPhrases[27] = "#DRIVERSTRING1# all dropped down the order, promoting #DRIVERSTRING2# into the top 10.";
       sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[27]);
}

if(nPassed_Lap == nCommentary_FastestLapOn) {
   if(bFlag_FastestLap_REPORTED == false) {
      Find_Driver_Pos(sCommentary_FastestDriver, nPassed_Lap);

      if(nFound_Pos <= 10) {
         asEdit_Rules_Array[1] = "DRIVER        -" + sCommentary_FastestDriver;
         asEdit_Rules_Array[2] = "LAPTIME       -" + Seconds_To_Time(nCommentary_FastestLap);
         nEditArrayLen = 2;
         //********** asPhrases[10] = " #DRIVER# set the fastest lap of the race with a #LAPTIME#." ********;
	 if (bIs_Fastest_Lap_Record) {
         	sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[43]);
	 } else {
         	sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[10]);
	 }
      }else{
         asEdit_Rules_Array[1] = "DRIVER        -" + sCommentary_FastestDriver;
         asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
         asEdit_Rules_Array[3] = "LAPTIME       -" + Seconds_To_Time(nCommentary_FastestLap);
         nEditArrayLen = 3;
         //********** asPhrases[6] = " Meanwhile, #DRIVER# down in #POSITION#the fastest lap of the race with a #LAPTIME#." ********;
         sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[6]);
      } 
   } 
}

if(sCommentary_WinningDriver != "") {

   //Find and store best position in race so far for eventual winning driver;
   Find_Driver_Pos(sCommentary_WinningDriver, nPassed_Lap);

   if(nFound_Pos < nCommentary_Saved_BestPos || nCommentary_Saved_BestPos == 0) {
      nCommentary_Saved_BestPos = nFound_Pos;
   }

   Find_Driver_Pos(sCommentary_WinningDriver, nPassed_Lap);

   if(nFound_Pos > 10) {
      if(nCommentary_Saved_BestPos < nFound_Pos) {
         asEdit_Rules_Array[1] = "DRIVER        -" + sCommentary_WinningDriver;
         asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
         asEdit_Rules_Array[3] = "BESTPOS       -" + Get_Position_String(nCommentary_Saved_BestPos);

         nEditArrayLen = 3;
         //********** asPhrases[33] = " #DRIVER# was now down in #POSITION# position having been as high up as #BESTPOS# at one stage." ********;
        sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[33]);
      }else{
         asEdit_Rules_Array[1] = "DRIVER        -" + sCommentary_WinningDriver;
         asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
         nEditArrayLen = 2;
         //********** asPhrases[35] = " #DRIVER# was in #POSITION# position." ********;
         sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[35]);
      }
   }
}

//**********************************************
// Sort the Watched Drivers into Position Order
//**********************************************

var n = 0;
var nPos = 0;

if(nPassed_Lap == 1 || nPassed_Lap == parseInt(nRaceLaps/2) || nPassed_Lap == nRaceLaps || nPassed_Lap == (nRaceLaps-1)){
   var nLowestPos;
   var nHighestPos;

   nLowestPos = 0;
   nHighestPos = 0;

   for (n = 1;n <= nDriver_Records;n++) {
      if(asWatchedDrivers[n] != "" && asWatchedDrivers[n] != sCommentary_WinningDriver) {

         Find_Driver_Pos(asWatchedDrivers[n], nPassed_Lap);
         if(nFound_Pos > 10) {
            if(nFound_Pos < nLowestPos || nLowestPos == 0 ){
               nLowestPos = nFound_Pos;
            }

            if(nFound_Pos > nHighestPos || nHighestPos == 0) {
               nHighestPos = nFound_Pos;
            }
         }
      }
      if (asWatchedDrivers[n] == "") {
         n = nDriver_Records + 1;
      }
   }
}

var nPos;
var sPassDriver;

if(nPassed_Lap == 1 || nPassed_Lap == parseInt(nRaceLaps/2) || nPassed_Lap == nRaceLaps || nPassed_Lap == (nRaceLaps-1)){
   for (nPos = nLowestPos;nPos <= nHighestPos;nPos++) {
       for (n = 1;n <= nDriver_Records;n++) {

          if(asWatchedDrivers[n] != "" && asWatchedDrivers[n] != sCommentary_WinningDriver) {

             sPassDriver = asWatchedDrivers[n];

             Find_Driver_Pos(asWatchedDrivers[n], nPassed_Lap);

             if(nFound_Pos == nPos) { 
                if(nPassed_Lap == nRaceLaps) {
                   asEdit_Rules_Array[1] = "DRIVER        -" + asWatchedDrivers[n];
                   asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
                   nEditArrayLen = 2;
                   //********** asPhrases[34] = " #DRIVER# finished in #POSITION# position." ********;
                   sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[34]);
                }else{ 
                   if(nPassed_Lap = 1) {
                      asEdit_Rules_Array[1] = "DRIVER        -" + asWatchedDrivers[n];
                      asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
                      nEditArrayLen = 2;
                      //********** asPhrases[35] = " #DRIVER# was in #POSITION# position." ********;
                      sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[35]);
                   }else{ 
                      if(nFound_LapTime > nAvgLap){
                         asEdit_Rules_Array[1] = "DRIVER        -" + asWatchedDrivers[n];                                                                                                                                                                                                                                              
                         nEditArrayLen = 3;
                         //********** asPhrases[5] = " #DRIVER# had a slow #LAPTIME# lap dropping them to #POSITION#." *********;
                         sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[5]);
                      }else{  
                         asEdit_Rules_Array[1] = "DRIVER        -" + asWatchedDrivers[n];
                         asEdit_Rules_Array[2] = "POSITION      -" + Get_Position_String(nFound_Pos);
                         nEditArrayLen = 2;
                         //********** asPhrases[9] = " #DRIVER# was now running in #POSITION# position." ********;
                         sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[9]);
                      }
                   }
                }
             }
          }
       }
   }
}else{
   for (n = 1;n <= nDriver_Records;n++) {
         if(asWatchedDrivers[n] != "" && asWatchedDrivers[n] != sCommentary_WinningDriver) {

            Find_Driver_Pos(asWatchedDrivers[n], nPassed_Lap);

            if(nFound_Pos > 10) {
               if(nPassed_Lap != nRaceLaps,3) {

                  if(nFound_LapTime > nAvgLap) {
                     asEdit_Rules_Array[1] = "DRIVER        -" + asWatchedDrivers[n];
                     asEdit_Rules_Array[2] = "LAPTIME       -" + Seconds_To_Time(nFound_LapTime);
                     asEdit_Rules_Array[3] = "POSITION      -" + Get_Position_String(nFound_Pos);
                     nEditArrayLen = 3;
                     //********** asPhrases[5] = " #DRIVER# had a slow #LAPTIME# lap dropping them to #POSITION#." *********;
                     sCommentary_String = sCommentary_String + Phrase_Edit(asPhrases[5]);
                  }
               }
            }
         }
   }
}

alert(sCommentary_String);

}


//*********************************************************************************************

function Race_Chart() {

Stop_Race();

Race_Chart_NEW();

}

//*********************************************************************************************

function Race_Chart_NEW() {

document.getElementById("DivText3").innerHTML = "<P></P>";

document.getElementById("DivText2").innerHTML = "<P></P>";

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='SubjectTable' WIDTH=400 BORDER=1 ALIGN=CENTER>";
sHTML += "<TR><TD class='SubjectBox' BGCOLOR='#E8F3FF' ALIGN=CENTER>Race Chart</TD></TR>";
sHTML += "</TABLE><BR>";

document.getElementById("DivText2").innerHTML = sHTML;

var nWidth = (graphWidth > 900) ? 900 : graphWidth;
var nHeight = (graphHeight > 600) ? 600 : graphHeight;

sHTML = "<table class='DetTable' border='0' width='" + nWidth + "' align=center><tr><td><div style='height:" + nHeight + ";width:" + nWidth + "; overflow:auto' align='center'>";
sHTML = sHTML +	"<table border='0'>";
sHTML = sHTML +	"<tr>";
sHTML = sHTML +	"<td><img src='" + raceChartIMG + "' alt='' border='0' onMouseMove='getGraphXY(event,this);' onClick='nSelectedLap = glap;Race_Table();'></td>";
sHTML = sHTML +	"</tr>";
sHTML = sHTML + "</table>";
sHTML = sHTML +	"</div>";

sHTML = sHTML +	"<div id='DriverDetails' style='position: absolute; width:300; z-index: 101; top: 400px; left: 100px; visibility: hidden; border-left: black thin solid; border-right: black thin solid; border-top: black thin solid; border-bottom: black thin solid;'></div>";
sHTML += "<p><center>Click chart to display times for selected lap</center></p>";
sHTML = sHTML + "</td></tr></table>";

document.getElementById("DivText3").innerHTML = sHTML;

}

//**********************************************************************************************************************************

function getGraphXY(evt,img) {

var OffsetX = 0;
var OffsetY = 0;
var isOpera, isIE, isNav, isFox, isOther = false;

if (navigator.userAgent.indexOf("Opera")!=-1) {
    isOpera = true;
} else if (navigator.userAgent.indexOf("Firefox")!=-1) {
    isFox = true;
} else if (navigator.appName == "Microsoft Internet Explorer") {
    isIE = true;
} else if (navigator.appName == "Netscape") {
    isNav = true;
} else {
    isOther = true;
}

if (isIE) {
   var lap = Math.round((window.event.offsetX-leftOffset)/XScale);

   var pos = (Math.round(((window.event.offsetY-topOffset)/YScale)));

   var top =  window.event.offsetY+graphHeight-200;
   var left = 0;
} else {
   if (window.event) {
      OffsetX = window.event.offsetX;
      OffsetY = window.event.offsetY;
   } else if (evt.target) {
             var coords = {x: 0, y: 0};
             var el = evt.target;
             do {
                coords.x += el.offsetLeft;
                coords.y += el.offsetTop;
             }
             while ((el = el.offsetParent));
                OffsetX = evt.clientX - coords.x;
                OffsetY = evt.clientY - coords.y;
   }
   var lap = Math.round((OffsetX-leftOffset)/XScale);

   var pos = (Math.round(((OffsetY-topOffset)/YScale)));

   var top =  OffsetY+graphHeight-200;
   var left = 0;
}

if (lap < 1) {
   if(bNoGridTimes == false) {
       lap = 0;
   } else {
       lap = 1;
   }
}

if (lap > nRaceLaps) {
    lap = nRaceLaps;
}

if (pos < 1) {
    pos = 1;
}

if (pos > nDriver_Records) {
    pos = nDriver_Records;
}

if (oldLap != lap || oldPos != pos) {
    Display_Driver(evt,lap,pos,aGraphData[lap][pos].getLaptime(),aGraphData[lap][pos].getEntrantName(),aGraphData[lap][pos].getGapNext(),aGraphData[lap][pos].getGapFollowing(),aGraphData[lap][pos].getGapLeader(),aGraphData[lap][pos].getLapsCompleted(),aGraphData[lap][pos].getPitLap(),aGraphData[lap][pos].getStintNo(),top,left, aGraphData[lap][pos].getMediaLink1(),aGraphData[lap][pos].getMediaLink2(), aGraphData[lap][pos].getRaceTime(), aGraphData[lap][pos].getStintChange(), aGraphData[lap][pos].getBestLap(), aGraphData[lap][pos].getBestLapOn());
}

if (!bNoGridTimes) {
   glap = lap;
} else {
   if (lap <= 1) {
      glap = 1;  
   } else {
      glap = lap;
   }
}

if (lap > nRaceLaps) {
   glap = nRaceLaps;
}


}

//************************************************************************************************************************************
function hideLapDetails() {

var isOpera, isIE, isNav, isFox, isOther = false;

if (navigator.userAgent.indexOf("Opera")!=-1) {
    isOpera = true;
} else if (navigator.userAgent.indexOf("Firefox")!=-1) {
    isFox = true;
} else if (navigator.appName == "Microsoft Internet Explorer") {
    isIE = true;
} else if (navigator.appName == "Netscape") {
    isNav = true;
} else {
    isOther = true;
}

if (isIE) {
   var div = window.document.all['DriverDetails'];
   div.style.visibility = "hidden";
   clearTimeout(timerID);
} else {
   var div = window.document.getElementId('DriverDetails');
   div.style.visibility = "hidden";
   clearTimeout(timerID);
}

}

//************************************************************************************************************************************

function Display_Driver(passedEvent, nPassed_Lap, nPassed_Driver, laptime, name, gapNext, gapFollowing, gapLeader, lapsCompleted, pitLap, stintNo,nPassed_Top, nPassed_Left,sPassed_MediaLink1, sPassed_MediaLink2, Passed_RaceTime, Passed_StintChange, Passed_BestLap, Passed_BestLapOn) {

var nPoints_diff;

var div;
var top = 0;
var left = 0;

var isOpera, isIE, isNav, isFox, isOther = false;

if (navigator.userAgent.indexOf("Opera")!=-1) {
    isOpera = true;
} else if (navigator.userAgent.indexOf("Firefox")!=-1) {
    isFox = true;
} else if (navigator.appName == "Microsoft Internet Explorer") {
    isIE = true;
} else if (navigator.appName == "Netscape") {
    isNav = true;
} else {
    isOther = true;
}

if (isIE) {
   div = window.document.all['DriverDetails'];
   top = window.event.clientY + document.body.scrollTop-150;
   left = ((window.document.body.clientWidth-graphWidth)/2)+((graphWidth-300)/2);
   clearTimeout(timerID);
} else {
   div = document.getElementById('DriverDetails');
   top = passedEvent.clientY + window.scrollY-150;
   left = ((window.innerWidth-graphWidth)/2)+((graphWidth-300)/2);
   clearTimeout(timerID);
}

div.style.visibility = "visible";
div.style.top = top + "px";	
div.style.left = left + "px";


oldLap = nPassed_Lap;
oldPos = nPassed_Driver;

nLastLap = nPassed_Lap-1;

document.getElementById("DriverDetails").innerHTML = "";
sHTML3 = "<TABLE class='RaceChartTable' BGCOLOR='99CCFF' BORDER=1 WIDTH=350 ALIGN=CENTER>";
sHTML3 += "<TR>";
sHTML3 += "<TD class='RaceChartBox' WIDTH=350 BGCOLOR='99CCFF' ALIGN=LEFT>";

sHTML3 += "<TABLE class='RaceChartTable' BORDER=0 WIDTH=350 ALIGN=LEFT>";

if(nPassed_Lap == 0) {
   sHTML3 += "<TR>";
   sHTML3 += "<TD class='RaceChartBox' WIDTH=350 ALIGN=CENTER>";
   sHTML3 += "<FONT FACE='Verdana' SIZE=2><B>" + name + "</B></FONT>";
   sHTML3 += "</TD></TR>";
   sHTML3 += "<TR>";
   sHTML3 += "<TD class='RaceChartBox' WIDTH=350 ALIGN=CENTER>";
   if (nPassed_Driver == 1) {
      sHTML3 += "<FONT FACE='Verdana' SIZE=2>Pole Position</FONT>";
   } else {
      sHTML3 += "<FONT FACE='Verdana' SIZE=2>Grid: " + nPassed_Driver + "</FONT>";
   }
   sHTML3 += "</TD></TR>";

   if (anLapTime[0][nPassed_Driver] > 0) {
       sHTML3 += "<TD class='RaceChartBox' WIDTH=350 ALIGN=CENTER>";
       sHTML3 += "<FONT FACE='Verdana' SIZE=2>" + Seconds_To_Time(anLapTime[0][nPassed_Driver]) + "</FONT>";
       sHTML3 += "</TD></TR>";
   }
   if (nPassed_Driver > 1 && anLapTime[0][nPassed_Driver] > 0) {
       sHTML3 += "<TD class='RaceChartBox' WIDTH=350 ALIGN=CENTER>";
       sHTML3 += "<FONT FACE='Verdana' SIZE=2>(+" + Seconds_To_Time(aGraphData[0][nPassed_Driver].getGapLeader()) + ")</FONT>";
       sHTML3 += "</TD></TR>";
   }
}

if(nPassed_Lap != 0) {
   sHTML3 += "<TR><TD class='RaceChartBox' WIDTH=350 ALIGN=LEFT>";
   sHTML3 += "<FONT FACE='Verdana' SIZE=2><B>" + name + "</B></FONT>";
   sHTML3 += "</TD></TR>";

   sHTML3 += "<TR><TD class='RaceChartBox' WIDTH=350 ALIGN=LEFT>";
   sHTML3 += "<TABLE class='RaceChartTable' BORDER=0 WIDTH=350 ALIGN=LEFT>";
   sHTML3 += "<TR>";
   sHTML3 += "<TD class='RaceChartBox' WIDTH=115 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Lap : </B>" + nPassed_Lap + "</FONT></TD>";

   // WORK OUT POSITIONS ON PREVIOUS LAP
   if (nPassed_Lap > 0) {
      sGain = 0;
      for (n = 1;n <= nDriver_Records;n++) {
          if (aGraphData[nPassed_Lap-1][n].getEntrantName() == name) {
             sGain = n - nPassed_Driver;
             n = nDriver_Records+1;
          }
      }
   
      if (sGain >= 0) {
         sGain = "+" + String(sGain);
      }
     
   } else {
      sGain = "+0";
   }

   if (sGain == -999) {
      sHTML3 += "<TD class='RaceChartBox' WIDTH=155 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Position : </B>" + nPassed_Driver + "</FONT></TD>";
   } else {
      sHTML3 += "<TD class='RaceChartBox' WIDTH=155 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Position : </B>" + nPassed_Driver + " (" + sGain + ")</FONT></TD>";
   }

   //** STINT NO.
   sHTML3 += "<TD class='RaceChartBox' WIDTH=115 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Stint : </B>" + stintNo + "</FONT></TD>";

   sHTML3 += "</TR>";
   sHTML3 += "</TABLE>";
   sHTML3 += "</TD></TR>";

   //** LAP TIME

   sHTML3 += "<TR><TD class='RaceChartBox' WIDTH=350 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Lap Time : </B>";

   if(laptime != 0){
      sHTML3 += Seconds_To_Time(laptime);
   }else{
      sHTML3 += "-----";
   }

   if(laptime != 0){
     if(sChamp_Type == "SPRINT"){
        sHTML3 += " (" + format_MPH(3600 / (((laptime / anTrackLength[nCurrent_Round])*1000)*1.6093)) + " mph)";
     }else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
              sHTML3 += " (" + format_MPH(3600 / (((laptime / anTrackLength[nCurrent_Round])*1000)*1.6093)) + " mph)";
     }else if(sChamp_Type == "CAR"){
              sHTML3 += " (" + format_MPH(3600 / (((laptime / anTrackLength[nCurrent_Round])*1000)*1.6093)) + " mph)";
     }
   }

   if(pitLap != "") {
      sHTML3 += "<IMG BORDER='0' IMG ALT='" + TrimString(pitLap) + " - " + Get_Indicator_Description(pitLap,"1") +  "' SRC='" + "../images/" + TrimString(pitLap) + ".png'>";
   }

   if (sPassed_MediaLink1 != "") {
       sHTML3 += "<A HREF='" + sPassed_MediaLink1 + "' TARGET='_blank'><IMG BORDER='0' ALT='Media Link 1 - " + sPassed_MediaLink1 + "' SRC='../images/Media.png' WIDTH=22 HEIGHT=17></A>";
   }

   if (sPassed_MediaLink2 != "") {
       sHTML3 += "<A HREF='" + sPassed_MediaLink2 + "' TARGET='_blank'><IMG BORDER='0' ALT='Media Link 2 - " + sPassed_MediaLink2 + "' SRC='../images/Media.png' WIDTH=22 HEIGHT=17></A>";
   }


   sHTML3 += "</FONT></TD></TR>";
				
   sHTML3 += "<TR><TD class='RaceChartBox' WIDTH=350 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Gap To Next : </B>"; 

   //Gap to next team

   if(nPassed_Driver == 1){
      sHTML3 += "----";
   }else{
        if(lapsCompleted == aGraphData[nPassed_Lap][nPassed_Driver-1].getLapsCompleted()){ ;
           nPoints_diff = (TruncNum(gapNext));

           if (nPoints_diff < 0) {
              nPoints_diff = nPoints_diff * -1;
           }

           sHTML3 += "-" + Seconds_To_Time(nPoints_diff) + (nPassed_Lap >= 2 ? ((aGraphData[nPassed_Lap][nPassed_Driver].getGapNext() < aGraphData[nPassed_Lap-1][nPassed_Driver].getGapNext()) ? "<FONT COLOR='GREEN'> -</COLOR>" : "<FONT COLOR='RED'> +</COLOR>") : "");
        }else{
           if((aGraphData[nPassed_Lap][nPassed_Driver-1].getLapsCompleted() - lapsCompleted) == 1){
               sHTML3 += "-" + (aGraphData[nPassed_Lap][nPassed_Driver-1].getLapsCompleted() - lapsCompleted) + " Lap";
           }else{
               sHTML3 += "-" + (aGraphData[nPassed_Lap][nPassed_Driver-1].getLapsCompleted() - lapsCompleted) + " Laps";
           }
        }
   }

   if(nPassed_Driver != 1){
      sHTML3 += " (" + aGraphData[nPassed_Lap][nPassed_Driver-1].getEntrantName() + ")";
   }

   sHTML3 += "</FONT></TD></TR>";

   //Gap to Following team

   sHTML3 += "<TR><TD class='RaceChartBox' WIDTH=350 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Gap To Following : </B>"; 

   if(nPassed_Driver == nDriver_Records){
      sHTML3 += "----";
   }else{
        if(lapsCompleted == aGraphData[nPassed_Lap][nPassed_Driver+1].getLapsCompleted()){ ;
           nPoints_diff = (TruncNum(gapFollowing));
        
           if (nPoints_diff < 0) {
              nPoints_diff = nPoints_diff * -1;
           }
           sHTML3 += "+" + Seconds_To_Time(nPoints_diff) + (nPassed_Lap >= 2 ? ((aGraphData[nPassed_Lap][nPassed_Driver].getGapFollowing() > aGraphData[nPassed_Lap-1][nPassed_Driver].getGapFollowing()) ? "<FONT COLOR='GREEN'> -</COLOR>" : "<FONT COLOR='RED'> +</COLOR>") : "");
        }else{
           if((lapsCompleted - aGraphData[nPassed_Lap][nPassed_Driver+1].getLapsCompleted()) == 1){
               sHTML3 += "+" + (lapsCompleted - aGraphData[nPassed_Lap][nPassed_Driver+1].getLapsCompleted()) + " Lap";
           }else{
               sHTML3 += "+" + (lapsCompleted - aGraphData[nPassed_Lap][nPassed_Driver+1].getLapsCompleted()) + " Laps";
           }
        }
   }

   if(nPassed_Driver != nDriver_Records){
      sHTML3 += " (" + aGraphData[nPassed_Lap][nPassed_Driver+1].getEntrantName() + ")";
   }

   sHTML3 += "</FONT></TD></TR>";


   // gap to leader
   sHTML3 += "<TR><TD class='RaceChartBox' WIDTH=350 ALIGN=LEFT><FONT FACE='Verdana' SIZE=1><B>Gap To Leader : </B>"; 

   if(nPassed_Driver == 1){
      sHTML3 += "----";
   }else{
      if(lapsCompleted == aGraphData[nPassed_Lap][1].getLapsCompleted()){ ;
         nPoints_diff = (TruncNum(gapLeader));

         if (nPoints_diff < 0) {
            nPoints_diff = nPoints_diff * -1;
         }
 
        sHTML3 += "-" + Seconds_To_Time(nPoints_diff) + (nPassed_Lap >= 2 ? ((aGraphData[nPassed_Lap][nPassed_Driver].getGapLeader() < aGraphData[nPassed_Lap-1][nPassed_Driver].getGapLeader()) ? "<FONT COLOR='GREEN'> -</COLOR>" : "<FONT COLOR='RED'> +</COLOR>") : "");
      }else{

         if((aGraphData[nPassed_Lap][1].getLapsCompleted() - lapsCompleted) == 1){
           sHTML3 += "-" + (aGraphData[nPassed_Lap][1].getLapsCompleted() - lapsCompleted) + " Lap";
         }else{
           sHTML3 += "-" + (aGraphData[nPassed_Lap][1].getLapsCompleted() - lapsCompleted) + " Laps";
         }
      }
   }

   if(nPassed_Driver != 1){
       sHTML3 += " (" + aGraphData[nPassed_Lap][1].getEntrantName() + ")";
   }

   sHTML3 += "</FONT></TD></TR>";
}

sHTML3 += "</TABLE>";

sHTML3 += "</TD>";
sHTML3 += "</TR>";
sHTML3 += "</TABLE>";

document.getElementById("DriverDetails").innerHTML = sHTML3;

timerID = setTimeout("hideLapDetails();", 4000);

}

//***************************************************************************************************************************

function LapPosData(lapNo, position, entrantName, laptime, gapNext, gapFollowing, gapLeader, lapsCompleted, pitLap, stintNo, MediaLink1, MediaLink2, RaceTime, StintChange, BestLap, BestLapOn) {
			this.lapNo = lapNo;
			this.position = position;
			this.entrantName = entrantName;
			this.laptime = laptime;
			this.gapNext = gapNext;
			this.gapFollowing = gapFollowing;
			this.gapLeader = gapLeader;
			this.lapsCompleted = lapsCompleted;
			this.pitLap = pitLap;
			this.stintNo = stintNo;
			this.MediaLink1 = MediaLink1;
			this.MediaLink2 = MediaLink2;
			this.RaceTime = RaceTime;
			this.StintChange = StintChange;
			this.BestLap = BestLap;
			this.BestLapOn = BestLapOn;
}

LapPosData.prototype.getLapNo = function() {
	return this.lapNo;
}
			
LapPosData.prototype.getPosition = function() {
	return this.position;
}
			
	
LapPosData.prototype.getEntrantName = function() {
	return this.entrantName;
}
			
			
LapPosData.prototype.getLaptime = function() {
	return this.laptime;
}
			
LapPosData.prototype.getGapNext = function() {
	return this.gapNext;
}

LapPosData.prototype.getGapFollowing = function() {
	return this.gapFollowing;
}

LapPosData.prototype.getGapLeader = function() {
	return this.gapLeader;
}

LapPosData.prototype.getLapsCompleted = function() {
	return this.lapsCompleted;
}

LapPosData.prototype.getPitLap = function() {
	return this.pitLap;
}

LapPosData.prototype.getStintNo = function() {
	return this.stintNo;
}

LapPosData.prototype.getMediaLink1 = function() {
	return this.MediaLink1;
}

LapPosData.prototype.getMediaLink2 = function() {
	return this.MediaLink2;
}

LapPosData.prototype.getRaceTime = function() {
	return this.RaceTime;
}

LapPosData.prototype.getStintChange = function() {
	return this.StintChange;
}

LapPosData.prototype.getBestLap = function() {
	return this.BestLap;
}

LapPosData.prototype.getBestLapOn = function() {
	return this.BestLapOn;
}

//*********************************************************************

function Get_Indicator_Description(sPassed_Indicator, sType) {

var asArray = new Array();
var sIndicator
var sDescription
var nPos

if(sType == "1") {
  asArray = asIndicator;
} else {
	if(sType == "2") {
	  asArray = asComIndicator;
	}
}

for (n = 1; n <= asArray.length-1; n++) {
	nPos = asArray[n].indexOf("|");
	if (nPos != -1) {
		sIndicator = asArray[n].substring(0, nPos);
	} else {
		sIndicator = "";
	}

	if(sPassed_Indicator.substring(0, sPassed_Indicator.length) == sIndicator.substring(0, sIndicator.length)) {
		nPos = asArray[n].indexOf("|");

		if (nPos != -1) {
			nPos++;
			sDescription = asArray[n].substring(nPos, asArray[n].length);
			if(sDescription != "") {
				bFound = true;
				return sDescription;
			}
			n = asDescription.length+1;
		}
	}
}

return "";

}

//*********************************************************************
function Is_Pit_Indicator(sPassed_Indicator) {

var asPit_Indicator = new Array();

asPit_Indicator[1] = "P";
asPit_Indicator[2] = "PM";
asPit_Indicator[3] = "PA";
asPit_Indicator[4] = "PD";
asPit_Indicator[5] = "BF";
asPit_Indicator[6] = "SG";
asPit_Indicator[7] = "DT";
asPit_Indicator[8] = "PP";
asPit_Indicator[9] = "PF";
asPit_Indicator[10] = "FD";
asPit_Indicator[11] = "BD";

for (n = 1;n <= asPit_Indicator.length-1;n++) {
    if (sPassed_Indicator.substring(0, asPit_Indicator[n].length) == asPit_Indicator[n]) {
        return true;
    }
}

return false;

}


//******************************************************************

function Java_Graph(sGraphType){

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

//***********************************************************************************
// Display Race Analysis Graph Applet
//***********************************************************************************

var sHTML = "";
var sHTML2 = "";
var nWidth = 400+(nRaceLaps*25);
var nHeight = 50+(nDriver_Records*25);
nHeight = nHeight < 800?800:nHeight;

sHTML2 += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML2 += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML2 += "</TABLE><BR>";

sHTML2 += "<TABLE class='HeadTable2' WIDTH=500 BORDER=1 ALIGN=CENTER>";
sHTML2 += "<TR><TD class='HeadBox2' BGCOLOR='#E8F3FF' ALIGN=CENTER>" + sGraphType + " Graph For Round " + nCurrent_Round + " - " + asTrackName[nCurrent_Round] + " " + asTrackDate[nCurrent_Round] + "</TD></TR>";
sHTML2 += "</TABLE>";
sHTML2 += "<BR>";

sHTML2 += "<TABLE class='DetTable' BORDER='1' ALIGN='Center' BGCOLOR='#FFFFFF' WIDTH=1200>";
sHTML2 += "<TR>";

sHTML2 += "</TR>";
sHTML2 += "</TABLE>";

document.getElementById("DivText2").innerHTML = sHTML2;

sHTML = "<TABLE class='DetTable' BORDER='0' WIDTH='" + nWidth + "' ALIGN=CENTER>";
sHTML += "<TR><TD>";
sHTML += "<DIV style='height:" + nHeight + ";width:" + nWidth + "; overflow:auto' ALIGN='CENTER'>";
sHTML += "<TABLE BORDER='0'>";
sHTML += "<TR>";
sHTML += "<TD>";

sHTML += "<APPLET CODE='RaceAnalysisGraphs.class' height=" + nHeight + " width=" + nWidth + ">";
sHTML += "<PARAM name='GraphType' value='" + sGraphType.toUpperCase() + "'>";
sHTML += "<PARAM name='NoLaps' value=" + nRaceLaps + ">";
sHTML += "<PARAM name='NoDrivers' value=" + nDriver_Records + ">";
sHTML += "<PARAM name='WindowHeight' value=" + nHeight + ">";
sHTML += "<PARAM name='WindowWidth' value=" + nWidth + ">";

var savedValue = 0;
var tempHTML = "";

for (n = 1;n <= nDriver_Records;n++) {
	sHTML += "<PARAM name='DriverData_" + (n-1) + "' value='" + asDriver[n];
	tempHTML += asDriver[n];
	savedValue = 0;

	for (m = 1;m <= nRaceLaps;m++) {
	   for (xx = 1;xx <= nDriver_Records;xx++) {
	     if(aGraphData[m][xx].getEntrantName() == asDriver[n]) {    
	  	if(sGraphType == "Lap Times"){
			sHTML += "," + aGraphData[m][xx].getLaptime();
			tempHTML += "," + aGraphData[m][xx].getLaptime();
	  	}

          	if(sGraphType == "Lap Speed"){
          	    if(aGraphData[m][xx].getLaptime() != 0) {    
          		sHTML += "," + format_MPH(3600 / (((aGraphData[m][xx].getLaptime() / anTrackLength[nCurrent_Round])*1000)*1.6093));
          		tempHTML += "," + format_MPH(3600 / (((aGraphData[m][xx].getLaptime() / anTrackLength[nCurrent_Round])*1000)*1.6093));
          	    } else {
          	        sHTML += ",0";
          	        tempHTML += ",0";
          	    }
          	}
          	
          	if(sGraphType == "Gap To Leader"){
          	    if(aGraphData[m][xx].getLapsCompleted() != aGraphData[m][1].getLapsCompleted()) {
   		        sHTML += "," + savedValue;
   		        tempHTML += "," + savedValue;
   		    } else {
   		        sHTML += "," + aGraphData[m][xx].getGapLeader();
   		        tempHTML += "," + aGraphData[m][xx].getGapLeader();
   		        savedValue = aGraphData[m][xx].getGapLeader();
   		    }
          	}
          	break;
             }
           }  
        }  

	sHTML += "'>";
}

sHTML += "</APPLET>";

sHTML += "</TD>";
sHTML += "</TR>";
sHTML += "</TABLE>";
//sHTML += tempHTML;
sHTML += "</DIV>";

sHTML += "</TD></TR>";
sHTML += "</TABLE>";

document.getElementById("DivText3").innerHTML = sHTML;

}

//***********************************************************************************
function Display_Graph_Menu(){

var X;
var nLap ;
var sHTML;

document.getElementById("DivText2").innerHTML = "<P></P>";
document.getElementById("DivText3").innerHTML = "<P></P>";
document.getElementById("DivText4").innerHTML = "<P></P>";

sHTML = "";

sHTML += "<TABLE class='HeadTable1' BORDER=1 ALIGN=CENTER WIDTH=400>";
sHTML += "<TR><TD class='HeadBox1' BGCOLOR='#A8D3FF' ALIGN=CENTER>" + sChamp_Name + " - " + sChamp_Year + "</TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable2' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
       if(sChamp_Name == "Endurance Series - The Challenge"){
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - Race " + nChallenge_RaceNo + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }else{
          sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
       }
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox2' BGCOLOR='#A8D3FF' ALIGN=CENTER>Race Analysis for Round " + nCurrent_Round + ((bExtra_Race == true && sExtra_Race_Desc != "") ? (" (" + sExtra_Race_Desc + ")") : "") + " - " + asTrackDate[nCurrent_Round] + "</TD></TR>";
}


sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='HeadTable3' BORDER=1 ALIGN=CENTER WIDTH=600>";

if(sChamp_Type == "SPRINT"){
   sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "ENDURANCE" || sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}else if(sChamp_Type == "CAR"){
        sHTML += "<TR><TD class='HeadBox3' BGCOLOR='#A8D3FF' ALIGN=CENTER>Circuit: " + asTrackName[nCurrent_Round] + " - Length: " + TruncNum(((anTrackLength[nCurrent_Round]/1000)/8)*5) + " Miles (" + anTrackLength[nCurrent_Round] + " Metres)</TD></TR>";
}

sHTML += "</TABLE><BR>";

sHTML += "<TABLE BORDER=0 ALIGN=CENTER WIDTH=200>";
sHTML += "<TR><TD ALIGN=CENTER><A HREF='" + sInstructionsLinkPrefix + "#Graphs' TARGET='_blank'><img src='../images/information.png'></A></TD></TR>";
sHTML += "</TABLE><BR>";

sHTML += "<TABLE class='' BORDER=0 ALIGN=CENTER WIDTH=600>";
sHTML += "<TR>";

sHTML += "<TD ALIGN=CENTER><A HREF='#'><span onclick='bUseHTMLGraphs = true;bUseJavaGraphs = false;Race_Graphs()'><img src='../images/HTML Graphs.png' alt='HTML Graphs'></span></A></TD>";

sHTML += "<TD ALIGN=CENTER><A HREF='#'><span onclick='bUseJavaGraphs = true;bUseHTMLGraphs = false;Race_Graphs()'><img src='../images/Java Graphs.png' alt='Java Graphs'></span></A></TD>";

sHTML += "</TR>";

sHTML += "<TR>";
sHTML += "<TD ALIGN=CENTER>Select HTML Graphs (2 Driver Compare)</TD>";
sHTML += "<TD ALIGN=CENTER>Select Java Graphs (All Driver Compare)</TD>";
sHTML += "</TR>";
sHTML += "</TABLE></TD>";

document.getElementById("DivText2").innerHTML = sHTML;

bNoRecalc = false;

}
