	jQuery.fn.nRoller = function(options){
		var options = jQuery.extend({
				selector: ".nroller",
				rollTo: 0,
				needToRoll: false,
				repeatTime: 10,
				repeatStep: 5
			},options);
				
		var isNeedStopRoll = false;
		var maxMarginLeft = 0;
		var unknownMargin = (jQuery.browser.msie)?0:4;
		
		rollToImgId(options.rollTo,options.needToRoll);
			
		$(options.selector+' div.slideAreaLeft').hover(initRollerR,rollStop);
		$(options.selector+' div.slideAreaRight').hover(initRollerL,rollStop);
		
		function initRollerR(){
			isNeedStopRoll = false;
			rollToRight();
		};
		
		function rollToRight(){
			var curpos = parseInt($(options.selector+' ul').css('margin-left').split("px")[0]);
			if (curpos < 0) $(options.selector+' ul').css('margin-left', curpos+options.repeatStep);
			if (!isNeedStopRoll)
				setTimeout(function(){rollToRight()},options.repeatTime);
		};
		
		function initRollerL(){
			isNeedStopRoll = false;
			maxMarginLeft = 0;
			$(options.selector+' ul li').each(
				function(){
					maxMarginLeft+=$(this).width()+unknownMargin;
				}
			);
			maxMarginLeft = maxMarginLeft - $(options.selector).width();
			rollToLeft();
		};
		
		function rollToLeft(){
			var curpos = $(options.selector+' ul').css('margin-left').split("px")[0];
			if(curpos > -maxMarginLeft) $(options.selector+' ul').css('margin-left', curpos-options.repeatStep);
			if (!isNeedStopRoll)
				setTimeout(function(){rollToLeft()},options.repeatTime);
		};
		
		function rollStop(){
			isNeedStopRoll = true;
		};
		
		function rollToImgId(imageid,needRoll){
			var im =marginToItemWithId(imageid);
			(im==0)? 0 : im -= $(options.selector).width()-625 + $(options.selector+' ul li a img#'+imageid).width()/2;
			if(needRoll){
				$(options.selector+' ul').animate({marginLeft:-im-im/100*24},"slow");
				$(options.selector+' ul').animate({marginLeft:-im+im/100*12},"slow");
				$(options.selector+' ul').animate({marginLeft:-im-im/100*6},"slow");
				$(options.selector+' ul').animate({marginLeft:-im},"slow");
			}
			else{
				$(options.selector+' ul').css('margin-left',-im);
			}
		};
		
		function marginToItemWithId(imageid){
			var marginLeftToItem = 0;
			var stop = false;
			$(options.selector+' ul li').each(
				function(){
					if (!stop){
						marginLeftToItem+=$(this).width()+unknownMargin;
						if ($(this).find('img').attr('id') == imageid) stop = true;
					}
				}
			);
			return (stop)?marginLeftToItem:0;
		};
	};
