<!--

// Custom javascript by http://www.evilplastic.com (although some portions reused from other websites).
// If you're able to recycle for your own purposes, please visit my website and
// drop me an e-mail to let me know.  It would make my day.

function setNextEventDates(inNowDate) {
  if ((inNowDate.getUTCDay() == 3) || (inNowDate.getUTCDay() == 5)) {  // recurring event takes/took place today
    cStart.setTime(inNowDate.getTime());
    setUTCEventTime(cStart);
    cEnd = getNextEventEndDateTime(cStart);
  }

  if (inNowDate > cEnd) {  // after ended
    do {  // Walk forward a day at a time until we get to the next Tuesday or Thursday (after today)
      cStart.setDate(cStart.getDate() + 1);

    } while ((cStart.getUTCDay() != 3) && (cStart.getUTCDay() != 5));

    // set the UTC time that the event will take place relative to 9pm in the Central time zone
    setUTCEventTime(cStart);
    cEnd = getNextEventEndDateTime(cStart);
  }
}

function setUTCEventTime(inDate) {
  // set the time that event will start in UTC (independent of browser's timezone)
  // first determine if next event date is during daylight savings time in the central time zone
  // In Central time zone, DST starts on first Sunday in April (month # 3) and ends on last Sunday in October (month # 9)
  var centralDSTStartDate = new Date(inDate.getUTCFullYear(), 4, 11);  // set to March 11 (for 2007)

  while (centralDSTStartDate.getUTCDay() != 0) {
    centralDSTStartDate.setUTCDate(centralDSTStartDate.getUTCDate() + 1);  // increment day
  }

  var centralDSTEndDate = new Date(inDate.getUTCFullYear(), 9, 29);  // set to October 29 (for 2006)
  while (centralDSTEndDate.getUTCDay() != 0) {
    centralDSTEndDate.setUTCDay(centralDSTEndDate.getUTCDay() + 1);  // increment day
  }

  if ((inDate > centralDSTStartDate) && (inDate < centralDSTEndDate)) {
    // daylight savings time's 1 hour forward is 1 hour closer to GMT since Central time zone lags behind GMT
    inDate.setUTCHours(2);
  } else {
    inDate.setUTCHours(3);
  }

  inDate.setUTCMinutes(zero);
  inDate.setUTCSeconds(zero);
  inDate.setUTCMilliseconds(zero);
}

function getNextEventEndDateTime(inDate) {
  var endDateTime = new Date(inDate);
  endDateTime.setUTCHours(endDateTime.getUTCHours() + durationHours);
  return endDateTime;
}

function fmtTimeTxt(inDate) {
  eventDspTxt = (inDate < cStart) ? eventDspTxt = dspTxtStartsHtml : eventDspTxt = dspTxtNowHtml;

  if (dRem != 0) {eventDspTxt += space + dRem + dTxt;}
  if (hRem != 0) {eventDspTxt += space + hRem + hTxt;}
  if (mRem != 0) {eventDspTxt += space + mRem + mTxt;}
  if (sRem != 0 || (dRem == 0 && hRem == 0 && mRem == 0)) {eventDspTxt += space + sRem + sTxt;}
  eventDspTxt += dspTxtSfx1;
}

var dspTxtPfx1 = '<font color="#';
var dspTxtPfx2 = '" face="Arial" size="2"><strong>&gt;&gt;&nbsp;</strong></font>';
var dspTxtPfxBrtHtml = dspTxtPfx1 + "FFCC00" + dspTxtPfx2;
var dspTxtPfxDimHtml = dspTxtPfx1 + "997A00" + dspTxtPfx2;  // http://www.colorschemer.com/online.html
var dspTxtPfx3 = '<font color="#FFCC00" face="Arial" size="2"><strong>';
var dspTxtStarts = "The next scheduled Chat starts in ";
var dspTxtNow = "Chat is going on right now, and has been in progress for ";
var dspTxtSfx1 = ".</strong></font>";
var dspTxtStartsHtml = dspTxtPfx3 + dspTxtStarts;
var dspTxtNowHtml = dspTxtPfx3 + dspTxtNow;
//var eventDspTxt = dspTxtPfx3 + "&gt;&gt;&nbsp;Calculating date & time of next scheduled Chat.." + dspTxtSfx1;
var eventDspTxt = "";
var dTxt = "d";
var hTxt = "h";
var mTxt = "m";
var sTxt = "s";

var isPfxBright = true;
var space = " ";
var zero = 0;

var intvl = 500;  // text refresh interval
var durationHours = 2;  // duration of event
var cStart = new Date(); // current
var cEnd = new Date(0);  // long ago
var isBefore = true;
var msPerS = 1000;
var msPerM = 60 * msPerS;
var msPerH = 60 * msPerM;
var msPerD = 24 * msPerH;
var sLeft = 0;
var sRnd = 0;
var sRem = 0;
var mLeft = 0;
var mRnd = 0;
var mRem = 0;
var hLeft = 0;
var hRnd = 0;
var hRem = 0;
var dLeft = 0;
var dRnd = 0;
var dRem = 0;

ID=window.setTimeout("updateEventTimer();", intvl);

function updateEventTimer() {

  if (isPfxBright) {  // only calculate every other half second
    var now = new Date();
    if (now > cEnd) { setNextEventDates(now); }
    isBefore = (now < cStart) ? isBefore = true : isBefore = false;

    /*Seconds*/
    sLeft = (isBefore) ? sLeft = (cStart.getTime() - now.getTime()) / msPerM : sLeft = (now.getTime() - cStart.getTime()) / msPerM;
    sRnd = Math.round(sLeft);
    sRem = sLeft - sRnd;
    sRem = (sRem < 0) ? sRem = 60 - ((sRnd - sLeft) * 60) : sRem = (sLeft - sRnd) * 60;
    sRem = Math.round(sRem);
    /*Minutes*/
    mLeft = (isBefore) ? mLeft = (cStart.getTime() - now.getTime()) / msPerH : mLeft = (now.getTime() - cStart.getTime()) / msPerH;
    mRnd = Math.round(mLeft);
    mRem = mLeft - mRnd;
    mRem = (mRem < 0) ? mRem = 60 - ((mRnd - mLeft)  * 60) : mRem = (mLeft - mRnd) * 60;
    mRem = Math.round(mRem - 0.495);
    /*Hours*/
    hLeft = (isBefore) ? hLeft = (cStart.getTime() - now.getTime()) / msPerD : hLeft = (now.getTime() - cStart.getTime()) / msPerD;
    hRnd = Math.round(hLeft);
    hRem = hLeft - hRnd;
    hRem = (hRem < 0) ? hRem = 24 - ((hRnd - hLeft)  * 24) : hRem = (hLeft - hRnd) * 24;
    hRem = Math.round(hRem - 0.5);
    /*Days*/
    dLeft = (isBefore) ? dLeft = (cStart.getTime() - now.getTime()) / msPerD : dLeft = (now.getTime() - cStart.getTime()) / msPerD;
    dLeft = (dLeft - 0.5);
    dRnd = Math.round(dLeft);
    dRem = dRnd;

    fmtTimeTxt(now);
  }

  if (document.all) {  // IE or Opera
    document.all['eventcountdown'].innerHTML = (isPfxBright) ? document.all['eventcountdown'].innerHTML = dspTxtPfxBrtHtml + eventDspTxt : document.all['eventcountdown'].innerHTML = dspTxtPfxDimHtml + eventDspTxt;
  } else {   // Mozilla
    document.getElementById("eventcountdown").innerHTML = (isPfxBright) ? document.getElementById("eventcountdown").innerHTML = dspTxtPfxBrtHtml + eventDspTxt : document.getElementById("eventcountdown").innerHTML = dspTxtPfxDimHtml + eventDspTxt;
  }

  isPfxBright = !isPfxBright;
  ID=window.setTimeout("updateEventTimer(isPfxBright);",intvl);

}
// -->

