
/************************************************************************************
**								FONCTIONS GENERALES									                              *
************************************************************************************/

Event.observe(window, 'load',
              function() {
                new General();
              });

var myLightbox = null;

/************************************************************************************
**							EFFET MENU ACCORDEON									                              *
************************************************************************************/

var Accordeon = Class.create({

  /**
  * Constructeur
  */
  initialize: function(idOpen) {

    var stretchers  = $$('.accordion');
  	var toggles     = $$('.toggler');
    var bgFx        = [];

    var myAccordion = new Fx.Accordion(
                        toggles,
                        stretchers,
                        {
                          opacity: true, 
                          duration: 400,
                          onActive: function(toggler) {
                                      toggler.className = 'toggler opened';
                                    },
                          onBackground: function(toggler) {
                                          toggler.className = 'toggler closed';
                                        }
                        }
    );

  	myAccordion.showThisHideOpen(idOpen);
  }
});

var General = Class.create({

  /**
  * Constructeur
  */
  initialize: function() {

	myLightbox = new Lightbox();

    var texteRecherche = 'Entrez vos mots-clés ou une référence';
	
    Event.observe('recherche-mots-cles', 'focus',
                  function() {
                    if (this.value == texteRecherche)
                      this.value = '';
                  });

    Event.observe('recherche-mots-cles', 'blur',
                  function() {
                    if (this.value == '')
                      this.value = texteRecherche;
                  });

    if ($$('h3.toggler')) {
      // Accordeon de gauche
      $$('h3.toggler').each(
        function(toggler) {

          // On selectionne le span
          var span = toggler.select('span')[0];

          Event.observe(toggler, 'mouseover',
                        function() {
                          span.removeClassName('inactive');
                          span.addClassName('over');
                        });

          Event.observe(toggler, 'mouseout',
                        function() {
                          span.removeClassName('over');
                          span.addClassName('inactive');
                        });
        }
      );

      new Accordeon($('id_ouvert').value);
    }
	
    if ($('connexion')) {
      // Formulaire de connexion à droite
      Event.observe('email', 'focus',
                    function() {
                      $('email').value = '';
                    });

      Event.observe('motDePasse', 'focus',
                    function() {
                      $('motDePasse').value = '';
                    });
    }
  }
  
});

/**
 * Methodes de classe
 */
Object.extend(General, {
  /**
  * Modifie la source de l'image dont l'id est passe en parametre par l'image passe est parametre
  * Change aussi le lien pour l'effet lightbox
  */
  changerSourceImageEtLightbox: function(idImage, source, source_zoom) {
    // On change la source de l'image
    this.changerSourceImage(idImage, source);

    // Puis le lien
    $($(idImage).parentNode).href	= source_zoom;
    $('loupe-vignette').href		  = source_zoom;	// image 'loupe' a cote de la vignette dont on change aussi le source
  },

  /**
  * Modifie la source de l'image dont l'id est passe en parametre par l'image passee en parametre
  */
  changerSourceImage: function(idImage, source){
    $(idImage).src = source;
  },

  /**
  * Change le style CSS de tous les elements d'une classe
  * Parametres :
  * 	- nom de la classe des elements a changer
  * 	- un hash contenant les cles / valeurs
  */
  changerStyleClasse: function(classe, options) {
    // On recupere la collection d'elements
    var elements	= $$('.' + classe);

    elements.each(
      // Pour chaque element
      function(element) {
        // On lui applique les options
        element.setStyle(options);
      }
    );
  },
  
  /**
  * Ajoute un element dans une liste select
  * Parametres :
  * 	idSelect		: identifiant du select auquel on souhaite ajouter l'element
  * 	idElement		: attribut id de l'element a ajouter
  * 	texteElement	: texte qui sera affiche dans la liste déroulante pour l'element a ajouter
  * 	valueElement	: attribut value de l'element a ajouter
  */
  ajouterElementSelect: function(idSelect, idElement, texteElement, valueElement) {
    // On cree l'option
    var element	= new Element("option", {"value": valueElement, "id": idElement}).update(texteElement);

    // Et on l'ajoute a l'element select
    $(idSelect).add(element, (!document.all) ? $(idSelect).options[1] : 1);
  }
});

