/*
Scrollable division by Fredrik Klarqvist
Date of creation: 2001-08-01

Usage:
1. Create your division, with the desired height/width/clipproperties

<div id="dropDownContent" style="position:absolute; left:0px; top:0px; width:120px; visibility: visible; z-index:1; clip:rect(0,120,194,0)"> 
</div>

2. Create your scrollarrows/symbols and apply the scrollUp/scrollDown method to the desired event

<a href="#" onMouseOver="scrollUp('dropDownContent');" onMouseOut="stopScrollUp();">ScrollUp</a>
<a href="#" onMouseOver="scrollDown('dropDownContent');" onMouseOut="stopScrollDown();">ScrollDown</a>
*/


var timerIDDown = 0;
var timerIDUp = 0;

function getDivStyleObj(divName)
{
if (document.layers)
	{return document.layers[divName];}
else if (document.getElementById)
	{return document.getElementById(divName).style;}
else
	{return document.all(divName).style;}
}

function scrollDown(divName)
{ 
divStyleObj = getDivStyleObj(divName);
intTop = parseInt(divStyleObj.top);
intNewTop = parseInt(intTop - 1);

if (document.getElementById || document.all)
	{
	divHeight = document.getElementById(divName).offsetHeight;
	strClip = divStyleObj.clip;
	strClip = strClip.substring(strClip.indexOf('(')+1,strClip.indexOf(')'));
	
	//NS uses pt for some clip-properties
	if (strClip.indexOf('pt')>0)
		{		
		strClip = strClip.replace('pt','px')	
		}
	arrClip = strClip.split('px');
	
	intTopClip = parseInt(arrClip[0]);
	intRightClip = parseInt(arrClip[1]);
	intDownClip = parseInt(arrClip[2]);
	intLeftClip = parseInt(arrClip[3]);
	
	intNewTopClip = intTopClip + 1;
	intNewDownClip = intDownClip + 1;
	
	if(intTopClip<divHeight)
	//if (intNewDownClip-(divHeight/2)<divHeight)
		{	
		divStyleObj.clip = 'rect(' +intNewTopClip +',' +intRightClip +',' +intNewDownClip +',' +intLeftClip +')';
		divStyleObj.top=intNewTop;
		}
	else
		{stopScrollDown();}
	}
else 
{
divHeight = divStyleObj.document.height;
intTopClip = parseInt(divStyleObj.clip.top);
intNewTopClip = intTopClip + 1;
intDownClip = parseInt(divStyleObj.clip.height);
intNewDownClip = intDownClip + 1;

if (intNewDownClip+intNewTopClip<divHeight)
	{
	divStyleObj.clip.height = intNewDownClip;
	divStyleObj.clip.top = intNewTopClip;
	divStyleObj.top=intNewTop;
	}
else
	{stopScrollDown();}
}	
timerIDDown = setTimeout("scrollDown('" +divName +"')",50);
}

function stopScrollDown()
{
scrollDivToSpecTopPos('content', -100)
//clearTimeout(timerIDDown)
}

function scrollDivToSpecTopPos(divName, topPos)
{
divStyleObj = getDivStyleObj(divName);

intCurrTopPost = parseInt(divStyleObj.top);

//IE4+, NS6
if (document.getElementById || document.all)
	{
	//get clip-properties of the division
	strClip = divStyleObj.clip;
		
	//parse the actual clip-properties
	strClip = strClip.substring(strClip.indexOf('(')+1,strClip.indexOf(')'));
		
	//create an array with all clip-values
	arrClip = strClip.split('px');
		
	//get the specified clip-values
	intTopClip = parseInt(arrClip[0]);
	intRightClip = parseInt(arrClip[1]);
	intDownClip = parseInt(arrClip[2]);
	intLeftClip = parseInt(arrClip[3]);

	//change the top/down clip-values
	intNewTopClip = parseInt(topPos);
	intNewDownClip =  (parseInt(intDownClip)-parseInt(intTopClip))+parseInt(topPos);
	
	divStyleObj.clip = 'rect(' +intNewTopClip +',' +intRightClip +',' +intNewDownClip +',' +intLeftClip +')';	
	divStyleObj.top = (intCurrTopPost + intTopClip)-parseInt(topPos);
	}
else
	{
	//get the topclip-value
	intTopClip = parseInt(divStyleObj.clip.top);

	//get the downclip-value
	intDownClip = parseInt(divStyleObj.clip.height);
	
	intNewTopClip = parseInt(topPos);
	intNewDownClip = (parseInt(intDownClip)-parseInt(intTopClip))+parseInt(topPos);
	
	divStyleObj.clip.height = intNewDownClip;
	divStyleObj.clip.top = intNewTopClip;
	divStyleObj.top = (intCurrTopPost + intTopClip)-parseInt(topPos);
	}
}
