(function($) {
	$.fn.mslider = function(options){
		// default configuration properties
		var defaults = {
			prevId: 		'prevBtn',
			prevText: 		'Previous',
			nextId: 		'nextBtn',
			nextText: 		'Next',
			continuous:		true,
			controlsShow:	true,
			controlsFade:	true,
			controlsId: 	'controls'
		};

		var options = $.extend(defaults, options);
		this.each(function() {
			var obj = $(this);
			$('ul', obj).css({'display' : 'block'});

			var s = $('li', obj).length;
			var w = 950;

			var ts = s-1;
			var t = 0;

			$('ul', obj).css('width',s*w);

			$('li', obj).css('float','left');

			if (options.controlsShow) {
				var html = ' <span id="'+ options.prevId +'"><a href="javascript:void(0);">'+ options.prevText +'</a></span>';
				html += ' <span id="'+ options.nextId +'"><a href="javascript:void(0);">'+ options.nextText +'</a></span>';
				$(obj).after(html);
			};

			controlscnt = 0;
			$('li', '#' + options.controlsId).each(function(i){
				$(this).attr('id', options.controlsId + (i+1))
					.click(function(){
						setCurrent(i);
					});
			});
			$('li:last-child', '#' + options.controlsId).css('margin-right', 0);

			$('a', '#' + options.nextId).click(function(){
				var ot = t;
				t = (ot>=ts) ? (options.continuous ? 0 : ts) : t+1;
				setCurrent(t);
			});
			$('a', '#' + options.prevId).click(function(){
				var ot = t;
				t = (t<=0) ? (options.continuous ? ts : 0) : t-1;
				setCurrent(t);
			});

			$("a[id^='mslider_sc']").click(function(){
				var id = (this.id.replace('mslider_sc', '') - 1);
				setCurrent(id);
			});

			function setCurrent(i) {
				t = i;

				$('ul',obj).css('margin-left',(i*w*-1));
				if (!options.continuous && options.controlsFade) {
					if (i==ts) $('a','#'+options.nextId).hide();
					else $('a','#'+options.nextId).show();
					if (i==0) $('a','#'+options.prevId).hide();
					else $('a','#'+options.prevId).show();
				};

				i = parseInt(i)+1;
				$('li', '#' + options.controlsId).removeClass('current');
				$('li#' + options.controlsId + i).addClass('current');
			};

			setCurrent(0);

			if (!options.continuous && options.controlsFade) $('a','#'+options.prevId).hide();
		});
	};
})(jQuery);