function $(id){
  return document.getElementById(id)
}

function $getObj(obj){
  if(typeof obj=="undefined")obj=document
  if(typeof obj=="string")obj=$(obj)
  return obj
}

function $tags(tagName,obj){
  obj=$getObj(obj)
  return obj.getElementsByTagName(tagName)  
}

function $new(tagName,innerHTML){
    var newTag=document.createElement(tagName)
    if(typeof innerHTML=="string")
      newTag.innerHTML=innerHTML
    return newTag
}

function $before(n,o){
  o=$getObj(o)
  o.parentNode.insertBefore(n,o)
}

function $replace(n,o){
  o=$getObj(o)
  o.parentNode.replaceChild(n,o)
}

function $remove(o){
  o=$getObj(o)
  o.parentNode.removeChild(o)
}

function removeClass(o,className){
  o=$getObj(o)
  var r=eval("/\\b"+className+"\\b/g")
  o.className=o.className.replace(r,"")
}

function addEvent(obj,evType,fn){
  if(typeof obj=="object" && !(obj.innerHTML||obj.window))
    for(var i=0;i<obj.length;i++)
      addEvent(obj[i],evType,fn)
  else{
    obj=$getObj(obj)
    try{
      obj.addEventListener(evType,fn,true)
    }catch(e){
      obj.attachEvent("on"+evType,fn)
    }
  }
}

function getSource(e,tagName){
  if(typeof e=="undefined")e=window.event
  var src=e.target?e.target:e.srcElement
  if(src.nodeType==3)src=src.parentNode
  if(typeof tagName=="string")
    while(src.tagName!=tagName)
      src=src.parentNode
  return src
}

function cancelEvent(e){
  try{ e.preventDefault() }catch(e){}
  return false
}
