Merge branch 'pretty' of github.com:fnp/wolnelektury into pretty
[wolnelektury.git] / wolnelektury / static / js / book.js
index 41e3be2..d6dfec9 100644 (file)
@@ -1,30 +1,37 @@
-$(function() {    
+$(function() {
     function scrollToAnchor(anchor) {
         if (anchor) {
-            var element = $('a[name="' + anchor.slice(1) + '"]');
+            var anchor_name = anchor.slice(1);
+            var element = $('a[name="' + anchor_name + '"]');
             if (element.length > 0) {
                 $.scrollTo(element, 500, {offset: {top: -50, left: 0}});
-                $(element).highlightFade('yellow');
+                foot_elem = $('#footnotes a[name="' + anchor_name + '"]');
+                if (foot_elem.length > 0) {
+                    $(element).parent().highlightFade('yellow');
+                }
                 window.location.hash = anchor;
             }
         }
     }
-    
+
     $.highlightFade.defaults.speed = 3000;
     $('#toc').hide();
     if ($('#toc li').length == 0) {
         $('#menu li a[href="#toc"]').remove();
     }
-    
+    if ($('#nota_red').length == 0) {
+        $('#menu li a[href="#nota_red"]').remove();
+    }
+
     // On page load, scroll to anchor
     scrollToAnchor(window.location.hash)
-    
+
     $('#toc, #themes, #book-text').delegate('click', 'a', function(event) {
         event.preventDefault();
         $('#menu li a.selected').click();
         scrollToAnchor($(this).attr('href'));
     });
-    
+
     $('#menu li a').toggle(function() {
         $('#menu li a.selected').click();
         $(this).addClass('selected');
@@ -33,4 +40,22 @@ $(function() {
         $(this).removeClass('selected');
         $($(this).attr('href')).slideUp('fast');
     });
+    
+
+    if (window.getSelection) {
+        $('.theme-begin').click(function() {
+            var selection = window.getSelection();
+            selection.removeAllRanges();
+            var range = document.createRange();
+
+            var e = $(".theme-end[fid='" + $(this).attr('fid') + "']")[0];
+
+            if (e) {
+                range.setStartAfter(this);
+                range.setEndBefore(e);
+                selection.addRange(range);
+            }
+        });
+    }
+
 });