addEvent = function(obj, evType, fn, useCapture) {
  if (obj.addEventListener) {
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent) {
    var r = obj.attachEvent("on" + evType, fn);
    return r;
  }
}

document.getElementsByClassName = function(className) {
  var children = document.getElementsByTagName('*') || document.all;
  var elements = new Array();
  for (var i = 0, child; child = children[i]; i++) {
    var classNames = child.className.split(' ');
    for (var j = 0; j < classNames.length; j++) {
      if (classNames[j] == className) {
        elements.push(child);
        break;
      }
    }
  }
  return elements;
}


initRollovers = function() {
  if (!document.getElementById) return
  var aPreLoad = new Array();
  var sTempSrc;
  var aImages = new Array();
  aImages = document.getElementsByClassName('roll');
  for (var i = 0, aImage; aImage = aImages[i]; i++) {
    var src = aImage.getAttribute('src');
    if (src.lastIndexOf('_roll') < 1) {
      var ftype = src.substring(src.lastIndexOf('.'), src.length);
      var hsrc = src.replace(ftype, '_roll' + ftype);

      aImage.setAttribute('hsrc', hsrc);
      aPreLoad[i] = new Image();
      aPreLoad[i].src = hsrc;

      aImage.onmouseover = function() {
        sTempSrc = this.getAttribute('src');
        this.setAttribute('src', this.getAttribute('hsrc'));
      }

      aImage.onmouseout = function() {
        if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_roll' + ftype, ftype);
        this.setAttribute('src', sTempSrc);
      }
    }
  }
}

initExamples = function() {
  examples = document.getElementsByClassName('example');
  for (var i = 0, example; example = examples[i]; i++) {
    example.onmouseover = function() {
      var target = document.getElementById("example");
      target.src = "/images/sidebar/concept_example_" + this.getAttribute("id") + ".jpg";
    }
  }
}

initExternalLinks = function() {
  externals = document.getElementsByTagName('a');
  for (var i = 0, external; external = externals[i]; i++) {
    if (external.getAttribute("href") && external.getAttribute("rel") == "external")
    external.target = "_blank";
  }
}

var header;
var list;

initNavigation = function() {
  var navigation = document.getElementById("navigation");
  for (var i = 0, node; node = navigation.childNodes[i]; i++)
  {
    if (node.nodeName == "H1")
    header = node;
  }

  header.onmouseover = function() {
    this.className = "over";
  }
  header.onmouseout = function() {
    this.className = "";
  }
  header.onclick = function() {
    window.location = "/";
  }

  list = document.getElementById("menu");

  for (var j = 0, item; item = list.childNodes[j]; j++)
  {
    if (item.nodeName)
    {
      item.onmouseover = function() {
        for (var k = 0, subitem; subitem = list.childNodes[k]; k++) subitem.className = "";
        this.className = "over";
      }
      item.onmouseout = function() {
        this.className = "";
      }
    }
  }
  var about = document.getElementById("about");
  about.onmouseover = function() {
    this.className = "roll";
  }
  about.onmouseout = function() {
    this.className = "";
  }

  var contact = document.getElementById("contact");
  contact.onmouseover = function() {
    this.className = "roll";
  }
  contact.onmouseout = function() {
    this.className = "";
  }

  var contact = document.getElementById("blog");
  contact.onmouseover = function() {
    this.className = "roll";
  }
  contact.onmouseout = function() {
    this.className = "";
  }
}

jumptoiframe = function() {
  iframes = document.getElementsByTagName("iframe");
  links = document.getElementsByTagName("a");
  target = iframes[0];
  for (var i = 0, link; link = links[i]; i++) {
    if ("iframe" == link.getAttribute("rel")) {
      link.onclick = function() {
        window.location = window.location + "#" + target.getAttribute("id");
      }
    }
  }
}
addEvent(window, "load", jumptoiframe);
addEvent(window, "load", initRollovers);
addEvent(window, "load", initExamples);
addEvent(window, "load", initExternalLinks);
addEvent(window, "load", initNavigation);

function number_format(nStr)
 {
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}
