
var elementsToSlide=null;
var elementsFrame=null;
var elementsAnchor=null;

//Scroller elements
var scrollerOldElement=null;
var scrollerOldIndex=0;
var scrollerNewElement=null;
var scrollerNewIndex=0;
var sliding=false;
var t;
var scrollAmount=0;
var scrollProgress=0;

//Editable Scroller elements
var time_interval=40;

function getDivElementsByID (id)
{
  	var all = document.all ? document.all :
  		document.getElementsByTagName('div');
  	elements = new Array();
  	
  	for(var i=0; i<all.length; i++)
  	{
  		if (all[i].id == id)
  		{
  			elements[elements.length] = all[i];
  		}	
  		
  	}	
  	
  	return(elements);
}
	
function onLoad()
{
	if(!elementsFrame)
	{
		elementsFrame=document.getElementById('frameContainer');
	}
	
	if(!elementsAnchor)
	{
		elementsAnchor=document.getElementById('frameAnchor');
	}


	if(!elementsToSlide)
	{
		elementsToSlide=getDivElementsByID ('frameToSlide');
		scrollerOldElement=elementsToSlide[0];
	}

	
	
	var total_height=0;
	
	for (var i = 0; i < elementsToSlide.length; i++)
	{
  	  total_height+=elementsToSlide[i].offsetHeight;
	}
			
	elementsAnchor.style.top='-'+(total_height)+'px';
	
}

function getRelativeTopPos(index)
{
	var total_height=0;
	for (var i = 0; i < index; i++)
	{
  	  total_height+=elementsToSlide[i].offsetHeight;
	}
	
	return total_height;
}

function scrollUp()
{
	t=setTimeout("scrollUp()",time_interval);
	
	var move=(getRelativeTopPos(scrollerNewIndex-1)-getRelativeTopPos(scrollerNewIndex));
	
	move=move/time_interval;
		
	scrollProgress-=move;
	
	
	
	var sinVal=Math.sin((Math.abs(scrollProgress)*(Math.PI/2))/scrollAmount);
	
	sinVal*=sinVal;
	
	sinVal*=scrollAmount;
	
	
	var topPos=getRelativeTopPos(scrollerNewIndex-1);
	
	
	
	var topOldPos=getRelativeTopPos(scrollerOldIndex);
	
	scrollerOldElement.style.top='-'+(topOldPos+sinVal)+'px';
	scrollerNewElement.style.top='-'+(topPos+sinVal)+'px';
	
	if(Math.abs(scrollProgress)>=scrollAmount)
	{
		var topOldStatPos=0;
		
		if(scrollerOldIndex!=0)
		{
			topOldStatPos=getRelativeTopPos(scrollerOldIndex-1);
		}
		else
		{
			topOldStatPos=scrollerOldElement.offsetHeight;
		}
		
		scrollerOldElement.style.top='-'+topOldStatPos+'px';
		
		var topNewStatPos=getRelativeTopPos(scrollerNewIndex);
	
		scrollerNewElement.style.top='-'+topNewStatPos+'px';
		
		
		scrollerOldElement=scrollerNewElement;
		scrollerOldIndex=scrollerNewIndex;

		clearTimeout(t);
		sliding=false;
	}
}

function scrollDown()
{
	t=setTimeout("scrollDown()",time_interval);
	
	var move=0;
	
	if(scrollerNewIndex>0)
	{
		move=(getRelativeTopPos(scrollerNewIndex-1)-getRelativeTopPos(scrollerNewIndex));
	}
	else
	{
		move=-scrollerOldElement.offsetHeight;
	}
	
	move=move/time_interval;
		
	scrollProgress+=move;
	
	
	var sinVal=Math.sin((Math.abs(scrollProgress)*(Math.PI/2))/scrollAmount);
	
	sinVal*=sinVal;
	
	sinVal*=-scrollAmount;
	
	var topPos=getRelativeTopPos(scrollerNewIndex);
	
	
	
	var topOldPos=getRelativeTopPos(scrollerOldIndex);
	
	scrollerOldElement.style.top=(-topOldPos-sinVal)+'px';
	scrollerNewElement.style.top='-'+(topPos+(scrollAmount+sinVal))+'px';
	
	if(Math.abs(scrollProgress)>=scrollAmount)
	{
		var topOldStatPos=0;
		
		if(scrollerOldIndex!=0)
		{
			topOldStatPos=getRelativeTopPos(scrollerOldIndex-1);
		}
		else
		{
			topOldStatPos=scrollerOldElement.offsetHeight;
		}
		
		scrollerOldElement.style.top='-'+topOldStatPos+'px';
		
		var topNewStatPos=getRelativeTopPos(scrollerNewIndex);
	
		scrollerNewElement.style.top='-'+topNewStatPos+'px';
		
		
		scrollerOldElement=scrollerNewElement;
		scrollerOldIndex=scrollerNewIndex;

		clearTimeout(t);
		sliding=false;
	}
}

function slideUp(index)
{
	if(sliding)
	{
		return;
	}

	if(index==scrollerOldIndex)
	{
		return;
	}

	sliding=true;

	scrollerNewElement=elementsToSlide[index];
	scrollerNewIndex=index;
	
	var topPos=getRelativeTopPos(index-1);
	
	var interval=(getRelativeTopPos(index-1)-getRelativeTopPos(index));
	
	scrollerNewElement.style.top='-'+topPos+'px';
	
	scrollAmount=Math.abs(interval);
	
	scrollProgress=0;
	
	if(scrollerNewIndex<scrollerOldIndex)
	{
		scrollDown();
	}
	else
	{
		scrollUp();
	}
}

onload=function()
{
onLoad();

 

}


