/*************************/
/* PUBLIC CONSTANTES    */
/*************************/

	var mOpacity_delayOpacityDefault = 8;//(1 - 10)
	
	
/*************************/
/* PRIVATE CONSTANTES  */
/*************************/

	var mOpacity_delayOpacity = mOpacity_delayOpacityDefault;

	
/*************************/
/* PUBLIC FUNCTIONS       */
/*************************/
	
	/**
	* This function allow to fade in element
	*/
	function opacity_fadeIn(id)
	{
		opacity_fadeElement(id, "true", 0, "false", '');
	}
	
	/**
	* This function allow to fade out element
	*/
	function opacity_fadeOut(id)
	{
		opacity_fadeElement(id, "false", 0, "false", '');
	}
	
	/**
	* This function allow to fade out element and remove this when opacity is equals to 0
	*/
	function opacity_fadeOutAndDelete(id)
	{
		opacity_fadeElement(id, "false", 0, "true", '');
	}
	
	/**
	* This function allow to fade out element and remove this when opacity is equals to 0
	*/
	function opacity_fadeOutAndDeleteFather(id, idToDelete)
	{
		opacity_fadeElement(id, "false", 0, "true", idToDelete);
	}
	
	/**
	* This function allow to change the default value opacity
	*/
	function opacity_setDelayopacity(delay)
	{
		mOpacity_delayOpacity = delay;
	}
	
	
/*************************/
/* PRIVATE FUNCTIONS	 */
/*************************/
	
	/**
	* This function allow to fase in or fade out element
	*/
	function opacity_fadeElement(id, isFadeIn, delay, deleteElement, idToDelete)
	{
		var elt = document.getElementById(id);
		if(elt)
		{
			if(isFadeIn == "true")
			{
				if(!opacity_isOpacityMax(elt))
				{
					delay *= 1;
					delay += mOpacity_delayOpacity;

					opacity_setOpacity(elt,delay);
					setTimeout("opacity_fadeElement('"+id+"', 'true', '"+delay+"', '"+deleteElement+"', '"+idToDelete+"');", 1);
				}
				else
					opacity_setDelayopacity(mOpacity_delayOpacityDefault);
			}
			else
			{
				if(!opacity_isOpacityMin(elt))
				{
					delay *= 1;
					delay += mOpacity_delayOpacity;
					
					opacity_setOpacity(elt,100-delay);
					setTimeout("opacity_fadeElement('"+id+"', 'false', '"+delay+"', '"+deleteElement+"', '"+idToDelete+"');", 1);
				}
				else
				{
					opacity_setDelayopacity(mOpacity_delayOpacityDefault);
					opacity_setOpacity(elt,0);
					if(deleteElement == "true")
						elt.parentNode.removeChild(elt);
						
					if(idToDelete != '')
					{
						var eltFather = document.getElementById(idToDelete);
						if(eltFather)
							eltFather.parentNode.removeChild(eltFather);
					}
					
					opacity_showHideSelect(true);
				}
			}
		}
	}

	/**
	* This function allow to setter the opacity
	*/
	function opacity_setOpacity(object, value) 
	{
		if(document.all)
			object.style.filter = "alpha(opacity="+value+")";
		else
			object.style.opacity = value/100;
	}
	
	/**
	* This function allow to get the opacity oh element by id
	*/
	function opacity_getOpacityById(id)
	{
		var elt = document.getElementById(id);
		if(elt)
			opacity_getOpacity(elt);
    }
    
    /**
	* This function allow to get the opacity oh element by object
	*/
	function opacity_getOpacity(object)
	{
		try
		{
          if (document.all)
            return object.filters['alpha'].opacity;
          else if (document.getElementById)
          {
	          var opac = object.style.MozOpacity*100;
	          if(opac > 100)
	          	opac = 100;
	          	
	          if(opac < 0)
	          	opac = 0;

            return opac;
        	}
    	}
    	catch(e)
    	{
        	return e;
    	}
    }
    
    /**
	* This function allow to get the opacity oh element by id
	*/
	function opacity_isOpacityMaxById(id)
    {
	    if(opacity_getOpacityById(id) >= 100)
	    	return true;
	    else
	    	return false;
    }
    
	/**
	* This function allow to get the opacity oh element by object
	*/
    function opacity_isOpacityMax(object)
    {
	    if(opacity_getOpacity(object) >= 100)
	    	return true;
	    else
	    	return false;
    }
    
    /**
	* This function allow to get the opacity oh element by id
	*/
    function opacity_isOpacityMin(id)
    {
	    if(opacity_getOpacityById(id) <= 0)
	    	return true;
	    else
	    	return false;
    }
    
    /**
	* This function allow to get the opacity oh element by object
	*/
    function opacity_isOpacityMin(object)
    {
	    if(opacity_getOpacity(object) <= 0)
	    	return true;
	    else
	    	return false;
    }
	
	/**
	* This fucntion allow to shox/hide select
	*/
	function opacity_showHideSelect(show)
	{
		if(navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("MSIE 6.0") != -1)
			opacity_showHideByTagName("SELECT", show);
	}
	
	/**
	* This fucntion allow to shox/hide tagName
	*/
	function opacity_showHideByTagName(tagName, show)
	{
		var list = document.getElementsByTagName(tagName);
		if(list)
		{
			for(var i = 0; i < list.length; i++)
			{
				var elt = list[i];
				if(elt)
				{
					if(show)
						elt.style.visibility = "visible";
					else
						elt.style.visibility = "hidden";
				}
			}	
		}
	}