jQuery.fn.imageSwapper = function(settings)
{
	var allFrames = [];
	var curFrame = 0;
	settings = jQuery.extend({
		frameHeight: 406,
		frameCount: 12,
		start: 1,
		end: null,
		fade: 700,
		timeout: 1000,
		pauseMultiplier: 3
	}, settings);
	bgDiv = this;

	var aniDiv = bgDiv.clone();
	aniDiv.hide().css({'position':'absolute', 'top':'0px', 'left':'0px', 'margin':0}).appendTo(bgDiv);

	for (var i=0;i<settings.frameCount;++i) {
		if (i >= settings.start-1 && (settings.end == null || i <= settings.end-1)) {
			allFrames[i] = '0px -' + (i * settings.frameHeight) + 'px';
		}
	}

	var toggle = function toggle()
	{
		bgDiv.css('background-position', allFrames[curFrame]);
		aniDiv.hide();

		var nextFrame = curFrame+1;

		var timeout = settings.timeout;
		if (nextFrame >= allFrames.length) {
			nextFrame = 0;
			timeout = Math.round((settings.pauseMultiplier/2) * settings.timeout);
		}
		if (curFrame == 0) timeout = settings.pauseMultiplier * settings.timeout;

		aniDiv.css('background-position', allFrames[nextFrame]);
		curFrame = nextFrame;
		setTimeout(
			function() {
				aniDiv.fadeIn(settings.fade, toggle);
			},
			timeout
		);
	}
	setTimeout(toggle,500);
};