Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var useBookmark = true;
  3. var limitWebAppToDevice = true;
  4. var stopIFrameOnNewPage = true;
  5. var resetSliderScrollY = true;
  6. var useSmoothSwipeOnImageSequences = true;
  7. var bookmarkName = 'in5_bookmark_' + location.href.substr(location.host.length);
  8. var touchEnabled = 'ontouchstart' in document.documentElement;
  9. var clickEv = (touchEnabled) ? 'vclick' : 'click';
  10. var pre = (document.createElement('div').style['WebkitTransform'] != undefined) ? '-webkit-' : '';
  11. var useSwipe = false;
  12. var pageMode = 'csv';
  13. var multifile = false;
  14. var arrowNav = false;
  15. var lazyLoad = true;
  16. var webAppType = '';
  17. var useTracker = false;
  18. var shareInfo = {btns:["facebook"], align:"right"};
  19. var webAppEmailSubject = 'Check out this Web App for {deviceName}';
  20. var webAppEmailBody = 'Add this Web App to Your {deviceName} by visiting: ';
  21. var sliderSettings = {}, nav = {}, in5 = {};
  22. var uAgent = navigator.userAgent.toLowerCase();
  23. var isIPad = uAgent.indexOf("ipad") > -1, isIPhone = uAgent.indexOf("iphone") > -1,
  24.     isWebkit = 'WebkitAppearance' in document.documentElement.style,
  25.     isAndroid = uAgent.indexOf('android') > -1, isChrome = uAgent.indexOf('chrome') > -1,
  26.     isBaker = uAgent.indexOf("bakerframework") > -1, isLocal = (location.protocol === 'file:');
  27. navigator.standalone = navigator.standalone || checkStandalone();
  28. if(isLocal) $('html').addClass('local');
  29. if(location.href.indexOf('OverlayResources') !== -1) $('html').addClass('dps');
  30. if(isBaker) { useSwipe=false; $('html').addClass('baker'); }
  31. if(isIPad || isIPhone) { $('html').addClass('ios'); }
  32. else if(uAgent.indexOf('safari') > -1) {
  33. if(uAgent.indexOf('windows')){$('html').addClass('win-safari')};
  34. window.setInterval=function(f,t){var i=window.setInterval.count?++window.setInterval.count:window.setInterval.count=1;var a=arguments;window.setInterval[i]=function(){if(window.setInterval[i].active){if(typeof f=="string"){eval(f)}else if(a.length>2){f.apply(this,Array.prototype.slice.call(a,2))}else{f()}setTimeout(window.setInterval[i],t)}};window.setInterval[i].active=true;setTimeout(window.setInterval[i],t);return{intervalId:i}};window.clearInterval=function(e){window.setInterval[e.intervalId].active=false}
  35. }
  36. function checkStandalone(){
  37.     if(isAndroid){
  38.         if(uAgent.match(/chrome.(?:(3[8-9])|(?:[4-9][0-9]))/i) ){ return (screen.height-window.outerHeight<80); }
  39.         return true; /*bypass install screen until better implementation is available*/
  40.         /*return (screen.height-document.documentElement.clientHeight<40); old android hack*/
  41.     }
  42. }
  43. function go(e, objArr, triggerEvent){
  44.     if(objArr.length>1) {
  45.         $(e.target).data('sequence', objArr);
  46.         seqNext(e);
  47.     } else {
  48.         var data = objArr[0];
  49.         prepAnim(e,$('[data-id=' + data.id + ']'),data);
  50.     }  
  51. }
  52. function prepAnim(e,elem,data){
  53.     switch(data.act) {
  54.         case 'reverse': data.rev = 1;
  55.         case 'play': playAnim(e,elem,data); break;
  56.         case 'stop': elem.css(pre+'animation', 'none'); break;
  57.         case 'pause': elem.css(pre+'animation-play-state','paused'); break;
  58.         case 'resume': elem.css(pre+'animation-play-state','running'); break;
  59.         case 'stopall': $('.activePage').find('[data-ani]').css(pre+'animation','none'); break;
  60.     }
  61. }
  62. function seqNext(e) {
  63.     if(!e || !e.target) return;
  64.     var seqArr = $(e.target).data('sequence');
  65.     if(!seqArr || !seqArr.length) return;
  66.     var cAnim = seqArr.shift();
  67.     var elem = $('[data-id=' + cAnim.id + ']');
  68.     if(seqArr.length && !cAnim.link) elem.data('sequence', seqArr);
  69.     prepAnim(e,elem,cAnim);
  70.     if(cAnim.link || !elem.length) seqNext(e);
  71. }
  72. function triggerRollOff(e,btn){
  73.     eval(btn.attr('data-unroll'));
  74.     btn.removeAttr('data-unroll');
  75. }
  76. function playAnim(e, elem, opts) {
  77.     if(typeof elem === 'number') elem = $('[data-id=' + elem + ']');
  78.     if(!elem.length) return;
  79.     if(e.target != elem[0] && elem.attr('data-unroll')) return false;
  80.     elem.css(pre+'animation','none');
  81.     elem[0].offsetWidth = elem[0].offsetWidth;
  82.     var ani = elem.attr('data-ani');
  83.     if(opts.n && opts.n != 1) ani = ani.replace(/(?:\d+$)/,opts.n);
  84.     var delay = (opts.del) ? opts.del+'s' : '0s';
  85.     var dir = (opts.rev) ? 'reverse' : 'normal';
  86.     if(opts.unroll) {
  87.         opts.rev = 1;
  88.         var btn = $(opts.unroll);
  89.         delete opts.unroll;
  90.         var optStr = (typeof opts.toSource == 'function') ? opts.toSource() :
  91.             (function(){
  92.                 var arr=[],val;
  93.                 for(var prop in opts){
  94.                     val = opts[prop];
  95.                     if(typeof val === 'string') val="'"+val+"'";
  96.                     arr.push(prop+':'+val);
  97.                 }
  98.                 return '{' + arr.toString() + '}';
  99.             })();  
  100.         btn.attr('data-unroll', 'playAnim({target:this},'+elem.attr('data-id')+','+optStr+');');
  101.         btn.one('mouseleave', function(e) { triggerRollOff(e,btn); });
  102.     }
  103.     elem.css({animation:ani, '-webkit-animation':ani,
  104.     'animation-delay':delay, '-webkit-animation-delay':delay,
  105.     'animation-direction':dir, '-webkit-animation-direction':dir}).removeClass('hidden');
  106. }
  107. function toggleAudio(btn){
  108.     var elem = $(btn).siblings('audio')[0];
  109.     if(elem == undefined) elem = $(btn).siblings().find('audio')[0];
  110.     if(elem == undefined) return;
  111.     try{
  112.     var player = elem.player || elem, media = player.media || elem;
  113.     if(media.paused) player.play();
  114.     else player.pause();
  115.     } catch(e){}
  116. }
  117. function playMedia(dataID, from) {
  118.     var elem = $('audio,video').filter('[data-id=' + dataID + ']')[0];
  119.     if(elem == undefined) return;
  120.     try{
  121.         var player = elem.player || elem;
  122.         player.play();
  123.         if(from != undefined && from != -1) try{ setTimeout(function(){player.setCurrentTime(from);}, 500); }catch(e){}
  124.     } catch(e){console.log(e);}
  125. }
  126. function stopMedia(dataID){ pauseMedia(dataID,true); }
  127. function pauseMedia(dataID, rewind) {
  128.     var elem = $('audio,video').filter('[data-id=' + dataID + ']')[0];
  129.     if(elem == undefined) return;
  130.     try{
  131.     var player = elem.player || elem;
  132.     player.pause();
  133.     if(rewind) elem.currentTime = 0;
  134.     } catch(e){}
  135. }
  136. function stopAllMedia(targ) {
  137.     if(!targ) targ = document;
  138.     $(targ).find('audio,video').each(function() {
  139.         var media = $(this)[0], player = media.player || media;
  140.         try{player.pause(); media.currentTime = 0;}catch(e){}
  141.     });
  142. }
  143. function stopIframe(targ){
  144.     $(targ).find('iframe').each(function(index,elem){
  145.         var j = $(elem), src = j.attr('src');
  146.         j.attr('src', '');
  147.         if(j.attr('data-src')) j.siblings('.cover').show();
  148.         else j.attr('src', src);
  149.     });
  150. }
  151. function autoPlayMedia(i,elem) {
  152.     if($(elem).parents('.state').not('.active').length) return; /*skip hidden video in MSOs*/
  153.     var delay = parseFloat($(elem).attr('data-autodelay'))* 1000 || 250+i;
  154.     try{ setTimeout(function(){var player = elem.player || elem; player.play();}, delay); }catch(e){}
  155. }  
  156. function onNewPage(e, data){
  157.     seqPos = 0;
  158.     if(!multifile) stopAllMedia();
  159.     if(data == undefined || data.index == undefined) return;
  160.     if(!multifile) {
  161.         if(data.slider && data.slider.scrollAdjust){
  162.             data.slider.scrollAdjust();
  163.             delete data.slider.scrollAdjust;
  164.         } else if(resetSliderScrollY && sliderSettings.useSlider && $(window).scrollTop()>2){$(window).scrollTop(0);}
  165.         $('.page [data-hidestart]').addClass('hidden');
  166.         if(stopIFrameOnNewPage && nav.previousPageIndex != undefined) { stopIframe($('.page').eq(nav.previousPageIndex)); };
  167.         nav.current = data.index+1;
  168.         nav.previousPageIndex = data.index;
  169.         if(useBookmark && localStorage) localStorage[bookmarkName] = nav.current;
  170.         if(lazyLoad) loadImages(data.index);
  171.     }
  172.     $('.page').removeClass('activePage').eq(data.index).addClass('activePage').show().find('audio,video').filter('[data-autoplay]').each(function(i,elem){autoPlayMedia(i, elem)});
  173.     var aniLoad = $('.activePage').attr('data-ani-load');
  174.     if(aniLoad && aniLoad.length) eval(aniLoad);
  175.     $('.activePage .cover').filter('[data-delay]').each(function(index,el){
  176.         setTimeout(function(){ $(el).trigger(clickEv); }, parseFloat($(el).attr('data-delay'))*1000 );
  177.         return false;
  178.     });
  179.     $('.activePage .mso > .state.active').trigger('newState');
  180. }
  181. function loadImages(pageIndex) {
  182.     var pages = $('.page');
  183.     loadPageImages(pages.eq(pageIndex));
  184.     loadPageImages(pages.eq(pageIndex+1));
  185.     if(pageIndex > 0){ loadPageImages(pages.eq(pageIndex-1)); }
  186. }
  187. function loadPageImages(targPage){
  188.     if(!targPage.data('loaded')){
  189.         targPage.find('img').filter('[data-src]').each(function(index,el){
  190.             var $el = $(el);
  191.             if((!isWebkit || !isLocal) && $el.hasClass('svg-img')){
  192.                 $el.parent().load($el.attr('data-src')+' svg',function(resp,status,xhr){
  193.                     if(status==='error'){$el.attr('src', $el.attr('data-src'));}
  194.                 });
  195.             } else{$el.attr('src', $el.attr('data-src'));}
  196.         });
  197.         targPage.data('loaded', true);
  198.     }
  199. }
  200. /*to do:check for when multiple pages are visible*/
  201. function checkScroll(e, mode){
  202.     if(window.scrolling) return;
  203.     var docMin, docMax, docSpan, elemSpan, elemMin, elemMax, elemCenter;
  204.     var vertMode = (mode === 'v');
  205.     docMin = (vertMode) ? $(window).scrollTop() : $(window).scrollLeft();
  206.     docMax = (vertMode) ? docMin + $(window).height(): docMin + $(window).width();
  207.     docSpan = docMax - docMin;
  208.     $('.pages .page').not('.activePage').each(function(index,elem) {
  209.         elemMin = (vertMode) ? $(elem).offset().top : $(elem).offset().left;
  210.         elemMax = (vertMode) ? elemMin + $(elem).height() : elemMin + $(elem).width();
  211.         elemSpan = elemMax - elemMin;
  212.         if(docSpan <= elemSpan) {
  213.             elemCenter = elemMin + elemSpan*.5;
  214.             if(elemCenter < docMax && elemCenter > docMin){
  215.                 $(document).trigger('newPage', {index:$(elem).index()});
  216.                 return;
  217.             }
  218.         }else if((elemMax <= docMax) && (elemMin >= docMin)) {
  219.             $(document).trigger('newPage', {index:$(elem).index()});
  220.             return;
  221.         }
  222.     });
  223. }
  224. function onNewState(e){
  225.     var targState = $(e.target).show();
  226.     var aniLoad = targState.attr('data-ani-load');
  227.     if(aniLoad && aniLoad.length) eval(aniLoad);
  228.     stopAllMedia(targState.siblings('.state'));
  229.     targState.find('audio,video').filter('[data-autoplay="1"]').each(function(i,elem){autoPlayMedia(i, elem)});
  230.     targState.find('[data-autostart="1"]').each(function(i,el){toFirstState(el); startSlideShowDelayed(el); });
  231.     targState.siblings('.state').find('[data-hidestart]').addClass('hidden');
  232. }
  233. function nextState(dataID, loop) {
  234.     var mso = $('[data-id=' + dataID + ']');
  235.     var states = mso.first().children('.state');
  236.     var current = states.siblings('.active').index();
  237.     if(current+1 < states.length) {
  238.         mso.each(function(index,elem) {
  239.             if(elem.crossfade > 0) {
  240.                 var el = $(elem).removeClass('hidden');
  241.                 var last = el.children('.state.active').removeClass('active').addClass('transition').show().fadeOut(elem.crossfade, function(){$(this).removeClass('transition')});
  242.                 el.children('.state').eq(current+1).addClass('active').hide().fadeIn(elem.crossfade, function(e) { last.hide(); $(this).trigger('newState'); });
  243.             } else $(elem).removeClass('hidden').children('.state').removeClass('active').eq(current+1).addClass('active').trigger('newState');
  244.         });
  245.     } else if(loop) {
  246.         mso.each(function(index,elem) {
  247.             if(elem.hasOwnProperty('loopcount')) {
  248.                 elem.loopcount++;
  249.                 if(elem.loopmax != -1 && elem.loopcount >= elem.loopmax) {
  250.                     stopSlideShow(elem);
  251.                     return;
  252.                 }
  253.             }
  254.             if(elem.crossfade > 0) {
  255.                 var el = $(elem).removeClass('hidden');
  256.                 var last = el.children('.state.active').removeClass('active').addClass('transition').show().fadeOut(elem.crossfade, function(){$(this).removeClass('transition')});
  257.                 el.children('.state').first().addClass('active').hide().fadeIn(elem.crossfade, function(e) { last.hide(); $(this).trigger('newState');});
  258.             } else $(elem).removeClass('hidden').children('.state').removeClass('active').first().addClass('active').trigger('newState');
  259.         });
  260.     }
  261. }
  262. function prevState(dataID, loop) {
  263.     var mso = $('[data-id=' + dataID + ']');
  264.     var states = mso.first().children('.state');
  265.     var current = states.siblings('.active').index();
  266.     if(current-1 > -1) {
  267.         mso.each(function(index,elem) {
  268.             if(elem.crossfade > 0) {
  269.                 var el = $(elem).removeClass('hidden');
  270.                 var last = el.children('.state.active').removeClass('active').addClass('transition').show().fadeOut(elem.crossfade,function(){$(this).removeClass('transition')});
  271.                 el.children('.state').eq(current-1).addClass('active').hide().fadeIn(elem.crossfade,function(e) { last.hide(); $(this).trigger('newState');});
  272.             } else $(elem).removeClass('hidden').children('.state').removeClass('active').eq(current-1).addClass('active').trigger('newState');
  273.         });
  274.     } else if(loop) {
  275.         mso.each(function(index,elem) {
  276.             if(elem.hasOwnProperty('loopcount')) {
  277.                 elem.loopcount++;
  278.                 if(elem.loopmax != -1 && elem.loopcount >= elem.loopmax) {
  279.                     stopSlideShow(elem);
  280.                     return;
  281.                 }
  282.             }
  283.             if(elem.crossfade > 0) {
  284.                 var el = $(elem).removeClass('hidden');
  285.                 var last = el.children('.state.active').removeClass('active').addClass('transition').show().fadeOut(elem.crossfade,function(){$(this).removeClass('transition')});
  286.                 el.children('.state').last().addClass('active').hide().fadeIn(elem.crossfade,function(e) { last.hide(); $(this).trigger('newState');});
  287.             } else $(elem).removeClass('hidden').children('.state').removeClass('active').last().addClass('active').trigger('newState');
  288.         });
  289.     }
  290. }
  291. function toState(dataID, stateIndex, restoreOnRollOut, restoreTarg){
  292.     if(restoreOnRollOut) {
  293.         var current = $('[data-id=' + dataID + ']').children('.state.active').first().index();
  294.         $(restoreTarg).mouseout(function() { toState(dataID, current); });
  295.     }
  296.     $('[data-id=' + dataID + ']').each(function(index,elem) {
  297.         if(elem.playing) stopSlideShow(elem);
  298.         $(elem).children('.state').removeClass('active').eq(stateIndex).addClass('active').trigger('newState').parent('.mso').removeClass('hidden');
  299.     });
  300. }
  301. function toFirstState(el) { var f = (el.reverse) ? $(el).children('.state').length-1 : 0; toState($(el).attr('data-id'), f); }
  302. function startSlideShowDelayed(el) {
  303.     var mso=$(el);
  304.     setTimeout(function(){ startSlideShow(el); }, parseFloat(mso.attr('data-autostartdelay'))*1000 + (mso.is(':visible')?el.duration*1000:0));
  305. }
  306. function startSlideShow(el){
  307.     if(el.playing || $(el).is(':hidden')) return;
  308.     el.playing = true;
  309.     el.loopcount = 0;
  310.     var func = (el.reverse) ? prevState : nextState;
  311.     func($(el).attr('data-id'), true );
  312.     el.playint = setInterval(function(){ func($(el).attr('data-id'), true ); }, el.duration*1000);
  313. }
  314. function stopSlideShow(elem) {
  315.     elem.playing = false;
  316.     if(elem.hasOwnProperty('playint')) clearInterval(elem.playint);
  317.     $(elem).find('.state').css('display','').css('opacity','1');
  318. }
  319. function hide(dataID) { $('[data-id=' + dataID + ']').addClass('hidden'); }
  320. function show(dataID) { $('[data-id=' + dataID + ']').removeClass('hidden'); }
  321. function loadFrame(iframe){ iframe.src = $(iframe).attr('data-src'); }
  322. function animateImageSeq(dir,rev,amt,threshold,msoID,loopSwipe,init){
  323.     if(init) {
  324.         in5.swipeStartTime = new Date().getTime()-20,
  325.         in5.swipePosVal = 0, amt /= threshold, threshold *= .001;
  326.     }
  327.     var lastPos = in5.swipePosVal;
  328.     in5.swipeTimeElapsed = new Date().getTime()-in5.swipeStartTime;
  329.     in5.swipePosVal = imageSeqEase(in5.swipeTimeElapsed,0,amt,360);
  330.     if(init || (in5.swipePosVal-lastPos) >= threshold) {
  331.         switch(dir){
  332.             case "left":
  333.                 if(rev) prevState(msoID, loopSwipe);
  334.                 else nextState(msoID, loopSwipe);
  335.                 break;
  336.             case "right":
  337.                 if(rev) nextState(msoID, loopSwipe);
  338.                 else prevState(msoID, loopSwipe);
  339.                 break;
  340.         }
  341.     }
  342.     if(in5.swipeTimeElapsed < 300 || Math.ceil(in5.swipePosVal)<amt){ setTimeout(function(){
  343.         animateImageSeq(dir,rev,amt,threshold,msoID,loopSwipe); },20); }
  344. }
  345. function imageSeqEase(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b; }
  346. function initWebApp(){
  347.     var isDevice, deviceName, nameForNonDeviceFile = webAppType, nameForDeviceFile = webAppType;
  348.     switch(webAppType){
  349.         case 'ipad': deviceName2 = deviceName = 'iPad'; isDevice = isIPad; break;
  350.         case 'iphone': deviceName2 = deviceName = 'iPhone'; isDevice = isIPhone; break;
  351.         case 'android': deviceName2 = deviceName = 'Android'; isDevice = isAndroid; break;
  352.         default:
  353.             deviceName = 'Mobile'; deviceName2 = 'Mobile Device';
  354.             isDevice = (isAndroid || isIPad || isIPhone);
  355.             nameForDeviceFile = (isAndroid) ? 'android' : ((isIPad) ? 'ipad' : 'iphone');
  356.     }
  357.     if(isDevice){
  358.         if(!navigator.standalone) {
  359.             $('#container').hide();
  360.             if(window.stop && !$('html').is('[manifest]')/*does not have app cache*/){
  361.                 window.stop();
  362.                 $('body').addClass('loaded');
  363.             }
  364.         $('body').css('background','#fff)').append('<img src="assets/images/add_to_home_'+nameForDeviceFile+'.png" />');
  365.             return true;
  366.         }
  367.     } else if(limitWebAppToDevice) {
  368.         $('#container').hide();
  369.         if(window.stop){
  370.             $('body').addClass('loaded').find('#toloadIndicator').hide();
  371.             window.stop();
  372.         }
  373.         var sendLinkURL = 'mailto:?subject=' + escape(webAppEmailSubject.split('{deviceName}').join(deviceName)) +'&amp;body=' + escape(webAppEmailBody.split('{deviceName}').join(deviceName2)) +
  374.         (location.protocol == 'file:' ? '%28Post%20to%20a%20web%20server%20to%20show%20URL%29' : location.href) +'"><img src="assets/images/non_'+nameForNonDeviceFile+'.png';
  375.         $('body').css('background','#fff').append('<a href="'+sendLinkURL+'" /></a>');
  376.         return true;
  377.     }
  378.     return false;
  379. }
  380. function initClickEvents(){
  381.     $('#container').find('*').each(function(index,el){
  382.         var clickArr=[],$el=$(el),args,postArr=[];
  383.         $.each(el.attributes,function(ind,attrib){
  384.             var at=attrib.name, aval=attrib.value;
  385.             switch(at){
  386.                 case 'onclick': postArr.push(function(){$el.attr('data-onclick',aval).removeAttr(at);}); clickArr.push(function(event){eval($el.attr('data-onclick'));/*name must be 'event'*/ }); break;
  387.                 case 'data-ani-click': clickArr.push(function(e){       if($(e.target).closest('a,button,input,select,textarea,.mejs-overlay-button,map,[onclick],[data-useswipe="1"],[data-tapstart="1"],.panzoom',$el).length>0)return; /*exclude clicks on these*/
  388.             if($el.hasClass('activePage')) eval(aval); }); break;
  389.                 case 'data-click-show': clickArr.push(function(e){ $.each(aval.split(','), function(i,val){ show(val); }); }); break;
  390.                 case 'data-click-hide': clickArr.push(function(e){ $.each(aval.split(','), function(i,val){ hide(val); }); $el.parent('a').trigger(clickEv); }); break;
  391.                 case 'data-click-next':clickArr.push(function(e){ args=($el.attr('data-loop')=='1'); $.each(aval.split(','), function(i,val){ nextState(val,args); }); }); break;              
  392.                 case 'data-click-prev': clickArr.push(function(e){ args=($el.attr('data-loop')=='1'); $.each(aval.split(','), function(i,val){ prevState(val,args); }); }); break;
  393.                 case 'data-click-state': clickArr.push(function(e){ $.each(aval.split(','), function(i,val){ args=val.split(':'); toState(args[0],args[1]); }); }); break;
  394.                 case 'data-click-play': clickArr.push(function(e){ $.each(aval.split(','), function(i,val){ args=val.split(':'); playMedia(args[0],args[1]); }) }); break;
  395.                 case 'data-click-pause': clickArr.push(function(e){$.each(aval.split(','), function(i,val){ pauseMedia(val); }) }); break;
  396.                 case 'data-click-stop': clickArr.push(function(e){ $.each(aval.split(','), function(i,val){ pauseMedia(val,true);}) }); break;
  397.                 case 'data-click-stopall': clickArr.push(function(e){stopAllMedia();}); break;
  398.             }
  399.         });
  400.         $.each(postArr,function(i,func){func();});
  401.         var pd = touchEnabled || clickArr.length===1;
  402.         if(clickArr.length) { $el.on(clickEv,function(e){$.each(clickArr,function(i,func){func.call(el,e);}); if(pd){return false;} e.stopPropagation();  }); }
  403.     });
  404. }
  405. $(window).on('hashchange', function(e){ checkHashData(); });
  406. function checkHashData(){
  407.     if(multifile){
  408.         var hash = location.hash.split('#').join('');
  409.         if(hash.length){
  410.             var pie = hash.split('&'), plen = pie.length, piece, parts;
  411.             var offset = $('#container').offset();
  412.             while(plen--){
  413.                 piece = pie[plen], parts = piece.split('=');
  414.                 switch(parts[0]){
  415.                     case 'refy':$(document).scrollTop(parseInt(parts[1]) + offset.top); break;
  416.                 }
  417.             }
  418.         }
  419.     }
  420. }
  421. $(function(){
  422.     if(webAppType.length && initWebApp()) return false;
  423.     $(document).on('newPage', function(e, data) { onNewPage(e, data); });
  424.     checkHashData();
  425.     if(!multifile && pageMode.substr(0,2) === 'cs') $(document).on('scroll', function(e){ checkScroll(e, pageMode.substr(2)); });
  426.     if($('ul.thumbs').length) $('#in5footer').hide();
  427.     initClickEvents();
  428.     $('.scroll-horiz > *').each(function(index,elem){
  429.         var left = parseFloat($(elem).css('left'));
  430.         if(left < 0){ $(elem).css({left:'auto',right:left+'px'}).attr('style', $(elem).attr('style').replace(/( \!important)*;/g,' !important;')).parent('.scroll-horiz').addClass('pulltab-left'); }
  431.     });
  432.     $('.scroll-vert > *').each(function(index,elem){
  433.         var top = parseFloat($(elem).css('top'));
  434.         if(top < 0){ $(elem).css({top:'auto',bottom:top+'px'}).attr('style', $(elem).attr('style').replace(/( \!important)*;/g,' !important;')).parent('.scroll-vert').addClass('pulltab-top'); }
  435.     });
  436.     $('[data-ani]').on('webkitAnimationEnd oanimationend oAnimationEnd msAnimationEnd animationend',
  437.         function(e){
  438.         var jel = $(this);
  439.         if((jel.attr('style')||'').indexOf('reverse')<0) {
  440.             if(jel.attr('data-hideend')=='1') jel.addClass('hidden');
  441.         }else {
  442.             jel.css(pre+'animation', 'none');
  443.             if(jel.attr('data-hidestart')=='1') jel.addClass('hidden');
  444.         }
  445.         seqNext(e);
  446.         return false;
  447.     }).each(function(index,el){
  448.         var $el = $(el),hs=($el.attr('data-hidestart')=='1'),he=($el.attr('data-hideend')=='1');
  449.         if(!multifile && (hs || he)){
  450.         $(document).on('newPage',function(e,data){
  451.             var onpage = $.contains($('.page').eq(data.index)[0],el),style=$el.attr('style')||'';
  452.             if(!onpage){
  453.                 if(he) $el.removeClass('hidden');
  454.                 if(hs) $el.addClass('hidden');
  455.                 $el.attr('style',style.replace(/(?:animation[^;]+;*\s*)/,''));
  456.             }
  457.         }); }
  458.     });
  459.     $('.mso > .state').on('newState', function(e){ onNewState(e); });
  460.     $('.mso.slideshow').each(function(index,el) {
  461.         var mso = $(el), msoID = mso.attr('data-id'), loopSwipe = (mso.attr('data-loopswipe') == '1');
  462.         var msoSwipe = (mso.attr('data-useswipe') == '1');
  463.         el.duration = parseFloat(mso.attr('data-duration'));
  464.         el.loopmax = parseInt(mso.attr('data-loopmax'));
  465.         el.crossfade = parseFloat(mso.attr('data-crossfade')) * 1000;
  466.         el.reverse = mso.attr('data-reverse') == '1';
  467.         el.pageIndex = mso.parents('.page').index();
  468.         if(mso.attr('data-tapstart') == '1' && !msoSwipe) {
  469.             mso.on(clickEv, function(e) {
  470.             if(!this.playing) startSlideShow(this);
  471.             else stopSlideShow(this);
  472.             return false;
  473.             });
  474.         }
  475.         if(mso.attr('data-autostart') == '1') {
  476.             $(document).on('newPage', function(e, data) {
  477.                 if(data.index == el.pageIndex) startSlideShowDelayed(el);
  478.                 else if (el.playing) stopSlideShow(el);
  479.             });
  480.         }
  481.         if(msoSwipe) {
  482.             if(useSmoothSwipeOnImageSequences && mso.hasClass('seq')){
  483.                 var triggerDist, lastPos,rev = el.reverse;
  484.                 mso.swipe({
  485.                     allowPageScroll:'vertical',fingers:1,maxTimeThreshold:9999,triggerOnTouchLeave:true,
  486.                     swipeStatus:function(evt,phase,dir,dist,dur,fingers,fingerData,currentDir) {
  487.                         switch(phase){
  488.                             case 'move':
  489.                                 stepDist = Math.abs(dist - lastPos);
  490.                                 if(stepDist < triggerDist) return;
  491.                                 switch(currentDir){
  492.                                     case "left":
  493.                                         if(rev) prevState(msoID, loopSwipe);
  494.                                         else nextState(msoID, loopSwipe);
  495.                                         lastPos = dist;
  496.                                         break;
  497.                                     case "right":
  498.                                         if(rev) nextState(msoID, loopSwipe);
  499.                                         else prevState(msoID, loopSwipe);
  500.                                         lastPos = dist;
  501.                                         break;
  502.                                 }
  503.                                 break;
  504.                             case 'start': lastPos = 0; triggerDist = mso.width()/mso.find('.state').length*.5; break;
  505.                             case 'end':animateImageSeq(currentDir,rev,stepDist,triggerDist,msoID,loopSwipe,true); break;
  506.                         }
  507.                     },
  508.                 });
  509.             } else {
  510.                 mso.swipe({
  511.                 allowPageScroll:'vertical', fingers:1, triggerOnTouchEnd:false, triggerOnTouchLeave:true,
  512.                 swipe:function(event, direction, distance, duration, fingerCount) {
  513.                     switch(direction) {
  514.                         case "left":
  515.                             if(el.reverse) prevState(msoID, loopSwipe);
  516.                             else nextState(msoID, loopSwipe);
  517.                             break;
  518.                         case "right":
  519.                             if(el.reverse) nextState(msoID, loopSwipe);
  520.                             else prevState(msoID, loopSwipe);
  521.                             break;     
  522.                     }
  523.                 } });
  524.             }
  525.         }
  526.     });
  527.     if($('.panzoom').length) initPanZoom();
  528.     $('[target=_app]').each(function(){var jel=$(this); jel.on(clickEv,function(){location=jel.attr('href');return false;}) });
  529.     if($.colorbox) {
  530.         $('.lightbox').filter(':not(svg *)').filter(':not([href*=lightbox\\=0])').filter(isBaker?':not([href*=referrer\\=Baker])':'*').colorbox({iframe:true, width:"80%", height:"80%"});
  531.         $('svg .lightbox').each(function(index,el){
  532.             var jel = $(el);
  533.             var xref = jel.attr('xlink:href');
  534.             if(xref.indexOf('lightbox=0') != -1) return;
  535.             if(!isBaker || xref.indexOf('referrer=Baker') != -1){
  536.                 jel.on(clickEv, function(){
  537.                 $.colorbox({iframe:true, width:"80%", height:"80%", href:$(this).attr('xlink:href')});
  538.                 return false;
  539.                 });
  540.             }
  541.         });
  542.         $('.thumb').colorbox({maxWidth:"85%", maxHeight:"85%"});
  543.         $(window).on('orientationchange', function(e){ if($('#cboxWrapper:visible').length) $.colorbox.resize(); });
  544.     }
  545.     $('img').on('dragstart', function(event) { event.preventDefault(); });
  546.     $('.cover').on(clickEv, function() { loadFrame($(this).hide().siblings('iframe')[0]); return false; });
  547.     if(multifile){
  548.         $('.page [data-hidestart]').addClass('hidden');
  549.         if(!lazyLoad){ $('.svg-img').each(function(){ $(this).parent().load($(this).attr('src')+' svg'); }); }
  550.         $('#prefooter').css('min-height', $('.page').height());
  551.         nav = { numPages:31,
  552.         previousPageIndex:nav?nav.previousPageIndex:undefined,
  553.         current:parseInt(location.href.split('/').pop().split('.html').join('')),
  554.         back:function(ref){nav.to(nav.current-1);},
  555.         next:function(ref){nav.to(nav.current+1);},
  556.         to:function(n,coords){
  557.             if(n <= 0 || n > nav.numPages) return;
  558.             var targPage = (n*.0001).toFixed(4).substr(2) + '.html';
  559.             if(coords && coords.length) targPage += '#refx='+coords[0]+'&refy='+coords[1];
  560.             if(targPage == location.href.split('/').pop()) $(window).trigger('hashchange');
  561.             else location.assign(targPage);
  562.         } };
  563.         $('nav #nextBtn').on(clickEv, function(){ nav.next(); return false; });
  564.         $('nav #backBtn').on(clickEv, function(){ nav.back(); return false; });
  565.         if(arrowNav && $('.page').length){
  566.             $('nav:hidden, nav #backBtn, nav #nextBtn').show();
  567.             if(nav.current == 1) $('nav #backBtn').hide();
  568.             if(nav.current == nav.numPages) $('nav #nextBtn').hide();
  569.         }
  570.     } else if(pageMode.indexOf('liquid') != -1) {
  571.         if(!lazyLoad){ $('.svg-img').each(function(){ $(this).parent().load($(this).attr('src')+' svg'); }); }
  572.         nav = { numPages:$('.pages .page').length,
  573.         current:1,
  574.         previousPageIndex:nav?nav.previousPageIndex:undefined,
  575.         back:function(ref){nav.to(nav.current-1);},
  576.         next:function(ref){nav.to(nav.current+1);},
  577.         first:function(){nav.to(1);},
  578.         last:function(){nav.to(nav.numPages);},
  579.         to:function(n){
  580.             if(n < 1 || n > nav.numPages) return;
  581.             $(document).trigger('newPage', {index:n-1});
  582.             if(n < 2) $('nav #backBtn:visible').hide();
  583.             else $('nav #backBtn:hidden').show();
  584.             if(n >= nav.numPages) $('nav #nextBtn:visible').hide();
  585.             else $('nav #nextBtn:hidden').show();
  586.         } };
  587.         $('nav #nextBtn').on(clickEv, function(){ nav.next(); return false; });
  588.         $('nav #backBtn').on(clickEv, function(){ nav.back(); return false; });
  589.         if(arrowNav) $('nav:hidden').show();
  590.         nav.to(getStartPage()); /*init*/
  591.     } else if($.hasOwnProperty('scrollTo')){
  592.         var dir = (pageMode[2] == 'h') ? 'x' : 'y';
  593.         nav = { numPages:$('.pages .page').length,
  594.             previousPageIndex:nav?nav.previousPageIndex:undefined,
  595.             back:function(ref){var ind=$(ref).parent('.page').prev().index(); if(ind!=-1) nav.to(ind+1);},
  596.             next:function(ref){var ind=$(ref).parent('.page').next().index(); if(ind!=-1) nav.to(ind+1);},
  597.             first:function(){nav.to(1)},
  598.             last:function(){nav.to(nav.numPages)},
  599.             to:function(n,c){
  600.                 window.scrolling = true;
  601.                 var scrollTarg;
  602.                 if(c){
  603.                     var offset = $('.page').eq(n-1).offset();
  604.                     scrollTarg = {left:offset.left+c[0],top:offset.top+c[1]};                  
  605.                 } else { scrollTarg = $('.page').eq(n-1)[0]; }
  606.                 $.scrollTo(scrollTarg, 500, {axis:dir, onAfter:function(){window.scrolling=false}});
  607.                 $(document).trigger('newPage', {index:n-1});} };
  608.             nav.to(getStartPage());
  609.     }
  610.     if(useSwipe && !$('#container > ul.thumbs').length) {
  611.         var container = $('#container'), scrollStart, scrollFunc = vertMode ? 'scrollLeft':'scrollTop';
  612.         var vertMode = (pageMode.substr(0,1) == "v");
  613.         if(vertMode) $.fn.swipe.defaults.excludedElements+=",.scroll";
  614.         container.swipe({
  615.             allowPageScroll: (vertMode ? 'horizontal' : 'vertical'),
  616.             preventDefaultEvents:false,
  617.             fingers:1, threshold:150,
  618.             excludedElements:$.fn.swipe.defaults.excludedElements+',.mejs-overlay-button,map,[onclick],[data-useswipe="1"],[data-tapstart="1"],.panzoom,.scroll-horiz',
  619.             swipeStatus:function(event, phase) {
  620.                 switch(phase){ case 'start': scrollStart = $(window)[scrollFunc](); break; }
  621.             },swipe:function(event, direction, distance, duration, fingerCount) {
  622.                 if(Math.abs($(window)[scrollFunc]()-scrollStart)>distance) return;
  623.                 switch(direction) {
  624.                     case "left": if(!vertMode) nav.next(); break;
  625.                     case "right": if(!vertMode) nav.back(); break;
  626.                     case "up": if(vertMode) nav.next(); break;
  627.                     case "down": if(vertMode) nav.back(); break;       
  628.                 }
  629.             }
  630.         });
  631.     }
  632. });
  633. $(window).load(function(){
  634.     $('body').addClass('loaded');
  635.     if(arrowNav && pageMode.indexOf('liquid') != -1) $('nav:hidden').show();
  636.    
  637.     initMedia(sliderSettings != undefined);
  638. });
  639. function initMedia(hasSlider){
  640.     if(isBaker) return;
  641.     if(!$('video,audio').length) {
  642.         if(multifile) $(document).trigger('newPage', {index:0});
  643.         return;
  644.     }
  645.     if(!window.mejs || $('video,audio').mediaelementplayer == undefined) {
  646.         setTimeout(function(){initMedia(hasSlider);}, 50);
  647.         return;
  648.      }
  649.     var playerMode = (uAgent.indexOf('firefox') > -1
  650.         && isLocal && parseInt(jQuery.browser.version)<22) ? 'shim' : 'auto';
  651.     if((isIPad || isIPhone) && $('audio,video').filter('[data-autoplay]').length) {
  652.         $('.page').one('touchstart', function(e){
  653.             $(e.currentTarget).next().find('audio,video').filter('[data-autoplay]').each(function(){ if(this.load) this.load(); });
  654.         });
  655.     }
  656.     if(hasSlider && (isIPad || isIPhone)) $('video,audio').mediaelementplayer({success:onMediaLoadSuccess});
  657.     else { $('video,audio').mediaelementplayer({pluginPath:'assets/media/',iPadUseNativeControls:true, iPhoneUseNativeControls:true, mode:playerMode,
  658.         AndroidUseNativeControls:true, enableKeyboard:false, success:onMediaLoadSuccess});
  659.     }
  660. }
  661. function onMediaLoadSuccess (me, domObj) {
  662.     if(multifile) $(document).trigger('newPage', {index:0});
  663.     else if(pageMode.indexOf('liquid') != -1 && me.pluginType) $(document).trigger('newPage', {index:$('.activePage').index()});
  664.     if($(domObj).hasClass('mejs-fsonly')) {me.addEventListener('play',function(){ try{domObj.player.enterFullScreen(); me.enterFullScreen();}catch(e){} }) };
  665.     if($(domObj).attr('data-stoplast') == '1') { if(domObj.hasOwnProperty('player')) domObj.player.options.autoRewind = false; };
  666.     me.addEventListener('play',function(){ $(document).trigger('mediaPlayback', {me:me,domObj:domObj}); });
  667.     if(me.pluginType == 'flash' && $(domObj).attr('loop') == 'loop') { me.addEventListener('ended', function() { domObj.player.play(); }); }
  668. }
  669. if(isBaker){
  670.     $(window).on('blur', function(e){
  671.         stopAllMedia(this.document);
  672.         $(window).scrollTop(0);
  673.         $('.page [data-hidestart]').addClass('hidden');
  674.         $(window).data('focused', false);
  675.     }).on('focus', function(e) {
  676.         if(!$(window).data('focused')) $(document).trigger('newPage', {index:0});
  677.         $(window).data('focused', true);
  678.     });
  679.     $(function(){ $('.page [data-hidestart]').addClass('hidden'); });
  680. }
  681. function getStartPage(){
  682.     if(multifile || !useBookmark || !localStorage) return 1;
  683.     if(!localStorage[bookmarkName]) return 1;
  684.     return localStorage[bookmarkName];
  685. }
  686. $(function(){
  687.     if(!shareInfo.btns || !shareInfo.btns.length) return;
  688.     var i=shareInfo.btns.length,refURL=escape('https://www.facebook.com/WohnSchick/'||location.href),
  689.     refName=escape(document.title), arr=[];
  690.     while(i--) {
  691.         //Link direkt zu Facebook : Edit Ehmke : https://www.facebook.com/sharer/sharer.php?u='+refURL+' entfernt und gegen http://www.facebook.com/WohnSchick ersetzt, alt und title angepasst.
  692.         switch(shareInfo.btns[i]){
  693.             case 'facebook': arr.push('<a id="sb-fb" href="http://www.facebook.com/WohnSchick" target="_blank" alt="Zur Facebookseite" title="Zur Facebookseite"><span>facebook</span></a>'); break;
  694.             case 'twitter': arr.push('<a id="sb-tw" href="https://twitter.com/home?status=Check%20out%20'+refName+'%0A'+refURL+'" target="_blank" alt="Share on Twitter" title="Share on Twitter"><span>twitter</span></a>'); break;
  695.             case 'linkedin': arr.push('<a id="sb-li" href="https://www.linkedin.com/shareArticle?mini=true&url='+refURL+'&title=Check%20out%20'+refName+'&summary=Check%20out%20'+refURL+'&source='+refURL+'" target="_blank" alt="Share on Linkedin" title="Share on Linkedin"><span>linkedin</span></a>'); break;
  696.             case 'gplus': arr.push('<a id="sb-gp" href="https://plus.google.com/share?url='+refURL+'" target="_blank" alt="Share on Google+" title="Share on Google+"><span>google+</span></a>'); break;
  697.         }
  698.     }
  699.     $('body').append('<div id="share-wrap" class="align-'+shareInfo.align+'">\r'+arr.reverse().join('\r')+'\r</div>');
  700.     $('#share-wrap > a').on('click',function(e){
  701.         if(useTracker && trackButtons && _gat) _gat('send', 'social', {'socialNetwork':$(this).text(), 'socialAction':'share', 'socialTarget':location.href});
  702.         window.open(this.href,'Share', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');
  703.         return false;
  704.     });
  705. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement