diff --git a/src/jquery.uls.lcd.js b/src/jquery.uls.lcd.js index 1f4a9a0..574b323 100644 --- a/src/jquery.uls.lcd.js +++ b/src/jquery.uls.lcd.js @@ -241,7 +241,7 @@ this.$noResults.find( 'h2' ).after( $suggestions ); }, - listen: function() { + listen: function () { var that = this; if ( this.options.clickhandler ) { this.$element.on( 'click', 'div.row li', function() { @@ -251,11 +251,26 @@ // The region section need to be in sync with the map filter. that.$element.scroll( function () { - if ( this.offsetHeight + this.scrollTop >= this.scrollHeight ) { + var scrollTop = $( this ).position().top; + var scrollBottom = $( this ).height(); + if ( this.offsetHeight + this.scrollTop >= this.scrollHeight/2 ) { that.$element.trigger( 'scrollend' ); } - + // The region section need to be in sync with the map filter. + var inviewRegion = 'WW'; + that.$element.find( 'div.uls-lcd-region-section' ).each( function () { + var top = $( this ).position().top; + var height = $( this ).height(); + if ( top < scrollTop && height > scrollBottom ) { + inviewRegion = $( this ).attr( 'id' ); + return true; + } + } ); + var inview = $.uls.data.regiongroups[inviewRegion]; + $( '.regionselector' ).removeClass( 'active' ); + $( '#uls-region-' + inview ).addClass( 'active' ); } ); + } }; diff --git a/src/jquery.uls.regionfilter.js b/src/jquery.uls.regionfilter.js index 2e7f33e..e3e3c0c 100644 --- a/src/jquery.uls.regionfilter.js +++ b/src/jquery.uls.regionfilter.js @@ -65,13 +65,6 @@ }, show: function() { - // Make the selected region (and it only) active - $( '.regionselector' ).removeClass( 'active' ); - if ( this.regionGroup ) { - // if there is a region group, make it active. - this.$element.addClass( 'active' ); - } - if ( this.cache ) { // If the result cache is present, render the results from there. var result = null; @@ -141,6 +134,12 @@ // Re-populate the list of languages this.options.$target.empty(); this.show(); + // Make the selected region (and it only) active + $( '.regionselector' ).removeClass( 'active' ); + if ( this.regionGroup ) { + // if there is a region group, make it active. + this.$element.addClass( 'active' ); + } } } };