--- /dev/null
+
+// Un petit plugin jQuery pour ajouter une classe au survol d'un element
+$.fn.hoverClass = function(c) {
+ return this.each(function(){
+ $(this).hover(
+ function() { $(this).addClass(c); },
+ function() { $(this).removeClass(c); }
+ );
+ });
+};
+
+
+var accepter_change_statut = false;
+/**
+ * Utilisee dans inc/puce_statut pour les puces au survol
+ * @param int id
+ * @param strong type
+ * @param int decal
+ * @param string puce
+ * @param string script
+ */
+function selec_statut(id, type, decal, puce, script) {
+
+ node = $('.imgstatut'+type+id);
+
+ if (!accepter_change_statut)
+ accepter_change_statut = confirm(confirm_changer_statut);
+
+ if (!accepter_change_statut || !node.length) return;
+
+ $('.statutdecal'+type+id)
+ .css('margin-left', decal+'px')
+ .removeClass('on');
+
+ $.get(script, function(c) {
+ if (!c)
+ node.attr('src',puce);
+ else {
+ r = window.open();
+ r.document.write(c);
+ r.document.close();
+ }
+ });
+}
+
+/**
+ * Utilisee dans inc/puce_statut pour les puces au survol
+ * @param objet node
+ * @param string nom
+ * @param string type
+ * @param int id
+ * @param string action
+ */
+function prepare_selec_statut(node, nom, type, id, action)
+{
+ $(node)
+ .hoverClass('on')
+ .addClass('on')
+ .load(action + '&type='+type+'&id='+id);
+}
+
+
+// deplier un ou plusieurs blocs
+jQuery.fn.showother = function(cible) {
+ var me = this;
+ if (me.is('.replie')) {
+ me.addClass('deplie').removeClass('replie');
+ jQuery(cible)
+ .slideDown('fast',
+ function(){
+ jQuery(me)
+ .addClass('blocdeplie')
+ .removeClass('blocreplie')
+ .removeClass('togglewait');
+ }
+ ).trigger('deplie');
+ }
+ return this;
+}
+
+// replier un ou plusieurs blocs
+jQuery.fn.hideother = function(cible) {
+ var me = this;
+ if (!me.is('.replie')){
+ me.addClass('replie').removeClass('deplie');
+ jQuery(cible)
+ .slideUp('fast',
+ function(){
+ jQuery(me)
+ .addClass('blocreplie')
+ .removeClass('blocdeplie')
+ .removeClass('togglewait');
+ }
+ ).trigger('replie');
+}
+ return this;
+}
+
+// pour le bouton qui deplie/replie un ou plusieurs blocs
+jQuery.fn.toggleother = function(cible) {
+ if (this.is('.deplie'))
+ return this.hideother(cible);
+ else
+ return this.showother(cible);
+}
+
+// deplier/replier en hover
+// on le fait subtilement : on attend 400ms avant de deplier, periode
+// durant laquelle, si la souris sort du controle, on annule le depliement
+// le repliement ne fonctionne qu'au clic
+// Cette fonction est appelee a chaque hover d'un bloc depliable
+// la premiere fois, elle initialise le fonctionnement du bloc ; ensuite
+// elle ne fait plus rien
+jQuery.fn.depliant = function(cible) {
+ // premier passage
+ if (!this.is('.depliant')) {
+ var time = 400;
+
+ var me = this;
+ this
+ .addClass('depliant');
+
+ // effectuer le premier hover
+ if (!me.is('.deplie')) {
+ me.addClass('hover')
+ .addClass('togglewait');
+ var t = setTimeout(function(){
+ me.toggleother(cible);
+ t = null;
+ }, time);
+ }
+
+ me
+ // programmer les futurs hover
+ .hover(function(e){
+ me
+ .addClass('hover');
+ if (!me.is('.deplie')) {
+ me.addClass('togglewait');
+ if (t) { clearTimeout(t); t = null; }
+ t = setTimeout(function(){
+ me.toggleother(cible);
+ t = null;
+ }, time);
+ }
+ }
+ , function(e){
+ if (t) { clearTimeout(t); t = null; }
+ me
+ .removeClass('hover');
+ })
+
+ // gerer le triangle clicable
+ /*.find("a.titremancre")
+ .click(function(){
+ if (me.is('.togglewait') || t) return false;
+ me
+ .toggleother(cible);
+ return false;
+ })*/
+ .end();
+
+ }
+ return this;
+}
+jQuery.fn.depliant_clicancre = function(cible) {
+ var me = this.parent();
+ // gerer le triangle clicable
+ if (me.is('.togglewait')) return false;
+ me.toggleother(cible);
+ return false;
+}
+
+/**
+ * Recharger les blocs d'une page exec
+ * et changer la class du body si necessaire
+ * Par defaut les blocs recharges sont #navigation,#extra
+ * mais il suffit de passer des valeurs differentes en second argument
+ *
+ * @param exec
+ * @param blocs
+ */
+function reloadExecPage(exec, blocs){
+ if (window.jQuery) {
+ jQuery(function(){
+ if (!blocs)
+ blocs="#navigation,#extra";
+ jQuery(blocs).find('>div').ajaxReload({args:{exec:exec}});
+ if (exec.match(/_edit$/))
+ jQuery('body').addClass('edition');
+ else
+ jQuery('body').removeClass('edition');
+ })
+ }
+}
\ No newline at end of file