$.fn.imagecarousel = function(options){
    var defaults = {
        nav_prev: "#prev",
        nav_next: "#next"
    };
    var options = $.extend(defaults, options);
    var obj_selector = this.selector;
	var step = 0;
    var prev = $(this.selector + " " + options.nav_prev);
    var next = $(this.selector + " " + options.nav_next);
    var viewport = 0;
    var slider = $(this.selector + " ul")
    var slider_offset = $(slider).position().left;
	var slider_width = 0;
    var slider_max = 0;
	var set_viewport = function(){
		if(slider_width == 0) {
		    $(obj_selector + " ul li").each(function(){
		        slider_width += $(this).width();
		    });
		}
		viewport = $(obj_selector).width() - $(prev).width() - $(next).width();
	    slider_max = slider_width - viewport - slider_offset;
	};
	var set_slide = function(pos) {
		var slide = 0;
		for(i=0; i<=pos; i++ ) {
			if($(obj_selector + " ul li")[i]) slide += $($(obj_selector + " ul li")[i]).width();
		}
		return slide;
	};
    $(next).click(function(e){
        e.preventDefault();
		set_viewport();
		var slide = set_slide(step)
		var value = (slide * -1) + slider_offset;
		if(value < (slider_max * -1)) value = (slider_max * -1);
		else step = step + 1;
		$(slider).animate({"left": value + "px"}, "slow");
    });
    $(prev).click(function(e){
	    e.preventDefault();
		set_viewport();
		var slide = 0
		if(step > 0){
			var slide = set_slide(step-2)
			var value = (slide * -1) + slider_offset;
			if(value > slider_offset) value = slider_offset;
			else if(value == 0) value = slider_offset;
			else step = step - 1;
			$(slider).animate({"left": value + "px"}, "slow");
		}
    });
};