// Engine e-commerce: page timing functionality                       //
// Modif Action   Project Programmer            Start Date End Date   //
// ----- -------- ------- ----------            ---------- ---------- //
// M0    Creation ONE0459 Olivier Maurice       22/03/2005 22/03/2005 //
////////////////////////////////////////////////////////////////////////

function getT0(formObj)
{
  formObj.t0.value = (new Date()).getTime();
}



function loadPage(destination)
{
  var p = 't0=' + (new Date()).getTime();
  if (destination.indexOf('?') != -1)
    location.href = destination + '&' + p;
  else
    location.href = destination + '?' + p;
}



function showTimeStatistics(t0, t1, t2, t3, t4, t5, t6)
{
  var m = new String('');

  var d = new Date();
  if (t0.length == 0)
    t0 = d.getTime();
  d.setTime(t0);
  var t0m = (d.getHours()*3600000) + (d.getMinutes()*60000) + (d.getSeconds()*1000) + d.getMilliseconds();

  var s = new String(t1);
  if ((s.length % 2) == 1)
    s = '0' + s;
  var t1m = (s.substr(0,2)*3600000) + (s.substr(2,2)*60000) + (s.substr(4,2)*1000);

  s = new String(t2);
  if ((s.length % 2) == 1)
    s = '0' + s;
  var t2m = (s.substr(0,2)*3600000) + (s.substr(2,2)*60000) + (s.substr(4,2)*1000);

  s = new String(t3);
  if ((s.length % 2) == 1)
    s = '0' + s;
  var t3m = (s.substr(0,2)*3600000) + (s.substr(2,2)*60000) + (s.substr(4,2)*1000);

  s = new String(t4);
  if ((s.length % 2) == 1)
    s = '0' + s;
  var t4m = (s.substr(0,2)*3600000) + (s.substr(2,2)*60000) + (s.substr(4,2)*1000);

  d = new Date();
  d.setTime(t5);
  var t5m = (d.getHours()*3600000) + (d.getMinutes()*60000) + (d.getSeconds()*1000) + d.getMilliseconds();

  d = new Date();
  d.setTime(t6);
  var t6m = (d.getHours()*3600000) + (d.getMinutes()*60000) + (d.getSeconds()*1000) + d.getMilliseconds();

  var totalRequest  = ((t6m-t0m)/1000);
  if (totalRequest < 0)
    totalRequest = 0;
  var webServer     = ((t4m-t1m)/1000);
  if (webServer < 0)
    webServer = 0;
  var dataFetch     = ((t3m-t2m)/1000);
  if (dataFetch < 0)
    dataFetch = 0;
  var pageBuild     = (((t4m-t1m)-(t3m-t2m))/1000);
  if (pageBuild < 0)
    pageBuild = 0;
  var travelTime    = ((t6m-t0m-(t4m-t1m)-(t6m-t5m))/1000);
  if (travelTime < 0)
    travelTime = 0;
  var renderTime    = ((t6m-t5m)/1000);
  if (renderTime < 0)
    renderTime = 0;

  m += '+++ Page Timing Analysis (seconds) +++\n';
  m += document.title + '\n';
  m += '\nTotal Request Duration\n   ' + totalRequest;
  m += '\nWeb Server\n   ' + webServer;
  m += '\n--> Data Fetch: ' + dataFetch;
  m += '\n--> Page Build: ' + pageBuild;
  m += '\nPage Travel\n   ' + travelTime;
  m += '\nPage Loading\n   ' + renderTime;

  m += '\n\n----------------';
  m += '\nt0= ' + t0;
  m += '\nt1= ' + t1;
  m += '\nt2= ' + t2;
  m += '\nt3= ' + t3;
  m += '\nt4= ' + t4;
  m += '\nt5= ' + t5;
  m += '\nt6= ' + t6;
  m += '\n\nRemark: a time of 0 seconds means\nless than a second.';

  alert(m);
}
