function isDefined(o) {
  return (o != "undefined" && o != null)
}

function createDOM(name, attrs) {
  var i = 1;
  elm = document.createElement(name);

  if(isDefined(attrs[0]) && typeof(attrs[0]) != "string") {
    for(k in attrs[0]) {
      if(k == "style")
        elm.style.cssText = attrs[0][k];
      else if(k == "class")
        elm.className = attrs[0][k];
      else
        elm.setAttribute(k, attrs[0][k]);
    }
    for(i; i < attrs.length; i++) {
      var n = attrs[i];
      if(isDefined(n)) {
        if(typeof(n) == "string")
          n = document.createTextNode(n);
        elm.appendChild(n);
      }
    }
  }
  else {
    //We have just a string...
    var n = attrs[0];
    if(isDefined(n)) {
      n = document.createTextNode(n);
      elm.appendChild(n);
    }
  }
  return elm;
}

var UL = function() { return createDOM.apply(this, ["ul", arguments]); };
var LI = function() { return createDOM.apply(this, ["li", arguments]); };
var TD = function() { return createDOM.apply(this, ["td", arguments]); };
var TR = function() { return createDOM.apply(this, ["tr", arguments]); };
var TH = function() { return createDOM.apply(this, ["th", arguments]); };
var TBODY = function() { return createDOM.apply(this, ["tbody", arguments]); };
var TABLE = function() { return createDOM.apply(this, ["table", arguments]); };
var INPUT = function() { return createDOM.apply(this, ["input", arguments]); };
var SPAN = function() { return createDOM.apply(this, ["span", arguments]); };
var B = function() { return createDOM.apply(this, ["b", arguments]); };
var A = function() { return createDOM.apply(this, ["a", arguments]); };
var DIV = function() { return createDOM.apply(this, ["div", arguments]); };
var IMG = function() { return createDOM.apply(this, ["img", arguments]); };
var BUTTON = function() { return createDOM.apply(this, ["button", arguments]); };
var H1 = function() { return createDOM.apply(this, ["h1", arguments]); };
var H2 = function() { return createDOM.apply(this, ["h2", arguments]); };
var H3 = function() { return createDOM.apply(this, ["h3", arguments]); };
var BR = function() { return createDOM.apply(this, ["br", arguments]); };
var TEXTAREA = function() { return createDOM.apply(this, ["textarea", arguments]); };
var FORM = function() { return createDOM.apply(this, ["form", arguments]); };
var P = function() { return createDOM.apply(this, ["p", arguments]); };
var SELECT = function() { return createDOM.apply(this, ["select", arguments]); };
var OPTION = function() { return createDOM.apply(this, ["option", arguments]); };
var TN = function(text) { return document.createTextNode(text); };
var IFRAME = function() { return createDOM.apply(this, ["iframe", arguments]); };
var SCRIPT = function() { return createDOM.apply(this, ["script", arguments]); };

