$(document).ready(function() {  
  var debug = $('#debug');

  var controlAll = $('#printFadeControls li');
  var controlPrev = $('#printFadeControls li:first');
  var controlNext = $('#printFadeControls li:last');
  var pagination = $('#printFadeControls li:not(:first):not(:last)');
  var paginationDigits = {'min': 3, 'max': 4};
  var items = $('#printFade li').hide();
  var itemsSum = items.length;
  
  var iIndex = 0;
  
  initFader(0);
  
  pagination.click(function(){
    iIndex = ($(this).index()-1);
    fadeInOut(iIndex); 
    setPagination(iIndex);
  });
  
  controlPrev.click(function(){
    iIndex = items.not(':hidden').index();
    if(iIndex > 0){
      fadeInOut(iIndex-1);
      setPagination(iIndex-1);
    }
  });
  controlNext.click(function(){
    iIndex = items.not(':hidden').index();
    if(iIndex < itemsSum-1){
      fadeInOut(iIndex+1);
      setPagination(iIndex+1);
    }
  });



  function initFader(startIndex){
    fadeInOut(startIndex);
    setControls(startIndex);
    setPagination(startIndex);
  }
  
  function fadeInOut(i){
    items.eq(i).css('z-index', 10).fadeIn();
    items.not(':eq(' + (i) + ')').css('z-index', 5).fadeOut();
    setControls(i);
  }
  
  
  function setPagination(i){  
    var digits = getPaginationDigits(i);
    var firstDigit = getPaginationFirst(i, digits);
    var lastDigit = (firstDigit+digits-1);
    
    pagination.hide();
    debug.html("index: " + i + "<br>firstDigit: " +firstDigit + "<br>lastDigit: " + lastDigit + "<br>digits: " + digits);
	  for(var j = firstDigit; j < (firstDigit+digits); j++){
      pagination.eq(j-1).show();
			pagination.eq(j-1).removeClass("pagAk");			
    }
		pagination.eq(i).addClass("pagAk");
  }
	
  function setControls(activeItemIndex){
    if(isFirstItem(activeItemIndex)){
      showControls("next");
    }else if(isLastItem(activeItemIndex)){
      showControls("prev");
    }else{
      showControls();
    }
  }
  function getPaginationDigits(i){
    if(isFirstItem(i) || isLastItem(i)){
      return (paginationDigits.max);
    }else{
      return (paginationDigits.min);
    }
  }
  function getPaginationFirst(i, digits){
    if(isFirstItem(i)){
      return (i+1);
    }else if(isLastItem(i)){
      return (i-digits+2);
    }else if((i+digits) > itemsSum){
      return (i);
    }else{
      return (i+1);
    }
  }
  function showControls(visibleControl){
    switch(visibleControl){
      case "prev": 
        controlPrev.show();
        controlNext.hide();
        break;
      case "next": 
        controlPrev.hide();
        controlNext.show();
        break;
      default: 
        controlPrev.show();
        controlNext.show();
        break;
    }
  }
  function isFirstItem(item){
    if(item == 0)
      return true;
  }
  function isLastItem(item){
    if(item == itemsSum-1)
      return true;
  }
});






















