(function($c){
	$c.mbScrollable={
		plugin:"mb.scroller",
		author:"MB",
		version:"1.5.7",
		defaults:{
			dir:"vertical",
			width:240,
			height:400,
			elementsInPage:5,
			elementMargin:6,
			shadow:false,
			controls:"#controls1",
			slideTimer:1,
			autoscroll:false,
			scrollTimer:6000
		},
		buildMbScrollable: function(options){
			return this.each (function (){
				this.options = {};
				$c.extend (this.options, $c.mbScrollable.defaults);
				$c.extend (this.options, options);
				var mbScrollable=this;
				mbScrollable.isVertical= mbScrollable.options.dir!="horizontal";
				var controls=$c(mbScrollable.options.controls);
				mbScrollable.idx=1;
				mbScrollable.scrollTo=0;
				mbScrollable.elements= $c(mbScrollable).children();
				mbScrollable.elements.addClass("scrollEl");
				controls.hide();
				$c(mbScrollable).children().each(function(){$c(this).wrap("<div class='SECont'></div>");});
				mbScrollable.elements= $c(mbScrollable).children();
				var eip= mbScrollable.options.elementsInPage<this.elements.size()?mbScrollable.options.elementsInPage:mbScrollable.elements.size();
				mbScrollable.singleElDim= (mbScrollable.options.height/eip)-mbScrollable.options.elementMargin;
				$c(mbScrollable.elements).css({marginBottom:mbScrollable.options.elementMargin, height:mbScrollable.singleElDim, width:mbScrollable.options.width});//, display:"inline",float:"left"
				// $c(mbScrollable.elements).css({height:mbScrollable.singleElDim, width:mbScrollable.options.width});
				this.elementsDim= (mbScrollable.singleElDim*mbScrollable.elements.size())+(mbScrollable.options.elementMargin*mbScrollable.elements.size());
				mbScrollable.totalPages= Math.ceil(mbScrollable.elements.size()/mbScrollable.options.elementsInPage);
				var adj= $c.browser.safari && mbScrollable.options.elementsInPage>2?mbScrollable.options.elementMargin/(mbScrollable.options.elementsInPage):0;
				$c(mbScrollable).css({overflow:"hidden", height:mbScrollable.options.height-adj, width:mbScrollable.options.width, paddingRight:5, position:"relative"});
				// $c(mbScrollable).css({overflow:"hidden", height:mbScrollable.options.height-adj, width:mbScrollable.options.width, paddingRight:5, position:"relative"});
				var mbscrollableStrip=$c("<div class='scrollableStrip'/>").css({width:mbScrollable.elementsDim, position:"relative"});
				// var mbscrollableStrip=$c("<div class='scrollableStrip'/>").css({position:"relative"});
				$c(mbScrollable.elements).wrapAll(mbscrollableStrip);
				mbScrollable.mbscrollableStrip=$c(mbScrollable).find(".scrollableStrip");
				$c(mbScrollable.elements).hover( function(){ if(mbScrollable.autoScrollActive) $c(mbScrollable).mbAutoscroll(); } );
				if(mbScrollable.options.autoscroll && mbScrollable.elements.size()>mbScrollable.options.elementsInPage){
					mbScrollable.autoScrollActive=true;
					$c(mbScrollable).mbAutoscroll();
				}
				$c(mbScrollable).mbPageIndex();
				$c(mbScrollable).mbActivateControls();
				setTimeout(function(){ $c(".scrollEl").fadeIn(); },1000);
				$c(mbScrollable).mbManageControls();
			});
		},
		mbNextPage: function(auto){
			var mbScrollable= $c(this).get(0);
			if(!auto) mbScrollable.autoScrollActive=false;
			if(mbScrollable.idx==mbScrollable.totalPages){ $c(mbScrollable).mbManageControls(); return; }
			if(mbScrollable.options.nextCallback) mbScrollable.options.nextCallback();
			var adj= $c.browser.safari && mbScrollable.options.elementsInPage>2?mbScrollable.options.elementMargin/mbScrollable.options.elementsInPage:0;
			mbScrollable.scrollTo-=((mbScrollable.singleElDim+mbScrollable.options.elementMargin)*mbScrollable.options.elementsInPage)-adj;
			// if((mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.height))
				// mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.height;
			mbScrollable.options.height = mbScrollable.options.height+60;
			if((mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.height))
				mbScrollable.scrollTo=-mbScrollable.elementsDim+(mbScrollable.options.height);
			mbScrollable.options.height = mbScrollable.options.height-60; //$c(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},1);
			$c(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},0);
			mbScrollable.idx+=1;
			$c(this).mbManageControls();
		},
		mbFirstPage: function(){
			var mbScrollable= $c(this).get(0);
			mbScrollable.autoScrollActive=false;
			mbScrollable.scrollTo=0;
			$c(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},1);
			mbScrollable.idx=1;
			$c(this).mbManageControls();
		},
		mbPageIndex: function(){
			var mbScrollable= $c(this).get(0);
			var controls=$c(mbScrollable.options.controls);
			var pages=controls.find(".pageIndex");
			if(pages){
				function getPage(i){
					mbScrollable.scrollTo=-((mbScrollable.singleElDim+mbScrollable.options.elementMargin)*(mbScrollable.options.elementsInPage*(i-1)));
					if(mbScrollable.isVertical){
						if(mbScrollable.scrollTo<-mbScrollable.elementsDim+mbScrollable.options.height)
							mbScrollable.scrollTo=-mbScrollable.elementsDim+mbScrollable.options.height;
						$c(mbScrollable.mbscrollableStrip).animate({marginTop:mbScrollable.scrollTo},0);
					}
					mbScrollable.idx = Math.floor(i);
					$c(mbScrollable).mbManageControls();
				}
				var n=0;
				for(var i=1;i<=mbScrollable.totalPages;i++){
					n++;
					var p=$c("<span class='page'>"+n+"<\/span>").bind("click",function(){
						getPage($c(this).html());
						mbScrollable.autoScrollActive=false;
					});
					pages.append(p);
				};
			}
		},
		mbActivateControls: function(){
			var mbScrollable=$c(this).get(0);
			var controls=$c(mbScrollable.options.controls);
			controls.find(".first").bind("click",function(){$c(mbScrollable).mbFirstPage();});
			controls.find(".next").bind("click",function(){$c(mbScrollable).mbNextPage();});
		},
		mbManageControls: function(){
			var mbScrollable=$c(this).get(0);
			var controls=$c(mbScrollable.options.controls);
			if(mbScrollable.elements.size()<=mbScrollable.options.elementsInPage){ controls.hide(); }
			else{ controls.fadeIn(); }
			controls.find(".page").removeClass("sel");
			controls.find(".page").eq(mbScrollable.idx-1).addClass("sel");
			controls.find(".idx").html(mbScrollable.idx+" / "+mbScrollable.totalPages);
		}
	};
	$c.fn.mbScrollable=$c.mbScrollable.buildMbScrollable;
	$c.fn.mbNextPage=$c.mbScrollable.mbNextPage;
	$c.fn.mbFirstPage=$c.mbScrollable.mbFirstPage;
	$c.fn.mbPageIndex=$c.mbScrollable.mbPageIndex;
	$c.fn.mbActivateControls=$c.mbScrollable.mbActivateControls;
	$c.fn.mbManageControls=$c.mbScrollable.mbManageControls;
})(jQuery);
