PageSourceSearch

https://www.hotel-in-graz.com/wp-content/themes/theme54988/parallax-slider/js/parallaxSlider.js?ver=1.0

js hotel-in-graz.com collected 2026-10-06 07:30:32 UTC 36,423 bytes, 873 lines download raw bytes

1(function($){
2     $.fn.parallaxSlider=function(o)
3     { 
4            
5        var options = {
6            prevButton: $('.prevButton')
7        ,   nextButton: $('.nextButton')
8        ,   duration: 1000
9        ,   autoSwitcher: true
10        ,   autoSwitcherDelay: 7000
11        ,   slider_navs: true
12        ,   scrolling_description: false
13        ,   slider_pagination: 'buttons_pagination'
14        ,   animateLayout: 'zoom-fade-eff' //simple-fade-eff, zoom-fade-eff, slide-top-eff
15        ,   parallaxEffect: 'parallax_effect_normal'
16        ,   parallaxInvert: false
17        ,   liteMode: false
18        }
19        $.extend(options, o);
20        
21        var 
22            _this = $(this)
23        ,   _window = $(window)
24        ,   _document = $(document)
25        ,   sliderData = new Array()
26        ,   itemLength = 0 
27        ,   currIndex
28        ,   prevIndex
29        ,   isPreviewLoading = false
30        ,   isPreviewAnimate = false
31        ,   intervalSwitcher
32        
33        ,   obj_inner
34        ,   mainImageHolder
35        ,   primaryImageHolder
36        ,   secondarImageHolder
37        ,   mainCaptionHolder
38        ,   primaryCaption
39        ,   secondaryCaption
40        ,   mainCaptionHolderContainer
41        ,   previewSpinner
42        ,   parallaxPrevBtn
43        ,   parallaxNextBtn
44        ,   slidesCounterList
45        ,   paralaxSliderPagination
46        ,   progressBar
47        ,   youtubeApiLoad = false
48        ,   vimeoApiLoad = false
49        
50        ,   parallax = true
51        ,   parallaxType = 'parallax_normal'
52        ,   _baseHeight
53        ,   _thisOffsetTop = _this.offset().top
54        ,   _thisHeight = _this.height()
55        ,   _windowWidth = _window.width()
56        ,   _windowHeight = _window.height()
57        ,   originalWidth = 0
58        ,   originalHeight = 0
59        ,   bufferRatio  
60        ;
61  
62                
63        // parse slider data      
64        $('ul li', _this).each(
65            function()
66            {
67                var this_slide = $(this),
68                    slideData = new Object(),
69                    slide_type = 'image',
70                    image = this_slide.attr('data-preview'),
71                    thumb = this_slide.attr('data-thumb-url'),
72                    caption = this_slide.html(),
73                    link = this_slide.attr('data-ulr-link'),
74                    mp4_src = this_slide.attr('data-video-src-mp4'),
75                    webm_src = this_slide.attr('data-video-src-webm'),
76                    ogv_src = this_slide.attr('data-video-src-ogv'),
77                    video_loader = this_slide.attr('data-video-preloader'),
78                    youtube_id = this_slide.attr('data-video-youtube-id'),
79                    vimeo_id = this_slide.attr('data-video-vimeo-id');
80
81            	if (mp4_src || webm_src || ogv_src) slide_type = 'library_video';
82            	if (youtube_id) {
83            	   slide_type = 'youtube_video';
84            	   youtubeApiLoad = true
85            	}
86            	if (vimeo_id) {
87            	   slide_type = 'vimeo_video';
88                   vimeoApiLoad = true  
89            	}
90                if (options.liteMode) slide_type = 'image';
91                  
92                slideData =
93                {
94                    slide_type: slide_type,
95                    image: image,
96                    thumb: thumb,
97                    caption: caption,
98                    link: link,
99                    library_video: 
100                    {
101                        mp4_src: mp4_src,
102            			webm_src: webm_src,
103            			ogv_src: ogv_src,
104            			video_loader: video_loader,
105                        video_loaded: false,
106                    },
107                    youtube_video: 
108                    {
109                        youtube_id: youtube_id,
110                    },
111            		vimeo_video: 
112                    {
113                        vimeo_id: vimeo_id,
114                    }
115                };
116                
117                sliderData.push(slideData);
118            }
119        )
120        
121        // if necessary, load the youtube and vimeo API
122        if(youtubeApiLoad)
123            $.getScript( 'https://www.youtube.com/iframe_api', function( ) {
124                if(sliderData[0].slide_type == 'youtube_video')
125                    window.onYouTubeIframeAPIReady = function() {
126                        init();   
127                    }
128            });
129        if(vimeoApiLoad)
130            $.getScript( '//f.vimeocdn.com/js/froogaloop2.min.js', function( ) {
131                if(sliderData[0].slide_type == 'vimeo_video') init(
131);
132            });
133        
134                    
135        if(sliderData[0].slide_type != 'youtube_video' && sliderData[0].slide_type != 'vimeo_video') init();
136        
137            
138        function init()
139        {               
140            //  holder erase
141            _this.html('');
142            _this.addClass(options.animateLayout);
143    
144            //  preview holder build
145            _this.append("<div id='mainImageHolder'></div>");
146            mainImageHolder = $('#mainImageHolder');
147    
148             //  caption holder build
149            _this.append("<div id='mainCaptionHolder'><div class='container'></div></div>");
150            mainCaptionHolder = $('#mainCaptionHolder');
151            mainCaptionHolderContainer = $('>.container', mainCaptionHolder);
152    
153            //  controls build
154            _this.append("<div class='controlBtn parallaxPrevBtn'><div class='innerBtn icon-angle-left'></div><div class='slidesCounter'></div></div><div class='controlBtn parallaxNextBtn'><div class='innerBtn icon-angle-right'></div><div class='slidesCounter'></div></div>");
155            parallaxPrevBtn = $('.parallaxPrevBtn', _this);
156            parallaxNextBtn = $('.parallaxNextBtn', _this);
157    
158            //  fullpreview pagination build
159            _this.append("<div id='paralaxSliderPagination'><ul></ul></div>");
160            paralaxSliderPagination = $('#paralaxSliderPagination');
161    
162            slidesCounterList = $('.slidesCounter', _this);
163            
164            //  preview loader build
165            _this.append("<div id='previewSpinner'><span></span></div>");
166            previewSpinner = $('#previewSpinner');
167    
168            _this.on("reBuild",
169                function(e,d){
170                    setBuilder(d);
171                }
172            )
173    
174            _this.on("switchNext",
175                function(e){
176                    nextSwither();
177                }
178            )
179    
180            _this.on("switchPrev",
181                function(e){
182                    prevSwither();
183                }
184            )
185            
186            if(options.liteMode) options.parallaxEffect = 'parallax_none';
187            
188            switch (options.parallaxEffect) {
189                case 'parallax_effect_low':
190                    if(!options.parallaxInvert){
191                        parallaxType = 'parallax_normal';
192                    } else {
193                        parallaxType = 'parallax_invert';
194                    }
195                    
196                    bufferRatio = 3;
197                    
198                    break
199                    
200                case 'parallax_effect_normal':
201                    if(!options.parallaxInvert){
202                        parallaxType = 'parallax_normal';
203                    } else {
204                        parallaxType = 'parallax_invert';
205                    }
206                    
207                     bufferRatio = 2.25;
208                     
209                    break
210                    
211                case 'parallax_effect_high':
212                    if(!options.parallaxInvert){
213                        parallaxType = 'parallax_normal';
214                    } else {
215                        parallaxType = 'parallax_invert';
216                    }
217                    
218                    bufferRatio = 1.5;
219                    
220                    break
221                    
222                case 'parallax_effect_fixed':
223                    if(isIE()){
224                        parallax = false;
225                    } else {
226                        parallaxType = 'parallax_fixes';
227                    }
228                    
229                    bufferRatio = 1;
230                    
231                    break
232                    
233                default:
234                    parallax = false;
235                    parallaxType = 'parallax_none';
236                    
237                    break
238            }
239            
240            _baseHeight = getBaseHeight();
241            
242            
243            setBuilder();
244    
245            if(!options.slider_navs){
246                parallaxPrevBtn.remove();
247                parallaxNextBtn.remove();
248            }
249            if(options.slider_pagination == 'none_pagination'){
250                paralaxSliderPagination.remove();
251            }
252            
253    
254            addEventsFunction();
255            autoSwitcher();
256        }
257        
258        //------------------------- set Builder -----------------------------//
259        function setBuilder()
260        { 
261            currIndex = 0;
262            itemLength = sliderData.length;
263            
264            $(">ul", paralaxSliderPagination).empty();
265            
266            switch (options.slider_pagination) {
267                case 'buttons_pagination':
268                    paralaxSliderPagination.addClass('buttons_pagination');
269                    for (var i = 0; i < itemLength; i++) {
270                        $(">ul", paralaxSliderPagination).append("<li></li>");
271                    };
272                    
273                    break
274                
275                case 'images_pagination':
276                    paralaxSliderPagination.addClass('images_pagination');
277                    for (var i = 0; i < itemLength; i++) {
278                        $(">ul", paralaxSliderPagination).append("<li><img src='"+sliderData[i].thumb+"'></li>");
279                    };
280                    
281                    break
282            }
283    
284            if(itemLength==1){
285                paralaxSliderPagination.remove();
286                parallaxPrevBtn.remove();
287                parallaxNextBtn.remove();
288            }
289    
290            imageSwitcher(0);
291            addEventsPagination();
292        }
293    
294        function autoSwitcher()
295        {
296            if(options.autoSwitcher){
297                if(itemLength>1){
298                    intervalSwitcher = setInterval(function(){
299                        nextSwither();
300                    }, options.autoSwitcherDelay);
301                }
302            }
303        }
304        
305        //---------------  addEvents  ----------------------//
306        function addEventsPagination()
307        {
308            $(">ul >li", paralaxSliderPagination).on("click",
309                function()
310                {
311                    if((!isPreviewLoading) && (!isPreviewAnimate) && ($(this).index() !== currIndex)){
312                        clearInterval(intervalSwitcher);
313                        prevIndex = currIndex;
314                        currIndex = $(this).index();
315                        imageSwitcher(currIndex);
316                    }
317                }
318            )
319        }
320        
321        function addEventsFunction()
322        {
323            //--------------- controls events ----------------------//
324            options.prevButton.on("click",
325                function()
326                {
327                    clearInterval(intervalSwitcher);
328                    prevSwither();
329                }
330            )
331            options.nextButton.on("click",
332                function()
333                {
334                    clearInterval(intervalSwitcher);
335                    nextSwither(); 
336                }
337            )
338            parallaxPrevBtn.on("click",
339                function()
340                {
341                    clearInterval(intervalSwitcher);
342                    prevSwither();
343                }
344            )
345            parallaxNextBtn.on("click",
346                function()
347                {
348                    clearInterval(intervalSwitcher);
349                    nextSwither();
350                }
351            )
352            
353            //--------------- keyboard events ----------------------//
354            _window.on("keydown",
355                function(eventObject)
356                {
357                    switch (eventObject.keyCode){
358                        case 37:
359                            clearInterval(intervalSwitcher);
360                            prevSwither();
361                        break
362                        case 39:
363                             clearInterval(intervalSwitcher);
364                            nextSwither();
365                        break
366                    }
367                }
368            )
369            
370            //------------------ window scroll event -------------//
371            $(window).on('scroll',
372                function()
373                {
374                    mainScrollFunction();
375                }
376            ).trigger('scroll');
377            
378            //------------------ window resize event -------------//
379            $(window).on("resize",
380                function()
381                {
382                    mainResizeFunction();
383                }
384            )
385        }
386        
387        //-----------------------------------------------------------------
388        function prevSwither()
389        {
390            if(!isPreviewLoading && !isPreviewAnimate){
391                prevIndex = currIndex;
392                if(currIndex > 0){
393                    currIndex--;
394                }else{
395                    currIndex = itemLength-1;
396                }
397                    imageSwitcher(currIndex);
398            }
399        }
400        function nextSwither()
401        {
402            if(!isPreviewLoading && !isPreviewAnimate){
403                prevIndex = currIndex;
404                if(currIndex < itemLength-1){
405                    currIndex++;
406                }else{
407                    currIndex = 0;
408                }
409                imageSwitcher(currIndex);
410            }
411        }
412        
413        //------------------------- main Swither ----------------------------//
414        function imageSwitcher(currIndex)
415        {
416            //  add next ImageHolder
417            if(primaryImageHolder){
418                secondarImageHolder = primaryImageHolder;
419                secondarImageHolder.toggleClass('primaryHolder').toggleClass('secondaryHolder');
420            }
421            
422            mainImageHolder.append('<div class="primaryHolder"></div>');
423            primaryImageHolder = $('> .primaryHolder', mainImageHolder);
424            objectCssTransition(primaryImageHolder, 0, 'ease');
425            primaryImageHolder.addClass('animateState');
426            
427            
428            //  add next CaptionHolder
429            mainCaptionHolder.find('>a').remove();
430            
431            if(primaryCaption){
432                secondaryCaption = primaryCaption;
433                secondaryCaption.toggleClass('primaryCaption').toggleClass('secondaryCaption');
434            }
435            
436            if(sliderData[currIndex].caption != ''){
437                mainCaptionHolderContainer.append('<div class="primaryCaption"></div>');
438                primaryCaption = $('> .primaryCaption', mainCaptionHolderContainer);
439                primaryCaption.html(sliderData[currIndex].caption);
440                if(sliderData[currIndex].link != '') mainCaptionHolder.append('<a href="'+sliderData[currIndex].link+'"></a>');
441                objectCssTransition(primaryCaption, 0, 'ease');
442                primaryCaption.addClass('animateState');   
443            }
444            
445            slidesCounterList.text((currIndex+1) + '/'+itemLength);
446            $(">ul >li", paralaxSliderPagination).removeClass('active').eq(currIndex).addClass('active');
447    
448            isPreviewLoading = true;
449            isPreviewAnimate = true;
450            previewSpinner.css({display:'block'}).stop().fadeTo(300, 1);
451            
452            if(progressBar) progressBar.remove(); 
453            
454            //------------------------- image slide type ----------------------------// 
455            if(sliderData[currIndex].slide_type == 'image')
456            {  
457                var img = new Image();
458                img.src = sliderData[currIndex].image;
459                
460                img.onload = function ()
461                {
462                    if(!options.liteMode){ 
463                        primaryImageHolder.html('<div class="parallax-slider-img obj-inner"></div>');
464                        obj_inner = $('.parallax-slider-img', primaryImageHolder);
465                        obj_inner.css('background-image', 'url(' + img.src + ')'); 
466                    } else { 
467                        primaryImageHolder.html('<img class="parallax-slider-img obj-inner" src="'+img.src+'" alt=""/>');
468                        obj_inner = $('.parallax-slider-img', primaryImageHolder);
469                    }
470                    
471                    if(isIE()) obj_inner.css({backgroundAttachment:'fixed'});
472                    
473                    originalWidth = img.width;
474                    originalHeight = img.height;
475                    objectResize(obj_inner, primaryImageHolder.width(), _baseHeight);
476                
477                    onSlideLoaded();
478                }
479                
480            }
481            //------------------------- library video slide type ----------------------------// 
482            if(sliderData[currIndex].slide_type == 'library_video')
483            {    
484                if(sliderData[currIndex].library_video.player){
485                    
486                    var videoElement = sliderData[currIndex].library_video.player;
487                    
488                } else {
489                    
490                    var videoElement = document.createElement('video');
491                    
492                    videoElement.className = 'parallax-slider-video obj-inner';
493                    videoElement.setAttribute('loop','loop');
494                    videoElement.setAttribute('poster', sliderData[currIndex].image);
495                    
496                    function addSourceToVideo(element, src, type)
497                    {
498                        if(src)
499                        {                
500                            var source = document.createElement('source');
501                        
502                            source.src = src;
503                            source.type = type;
504                        
505                            element.appendChild(source);
506                        }                
507                    }   
508                    
509                    addSourceToVideo(videoElement, sliderData[currIndex].library_video.mp4_src, 'video/mp4');
510                    addSourceToVideo(videoElement, sliderData[currIndex].library_video.webm_src, 'video/webm');
511                    addSourceToVideo(videoElement, sliderData[currIndex].library_video.ogv_src, 'video/ogv');
512                    
513                    videoElement.load();
514                    
515                    sliderData[currIndex].library_video.player = videoElement;
516                }
517                
518                primaryImageHolder.get(0).appendChild(videoElement);
519                obj_inner = $('.parallax-slider-video', primaryImageHolder);
520                                 
521                videoElement.play();
522                
523                originalWidth = 0;
524                originalHeight = 0;
525                originalWidth = videoElement.videoWidth;
526                originalHeight = videoElement.videoHeight;
527                
528                var img = new Image();
529                img.src = sliderData[currIndex].image;
530                
531                img.onload = function ()
532                {
533                    originalWidth = originalWidth==0 ? img.width : originalWidth;
534                    originalHeight = originalHeight==0 ? img.height : originalHeight;
535                    objectResize(obj_inner, primaryImageHolder.width(), _baseHeight);
536                    
537                    onSlideLoaded();
538                }
539                
540                videoElement.onloadedmetadata = function()
541                {
542                    originalWidth = videoElement.videoWidth;
543                    originalHeight = videoElement.videoHeight;
544                    objectResize(obj_inner, primaryImageHolder.width(), _baseHeight);   
545                }
546              
547                videoLoaded = sliderData[currIndex].library_video.video_loaded;              
548                
549                if(sliderData[currIndex].library_video.video_loader && !videoLoaded)
550                {
551                    _this.append('<div class="parallax-slider-video-progress-bar"><div class="parallax-slider-video-progress"></div></div>');
552                    progressBar = $('.parallax-slider-video-progress-bar', _this);
553                    progressLine = $('.parallax-slider-video-progress', progressBar);
554                    
555                    var updateProgressBar = function()
556                    {
557                        if(videoElement.buffered.length > 0) {
558                            if(videoElement.played.length > 0) progressBar.css({background:'#000'});
559                            if(videoElement.buffered.end(0) == videoElement.duration){
560                                clearTimeout(watchBuffer);
561                                sliderData[currIndex].library_video.video_loaded = true;
562                                progressLine.width('100%');
563                                progressBar.stop().delay(1000).animate({top:'-15px'}, 1000, function(){
564                                    progressBar.remove();
565                                });
566                            }else{
567                                progressLine.width(((videoElement.buffered.end(0) / videoElement.duration) * 100) + '%');
568                            }
569                        }
570                    };
571                    var watchBuffer = setInterval(updateProgressBar, 500);
572                }                                  
573            }
574            //------------------------- youtube video slide type ----------------------------// 
575            if(sliderData[currIndex].slide_type == 'youtube_video')
576            {
577                var youtube_id = sliderData[currIndex].youtube_video.youtube_id;
578                 
579                primaryImageHolder.html('<div id="parallax-slider-youtube-video'+currIndex+'" class="parallax-slider-youtube-video obj-inner"></div>');
580                 
581                function onPlayerReady(event)
582                {
583                    event.target.playVideo();
584                    
585                    var intervalID;
586                    intervalID = setInterval(function(){
587                        if(youtubePlayer.getPlayerState() == 1){
588                            clearInterval(intervalID);
589                            onSlideLoaded();
590                        }
591                    }, 100); 
592                } 
593                
594                originalWidth = 16;
595                originalHeight = 9;
596
597                var youtubePlayer = new YT.Player('parallax-slider-youtube-video'+currIndex+'', {
598                    height: '0px',
599                    width: '0px',
600                    playerVars : {
601                         'autoplay' : 1,
602                         'showinfo' : 0,
603                         'controls' : 0,
604                         'loop' : 1,
605                         'disablekb' : 1, 
606                         'enablejsapi' : 1,
607                         'html5' : isIE() ? 1 : 0,                                    
608                         'playlist': youtube_id
609                    },
610                    videoId: youtube_id,
611                    events: {
612                        'onReady': onPlayerReady
613                    }
614                });
615               
616                obj_inner = $('#parallax-slider-youtube-video'+currIndex+'', primaryImageHolder);
617                objectResize(obj_inner, primaryImageHolder.width(), _baseHeight);
618                    
619                sliderData[currIndex].youtube_video.player = youtubePlayer;
620                
621            }
622            //------------------------- vimeo video slide type ----------------------------//
623            if(sliderData[currIndex].slide_type == 'vimeo_video')
624            {
625                var vimeo_id = sliderData[currIndex].vimeo_video.vimeo_id,
626                    vimeo_iframe,
627                    vimeo_player,
628                    vimeo_player_playstarted = false;
629                    
630                primaryImageHolder.html('<div class="parallax-slider-vimeo-video obj-inner"><iframe id="vimeo-player-'+currIndex+'" class="parallax-slider-vimeo-iframe" src="http://player.vimeo.com/video/'+vimeo_id+'?api=1&player_id=vimeo-player-'+currIndex+';autoplay=1&amp;loop=1" frameborder="0"></iframe></div>');
631                
632                vimeo_iframe = $('#vimeo-player-'+currIndex+'')[0];
633                vimeo_player = $f(vimeo_iframe);
634                
635                sliderData[currIndex].vimeo_video.player = vimeo_player;
636                    
637                vimeo_player.addEvent('ready', function() {
638                    vimeo_player.addEvent('play', function(){
639                        if(!vimeo_player_playstarted)
640                        {
641                            vimeo_player_playstarted = true;
642                            
643                            originalWidth = 16;
644                            originalHeight = 9;
645                            
646                            obj_inner = $('.obj-inner', primaryImageHolder);
647                            objectResize(obj_inner, primaryImageHolder.width(), _baseHeight);
648                            
649                            setTimeout(onSlideLoaded, 500);
650                        }
651                    });
652                })
653            }
654            
655            function onSlideLoaded()
656            {  
657                isPreviewLoading = false;
658                previewSpinner.stop().fadeTo(300, 0, function(){ $(this).css({display:'none'}); });
659                
660                objectCssTransition(primaryImageHolder, options.duration, 'outCubic');
661                primaryImageHolder.removeClass('animateState');
662                
663                if(secondarImageHolder){
664                    if(sliderData[prevIndex].slide_type == 'youtube_video' || sliderData[prevIndex].slide_type == 'vimeo_video'){
665                        setTimeout(function(){
666                            if(sliderData[prevIndex].slide_type == 'youtube_video') sliderData[prevIndex].youtube_video.player.stopVideo();
667                            if(sliderData[prevIndex].slide_type == 'vimeo_video') sliderData[prevIndex].vimeo_video.player.api('unload');
668                        }, options.duration/1.25)
669                    }
670
671                    objectCssTransition(secondarImageHolder, options.duration, 'outCubic');
672                    secondarImageHolder.addClass('animateState');
673                }
674                
675                objectCssTransition(primaryCaption, options.duration, 'outCubic');
676                primaryCaption.removeClass('animateState');
677                
678                if(secondaryCaption){
679                    objectCssTransition(secondaryCaption, options.duration, 'outCubic');
680                    secondaryCaption.addClass('animateState');
681                }
682                
683                mainCaptionHolderContainer.height(primaryCaption.height());
684                
685                setTimeout(function()
686                {
687                    if(secondarImageHolder) secondarImageHolder.remove();
688                    if(secondaryCaption) secondaryCaption.remove();
689                    
690                    isPreviewAnimate = false;
691
692                }, options.duration )
693            }         
694        }
695    
696        //----------------------------------------------------//
697        function objectCssTransition(obj, duration, ease){
698            var durationValue;
699    
700            if(duration !== 0){
701                durationValue = duration/1000;
702            }else{
703                durationValue = 0
704            }
705    
706            switch(ease){
707                case 'ease':
708                        obj.css({"-webkit-transition":"all "+durationValue+"s ease", "-moz-transition":"all "+durationValue+"s ease", "-o-transition":"all "+durationValue+"s ease", "transition":"all "+durationValue+"s ease"});
709                break;
710                case 'outSine':
711                    obj.css({"-webkit-transition":"all "+durationValue+"s cubic-bezier(0.470, 0.000, 0.745, 0.715)", "-moz-transition":"all "+durationValue+"s cubic-bezier(0.470, 0.000, 0.745, 0.715)", "-o-transition":"all "+durationValue+"s cubic-bezier(0.470, 0.000, 0.745, 0.715)", "transition":"all "+durationValue+"s cubic-bezier(0.470, 0.000, 0.745, 0.715)"});
712                break;
713                case 'outCubic':
714                    obj.css({"-webkit-transition":"all "+durationValue+"s cubic-bezier(0.215, 0.610, 0.355, 1.000)", "-moz-transition":"all "+durationValue+"s cubic-bezier(0.215, 0.610, 0.355, 1.000)", "-o-transition":"all "+durationValue+"s cubic-bezier(0.215, 0.610, 0.355, 1.000)", "transition":"all "+durationValue+"s cubic-bezier(0.215, 0.610, 0.355, 1.000)"});
715                break;
716                case 'outExpo':
717                    obj.css({"-webkit-transition":"all "+durationValue+"s cubic-bezier(0.190, 1.000, 0.220, 1.000)", "-moz-transition":"all "+durationValue+"s cubic-bezier(0.190, 1.000, 0.220, 1.000)", "-o-transition":"all "+durationValue+"s cubic-bezier(0.190, 1.000, 0.220, 1.000)", "transition":"all "+durationValue+"s cubic-bezier(0.190, 1.000, 0.220, 1.000)"});
718                break;
719                case 'outBack':
720                    obj.css({"-webkit-transition":"all "+durationValue+"s cubic-bezier(0.175, 0.885, 0.320, 1.275)", "-moz-transition":"all "+durationValue+"s cubic-bezier(0.175, 0.885, 0.320, 1.275)", "-o-transition":"all "+durationValue+"s cubic-bezier(0.175, 0.885, 0.320, 1.275)", "transition":"all "+durationValue+"s cubic-bezier(0.175, 0.885, 0.320, 1.275)"});
721                break;
722            }
723        }
724        
725        //------------------------ Object resize ----------------------------//
726        function objectResize(obj, baseWidth, baseHeight)
727        {
728            var imageRatio,
729                newImgWidth,
730                newImgHeight,
731                newImgTop,
732                newImgLeft;
733    
734            imageRatio = originalHeight/originalWidth;
735            containerRatio = baseHeight/baseWidth;
736    
737            if(containerRatio > imageRatio){
738                newImgHeight = baseHeight;
739                newImgWidth = Math.round( (newImgHeight*originalWidth) / originalHeight );   
740            }else{
741                newImgWidth = baseWidth;
742                newImgHeight = Math.round( (newImgWidth*originalHeight) / originalWidth );
743            }
744    
745            newImgLeft=-(newImgWidth-baseWidth)*.5;
746            newImgTop= -(newImgHeight-baseHeight)*.5;
747                        
748            if(obj.prop('tagName').toLowerCase() == 'div'){ obj.css({width: '100%', height: newImgHeight, marginTop: newImgTop}); } else { obj.css({width: newImgWidth, height: newImgHeight, marginTop: newImgTop, marginLeft: newImgLeft}); }
749            
750            if(sliderData[currIndex].slide_type == 'vimeo_video'){
751                obj.find('.parallax-slider-vimeo-iframe').css({width: newImgWidth, height: newImgHeight+200, marginLeft: newImgLeft});
752            }
753        }
754        
755        //------------------- main window scroll function -------------------//
756        function mainScrollFunction(){
757             if(parallax || options.scrolling_description && !options.liteMode){
758                
759                 var _documentScrollTop
760                 ,   startScrollTop
761                 ,   endScrollTop
762                 ;
763     
764                 _documentScrollTop = _document.scrollTop();
765                 _thisOffsetTop = _this.offset().top;
766     
767                 startScrollTop = _documentScrollTop + _windowHeight;
768                 endScrollTop = _documentScrollTop - _thisHeight;
769     
770                 if((startScrollTop > _thisOffsetTop) && (endScrollTop < _thisOffsetTop)){  
771                     
772                     y = _documentScrollTop - _thisOffsetTop;
773                     
774                     if(parallax){
775                         if(!options.parallaxInvert) {
776                             newPositionTop =  parseInt(y / bufferRatio);
777                         } else {
778                             if(_thisOffsetTop < Math.abs(_windowHeight-_thisHeight)){
779                                 newPositionTop = -parseInt(y / bufferRatio) - parseInt(_thisOffsetTop / bufferRatio);
780                             } else{
781                                 newPositionTop = -parseInt(y / bufferRatio) - parseInt(_windowHeight / bufferRatio)
782                             }
783                         }
784                         
785                         mainImageHolder.css({ top: newPositionTop + 'px' });   
786                     }
787                     
788                     if(options.scrolling_description){
789                         description_opacity = (1-(y / _thisHeight)).toFixed(2); 
790                         if(description_opacity < 1) mainCaptionHolder.css('opacity', description_opacity);
791                         
792                         description_offset = parseInt(y/2.5);
793                         if(description_offset > 0) {
794                             mainCaptionHolder.css('top', description_offset);
795                         } else {
796                             mainCaptionHolder.css('top', '0px');   
797                         }
798                     }
799                 }
800             }
801        }
802        
803        //------------------- main window resize function -------------------//
804        function mainResizeFunction(){
805            _windowWidth = _window.width();
806            _windowHeight = _window.height();
807            _thisWidth = _this.width();
808            _thisHeight = _this.height();
809            _thisOffsetTop = _this.offset().top;
810            
811            _baseHeight = getBaseHeight();
812            objectResize(obj_inner, _thisWidth, _baseHeight);
813            mainScrollFunction();
814        }
815
816        //------------------- get heigth function -------------------//
817        function getBaseHeight(){
818            
819            switch (parallaxType) {
820                case 'parallax_normal':
821                    if(_thisOffsetTop < (_windowHeight-_thisHeight)){
822                       baseHeight = _thisHeight + parseInt(_thisOffsetTop/bufferRatio); 
823                    } else {
824                       baseHeight = _thisHeight + parseInt((_windowHeight - _thisHeight)/bufferRatio);
825                    }                 
826                    break
827                    
828                case 'parallax_invert':
829                    if(_thisOffsetTop < Math.abs(_windowHeight-_thisHeight)){
830                       baseHeight = _thisHeight + parseInt((_thisOffsetTop + _thisHeight)/bufferRatio); 
831                    } else {
832                       baseHeight = _thisHeight + parseInt((_windowHeight + _thisHeight)/bufferRatio);
833                    }
834                    break
835                    
836                case 'parallax_fixes':
837                    if((_thisOffsetTop + _thisHeight) < _windowHeight){
838                        baseHeight = _thisOffsetTop + _thisHeight;
839                    } else {
840                        baseHeight = _windowHeight;
841                    }
842                    break
843                    
844                case 'parallax_none':
845                    baseHeight = _thisHeight;
846                    break
847            }
848            
849            return baseHeight;
850        }
851        
852        function toRadians (angle) {
853            return angle * (Math.PI / 180);
854        }
855        
856        function isIE() {
857            if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
858                return true;
859            }else{
860                return false;
861            }
862        }
863        
864        function loadScript(url, callback){
865            $.ajax({
866                url: url,
867                dataType: 'script',
868                success: callback,
869                async: true
870            });
871        }       
872    }
873})(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.