source: spip-zone/_squelettes_/soyezcreateurs_net/plugins_2.1/plugins/soyezcreateurs/javascripts.js.html @ 47539

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

Cosmétique + Un bug js

File size: 14.2 KB
Line 
1#CACHE{30*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
18var jp_blankpic='#CHEMIN{images/1.gif}';
19var jp_onclass='menu_plus';
20var jp_offclass='menu_minus';
21var jp_picalt='<:soyezcreateurs:menu_picalt:>';
22var jp_strDeplier='<:soyezcreateurs:menu_deplier:>';
23var jp_strReplier='<:soyezcreateurs:menu_replier:>';
24var jp_parentID='menu';
25// Checking for DOM compatibility       
26if (document.getElementById && document.createTextNode && document.createElement){jp_canDOM=true}
27
28function jp_expinit(){
29        if (jp_canDOM){
30                if(jp_parentID && document.getElementById(jp_parentID)){
31                        jp_alluls=document.getElementById(jp_parentID).getElementsByTagName('UL');
32                        jp_alllis=document.getElementById(jp_parentID).getElementsByTagName('LI');
33                        for(i=0;i<jp_alluls.length;i++){
34                                jp_subul=jp_alluls[i];
35                                if(jp_subul.parentNode.tagName=='LI'){
36                                        jp_supli=jp_subul.parentNode
37                                        jp_islink=jp_supli.getElementsByTagName('a')[0];
38                                        if(jp_islink){
39                                                jp_addimg = document.createElement('img');
40                                                jp_addimg.src=jp_blankpic;
41                                                jp_addimg.className='node';
42                                                jp_addimg.alt='';
43                                                jp_addimg.onclick=function() {jp_ex(this,null);return false;};
44                                                jp_supli.getElementsByTagName('A')[0].onkeypress=inputKeyHandler;
45                                                jp_supli.getElementsByTagName('A')[0].onfocus=function() {jp_ex(this,0);};
46                                                jp_supli.insertBefore(jp_addimg,jp_supli.firstChild);
47                                        }
48                                        // Do not collapse when there is a strong element in the list.
49                                        jp_highlight=jp_subul.parentNode.getElementsByTagName('strong').length==0?true:false;
50                                        jp_disp=jp_highlight?'none':'block';
51                                        var jp_picaltonoff=jp_highlight?jp_picalt+jp_strDeplier:jp_picalt+jp_strReplier;
52                                        jp_pic_class=jp_highlight?jp_onclass:jp_offclass;
53                                        // End  highlight change
54                                        jp_childs=jp_subul.getElementsByTagName('li').length
55                                        jp_momimg=jp_subul.parentNode.getElementsByTagName('img')[0]
56                                        if(jp_momimg){
57                                                jp_momimg.setAttribute('title',jp_picaltonoff+jp_subul.parentNode.getElementsByTagName('a')[0].text);
58                                                jp_momimg.setAttribute('alt',jp_picaltonoff+jp_subul.parentNode.getElementsByTagName('a')[0].text);
59                                                jp_momimg.className=jp_pic_class;
60                                                jp_subul.style.display=jp_disp;
61                                        }
62                                }
63                        }
64                }
65        }
66}
67
68// Collapse and Expand node.
69function jp_ex(jp_n,jp_event){
70        if(jp_canDOM){
71                jp_u=jp_n.parentNode.getElementsByTagName("ul")[0];
72                if (!jp_u) jp_u=jp_n.parentNode.parentNode.getElementsByTagName("ul")[0];;
73                if(jp_u){
74                        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))) {
75                                jp_u.style.display=jp_u.style.display=='none'||jp_u.style.display==''?'block':'none';
76                                jp_img=jp_u.parentNode.getElementsByTagName('img')[0];
77                                jp_img.className=jp_img.className.indexOf(jp_offclass)!=-1?jp_onclass:jp_offclass;
78                                var jp_strAlt=jp_img.getAttribute('title');
79                                if (jp_strAlt==null) { jp_strAlt=''; }
80                                if (jp_img.className.indexOf(jp_offclass)!=-1) {
81                                        var jp_re = new RegExp (jp_strDeplier, 'gi');
82                                        var jp_strAltNew = jp_strAlt.replace(jp_re,jp_strReplier);
83                                }else{
84                                        var jp_re = new RegExp (jp_strReplier, 'gi');
85                                        var jp_strAltNew = jp_strAlt.replace(jp_re,jp_strDeplier);
86                                }
87                                jp_img.setAttribute('title',jp_strAltNew);
88                                jp_img.setAttribute('alt',jp_strAltNew);
89                                adjustLayout();
90                                return true;
91                        } else {
92                                return false;
93                        }
94                }
95        }                       
96}
97function inputKeyHandler(ev) {
98        ev = ev || event;
99        if (jp_ex(ev.target || ev.srcElement,ev.keyCode || ev.which)) {
100                ev.cancelBubble= true;
101                if (ev.stopPropagation) ev.stopPropagation();
102        }
103}
104
105
106function adjustLayout() {
107        /* Remettre la taille à auto pour trouver l'eventuelle nouvelle hauteur !*/
108        $("div.equilibre").css({'height': 'auto'});
109        /*******************************************CAS N°1********************************************************************/
110        /*Nav, Contenu et Extra alignes top (Layout 1 a 22)*/
111        var tnotstackable =0;
112        tnotstackable = parseInt($("div.notstackable")[0].offsetTop);
113        tlaststackable = parseInt($("div.laststackable")[0].offsetTop);
114        if (tnotstackable==tlaststackable) {
115                        var h=0;
116                        $("div.equilibre").each(function(){ h=Math.max(h,this.offsetHeight); }).css({'height': h+'px'});
117                        $("div.equilibre").css({'height': parseInt($("div.equilibre")[0].offsetHeight)});
118                        /*alert("Cas 1");*/
119        }
120        else {
121/*********************************************CAS 2*********************************************************************/
122        /* Navigation et Extra sont empiles (Layout 23 a 26 et 33 et 34)*/
123                leftlaststackable = parseInt($("div.laststackable")[0].offsetLeft);
124                leftnavigation = parseInt($("div#navigation")[0].offsetLeft);
125                largeurnavigation = parseInt($("div#navigation")[0].offsetWidth);
126                largeurextra = parseInt($("div.laststackable")[0].offsetWidth);
127                if ((leftlaststackable == leftnavigation) && (largeurextra == largeurnavigation)) {
128                        var hstacked = 0;
129                        $("div.stackable").each(function(){ hstacked+=parseInt(this.offsetHeight); });
130                        var hnotstackable = 0;
131                        hnotstackable = parseInt($("div.notstackable")[0].offsetHeight);
132                        if (hnotstackable>hstacked) {
133                                $("div.laststackable").css({'height': hnotstackable + parseInt($("div.laststackable")[0].offsetHeight) - hstacked+'px'});
134                                $("div.notstackable").css({'height': hnotstackable+'px'});
135                                /*alert("Cas 2");*/
136                        }
137                        else {
138                                $("div.notstackable").css({'height': hstacked+'px'});
139                        };
140                }
141                else {
142/**********************************************CAS 3*******************************************************************/
143        /* Navigation et Extra meme Top et differents de Contenu (Layout 27-28-39-40)*/
144                        tlaststackable = parseInt($("div.laststackable")[0].offsetTop);
145                        tstackable = parseInt($("div.stackable")[0].offsetTop);
146                        if (tstackable==tlaststackable){
147                                $("div.stackable").css({'height': parseInt($("div.stackable")[0].offsetHeight)});
148                                var h=0;
149                                $("div.stackable").each(function(){ h=Math.max(h,this.offsetHeight); }).css({'height': h+'px'});
150                                /*alert("Cas 3");*/
151                        }
152                        else {
153/**********************************************CAS 4*******************************************************************/
154        /* Navigation et Contenu meme alignement Top (Layout 35 et 36)*/
155                                largeurcontenu = parseInt($("div.notstackable")[0].offsetWidth);
156                                if (largeurcontenu==largeurextra) {
157                                        hstackable = (hauteurcontenu = parseInt($("div.notstackable")[0].offsetHeight)) + (hauteurext = parseInt($("div.laststackable")[0].offsetHeight));
158                                        hnavigation = parseInt($("div#navigation")[0].offsetHeight);
159                                        if(hstackable < hnavigation) {
160                                                $("div.notstackable").css({'height': (hnavigation - hauteurext)+'px'});
161                                        }
162                                        else {
163                                                $("div#navigation").css({'height': hstackable+'px'});
164                                        }
165                                        /*alert("Cas 4");*/
166                                }
167                                else    {
168/**********************************************CAS 5*******************************************************************/
169        /* Navigation et Contenu meme alignement Top (Layout 29 a 32 et 37 et 38)*/
170                                        hstackable = (hauteurcontenu = parseInt($("div.notstackable")[0].offsetHeight));
171                                        hnavigation = parseInt($("div#navigation")[0].offsetHeight);
172                                        if(hstackable > hnavigation) {
173                                                $("div#navigation").css({'height': hstackable+'px'});
174                                        }
175                                        else {
176                                        $("div.notstackable").css({'height': hnavigation+'px'});
177                                        }
178                                        /*alert("Cas 5");*/
179                                }
180                        }
181                }
182        }
183}
184;
185/* FUNCTIONS ON ALL PAGES */
186function myInitPages() {
187    jQuery('body').addClass('hasJS');
188        [(#CONFIG{soyezcreateurs_layout/menuderoulant,replie}|=={replie}|oui)jp_expinit();]
189        // Surligner l'evenement en cours
190        var id_anchor  = location.hash.substr(1); //Get the word after the hash from the url
191        if (id_anchor) $('#'+id_anchor).parent().addClass('highlight_anchor'); // ajoute la classe highlight_anchor à l'element autour de l'ancre
192        if (CanceladjustLayout != true) {
193                adjustLayout();
194                $("body").resize(
195                        function () {
196                        adjustLayout();
197                        }
198                );
199                if (CancelMonitorTextSize != true) {
200                        $.em.element = $('<div />').css({ left:     '-100em',
201                                                                                position: 'absolute',
202                                                                                width:    '100em' })
203                                                                 .prependTo('div.texte')[0];
204                        $('div.texte').bind('emchange', function(e, cur, prev) { adjustLayout(); });
205                }
206                onAjaxLoad(adjustLayout); // Merci Marcimat sur IRC !
207        }
208;
209[(#CONFIG{soyezcreateurs/native_tooltips}|=={on}|non)
210        $(function() {
211                $('a, input, select, img, button, h2, h3, dd, acronym, abbr, area').tooltip({
212                        track: false,
213                        delay: 0,
214                        showURL: false,
215                        showBody: " - ",
216                        fade: 250
217                });
218        });
219]
220        $(".escapelinks a").focus( function() { $(".escapelinks").removeClass("escapelinks"); } );
221
222}
223;
224/* BLACK TRANSPARENT BACKGROUNDS */
225function mySpecialBackgrounds(elt,correcAmount,correcAmount2) {
226        jQuery(elt).each(function() {
227                var targetHeight = jQuery(this).parent().height();
228                var targetWidth = jQuery(this).parent().width();
229                jQuery(this).css({'height':targetHeight+correcAmount,'width':targetWidth+correcAmount2,'opacity':.5});
230        });
231}
232;
233/* HOME SPECIAL FEATURE */
234function myHomeSpecialFeature(container,item,decoImg,decoSpan) {
235        jQuery('#'+item+'1').addClass('active'+item);
236        mySpecialBackgrounds('.'+item+' .'+decoSpan,14,10);
237        jQuery('#'+item+'1 .'+decoSpan).css("opacity", 1);
238        jQuery('.'+item+' .'+decoImg).hide();
239        jQuery('#'+item+'1 .'+decoImg).show();
240
241        var x = 1;
242        var maxX = jQuery('.'+item).size();
243        function myAnimate(x,maxX) {
244                if (x > maxX) { x = 1; }
245                jQuery('.'+item).removeClass('active'+item);
246                jQuery('#'+item+x).addClass('active'+item);
247                jQuery('.'+item+' .'+decoSpan).animate({"opacity": .5}, { queue:false, duration:800 });
248                jQuery('#'+item+x+' .'+decoSpan).animate({"opacity": 1},800);
249                jQuery('.'+item+' .'+decoImg).fadeOut(800);
250                jQuery('#'+item+x+' .'+decoImg).fadeIn(800);
251                timer = setTimeout(function() {
252                        if (x < maxX) { x = x+1; myAnimate(x,maxX); }
253                        else if (x = maxX) { x = 1; myAnimate(x,maxX); }
254                } , 5000 );
255        }
256        myAnimate(x,maxX);
257
258        jQuery('.'+item).each(function() {
259                jQuery(this).hover(
260                        function() {
261                                clearTimeout(timer);
262                                currentItem = jQuery('.'+item).index(this)+1;
263                                jQuery('.'+item).removeClass('active'+item);
264                                jQuery(this).addClass('active'+item);
265                                jQuery('.'+item+' .'+decoSpan+':not("#'+item+currentItem+' .'+decoSpan+'")').css("opacity", .5);
266                                jQuery(this).children().children('.'+decoSpan).animate({"opacity": 1},400);
267                                jQuery('.'+item+' .'+decoImg+':not("#'+item+currentItem+' .'+decoImg+'")').fadeOut(400);
268                                jQuery(this).children('.'+decoImg).fadeIn(400);
269                        },
270                        function() {
271                                clearTimeout(timer);
272                                currentItem = jQuery('.'+item).index(this)+2;
273                                jQuery(this).removeClass('active'+item);
274                                jQuery(this).children().children('.'+decoSpan).animate({"opacity": .5},400);
275                                timer = setTimeout(function() { myAnimate(currentItem,maxX); } , 1000 );
276                        }
277                );
278        });
279}
280;
281
282/* HOME CYCLE */
283function homeCarousel(elt) {
284        /* carousels internes */
285        var elemNbr = jQuery(elt+' > li').size();
286        var myCounter = 1;
287        function onAfter(curr,next,opts) {
288                if (opts.currSlide+1 == opts.slideCount) {
289                        if (myCounter < elemNbr) {
290                                myCounter = myCounter+1;
291                        } else if (myCounter == elemNbr) {
292                                myCounter = 1;
293                        }
294
295                        function reloadCarousels() {
296                                jQuery('.smallCarousel').stop(true,true).fadeOut(750);
297                                jQuery('#sc'+myCounter+'b').stop(true,true).fadeIn(750).children('ul').cycle({
298                                    //fx: 'scrollHorz', // pour transition latérale
299                                    fx: 'fade',
300                                    speed: 1500,
301                                    timeout: 4000,
302                                        pause: true,
303                                        startingSlide: 0,
304                                        after: onAfter
305                                });
306                        jQuery('.mainCarousel').removeClass('active');
307                        if (myCounter == 1) {
308                                jQuery('.mainCarousel:first').addClass('active');
309                        } else {
310                                        jQuery('.mainCarousel').eq(myCounter-1).addClass('active');
311                        }
312                }
313                        jQuery('.smallCarousel').children('ul').cycle('stop');
314                        var t2=setTimeout(reloadCarousels,3000);
315                } else {
316                        clearTimeout(t2);
317                }
318                //alert(myCounter);
319        }
320        function onAfter2(curr,next,opts) {
321                //
322        }
323        jQuery('.smallCarousel ul').cycle({
324            //fx: 'scrollHorz', // pour transition latérale
325            fx: 'fade',
326            speed: 1500,
327            timeout: 4000,
328                pause: true,
329                startingSlide: 0,
330                after: onAfter
331        });
332        jQuery('.smallCarousel').hide().children('ul').cycle('pause');
333        jQuery('#sc1b').show().children('ul').cycle('resume');
334        /* faux carousel principal */
335        var whatToShow = '';
336        jQuery('.mainCarousel:first').addClass('active');
337        jQuery('.mainCarousel').live('mouseenter focus', function() {
338                jQuery('.mainCarousel').removeClass('hover active');
339                jQuery(this).addClass('hover active');
340                whatToShow = jQuery(this).children('h2').children('a').attr('id');
341                jQuery('.smallCarousel').stop(true,true).fadeOut().children('ul').cycle('stop');
342                // 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
343                jQuery('#'+whatToShow+'b').stop(true,true).fadeIn().children('ul').cycle({fx: 'fade',speed: 1500,timeout: 4000,pause: true,startingSlide: 0,after: onAfter2});
344        }).live('mouseleave blur', function() {
345                whatToShow = jQuery(this).children('h2').children('a').attr('id');
346                jQuery(this).removeClass('hover');
347                // 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
348                jQuery('.smallCarousel').stop(true,true).fadeOut().children('ul').cycle('stop');
349                jQuery('#'+whatToShow+'b').stop(true,true).fadeIn().children('ul').cycle({fx: 'fade',speed: 1500,timeout: 4000,pause: true,startingSlide: 0,after: onAfter});
350                myCounter = jQuery(this).index()+1;
351        });
352}
353
354$(document).ready(function() {
355        myInitPages();
356        /* HOME SPECIAL FEATURE */
357        if (jQuery('#homeSpecialFeature').size() > 0) { initMyHomeSpecialFeature = myHomeSpecialFeature("#homeSpecialFeature",'hSFItem','hSFDecoImg','hSFDecoSpan'); }
358        if (jQuery('#arretSurImg .mainCarousels').size() > 0) { homeCarousel('.mainCarousels'); }
359});
Note: See TracBrowser for help on using the repository browser.