Panel z widokiem HTML reaguje na zmiany w panelu z edytorem XML.
[redakcja.git] / project / static / js / jquery.autoscroll.js
index c342bdf..f8c07fb 100644 (file)
@@ -1,6 +1,7 @@
 (function($) {
     $.fn.autoscroll = function(synchronizeWith, options) {
 (function($) {
     $.fn.autoscroll = function(synchronizeWith, options) {
-        var self = $(this);
+        var $this = $(this);
+        var self = $this;
         var selfContainer = self.parent();
         var synchronizeWith = $(synchronizeWith);
         var synchronizeWithContainer = synchronizeWith.parent();
         var selfContainer = self.parent();
         var synchronizeWith = $(synchronizeWith);
         var synchronizeWithContainer = synchronizeWith.parent();
             synchronizeWithContainer = $('body', eventContainer);
             synchronizeWith = synchronizeWithContainer;
         }
             synchronizeWithContainer = $('body', eventContainer);
             synchronizeWith = synchronizeWithContainer;
         }
-
-        synchronizeWithContainer.data('autoscroll.lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
+        
+        $this.data('autoscroll:enabled', true);
+        synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
         
         eventContainer.scroll(function() {
         
         eventContainer.scroll(function() {
-            var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop');
-            var percentScrolled = distanceScrolled / synchronizeWith.height();
-            selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height());
+            if ($this.data('autoscroll:enabled')) {
+                var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop');
+                var percentScrolled = distanceScrolled / synchronizeWith.height();
+                selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height());
+            }
             synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
         });
             synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
         });
-    };
+    },
+    
+    $.fn.enableAutoscroll = function() {
+        $(this).data('autoscroll:enabled', true);
+    },
+        
+    $.fn.disableAutoscroll = function() {
+        $(this).data('autoscroll:enabled', false);
+    },
+    
+    $.fn.toggleAutoscroll = function() {
+        $(this).data('autoscroll:enabled', !$(this).data('autoscroll:enabled'));
+    }
 })(jQuery);
 
 })(jQuery);