var thumb_traject_length = 118;
var img_traject_length = 392;
jQuery(document).ready(function() {
  jQuery(".special-gallery").each( function () {
    jQuery('div.thumbscroll div.next').click(function(){
      thumb_scroll('left', jQuery(this).parents(".special-gallery"));
    });
    jQuery('div.thumbscroll div.previous').click(function(){
      thumb_scroll('right', jQuery(this).parents(".special-gallery"));
    });
    
    jQuery('div.scroll.right').click(function(){
      img_scroll('left', jQuery(this).parents(".special-gallery"));
    });
    jQuery('div.scroll.left').click(function(){
      img_scroll('right', jQuery(this).parents(".special-gallery"));
    });
    
    jQuery('div.thumb-holder img').click(function(){
      image_scroll(jQuery(this).attr('rel'), jQuery(this).parents(".special-gallery"));
    });
  } );  
});

function buttons_init() {
  var max_offset = (jQuery('div.image-holder img').length * img_traject_length) - img_traject_length;
  //alert('parent offset:'+ parent_offset.left);
		// disable the buttons;

	if (max_offset <= img_traject_length) {
    jQuery('div.scroll.right').hide();
	}
	if (max_offset <= 0) {
    jQuery('div.thumbscroll.right div.next').hide();
	}
}

function image_scroll(thumb_rel, scope) { // activated when clicked on a thumbnail

  var parent_offset = jQuery(scope).find('div.image-holder').parent().offset();
  var max_offset = (jQuery(scope).find('div.image-holder img').length * img_traject_length) - img_traject_length;
  //alert('parent offset:'+ parent_offset.left);
  
  var x_offset = jQuery(scope).find('div.image-holder').offset().left;
  //alert('x-offset:'+ x_offset);
  
  jQuery(scope).find('div.image-holder img').each(function(i) {
    if (jQuery(this).attr('rel') == thumb_rel) {
      
      var img_offset = jQuery(this).offset().left;
      //alert('image offset:' + img_offset);
      
      var new_offset = Math.round((img_offset - x_offset)/img_traject_length)*img_traject_length;
      //alert('new offset:' + new_offset);
      if(new_offset > 0) {
        jQuery(scope).find('div.scroll.left').fadeIn();
      }
      else {
        jQuery(scope).find('div.scroll.left').fadeOut();
      }
      if(new_offset >= max_offset) {
        jQuery(scope).find('div.scroll.right').fadeOut();
      }
      else {
        jQuery(scope).find('div.scroll.right').fadeIn();
      }

			// remove buttons if we dont have enough images

      jQuery(scope).find('div.image-holder').animate({
        left: '-' + new_offset +'px'
      },0, 'swing');
    }
  });
}

function thumb_scroll(direction, scope) { // to do: direction left / right
  var parent_offset = jQuery(scope).find('div.thumb-holder').parent().offset();
  var current_offset = jQuery(scope).find('div.thumb-holder').offset();
  var current_shift = current_offset.left - parent_offset.left;

  var shift = thumb_traject_length * 3; // shift 3 images to the left;
  if (direction == 'left') {
    shift = shift * -1;
  }
  shift = shift + current_shift;
  
  // boundaries
  if (shift > 0) shift = 0; // left boundary
  var cc = jQuery(scope).find('div.thumb-holder img').length - 3;
  if (cc < 0) cc = 0;
  if (shift < cc * thumb_traject_length *-1) {
    shift = cc * thumb_traject_length *-1;
  }
  var thumb_count = jQuery(scope).find('div.thumb-holder img').length;
  var split = Math.ceil(thumb_count / 3);
  var max_offset = ((thumb_count - 3) * thumb_traject_length);
  shift = Math.round(shift/thumb_traject_length)*thumb_traject_length;
  if((shift * -1) >= max_offset) {
    jQuery(scope).find('div.thumb-scroll.right').css({display:'none'});
  }
  else {
    jQuery(scope).find('div.thumb-scroll.right').css({display:'block'});
  }
  
  if((shift*-1) > 0) {
    jQuery(scope).find('div.thumbscroll.left div.previous').removeClass('max-offset');
  }
  else {
    jQuery(scope).find('div.thumbscroll.left div.previous').addClass('max-offset');
  }
  
  if((shift * -1) >= max_offset) {
    jQuery(scope).find('div.thumbscroll.right div.next').addClass('max-offset');
  }
  else {
    jQuery(scope).find('div.thumbscroll.right div.next').removeClass('max-offset');
  }
  jQuery(scope).find('div.thumb-holder').animate({
    left: shift +'px'
  }, 0);
}

function img_scroll(direction, scope) { // to do: direction left / right
  var parent_offset = jQuery(scope).find('div.image-holder').parent().offset();
  var current_offset = jQuery(scope).find('div.image-holder').offset();
  var current_shift = current_offset.left - parent_offset.left;
  
  var img_count = jQuery(scope).find('div.image-holder img').length;
  var max_offset = (img_count * img_traject_length) - img_traject_length;
  
  
  
  var shift = img_traject_length;
  if (direction == 'left') {
    shift = shift * -1;
  }
  shift = shift + current_shift;
  if((shift*-1) > (max_offset)) {
    shift = max_offset * -1;
  }
  else if ((shift * -1) < 0) { 
    shift = 0;
  }
  
  shift = Math.round(shift/img_traject_length)*img_traject_length;
  
  
  if((shift * -1) >= max_offset) {
    // jQuery('div.scroll.right').css({display:'none'});
    jQuery(scope).find('div.scroll.right').fadeOut();
  }
  else {
    // jQuery('div.scroll.right').css({display:'block'});
    jQuery(scope).find('div.scroll.right').fadeIn();
  }
  
  if((shift*-1) > 0) {
    jQuery(scope).find('div.scroll.left').fadeIn();
  }
  else {
    jQuery(scope).find('div.scroll.left').fadeOut();
  }
  // boundaries
  if (shift > 0) shift = 0; // left boundary
  var cc = jQuery(scope).find('div.image-holder img').length;
  if (cc < 0) cc = 0;
  if (shift < cc * img_traject_length *-1) {
    shift = cc * img_traject_length *-1;
  }
  
  jQuery(scope).find('div.image-holder').animate({
    left: shift +'px'
  }, {queue: true, duration:0});
}
