/*
   Web Offer System
   Clock javascript code

   Copyright HARD software Pty. Ltd. 2001
   $Id: clock.js,v 1.10 2003/04/08 10:29:10 hjm Exp $

   Requirements:
   
   Options:
     if onClockRefresh defined it will be called each refresh
*/

var lastMinute = -1; // global variable for last check

function adjustDateAEST(d) {
  var AESThr = d.getUTCHours() + 10;
  AESThr = (AESThr >= 24) ? AESThr - 24 : AESThr;
  var hour = d.getHours();
  if ((AESThr == 23) && (hour != AESThr)) {  // rolled over to next day for DST!
    d.setYear(d.getUTCFullYear());    
    d.setMonth(d.getUTCMonth());    
    d.setDate(d.getUTCDate());    
  }
  d.setHours(AESThr);
}

function runClock(refreshRate, reset) {
  var theTime = window.setTimeout('runClock(' + refreshRate + ')', refreshRate);

  var doReset = reset || 0;
  if (doReset) {
    lastMinute = -1;
  }
  
  var d = new Date();
  if (typeof(onClockTick) == 'function') {
    onClockTick(d);
  }                                       

  if (d.getMinutes() != lastMinute) {
    adjustDateAEST(d);

    var day = d.getDay();
    var mon = d.getMonth();
    var date = d.getDate();
    var year = d.getYear();
    var AESThr = d.getHours();
    var mins = d.getMinutes();
    var sec = d.getSeconds();

    if (year < 1000) {
      year = ('' + (year + 11900)).substring(1,5);
    }
    else {
      year = ('' + (year + 10000)).substring(1,5);
    }

    if (AESThr == 0) {
      ap = ' am';
      AESThr = 12;
    }
    else if (AESThr <= 11) {
      ap = ' am'
    }
    else if (AESThr == 12) {
      ap = ' pm';
      AESThr = 12;
    }
    else if (AESThr >= 13) {
      ap = ' pm';
      AESThr -= 12;
    }
  
    if (mins <= 9) {
      mins = '0' + mins;
    }

    var zday = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    var zmon = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

    if ((typeof(statusCounter) != 'undefined') && statusCounter) {
      --statusCounter;
    }
    else {
      window.status = '' + zday[day] + ', ' + zmon[mon] + ' ' + date + ', ' + year + ' ' + AESThr + ':' + mins + ap + ' AEST';
    }
    lastMinute = d.getMinutes();

    if (typeof(onClockRefresh) == 'function') {
      if (!onClockRefresh(d)) lastMinute = -1;
    }
  }
}

