
function changeScroll(container, op){
  var actual     = jQuery(container).data("actual");
  var scrollSize = jQuery(container).data("scrollSize");
  var total  = jQuery(container).find(jQuery(container).data("elementos")).length;

  switch(op){
    case 'up': 
      if(actual < total - scrollSize)
        actual++;
      break;
    case 'down':
      if(actual > 0)
        actual--;
      break;
  }

  var scrollSize = jQuery(container).data("actual", actual);
  updateScroll(container);
}

function updateScroll(container){
  var scrollSize = jQuery(container).data("scrollSize");
  var actual     = jQuery(container).data("actual");
  var elementos  = jQuery(container).find(jQuery(container).data("elementos"));
  var up         = jQuery(jQuery(container).data("up"));
  var down       = jQuery(jQuery(container).data("down"));
  var hide       = jQuery(container).data("hide");

  var onFirst    = jQuery(container).data("onFirst");
  var onLast     = jQuery(container).data("onLast");

  var total = elementos.length;

  jQuery(jQuery(container).data("down")).css("visibility","visible");
  jQuery(jQuery(container).data("up")).css("visibility","visible");

  if(actual ==  0){
    if(onFirst){
      onFirst(container);
    }else{
      if(hide)
        jQuery(jQuery(container).data("down")).css("visibility","hidden");
    }
  }

  if(actual ==  (total - scrollSize)){
    if(onLast){
      onLast(container);
    }else{
      if(hide)
        jQuery(jQuery(container).data("up")).css("visibility","hidden");
    }
  }


  elementos.hide();
  var seleccionados = elementos.filter(":gt("+(actual - 1)+"):lt("+scrollSize+")");
  seleccionados.show();
}

function setScrollable(container, elementos, down, up, size, onFirst, onLast, hide){
  hide = (hide == undefined || hide == null)? true: hide;

  jQuery(container)
    .data("scrollSize", size)
    .data("actual",0)
    .data("elementos", elementos)
    .data("up", up)
    .data("down", down)
    .data("hide", hide);

    if(onFirst)
      jQuery(container).data("onFirst", onFirst)
    if(onLast)
      jQuery(container).data("onLast", onLast)

  jQuery(down).click(function(){
    changeScroll(container, "down");
  });

  jQuery(up).click(function(){
    changeScroll(container, "up");
  });

  changeScroll(container);

  var total  = jQuery(container).find(elementos).length;
  if (total <= size){
    jQuery(down).css("visibility","hidden");
    jQuery(up).css("visibility","hidden");
  }
}


