/**
 * Trida umi udelat manualni srollbar
 * objekt obsahuje prvky s tridami
 * 	scroll-left a scroll-right - po stisknuti se posouva obsah
 * 	scroll-content - obsah ktery ma nastavenou urcitou sirku
 * 	scroll-content-in - vnitrni obsah ktery se horizontalne posouva    
 **/ 

function ScrollerHorizontaly(parentobj,step,microStep,speed,mousemove){
	if(!isObject(parentobj)) parentobj=getId(parentobj);
	if(!parentobj) return false;
	this.parentObj = parentobj;
	var myThis = this;
	
	this.scrollLeft = getElementByClassName(this.parentObj,'*','scroll-left');
	this.scrollRight = getElementByClassName(this.parentObj,'*','scroll-right');
	this.scrollContent = getElementByClassName(this.parentObj,'*','scroll-content');
	this.scrollContentIn = getElementByClassName(this.parentObj,'*','scroll-content-in');
	
	if(
		!this.scrollContent ||
		!this.scrollContentIn
		)
		return false;
	
	step=parseInt(step);
	this.step=step>0 ? step : 40;
	microStep=parseInt(microStep);
	this.microStep=microStep>0 ? microStep : 2;
	speed=parseInt(speed);
	this.speed=speed>0 ? speed : 10;
	
	//nastavime zakladni styly objektu...
	this.scrollContent.style.position='relative';
	this.scrollContent.style.overflow="hidden";
	
	this.scrollContentIn.style.whiteSpace='nowrap';
	this.scrollContentIn.style.position='relative';
	this.scrollContentIn.style.left='0px';
	this.curPosition=0;
	this.nextPosition=0;
	
	this.contentWidth = findWidth(this.scrollContent);
	this.contentInWidth = this.scrollContent.scrollWidth ? this.scrollContent.scrollWidth :findWidth(this.scrollContentIn);
	this.minPos=this.contentWidth-this.contentInWidth - 60;
	this.maxPos=0;
	
	if(this.maxPos<=this.minPos){	//tak proc to sakra vubec delame, skryjeme posouvatka
		SetVisibility(this.scrollLeft,false);
		SetVisibility(this.scrollRight,false);
		return;
	}
	
	this.timeout=false;
	
	this.stepRun = function (){
		myThis.timeout=false;	
		myThis.nextPosition=parseInt(myThis.nextPosition);
		myThis.curPosition=parseInt(myThis.curPosition);
		if(myThis.nextPosition > myThis.curPosition){
			myThis.curPosition=myThis.curPosition+parseInt(myThis.microStep);			
		}else if(myThis.nextPosition < myThis.curPosition){			
			myThis.curPosition=myThis.curPosition-parseInt(myThis.microStep);
		}else
			return;
			
		//prekrocili jsme povolene hranice ?
		if(myThis.curPosition > myThis.maxPos) myThis.nextPosition=myThis.curPosition=myThis.maxPos;		
		if(myThis.curPosition < myThis.minPos) myThis.nextPosition=myThis.curPosition=myThis.minPos;
		myThis.scrollContentIn.style.left=myThis.curPosition+'px';
		myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.plusStep = function(factor){	
		alert('plus '+factor);	
		myThis.nextPosition=parseInt(myThis.nextPosition)+(parseInt(factor)*parseInt(myThis.step));
		if(!myThis.timeout) myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.onScrollLeft = function (e){
		myThis.plusStep(1);
	}
	
	this.onScrollRight = function (e){	
		myThis.plusStep(-1);		
	}
	
	this.onScrollMin = function (e){
		AddClass(myThis.scrollRight,'scroll-right-active');
		myThis.nextPosition=myThis.minPos;
		if(!myThis.timeout) myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.onScrollMax = function (e){
		AddClass(myThis.scrollLeft,'scroll-left-active');
		myThis.nextPosition=myThis.maxPos;
		if(!myThis.timeout) myThis.timeout=setTimeout(myThis.stepRun,parseInt(myThis.speed));
	}
	
	this.onScrollStop = function (e){
		RemoveClass(myThis.scrollLeft,'scroll-left-active');
		RemoveClass(myThis.scrollRight,'scroll-right-active');
		myThis.nextPosition=myThis.curPosition;		
	}
	
	if(mousemove){
		if(this.scrollLeft){
			AddEvent(this.scrollLeft,'mouseover', this.onScrollMax);
			AddEvent(this.scrollLeft,'mouseout', this.onScrollStop);
		}
		if(this.scrollRight){
			AddEvent(this.scrollRight,'mouseover', this.onScrollMin);
			AddEvent(this.scrollRight,'mouseout', this.onScrollStop);
		}
	}else{
		if(this.scrollLeft) AddEvent(this.scrollLeft,'click', this.onScrollLeft);
		if(this.scrollRight) AddEvent(this.scrollRight,'click', this.onScrollRight);
	}
}

