1cherryIsotopeView_not_resizes = false; 2 3jQuery(document).ready(function($) 4{ 5 parallax_box = $('section.parallax-box'); 6 7 if(parallax_box.length > 0) 8 { 9 ParallaxBox(); 10 } 11 12 function ParallaxBox() 13 { 14 var windowSelector = $(window), 15 documentSelector = $(document), 16 windowWidth = windowSelector.width(), 17 windowHeight = windowSelector.outerHeight(), 18 liteMode = false, 19 ieVersion = getInternetExplorerVersion(); 20 21 if(!device.mobile() && !device.tablet()) 22 { 23 liteMode = false; 24 25 if (ieVersion !=-1 && ieVersion < 10){ 26 liteMode = true; 27 } 28 }else{ 29 liteMode = true; 30 } 31 32 33 parallax_box.each(function() 34 { 35 parallaxBox($(this)); 36 }); 37 38 function parallaxBox(obj) 39 { 40 var obj_bg = obj.find('.parallax-bg'), 41 type = obj_bg.data('parallax-type'), 42 obj_bg_inner, 43 img, 44 originalWidth = 0, 45 originalHeight = 0, 46 img_url = obj_bg.data('img-url'), 47 bufferRatio = obj_bg.data('speed'), 48 parallaxInvert = obj_bg.data('invert'), 49 fullwidth = obj_bg.data('fullwidth'), 50 mute = obj_bg.data('mute'), 51 parallaxType = 'parallax_normal', 52 objHeight = obj.height(), 53 objOffsetTop = obj.offset().top, 54 baseHeight = 0, 55 parallax = true; 56 notResize = false; 57 58 switch (type) 59 { 60 case 'image': 61 loadImg(); 62 63 break 64 65 case 'video': 66 obj_bg_inner = $('.parallax_media', obj_bg); 67 68 if(liteMode){ 69 obj_bg_inner.remove(); 70 loadImg(); 71 } else { 72 loadVideo(); 73 } 74 75 break 76 77 case 'youtube': 78 obj_bg_inner = $('.parallax_youtube', obj_bg); 79 80 if(liteMode){ 81 obj_bg_inner.remove(); 82 loadImg(); 83 } else { 84 loadYotubeVideo(); 85 } 86 87 break 88 89 case 'vimeo': 90 obj_bg_inner = $('.parallax_vimeo', obj_bg); 91 92 if(liteMode){ 93 obj_bg_inner.remove(); 94 loadImg(); 95 } else { 96 loadVimeoVideo(); 97 } 98 99 break 100 } 101 102 function loadImg() 103 { 104 if(img_url) 105 { 106 img = new Image(); 107 img.src = img_url; 108 109 img.onload = function () 110 { 111 originalWidth = img.width; 112 originalHeight = img.height; 113 114 imgBlocksStructure = !liteMode ? "<div class='parallax-img parallax-bg-inner'></div>" : "<img class='parallax-img parallax-bg-inner' src='' alt=''/>"; 115 obj_bg.append(imgBlocksStructure); 116 obj_bg_inner = $('.parallax-img', obj_bg); 117 118 if(!liteMode){ 119 obj_bg_inner.css('background-image', 'url(' + (img_url) + ')'); 120 } else { 121 obj_bg_inner.attr('src', img_url); 122 bufferRatio = 'none'; 123 } 124 125 initParallax(); 126 } 127 } 128 } 129 130 function loadVideo() 131 { 132 var videoElement = obj_bg_inner.get(0); 133 134 videoElement.load(); 135 videoElement.play(); 136 if(mute) videoElement.muted = true; 137 138 originalWidth = videoElement.videoWidth; 139 originalHeight = videoElement.videoHeight; 140 141 if(img_url) 142 { 143 img = new Image(); 144 img.src = img_url; 145 146 img.onload = function () 147 { 148 originalWidth = originalWidth==0 ? img.width : originalWidth; 149 originalHeight = originalHeight==0 ? img.height : originalHeight; 150 parallaxObjResize(); 151 objectResize(obj_bg_inner, obj_bg.width(), baseHeight, originalWidth, originalHeight); 152 } 153 } 154 155 videoElement.onloadeddata = function() 156 { 157 originalWidth = videoElement.videoWidth; 158 originalHeight = videoElement.videoHeight; 159 parallaxObjResize(); 160 objectResize(obj_bg_inner, obj_bg.width(), baseHeight, originalWidth, originalHeight); 161 } 162 163 initParallax(); 164 } 165 166 function loadYotubeVideo() 167 { 168 var youtube_id = obj_bg_inner.data('youtube-id'); 169 170 obj_bg_inner.attr('id', 'youtubeplayer'+obj.index()); 171 check_youtube_api(yotubeRady); 172 173 function yotubeRady() 174 { 175 function onPlayerReady(event) 176 { 177 event.target.playVideo(); 178 if(mute) youtubePlayer.mute(); 179 } 180 181 originalWidth = 16; 182 originalHeight = 9; 183 184 initParallax(); 185 186 var youtubePlayer = new YT.Player('youtubeplayer'+obj.index(), { 187 height: '0px',
188 width: '0px', 189 playerVars : { 190 'autoplay' : 1, 191 'showinfo' : 0, 192 'controls' : 0, 193 'loop' : 1, 194 'iv_load_policy' : 3, 195 'modestbranding ' : 1, 196 'disablekb' : 1, 197 'enablejsapi' : 1, 198 'html5' : ieVersion != -1 ? 1 : 0, 199 'playlist': youtube_id 200 }, 201 videoId: youtube_id, 202 events: { 203 'onReady': onPlayerReady 204 } 205 }); 206 207 obj_bg_inner = $('#youtubeplayer'+obj.index(), obj_bg); 208 } 209 } 210 211 function loadVimeoVideo() 212 { 213 check_vimeo_api(vimeoRady); 214 215 function vimeoRady() 216 { 217 var vimeo_id = obj_bg_inner.data('vimeo-id'), 218 vimeo_iframe, 219 vimeo_player, 220 vimeo_player_playstarted = false; 221 222 base_vimeo_class = obj_bg_inner.attr('class'); 223 obj_bg.html('<iframe id="vimeoplayer'+obj.index()+'" class="'+base_vimeo_class+'" src="http://player.vimeo.com/video/'+vimeo_id+'?api=1&player_id=vimeoplayer'+obj.index()+';autoplay=1&loop=1" frameborder="0"></iframe>'); 224 obj_bg_inner = $('.parallax-bg-inner', obj_bg); 225 226 vimeo_iframe = $('#vimeoplayer'+obj.index())[0]; 227 vimeo_player = $f(vimeo_iframe); 228 229 vimeo_player.addEvent('ready', function() 230 { 231 if(mute) vimeo_player.api('setVolume', 0); 232 vimeo_player.addEvent('playProgress', function() 233 { 234 vimeo_player.removeEvent('playProgress'); 235 236 originalWidth = 16; 237 originalHeight = 9; 238 239 initParallax(); 240 }) 241 }); 242 } 243 } 244 245 function initParallax() 246 { 247 notResize = false; 248 249 if(!parallaxInvert){ 250 parallaxType = 'parallax_normal'; 251 } else { 252 parallaxType = 'parallax_invert'; 253 } 254 255 switch (bufferRatio) 256 { 257 case 'low': 258 bufferRatio = 3; 259 260 break 261 262 case 'normal': 263 bufferRatio = 2.25; 264 265 break 266 267 case 'hight': 268 bufferRatio = 1.5; 269 270 break 271 272 case 'fixed': 273 if(ieVersion != -1 || getSafari()){ 274 if(type != 'video'){ 275 parallax = false; 276 notResize = true; 277 obj_bg_inner.css({backgroundAttachment:'fixed', width:'100%', height:'100%'}); 278 } else { 279 parallaxType = 'parallax_normal'; 280 bufferRatio = 2.25; 281 } 282 } else { 283 parallaxType = 'parallax_fixes'; 284 bufferRatio = 1; 285 } 286 287 break 288 289 case 'none': 290 parallax = false;
291 parallaxType = 'parallax_none'; 292 293 break 294 295 default: 296 bufferRatio = 2.25; 297 298 if(bufferRatio > 5) bufferRatio = 5; 299 if(bufferRatio <= 1){ 300 if($.browser.msie){ 301 parallax = false; 302 obj_bg_inner.css({backgroundAttachment:'fixed'}); 303 } else { 304 parallaxType = 'parallax_fixes'; 305 bufferRatio = 1; 306 } 307 } 308 309 break 310 } 311 312 setTimeout(function(){obj_bg_inner.removeClass('load');}, 10); 313 314 windowSelector.resize(parallaxObjResize); 315 documentSelector.resize(parallaxObjResize); 316 parallaxObjResize(); 317 318 if(!liteMode) windowSelector.scroll(parallaxMove); 319 } 320 321 function parallaxObjResize() 322 { 323 windowWidth = windowSelector.width(); 324 windowHeight = windowSelector.outerHeight(); 325 326 objHeight = obj.height(); 327 328 if(fullwidth && !cherryIsotopeView_not_resizes) 329 { 330 obj_bg.width(windowWidth); 331 obj_bg.css({'width' : windowWidth, 'margin-left' : Math.floor(windowWidth*-0.5), 'left' : '50%'}); 332 } 333 334 if(!notResize) 335 { 336 baseHeight = getBaseHeight(parallaxType, objHeight, bufferRatio); 337 objectResize(obj_bg_inner, obj_bg.width(), baseHeight, originalWidth, originalHeight); 338 } 339 340 if(!liteMode) parallaxMove(); 341 } 342 343 function parallaxMove() 344 { 345 if(parallax && !liteMode) 346 { 347 var documentScrollTop, 348 startScrollTop, 349 endScrollTop; 350 351 objOffsetTop = obj.offset().top; 352 documentScrollTop = documentSelector.scrollTop(); 353 354 startScrollTop = documentScrollTop + windowHeight; 355 endScrollTop = documentScrollTop - objHeight; 356 357 if((startScrollTop > objOffsetTop) && (endScrollTop < objOffsetTop)) 358 { 359 y = documentScrollTop - objOffsetTop; 360 361 if(!parallaxInvert) { 362 newPositionTop = parseInt(y / bufferRatio); 363 } else { 364 newPositionTop = -parseInt(y / bufferRatio) - parseInt(windowHeight / bufferRatio) 365 } 366 367 obj_bg_inner.css({"transform": "translate3d(0px, " + newPositionTop + "px, 0px)"}); 368 } 369 } 370 } 371 } 372 373 function objectResize(obj, baseWidth, baseHeight, originalWidth, originalHeight ) 374 { 375 var imageRatio, 376 originalWidth, 377 originalHeight, 378 newImgWidth, 379 newImgHeight, 380 newImgTop, 381 newImgLeft; 382 383 imageRatio = originalHeight/originalWidth; 384 containerRatio = baseHeight/baseWidth; 385 386 if(containerRatio > imageRatio){ 387 newImgHeight = baseHeight; 388 newImgWidth = Math.round( (newImgHeight*originalWidth) / originalHeight ); 389 }else{ 390 newImgWidth = baseWidth; 391 newImgHeight = Math.round( (newImgWidth*originalHeight) / originalWidth ); 392 } 393 394 newImgLeft=-(newImgWidth-baseWidth)*.5; 395 newImgTop= -(newImgHeight-baseHeight)*.5; 396 397 obj.css({width: newImgWidth, height: newImgHeight, marginTop: newImgTop, marginLeft: newImgLeft}); 398 } 399 400 function getBaseHeight(parallaxType, objHeight, bufferRatio) 401 { 402 var newBaseHeight = 0; 403 404 switch (parallaxType) 405 { 406 case 'parallax_normal': 407 newBaseHeight = objHeight + parseInt((windowHeight - objHeight)/bufferRatio); 408 break 409 410 case 'parallax_invert': 411 newBaseHeight = objHeight + parseInt((windowHeight + objHeight)/bufferRatio); 412 break 413 414 case 'parallax_fixes': 415 newBaseHeight = windowHeight; 416 break 417 418 case 'parallax_none': 419 newBaseHeight = objHeight; 420 break 421 } 422 423 return newBaseHeight; 424 } 425 426 function getInternetExplorerVersion() 427 { 428 var rv = -1; 429 if (navigator.appName == 'Microsoft Internet Explorer') 430 { 431 var ua = navigator.userAgent; 432 var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 433 if (re.exec(ua) != null) 434 rv = parseFloat( RegExp.$1 ); 435 } 436 else if (navigator.appName == 'Netscape') 437 { 438 var ua = navigator.userAgent; 439 var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})"); 440 441 if (re.exec(ua) != null) 442 rv = parseFloat( RegExp.$1 ); 443 } 444 445 return rv; 446 } 447 function getSafari(){ 448 var safari = false;
449 if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0) safari = true; 450 return safari; 451 } 452 } 453});
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.