1212 */
1313
1414( function ( $ ) {
15- $ . fn . superfish = function ( options ) {
16- var sf = $ . fn . superfish ,
17- c = sf . c ,
18- $arrow = $ ( [ '<span class="' , c . arrowClass , '"> »</span>' ] . join ( '' ) ) ,
19- over = function ( ) {
20- var $$ = $ ( this ) , menu = getMenu ( $$ ) ;
21- clearTimeout ( menu . sfTimer ) ;
22- $$ . showSuperfishUl ( ) . siblings ( ) . hideSuperfishUl ( ) ;
23- } ,
24- out = function ( ) {
25- var $$ = $ ( this ) , menu = getMenu ( $$ ) , o = sf . op ;
26- clearTimeout ( menu . sfTimer ) ;
27- menu . sfTimer = setTimeout ( function ( ) {
28- if ( $$ . children ( '.sf-clicked' ) . length == 0 ) {
29- o . retainPath = ( $ . inArray ( $$ [ 0 ] , o . $path ) > - 1 ) ;
30- $$ . hideSuperfishUl ( ) ;
31- if ( o . $path . length && $$ . parents ( [ 'li.' , o . hoverClass ] . join ( '' ) ) . length < 1 ) {
32- over . call ( o . $path ) ;
33- }
15+ $ . fn . superfish = function ( superfish_options ) {
16+ var cssClasses = sf . cssClasses ;
17+ var $arrow = $ ( [ '<span class="' , cssClasses . arrowClass , '"> »</span>' ] . join ( '' ) ) ;
18+
19+ var over = function ( ) {
20+ var $$ = $ ( this ) ;
21+ var menu = getMenu ( $$ ) ;
22+ clearTimeout ( menu . sfTimer ) ;
23+ $$ . showSuperfishUl ( ) . siblings ( ) . hideSuperfishUl ( ) ;
24+ } ;
25+
26+ var out = function ( ) {
27+ var $$ = $ ( this ) ;
28+ var menu = getMenu ( $$ ) ;
29+ var options = sf . options ;
30+
31+ clearTimeout ( menu . sfTimer ) ;
32+ menu . sfTimer = setTimeout ( function ( ) {
33+ if ( $$ . children ( '.sf-clicked' ) . length == 0 ) {
34+ options . retainPath = ( $ . inArray ( $$ [ 0 ] , options . $path ) > - 1 ) ;
35+ $$ . hideSuperfishUl ( ) ;
36+ if ( options . $path . length && $$ . parents ( [ 'li.' , options . hoverClass ] . join ( '' ) ) . length < 1 ) {
37+ over . call ( options . $path ) ;
3438 }
35- } , o . delay ) ;
36- } ,
37- getMenu = function ( $menu ) {
38- var menu = $menu . parents ( [ 'ul.' , c . menuClass , ':first' ] . join ( '' ) ) [ 0 ] ;
39- sf . op = sf . o [ menu . serial ] ;
40- return menu ;
41- } ,
42- addArrow = function ( $a ) { $a . addClass ( c . anchorClass ) . append ( $arrow . clone ( ) ) ; } ;
39+ }
40+ } , options . delay ) ;
41+ } ;
42+
43+ var getMenu = function ( $menu ) {
44+ var menu = $menu . parents ( [ 'ul.' , cssClasses . menuClass , ':first' ] . join ( '' ) ) [ 0 ] ;
45+ sf . options = sf . optionsList [ menu . serial ] ;
46+ return menu ;
47+ } ;
48+
49+ var addArrow = function ( $a ) {
50+ $a . addClass ( cssClasses . anchorClass ) . append ( $arrow . clone ( ) ) ;
51+ } ;
4352
4453 return this . each ( function ( ) {
45- var s = this . serial = sf . o . length ;
46- var o = $ . extend ( { } , sf . defaults , options ) ;
47- o . $path = $ ( 'li.' + o . pathClass , this ) . slice ( 0 , o . pathLevels ) ;
48- var p = o . $path ;
49- for ( var l = 0 ; l < p . length ; l ++ ) {
50- p . eq ( l ) . addClass ( [ o . hoverClass , c . bcClass ] . join ( ' ' ) ) . filter ( 'li:has(ul)' ) . removeClass ( o . pathClass ) ;
54+ var s = this . serial = sf . optionsList . length ;
55+ var options = $ . extend ( { } , sf . defaults , superfish_options ) ;
56+ options . $path = $ ( 'li.' + options . pathClass , this ) . slice ( 0 , options . pathLevels ) ;
57+ var path = options . $path ;
58+ for ( var l = 0 ; l < path . length ; l ++ ) {
59+ path . eq ( l ) . addClass ( [ options . hoverClass , cssClasses . bcClass ] . join ( ' ' ) ) . filter ( 'li:has(ul)' ) . removeClass ( options . pathClass ) ;
5160 }
52- sf . o [ s ] = sf . op = o ;
61+ sf . optionsList [ s ] = sf . options = options ;
5362
54- $ ( 'li:has(ul)' , this ) [ ( $ . fn . hoverIntent && ! o . disableHI ) ? 'hoverIntent' : 'hover' ] ( over , out ) . each ( function ( ) {
55- if ( o . autoArrows ) addArrow ( $ ( this ) . children ( 'a:first-child, span.nolink:first-child' ) ) ;
63+ $ ( 'li:has(ul)' , this ) [ ( $ . fn . hoverIntent && ! options . disableHI ) ? 'hoverIntent' : 'hover' ] ( over , out ) . each ( function ( ) {
64+ if ( options . autoArrows ) {
65+ addArrow ( $ ( this ) . children ( 'a:first-child, span.nolink:first-child' ) ) ;
66+ }
5667 } )
57- . not ( '.' + c . bcClass ) . hideSuperfishUl ( ) ;
68+ . not ( '.' + cssClasses . bcClass ) . hideSuperfishUl ( ) ;
5869
5970 var $a = $ ( 'a, span.nolink' , this ) ;
6071 $a . each ( function ( i ) {
6172 var $li = $a . eq ( i ) . parents ( 'li' ) ;
6273 $a . eq ( i ) . focus ( function ( ) { over . call ( $li ) ; } ) . blur ( function ( ) { out . call ( $li ) ; } ) ;
6374 } ) ;
64- o . onInit . call ( this ) ;
75+ options . onInit . call ( this ) ;
6576
6677 } ) . each ( function ( ) {
67- var menuClasses = [ c . menuClass ] ;
68- if ( sf . op . dropShadows ) {
69- menuClasses . push ( c . shadowClass ) ;
78+ var menuClasses = [ cssClasses . menuClass ] ;
79+ if ( sf . options . dropShadows ) {
80+ menuClasses . push ( cssClasses . shadowClass ) ;
7081 }
7182 $ ( this ) . addClass ( menuClasses . join ( ' ' ) ) ;
7283 } ) ;
7384 } ;
7485
7586 var sf = $ . fn . superfish ;
76- sf . o = [ ] ;
77- sf . op = { } ;
87+ sf . optionsList = [ ] ;
88+ sf . options = { } ;
7889
79- sf . c = {
90+ sf . cssClasses = {
8091 bcClass : 'sf-breadcrumb' ,
8192 menuClass : 'sf-js-enabled' ,
8293 anchorClass : 'sf-with-ul' ,
8394 arrowClass : 'sf-sub-indicator' ,
8495 shadowClass : 'sf-shadow'
8596 } ;
97+
8698 sf . defaults = {
8799 hoverClass : 'sfHover' ,
88100 pathClass : 'overideThisToUse' ,
98110 onShow : function ( ) { } ,
99111 onHide : function ( ) { }
100112 } ;
113+
101114 $ . fn . extend ( {
102115 hideSuperfishUl : function ( ) {
103- var o = sf . op ;
104- var not = ( o . retainPath === true ) ? o . $path : '' ;
105- o . retainPath = false ;
106- var $ul = $ ( [ 'li.' , o . hoverClass ] . join ( '' ) , this ) . add ( this ) . not ( not ) . removeClass ( o . hoverClass )
116+ var options = sf . options ;
117+ var not = options . retainPath === true ? options . $path : '' ;
118+ options . retainPath = false ;
119+ var $ul = $ ( [ 'li.' , options . hoverClass ] . join ( '' ) , this ) . add ( this ) . not ( not ) . removeClass ( options . hoverClass )
107120 . children ( 'ul' ) . addClass ( 'sf-hidden' ) ;
108- o . onHide . call ( $ul ) ;
121+ options . onHide . call ( $ul ) ;
109122 return this ;
110123 } ,
111124 showSuperfishUl : function ( ) {
112- var o = sf . op ,
113- sh = sf . c . shadowClass + '-off' ,
114- $ul = this . addClass ( o . hoverClass ) . children ( 'ul.sf-hidden' ) . hide ( ) . removeClass ( 'sf-hidden' ) ;
115- o . onBeforeShow . call ( $ul ) ;
116- $ul . animate ( o . animation , o . speed , function ( ) { o . onShow . call ( $ul ) ; } ) ;
125+ this . removeClass ( 'sf-hidden' ) ;
126+ var options = sf . options ;
127+ var $ul = this . addClass ( options . hoverClass ) . children ( 'ul.sf-hidden' ) . hide ( ) . removeClass ( 'sf-hidden' ) ;
128+ options . onBeforeShow . call ( $ul ) ;
129+ $ul . animate ( options . animation , options . speed , function ( ) { options . onShow . call ( $ul ) ; } ) ;
117130 return this ;
118131 }
119132 } ) ;
120- } ) ( jQuery ) ;
133+
134+ } ) ( jQuery ) ;
0 commit comments