today  = new Date();
todayEpoch  = today.getTime();

target = new Date("5 September, 2006"); 
targetEpoch = target.getTime();

daysLeft = Math.floor(((targetEpoch - todayEpoch) / (60*60*24)) / 1000) +1;
weeksLeft = Math.floor(((targetEpoch - todayEpoch) / (60*60*24*7)) / 1000)+1;

function toggleInline(pstrID){
  var myDiv = document.getElementById('d' + pstrID);
  if (myDiv){
    if (myDiv.style.display == 'none') 
      showInline(pstrID);
    else 
      hideInline(pstrID);
  }
}

function showInline(pstrID){
  var myDiv = document.getElementById('d' + pstrID);
  if (myDiv){
    myDiv.style.display = 'inline';
  }
}

function hideInline(pstrID){
  var myDiv = document.getElementById('d' + pstrID);
  if (myDiv) {
    myDiv.style.display = 'none';
  }
}

function openWindow(url, name, width, height) {
  var l = openWindow.arguments.length;
  var w = width;
  var h = height;
  var features = "scrollbars=yes";

  for (i=2; i<l; i++) {
    var param = openWindow.arguments[i];
    if ( (parseInt(param) == 0) ||
      (isNaN(parseInt(param))) ) {
      features += param + ',';
    } else {
      (w == "") ? w = "width=" + param + "," :
       h = "height=" + param;
    }
  }

  features += w + h;
  if (name == 'printarticle') {
    url = url.replace(/.html/,"p.html")
  }
  var code = "popupWin = window.open(url, name";
  if (l > 2) code += ", '" + features;
  code += "')";
  eval(code);
  }


function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( 
aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return strReturn;
}

var monthAbbreviations = new Array("Jan. ", "Feb. ", "March ", "April ", "May ", "June ", "July ", "Aug. ", "Sept. ", "Oct. ", "Nov. ", "Dec. ");
var daysOfTheWeek = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

// In milliseconds:
ONEDAYAGO = -86400000;
ONEDAYFROMNOW = 86400000;
TWODAYSAGO = -172800000;
SEVENDAYSAGO = -604800000;
SIXDAYSFROMNOW = 518400000;

function dateReference(dateString, boolDisplayYear) {
  var relative = relativeDate(dateString);
  var explicit = explicitDate(dateString, true);
  if (relative != explicit) {
    document.write("<acronym title=\"" + explicit + "\">" + relative + "</acronym>");
  } else {
    document.write(explicit);
  }
}

function relativeDate(dateString) {
  var now = new Date();
  var reference = new Date(dateString);
  if (isNaN(reference)) return dateString;
  // Calculate time offset between the two dates
  var offset = reference.getTime() - now.getTime();

  // Today, tomorrow, yesterday
  if ((offset > ONEDAYAGO) && (offset <= 0)) return "Today";
  if ((offset > 0) && (offset < ONEDAYFROMNOW )) return "Tomorrow (you know, timezones)";
  if ((offset > TWODAYSAGO) && (offset <= ONEDAYAGO)) return "Yesterday";

  // Past week or coming week
  if ((offset > SEVENDAYSAGO) && (offset <= TWODAYSAGO)) return "Last " + daysOfTheWeek[reference.getDay()];
  if ((offset >= ONEDAYFROMNOW) && (offset < SIXDAYSFROMNOW)) return "This " + daysOfTheWeek[reference.getDay()];

  // None of the above
  return explicitDate(dateString, true);
}

function explicitDate(dateString, includeYearRegardless) {
  var now = new Date();
  var reference = new Date(dateString);
  if (isNaN(reference)) return dateString;
  var date = reference.getDate();
  var month = monthAbbreviations[reference.getMonth()];
  // Unless specified, only include the year if it is different from the current year
  if ((reference.getFullYear() != now.getFullYear()) || includeYearRegardless) {
    var year = ", " + reference.getFullYear();
  } else {
    var year = "";
  }
  return(month + date + year);
}

