index = Math.max(Math.min(index, slides.length - 1), 0);
slides[index].setAttribute('class', 'present');
-
- // Any element previous to index is given the 'past' class
- slides.slice(0, index).map(function(element){
- element.setAttribute('class', 'past');
- });
-
- // Any element subsequent to index is given the 'future' class
- slides.slice(index + 1).map(function(element){
- element.setAttribute('class', 'future');
- });
+
+ for( var i = 0; i < slides.length; i++ ) {
+ var slide = slides[i];
+
+ // Optimization; hide all slides that are three or more steps
+ // away from the present slide
+ slide.style.display = Math.abs( index - i ) > 3 ? 'none' : 'block';
+
+ if( i < index ) {
+ // Any element previous to index is given the 'past' class
+ slide.setAttribute('class', 'past');
+ }
+ else if( i > index ) {
+ // Any element subsequent to index is given the 'future' class
+ slide.setAttribute('class', 'future');
+ }
+ }
}
else {
// Since there are no slides we can't be anywhere beyond the