function isSet( value ) {
  return ( typeof value != 'undefined' && value != null );
}

var NODE_TYPE_TEXT = 3;
var NODE_TYPE_CDATA = 4;
// Suppression de tous les enfants
function domRemoveChild( oObject ) {
  if ( oObject.childNodes.length == 0 ) return ;
  while( oObject.childNodes.length > 0 )
    oObject.removeChild( oObject.firstChild );
}
function domRemoveClassName( obj, className ) {
  var cName = obj.className.split( className );
  var newName = '';
  for( var i=0; i<cName.length; i++ )
    if ( cName[ i ].length > 0 )
      newName += cName[ i ];
  obj.className = newName;
}
function domAddClassName( obj, className ) {
  if ( obj.className.indexOf( className ) == -1 )
    obj.className += ' ' + className;
}
function domGetParentNode( childNode, parentTagName ) {
  var rv = childNode.parentNode;
  while( rv.tagName.toLowerCase() != parentTagName.toLowerCase() )
    rv = rv.parentNode;
  return rv;
}
function domGetChildNodes( parentNode ) {
  var rv = new Array();
  for ( var i=0; i<parentNode.childNodes.length; i++ ) // ( var i in parentNode.childNodes )
    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;
}
function domGetText( parentNode ) {
  var rv = '';
  if ( isSet( parentNode.childNodes ) )
    for ( var i=0; i<parentNode.childNodes.length; i++ ) // for ( var i in parentNode.childNodes )
      if ( parentNode.childNodes[ i ].nodeType == NODE_TYPE_TEXT )
        rv += parentNode.childNodes[ i ].nodeValue;
  return rv;
}
function domFilterNodesByTagName( 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;
}
