source: spip-zone/_squelettes_/soyezcreateurs_net/trunk/plugins/soyezcreateurs/javascripts.js.html @ 103206

Last change on this file since 103206 was 103206, checked in by real3t@…, 4 years ago

Mettre une hauteur minimum et non pas fixe pour permettre de conditionner l'affichage de champs d'un formulaire Formidable sans risque que le bas du formulaire passe sous le pied de la page.

File size: 32.2 KB
Line 
1#CACHE{24*3600,cache-client}
2#HTTP_HEADER{Content-Type: text/javascript; charset=iso-8859-1}
3// Menu accessible dynamique et CSS alternatives, V 2.0 (avec jquery)
4//
5// Copyright (c) 2004 Jacques PYRAT
6// http://www.pyrat.net/
7//
8// Licensed under the LGPL license
9// http://www.gnu.org/copyleft/lesser.html
10//
11// **********************************************************************
12// This program is distributed in the hope that it will be useful, but
13// WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15// **********************************************************************
16//
17// Presets
18
19// Encapsulation pour permettre l'utilisation de jQl, cf http://permalink.gmane.org/gmane.comp.web.spip.zone/38793
20// Même si ça marche, le résultat du test jQL était un doublement du temps de chargement
21// jQuery(function(){
22
23var jp_blankpic='#CHEMIN{images/1.gif}';
24var jp_onclass='menu_plus';
25var jp_offclass='menu_minus';
26var jp_picalt='<:soyezcreateurs:menu_picalt:>';
27var jp_strDeplier='<:soyezcreateurs:menu_deplier:>';
28var jp_strReplier='<:soyezcreateurs:menu_replier:>';
29var jp_parentID='menu';
30// Checking for DOM compatibility       
31if (document.getElementById && document.createTextNode && document.createElement){jp_canDOM=true}
32
33function jp_expinit(){
34        if (jp_canDOM){
35                if(jp_parentID && document.getElementById(jp_parentID)){
36                        jp_alluls=document.getElementById(jp_parentID).getElementsByTagName('UL');
37                        jp_alllis=document.getElementById(jp_parentID).getElementsByTagName('LI');
38                        for(i=0;i<jp_alluls.length;i++){
39                                jp_subul=jp_alluls[i];
40                                if(jp_subul.parentNode.tagName=='LI'){
41                                        jp_supli=jp_subul.parentNode
42                                        jp_islink=jp_supli.getElementsByTagName('a')[0];
43                                        if(jp_islink){
44                                                jp_addimg = document.createElement('img');
45                                                jp_addimg.src=jp_blankpic;
46                                                jp_addimg.className='node';
47                                                jp_addimg.alt='';
48                                                jp_addimg.onclick=function() {jp_ex(this,null);return false;};
49                                                jp_supli.getElementsByTagName('A')[0].onkeypress=inputKeyHandler;
50                                                jp_supli.getElementsByTagName('A')[0].onfocus=function() {jp_ex(this,0);};
51                                                jp_supli.insertBefore(jp_addimg,jp_supli.firstChild);
52                                        }
53                                        // Do not collapse when there is a strong element in the list.
54                                        jp_highlight=jp_subul.parentNode.getElementsByTagName('strong').length==0?true:false;
55                                        jp_disp=jp_highlight?'none':'block';
56                                        var jp_picaltonoff=jp_highlight?jp_picalt+jp_strDeplier:jp_picalt+jp_strReplier;
57                                        jp_pic_class=jp_highlight?jp_onclass:jp_offclass;
58                                        // End  highlight change
59                                        jp_childs=jp_subul.getElementsByTagName('li').length
60                                        jp_momimg=jp_subul.parentNode.getElementsByTagName('img')[0]
61                                        if(jp_momimg){
62                                                jp_momimg.setAttribute('title',jp_picaltonoff+jp_subul.parentNode.getElementsByTagName('a')[0].text);
63                                                jp_momimg.setAttribute('alt',jp_picaltonoff+jp_subul.parentNode.getElementsByTagName('a')[0].text);
64                                                jp_momimg.className=jp_pic_class;
65                                                jp_subul.style.display=jp_disp;
66                                        }
67                                }
68                        }
69                }
70        }
71}
72
73// Collapse and Expand node.
74function jp_ex(jp_n,jp_event){
75        if(jp_canDOM){
76                jp_u=jp_n.parentNode.getElementsByTagName("ul")[0];
77                if (!jp_u) jp_u=jp_n.parentNode.parentNode.getElementsByTagName("ul")[0];;
78                if(jp_u){
79                        if (((jp_u.style.display=='none'||jp_u.style.display=='')&&(jp_event==0||jp_event==43||jp_event==null))||((jp_u.style.display=='block')&&(jp_event==45||jp_event==null))) {
80                                jp_u.style.display=jp_u.style.display=='none'||jp_u.style.display==''?'block':'none';
81                                jp_img=jp_u.parentNode.getElementsByTagName('img')[0];
82                                jp_img.className=jp_img.className.indexOf(jp_offclass)!=-1?jp_onclass:jp_offclass;
83                                var jp_strAlt=jp_img.getAttribute('title');
84                                if (jp_strAlt==null) { jp_strAlt=''; }
85                                if (jp_img.className.indexOf(jp_offclass)!=-1) {
86                                        var jp_re = new RegExp (jp_strDeplier, 'gi');
87                                        var jp_strAltNew = jp_strAlt.replace(jp_re,jp_strReplier);
88                                }else{
89                                        var jp_re = new RegExp (jp_strReplier, 'gi');
90                                        var jp_strAltNew = jp_strAlt.replace(jp_re,jp_strDeplier);
91                                }
92                                jp_img.setAttribute('title',jp_strAltNew);
93                                jp_img.setAttribute('alt',jp_strAltNew);
94                                adjustLayout();
95                                return true;
96                        } else {
97                                return false;
98                        }
99                }
100        }                       
101}
102function inputKeyHandler(ev) {
103        ev = ev || event;
104        if (jp_ex(ev.target || ev.srcElement,ev.keyCode || ev.which)) {
105                ev.cancelBubble= true;
106                if (ev.stopPropagation) ev.stopPropagation();
107        }
108}
109
110
111function adjustLayout() {
112        /* Remettre la taille à auto pour trouver l'eventuelle nouvelle hauteur !*/
113        $("div.equilibre").css({'height': 'auto'});
114        /*******************************************CAS N°1********************************************************************/
115        /*Nav, Contenu et Extra alignes top (Layout 1 a 22)*/
116        var tnotstackable =0;
117        tnotstackable = parseInt($("div.notstackable")[0].offsetTop);
118        tlaststackable = parseInt($("div.laststackable")[0].offsetTop);
119        if (tnotstackable==tlaststackable) {
120                        var h=0;
121                        $("div.equilibre").each(function(){ h=Math.max(h,this.offsetHeight); }).css({'min-height': h+'px'});
122                        $("div.equilibre").css({'height': parseInt($("div.equilibre")[0].offsetHeight)});
123                        /*alert("Cas 1");*/
124        }
125        else {
126/*********************************************CAS 2*********************************************************************/
127        /* Navigation et Extra sont empiles (Layout 23 a 26 et 33 et 34)*/
128                leftlaststackable = parseInt($("div.laststackable")[0].offsetLeft);
129                leftnavigation = parseInt($("div#navigation")[0].offsetLeft);
130                largeurnavigation = parseInt($("div#navigation")[0].offsetWidth);
131                largeurextra = parseInt($("div.laststackable")[0].offsetWidth);
132                if ((leftlaststackable == leftnavigation) && (largeurextra == largeurnavigation)) {
133                        var hstacked = 0;
134                        $("div.stackable").each(function(){ hstacked+=parseInt(this.offsetHeight); });
135                        var hnotstackable = 0;
136                        hnotstackable = parseInt($("div.notstackable")[0].offsetHeight);
137                        if (hnotstackable>hstacked) {
138                                $("div.laststackable").css({'min-height': hnotstackable + parseInt($("div.laststackable")[0].offsetHeight) - hstacked+'px'});
139                                $("div.notstackable").css({'min-height': hnotstackable+'px'});
140                                /*alert("Cas 2");*/
141                        }
142                        else {
143                                $("div.notstackable").css({'min-height': hstacked+'px'});
144                        };
145                }
146                else {
147/**********************************************CAS 3*******************************************************************/
148        /* Navigation et Extra meme Top et differents de Contenu (Layout 27-28-39-40)*/
149                        tlaststackable = parseInt($("div.laststackable")[0].offsetTop);
150                        tstackable = parseInt($("div.stackable")[0].offsetTop);
151                        if (tstackable==tlaststackable){
152                                var h=0;
153                                $("div.stackable").each(function(){ h=Math.max(h,this.offsetHeight); }).css({'min-height': h+'px'});
154                                /*alert("Cas 3");*/
155                        }
156                        else {
157/**********************************************CAS 4*******************************************************************/
158        /* Navigation et Contenu meme alignement Top (Layout 35 et 36)*/
159                                largeurcontenu = parseInt($("div.notstackable")[0].offsetWidth);
160                                if (largeurcontenu==largeurextra) {
161                                        hstackable = (hauteurcontenu = parseInt($("div.notstackable")[0].offsetHeight)) + (hauteurext = parseInt($("div.laststackable")[0].offsetHeight));
162                                        hnavigation = parseInt($("div#navigation")[0].offsetHeight);
163                                        if(hstackable < hnavigation) {
164                                                $("div.notstackable").css({'min-height': (hnavigation - hauteurext)+'px'});
165                                        }
166                                        else {
167                                                $("div#navigation").css({'min-height': hstackable+'px'});
168                                        }
169                                        /*alert("Cas 4");*/
170                                }
171                                else    {
172/**********************************************CAS 5*******************************************************************/
173        /* Navigation et Contenu meme alignement Top (Layout 29 a 32 et 37 et 38)*/
174                                        hstackable = (hauteurcontenu = parseInt($("div.notstackable")[0].offsetHeight));
175                                        hnavigation = parseInt($("div#navigation")[0].offsetHeight);
176                                        if(hstackable > hnavigation) {
177                                                $("div#navigation").css({'min-height': hstackable+'px'});
178                                        }
179                                        else {
180                                        $("div.notstackable").css({'min-height': hnavigation+'px'});
181                                        }
182                                        /*alert("Cas 5");*/
183                                }
184                        }
185                }
186        }
187}
188;
189/* FUNCTIONS ON ALL PAGES */
190function myInitPages() {
191        /* HOME SPECIAL FEATURE */
192        if (jQuery('#homeSpecialFeature').size() > 0) {
193                if (jQuery('.hSFItem').size()>1) { initMyHomeSpecialFeature = myHomeSpecialFeature("#homeSpecialFeature",'hSFItem','hSFDecoImg','hSFDecoSpan'); }
194        }
195        if (jQuery('#menuh').size() > 0) {
196                $(document).ready(function(){
197                  $("#menuh").attr('role','navigation')/*.supersubs({
198            minWidth:    12,   // minimum width of sub-menus in em units
199            maxWidth:    24,   // maximum width of sub-menus in em units
200            extraWidth:  1     // extra width can ensure lines don't sometimes turn over
201                               // due to slight rounding differences and font-family
202        })*/.superfish({
203                        hoverClass: 'hover',
204                        delay: 800,
205                        dropShadows: false
206                  })/*.find('ul').bgIframe({opacity:false})*/;
207
208                  $("#switch-css option").click(function() {
209                                $("link").attr("href",$(this).attr('value'));
210                                return false;
211                        });
212                });
213        }
214        if (jQuery('#arretSurImg .mainCarousels').size() > 0) { homeCarousel('.mainCarousels'); }
215        if (jQuery('#arretSurImg2 .mainCarousels2').size() > 0) { homeCarousel2('.mainCarousels2'); }
216        [(#CONFIG{soyezcreateurs_layout/menuderoulant,replie}|=={replie}|oui)jp_expinit();]
217        // Surligner l'evenement en cours
218        var id_anchor  = location.hash.substr(1); //Get the word after the hash from the url
219        if (id_anchor) $('#'+id_anchor).parent().addClass('highlight_anchor'); // ajoute la classe highlight_anchor à l'element autour de l'ancre
220;
221[(#CONFIG{soyezcreateurs/native_tooltips}|=={on}|non)
222        $(function() { $( document ).tooltip({
223                  track: true,
224                  items: '\[title\]:not(.crayon-icones *, .formulaire_crayon *, a span, a img, .postListItem *)',
225                  show: {
226                        delay: #CONFIG{soyezcreateurs/tooltip_delay,1000}
227                  }
228                });
229        });
230]
231        $(".escapelinks").one("focus", "a", function() { $(".escapelinks").removeClass("escapelinks"); } );
232}
233;
234function myInitLayout() {
235        if (CanceladjustLayout != true) {
236                adjustLayout();
237                $("body").resize(
238                        function () {
239                        adjustLayout();
240                        }
241                );
242                if (CancelMonitorTextSize != true) {
243                        $.em.element = $('<div />').css({ left:     '-100em',
244                                                                                position: 'absolute',
245                                                                                width:    '100em' })
246                                                                 .prependTo('div.texte')[0];
247                        $('div.texte').bind('emchange', function(e, cur, prev) { adjustLayout(); });
248                }
249                onAjaxLoad(adjustLayout); // Merci Marcimat sur IRC !
250        }
251;
252}
253;
254/* BLACK TRANSPARENT BACKGROUNDS */
255function mySpecialBackgrounds(elt,correcAmount,correcAmount2) {
256        jQuery(elt).each(function() {
257                var targetHeight = jQuery(this).parent().height();
258                var targetWidth = jQuery(this).parent().width();
259                jQuery(this).css({'height':targetHeight+correcAmount,'width':targetWidth+correcAmount2,'opacity':.5});
260        });
261}
262;
263/* HOME SPECIAL FEATURE */
264function myHomeSpecialFeature(container,item,decoImg,decoSpan) {
265        jQuery('#'+item+'1').addClass('active'+item);
266        mySpecialBackgrounds('.'+item+' .'+decoSpan,14,10);
267        jQuery('#'+item+'1 .'+decoSpan).css("opacity", 1);
268        jQuery('.'+item+' .'+decoImg).hide();
269        jQuery('#'+item+'1 .'+decoImg).show();
270
271        var x = 1;
272        var maxX = jQuery('.'+item).size();
273        function myAnimate(x,maxX) {
274                if (x > maxX) { x = 1; }
275                jQuery('.'+item).removeClass('active'+item);
276                jQuery('#'+item+x).addClass('active'+item);
277                jQuery('.'+item+' .'+decoSpan).animate({"opacity": .5}, { queue:false, duration:800 });
278                jQuery('#'+item+x+' .'+decoSpan).animate({"opacity": 1},800);
279                jQuery('.'+item+' .'+decoImg).fadeOut(800);
280                jQuery('#'+item+x+' .'+decoImg).fadeIn(800);
281                timer = setTimeout(function() {
282                        if (x < maxX) { x = x+1; myAnimate(x,maxX); }
283                        else if (x = maxX) { x = 1; myAnimate(x,maxX); }
284                } , #CONFIG{soyezcreateurs/vitesse_slider,10000} );
285        }
286        myAnimate(x,maxX);
287
288        jQuery('.'+item).each(function() {
289                jQuery(this).hoverIntent(
290                        function() {
291                                clearTimeout(timer);
292                                currentItem = jQuery('.'+item).index(this)+1;
293                                jQuery('.'+item).removeClass('active'+item);
294                                jQuery(this).addClass('active'+item);
295                                jQuery('.'+item+' .'+decoSpan+':not("#'+item+currentItem+' .'+decoSpan+'")').css("opacity", .5);
296                                jQuery(this).children().children('.'+decoSpan).animate({"opacity": 1},400);
297                                jQuery('.'+item+' .'+decoImg+':not("#'+item+currentItem+' .'+decoImg+'")').fadeOut(400);
298                                jQuery(this).children('.'+decoImg).fadeIn(400);
299                        },
300                        function() {
301                                clearTimeout(timer);
302                                currentItem = jQuery('.'+item).index(this)+2;
303                                jQuery(this).removeClass('active'+item);
304                                jQuery(this).children().children('.'+decoSpan).animate({"opacity": .5},400);
305                                timer = setTimeout(function() { myAnimate(currentItem,maxX); } , 1000 );
306                        }
307                );
308        });
309}
310;
311
312/* HOME CYCLE */
313function homeCarousel(elt) {
314        /* carousels internes */
315        var elemNbr = jQuery(elt+' > li').size();
316        var myCounter = 1;
317        function onAfter(curr,next,opts) {
318                if (opts.currSlide+1 == opts.slideCount) {
319                        if (myCounter < elemNbr) {
320                                myCounter = myCounter+1;
321                        } else if (myCounter == elemNbr) {
322                                myCounter = 1;
323                        }
324
325                        function reloadCarousels() {
326                                jQuery('.smallCarousel').stop(true,true).fadeOut(750);
327                                jQuery('#sc'+myCounter+'b').stop(true,true).fadeIn(750).children('ul').cycle({
328                                    //fx: 'scrollHorz', // pour transition latérale
329                                    fx: 'fade',
330                                    speed: 1500,
331                                    timeout: 4000,
332                                        pause: true,
333                                        startingSlide: 0,
334                                        after: onAfter
335                                });
336                        jQuery('.mainCarousel').removeClass('active');
337                        if (myCounter == 1) {
338                                jQuery('.mainCarousel:first').addClass('active');
339                        } else {
340                                        jQuery('.mainCarousel').eq(myCounter-1).addClass('active');
341                        }
342                }
343                        jQuery('.smallCarousel').children('ul').cycle('stop');
344                        var t2=setTimeout(reloadCarousels,3000);
345                } else {
346                        clearTimeout(t2);
347                }
348                //alert(myCounter);
349        }
350        function onAfter2(curr,next,opts) {
351                //
352        }
353        jQuery('.smallCarousel ul').cycle({
354            //fx: 'scrollHorz', // pour transition latérale
355            fx: 'fade',
356            speed: 1500,
357            timeout: 4000,
358                pause: true,
359                startingSlide: 0,
360                after: onAfter
361        });
362        jQuery('.smallCarousel').hide().children('ul').cycle('pause');
363        jQuery('#sc1b').show().children('ul').cycle('resume');
364        /* faux carousel principal */
365        var whatToShow = '';
366        jQuery('.mainCarousel:first').addClass('active');
367        jQuery(document).delegate('.mainCarousel','mouseenter focus', function() {
368                jQuery('.mainCarousel').removeClass('hover active');
369                jQuery(this).addClass('hover active');
370                whatToShow = jQuery(this).children('h2').children('a').attr('id');
371                jQuery('.smallCarousel').stop(true,true).fadeOut().children('ul').cycle('stop');
372                // jQuery(whatToShow).stop(true,true).fadeIn().children('ul').cycle({fx: 'scrollHorz',speed: 1500,timeout: 4000,pause: true,after: onAfter2}).cycle('resume'); // avec transition latérale
373                jQuery('#'+whatToShow+'b').stop(true,true).fadeIn().children('ul').cycle({fx: 'fade',speed: 1500,timeout: 4000,pause: true,startingSlide: 0,after: onAfter2});
374        }).delegate('.mainCarousel','mouseleave blur', function() {
375                whatToShow = jQuery(this).children('h2').children('a').attr('id');
376                jQuery(this).removeClass('hover');
377                // jQuery('.smallCarousel').stop(true,true).fadeOut().children('ul').cycle({fx: 'scrollHorz',speed: 1500,timeout: 4000,pause: true,after: onAfter}).cycle('pause'); // avec transition latérale
378                jQuery('.smallCarousel').stop(true,true).fadeOut().children('ul').cycle('stop');
379                jQuery('#'+whatToShow+'b').stop(true,true).fadeIn().children('ul').cycle({fx: 'fade',speed: 1500,timeout: 4000,pause: true,startingSlide: 0,after: onAfter});
380                myCounter = jQuery(this).index()+1;
381        });
382}
383
384/* HOME CYCLE */
385function homeCarousel2(elt) {
386        /* carousels internes */
387        var elemNbr = jQuery(elt+' > li').size();
388        var myCounter = 1;
389        function onAfter(curr,next,opts) {
390                if (opts.currSlide+1 == opts.slideCount) {
391                        if (myCounter < elemNbr) {
392                                myCounter = myCounter+1;
393                        } else if (myCounter == elemNbr) {
394                                myCounter = 1;
395                        }
396
397                        function reloadCarousels() {
398                                jQuery('.smallCarousel2').stop(true,true).fadeOut(750);
399                                jQuery('#sc'+myCounter+'b2').stop(true,true).fadeIn(750).children('ul').cycle({
400                                    //fx: 'scrollHorz', // pour transition latérale
401                                    fx: 'fade',
402                                    speed: 1500,
403                                    timeout: 4000,
404                                        pause: true,
405                                        startingSlide: 0,
406                                        after: onAfter
407                                });
408                        jQuery('.mainCarousel2').removeClass('active');
409                        if (myCounter == 1) {
410                                jQuery('.mainCarousel2:first').addClass('active');
411                        } else {
412                                        jQuery('.mainCarousel2').eq(myCounter-1).addClass('active');
413                        }
414                }
415                        jQuery('.smallCarousel2').children('ul').cycle('stop');
416                        var t2=setTimeout(reloadCarousels,3000);
417                } else {
418                        clearTimeout(t2);
419                }
420                //alert(myCounter);
421        }
422        function onAfter2(curr,next,opts) {
423                //
424        }
425        jQuery('.smallCarousel2 ul').cycle({
426            //fx: 'scrollHorz', // pour transition latérale
427            fx: 'fade',
428            speed: 1500,
429            timeout: 4000,
430                pause: true,
431                startingSlide: 0,
432                after: onAfter
433        });
434        jQuery('.smallCarousel2').hide().children('ul').cycle('pause');
435        jQuery('#sc1b2').show().children('ul').cycle('resume');
436        /* faux carousel principal */
437        var whatToShow = '';
438        jQuery('.mainCarousel2:first').addClass('active');
439        jQuery(document).delegate('.mainCarousel2','mouseenter focus', function() {
440                jQuery('.mainCarousel2').removeClass('hover active');
441                jQuery(this).addClass('hover active');
442                whatToShow = jQuery(this).children('h2').children('a').attr('id');
443                jQuery('.smallCarousel2').stop(true,true).fadeOut().children('ul').cycle('stop');
444                // jQuery(whatToShow).stop(true,true).fadeIn().children('ul').cycle({fx: 'scrollHorz',speed: 1500,timeout: 4000,pause: true,after: onAfter2}).cycle('resume'); // avec transition latérale
445                jQuery('#'+whatToShow+'b2').stop(true,true).fadeIn().children('ul').cycle({fx: 'fade',speed: 1500,timeout: 4000,pause: true,startingSlide: 0,after: onAfter2});
446        }).delegate('.mainCarousel2','mouseleave blur', function() {
447                whatToShow = jQuery(this).children('h2').children('a').attr('id');
448                jQuery(this).removeClass('hover');
449                // jQuery('.smallCarousel').stop(true,true).fadeOut().children('ul').cycle({fx: 'scrollHorz',speed: 1500,timeout: 4000,pause: true,after: onAfter}).cycle('pause'); // avec transition latérale
450                jQuery('.smallCarousel2').stop(true,true).fadeOut().children('ul').cycle('stop');
451                jQuery('#'+whatToShow+'b2').stop(true,true).fadeIn().children('ul').cycle({fx: 'fade',speed: 1500,timeout: 4000,pause: true,startingSlide: 0,after: onAfter});
452                myCounter = jQuery(this).index()+1;
453        });
454}
455
456/*!
457 * hoverIntent v1.8.1 // 2014.08.11 // jQuery v1.9.1+
458 * http://cherne.net/brian/resources/jquery.hoverIntent.html
459 *
460 * You may use hoverIntent under the terms of the MIT license. Basically that
461 * means you are free to use hoverIntent as long as this header is left intact.
462 * Copyright 2007, 2014 Brian Cherne
463 */
464 
465/* hoverIntent is similar to jQuery's built-in "hover" method except that
466 * instead of firing the handlerIn function immediately, hoverIntent checks
467 * to see if the user's mouse has slowed down (beneath the sensitivity
468 * threshold) before firing the event. The handlerOut function is only
469 * called after a matching handlerIn.
470 *
471 * // basic usage ... just like .hover()
472 * .hoverIntent( handlerIn, handlerOut )
473 * .hoverIntent( handlerInOut )
474 *
475 * // basic usage ... with event delegation!
476 * .hoverIntent( handlerIn, handlerOut, selector )
477 * .hoverIntent( handlerInOut, selector )
478 *
479 * // using a basic configuration object
480 * .hoverIntent( config )
481 *
482 * @param  handlerIn   function OR configuration object
483 * @param  handlerOut  function OR selector for delegation OR undefined
484 * @param  selector    selector OR undefined
485 * @author Brian Cherne <brian(at)cherne(dot)net>
486 */
487(function($) {
488    $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
489
490        // default configuration values
491        var cfg = {
492            interval: 100,
493            sensitivity: 6,
494            timeout: 0
495        };
496
497        if ( typeof handlerIn === "object" ) {
498            cfg = $.extend(cfg, handlerIn );
499        } else if ($.isFunction(handlerOut)) {
500            cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
501        } else {
502            cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
503        }
504
505        // instantiate variables
506        // cX, cY = current X and Y position of mouse, updated by mousemove event
507        // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
508        var cX, cY, pX, pY;
509
510        // A private function for getting mouse position
511        var track = function(ev) {
512            cX = ev.pageX;
513            cY = ev.pageY;
514        };
515
516        // A private function for comparing current and previous mouse position
517        var compare = function(ev,ob) {
518            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
519            // compare mouse positions to see if they've crossed the threshold
520            if ( Math.sqrt( (pX-cX)*(pX-cX) + (pY-cY)*(pY-cY) ) < cfg.sensitivity ) {
521                $(ob).off("mousemove.hoverIntent",track);
522                // set hoverIntent state to true (so mouseOut can be called)
523                ob.hoverIntent_s = true;
524                return cfg.over.apply(ob,[ev]);
525            } else {
526                // set previous coordinates for next time
527                pX = cX; pY = cY;
528                // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
529                ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
530            }
531        };
532
533        // A private function for delaying the mouseOut function
534        var delay = function(ev,ob) {
535            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
536            ob.hoverIntent_s = false;
537            return cfg.out.apply(ob,[ev]);
538        };
539
540        // A private function for handling mouse 'hovering'
541        var handleHover = function(e) {
542            // copy objects to be passed into t (required for event object to be passed in IE)
543            var ev = $.extend({},e);
544            var ob = this;
545
546            // cancel hoverIntent timer if it exists
547            if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
548
549            // if e.type === "mouseenter"
550            if (e.type === "mouseenter") {
551                // set "previous" X and Y position based on initial entry point
552                pX = ev.pageX; pY = ev.pageY;
553                // update "current" X and Y position based on mousemove
554                $(ob).on("mousemove.hoverIntent",track);
555                // start polling interval (self-calling timeout) to compare mouse coordinates over time
556                if (!ob.hoverIntent_s) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
557
558                // else e.type == "mouseleave"
559            } else {
560                // unbind expensive mousemove event
561                $(ob).off("mousemove.hoverIntent",track);
562                // if hoverIntent state is true, then call the mouseOut function after the specified delay
563                if (ob.hoverIntent_s) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
564            }
565        };
566
567        // listen for mouseenter and mouseleave
568        return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
569    };
570})(jQuery);
571
572/*
573 * Supersubs v0.2b - jQuery plugin
574 * Copyright (c) 2008 Joel Birch
575 *
576 * Dual licensed under the MIT and GPL licenses:
577 *      http://www.opensource.org/licenses/mit-license.php
578 *      http://www.gnu.org/licenses/gpl.html
579 *
580 *
581 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
582 * their longest list item children. If you use this, please expect bugs and report them
583 * to the jQuery Google Group with the word 'Superfish' in the subject line.
584 *
585 */
586
587;(function($){ // $ will refer to jQuery within this closure
588
589        $.fn.supersubs = function(options){
590                var opts = $.extend({}, $.fn.supersubs.defaults, options);
591                // return original object to support chaining
592                return this.each(function() {
593                        // cache selections
594                        var $$ = $(this);
595                        // support metadata
596                        var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
597                        // get the font size of menu.
598                        // .css('fontSize') returns various results cross-browser, so measure an em dash instead
599                        var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
600                                'padding' : 0,
601                                'position' : 'absolute',
602                                'top' : '-999em',
603                                'width' : 'auto'
604                        }).appendTo($$).width(); //clientWidth is faster, but was incorrect here
605                        // remove em dash
606                        $('#menu-fontsize').remove();
607                        // cache all ul elements
608                        $ULs = $$.find('ul');
609                        // loop through each ul in menu
610                        $ULs.each(function(i) {
611                                // cache this ul
612                                var $ul = $ULs.eq(i);
613                                // get all (li) children of this ul
614                                var $LIs = $ul.children();
615                                // get all anchor grand-children
616                                var $As = $LIs.children('a');
617                                // force content to one line and save current float property
618                                var liFloat = $LIs.css('white-space','nowrap').css('float');
619                                // remove width restrictions and floats so elements remain vertically stacked
620                                var emWidth = $ul.add($LIs).add($As).css({
621                                        'float' : 'none',
622                                        'width' : 'auto'
623                                })
624                                // this ul will now be shrink-wrapped to longest li due to position:absolute
625                                // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
626                                .end().end()[0].clientWidth / fontsize;
627                                // add more width to ensure lines don't turn over at certain sizes in various browsers
628                                emWidth += o.extraWidth;
629                                // restrict to at least minWidth and at most maxWidth
630                                if (emWidth > o.maxWidth)               { emWidth = o.maxWidth; }
631                                else if (emWidth < o.minWidth)  { emWidth = o.minWidth; }
632                                emWidth += 'em';
633                                // set ul to width in ems
634                                $ul.css('width',emWidth);
635                                // restore li floats to avoid IE bugs
636                                // set li width to full width of this ul
637                                // revert white-space to normal
638                                $LIs.css({
639                                        'float' : liFloat,
640                                        'width' : '100%',
641                                        'white-space' : 'normal'
642                                })
643                                // update offset position of descendant ul to reflect new width of parent
644                                .each(function(){
645                                        var $childUl = $('>ul',this);
646                                        var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
647                                        $childUl.css(offsetDirection,emWidth);
648                                });
649                        });
650                       
651                });
652        };
653        // expose defaults
654        $.fn.supersubs.defaults = {
655                minWidth                : 9,            // requires em unit.
656                maxWidth                : 25,           // requires em unit.
657                extraWidth              : 0                     // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
658        };
659       
660})(jQuery); // plugin code ends
661
662// Inspiré de http://users.tpg.com.au/j_birch/plugins/superfish/
663// Menu accessible : http://aquelito.fr/truc/menu3/
664/*
665 * Superfish v1.4.8 - jQuery menu widget
666 * Copyright (c) 2008 Joel Birch
667 *
668 * Dual licensed under the MIT and GPL licenses:
669 *      http://www.opensource.org/licenses/mit-license.php
670 *      http://www.gnu.org/licenses/gpl.html
671 *
672 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
673 */
674
675
676;(function($){
677        $.fn.superfish = function(op){
678                var sf = $.fn.superfish,
679                        c = sf.c,
680                        $arrow = $(['<span class="'+ c.arrowClass +'"></span>'].join('')),
681                        over = function(){
682                                var $$ = $(this), menu = getMenu($$);
683                                clearTimeout(menu.sfTimer);
684                                $$.showSuperfishUl().siblings().hideSuperfishUl();
685                        },
686                        out = function(){
687                                var $$ = $(this), menu = getMenu($$), o = sf.op;
688                                clearTimeout(menu.sfTimer);
689                                menu.sfTimer=setTimeout(function(){
690                                        o.retainPath=($.inArray($$[0],o.$path)>-1);
691                                        $$.hideSuperfishUl();
692                                        if (o.$path.length && $$.parents([ 'li.', o.hoverClass ].join('')).length<1){over.call(o.$path);}
693                                },o.delay);     
694                        },
695                        getMenu = function($menu){
696                                var menu = $menu.parents([ 'ul.', c.menuClass, ':first' ].join(''))[0];
697                                sf.op = sf.o[menu.serial];
698                                return menu;
699                        },
700                        addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
701                       
702                return this.each(function() {
703                        var s = this.serial = sf.o.length;
704                        var o = $.extend({},sf.defaults,op);
705                        o.$path = $('li.'+ o.pathClass,this).slice(0, o.pathLevels).each(function(){
706                                $(this).addClass([o.hoverClass,c.bcClass].join(' '))
707                                        .filter('li:has(ul)').removeClass(o.pathClass);
708                        });
709                        sf.o[s] = sf.op = o;
710                       
711                        $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
712                                if (o.autoArrows) { 
713                                        addArrow( $(' > a:first-child',this) );
714                                        addArrow( $(' > strong > a:first-child',this) );
715                                }
716                        })
717                        .not('.'+c.bcClass)
718                                .hideSuperfishUl();
719                       
720                        var $a = $('a',this);
721                        $a.each(function(i){
722                                var $li = $a.eq(i).parents('li');
723                                $a.eq(i).focus(function() { over.call($li); } ).blur(function() { out.call($li); });
724                        });
725                        o.onInit.call(this);
726                       
727                }).each(function() {
728                        var menuClasses = [c.menuClass];
729                        if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
730                        $(this).addClass(menuClasses.join(' '));
731                });
732        };
733
734        var sf = $.fn.superfish;
735        sf.o = [];
736        sf.op = {};
737        sf.IE7fix = function(){
738                var o = sf.op;
739                if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity != undefined)
740                        this.toggleClass(sf.c.shadowClass + '-off');
741                };
742        sf.c = {
743                bcClass     : 'sf-breadcrumb',
744                menuClass   : 'drop',
745                anchorClass : 'sf-with-ul',
746                arrowClass  : 'sf-sub-indicator',
747                shadowClass : 'sf-shadow'
748        };
749        sf.defaults = {
750                hoverClass      : 'sfhover',
751                pathClass       : 'overideThisToUse',
752                pathLevels      : 1,
753                delay           : 800,
754                animation       : {opacity:'show'},
755                speed           : 'normal',
756                autoArrows      : true,
757                dropShadows : true,
758                disableHI       : false,                // true disables hoverIntent detection
759                onInit          : function(){}, // callback functions
760                onBeforeShow: function(){},
761                onShow          : function(){},
762                onHide          : function(){}
763        };
764        $.fn.extend({
765                hideSuperfishUl : function(){
766                        var o = sf.op,
767                                not = (o.retainPath===true) ? o.$path : '';
768                        o.retainPath = false;
769                        var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass).find(' > ul');
770                        o.onHide.call($ul);
771                        return this;
772                },
773                showSuperfishUl : function(){
774                        var o = sf.op,
775                                sh = sf.c.shadowClass+'-off',
776                                $ul = this.addClass(o.hoverClass).find(' > ul:hidden');
777                        sf.IE7fix.call($ul);
778                        o.onBeforeShow.call($ul);
779                        $ul.animate(o.animation, o.speed, function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
780                        return this;
781                }
782        });
783})(jQuery);
784
785/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
786 * Licensed under the MIT License (LICENSE.txt).
787 *
788 * Version 2.1.2
789 */
790
791(function($){
792
793$.fn.bgiframe = ($.browser.msie && /msie 6\.0/i.test(navigator.userAgent) ? function(s) {
794    s = $.extend({
795        top     : 'auto', // auto == .currentStyle.borderTopWidth
796        left    : 'auto', // auto == .currentStyle.borderLeftWidth
797        width   : 'auto', // auto == offsetWidth
798        height  : 'auto', // auto == offsetHeight
799        opacity : true,
800        src     : 'javascript:false;'
801    }, s);
802    var html = '<iframe class="bgiframe"tabindex="-1"src="'+s.src+'"'+
803                   'style="display:block;position:absolute;z-index:-1;'+
804                       (s.opacity !== false?'filter:Alpha(Opacity=\'0\');':'')+
805                       'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+
806                       'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+
807                       'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+
808                       'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+
809                '"/>';
810    return this.each(function() {
811        if ( $(this).children('iframe.bgiframe').length === 0 )
812            this.insertBefore( document.createElement(html), this.firstChild );
813    });
814} : function() { return this; });
815
816// old alias
817$.fn.bgIframe = $.fn.bgiframe;
818
819function prop(n) {
820    return n && n.constructor === Number ? n + 'px' : n;
821}
822
823})(jQuery);
824
825$(document).ready(function() {
826        myInitPages();
827        // Ceci devrait régler le problème de l'ajustement des colonne pas toujours fait
828        $(window).load(function() {
829                myInitLayout();
830        });
831});
832
833[(#CHEMIN{images/sc_javascript_perso.js.html}|?{'/* Complément personnalisé du JS */'})
834[(#INCLURE{fond=images/sc_javascript_perso.js})]
835]
836
837// Fin Encapsulation pour permettre l'utilisation de jQl, cf http://permalink.gmane.org/gmane.comp.web.spip.zone/38793
838//});
839
840[(#CHEMIN{js/soyezcreateurs_perso.js}|?{'/* Surcharge eventuelle */'})
841[(#INCLURE{#CHEMIN{js/soyezcreateurs_perso.js}|liens_absolus}|compacte{js})]
842]
Note: See TracBrowser for help on using the repository browser.