jQuery.fn.karusel = function (options) {
	
		var karuselBlock = this;
		
		var containerBlock = karuselBlock.children();
		
		var listBlock = karuselBlock.children().children();
		
		var listBlockItems = listBlock.children().children();
		
		var listBlockItemsNum = listBlockItems.length;

		var defaults = {
				visibleItems: 3,
				buttonStyle: "text-align:center",
				buttonUpClass: "",
				buttonDownClass: "",
				buttonUpText: "up",
				buttonDownText: "down",
				buttonUpActions: {},
				buttonDownActions: {},
				animateTime:200,
				itemHeight: listBlockItems.outerHeight()
			}, opt = $.extend(defaults, options);

		
		if (listBlockItemsNum > opt['visibleItems']) {
			this.children().before('<div id="upBut" style="'+opt['buttonStyle']+'" class="'+opt['buttonUpClass']+'">'+opt['buttonUpText']+'</div>').
							after('<div id="downBut" style="'+opt['buttonStyle']+'" class="'+opt['buttonDownClass']+'">'+opt['buttonDownText']+'</div>');
	
			containerBlock.height(opt['visibleItems']*opt['itemHeight']).css('position', 'relative').css('overflow', 'hidden');
			listBlock.css('position', 'absolute').css('top','0px').css('left', '0px');

			for(ActionUp in opt['buttonUpActions']) {
				$("#upBut").bind(ActionUp, opt['buttonUpActions'][ActionUp]);
			}
			
			for(ActionDown in opt['buttonDownActions']) {
				$("#downBut").bind(ActionDown, opt['buttonDownActions'][ActionDown]);
			}
			
			$("#upBut").click(
				function() {
	
					var listBlockTop = listBlock.css('top').replace('px','')*1;
					
					var shift = listBlockItems.outerHeight();
	
					listBlock.animate({
						top: (((listBlockTop+shift) >= 0)? 0 : listBlockTop+shift) + 'px'
					}, opt['animateTime']);		
	
				}
			);
	
			$("#downBut").click(
				function() {
					var listBlockTop = listBlock.css('top').replace('px','')*1;
					var shift = listBlockItems.outerHeight();
					var containerBlockHeight = containerBlock.outerHeight();
	
					listBlock.animate({
						top: (((listBlockTop-shift) <= -(listBlockItemsNum*shift-containerBlockHeight))? -(listBlockItemsNum*shift-containerBlockHeight) : listBlockTop-shift) + 'px'
					}, opt['animateTime']);
				}
			);
		}

}