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.