function highlight(elem) {
   if ( hasClass(elem, 'highlight') ) {
       removeClass(elem, 'highlight');
   }
   else {
       addClass(elem, 'highlight');
   }
}

function hasClass(obj,cName) {
   return new RegExp('\\b'+cName+'\\b').test(obj.className);
}

function addClass(obj,cName) {
   if (!hasClass(obj,cName)) {
       obj.className+=obj.className?' '+cName:cName;
   }
   return true;
}

function removeClass(obj,cName) {
   if (!hasClass(obj,cName)) return false;
   var rep = obj.className.match(' '+cName)?' '+cName:cName;
   obj.className=obj.className.replace(rep,'');
   return true;
}
