// vim:ts=3:sw=3:et:ai:

function getLocalCalendarDate(ts)
{
   var dtime= new Date();
   dtime.setTime(ts*1000);  // requires milliseconds from epoch
   var months = new Array(13);
   months[0]  = "Jan";
   months[1]  = "Feb";
   months[2]  = "Mar";
   months[3]  = "Apr";
   months[4]  = "May";
   months[5]  = "Jun";
   months[6]  = "Jul";
   months[7]  = "Aug";
   months[8]  = "Sept";
   months[9]  = "Oct";
   months[10] = "Nov";
   months[11] = "Dec";
   var monthnumber = dtime.getMonth();
   var monthname   = months[monthnumber];
   var monthday    = dtime.getDate();
   var year        = dtime.getFullYear();
   if(year < 2000) { year = year + 1900; }
   var dateString = monthday + ' ' + monthname + ' ' + year;
   return dateString;
} // function getLocalCalendarDate()

function getLocalClockTime(ts)
{
   var dtime= new Date();
   dtime.setTime(ts*1000);
   var localstr=dtime.toLocaleString();
   var local=localstr.split(/ /);
//   var tz=local.pop();
   var tz='Local';
   var hour   = dtime.getHours();
   var minute = dtime.getMinutes();
   if (hour   < 10) { hour   = "0" + hour;   }
   if (minute < 10) { minute = "0" + minute; }
   var timeString = hour + ':' + minute+'&nbsp;'+tz;
   return timeString;
} // function getLocalClockTime()

function get_new_status() {
   x_new_status(update_status);
}
function update_status(new_data) {
   var new_data;
   var data = eval( '(' + new_data + ')' );
   document.getElementById("gb_status").innerHTML = gen_status_table(data.gb);
}
function gen_status_table(teams) {
   var teams;
   var content = '<table id="status_table" class="race"><thead><tr id="title">';
   content += '<th></th><th>Team</th><th>Pilot<br/>Co-Pilot</th>';
   content += '<th>Distance</th><th>Duration</th><th>Status</th><th>Heading</th><th>Speed</th><th>Position</th><th>Location</th><th>Last Update</th></tr></thead><tbody>';

   var local= new Date();
   for( var i=0; i < teams.length; i++ ) {
      var team = teams[i];
      var update_time=team['update_time'];  // in seconds from unix epoch
      var label = team['label'];
      label = label.replace(/GBR/g,'UK');
      var stat = team['status'];
      stat = stat.replace(/Launch/g,'Awaiting<br/>Launch');
      content += '<tr id="row_'+i+'" class="d'+i%2+'">';
      content += '<td><img src="images/flags/d/'+team['country']+'_3.gif"/></td>';
      content += '<td>'+label+'</td>';
      content += '<td>'+team['pilot']+'<br/>'+team['copilot']+'</td>';
      content += '<td>'+team['dist_km']+'&nbsp;km<br>'+team['dist_mi']+'&nbsp;mi</td>';
      content += '<td>'+team['duration']+'</td>';
      content += '<td>'+stat+'</td>';
      content += '<td>'+team['cse_true']+'&deg&nbsp;True</td>';
      content += '<td>'+team['spd_kph']+'&nbsp;km/hr<br>'+team['spd_mph']+'&nbsp;mph</td>';
      content += '<td>'+team['lat']+'<br/>'+team['lon']+'</td>';
      content += '<td>'+team['pos_mi']+' mi / '+team['pos_km']+' km<br/>'+team['pos_desc']+'</td>';
      if(update_time==0) {
         content += '<td>-</td>';
      }
      else {
         content += '<td>'+getLocalCalendarDate(update_time)+'<br/>'+getLocalClockTime(update_time)+'</td>';
      }
   }  // for
   content += '</tbody></table>';
   return content;
}
function main() {
   get_new_status();
   setInterval('get_new_status()', 300000);
}
