jQuery.fn.imageSlider = function (options) {
  if (jQuery(this).length == 0) {
    return false;
  }

  if (jQuery('li:first + li', this).length == 0 ){
    return false;
  }

	//default settings 
	var options = jQuery.extend({}, jQuery.fn.imageSlider.options, options);
	
	var pos1 = jQuery('li:first',this).position().left;
	var pos2 = jQuery('li:first + li',this).position().left;
	var offset = pos2 - pos1 - 1;
  var viewport = this.parent().width();
	var visible = Math.ceil(viewport / offset);

	jQuery(options.back_selector).click(function () {
    jQuery.fn.slideImages(-1, offset, options.speed, jQuery(options.gallery_selector), visible);
    return false;
  });

	jQuery(options.forward_selector).click(function () {
    jQuery.fn.slideImages(1, offset, options.speed, jQuery(options.gallery_selector), visible);
    return false;
  });

  return jQuery(this);
};

jQuery.fn.imageSlider.options = {
	gallery_selector : '#images',
	back_selector : '.back a',
	forward_selector : '.forward a',
	speed : 400
};

jQuery.fn.slideImages = function (way, offset, speed, gallery, visible) {
	var margin = parseInt(gallery.css('margin-left').replace('px',''));
	var end = (jQuery('li', gallery).length - visible + 1) * -offset;
	//edge
	if(way < 0 && margin >= 0) return;
	if(way > 0 && margin <= end) return;
	var add = (-offset * way) + margin;
	gallery.animate({marginLeft: add + 'px'}, speed );
};
