From f6dc5312980150c68510a955e4ce8e5d2691b412 Mon Sep 17 00:00:00 2001
From: Hakim El Hattab <hakim.elhattab@gmail.com>
Date: Thu, 22 Dec 2011 22:41:19 -0800
Subject: [PATCH] slides three or more steps away from current are now hidden

---
 js/reveal.js | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/js/reveal.js b/js/reveal.js
index 79437ae..3dddf7d 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -282,16 +282,23 @@ var Reveal = (function(){
 			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