/
application.js
42 lines (36 loc) · 1.36 KB
/
application.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
splitPages = function() {
var first = $('.page .text').parent();
var nav = $('.chapternav li:last');
var chapters = $.trim($('.page .text').html()).split("\n");
var links = $.map(chapters, function(chapter, number) {
number = number + 1;
return '<li><a href="#chapter' + number + '">' + number + '</a></li>';
}).reverse();
var chapters = $.map(chapters, function(chapter, number) {
number = number + 1;
return '<div class="page" id="chapter' + number + '"><div class="chapter">' + number + '</div><div class="star" /><div class="text">' + chapter + '</div></div><div class="shadow"></div>';
}).reverse();
$.each(chapters, function(number, page) {
first.after(page);
});
$.each(links, function(number, page) {
nav.after(page);
});
first.remove();
installScrollDetector();
};
installScrollDetector = function() {
$(window).scroll(function (evt) {
var chapters = $('.page .chapter');
var visibles = $.grep(chapters, function(chapter) {
return $.inviewport(chapter, { threshold: 0 });
});
var current = $('.chapternav li.current');
var visible = $(visibles[0]).html();
if (current.html() != visible) {
current.html(visible);
}
});
};