function domTools() {}

domTools.TextNode = 3;
domTools.CDataSection = 4;

domTools.removeChildren = function( oObject ) {
  if ( oObject.childNodes.length == 0 ) return ;
  while( oObject.childNodes.length > 0 )
    oObject.removeChild( oObject.firstChild );
}
domTools.getText = function( parentNode ) {
  var rv = '';
  var nodeType;
  for ( var i=0; i<parentNode.childNodes.length; i++ ) {
    nodeType = parentNode.childNodes[ i ].nodeType;
    if ( nodeType == domTools.TextNode || nodeType == domTools.CDataSection )
      rv += parentNode.childNodes[ i ].nodeValue.trim();
  }
  if ( 0 == rv.length ) rv = null;
  return rv;
}
domTools.removeClassName = function( node, className ) {
  var cName = node.className.split( className );
  var newName = '';
  for( var i=0; i<cName.length; i++ )
    if ( cName[ i ].length > 0 )
      newName += cName[ i ];
  node.className = newName;
}
domTools.addClassName = function( node, className ) {
  if ( node.className.indexOf( className ) == -1 )
    node.className += ' ' + className;
}
domTools.parentNode = function( childNode, parentTagName ) {
  var rv = childNode.parentNode;
  while( rv.tagName.toLowerCase() != parentTagName.toLowerCase() )
    rv = rv.parentNode;
  return rv;
}
domTools.getChildNodes = function( parentNode ) {
  var rv = new Array();
  for ( var i=0; i<parentNode.childNodes.length; i++ )
    if ( typeof( parentNode.childNodes[ i ].tagName ) != 'undefined' && typeof( parentNode.childNodes[ i ].nodeType ) != 'undefined' )
      rv[ rv.length ] = parentNode.childNodes[ i ];
  if ( 0 == rv.length ) rv = null;
  return rv;
}
domTools.filterNodesByTagName = function( nodeList, expectedTagName ) {
  var rv = new Array();
  for ( var i=0; i<nodeList.length; i++ )
    if ( nodeList[ i ].tagName.toLowerCase() == expectedTagName.toLowerCase() )
      rv[ rv.length ] = nodeList[ i ];
  if ( 0 == rv.length ) rv = null;
  return rv;
}