  
  //classe d effet scroll (fait a la maniere des effets scriptaculous)
    Effect.Scroll = Class.create();
    Object.extend(Object.extend(Effect.Scroll.prototype, Effect.Base.prototype), {
      initialize: function(element) {
        this.element = $(element);
        var options = Object.extend({
          x:    0,
          y:    0,
          mode: 'absolute'
        } , arguments[1] || {}  );
        this.start(options);
      },
      setup: function() {
        if (this.options.continuous && !this.element._ext ) {
          this.element.cleanWhitespace();
          this.element._ext=true;
          this.element.appendChild(this.element.firstChild);
        }
    
        this.originalLeft=this.element.scrollLeft;
        this.originalTop=this.element.scrollTop;
    
        if(this.options.mode == 'absolute') {
          this.options.x -= this.originalLeft;
          this.options.y -= this.originalTop;
        } else {
    
        }
      },
      update: function(position) {   
        this.element.scrollLeft = this.options.x * position + this.originalLeft;
        this.element.scrollTop  = this.options.y * position + this.originalTop;
      }
    });
  
  
  /***************************************************************************
   *   Initialisation des �venements
   ***************************************************************************/
        //infobulle initialisation 
         document.onmousemove = search_move; // des que la souris bouge, on appelle la fonction move pour mettre � jour la position de la bulle.                                                                      
      //fonction pour montrer ou cacher la liste marque
  $('search_head_1ID').onclick= function(){
          if(!$('search_list_1_ID').visible())
          { //si la liste n'est pas visible
            search_over_enter_marque = true;
            $('search_list_1_ID').show(); 
            $('search_head_2ID').setStyle('display:none');
            if($('search_list_2_ID').visible())//on cache la liste des mod�les
              $('search_list_2_ID').hide()
          }
          else
          {
            search_over_enter_marque = false;
            $('search_list_1_ID').hide();
            $('search_head_2ID').setStyle('display :block');
          }
  }
    //fonction pour montrer ou cacher la liste mod�les
  $('search_head_2ID').onmousedown= function(){
          search_periodical_enabled = true;
          if(!$('search_list_2_ID').visible())
          {                               
            search_over_enter_modeles = true;
            search_periodical_enabled = true;
            $$('#search_list_2_ID li').each(function(e){e.setStyle('background: #ffffff ;')});
            if(!!search_modele_old_border)
            $('search_modele_li_id'+search_modele_old_border).setStyle('background:url(/img/graph/search_row_background.jpg)');
            $('search_list_2_ID').show();
             if(!!$('search_modele_li_id'+search_modele_old_border))    
                moveTo($('search_list_2_ID'), $$('#search_modele_li_id'+search_modele_old_border+' td')[0],0.1);    
          }
          else
          {
            search_over_enter_modeles = false;
            search_periodical_enabled = false;
            $('search_list_2_ID').hide();
          }
  }
    //fonction lorsque le sort de la liste des mod�les sans l'avoir referm� (principalement on arr�te le scroll auto)
  $('search_list_2_ID').onmouseout = function()
  {
    search_periodical_enabled=false;
    if(!!$('bloc_liste_modeleID'))//si la liste des mod�les de gauche est disponible
    {
      if(search_modele_current)
        $('td_modele_'+search_modele_current+'ID').setStyle('border:1px solid #E7E7E7;');
      if(search_modele_old_border)
        $('td_modele_'+search_modele_old_border+'ID').setStyle('border:1px solid #e37218;');
    }
  }
    //fonction lorsque l on revient sur la liste des mod�les (liste d�j� ouverte) (on remet en route le scroll auto)
  $('search_list_2_ID').onmouseover = function()
  {
    search_periodical_enabled=true;
  }
  
  //initialisation de l ecoute du click n 'importe ou sur la page pour la fermeture des listes
  document.observe('click',search_close_list);
  function search_close_list(event)
  {
               
                  var elt = Event.element(event);//on recup�re l'element sur lequel on vient de cliquer
                    //on enl�ve l'evenement sur certaines elements
                  if(elt.tagName != 'A' && !elt.hasClassName('search_combo_col1') && elt.id != 'search_but_1_ID' && elt.id != 'search_but_2_ID' && elt.id != 'search_head_1ID' && elt.id!= 'search_head_modele_lib' && elt.id != 'search_list_1_ID' && elt.id != 'search_list_2_ID')
                  {  
                       //alert(Event.element(event).id);
                      search_periodical_enabled = false;          //arret du scroll automatique
                      $('search_list_1_ID').hide();               //cache liste marques
                      $('search_list_2_ID').hide();               //cache liste mod�les
                      $('search_head_2ID').style.display = 'block';
                      if(search_modele_current!="" )
                      {
                        if(!!$('bloc_liste_modeleID'))
                          $('td_modele_'+search_modele_current+'ID').setStyle('border:1px solid #E7E7E7;');
                       }
                       if( search_modele_old_border!="")
                       { 
                        if(!!$('bloc_liste_modeleID'))
                          $('td_modele_'+search_modele_old_border+'ID').setStyle('border:1px solid #e37218;'); 
                        if(!!$('bloc_liste_modeleID') && elt.id != 'bloc_liste_modeleID')
                              //on revient sur le mod�le s�lectionn� dans la liste de gauche
                          moveTo.delay(1,$('bloc_liste_modeleID'), $('td_modele_'+search_modele_old_border+'ID'));
                      }
                  }
  };
 
    //on initialise la gestion du mod�le obj_trad.et on bouge sur le courant si la liste est pr�sente
  if(search_modele_old_border!="" && !!$('bloc_liste_modeleID'))
  { 
    search_modele_current=search_modele_old_border;
    search_modele_current_old = search_modele_old_border;
    moveTo($('bloc_liste_modeleID'), $('td_modele_'+search_modele_current+'ID'));
  }
   /***************************************************************************
   *   moteur de scroll automatique 
   ***************************************************************************/     
   //bugg affichage obj_trad.et fermeture de la liste compl�te avec les mod�les
    //utilisation d un set interval qui r�gulierement va voir la variable d �tat si encore au dessus ou pas  
  
  new PeriodicalExecuter(function(pe) {
                                        if(search_periodical_enabled == true)
                                        {
                                            if(!!$('bloc_liste_modeleID'))
                                            affiche_modele_gauche();
                                        }
                                       // alert('ok'); 
                                        if(!$('search_list_2_ID').visible())
                                          search_periodical_enabled = false;
                                       
//tests                                       
  /*$('temp').innerHTML = 'search_periodical_enabled='+search_periodical_enabled+'<br />';
    $('temp').innerHTML += 'search_modele_current='+search_modele_current+'<br />';*/                                       
                                        
                                      }, 0.5);

  /***************************************************************************
   *   Affichage obj_trad.et Gestion 
   ***************************************************************************/     
        //fonction pour afficher dans la liste de gauche la s�lection au survol sur les �l�ments de la liste des mod�les � droite
  function affiche_modele_gauche()
  {
        //on remet l'ancien avec un border blanc
    if(search_modele_current_old!="")
      $('td_modele_'+search_modele_current_old+'ID').setStyle('border:1px solid #E7E7E7');
        //on m�morise le nouveau
       
   if(search_modele_current!="")
   {
      search_modele_current_old = search_modele_current;
        //on lui met le border vert
    $('td_modele_'+search_modele_current+'ID').setStyle('border:1px solid #e37218;'); 
        //on bouge la liste sur le mod�le
      moveTo($('bloc_liste_modeleID'), $('td_modele_'+search_modele_current+'ID'));
    } 
  }
  
      //fonction qui associe les actions lors d un clique sur un mod�le
   function search_select_modele(id_modele,modele_lib,elt_li)
   {    
       if(!!$('td_modele_'+search_modele_current_old+'ID'))
          $$('.td_modele_search').each(function(e){e.setStyle('border:1px solid #E7E7E7')});//on effacec tous les bords verts
        search_modele_current_old =id_modele ;//on reinitialise les valeurs par defaut  par le mod�le selectionn� 
        search_modele_old_border =id_modele ;//idem 
        search_modele_current =id_modele ;//idem
        if($('td_modele_'+search_modele_current+'ID'))
          $('td_modele_'+search_modele_current+'ID').setStyle('border:1px solid #E7E7E7');                              
        search_periodical_enabled = false;///on arrete le periodcal
       $('search_head_modele_lib').innerHTML = modele_lib; //on r�cup�re le libell� du mod�le
       $('rech_modeleID').value = id_modele;//on memorise l id du modele pour obj_trad.validation
        $('search_list_2_ID').hide();//on cache la liste
       $('rech_modeleID').setAttribute('nom_rewrite',elt_li.getAttribute('nom_rewrite'));//on memorise l'url
       if(!!$('bloc_liste_modeleID'))
        moveTo($('bloc_liste_modeleID'), $('td_modele_'+search_modele_current+'ID'));//si la liste des mod�le sde gauche existe on scroll sur le mod�le s�lectionn�    
   }
   
/*****************************************************************************
 *  API Scroll dans un container
 *    Requiert Prototype 
 **/
 //fonction ici adapt�e pour marcher en correl�ation ave la liste des mod�les, une variable est
 //mise pour empecher de lancer 2fois la fonction en mem temps
 //adaptation �galement la varaible duration_ qui permet de faire scroller 
 //dans la liste des mod�les sans d�lai 
    function moveTo(container, element,duration_){
        if(!search_moveTo) 
        {       //cas de la liste des mod�les de gauche
            search_moveTo = true;
            Position.prepare();
            container_y = Position.cumulativeOffset($(container))[1];
            element_y = Position.cumulativeOffset($(element))[1];
           // if(!(!!(duration_)))
              new Effect.Scroll(container, {x:0,duration:0.2, y:(element_y-container_y),afterFinish:function(){search_moveTo=false;}});
           
            return false;
         }
       
         if(/*duration_==0.1 &&*/ container.id != 'bloc_liste_modeleID')
         {      //cas du scroll dans la liste des mod�les
         
        
            Position.prepare();
            container_y = Position.cumulativeOffset($(container))[1];
            element_y = Position.cumulativeOffset($(element))[1];
            new Effect.Scroll(container, {x:0,duration : 0, y:(element_y-container_y),afterFinish:function(){search_moveTo=false;}});
            return false;
         }
    }   
    
    
  /**
   * Fin API Scroll
   *****************************************************************************/     
   
     /*******************************************************************
       *  partie infobulle
       *******************************************************************/
      
      var search_infobulle_visible = false; // Permet de savoir si visible ou non => corerection bug on mouse out obj_trad.et on mouse over
      var search_infobulle_left = 0;
      function search_move(e) {
            if( search_infobulle_visible) 
            {  // Si la bulle est visible, on calcul en temps reel sa position ideale
                if (navigator.appName!="Microsoft Internet Explorer") 
                { // Si on est pas sous IE
                  if(!!e)
                    {
                      //$("search_info_bulle").style.left=search_infobulle_left+e.pageX + 70+"px";
                      $("search_info_bulle").style.left=2+"px";
                      $("search_info_bulle").style.top=e.pageY -500+"px";
                      //$("search_info_bulle_iframe").style.left=search_infobulle_left+e.pageX + 70+"px";
                      $("search_info_bulle_iframe").style.left=2+"px";
                      $("search_info_bulle_iframe").style.top=e.pageY -500+"px";
                    }
                }
                else 
                { // cas ie
                  if(document.documentElement.clientWidth>0) 
                  {
                    $("search_info_bulle").style.position = 'absolute';
                        //$("search_info_bulle").style.left=search_infobulle_left+200+event.x+document.documentElement.scrollLeft+"px";
                        $("search_info_bulle").style.left=2+"px";
                        $("search_info_bulle").style.top=-200+event.y+document.documentElement.scrollTop+"px";
                        //$("search_info_bulle_iframe").style.left=search_infobulle_left+200+event.x+document.documentElement.scrollLeft+"px";
                        $("search_info_bulle_iframe").style.left=2+"px";
                        $("search_info_bulle_iframe").style.top=-200+event.y+document.documentElement.scrollTop+"px";
                  } else 
                  {        //cas autre
                      //$("search_info_bulle").style.left=search_infobulle_left+80+event.x+document.body.scrollLeft+"px";
                      $("search_info_bulle").style.left=2+"px";
                      $("search_info_bulle").style.top=-200+event.y+document.body.scrollTop+"px";
                      //$("search_info_bulle_iframe").style.left=search_infobulle_left+80+event.x+document.body.scrollLeft+"px";
                      $("search_info_bulle_iframe").style.left=2+"px";
                      $("search_info_bulle_iframe").style.top=-200+event.y+document.body.scrollTop+"px";
                  }
                }
              }
      }
      
      var timer_infobulle;//timer pour cacher l infobulle au bout 5 de sec
      function search_montre(left,hauteur,largeur,text,e) {
        //partie pertmettant le d�calage vers la gauche (surtout dans le cas de la liste de droite)
          search_infobulle_left = left;
          if(search_infobulle_visible==false) {
            $("search_info_bulle").style.display="block";
            $("search_info_bulle_iframe").style.display="block";
            $("infoBulle_bloc_conteneurID").innerHTML='<img id="search_inf_bulle_img" src="'+text+'" alt="'+obj_trad.infobulle_GSM+'"  >';
       
            //$("search_inf_bulle_img").src = text; //
            $("search_inf_bulle_img").width=largeur;
            $("search_inf_bulle_img").height=hauteur;
            search_infobulle_visible=true; 
            search_move(e);
          }
     
      }
      function search_cache() {
          if (search_infobulle_visible == true) {
              $("search_info_bulle").style.display="none";
              $("search_info_bulle_iframe").style.display="none";
              search_infobulle_visible = false;
          }
      }
