function byId(id)
{
	if (document.getElementById(id) != null)
		return document.getElementById(id);
	else
	{
		if (document.getElementById("_debug_") != null)
			_debug_add("<font style='color:red;font-weight:bold;'>byId:</font> "+id+" n'existe pas.");
		return null;
	}
}

function byName(name)
{
	if (document.getElementsByName(name) != null)
		return document.getElementsByName(name);
	else
	{
		if (document.getElementById("_debug_") != null)
			_debug_add("<font style='color:red;font-weight:bold;'>byName:</font> "+name+" n'existe pas.");
		return null;
	}
}

function newElements(tagName, attribut)
{
	var newElement = document.createElement(tagName);
	if (!newElement)
	{
		if (byId("_debug_"))
			_debug_add("<font style='color:red;font-weight:bold;'>newElements:</font> Une erreur est survenu. (1).");
		else
			alert("newElements: Une erreur est survenu. (1).");
		return;
	}
	if (typeof attribut != "object" && !isset(attribut))
		return;
	
	for(k in attribut)
	{
		if (k == "style" && document.all)
			newElement.style.setAttribute("cssText", attribut[k]);
		else if (k == "onclick")
		{
			if (!document.all)
				newElement.setAttribute(k, attribut[k]);
		}
		else
			newElement.setAttribute(k, attribut[k]);
	}
	if (byId("_debug_"))
		_debug_add("<font style='color:green;font-weight:bold;'>newElements:</font> Succes.");
	return newElement;
}

function addElements(Elements, Parents)
{
	if (Elements && Parents)
	{
		if (Parents == "body")
			document.body.appendChild(Elements);
		else
			Parents.appendChild(Elements);
		if (byId("_debug_"))
			_debug_add("<font style='color:green;font-weight:bold;'>addElements:</font> Succes.");
	}
	else
	{
		if (byId("_debug_"))
			_debug_add("<font style='color:red;font-weight:bold;'>newElements:</font> Une erreur est survenu. (1).");
		else
			alert("addElements: Une erreur est survenu. (1).");
	}
}

function delElements(Elements)
{
	if (Elements)
	{
		if (Elements.parentNode)
			Elements.parentNode.removeChild(Elements);
		else
			if (byId("_debug_"))
				_debug_add("<font style='color:green;font-weight:bold;'>delElements:</font> Une erreur est survenu. (2).");
			else
				;//alert("delElements: Une erreur est survenu. (2).");
	}
	else
		if (byId("_debug_"))
			_debug_add("<font style='color:green;font-weight:bold;'>delElements:</font> Une erreur est survenu. (1).");
		else
			;//alert("delElements: Une erreur est survenu. (1).");
}

function removeElement( el ){ if(document.all) el.removeNode(true); else el.parentNode.removeChild(el); }

function getPar( el, tag ) // le parent OU lui-même si est du même nodeName
{
         tag = tag.toUpperCase();
         while(  el.nodeName.toUpperCase() != tag ) { el = el.parentNode; }
         return el;
}

function getParent(  el, tag ) // obligatoirement le parent
{
         return getPar( el.parentNode, tag );
}

function inText(el) {
                      var txt = el.innerText ; if( txt === undefined ) txt =  el.textContent;
                      return (txt)? txt.replace(/^\s+|\s+$/, '') : '';
}


function _Hide(Elements) { if (Elements) Elements.style.display = 'none'; }

function _Show(Elements) { if (Elements) Elements.style.display = ''; }

function _Scroll(Elements) { Elements.scrollTop = Elements.scrollHeight; }

function get_offsetXY(el, elPar)
{                                  var oBody = document.body;
                                   var el_0 = el;
	if( ! elPar ) elPar = oBody;
	if( elPar != oBody )
	{
	          var XY_P =  get_offsetXY( elPar );
	          var XY_E =  get_offsetXY( el );
	   return Array( XY_E[0] - XY_P[0] , XY_E[1] - XY_P[1] );
	 }
	 var offY=0; var offX=0;
      // offset
         while( el != elPar )
	 {
		offY += el.offsetTop;
		offX += el.offsetLeft;
                el = el.offsetParent;
	 }
      // body : margin
         if( el == oBody ) // -> + margin
         {   var mg;
                    if( (mg = el.style.marginLeft) && (mg = parseInt(mg)) && ! isNaN(mg) ) { offX += mg;  }
	            if( (mg = el.style.marginTop ) && (mg = parseInt(mg)) && ! isNaN(mg) ) { offY += mg;  }
         }
      // overflow:auto ?
         el = el_0;  var sY=0, sX=0;
         while( (el = el.parentNode) && el != elPar )
         {
                if( (sY = el.scrollTop) || (sX = el.scrollLeft) )
                {
                     if( sY ) offY -= sY;
                     if( sX ) offX -= sX;
                }
         }

         return Array(offX, offY);
}

function getStyle(el, strCssRule)
{                                         var strValue = '';

	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(el, '').getPropertyValue(strCssRule);
	}
	else if(el.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ return p1.toUpperCase();} );
		strValue = el.currentStyle[strCssRule];
	}
	return strValue;
}


