var DOMhelp = new function() {
  function addArray(elt, array, skip) {
    for (var i=skip; i<array.length; ++i)
      if (array[i].constructor==Array)
        addArray(elt, array[i], 0);
      else if (array[i].constructor==String)
        elt.appendChild(document.createTextNode(array[i]));
      else if (array[i].nodeType)
        elt.appendChild(array[i]);
      else for (var a in array[i])
        elt[a]=array[i][a];
    return elt;
  }
  this.appendContent = function(elt) {
    addArray(elt, arguments, 1);
  }
  this.replaceContent = function(elt) {
    while(elt.hasChildNodes())
      elt.removeChild(elt.lastChild);
    addArray(elt, arguments, 1);
  }
  this.createElement = function(tag) {
    var dot=tag.indexOf('.');
    var hash=tag.indexOf('#');
    if (hash>dot) {
      if (dot>-1) {
        var elt=document.createElement(tag.substring(0,dot));
        elt.className=tag.substring(dot+1, hash);
      } else
        var elt=document.createElement(tag.substring(0,hash));
      elt.id=tag.substring(hash+1);
    } else if (dot>hash) {
      if (hash>-1) {
        var elt=document.createElement(tag.substring(0,hash));
        elt.id=tag.substring(hash+1, dot);
      } else
        var elt=document.createElement(tag.substring(0,dot));
      elt.className=tag.substring(dot+1);
    } else
      var elt=document.createElement(tag);
    return addArray(elt, arguments, 1);
  }
  this.map = function(fn, array) {
    var a=[];
    for (var i=0; i<array.length; ++i)
      a[i]=fn(array[i]);
    return a;
  }
}
// Hint: "var o=DOMhelp.createElement;"
