62bbb65f32af7a13701843fc85357713dbb1786b
[edumed.git] / catalogue / static / catalogue / js / lesson-list.js
1 (function($){
2 $(function() {
3
4
5 function scrollTo(thing) {
6     $('html, body').scrollTop($(thing).offset().top - $('#level-chooser').outerHeight());
7 }
8
9 function updateView() {
10     var scrolltop = $(window).scrollTop();
11
12     $('#level-chooser-place').each(function(i, el){
13         if (scrolltop > $(el).offset().top) {
14             $("#level-chooser").addClass("fixed");
15         }
16         else {
17             $("#level-chooser").removeClass("fixed");
18         }
19     });
20
21     $('.level-toc').each(function(i, el) {
22         var $sect = $($(el).parent());
23         var menu_top = $('#level-chooser').outerHeight();
24         var menu_scrolltop = scrolltop + menu_top;
25
26         if (menu_scrolltop + 2 >= $sect.offset().top && 
27                 menu_scrolltop < $sect.offset().top + $sect.outerHeight()) {
28             $(el).addClass("fixed").css("top", Math.min(
29                 menu_top, 
30                 - scrolltop + $sect.offset().top + $sect.outerHeight() - $(el).outerHeight()
31             ));
32             $("#level-chooser a[href='#" + $sect.attr('id') + "']").addClass('active');
33         }
34         else {
35             $(el).removeClass("fixed");
36             $("#level-chooser a[href='#" + $sect.attr('id') + "']").removeClass('active');
37         }
38     });
39 }
40
41
42
43 $("#level-chooser a, .level-toc a").click(function(ev) {
44     ev.preventDefault();
45     scrollTo($(this).attr('href'));
46 });
47
48
49
50
51
52 updateView();
53 $(document).scroll(updateView);
54 if (window.location.hash) {
55     scrollTo(window.location.hash);
56 }
57
58
59 });
60 })(jQuery);