/* Census2010Countdown.js
Copyright 2010 United States Bureau of the Census
*/

var IE7 = (navigator.appVersion.indexOf("MSIE 7.")==-1) ? false : true;
var IE6=false /*@cc_on || @_jscript_version < 5.7 @*/

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
  var ieversion=new Number(RegExp.$1);
  if (ieversion>=8) {
    var IE8=true;
  }
}

var countdownDiv = document.createElement("div");
var scriptNode = document.getElementById("countdownToCensusDayScript");
scriptNode.parentNode.insertBefore(countdownDiv, scriptNode);

var targetDate = (new Date("01 April, 2010")).getTime();
var now = (new Date()).getTime();
var past = (new Date("02 April, 2010")).getTime();

var censusDay = false;
var after = false;

var laidOut = false;

var funcTestTime = testTime;

var repeat=1000;

// Code BOC default colors, font families, etc. here.
countdownDiv.style.width="380px";
countdownDiv.style.height="79px";
countdownDiv.style.fontFamily="arial,sans-serif";
countdownDiv.style.fontSize="0.875em";
countdownDiv.style.fontWeight="bold";
countdownDiv.style.backgroundColor="white";
countdownDiv.style.color="#A9223D";
countdownDiv.style.lineHeight="100%";
countdownDiv.style.textAlign="center";
countdownDiv.style.verticalAlign="middle";
countdownDiv.style.padding="0px";
setInterval(funcTestTime, repeat);

function testTime () {
  now = null;
  now = (new Date()).getTime();
  if (now < past && now > targetDate) {
    if (censusDay) {
      return;
    }
    while(countdownDiv.hasChildNodes()) {
      countdownDiv.removeChild(countdownDiv.lastChild);
    }
    countdownDiv.appendChild(document.createTextNode("Today is Census Day!"));
    censusDay = true;
    after = false;
  } else if (now > past) {
    if (after) {
      return;
    }
    while(countdownDiv.hasChildNodes()) {
      countdownDiv.removeChild(countdownDiv.lastChild);
    }
    countdownDiv.appendChild(document.createTextNode("Census Day was April 1, 2010."));
    repeat=0;
    after = true;
    censusDay = false;
  } else {
    if(!laidOut) {
      formatCounter();
    }
    showTime();
    censusDay = false;
    after = false;
  }
}

function formatCounter() {
  logoSpan = document.createElement("span");
  logoSpan.style.width="88px";
  logoSpan.style.height="79px";
  imageFile = document.createElement("img");
  imageFile.src="2010census_red.gif";
  imageFile.style.width="88px";
  imageFile.style.height="79px";
  logoSpan.appendChild(imageFile);
  logoSpan.style.cssFloat = "left";

  bannerSpan = document.createElement("span");
  bannerSpan.style.width="280px";
  bannerSpan.style.height="79px";
  boilerplateDiv = document.createElement("div");
  boilerplateDiv.style.color="#03008b";
  boilerplateDiv.style.marginBottom = "12px";
  boilerplateTextNode = document.createTextNode("Countdown to Census Day April 1, 2010");
  boilerplateDiv.appendChild(boilerplateTextNode);
  valuesDiv = document.createElement("div");
  valuesDiv.style.width = "280px";
  valuesDiv.style.cssFloat = "right";
  valuesDiv.style.fontSize="200%";
  valuesDiv.style.marginBottom = "8px";
  valuesDiv.style.paddingLeft = "12px";
  labelsDiv = document.createElement("div");
  labelsDiv.style.width = "280px";
  labelsDiv.style.cssFloat = "right";
  labelsDiv.style.color="#03008b";
  labelsDiv.style.paddingLeft = "12px";

  daysValSpan = document.createElement("span");
  daysValSpan.style.textAlign="center";
  daysValSpan.style.vertialAlign="top";
  daysValSpan.style.cssFloat="left";
  daysValSpan.style.width="70px";
  daysTextNode = document.createTextNode("");
  daysValSpan.appendChild(daysTextNode);
  valuesDiv.appendChild(daysValSpan);

  daysLabelSpan = document.createElement("span");
  daysLabelSpan.style.textAlign="center";
  daysLabelSpan.style.vertialAlign="top";
  daysLabelSpan.style.cssFloat="left";
  daysLabelSpan.style.width="70px";
  daysLabelText = document.createTextNode("Days");
  daysLabelSpan.appendChild(daysLabelText);
  labelsDiv.appendChild(daysLabelSpan);

  hoursValSpan = document.createElement("span");
  hoursValSpan.style.textAlign="center";
  hoursValSpan.style.vertialAlign="top";
  hoursValSpan.style.cssFloat="left";
  hoursValSpan.style.width="70px";
  hoursValSpan.style.marginLeft = "16px";
  hoursTextNode = document.createTextNode("");
  hoursValSpan.appendChild(hoursTextNode);
  valuesDiv.appendChild(hoursValSpan);

  hoursLabelSpan = document.createElement("span");
  hoursLabelSpan.style.textAlign="center";
  hoursLabelSpan.style.vertialAlign="top";
  hoursLabelSpan.style.cssFloat="left";
  hoursLabelSpan.style.width="70px";
  hoursLabelSpan.style.marginLeft = "16px";
  hoursLabelText = document.createTextNode("Hours");
  hoursLabelSpan.appendChild(hoursLabelText);
  labelsDiv.appendChild(hoursLabelSpan);

  minutesValSpan = document.createElement("span");
  minutesValSpan.style.textAlign="center";
  minutesValSpan.style.vertialAlign="top";
  minutesValSpan.style.cssFloat="left";
  minutesValSpan.style.width="70px";
  minutesValSpan.style.marginLeft = "16px";
  minutesTextNode = document.createTextNode("");
  minutesValSpan.appendChild(minutesTextNode);
  valuesDiv.appendChild(minutesValSpan);

  minutesLabelSpan = document.createElement("span");
  minutesLabelSpan.style.textAlign="center";
  minutesLabelSpan.style.vertialAlign="top";
  minutesLabelSpan.style.cssFloat="left";
  minutesLabelSpan.style.width="70px";
  minutesLabelSpan.style.marginLeft = "16px";
  minutesLabelText = document.createTextNode("Minutes");
  minutesLabelSpan.appendChild(minutesLabelText);
  labelsDiv.appendChild(minutesLabelSpan);

  bannerSpan.appendChild(boilerplateDiv);
  bannerSpan.appendChild(valuesDiv);
  bannerSpan.appendChild(labelsDiv);

  if (IE6 || IE7 || IE8) {
    boilerplateDiv.style.marginBottom="6px";
    valuesDiv.style.marginBottom = "4px";
    logoSpan.style.marginBottom="-3px";
    logoSpan.style.styleFloat="left";
    imageFile.style.margin="0px";
    imageFile.style.padding="0px";
    valuesDiv.style.styleFloat="right";
    valuesDiv.style.lineHeight="100%";
    labelsDiv.style.styleFloat="right";
    labelsDiv.style.lineHeight="125%";
    daysValSpan.style.styleFloat="left";
    daysLabelSpan.style.styleFloat="left";
    hoursValSpan.style.styleFloat="left";
    hoursLabelSpan.style.styleFloat="left";
    minutesValSpan.style.styleFloat="left";
    minutesLabelSpan.style.styleFloat="left";
  }

  countdownDiv.appendChild(logoSpan);
  countdownDiv.appendChild(bannerSpan);
  laidOut = true;
}

function showTime() {
  var millisToGo = targetDate - ((new Date()).getTime());
  var secondsToGo = millisToGo / 1000;
  var minutesToGo = secondsToGo / 60;
  var hoursToGo = minutesToGo / 60;
  var daysToGo = hoursToGo / 24;

  var days = Math.floor(daysToGo);
  var hours = Math.floor(hoursToGo % 24);
  var minutes = Math.floor(minutesToGo % 60);

  if (days <= 0) {
    daysTextNode.nodeValue="";
  } else {
    daysTextNode.nodeValue=days;
    if (hours==1) {
      daysLabelText.nodeValue = "Day";
    } else {
      daysLabelText.nodeValue = "Days";
    }
  }

  if (days <= 0 && hours <= 0) {
    hoursTextNode.nodeValue="";
  } else {
    hoursTextNode.nodeValue=hours;
    if (hours==1) {
      hoursLabelText.nodeValue = "Hour";
    } else {
      hoursLabelText.nodeValue = "Hours";
    }
  }

  if (days <= 0 && hours <= 0 && minutes <= 0) {
    while(countdownDiv.hasChildNodes()) {
      countdownDiv.removeChild(countdownDiv.lastChild);
    }
    countdownDiv.appendChild(document.createTextNode("Census Day is less than 1 minute away!"));
  } else {
    minutesTextNode.nodeValue=minutes;
    if (minutes==1) {
      minutesLabelText.nodeValue = "Minute";
    } else {
      minutesLabelText.nodeValue = "Minutes";
    }
  }
  return;
}
