133 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| window.common = (function({ common = { init: [] }}) {
 | |
| 
 | |
|   common.lockTop = function lockTop() {
 | |
|     var magiVal;
 | |
| 
 | |
|     if ($(window).width() >= 990) {
 | |
|       if ($('.editorScrollDiv').html()) {
 | |
| 
 | |
|         magiVal = $(window).height() - $('.navbar').height();
 | |
| 
 | |
|         if (magiVal < 0) {
 | |
|           magiVal = 0;
 | |
|         }
 | |
|         $('.editorScrollDiv').css('height', magiVal - 50 + 'px');
 | |
|       }
 | |
| 
 | |
|       magiVal = $(window).height() - $('.navbar').height();
 | |
| 
 | |
|       if (magiVal < 0) {
 | |
|         magiVal = 0;
 | |
|       }
 | |
| 
 | |
|       $('.scroll-locker')
 | |
|         .css('min-height', $('.editorScrollDiv').height())
 | |
|         .css('height', magiVal - 50);
 | |
|     } else {
 | |
|       $('.editorScrollDiv').css('max-height', 500 + 'px');
 | |
| 
 | |
|       $('.scroll-locker')
 | |
|         .css('position', 'inherit')
 | |
|         .css('top', 'inherit')
 | |
|         .css('width', '100%')
 | |
|         .css('max-height', '100%');
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   common.init.push(function($) {
 | |
|     // fakeiphone positioning hotfix
 | |
|     if (
 | |
|       $('.iphone-position').html() ||
 | |
|       $('.iphone').html()
 | |
|     ) {
 | |
|       var startIphonePosition = parseInt(
 | |
|         $('.iphone-position')
 | |
|           .css('top')
 | |
|           .replace('px', ''),
 | |
|         10
 | |
|       );
 | |
| 
 | |
|       var startIphone = parseInt(
 | |
|         $('.iphone')
 | |
|           .css('top')
 | |
|           .replace('px', ''),
 | |
|         10
 | |
|       );
 | |
| 
 | |
|       $(window).on('scroll', function() {
 | |
|         var courseHeight = $('.courseware-height').height();
 | |
|         var courseTop = $('.courseware-height').offset().top;
 | |
|         var windowScrollTop = $(window).scrollTop();
 | |
|         var phoneHeight = $('.iphone-position').height();
 | |
| 
 | |
|         if (courseHeight + courseTop - windowScrollTop - phoneHeight <= 0) {
 | |
|           $('.iphone-position').css(
 | |
|             'top',
 | |
|             startIphonePosition +
 | |
|               courseHeight +
 | |
|               courseTop -
 | |
|               windowScrollTop -
 | |
|               phoneHeight
 | |
|           );
 | |
| 
 | |
|           $('.iphone').css(
 | |
|             'top',
 | |
|             startIphonePosition +
 | |
|               courseHeight +
 | |
|               courseTop -
 | |
|               windowScrollTop -
 | |
|               phoneHeight +
 | |
|               120
 | |
|           );
 | |
|         } else {
 | |
|           $('.iphone-position').css('top', startIphonePosition);
 | |
|           $('.iphone').css('top', startIphone);
 | |
|         }
 | |
|       });
 | |
|     }
 | |
| 
 | |
|     if ($('.scroll-locker').html()) {
 | |
| 
 | |
|       if ($('.scroll-locker').html()) {
 | |
|         common.lockTop();
 | |
|         $(window).on('resize', function() {
 | |
|           common.lockTop();
 | |
|         });
 | |
|         $(window).on('scroll', function() {
 | |
|           common.lockTop();
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       var execInProgress = false;
 | |
| 
 | |
|       // why is this not $???
 | |
|       document
 | |
|         .getElementById('scroll-locker')
 | |
|         .addEventListener(
 | |
|           'previewUpdateSpy',
 | |
|           function(e) {
 | |
|             if (execInProgress) {
 | |
|               return null;
 | |
|             }
 | |
|             execInProgress = true;
 | |
|             return setTimeout(function() {
 | |
|               if (
 | |
|                 $($('.scroll-locker').children()[0]).height() - 800 > e.detail
 | |
|               ) {
 | |
|                 $('.scroll-locker').scrollTop(e.detail);
 | |
|               } else {
 | |
|                 var scrollTop = $($('.scroll-locker').children()[0]).height();
 | |
| 
 | |
|                 $('.scroll-locker').animate({ scrollTop: scrollTop }, 175);
 | |
|               }
 | |
|               execInProgress = false;
 | |
|             }, 750);
 | |
|           },
 | |
|           false
 | |
|         );
 | |
|     }
 | |
|   });
 | |
| 
 | |
|   return common;
 | |
| }(window));
 |