

var ROLLMENU=function(){
	this.bookmarksList=[];
	this.selectedBookmarksList=[];
	this.contentElementsList=[];
	this.rollTime=250;
	this.frameRate=25;
	this.fixedHeight=true;
	this.elementHeight=100;
	this.elementHeights=[];//used only if this.fixedHeight==false

	this.getBookmarkElements = function(containerID,bookmarkClassName,selectedBookmarkClassName,contentClassName){
		if(this.bookmarksList.length!=0)
			return;

		var children=document.getElementById(containerID).getElementsByTagName('div');
		var i=0;
		for(i=0;i<children.length;i++){
			if(children[i].className.indexOf(bookmarkClassName)!=-1){
				this.bookmarksList[this.bookmarksList.length]=children[i];
			}
			if(children[i].className.indexOf(selectedBookmarkClassName)!=-1){
				this.selectedBookmarksList[this.selectedBookmarksList.length]=children[i];
			}
			if(children[i].className.indexOf(contentClassName)!=-1){
				this.contentElementsList[this.contentElementsList.length]=children[i];
			}
		}
	}


	this.selectBookmark = function(bookmarkNumber){
		var bookmark=null;
		var i=0;
		var newSelectedElement=this.contentElementsList[bookmarkNumber];
		if(this.fixedHeight){
			var newSelectedElementHeight=this.elementHeight;
		}else{
			var newSelectedElementHeight=this.elementHeights[bookmarkNumber];
		}
		var oldSelectedElement=null;
		var oldSelectedElementHeight=0;

		var number=Math.max(this.bookmarksList.length,this.contentElementsList.length);

		for(i=0;i<number;i++){
			if(i==bookmarkNumber){
				if(this.bookmarksList[i])
					this.bookmarksList[i].style.display="none";
				if(this.selectedBookmarksList[i])
					this.selectedBookmarksList[i].style.display="block";
				//if(this.contentElementsList[i])
					//this.contentElementsList[i].style.display="block";
			}else{
				if(this.contentElementsList[i].style.display!="none"){
					oldSelectedElement=this.contentElementsList[i];
					if(this.fixedHeight){
						oldSelectedElementHeight=this.elementHeight;
					}else{
						oldSelectedElementHeight=this.elementHeights[i];
					}
				}
				if(this.bookmarksList[i])
					this.bookmarksList[i].style.display="block";
				if(this.selectedBookmarksList[i])
					this.selectedBookmarksList[i].style.display="none";
				//if(this.contentElementsList[i])
					//this.contentElementsList[i].style.display="none";
			}
		}

		this.roll(newSelectedElement,oldSelectedElement,newSelectedElementHeight,oldSelectedElementHeight);

	}

	this.roll=function(newSelectedElement,oldSelectedElement,newSelectedElementHeight,oldSelectedElementHeight){
		var i=0;
		rollFramesNumber=Math.ceil((this.frameRate*this.rollTime)/1000);

		newElementHeightInFrame=[];
		newElementHeightInFrame[0]=1;

		oldElementHeightInFrame=[];
		oldElementHeightInFrame[0]=oldSelectedElementHeight;

		timeoutInFrame=[];
		timeoutInFrame[0]=0;

		for(i=1;i<=rollFramesNumber;i++){
			newElementHeightInFrame[i]=Math.ceil(newElementHeightInFrame[i-1]+(newSelectedElementHeight-newElementHeightInFrame[i-1])/(rollFramesNumber-(i-1)));
			oldElementHeightInFrame[i]=Math.floor(oldElementHeightInFrame[i-1]-(oldElementHeightInFrame[i-1])/(rollFramesNumber-(i-1)));

			timeoutInFrame[i]=timeoutInFrame[i-1]+(this.rollTime/rollFramesNumber);
		}

		newElementPixelsPerFrame=newSelectedElementHeight/rollFramesNumber;
		oldElementPixelsPerFrame=oldSelectedElementHeight/rollFramesNumber;

		setTimeout('document.getElementById("'+newSelectedElement.id+'").style.display="block"',timeoutInFrame[1]);
		setTimeout('document.getElementById("'+oldSelectedElement.id+'").style.display="none"',timeoutInFrame[rollFramesNumber]);

		for(i=1;i<=rollFramesNumber;i++){
			setTimeout('document.getElementById("'+newSelectedElement.id+'").style.height="'+newElementHeightInFrame[i]+'px";document.getElementById("'+oldSelectedElement.id+'").style.height="'+oldElementHeightInFrame[i]+'px"',timeoutInFrame[i]);
		}
	}


}

