diff --git a/UniversalLanguageSelector.php b/UniversalLanguageSelector.php
index 39ceb817..7a7912f4 100644
--- a/UniversalLanguageSelector.php
+++ b/UniversalLanguageSelector.php
@@ -56,15 +56,6 @@ $wgResourceModules['ext.uls.lcd'] = array(
'localBasePath' => $dir,
'remoteExtPath' => 'UniversalLanguageSelector',
'styles' => 'resources/css/ext.uls.lcd.css',
- 'dependencies' => array(
- 'jquery.viewport',
- ),
-);
-
-$wgResourceModules['jquery.viewport'] = array(
- 'scripts' => 'resources/jquery.viewport.js',
- 'localBasePath' => $dir,
- 'remoteExtPath' => 'UniversalLanguageSelector',
);
$wgResourceModules['ext.uls.core'] = array(
diff --git a/examples/index.html b/examples/index.html
index da3b6ee6..a867fce3 100644
--- a/examples/index.html
+++ b/examples/index.html
@@ -19,7 +19,6 @@
-
diff --git a/resources/ext.uls.lcd.js b/resources/ext.uls.lcd.js
index 788cb707..ba7596b2 100644
--- a/resources/ext.uls.lcd.js
+++ b/resources/ext.uls.lcd.js
@@ -98,12 +98,24 @@
},
listen: function() {
- this.$element.scroll( function() {
- var inviewRegion = $( 'div.uls-lcd-region-section:in-viewport:first' ).attr( 'id' );
+ var that = this;
+ // The region section need to be in sync with the map filter.
+ that.$element.scroll( function () {
+ var inviewRegion = $( 'div.uls-lcd-region-section:first' ).attr( 'id' );
+ var listtop = that.$element.position().top;
+ $( 'div.uls-lcd-region-section' ).each( function () {
+ var offset = $( this ).position().top - listtop;
+ if ( offset < 0 ) {
+ inviewRegion = $( this ).attr( 'id' );
+ } else {
+ return false;
+ }
+ } );
+
var inview = $.uls.data.regiongroups[inviewRegion];
$( 'div.uls-region' ).removeClass( 'active' );
$( 'div#uls-region-' + inview ).addClass( 'active' );
- });
+ } );
}
};
diff --git a/resources/jquery.viewport.js b/resources/jquery.viewport.js
deleted file mode 100644
index 7826000f..00000000
--- a/resources/jquery.viewport.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Viewport - jQuery selectors for finding elements in viewport
- *
- * Copyright (c) 2008-2009 Mika Tuupola
- *
- * Licensed under the MIT license:
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Project home:
- * http://www.appelsiini.net/projects/viewport
- *
- */
-(function($) {
-
- $.belowthefold = function(element, settings) {
- var fold = $(window).height() + $(window).scrollTop();
- return fold <= $(element).offset().top - settings.threshold;
- };
-
- $.abovethetop = function(element, settings) {
- var top = $(window).scrollTop();
- return top >= $(element).offset().top + $(element).height() - settings.threshold;
- };
-
- $.rightofscreen = function(element, settings) {
- var fold = $(window).width() + $(window).scrollLeft();
- return fold <= $(element).offset().left - settings.threshold;
- };
-
- $.leftofscreen = function(element, settings) {
- var left = $(window).scrollLeft();
- return left >= $(element).offset().left + $(element).width() - settings.threshold;
- };
-
- $.inviewport = function(element, settings) {
- return !$.rightofscreen(element, settings) && !$.leftofscreen(element, settings) && !$.belowthefold(element, settings) && !$.abovethetop(element, settings);
- };
-
- $.extend($.expr[':'], {
- "below-the-fold": function(a, i, m) {
- return $.belowthefold(a, {threshold : 0});
- },
- "above-the-top": function(a, i, m) {
- return $.abovethetop(a, {threshold : 0});
- },
- "left-of-screen": function(a, i, m) {
- return $.leftofscreen(a, {threshold : 0});
- },
- "right-of-screen": function(a, i, m) {
- return $.rightofscreen(a, {threshold : 0});
- },
- "in-viewport": function(a, i, m) {
- return $.inviewport(a, {threshold : 0});
- }
- });
-
-
-})(jQuery);