docs: function () {
              var $pages = this.$pages,
                  index = this.state.currentPage - 1,
                  next = index + 1,
                  prev = index - 1,
                  buffer = 20;
  
              // @TODO: optimize this a bit
              // add/removeClass is expensive, so try using hasClass
              $pages.removeClass(PRESENTATION_CSS_CLASSES);
              if (this.twoPageMode) {
                  next = index + 2;
                  prev = index - 2;
                  $pages.slice(Math.max(prev, 0), index).addClass(CSS_CLASS_PAGE_PREV);
                  $pages.slice(next, next + 2).addClass(CSS_CLASS_PAGE_NEXT);
              } else {
                  if (prev >= 0) {
                      $pages.eq(prev).addClass(CSS_CLASS_PAGE_PREV);
                  }
                  if (next < this.numPages) {
                      $pages.eq(next).addClass(CSS_CLASS_PAGE_NEXT);
                  }
              }
              $pages.slice(0, index).addClass(CSS_CLASS_PAGE_BEFORE);
              $pages.slice(Math.max(0, index - buffer), index).addClass(CSS_CLASS_PAGE_BEFORE_BUFFER);
              $pages.slice(next).addClass(CSS_CLASS_PAGE_AFTER);
              $pages.slice(next, Math.min(this.numPages, next + buffer)).addClass(CSS_CLASS_PAGE_AFTER_BUFFER);
  
              /*
              // OPTIMIZATION CODE NOT YET WORKING PROPERLY
              $pages.slice(0, index).each(function () {
                  var $p = $(this),
                      i = $p.index(),
                      toAdd = '',
                      toRm = '';
                  if (!$p.hasClass(beforeClass.trim())) toAdd += beforeClass;
                  if ($p.hasClass(nextClass.trim())) toRm += nextClass;
                  if ($p.hasClass(afterClass.trim())) toRm += afterClass;
                  if ($p.hasClass(afterBufferClass.trim())) toRm += afterBufferClass;
                  if (i >= index - buffer && !$p.hasClass(beforeBufferClass.trim()))
                      toAdd += beforeBufferClass;
                  else if ($p.hasClass(beforeBufferClass.trim()))
                      toRm += beforeBufferClass;
                  if (i >= prev && !$p.hasClass(prevClass.trim()))
                      toAdd += prevClass;
                  else if ($p.hasClass(prevClass.trim()))
                      toRm += prevClass;
                  $p.addClass(toAdd).removeClass(toRm);
  //                console.log('before', $p.index(), toRm, toAdd);
              });
              $pages.slice(next).each(function () {
                  var $p = $(this),
                      i = $p.index(),
                      toAdd = '',
                      toRm = '';
                  if (!$p.hasClass(afterClass.trim())) toAdd += afterClass;
                  if ($p.hasClass(prevClass.trim())) toRm += prevClass;
                  if ($p.hasClass(beforeClass.trim())) toRm += beforeClass;
                  if ($p.hasClass(beforeBufferClass.trim())) toRm += beforeBufferClass;
                  if (i <= index + buffer && !$p.hasClass(afterBufferClass.trim()))
                      toAdd += afterBufferClass;
                  else if ($p.hasClass(afterBufferClass.trim()))
                      toRm += afterBufferClass;
                  if (i <= next + 1 && !$p.hasClass(nextClass.trim()))
                      toAdd += nextClass;
                  else if ($p.hasClass(nextClass.trim()))
                      toRm += nextClass;
                  $p.addClass(toAdd).removeClass(toRm);
  //                console.log('after', $p.index(), toRm, toAdd);
              });*/
          }