RunMilliSecs=0;
      BikeMilliSecs=0;
      SwimMilliSecs=0;

      //************************************************************//

      function LT10(Value)
      {
        if (Value < 10) return "0" + Value;
        else return Value;
      }
      //************************************************************//

      function CalcRunPace(form)
      {

        var CheckTime=form.RunTimeMins.value*1.0 +form.RunTimeSecs.value*1.0 +form.RunTimeHrs.value*1.0 ;
        
        if ((form.RunDist.value > 0) && (CheckTime>0))
        {
        Distance=form.RunDist.value *   form.RunUnits.options[form.RunUnits.selectedIndex].value;

        FinishMilliSecs=((form.RunTimeHrs.value*3600 + form.RunTimeMins.value*60 + form.RunTimeSecs.value*1.0)
        /Distance)*1000;
        ExTime=new Date(new Date(2000,1,1,0,0,0)*1.0 + FinishMilliSecs);
        
        form.RunPaceHrs.value=LT10(ExTime.getHours());
        form.RunPaceMins.value=LT10(ExTime.getMinutes());
        form.RunPaceSecs.value=LT10(ExTime.getSeconds());

        RunMilliSecs=(form.RunTimeHrs.value*3600 + form.RunTimeMins.value*60 + form.RunTimeSecs.value*1.0)*1000;
        
        CalcTotalTime(form);

        }
        else alert ("Please enter a race distance AND a finish time");

      }
      //************************************************************//
      function CalcBikePace(form)
      {

        AdjustedDistance=(form.BikeDist.value * form.BikeUnits.options[form.BikeUnits.selectedIndex].value)*3600;
        AdjustedTime=form.BikeTimeHrs.value*3600 + form.BikeTimeMins.value*60 + form.BikeTimeSecs.value*1.0;


        if ((AdjustedDistance > 0) && (AdjustedTime > 0))
        { 
        NewBikePace=AdjustedDistance/AdjustedTime;

        form.BikePace.value=NewBikePace;
        
        BikeMilliSecs=(form.BikeTimeHrs.value*3600 + form.BikeTimeMins.value*60 + form.BikeTimeSecs.value*1.0)*1000;
                        
        CalcTotalTime(form);
        }
        else alert ("Please enter a race distance and completion time first");

      }

      //************************************************************//

      function CalcRunTime(form)
      {

        var CheckTime=form.RunPaceMins.value*1.0 +form.RunPaceSecs.value*1.0 +form.RunPaceHrs.value*1.0 ;
        
        if ((form.RunDist.value > 0) && (CheckTime>0))
        {
        
        //Convert distance to miles
        
        AdjDistance=form.RunDist.value *        form.RunUnits.options[form.RunUnits.selectedIndex].value;
        
        //Total Seconds = (Minutes*60 + Seconds)* (Race Distance in miles)      

        AdjSecs=(form.RunPaceMins.value*60 + form.RunPaceSecs.value*1.0) * 
                form.RunPaceUnits.options[form.RunPaceUnits.selectedIndex].value;
        
        RunMilliSecs=(AdjSecs * AdjDistance)*1000;
                                
        ExTime=new Date(new Date(2000,1,1,0,0,0)*1.0 + RunMilliSecs);

        form.RunTimeHrs.value=LT10(ExTime.getHours());
        form.RunTimeMins.value=LT10(ExTime.getMinutes());
        form.RunTimeSecs.value=LT10(ExTime.getSeconds());

        CalcTotalTime(form);

        }
        else alert ("Please enter a race distance AND a race pace");
        
      }
      //************************************************************//
      function CalcBikeTime(form)
      {

        if ((form.BikeDist.value > 0) && (form.BikePace.value>0))

        {

        //Total Milliseconds

        //Convert distance/pace to miles
   
        AdjDistance=form.BikeDist.value * form.BikeUnits.options[form.BikeUnits.selectedIndex].value;
        AdjPace=form.BikePace.value * form.BikePaceUnits.options[form.BikePaceUnits.selectedIndex].value;
                
        BikeMilliSecs=(AdjDistance/AdjPace)*60*60*1000;

        ExTime=new Date(new Date(2000,1,1,0,0,0)*1.0 + BikeMilliSecs);

        form.BikeTimeHrs.value=LT10(ExTime.getHours());
        form.BikeTimeMins.value=LT10(ExTime.getMinutes());
        form.BikeTimeSecs.value=LT10(ExTime.getSeconds());

        CalcTotalTime(form);
        }

        else alert ("Please enter a race distance AND a race pace");

      }


      //************************************************************//
      function CalcSwim(form)
      {

        var CheckSwimPace=form.SwimPaceMins.value*1.0 + form.SwimPaceSecs.value*1.0+form.SwimPaceHrs.value*1.0;
        
        if ((CheckSwimPace > 0) && (form.SwimDist.value > 0))
        {
                Distance=form.SwimDist.value * form.SwimUnits.options[form.SwimUnits.selectedIndex].value;

                if (form.SwimPaceUnits.value>0) 
                {
                        SwimMilliSecs = (((form.SwimPaceMins.value*60 + form.SwimPaceSecs.value*1.0) * Distance)/100)*1000;
                }
                else SwimMilliSecs=1000*(form.SwimPaceHrs.value*3600+form.SwimPaceMins.value*60+form.SwimPaceSecs.value*1.0);
        
                ExTime=new Date(new Date(2000,1,1,0,0,0)*1.0 + SwimMilliSecs);

                form.SwimTimeHrs.value=LT10(ExTime.getHours());
                form.SwimTimeMins.value=LT10(ExTime.getMinutes());
                form.SwimTimeSecs.value=LT10(ExTime.getSeconds());
        
                CalcTotalTime(form);
        }
        else alert ("Please enter a swim distance AND a swim pace/estimated time");
      }
      //************************************************************//
      function CalcTotalTime(form)
      {
        TotalMilliSecs=RunMilliSecs + BikeMilliSecs + SwimMilliSecs;
        
        ExTime=new Date(new Date(2000,1,1,0,0,0)*1.0 + TotalMilliSecs);

        form.TotalTimeHrs.value=LT10(ExTime.getHours());
        form.TotalTimeMins.value=LT10(ExTime.getMinutes());
        form.TotalTimeSecs.value=LT10(ExTime.getSeconds());
        
      }

      //************************************************************//
