function updateCounter(){

	imageDir = "/elements/counter/images/"

	var dBlue = new Array();
  var lBlue = new Array();
  var pink = new Array();

	//digits
  for(i=0; i<=9; i++){
  	dBlue[i] = new Image();
    dBlue[i].src = imageDir + "dblue/0" + i + ".gif";
    lBlue[i] = new Image();
    lBlue[i].src = imageDir + "lblue/0" + i + ".gif";
    pink[i] = new Image();
    pink[i].src = imageDir + "pink/0" + i + ".gif";
  }  
 
 	//other chars and months
  dblueC = new Image(); dblueC.src = imageDir + "dblue/comma.gif";
  dblueB = new Image(); dblueB.src = imageDir + "b.gif";
  dblueAM = new Image(); dblueAM.src = imageDir + "dblue/am.gif";
  dbluePM = new Image(); dbluePM.src = imageDir + "dblue/pm.gif";
  lblueC = new Image(); lblueC.src = imageDir + "lblue/comma.gif";
  lblueB = new Image(); lblueB.src = imageDir + "b.gif";
  pinkC = new Image(); pinkC.src = imageDir + "pink/comma.gif";
  pinkB = new Image(); pinkB.src = imageDir + "b.gif";
  
  month0 = new Image(); month0.src = imageDir + "dblue/January.gif";
  month1 = new Image(); month1.src = imageDir + "dblue/February.gif";
  month2 = new Image(); month2.src = imageDir + "dblue/March.gif";
  month3 = new Image(); month3.src = imageDir + "dblue/April.gif";
  month4 = new Image(); month4.src = imageDir + "dblue/May.gif";
  month5 = new Image(); month5.src = imageDir + "dblue/June.gif";
  month6 = new Image(); month6.src = imageDir + "dblue/July.gif";
  month7 = new Image(); month7.src = imageDir + "dblue/August.gif";
  month8 = new Image(); month8.src = imageDir + "dblue/September.gif";
  month9 = new Image(); month9.src = imageDir + "dblue/October.gif";
  month10 = new Image(); month10.src = imageDir + "dblue/November.gif";
  month11 = new Image(); month11.src = imageDir + "dblue/December.gif";
    
  //initial values
  wwnc_ini = 0;
  wwd_ini = 0;
  usnc_ini = 0;
  usd_ini = 0;
  
  //rate definition
  wwnc_rate = 1500000;
  wwd_rate = 502200;
  usnc_rate = 240840;
  usd_rate = 43200;
  
  msperyear = 1000*60*60*24*365;
  
  //date calculation  
  date_now = new Date();
  
  year = date_now.getYear();
  if ( year < 2000) year = year + 1900;
   
  date_ini = new Date("Jan 1 " + year + " 0:00:01");
  
  diff = date_now - date_ini;
  
  //month
  document.images.month.src = eval("month" + date_now.getMonth() + ".src");
  
  //day
  day = date_now.getDate() + '';   
  day = addBlanks(day, 2);
  
  for(i=1; i<=2; i++){
		if (day.charAt(i-1) == "B"){
    	document["day" + i].src = eval("dblue" + day.charAt(i-1) + ".src");
    }
    else {
  		document["day" + i].src = dBlue[day.charAt(i-1)].src; 
    }
  }
  
  //year
  year = date_now.getYear();
  if ( year < 2000) year = year + 1900;
  year = addBlanks(year + '', 4);

  for(i=1; i<=4; i++){
  	document["year" + i].src = dBlue[year.charAt(i-1)].src; 
  }
    
  //hours
  hour = date_now.getHours();
  if (hour > 12) { 
  	hour = hour - 12;
    document.images.ampm.src = eval("dbluePM.src"); 
  }
  else if (hour == 12){
  	document.images.ampm.src = eval("dbluePM.src"); 
  }
  else {
  	if (hour == 0) hour = 12;
  	document.images.ampm.src = eval("dblueAM.src"); 
  }
  hour = addBlanks(hour + '', 2);

  for(i=1; i<=2; i++){
		if (hour.charAt(i-1) == "B"){
      document["hour" + i].src = eval("dblue" + hour.charAt(i-1) + ".src");
    }
    else {
  		document["hour" + i].src = dBlue[hour.charAt(i-1)].src; 
    }
  }
  
  //minutes
  mins = date_now.getMinutes();
  mins = addZeroes(mins + '', 2);
  
  for(i=1; i<=2; i++){
		if (mins.charAt(i-1) == "B"){
      document["min" + i].src = eval("dblue" + mins.charAt(i-1) + ".src");
    }
    else {
  		document["min" + i].src = dBlue[mins.charAt(i-1)].src; 
    }
  }
  
  //seconds
  secs = date_now.getSeconds();
  secs = addZeroes(secs + '', 2);
    
  for(i=1; i<=2; i++){
		if (secs.charAt(i-1) == "B"){
      document["sec" + i].src = eval("dblue" + secs.charAt(i-1) + ".src");
    }
    else {
  		document["sec" + i].src = dBlue[secs.charAt(i-1)].src; 
    }
  }
  
  //stats
  wwnc_now = wwnc_ini + Math.round(diff * wwnc_rate / msperyear) + '';
  wwd_now = wwd_ini + Math.round(diff * wwd_rate / msperyear) + '';
  usnc_now = usnc_ini + Math.round(diff * usnc_rate / msperyear) + '';
  usd_now = usd_ini + Math.round(diff * usd_rate / msperyear) + '';
      
  wwnc_now = addBlanks(addCommas(wwnc_now), 10);
  wwd_now = addBlanks(addCommas(wwd_now), 10);
  usnc_now = addBlanks(addCommas(usnc_now), 10);
  usd_now = addBlanks(addCommas(usd_now), 10);

  for(i=1; i<=10; i++){
		if ((wwnc_now.charAt(i-1) == "C") || (wwnc_now.charAt(i-1) == "B")){
      document["wwnc" + i].src = eval("lblue" + wwnc_now.charAt(i-1) + ".src");
    }
    else {
  		document["wwnc" + i].src = lBlue[wwnc_now.charAt(i-1)].src; 
    }
  }
  
  for(i=1; i<=10; i++){
		if ((wwd_now.charAt(i-1) == "C") || (wwd_now.charAt(i-1) == "B")){
      document["wwd" + i].src = eval("lblue" + wwd_now.charAt(i-1) + ".src");
    }
    else {
  		document["wwd" + i].src = lBlue[wwd_now.charAt(i-1)].src; 
    }
  }
  
  for(i=1; i<=10; i++){
		if ((usnc_now.charAt(i-1) == "C") || (usnc_now.charAt(i-1) == "B")){
      document["usnc" + i].src = eval("pink" + usnc_now.charAt(i-1) + ".src");
    }
    else {
  		document["usnc" + i].src = pink[usnc_now.charAt(i-1)].src; 
    }
  }
  
  for(i=1; i<=10; i++){
		if ((usd_now.charAt(i-1) == "C") || (usd_now.charAt(i-1) == "B")){
      document["usd" + i].src = eval("pink" + usd_now.charAt(i-1) + ".src");
    }
    else {
  		document["usd" + i].src = pink[usd_now.charAt(i-1)].src; 
    }
  }
  
  newtime = window.setTimeout("updateCounter();", 1000);
  
}

function addBlanks(sInput, iLen) {
	while (sInput.length < iLen) sInput = 'B' + sInput; 
  return sInput;
}

function addZeroes(sInput, iLen) {
	while (sInput.length < iLen) sInput = '0' + sInput; 
  return sInput;
}

function addCommas(nInput) {

  nInput += '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(nInput)) {
  	nInput = nInput.replace(rgx, '$1' + 'C' + '$2');
  }
  return nInput;

}