if (document.ELEMENT_NODE == null) {
	document.ELEMENT_NODE = 1;
	document.ATTRIBUTE_NODE = 2;
	document.TEXT_NODE = 3;
	document.CDATA_SECTION_NODE = 4;
	document.ENTITY_REFERENCE_NODE = 5;
	document.ENTITY_NODE = 6;
	document.PROCESSING_INSTRUCTION_NODE = 7;
	document.COMMENT_NODE = 8;
	document.DOCUMENT_NODE = 9;
	document.DOCUMENT_TYPE_NODE = 10;
	document.DOCUMENT_FRAGMENT_NODE = 11;
	document.NOTATION_NODE = 12;
}


function addEvent(elm, evType, fn) {
// attache un evenement de maniere compatible avec Gecko et IE
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, false);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
	  eval('elm.on' + evType + '= fn') ;
  }
} 
function removeEvent(elm, evType, fn) {
	if (elm.removeEventListener){
		elm.removeEventListener(evType, fn, false);
		return true;
	} else if (elm.detachEvent){
		var r = elm.detachEvent("on"+evType, fn);
		return r;
	} else {
		eval('elm.on' + evType + '= ts_null') ;
	}
}


function hasClass(node, classname) {
	return ((' '+node.className+' ').indexOf(' '+classname+' ') != -1) ;
}
function removeClass(node, className) {
	var old = ' ' + node.className ;
	old = old.replace(new RegExp(' ' + className, "g"), '') ;
	var whtSpEnds = new RegExp("^\\s*|\\s*$", "g");
	node.className = old.replace(whtSpEnds, '');
}
function addClass(node, className) {
	var old = node.className ;
	node.className = old + ' ' + className ;
}


function getTextContent(node) {
  var i;
  var txt;

  txt = "";
  for (i=0; i<node.childNodes.length; i++)
  if (node.childNodes[i].nodeType == document.TEXT_NODE) {
	  txt += node.childNodes[i].nodeValue;
  } else if (node.childNodes[i].nodeType == document.ELEMENT_NODE) {
  	  if (node.childNodes[i].tagName == 'INPUT') {
  		   txt += node.childNodes[i].value ;
  	  } else if (node.childNodes[i].tagName == 'SELECT') {
  	  	if (node.childNodes[i].selectedIndex != -1) {
  	  		txt += node.childNodes[i].options[node.childNodes[i].selectedIndex].text ;
  	  	}
  	  } else {
  	  	   txt += getTextContent(node.childNodes[i]);
  	  }
  }
  return txt ;
}