// -----------------------------------------------------------------------------

function $(id)
{
 return (typeof id == 'string') ? document.getElementById( id ) : id;
}

function trim( s )
{
 return s.replace(/^[\t\n\r ]+/,'').replace(/[\t\n\r ]+$/,'');
}

function GetInnerText( e )
{ 
 return document.all ? $(e).innerText : $(e).textContent;
}

function GetPositionTopLeft( e, topLeft )
{
 var total = topLeft ? e.offsetTop : e.offsetLeft;
 while( e = e.offsetParent ) total += (topLeft ? e.offsetTop : e.offsetLeft);	
 return total;
}

function SetOpacity( e, opacity )
{
 opacity = (opacity>=100)? 99.999 : opacity;
 e.style.filter = "alpha(opacity:"+opacity+")";
 e.style.KHTMLOpacity = opacity/100;
 e.style.MozOpacity = opacity/100;
 e.style.opacity = opacity/100;
}

function ShowHide( e, showHide )
{
 e.style.display = ( typeof showHide == 'string' ) ? showHide : ( showHide ? 'block' : 'none' );
}

// -----------------------------------------------------------------------------
//
// HMenu
//

var HMenu_HideDelay     = 250; // delais en ms
var HMenu_CurrentObject = null;
var HMenu_IDDelay = "undefined";

// 4eme argument pour forcer le ID_SubMenu au lieu de elementID_SubMenu
// 5eme argument pour la position du curseur 
// HMenu_Process( oElement, oEvent, align, submenu,   )
function HMenu_Process( oElement, oEvent, align )
{
 if( !document.getElementById ) return;
 
 if( HMenu_CurrentObject != null ) // hide previous menu
		HMenu_DoHide();

 HMenu_CancelDelayHide();
 
 HMenu_CurrentObject = $( ( HMenu_Process.arguments.length >= 4 ? HMenu_Process.arguments[3] : oElement.id ) + "_SubMenu" ); 
 if( HMenu_CurrentObject )
		{
		 HMenu_CurrentObject.HMenuParent = oElement;
		 
		 if( !oElement.HMenuClassSel )
		    {
         oElement.HMenuClassSel = '';
         var c = oElement.className.split( ' ' );
         for( i = 0 ; i < c.length ; i++ )
            if( c[i].indexOf( 'HMenu', 0 ) == 0 )
               {
                oElement.HMenuClassSel = c[i] + 'Sel';
                break;
               }
        }
        
		 oElement.onmouseout = function() { HMenu_DoDelayHide(); };
		 
		 if( !HMenu_CurrentObject.contains )
			HMenu_CurrentObject.contains = function( oChild )
																	  {
																	   if( !oChild || !oChild.nodeType ) return false;
																	   if( this == oChild   ) return true;
																		 while( oChild.parentNode ) if( (oChild = oChild.parentNode) == this ) return true;
																		 return false;
																	  };

		 HMenu_CurrentObject.onmouseover = function() { HMenu_CancelDelayHide();    };
		 HMenu_CurrentObject.onmouseout  = function() { if( !this.contains( document.all ? window.event.toElement : oEvent.relatedTarget ) ) HMenu_DoDelayHide(); };
		 HMenu_CurrentObject.onclick     = function() { HMenu_DoDelayHide();    };

 		 HMenu_CurrentObject.style.left = HMenu_CurrentObject.style.top = "-500px";
     HMenu_DoShow();
     
     // position du curseur
     if( HMenu_Process.arguments.length >= 5 && HMenu_Process.arguments[4] )
        {
         HMenu_CurrentObject.style.left = ( ( window.pageXOffset || document.documentElement.scrollLeft || 0 ) + (document.all ? window.event.clientX : oEvent.clientX)-2)+'px';
         HMenu_CurrentObject.style.top = ( ( window.pageYOffset || document.documentElement.scrollTop || 0 ) + (document.all ? window.event.clientY : oEvent.clientY)-2)+'px';
        }
     else
        {
     		 HMenu_CurrentObject.style.left = GetPositionTopLeft(oElement,0) + (( align == 'right' )? oElement.offsetWidth - HMenu_CurrentObject.offsetWidth : 0 ) + "px";
    		 HMenu_CurrentObject.style.top  = GetPositionTopLeft(oElement,1) + oElement.offsetHeight + "px";
    		}
		}
}

function HMenu_DoShow()
{
 if( !HMenu_CurrentObject ) return;
 HMenu_CurrentObject.style.visibility='visible';
 
 if( HMenu_CurrentObject.HMenuParent && HMenu_CurrentObject.HMenuParent.HMenuClassSel )
     HMenu_CurrentObject.HMenuParent.className += ' ' + HMenu_CurrentObject.HMenuParent.HMenuClassSel;
 
 if( !document.all || !document.all.tags ) return;
  
 var sel = document.all.tags("SELECT");
 for( i=0 ; i< sel.length ; i++ )
 		{
 		 sel[i].HMenuPrevVisibility = sel[i].style.visibility ? sel[i].style.visibility : 'visible';
 		 sel[i].style.visibility = 'hidden';
 		}
}

function HMenu_DoHide()
{
 if( !HMenu_CurrentObject ) return;

 HMenu_CurrentObject.style.left = "-500px";
 HMenu_CurrentObject.style.top  = "-500px";
 HMenu_CurrentObject.style.visibility = 'hidden';
 
 if( HMenu_CurrentObject.HMenuParent )
  {
   if( HMenu_CurrentObject.HMenuParent.HMenuClassSel )
      {
       var reg = new RegExp( HMenu_CurrentObject.HMenuParent.HMenuClassSel, "g" );
       HMenu_CurrentObject.HMenuParent.className = HMenu_CurrentObject.HMenuParent.className.replace( reg, '' );
      }
   HMenu_CurrentObject.HMenuParent = null;   
  }
  
 HMenu_CurrentObject = null;
 HMenu_IDDelay = "undefined";

 if( !document.all || !document.all.tags ) return;
  
 var sel = document.all.tags("SELECT");
 for( i=0 ; i< sel.length ; i++ )
  if( sel[i].HMenuPrevVisibility )
 		{
 		 sel[i].style.visibility = sel[i].HMenuPrevVisibility;
		 sel[i].HMenuPrevVisibility = '';
 		}
}

function HMenu_DoDelayHide()
{
 HMenu_IDDelay = setTimeout( "HMenu_DoHide()",  HMenu_HideDelay );
}

function HMenu_CancelDelayHide()
{
 if( HMenu_IDDelay != "undefined" )
			clearTimeout( HMenu_IDDelay );
 HMenu_IDDelay = "undefined";
}

// -----------------------------------------------------------------------------
