// An array of colours that will be applied to H3 tags.
var h3Cols = ['#FFFFFF', '#DDDDDD', '#BBBBBB', '#999999', '#777777', '#6d9a00'];

// Main script.
var h3Arr = [];
function h3Setup()
{
 h3Arr = document.getElementsByTagName('h3');
 for (var h = 0; h < h3Arr.length; h++)
 {
  var h3 = h3Arr[h], text = h3.firstChild.nodeValue;
  h3.removeChild(h3.firstChild);
  h3.animNodes = [];
  for (var i = 0; i < text.length; i++)
  {
   var span = document.createElement('span');
   span.appendChild(document.createTextNode(text.substring(i, i+1)));
   h3.appendChild(span);
   h3.animNodes[h3.animNodes.length] = span;
  }
  h3.animCount = 0;
  h3.animTimer = setInterval('h3Anim(' + h + ')', 50);
 }
};
function h3Anim(h)
{
 var h3 = h3Arr[h], c = h3.animCount++, noAnim = 1;
 for (var i = 0; i < h3.animNodes.length; i++)
 {
  var s = h3.animNodes[i], frac = Math.max(0, Math.min(1, (c-i)/10)),
   marg = document.all && !window.opera ? 'marginRight' : 'marginLeft';
  if (s.animDone) continue;
  noAnim = 0;
  s.style.color = h3Cols[Math.floor(frac * 0.99999 * h3Cols.length)];
  if (frac == 1)
  {
   s.style[marg] = '0';
   s.animDone = 1;
  }
  else s.style[marg] = 0.6*(1-frac) + 'em';
 }
 if (noAnim) clearInterval(h3.animTimer);
 h3.style.visibility = 'inherit';
};

if (document.documentElement)
{
 // Hide H3 elements for animation and trigger show on load.
 document.write('<style type="text/css"> h3 { visibility: hidden } </style>');
 var h3aOL = window.onload;
 window.onload = function()
 {
  if (h3aOL) h3aOL();
  h3Setup();
 }
}