PageSourceSearch

https://waylandunion.org/js/core/FloatyBadge.js?v=7.265.42.1

js waylandunion.org collected 2026-09-24 10:16:43 UTC 13,273 bytes, 315 lines download raw bytes

1function FloatyBadgeFactory()
2{
3    return undefined;
4}
5
6///////////////////////////////////////////////////////////////////////////////
7// FloatyBadgeFactory
8///////////////////////////////////////////////////////////////////////////////
9
10(function($)
11{
12    FloatyBadgeFactory.CreateBadge = function(aParameters)
13    {
14        var lDefaults, lOptions;
15
16        lDefaults =
17            {
18                BadgeIdentifier : null
19                ,PrependSelector : null
20                ,AppendSelector : null
21                ,BadgeTop: 0
22                ,ImagePath: null
23                ,ImageWidth: null
24                ,ImageHeight: null
25                ,StartOpened: true
26                ,CookieIdBase: 'hideFloatyBadge'
27                ,BadgeLinerClass: 'fbcms_badgeLiner'
28                ,ItemWrapperClass: 'badgeItemWrapper'
29                ,BadgeMinimizedClass: 'floatyBadgeMinimized'
30                ,ScreenReaderText: 'Badge'
31                ,CloserImagePath: null
32                ,CloserClass: 'badgeCloser'
33                ,CloserAltText: 'Toggle badge'
34                ,LinkClass: 'badgeLink'
35                ,LinkUrl: '#badgeUrl'
36                ,LinkText: 'Badge'
37                ,LinkOpenInNew: true
38                ,BadgePositionHorz: 'left'
39                ,BadgePositionVert: 'top'
40            };
41
42        lOptions = $.extend( lDefaults, aParameters );
43        
44        if (FBUtilities.IsParameterUndefinedOrEmpty(lOptions.BadgeIdentifier))
45        {
46            return;
47        }
48        if (FBUtilities.IsParameterUndefinedOrEmpty(lOptions.PrependSelector)
49            && FBUtilities.IsParameterUndefinedOrEmpty(lOptions.AppendSelector))
50        {
51            return;
52        }
53        if (FBUtilities.IsParameterUndefinedOrEmpty(lOptions.StartOpened)
54            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.CookieIdBase)
55            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.BadgeLinerClass)
56            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.ItemWrapperClass)
57            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.BadgeMinimizedClass)
58            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.ScreenReaderText)
59            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.CloserClass)
60            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.CloserAltText)
61            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.LinkClass)
62            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.LinkUrl)
63            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.LinkText)
64            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.ImagePath)
65            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.ImageWidth)
66            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.ImageHeight)
67            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.CloserImagePath)
68            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.BadgePositionHorz)
69            || FBUtilities.IsParameterUndefinedOrEmpty(lOptions.BadgePositionVert))
70        {
71            return;
72        }
73        
74        var lPrependElement = $(lOptions.PrependSelector);
75        var lAppendElement = $(lOptions.AppendSelector);
76
77        if (lPrependElement.length != 1
78            && lAppendElement.length != 1)
79        {
80            return;
81        }
82        
83        var lFloatyElement = $('<div id="' + lOptions.BadgeIdentifier + '" class="fbcms_floatybadge"></div>');
84        
85        var lLinkTarget = lOptions.LinkOpenInNew ? "_blank" : "_self";
86        
87        var lLinerElement = $('<div class="' + lOptions.BadgeLinerClass + ' ' + lOptions.BadgeMinimizedClass + '"></div>');
88        lLinerElement.append('<h2><span class="screen-reader-text">' + lOptions.ScreenReaderText + '</span></h2>');
89        lLinerElement.append('<a class="' + lOptions.CloserClass + '" tabindex="0"><img src="/img/spacer.gif" alt="' + lOptions.CloserAltText + '" /></a>');
90        lLinerElement.append('<span class="' + lOptions.ItemWrapperClass + '">' + 
91            '<a class="' + lOptions.LinkClass + '" href="' + lOptions.LinkUrl + '" target="' + lLinkTarget + '" tabindex="0" aria-label="' + lOptions.LinkText 
91+ ' (opens in new window)">' + 
92                '<span class="screen-reader-text">' + lOptions.LinkText + '</span>' + 
93            '</a>' + 
94        '</span>');
95        
96        lFloatyElement.css(lOptions.BadgePositionVert, lOptions.BadgeTop + 'px');
97        lFloatyElement.append(lLinerElement);
98        
99        if (lPrependElement.length == 1)
100        {
101            lPrependElement.prepend(lFloatyElement);
102        }
103        else
104        {
105            lAppendElement.append(lFloatyElement);
106        }
107
108        $('#' + lOptions.BadgeIdentifier).FloatyBadge(
109            {
110                startOpened: lOptions.StartOpened,
111                cookieIdBase: lOptions.CookieIdBase + '_' + lOptions.BadgeIdentifier,
112                linerClass: lOptions.BadgeLinerClass,
113                closerClass: lOptions.CloserClass,
114                itemWrapperClass: lOptions.ItemWrapperClass,
115                linkClass: lOptions.LinkClass,
116                badgeMinimizedClass: lOptions.BadgeMinimizedClass,
117                badgeImagePath: lOptions.ImagePath,
118                badgeWidthMax: lOptions.ImageWidth,
119                badgeHeightMax: lOptions.ImageHeight,
120                closerImagePath: lOptions.CloserImagePath,
121                badgeHorzPosition: lOptions.BadgePositionHorz,
122                badgeVertPosition: lOptions.BadgePositionVert
123            }
124        );
125    };//end CreateBadge
126    
127}( jQuery ) );
128    
129    
130/*global console, jQuery, document */
131( function ( $ )
132{
133    $.widget( "ui.FloatyBadge",
134    {
135        options:
136        {
137            startOpened: true,
138            cookieIdBase: 'hideFloatyBadge',
139            linerClass: 'fbcms_badgeLiner',
140            closerClass: 'badgeCloser',
141            itemWrapperClass: 'badgeItemWrapper',
142            linkClass: 'badgeLink',
143            badgeMinimizedClass: 'floatyBadgeMinimized',
144            badgeImagePath: null,
145            badgeWidthMax: null,
146            badgeHeightMax: null,
147            badgeOpacityMax: 1.0,
148            badgeWidthMin: 0,
149            badgeHeightMin: 0,
150            badgeOpacityMin: 0.4,
151            badgeTransitionTime: 1000,
152            badgeHorzPosition: 'left',
153            badgeVertPosition: 'top',
154            closerImagePath: null
155        },
156
157        _destroy: function ()
158        {
159            return undefined;
160        },
161
162        _init: function ()
163        {
164            return undefined;
165        },
166
167        _create: function ()
168        {
169            var self, jElement;
170            self = this;
171            jElement = $( self.element );
172                        
173            var lLinerElement = jElement.find( '.' + self.options.linerClass );
174            lLinerElement.css(self.options.badgeHorzPosition, '0');
175            lLinerElement.css(self.options.badgeVertPosition, '0');
176            lLinerElement.css('width', self.options.badgeWidthMax + 35 + 'px');
177            lLinerElement.css('height', self.options.badgeHeightMax + 35 + 'px');
178    
179            var lItemWrapperElement = jElement.find( '.' + self.options.itemWrapperClass );
180            lItemWrapperElement.css(self.options.badgeHorzPosition, '13px');
181            lItemWrapperElement.css(self.options.badgeVertPosition, '13px');
182            lItemWrapperElement.css('width', self.options.badgeHeightMax + 'px'); //possibly minus 20?
183            lItemWrapperElement.css('background-color', '#ffffff');
184
185            var lLinkElement = jElement.find( '.' + self.options.linkClass );
186            lLinkElement.css('width', self.options.badgeWidthMax + 'px');
187            lLinkElement.css('height', self.options.badgeHeightMax + 'px');
188            lLinkElement.css(self.options.badgeHorzPosition, '0px');
189            lLinkElement.css('background-color', '#ffffff');
190            lLinkElement.css('background-image', 'url(' + self.options.badgeImagePath + ')');
191            lLinkElement.css('background-size', self.options.badgeWidthMax + 'px ' + self.options.badgeHeightMax + 'px');
192
193            var lCloserElement = jElement.find( '.' + self.options.closerClass );
194            lCloserElement.css(self.options.badgeHorzPosition, '3px');
195            jElement.find( '.' + self.options.closerClass + ' img' ).css('background-image', 'url(' + self.options.closerImagePath + ')');
196            
197            if (self._getCookie() === null && self.options.startOpened )
198            {
199                lItemWrapperElement.hide();
200                lLinerElement.removeClass( self.options.badgeMinimizedClass );
201                self.showBudgetButton();
202            }
203
204            lCloserElement.click(                              
205                function ( e )
206                {
207                    self.showHideBadgeButton();
208                }
209            ).keypress( function ( event )
210            {
211                var keycode = parseInt( event.keyCode ? event.keyCode : event.which );
212                if ( keycode === 13)
213                {
214                    self.showHideBadgeButton();
215                }
216            } );
217        },
218
219        showHideBadgeButton: function()
220        {
221            var self, jElement;
222            self = this;
223            jElement = $( self.element );
224            if ( jElement.find( '.' + self.options.linerClass ).hasClass(self.options.badgeMinimizedClass) )
225            {
226                self.showBudgetButton();
227            }
228            else
229            {
230                self.hideBadgeButton();
231            }
232        },
233
234        hideBadgeButton: function ()
235        {
236            var self, jElement;
237            self = this;
238            jElement = $( self.element );
239
240            jElement.find( '.' + self.options.linerClass ).removeClass( self.options.badgeMinimizedClass );
241            jElement.find( '.' + self.options.itemWrapperClass ).animate( {
242                width: self.options.badgeWidthMin,
243                height: self.options.badgeHeightMin,
244                opacity: self.options.badgeOpacityMin
245            }, {
246                duration: self.options.badgeTransitionTime,
247                complete: function ()
248                {
249                    jElement.find( '.' + self.options.itemWrapperClass ).hide();
250                    jElement.find( '.' + self.options.linerClass ).addClass( self.options.badgeMinimizedClass );
251                    self._setCookie();
252                    jElement.find( '.' + self.options.closerClass + ' img' ).css('background-image', 'url(' + self.options.closerImagePath + ')');
253                } // end complete function
254            }
255            ); // end animate
256        },
257
258        showBudgetButton: function ()
259        {
260            var self, jElement;
261            self = this;
262            jElement = $( self.element );
263
264            jElement.find( '.' + self.options.linerClass ).removeClass( self.options.badgeMinimizedClass );
265            jElement.find( '.' + self.options.itemWrapperClass )
266                    .width( self.options.badgeWidthMin )
267                        .height( self.options.badgeHeightMin ).show().animate( {
268                width: self.options.badgeWidthMax,
269                height: self.options.badgeHeightMax,
270                opacity: self.options.badgeOpacityMax
271            }, {
272                duration: self.options.badgeTransitionTime,
273                complete: function ()
274                {
275                    self._clearCookie();
276                } // end complete function
277            }
278            ); // end animate
279            jElement.find( '.' + self.options.closerClass + ' img' ).css('background-image', '');
280        },
281
282        _getCookie: function ()
283        {
284            let name = this.options.cookieIdBase;            
285            if (document.cookie && document.cookie !== '')
286            {
287                let cookies = document.cookie.split(';');
288                for (let i = 0; i < cookies.length; i++)
289                {
290                    let cookie = $.trim(cookies[i]);
291                    // Does this cookie string begin with the name we want?
292                    if (cookie.substring(0, name.length + 1) === (name + '='))
293                    {
294                        return decodeURIComponent(cookie.substring(name.length + 1));
295                    }
296                }
297            }
298            return null;
299        },
300
301        _clearCookie: function ()
302        {
303            let date = new Date();
304            date.setTime(date.getTime() + (-1 * 24 * 60 * 60 * 1000));
305            document.cookie = `${this.options.cookieIdBase}=; SameSite=Strict; Secure; Expires=${date.toUTCString()}`;
306        },
307
308        _setCookie: function ()
309        {
310            let date = new Date();
311            date.setTime(date.getTime() + (423 * 24 * 60 * 60 * 1000));
312            document.cookie = `${this.options.cookieIdBase}=Hidden; SameSite=Strict; Secure; Expires=${date.toUTCString()}`;
313        }
314    } );
315}(jQuery));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.