<!--

function CalculateOvernightElapsedTimeTo(CPName, crewNumber)
{
    var i;
    var iLoc;
    var elapsed="00:00:00";

    for(i=0;i<OvernightPs.length;++i)
    {
	if(OvernightPs[i][0]==crewNumber)
	{
	    var start = OvernightPs[i][4];
	    
	    iLoc=ConvertCPNameToOvernightInteger(CPName);
	    var finish = OvernightPs[i][iLoc];

	    elapsed = CalculateElapsedTime(start,finish);
	    break;
	}
    }

    return elapsed;
}


function CalculateFourDayElapsedTimeTo(CPName, crewNumber)
{
    var start1;
    var start2;
    var start3;
    var start4;
    var end1;
    var end2;
    var end3;
    var end4;
    var elapsed1="00:00:00";
    var elapsed2="00:00:00";
    var elapsed3="00:00:00";
    var elapsed4="00:00:00";
    var answer="00:00:00";
    var i;
    var iLoc;

    for(i=0;i<FourDayPs.length;++i)
    {
	if(FourDayPs[i][0]==crewNumber)
	{
	    start1=FourDayPs[i][5];
	    start2=FourDayPs[i][9];
	    start3=FourDayPs[i][14];
	    start4=FourDayPs[i][19];
	    end1=FourDayPs[i][8];
	    end2=FourDayPs[i][13];
	    end3=FourDayPs[i][18];
	    end4=FourDayPs[i][20];
		
	    if(start1!="" && end1!="")
		elapsed1=CalculateElapsedTime(start1,end1);
	    if(start2!="" && end2!="")
	        elapsed2=AddTimes(elapsed1,CalculateElapsedTime(start2,end2));
	    if(start3!="" && end3!="")
	    	elapsed3=AddTimes(elapsed2,CalculateElapsedTime(start3,end3));
	    if(start4!="" && end4!="")
	    	elapsed4=AddTimes(elapsed3,CalculateElapsedTime(start4,end4));

	    iLoc=ConvertCPNameToFourDayInteger(CPName);

	    if(iLoc<=8 && start1!="" && FourDayPs[i][iLoc]!="")
	    {	
		answer=CalculateElapsedTime(start1,FourDayPs[i][iLoc]);
	    }
	    else if(iLoc<=13 && start2!="" && elapsed1!="" && FourDayPs[i][iLoc]!="")
	    {
		answer=AddTimes(elapsed1,CalculateElapsedTime(start2,FourDayPs[i][iLoc]));
	    }
	    else if(iLoc<=18 && start3!="" && elapsed2!="" && FourDayPs[i][iLoc]!="")
	    {
	  	answer=AddTimes(elapsed2,CalculateElapsedTime(start3,FourDayPs[i][iLoc]));
	    }
	    else
		answer=elapsed4;
	    break;
	}
    } 

    return answer;
}

function ConvertCPNameToOvernightInteger(CPName)
{
    if(CPName=="Devizes")
	return 4;
    if(CPName=="Pewsey")
	return 5;
    if(CPName=="Hungerford")
	return 6;
    if(CPName=="Newbury")
	return 7;
    if(CPName=="Aldermaston")
	return 8;
    if(CPName=="Reading")
	return 9;
    if(CPName=="Marsh")
	return 10;
    if(CPName=="Marlow")
	return 11;
    if(CPName=="Bray")
	return 12;
    if(CPName=="Old Windsor")
	return 13;
    if(CPName=="Shepperton")
	return 14;
    if(CPName=="Teddington")
	return 15;
    if(CPName=="Westminster")
	return 16;

    return 0;	
}

function ConvertCPNameToFourDayInteger(CPName)
{
    if(CPName=="Devizes")
	return 5;
    if(CPName=="Pewsey")
	return 6;
    if(CPName=="Hungerford")
	return 7;
    if(CPName=="Newbury")
	return 8;
    if(CPName=="Aldermaston")
	return 10;
    if(CPName=="Reading")
	return 11;
    if(CPName=="Marsh")
	return 12;
    if(CPName=="Marlow")
	return 13;
    if(CPName=="Bray")
	return 15;
    if(CPName=="Old Windsor")
	return 16;
    if(CPName=="Shepperton")
	return 17;
    if(CPName=="Teddington")
	return 18;
    if(CPName=="Westminster")
	return 20;

    return 0;	
}

function AddTimes(time1, time2)
{
// Time may be a retired time

    var bRtd=false;

    if(time1.substring(0,3)=="rtd")
    {
	time1=time1.substring(4,12);
	bRtd=true;
    }
    if(time2.substring(0,3)=="rtd")
    {
	time2=time2.substring(4,12);
	bRtd=true;
    }

    var t1_hours = time1.substring(0,2);
    var t1_mins = time1.substring(3,5);
    var t1_secs = time1.substring(6,8);

    var t2_hours = time2.substring(0,2);
    var t2_mins = time2.substring(3,5);
    var t2_secs = time2.substring(6,8);
  
    var secs = parseInt(t1_secs*1) + parseInt(t2_secs*1);
    var minsFromSecs = secs/60;
    var mins=Math.floor(minsFromSecs);
    var totalSecs = Math.round((minsFromSecs-mins)*60);

    mins = parseInt(mins*1) + parseInt(t1_mins*1) + parseInt(t2_mins*1);
    var hoursFromMins = mins/60;
    var hours=Math.floor(hoursFromMins);
    var totalMins = Math.round((hoursFromMins-hours)*60);

    var totalHours = parseInt(hours*1) + parseInt(t1_hours*1) + parseInt(t2_hours*1);

    if(totalHours<10)
  	totalHours="0"+ totalHours;
    if(totalMins<10) 
	totalMins="0"+ totalMins;
    if(totalSecs<10)
	totalSecs="0"+ totalSecs;
		
    var total = totalHours + ":" + totalMins + ":" + totalSecs;

    if(bRtd==true)
	total = "rtd " + total;

    return total;
}

function CalculateETA(prevDistance,distance,prevElapsedTime,startTime)
{

    var ETA="&nbsp";

    var eHours;
    var eMins;
    var eTotalMins;
    var rtd;

    rtd=prevElapsedTime.substring(0,3);

    if(rtd=="rtd" || prevElapsedTime=="" || prevElapsedTime=="00:00:00" || prevElapsedTime=="&nbsp" || distance==0)
    {
    }
    else
    {
	eHours = prevElapsedTime.substring(0,2);
	eMins = prevElapsedTime.substring(3,5);

	eTotalMins = eHours*60;
	eTotalMins = parseInt(eTotalMins*1)+parseInt(eMins*1);
	
	// ETA in mins elapsed time
	ETA = 	distance * (eTotalMins/prevDistance);

	// ETA in hours : mins : secs
	var dHour;
	var dMin;
	var iHour;
	var iMin;

	// dHour = ETA / 60;
	// iHour = Math.floor(dHour);

	// dMin = (dHour - iHour)*60;
	// iMin = Math.floor(dMin);

	// ETA = iHour + ":" + iMin + ":" + "00";

	// Now add the ETA elapsed time to the start time
    	var startDay=startTime.substring(0,3);
    	var startHours=startTime.substring(4,6);
    	var startMins=startTime.substring(7,9);

	var eStartMins = startHours*60 + parseInt(startMins*1);

	eTotalMins = parseInt(ETA*1) + parseInt(eStartMins*1);

	// If estimating for Westminster then take off 40 mins due to tideway
	if(distance==125)
	  eTotalMins = eTotalMins-40;

	dHour = eTotalMins / 60;
	iHour = Math.floor(dHour);
 
	dMin = (dHour - iHour)*60;
	iMin = Math.floor(dMin);

	if(iHour>=48)
	{
	  if(startDay == "Fri")
	    startDay = "Sun";
	  else if (startDay == "Sat")
	    startDay = "Mon";
	  else if (startDay == "Sun")
	    startDay = "Tue";

	  iHour = iHour-48;
	} 	
	else if(iHour>=24)
	{
	  if(startDay == "Fri")
	    startDay = "Sat";
	  else if (startDay == "Sat")
	    startDay = "Sun";
	  else if (startDay == "Sun")
	    startDay = "Mon";
	  else if (startDay == "Mon")
	    startDay = "Tue";

	  iHour = iHour-24;
	} 	

	if(iHour<10)
	   iHour="0"+iHour;
	if(iMin<10) 
	   iMin="0"+iMin;

	ETA = startDay + " " + iHour + ":" + iMin + ":" + "00";
	   	
    }

    return ETA;
}

function CalculateElapsedTime(start,finish)
{
    // Fri 12:30:00
    var bRtd=false;
    var startDay=start.substring(0,3);

    if(startDay=="rtd")
    {
	start=start.substring(4,16);
	startDay=start.substring(0,3);
    }

    var startHours=start.substring(4,6);
    var startMins=start.substring(7,9);
    var startSecs=start.substring(10,12);

    var finishDay=finish.substring(0,3);

   if(finishDay=="rtd")
    {
	finish=finish.substring(4,16);
	finishDay=finish.substring(0,3);
	bRtd=true;
    }

    var finishHours=finish.substring(4,6);
    var finishMins=finish.substring(7,9);
    var finishSecs=finish.substring(10,12);

    var addHours=0;

    if(startDay!=finishDay)
    {
	var iStartDay=ConvertDayToInt(startDay);
	var iFinishDay=ConvertDayToInt(finishDay);

	// This will not work if the start of DW changes to Thursday!
	// The key day is Friday
	addHours = (iFinishDay-iStartDay)*24;
    }

    finishHours=parseInt(finishHours*1)+parseInt(addHours*1);

    finishSecs=parseInt(finishSecs*1)+parseInt(finishMins*60)+parseInt(finishHours*60*60);
    startSecs=parseInt(startSecs*1)+parseInt(startMins*60)+parseInt(startHours*60*60);

    var totalSecs=finishSecs-startSecs;
	
    if(totalSecs>0)
    {
	var dFinalHours = totalSecs/60/60;
	var iFinalHours = Math.floor(dFinalHours);

	var dFinalMins = (dFinalHours-iFinalHours)*60;
	var iFinalMins = Math.floor(dFinalMins);

	var dFinalSecs = (dFinalMins-iFinalMins)*60;
	var iFinalSecs = Math.round(dFinalSecs);

	if(iFinalSecs==60)
	{
	    iFinalSecs=0;
	    ++iFinalMins;
	}

	if(iFinalHours<10)
	   iFinalHours="0"+iFinalHours;
	if(iFinalMins<10) 
	    iFinalMins="0"+iFinalMins;
	if(iFinalSecs<10)
	    iFinalSecs="0"+iFinalSecs;
		
	var Elapsed = iFinalHours + ":" + iFinalMins + ":" + iFinalSecs;

	if(bRtd==true)
	    Elapsed = "rtd " + Elapsed;
 
	return Elapsed;
    }
    else
    {
	return "00:00:00";
    }
}

function CalculateElapsedHours(start,finish)
{
    // Fri 12:30:00
    var startDay=start.substring(0,3);

    if(startDay=="rtd")
    {
	start=start.substring(4,16);
	startDay=start.substring(0,3);
    }

    var startHours=start.substring(4,6);
    var startMins=start.substring(7,9);
    var startSecs=start.substring(10,12);

    var finishDay=finish.substring(0,3);

    if(finishDay=="rtd")
    {
	finish=finish.substring(4,16);
	finishDay=finish.substring(0,3);
    }

    var finishHours=finish.substring(4,6);
    var finishMins=finish.substring(7,9);
    var finishSecs=finish.substring(10,12);

    var addHours=0;

    if(startDay!=finishDay)
    {
	var iStartDay=ConvertDayToInt(startDay);
	var iFinishDay=ConvertDayToInt(finishDay);

	// This will not work if the start of DW changes to Thursday!
	// The key day is Friday
	addHours = (iFinishDay-iStartDay)*24;
    }

    finishHours=parseInt(finishHours*1)+parseInt(addHours*1);
    finishSecs=parseInt(finishSecs*1)+parseInt(finishMins*60)+parseInt(finishHours*60*60);
    startSecs=parseInt(startSecs*1)+parseInt(startMins*60)+parseInt(startHours*60*60);

    var totalSecs=finishSecs-startSecs;
    var dFinalHours = totalSecs/60/60;

    if(dFinalHours<0)
	dFinalHours=0;

    return dFinalHours;
}

function ConvertIntToDay(iDay)
{
// using Javascript ints

    var strDay;

    switch(iDay)
    {
	case 5:		
	    strDay="Fri";
	    break;
	case 6:		
	    strDay="Sat";
	    break;
	case 0:		
	    strDay="Sun";
	    break;
	case 1:		
	    strDay="Mon";
	    break;
	case 2:		
	    strDay="Tue";
	    break;
	case 3:		
	    strDay="Wed";
	    break;
	case 4:		
	    strDay="Thu";
	    break;
	default:
	    strDay="ignore";
	    break;
    }

    return strDay;
}

function ConvertDayToInt(strDay)
{
// For DW, where Friday=0

    var iDay;

    if(strDay=="Fri")
	iDay=0;
    else if(strDay=="Sat")
	iDay=1;
    else if(strDay=="Sun")
	iDay=2;
    else if(strDay=="Mon")
	iDay=3;
    else if(strDay=="Tue")
	iDay=4;
    else if(strDay=="Wed")
	iDay=5;
    else if(strDay=="Thu")
	iDay=6;
    else 
	iDay="ignore";	

    return iDay;
}

//-->