/*
 * @Author     : PFA
 * @Date       : 2008-06-04
 * @Description: fonctions relatives à l'affichage d'infos bulles sur les class css de type qes_binfo
 * @Constraints: la structure html doit etre defini comme suit : a>span.qes_binfo ou bien span.qes_binfo>a
 *               avec 'a' le lien vers la page QESHelpBase ou QESHelpChamp défini.
 * @Utilisation: il suffit d'inserer le javascript et d'appeler la fonction tooltip_binfo sur l'evenement
 *               onload de l'element body.
 */
function tooltip_binfo(event_doc) {
      // ajout du div conteneur des tooltips
      $$('body')[0].insert({top:'<div id="info_bulles" style="display: none;"><h1>&nbsp;</h1><div class="txt">toto&nbsp;</div><div class="bas">&nbsp;<div></div>'});
      var patt = /<body\s*[^>]*>([\S\s]*?)<\/body>/gi;
   
      $$('span.qes_binfo').each(function(span)
        {
          var a = span.down('a', 0);
          if (undefined == a) {
            a = span.up('a', 0);
            if (undefined == a) {
              return;
            }
          }
          a.onclick = function(){return false}; // ecraser le window.open sur le onclick defini inline

          a.observe("click", function(event_a) {
            var info_bulles = $('info_bulles');
            var element_clique = Event.findElement(event_a, 'a');
            var ele_decl = Event.element(event_a);

            new Ajax.Request(element_clique.href, {
              encoding:'ISO-8859-1',
              method:'get',
              onComplete: function(transport) {
                patt.compile( /<body\s*[^>]*>([\S\s]*?)<\/body>/gi );
                var response = patt.exec(transport.responseText);

                info_bulles.down('div.txt').update(response[1]);
                var tmpPage = info_bulles.down('div#qes_parent');
                if (Object.isUndefined(tmpPage))
                  tmpPage = info_bulles.down('div.txt');

                tmpPage.select('div#qes_commander_boutons').invoke('remove');
                tmpPage.select('div.qes_boutons').invoke('remove');
                if (tmpPage.select('table[width=1000]')[0]) 
                  tmpPage.select('table[width=1000]')[0].style.width = 'auto';
                if (tmpPage.select('table#qes_iscentre')[0]) 
                  tmpPage.select('table#qes_iscentre')[0].style.width = 'auto';

                try {
                   info_bulles.down('h1').update(tmpPage.down('div.qes_titre').remove().innerHTML);
                } catch(e) { }
                try {
                   info_bulles.down('h1').update(tmpPage.down('div#qes_helpbase_titre.qes_titre').remove().select('a')[0].innerHTML);
                } catch(e) { }
                try {
                   info_bulles.down('div.txt').update(tmpPage.innerHTML);
                } catch(e) { }

                try {
                   // supprime l espace du haut.
                   info_bulles.down('div.txt').down().style.marginTop = '0pt';
                   var last = info_bulles.down('div.txt').childElements()[info_bulles.down('div.txt').childElements().size()-1];
                   if (last.empty())
                   {
                     // supprime l espace du bas.
                     last.setStyle( {margin: '0pt', width: '10px', height: '1em' });
                   }
                } catch (e) { }

                Element.clonePosition(info_bulles, ele_decl, {setWidth:false,setHeight:false,offsetLeft:ele_decl.getWidth(),offsetTop:ele_decl.getHeight()});
                /* PFA 07/07/2008 100048 */
                Effect.Appear(info_bulles, {duration: 0.2, from:0.0, to:1.0, afterFinish: function() {
                  if (/MSIE (5.5|6.)/.test(navigator.userAgent)) {
                      var shape = new Array({'width':info_bulles.getDimensions().width, 'height':info_bulles.getDimensions().height, 'top':info_bulles.cumulativeOffset().top, 'left':info_bulles.cumulativeOffset().left });

                      $$('SELECT').each(function (select) {
                        var myEleDim = new Array({'width':select.getDimensions().width, 'height':select.getDimensions().height, 'top':select.cumulativeOffset().top, 'left':select.cumulativeOffset().left });

                        if ( select.visible() && (
                               (myEleDim[0].top > shape[0].top && myEleDim[0].top < shape[0].top + shape[0].height) ||
                               (myEleDim[0].left > shape[0].left && myEleDim[0].left < shape[0].left + shape[0].width) || 
                               (myEleDim[0].top+myEleDim[0].height > shape[0].top && myEleDim[0].top+myEleDim[0].height < shape[0].top+shape[0].height) ||
                               (myEleDim[0].left+myEleDim[0].width > shape[0].left && myEleDim[0].left+myEleDim[0].width < shape[0].left+shape[0].width) 
                             )
                           )   
                        {
                          select.addClassName('tmpHideSelectForToolTip');
                          select.setStyle({visibility: 'hidden'});
                        }
                      } );
                  }

                } });
              }

                } );


            Event.stop(event_a);
            return false;
          });

          a.observe("mouseout", function(event_a) {
            var info_bulles = $('info_bulles');
            Effect.Fade(info_bulles, {duration: 0.2, afterFinish: function() {

              if (/MSIE (5.5|6.)/.test(navigator.userAgent)) {
                $$('SELECT').each(function(select) {
                  if (select.hasClassName('tmpHideSelectForToolTip')) {
                    select.removeClassName('tmpHideSelectForToolTip');
                    select.setStyle({visibility: 'visible'});
                  }
                });
              }
            }});
          });
        }
      );
}

