/************************************************************************************************************	Form field tooltip	(C) www.dhtmlgoodies.com, September 2006	This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.			Terms of use:	Look at the terms of use at http://www.dhtmlgoodies.com/index.html?page=termsOfUse		Thank you!		www.dhtmlgoodies.com	Alf Magne Kalleland************************************************************************************************************/var DHTMLgoodies_globalTooltipObj;/** Constructor **/function DHTMLgoodies_formTooltip(){	var tooltipDiv;	var tooltipText;	var tooltipContentDiv;				// Reference to inner div with tooltip content	var imagePath;						// Relative path to images	var arrowImageFile;					// Name of arrow image	var arrowImageFileRight;			// Name of arrow image	var arrowRightWidth;	var arrowTopHeight;	var tooltipWidth;					// Width of tooltip	var roundedCornerObj;				// Reference to object of class DHTMLgoodies_roundedCorners	var tooltipBgColor;	var closeMessage;					// Close message	var activeInput;					// Reference to currently active input	var tooltipPosition;				// Tooltip position, possible values: "below" or "right"	var tooltipCornerSize;				// Size of rounded corners	var displayArrow;					// Display arrow above or at the left of the tooltip?	var cookieName;						// Name of cookie	var disableTooltipPossibility;		// Possibility of disabling tooltip	var disableTooltipByCookie;			// If tooltip has been disabled, save the settings in cookie, i.e. for other pages with the same cookie name.	var disableTooltipMessage;	var tooltipDisabled;	var isMSIE;	var tooltipIframeObj;	var pageBgColor;					// Color of background - used in ie when applying iframe which covers select boxes	var currentTooltipObj;				// Reference to form field which tooltip is currently showing for		this.currentTooltipObj = false,	this.tooltipDiv = false,	this.tooltipText = false;	this.imagePath = 'formfield/images/';	this.arrowImageFile = 'green-arrow.gif';	this.arrowImageFileRight = 'green-arrow-right.gif';	this.tooltipWidth = 200;	this.tooltipBgColor = '#0066CC';	this.closeMessage = 'Fermer';	this.disableTooltipMessage = 'Ne plus afficher';	this.activeInput = false;	this.tooltipPosition = 'right';	this.arrowRightWidth = 16;			// Default width of arrow when the tooltip is on the right side of the inputs.	this.arrowTopHeight = 13;			// Default height of arrow at the top of tooltip	this.tooltipCornerSize = 10;	this.displayArrow = true;	this.cookieName = 'DHTMLgoodies_tooltipVisibility';	this.disableTooltipByCookie = false;	this.tooltipDisabled = false;	this.disableTooltipPossibility = true;	this.tooltipIframeObj = false;	this.pageBgColor = '#FFFFFF';		DHTMLgoodies_globalTooltipObj = this;		if(navigator.userAgent.indexOf('MSIE')>=0)this.isMSIE = true; else this.isMSIE = false;}DHTMLgoodies_formTooltip.prototype = {	// {{{ initFormFieldTooltip()    /**     *	 *     *  Initializes the tooltip script. Most set methods needs to be executed before you call this method.     *      * @public     */			initFormFieldTooltip : function()	{		var formElements = new Array();		var inputs = document.getElementsByTagName('INPUT');		for(var no=0;no<inputs.length;no++){			var attr = inputs[no].getAttribute('tooltipText');			if(!attr)attr = inputs[no].tooltipText;			if(attr)formElements[formElements.length] = inputs[no];		}					var inputs = document.getElementsByTagName('TEXTAREA');		for(var no=0;no<inputs.length;no++){			var attr = inputs[no].getAttribute('tooltipText');			if(!attr)attr = inputs[no].tooltipText;			if(attr)formElements[formElements.length] = inputs[no];		}		var inputs = document.getElementsByTagName('SELECT');		for(var no=0;no<inputs.length;no++){			var attr = inputs[no].getAttribute('tooltipText');			if(!attr)attr = inputs[no].tooltipText;			if(attr)formElements[formElements.length] = inputs[no];		}					window.refToFormTooltip = this;				for(var no=0;no<formElements.length;no++){			formElements[no].onfocus = this.__displayTooltip;		}		this.addEvent(window,'resize',function(){ window.refToFormTooltip.__positionCurrentToolTipObj(); });				this.addEvent(document.documentElement,'click',function(e){ window.refToFormTooltip.__autoHideTooltip(e); });	}		// }}}	,			// {{{ setTooltipPosition()    /**     *	 *     *  Specify position of tooltip(below or right)     *	@param String newPosition (Possible values: "below" or "right")      *      * @public     */		setTooltipPosition : function(newPosition)	{		this.tooltipPosition = newPosition;	}	// }}}	,			// {{{ setCloseMessage()    /**     *	 *     *  Specify "Close" message     *	@param String closeMessage     *      * @public     */	setCloseMessage : function(closeMessage)	{		this.closeMessage = closeMessage;	}	// }}}	,		// {{{ setDisableTooltipMessage()    /**     *	 *     *  Specify disable tooltip message at the bottom of the tooltip     *	@param String disableTooltipMessage     *      * @public     */	setDisableTooltipMessage : function(disableTooltipMessage)	{		this.disableTooltipMessage = disableTooltipMessage;	}	// }}}	,			// {{{ setTooltipDisablePossibility()    /**     *	 *     *  Specify whether you want the disable link to appear or not.     *	@param Boolean disableTooltipPossibility     *      * @public     */	setTooltipDisablePossibility : function(disableTooltipPossibility)	{		this.disableTooltipPossibility = disableTooltipPossibility;	}	// }}}	,			// {{{ setCookieName()    /**     *	 *     *  Specify name of cookie. Useful if you're using this script on several pages.      *	@param String newCookieName     *      * @public     */	setCookieName : function(newCookieName)	{		this.cookieName = newCookieName;	}	// }}}	,			// {{{ setTooltipWidth()    /**     *	 *     *  Specify width of tooltip     *	@param Int newWidth     *      * @public     */		setTooltipWidth : function(newWidth)	{		this.tooltipWidth = newWidth;	}		// }}}	,			// {{{ setArrowVisibility()    /**     *	 *     *  Display arrow at the top or at the left of the tooltip?     *	@param Boolean displayArrow     *      * @public     */			setArrowVisibility : function(displayArrow)	{		this.displayArrow = displayArrow;	}		// }}}	,			// {{{ setTooltipBgColor()    /**     *	 *     *  Send true to this method if you want to be able to save tooltip visibility in cookie. If it's set to true,     *	It means that when someone returns to the page, the tooltips won't show.     *      *	@param Boolean disableTooltipByCookie     *      * @public     */		setDisableTooltipByCookie : function(disableTooltipByCookie)	{		this.disableTooltipByCookie = disableTooltipByCookie;	}		// }}}	,			// {{{ setTooltipBgColor()    /**     *	 *     *  This method specifies background color of tooltip     *	@param String newBgColor     *      * @public     */		setTooltipBgColor : function(newBgColor)	{		this.tooltipBgColor = newBgColor;	}		// }}}	,			// {{{ setTooltipCornerSize()    /**     *	 *     *  Size of rounded corners around tooltip     *	@param Int newSize (0 = no rounded corners)     *      * @public     */		setTooltipCornerSize : function(tooltipCornerSize)	{		this.tooltipCornerSize = tooltipCornerSize;	}		// }}}	,	// {{{ setTopArrowHeight()    /**     *	 *     *  Size height of arrow at the top of tooltip     *	@param Int arrowTopHeight     *      * @public     */		setTopArrowHeight : function(arrowTopHeight)	{		this.arrowTopHeight = arrowTopHeight;	}		// }}}	,		// {{{ setRightArrowWidth()    /**     *	 *     *  Size width of arrow when the tooltip is on the right side of inputs     *	@param Int arrowTopHeight     *      * @public     */		setRightArrowWidth : function(arrowRightWidth)	{		this.arrowRightWidth = arrowRightWidth;	}		// }}}	,		// {{{ setPageBgColor()    /**     *	 *     *  Specify background color of page.     *	@param String pageBgColor     *      * @public     */		setPageBgColor : function(pageBgColor)	{		this.pageBgColor = pageBgColor;	}		// }}}	,			// {{{ __hideTooltip()    /**     *	 *     *  This method displays the tooltip     *     *      * @private     */			__displayTooltip : function()	{		if(DHTMLgoodies_globalTooltipObj.disableTooltipByCookie){			var cookieValue = DHTMLgoodies_globalTooltipObj.getCookie(DHTMLgoodies_globalTooltipObj.cookieName) + '';				if(cookieValue=='1')DHTMLgoodies_globalTooltipObj.tooltipDisabled = true;		}					if(DHTMLgoodies_globalTooltipObj.tooltipDisabled)return;	// Tooltip disabled		var tooltipText = this.getAttribute('tooltipText');		DHTMLgoodies_globalTooltipObj.activeInput = this;				if(!tooltipText)tooltipText = this.tooltipText;		DHTMLgoodies_globalTooltipObj.tooltipText = tooltipText;				if(!DHTMLgoodies_globalTooltipObj.tooltipDiv)DHTMLgoodies_globalTooltipObj.__createTooltip();				DHTMLgoodies_globalTooltipObj.__positionTooltip(this);									DHTMLgoodies_globalTooltipObj.tooltipContentDiv.innerHTML = tooltipText;		DHTMLgoodies_globalTooltipObj.tooltipDiv.style.display='block';				if(DHTMLgoodies_globalTooltipObj.isMSIE){			if(DHTMLgoodies_globalTooltipObj.tooltipPosition == 'below'){				DHTMLgoodies_globalTooltipObj.tooltipIframeObj.style.height = (DHTMLgoodies_globalTooltipObj.tooltipDiv.clientHeight - DHTMLgoodies_globalTooltipObj.arrowTopHeight);			}else{				DHTMLgoodies_globalTooltipObj.tooltipIframeObj.style.height = (DHTMLgoodies_globalTooltipObj.tooltipDiv.clientHeight);			}		}			}	// }}}	,			// {{{ __hideTooltip()    /**     *	 *     *  This function hides the tooltip     *     *      * @private     */			__hideTooltip : function()	{		try{			DHTMLgoodies_globalTooltipObj.tooltipDiv.style.display='none';		}catch(e){		}			}	// }}}	,	// {{{ getSrcElement()    /**     *	 *     *  Return the source of an event.     *     *      * @private     */		    getSrcElement : function(e)    {    	var el;		if (e.target) el = e.target;			else if (e.srcElement) el = e.srcElement;			if (el.nodeType == 3) // defeat Safari bug				el = el.parentNode;		return el;	    }		// }}}	,	__autoHideTooltip : function(e)	{		if(document.all)e = event;			var src = this.getSrcElement(e);		if(src.tagName.toLowerCase()!='input' && src.tagName.toLowerCase().toLowerCase()!='textarea' && src.tagName.toLowerCase().toLowerCase()!='select')this.__hideTooltip();		var attr = src.getAttribute('tooltipText');		if(!attr)attr = src.tooltipText;		if(!attr){			this.__hideTooltip();		}				}	// }}}	,			// {{{ __hideTooltipFromLink()    /**     *	 *     *  This function hides the tooltip     *     *      * @private     */		__hideTooltipFromLink : function()	{				this.activeInput.focus();		window.refToThis = this;		setTimeout('window.refToThis.__hideTooltip()',10);	}	// }}}	,			// {{{ disableTooltip()    /**     *	 *     *  Hide tooltip and disable it     *     *      * @public     */		disableTooltip : function()	{		this.__hideTooltipFromLink();		if(this.disableTooltipByCookie)this.setCookie(this.cookieName,'1',500);			this.tooltipDisabled = true;		}		// }}}	,			// {{{ __positionTooltip()    /**     *	 *     *  This function creates the tooltip elements     *     *      * @private     */		__createTooltip : function()	{		this.tooltipDiv = document.createElement('DIV');		this.tooltipDiv.style.position = 'absolute';				if(this.displayArrow){			var topDiv = document.createElement('DIV');						if(this.tooltipPosition=='below'){								topDiv.style.marginLeft = '20px';				var arrowDiv = document.createElement('IMG');				arrowDiv.src = this.imagePath + this.arrowImageFile + '?rand='+ Math.random();				arrowDiv.style.display='block';				topDiv.appendChild(arrowDiv);								}else{				topDiv.style.marginTop = '5px';				var arrowDiv = document.createElement('IMG');				arrowDiv.src = this.imagePath + this.arrowImageFileRight + '?rand='+ Math.random();					arrowDiv.style.display='block';				topDiv.appendChild(arrowDiv);									topDiv.style.position = 'absolute';						}						this.tooltipDiv.appendChild(topDiv);			}				var outerDiv = document.createElement('DIV');		outerDiv.style.position = 'relative';		outerDiv.style.zIndex = 1000;		if(this.tooltipPosition!='below' && this.displayArrow){						outerDiv.style.left = this.arrowRightWidth + 'px';		}						outerDiv.id = 'DHTMLgoodies_formTooltipDiv';		outerDiv.className = 'DHTMLgoodies_formTooltipDiv';		outerDiv.style.backgroundColor = this.tooltipBgColor;		this.tooltipDiv.appendChild(outerDiv);		if(this.isMSIE){			this.tooltipIframeObj = document.createElement('<IFRAME name="tooltipIframeObj" width="' + this.tooltipWidth + '" frameborder="no" src="about:blank"></IFRAME>');			this.tooltipIframeObj.style.position = 'absolute';			this.tooltipIframeObj.style.top = '0px';			this.tooltipIframeObj.style.left = '0px';			this.tooltipIframeObj.style.width = (this.tooltipWidth) + 'px';			this.tooltipIframeObj.style.zIndex = 100;			this.tooltipIframeObj.background = this.pageBgColor;			this.tooltipIframeObj.style.backgroundColor= this.pageBgColor;			this.tooltipDiv.appendChild(this.tooltipIframeObj);				if(this.tooltipPosition!='below' && this.displayArrow){				this.tooltipIframeObj.style.left = (this.arrowRightWidth) +  'px';				}else{				this.tooltipIframeObj.style.top = this.arrowTopHeight + 'px';				}			setTimeout("self.frames['tooltipIframeObj'].document.documentElement.style.backgroundColor='" + this.pageBgColor + "'",500);		}				this.tooltipContentDiv = document.createElement('DIV');			this.tooltipContentDiv.style.position = 'relative';			this.tooltipContentDiv.id = 'DHTMLgoodies_formTooltipContent';		outerDiv.appendChild(this.tooltipContentDiv);							var closeDiv = document.createElement('DIV');		closeDiv.style.textAlign = 'center';			closeDiv.innerHTML = '<A class="DHTMLgoodies_formTooltip_closeMessage" href="#" onclick="DHTMLgoodies_globalTooltipObj.__hideTooltipFromLink();return false">' + this.closeMessage + '</A>';				if(this.disableTooltipPossibility){			var tmpHTML = closeDiv.innerHTML;			tmpHTML = tmpHTML + ' | <A class="DHTMLgoodies_formTooltip_closeMessage" href="#" onclick="DHTMLgoodies_globalTooltipObj.disableTooltip();return false">' + this.disableTooltipMessage + '</A>';			closeDiv.innerHTML = tmpHTML;		} 				outerDiv.appendChild(closeDiv);				document.body.appendChild(this.tooltipDiv);										if(this.tooltipCornerSize>0){			this.roundedCornerObj = new DHTMLgoodies_roundedCorners();			// (divId,xRadius,yRadius,color,backgroundColor,padding,heightOfContent,whichCorners)			this.roundedCornerObj.addTarget('DHTMLgoodies_formTooltipDiv',this.tooltipCornerSize,this.tooltipCornerSize,this.tooltipBgColor,this.pageBgColor,5);			this.roundedCornerObj.init();		}				this.tooltipContentDiv = document.getElementById('DHTMLgoodies_formTooltipContent');	}	// }}}	,	addEvent : function(whichObject,eventType,functionName)	{ 	  if(whichObject.attachEvent){ 	    whichObject['e'+eventType+functionName] = functionName; 	    whichObject[eventType+functionName] = function(){whichObject['e'+eventType+functionName]( window.event );} 	    whichObject.attachEvent( 'on'+eventType, whichObject[eventType+functionName] ); 	  } else 	    whichObject.addEventListener(eventType,functionName,false); 	    	} 		// }}}	,	__positionCurrentToolTipObj : function()	{		if(DHTMLgoodies_globalTooltipObj.activeInput)this.__positionTooltip(DHTMLgoodies_globalTooltipObj.activeInput);			}	// }}}	,			// {{{ __positionTooltip()    /**     *	 *     *  This function positions the tooltip     *     * @param Obj inputObj = Reference to text input     *      * @private     */		__positionTooltip : function(inputObj)	{			var offset = 0;		if(!this.displayArrow)offset = 3;			if(this.tooltipPosition=='below'){			this.tooltipDiv.style.left = this.getLeftPos(inputObj)+  'px';			this.tooltipDiv.style.top = (this.getTopPos(inputObj) + inputObj.offsetHeight + offset) + 'px';		}else{					this.tooltipDiv.style.left = (this.getLeftPos(inputObj) + inputObj.offsetWidth + offset)+  'px';			this.tooltipDiv.style.top = this.getTopPos(inputObj) + 'px';					}		this.tooltipDiv.style.width=this.tooltipWidth + 'px';			}	,	// {{{ getTopPos()    /**     * This method will return the top coordinate(pixel) of an object     *     * @param Object inputObj = Reference to HTML element     * @public     */		getTopPos : function(inputObj)	{			  var returnValue = inputObj.offsetTop;	  while((inputObj = inputObj.offsetParent) != null){	  	if(inputObj.tagName!='HTML'){	  		returnValue += inputObj.offsetTop;	  		if(document.all)returnValue+=inputObj.clientTop;	  	}	  } 	  return returnValue;	}	// }}}		,	// {{{ getLeftPos()    /**     * This method will return the left coordinate(pixel) of an object     *     * @param Object inputObj = Reference to HTML element     * @public     */		getLeftPos : function(inputObj)	{	  	  var returnValue = inputObj.offsetLeft;	  while((inputObj = inputObj.offsetParent) != null){	  	if(inputObj.tagName!='HTML'){	  		returnValue += inputObj.offsetLeft;	  		if(document.all)returnValue+=inputObj.clientLeft;	  	}	  }	  return returnValue;	}		,		// {{{ getCookie()    /**     *     * 	These cookie functions are downloaded from 	 * 	http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm	 *     *  This function returns the value of a cookie     *     * @param String name = Name of cookie     * @param Object inputObj = Reference to HTML element     * @public     */		getCookie : function(name) { 	   var start = document.cookie.indexOf(name+"="); 	   var len = start+name.length+1; 	   if ((!start) && (name != document.cookie.substring(0,name.length))) return null; 	   if (start == -1) return null; 	   var end = document.cookie.indexOf(";",len); 	   if (end == -1) end = document.cookie.length; 	   return unescape(document.cookie.substring(len,end)); 	} 		// }}}	,			// {{{ setCookie()    /**     *     * 	These cookie functions are downloaded from 	 * 	http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm	 *     *  This function creates a cookie. (This method has been slighhtly modified)     *     * @param String name = Name of cookie     * @param String value = Value of cookie     * @param Int expires = Timestamp - days     * @param String path = Path for cookie (Usually left empty)     * @param String domain = Cookie domain     * @param Boolean secure = Secure cookie(SSL)     *      * @public     */		setCookie : function(name,value,expires,path,domain,secure) { 		expires = expires * 60*60*24*1000;		var today = new Date();		var expires_date = new Date( today.getTime() + (expires) );	    var cookieString = name + "=" +escape(value) + 	       ( (expires) ? ";expires=" + expires_date.toGMTString() : "") + 	       ( (path) ? ";path=" + path : "") + 	       ( (domain) ? ";domain=" + domain : "") + 	       ( (secure) ? ";secure" : ""); 	    document.cookie = cookieString; 	}	// }}}				}