Source de js/tooltips_utils.js

ini=0
ttB=0
ttC=0
yM=10
xM=10
bW=200
ttD=500
ttH=5000
ttT1=0
ttT2=0
oldO=0
dfT="Retour à l'accueil"
ttCookie=''
function addEv(obj,ev,fn)
{
 if(obj.addEventListener) {
  obj.addEventListener(ev, fn, false)
 } else if(obj.attachEvent) {
  obj.attachEvent('on'+ev, fn);
 } else {
  obj['on'+ev]=fn
 }
}
function initElement(obj)
{
 if(obj['title']) {
  obj.mytitle=obj.title
  obj.title=''
  addEv(obj,'mouseover',showTT)
  addEv(obj,'mouseout',hideTT)
  addEv(obj,'focus',showTT)
  addEv(obj,'blur',hideTT)
 }
}
function showTT(e)
{
 if((typeof ini == 'undefined')||(!ini)) return true
 obj=window.event ? window.event.srcElement : e.currentTarget;
 if(obj==oldO) return true
 if(obj.mytitle) ttB.innerHTML=obj.mytitle
 else {
  if(obj.parentNode.mytitle) ttB.innerHTML=obj.parentNode.mytitle
  else ttB.innerHTML=dfT
  obj.title=''
 }
 if(isFixed(obj)) ttC.style.position='fixed'
 else ttC.style.position='absolute'
 ttB.style.visibility='hidden'
 ttB.style.display='block'
 xB=getLeftOffset(document.body)
 yB=getTopOffset(document.body)
 xOff=getLeftOffset(obj)+xM-xB
 ttB.className='tt-left'
 yOff=getTopOffset(obj)+getOH(obj)+yM-yB
 if((xOff+ttC.offsetWidth+4*xM)>getClientWidth()) {
  xOff=getClientWidth()-ttB.offsetWidth-4*xM-xB+ttB.offsetWidth-bW
  ttB.className='tt-right'
 }
 if((yOff+ttC.offsetHeight+yM)>getClientHeight()+getScrollOffset()) yOff=getTopOffset(obj)-ttB.offsetHeight-yM-yB
 ttC.style.left=xOff+"px"
 ttC.style.top=yOff+"px"
 ttB.style.display='none'
 ttB.style.visibility='visible'
 if(ttT1) {
  clearTimeout(ttT1)
  ttT1=0
 }
 if(ttT2) {
  clearTimeout(ttT2)
  ttT2=0
 }
 ttT1=setTimeout(function() {ttB.style.display='block';},ttD)
 ttT2=setTimeout('hideTT()',ttH)
 oldO=obj
 return true
}
function hideTT()
{
 if((typeof ini == 'undefined')||(!ini)) return true
 oldO=0
 if(ttT1) {
  clearTimeout(ttT1)
  ttT1=0
 }
 if(ttT2) {
  clearTimeout(ttT2)
  ttT2=0
 }
 ttB.innerHTML=''
 ttB.style.display='none'
 return true
}
function initTTTags(t)
{
 nbL=document.body.getElementsByTagName(t)
 for(i=0;i<nbL.length;i++) {
  initElement(nbL[i])
 }
}
function initTTC()
{
 ttCookie=getCookie('tooltips')
 if(ttCookie&&(ttCookie!='')) {
  if(ttCookie=='false') return
  else {
   values=ttCookie.split('|')
   ttD=values[0]
   ttH=values[1]
  }
 }
}
function initTT()
{
 if(!hasDOM) return
 initTTC()
 if(ttCookie=='false') return
 ttC=document.body.appendChild(document.createElement('div'))
 ttC.id='tt-cont'
 ttC.style.width=bW+"px"
 ttC.style.position='absolute'
 ttB=ttC.appendChild(document.createElement('div'))
 ttB.id='tt-box'
 if(ttB.style.MozBorderRadius=='') {
  ttB.style.padding="0.5em"
  ttB.style.borderWidth="2px"
  ttB.style.MozOpacity="0.9"
  ttB.style.MozBorderRadius="15px"
 }
 initTTTags('a')
 initTTTags('input')
 initTTTags('label')
 initTTTags('select')
 initTTTags('acronym')
 initTTTags('area')
 initTTTags('img')
 initTTTags('em')
 ini=1
}
function saveTT()
{
 if(getE('tt-act').checked) {
  setCookie('tooltips',getE('tt-show').value+'|'+getE('tt-hide').value,'false')
 } else {
  setCookie('tooltips','false')
 }
 document.location.hash='#tooltips'
 document.location.reload()
 return false
}
function setActiveTT()
{
 if(getE('tt-act').checked) {
  getE("tt-show").disabled=null
  getE("tt-show").className=null
  getE("tt-sl").className=null
  getE("tt-hide").disabled=null
  getE("tt-hide").className=null
  getE("tt-hl").className=null
 } else {
  getE("tt-show").disabled="disabled"
  getE("tt-show").className="disabled"
  getE("tt-sl").className="disabled"
  getE("tt-hide").disabled="disabled"
  getE("tt-hide").className="disabled"
  getE("tt-hl").className="disabled"
 }
 return true
}
function writeTTForm()
{
 if(!hasDOM) return
 initTTC()
 prn('<form id="tt-iform" action="" onsubmit="return saveTT()">')
 prn('<fieldset><legend>Info-bulles<br /></legend>')
 prn(' <div>')
 prn(' <input type="checkbox" id="tt-act" title="Cocher cette case pour avoir les info-bulles gérées par ce site"'+((ttCookie!='false')?' checked="checked"':'')+' onclick="return setActiveTT();"><label for="tt-act" title="Cocher cette case pour avoir les info-bulles gérées par ce site">Activer les info-bulles personnalisées</label><br />')
 prn(' </div>')
 prn(' <div class="tt-delay">')
 prn('  <label id="tt-sl" for="tt-show">Délai avant de montrer l\'info-bulle (en <acronym title="milli-secondes">ms</acronym>)</label><input type="text" id="tt-show" size="5" value="'+ttD+'" title="Le temps en milli-secondes avant que l\'info-bulle n\'apparaisse"><br />')
 prn(' </div>')
 prn(' <div class="tt-delay">')
 prn('  <label id="tt-hl" for="tt-hide">Délai avant de cacher l\'info-bulle (en ms)</label><input type="text" id="tt-hide" size="5" value="'+ttH+'" title="Le temps en milli-secondes avant que l\'info-bulle ne disparaisse"><br />')
 prn(' </div>')
 prn(' <div><input id="tt-submit" type="submit" class="submit-button" value="Sauvegarder" title="Enregistrer les modifications"></div>')
 prn('</fieldset>')
 prn('</form>')
 setActiveTT()
}