function initSlider(obj, scrollWidth, vert, buffer, setMaxClicks)
{
	var containerWidth=0;
	var totalWidth=0;
	var parentObj=jQuery(obj);
	var container= parentObj.find(".contentContainer");
	var elements=container.children();
	var position=0;
	var delta= 500;
	var sliderClicks=0;
	var maxClicks=0;
	if(isNaN(buffer))
	{
		buffer=0;
	}
	if(isNaN(setMaxClicks))
	{
		setMaxClicks=0;
	}
	container.css("position", "relative");
	if(vert)
	{
		containerWidth= container.innerHeight();
	}
	else{
		containerWidth= container.innerWidth();
	}

	parentObj.find('.controls').attr('sldrclks',sliderClicks);
	if(vert!=true){
		vert=false;
	}
	var i=0;
	elements.each(function(){
		if(vert){
			totalWidth += jQuery(this).outerHeight(true);
		}
		else{
			totalWidth += jQuery(this).outerWidth(true);
			i++;
		}
	});

	if(vert){
		parentObj.find('.contentContainer').height(totalWidth);
	}
	else{
		parentObj.find('.contentContainer').width(totalWidth+i*2);
	}
	if(setMaxClicks==0)
	{
		maxClicks=Math.floor(totalWidth/scrollWidth)-1;
	}
	else
	{
		maxClicks=setMaxClicks;
	}
//	alert(maxClicks);
	parentObj.find('.controls .prev').click(function(){
//		alert('prev');
//		if(position>0){
		if(sliderClicks>0){
			sliderClicks--;
			parentObj.find('.controls').attr('sldrclks',sliderClicks);
			if(vert){
//				alert("scroll up");
				container.animate({top:"+="+scrollWidth+"px"}, delta);
			}
			else{
				container.animate({left:"+="+scrollWidth+"px"}, delta);
			}
			position-=scrollWidth;
		}
	});

	parentObj.find('.controls .next').click(function(){

//		alert('next clicked');
//		if(position<totalWidth-containerWidth-scrollWidth){
		if(sliderClicks<maxClicks-1-buffer){
			sliderClicks++;
			parentObj.find('.controls').attr('sldrclks',sliderClicks);
			if(vert){
//				alert("scroll down");
				container.animate({top:"-="+scrollWidth+"px"}, delta);
			}
			else{
//				alert("scroll right");
				container.animate({left:"-="+scrollWidth+"px"}, delta);
			}
			position+=scrollWidth;
		}
	});
}


function Scroller(obj, clickSize){
	var object;
	var current;
	var child;
	var childHeight;
	var parentHeight;
	var maxClicks;
	var deltaAnimation=500;
	var deltaClick=30;
	var locked=false;
	var self=this;

	if(clickSize>0)
	{
		deltaClick=clickSize;
	}

	this.setClickSize=function(clickSize){
		deltaClick=clickSize;
	}
	this.setAnimationTime=function(animationTime){
		deltaAnimation=animationTime;
	}
	this.clickMath=function(){
		maxClicks=0;
		var deltaPosition=childHeight-parentHeight;
		if(deltaPosition>0){
			maxClicks=Math.ceil(deltaPosition/deltaClick);
//			console.log(maxClicks+"="+childHeight+"-"+parentHeight);
		}
	}
	this.init=function(obj){
		object=jQuery(obj);
		child=object.find('.scroller .contentContainer').children();
		var width=0;
		child.each(function(){
			width+= jQuery(this).outerWidth(true);
		});
		parentHeight=object.find('.scroller').outerWidth(true);
		childHeight=width;
		object.find('.scroller .contentContainer').width(width)
					.css('position','absolute');
		self.clickMath();
		self.setTriggers();
		current=0;
		child=object.find('.scroller .contentContainer');
	}

	this.setTriggers=function(){
		object.find('.controls .prev').click(function(){
			if(current>0){
				if(!locked){
					self.move('+='+deltaClick);
					current--;
				}
			}
		});
		object.find('.controls .next').click(function(){
			if(current<maxClicks){
				if(!locked){
					self.move('-='+deltaClick);
					current++;
				}
			}
		});

		r_timer=setInterval(
			function(e){
				if(child.outerHeight(true)!=childHeight)
				{
					self.clickMath();
					childHeight=child.outerHeight(true)
				}
			}, 500);
	}
	this.move=function(input){
		if(!locked){
			locked=true;
			child.animate({left: input},deltaAnimation, function(){locked=false});
		}
	}
	self.init(obj);
}

