1var EWRporta = window.EWRporta || {}; 2 3!function($, window, document) 4{ 5 // ################################## --- ########################################### 6 7 EWRporta.Upload = XF.Element.newHandler( 8 { 9 $upload: null, 10 11 init: function() 12 { 13 $upload = this.$target.find('input[name=upload]'); 14 $upload.on('change', $upload, $.proxy(this, 'filecheck')); 15 }, 16 17 filecheck: function() 18 { 19 if (XF.config.uploadMaxFilesize > 0 && $upload[0].files[0].size > XF.config.uploadMaxFilesize) 20 { 21 XF.alert(XF.phrase('file_too_large_to_upload')); 22 $upload.val(''); 23 } 24 }, 25 }); 26 27 // ################################## --- ########################################### 28 29 EWRporta.Masonry = XF.Element.newHandler( 30 { 31 init: function() 32 { 33 var $grid = this.$target.masonry( 34 { 35 itemSelector: '.porta-article-item', 36 }); 37 38 $grid.imagesLoaded().progress( function() 39 { 40 $grid.masonry('layout'); 41 }); 42 43 if (window.twttr) 44 { 45 twttr.ready(XF.proxy(function(twttr) 46 { 47 twttr.events.bind('loaded', function (event) 48 { 49 setTimeout(function() 50 { 51 $grid.masonry('layout'); 52 }, 1000); 53 }); 54 55 }, this)); 56 } 57 }, 58 }); 59 60 // ################################## --- ########################################### 61 62 EWRporta.Infinite = XF.Element.newHandler( 63 { 64 init: function() 65 { 66 $grid = this.$target; 67 68 var $scroller = $grid.infiniteScroll({ 69 outlayer: $grid.data('masonry'), 70 button: '.porta-article-button', 71 append: '.porta-article-item', 72 hideNav: '.porta-article-pager', 73 path: '.porta-article-pager .pageNav-jump--next', 74 status: '.porta-article-status', 75 history: $grid.data('history') ? 'replace' : false, 76 }); 77 78 $scroller.on('last.infiniteScroll', function() 79 { 80 $('.porta-article-status').hide(); 81 $('.porta-article-loader').hide(); 82 }); 83 84 if ($grid.data('click')) 85 { 86 if ($grid.data('after')) 87 { 88 $scroller.on('load.infiniteScroll', function onPageLoad() 89 { 90 if ($scroller.data('infiniteScroll').loadCount == $grid.data('after')) 91 { 92 $('.porta-article-loader').show(); 93 $scroller.infiniteScroll('option', { loadOnScroll: false }); 94 $scroller.off('load.infiniteScroll', onPageLoad); 95 } 96 }); 97 } 98 else 99 { 100 $('.porta-article-loader').show(); 101 $scroller.infiniteScroll('option', { loadOnScroll: false }); 102 } 103 } 104 }, 105 }); 106 107 // ################################## --- ########################################### 108 109 EWRporta.Features = XF.Element.newHandler( 110 { 111 init: function() 112 { 113 var $slider = this.$target, 114 players = [], 115 ytDeferred = $.Deferred(); 116 117 if ($slider.data('relocate')) 118 { 119 $slider.detach().insertBefore($slider.data('relocate')); 120 } 121 122 $.getScript('https://www.youtube.com/player_api'); 123 window.onYouTubeIframeAPIReady = function() 124 { 125 ytDeferred.resolve(window.YT); 126 }; 127 128 ytDeferred.done(function() 129 { 130 $slider.find('.porta-features-media').each(function() 131 { 132 var slide = $(this).data('slide'); 133 var index = 'youTube' + slide; 134 var $elem = $slider.find('.feature-' + slide); 135 136 $elem.addClass('has-media'); 137 138 players[index] = new YT.Player(index, 139 { 140 videoId: $(this).data('media'), 141 width: "100%", 142 height: "100%", 143 playerVars: 144 { 145 playlist: $(this).data('media'), 146 enablejsapi: 1, 147 autoplay: 0, 148 controls: 0, 149 showinfo: 0, 150 disablekb: 1, 151 modestbranding: 1, 152 cc_load_policy: 0, 153 iv_load_policy: 3, 154 loop: 1, 155 rel: 0, 156 fs: 0 157 }, 158 events: 159 { 160 onReady: function(e) 161 { 162 e.target.mute(); 163 164 $elem.find('.bx-unmute').click(function(v) 165 { 166 v.preventDefault(); 167 e.target.unMute(); 168 bxSlider.stopAuto(); 169 170 $elem.find('.bx-unmute').addClass('active'); 171 $elem.find('.bx-mute').removeClass('active'); 172 }); 173 $elem.find('.bx-mute').click(function(v) 174 { 175 v.preventDefault(); 176 e.target.mute(); 177 178 $elem.find('.bx-mute').addClass('active'); 179 $elem.find('.bx-unmute').removeClass('active'); 180 }); 181 } 182 } 183 }); 184 }); 185 }); 186 187 var bxProgressStart = function() 188 { 189 $slider.find('.bx-progress').stop().css({ width: '0%' }).animate({ width: '100%' }, 190 { 191 duration: ($slider.data('auto') - ($slider.data('speed') / 2)), 192 easing: 'linear' 193 }); 194 } 195 var bxProgressStop = function() 196 { 197 $slider.find('.bx-progress').stop().animate({ width: '0%' }, 198 { 199 duration: ($slider.data('speed') / 2), 200 easing: 'linear', 201 complete: function () 202 { 203 $slider.find('.bx-progress').hide(); 204 } 205 }); 206 } 207 var bxProgressShow = function() 208 { 209 $slider.find('.bx-progress').show(); 210 bxProgressStart(); 211 } 212 213 var bxSlider = $slider.find('.porta-features-container').bxSlider( 214 { 215 autoHover: true, 216 autoDelay: 4000, 217 auto: $slider.data('auto'), 218 mode: $slider.data('mode'), 219 speed: $slider.data('speed'), 220 pause: $slider.data('auto'), 221 pager: $slider.data('pager') ? true : false, 222 controls: $slider.data('controls') ? true : false, 223 autoControls: $slider.data('autocontrols') ? true : false, 224 onAutoChange: function(auto) 225 { 226 auto ? bxProgressShow() : bxProgressStop(); 227 }, 228 onSlideBefore: function(slide, oldIndex, newIndex) 229 { 230 newPlayer = 'youTube' + (newIndex + 1); 231 if (newPlayer in players) 232 { 233 players[newPlayer].playVideo(); 234 } 235 bxProgressStart(); 236 }, 237 onSlideAfter: function(slide, oldIndex, newIndex) 238 { 239 oldPlayer = 'youTube' + (oldIndex + 1); 240 if (oldPlayer in players) 241 { 242 players[oldPlayer].stopVideo(); 243 } 244 }, 245 onSliderLoad: function(newIndex) 246 { 247 setTimeout(function() 248 { 249 newPlayer = "youTube" + (newIndex + 1); 250 if (newPlayer in players) 251 { 252 players[newPlayer].playVideo(); 253 } 254 }, 4000); 255 }, 256 }); 257 }, 258 }); 259 260 // ################################## --- ########################################### 261 262 EWRporta.Showtext = XF.Click.newHandler( 263 { 264 eventNameSpace: 'EWRportaShowtext', 265 266 click: function(e) 267 { 268 e.preventDefault(); 269 $('.porta-block-hide').hide(); 270 $('.porta-block-show').slideDown(); 271 }, 272 }); 273 274 // ################################## --- ########################################### 275 276 XF.Element.register('porta-upload', 'EWRporta.Upload'); 277 XF.Element.register('porta-masonry', 'EWRporta.Masonry'); 278 XF.Element.register('porta-infinite', 'EWRporta.Infinite'); 279 XF.Element.register('porta-features', 'EWRporta.Features'); 280 281 XF.Click.register('porta-showtext', 'EWRporta.Showtext'); 282} 283(window.jQuery, window, document);
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.