;(function($) {
	$.fn.move = function(options) {
		var settings = {
			speed: 45,
			range: 50,
			step: 1,
			loop: true,
			direction: 'x'
		};
		if (options) $.extend(settings, options);
		
		var _this = $(this);
		
		var config = {
			range: {
				a: 0, // start
				b: 0, // end
				c: 0  // current
			},
			direction: ''
		};
		
		var dir = 1;
		var timer = 0;
		
		var init = function() {
			setRange();
			timer = setInterval(move, settings.speed);
		};
		
		var setRange = function() {
			config.direction = settings.direction == 'x' ? 'right' : 'top';
			var base = parseInt(_this.css(config.direction));
			config.range.a = config.range.c = base;
			config.range.b = base + settings.range;
		};
		
		var move = function() {
			if ( dir == 1 ) {
				config.range.c = config.range.c + settings.step;
			}
			if ( dir == 0 ) {
				config.range.c = config.range.c - settings.step;
			}
			_this.css(config.direction, config.range.c + 'px');
			
			if ( config.range.c > config.range.b ) {
				if ( settings.loop ) {
					dir = 0;
				} else {
					config.range.c = config.range.a;
				}
			}
			
			if ( config.range.c < config.range.a ) {
				dir = 1;
			}
		};
		
		init();
	};
})(jQuery);
