var XHTMLNS = "http://www.w3.org/1999/xhtml";
// via http://simon.incutio.com/archive/2003/06/15/javascriptWithXML
function createElement(ns,element) {
    if (typeof document.createElementNS != 'undefined') {
        return document.createElementNS(ns,element);
    }
    if (typeof document.createElement != 'undefined') {
        return document.createElement(element);
    }
    return false;
}

/* http://www.chriscassell.net/log/2004/12/19/add_label_click.html */
function addSafariHacks() {
  if (navigator.userAgent.indexOf("Safari") > 0) {
    var labels = document.getElementsByTagName("label");
    for (i = 0; i < labels.length; i++) {
      labels[i].addEventListener("click", addLabelFocus, false);
    }
  }
}

function addLabelFocus() {
  var item = document.getElementById(this.getAttribute("for"));
  item.focus();
  if (item.getAttribute("type") == "checkbox") {
    if (!item["checked"]) {
      item["checked"] = true;
    }
    else {
      item["checked"] = false;
    }
  }
  else if (item.getAttribute("type") == "radio") {
    var allRadios = document.getElementsByTagName("input");
    var radios = new Array();
    for (var i = 0; i < allRadios.length; i++) {
      if (radios[i]["checked"] &&
          radios[i].getAttribute("id") != item.getAttribute("id")) {
        radios[i]["checked"] = false;
      }
    }
    item["checked"] = true;
  }
}

function alternateTableRows() {
  var rows = document.getElementsByTagName("tr");
  for( var row = 1; row < rows.length; row += 2 ) {
    if( rows[row].parentNode.nodeName.toLowerCase() == 'tbody' ) {
      rows[row].className += " alt";
    }
  }
}

// Add an eventListener to browsers that can do it somehow.
// Originally by the amazing Scott Andrew.
function addEvent(obj, evType, fn) {
  if (obj.addEventListener) {
    obj.addEventListener(evType, fn, false);
    return true;
  } else if (obj.attachEvent) {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    return false;
  }
}

addEvent(window,"load",addSafariHacks);
addEvent(window,"load",alternateTableRows);
