// Version 2002-04-15 copyright Com. Visual Arkipo

// Scroll() Scroll prototype
// ScrollNew(scrollname, cLayer, nVisible, nType, cOption)
// ScrollMover(scrollid, nMove)
// ScrollStop(scrollid)
// ScrollGetId(scrollname)
// ScrollGo(scrollid,nFunction)
// ScrollJump(scrollid, nJump)

// 2002-04-15 IE4 -> IE, ScrollNew can be called to renew scroll

IE=document.all,NS4=document.layers;
var NS6=(!IE&&document.getElementById), NS=(NS4||NS6);

var ScrollList = new Array();
var nMove = 0, nTimer = 0;

// Scroll(prototipo)
 
function Scroll(scname, sclayer, size, type, bklayer, fwlayer, position, origsize, origpos, actpos)
{
	this.scname 	= scname;		// Name of the scroll (for compatibility)
	this.sclayer 	= sclayer;		// Scrolled layer
	this.size 		= size;			// Size of scroll window
	this.type 		= type;			// Type of scroll (not used)
	this.bklayer 	= bklayer;		// Layer with backward scroll arrow
	this.fwlayer 	= fwlayer;		// Layer with forward scroll arrow
	this.position 	= position;		// Position of scroll in layer
	this.origsize 	= origsize;		// Original layer size (normally height)
	this.origpos 	= origpos;		// Original position of scrolled layer  (normally top)
	this.actpos     = actpos;		// Actual position of scrolled layer  (normally top)
	this.move		= 0;			// Current move
	this.timer		= 0;			// Scroll timer

//alert('scname:' +scname+'\nsclayer: '+sclayer+'\nsize: '+size+'\ntype: '+type+'\nbklayer: '+bklayer+'\nfwlayer: '+fwlayer+'\nposition: '+position+'\norigsize: '+origsize+'\norigpos: '+origpos+'\nactpos: '+actpos);
}	

function ScrollNew(scname, sclayer, size, type, bklayer, fwlayer, position)
{
	if (!ScrollGetId(scname)) 
	{
		if (!position) position = 0;
		origsize = LayerSizeGet(sclayer,'height');
		origpos = LayerPosGet(sclayer,'top');
		actpos = origpos;
		ScrollList[ScrollList.length] = new Scroll(scname, sclayer, size, type, bklayer, fwlayer, position, origsize, origpos, actpos);
		scrollid = ScrollList[ScrollList.length-1];
	}
	else 
	{
		scrollid = ScrollGetId(scname);
		if (!position) scrollid.position = 0;
		scrollid.size = size;
		scrollid.type = type;
		scrollid.origsize = LayerSizeGet(sclayer,'height');
		scrollid.actpos = scrollid.origpos;
	}
	if ((bklayer) && (fwlayer))
	{
		if (scrollid.position > 0) LayerVisibility('show', bklayer);
		else  LayerVisibility('hide', bklayer);
	
		if (scrollid.position >= (scrollid.origsize-scrollid.size)) LayerVisibility('hide', fwlayer);
		else  LayerVisibility('show', fwlayer);
	}
	LayerPosSet(scrollid.sclayer, 'top', scrollid.actpos);
	LayerClip(scrollid.sclayer, 0, 0, LayerSizeGet(scrollid.sclayer,'width'), size);
	return(scrollid);
}

function ScrollGetId(scname)
{
	for (x=0;x<ScrollList.length;x++) 
	{
		if (scname==ScrollList[x])
		{
	
			return (ScrollList[x]);
		}
	}
	
	for (x=0;x<ScrollList.length;x++) 
	{
		if (scname==ScrollList[x].scname)
		{
	
			return (ScrollList[x]);
		}
	}
	
	return(null);
}

function ScrollMover(scrollid, nMove)
{
	scrollid = ScrollGetId(scrollid);
	if (!scrollid) return;
	NS6 ? scrollid.move = nMove*3 : scrollid.move = nMove;
	ScrollMove(scrollid);
	scrollid.timer=setTimeout("ScrollMover('" + scrollid + "'," + nMove + ")", 1);
}
	
function ScrollStop(scrollid)
{

	scrollid = ScrollGetId(scrollid);
	if (!scrollid) return;
	clearTimeout(scrollid.timer);
}
	
function ScrollMove(scrollid) 
{
	if (scrollid.move < 0) 
	{
		if ((scrollid.position + scrollid.move) > 0) 
		{
			scrollid.position += scrollid.move;
			scrollid.actpos -= scrollid.move;
		}
		else
		{
			scrollid.position = 0;
			scrollid.actpos = scrollid.origpos;
		}
	}
	else
	{
		if ((scrollid.position + scrollid.move) < scrollid.origsize-scrollid.size) 
		{
			scrollid.position += scrollid.move;
			scrollid.actpos -= scrollid.move;
		}
		else
		{
			scrollid.position = scrollid.origsize-scrollid.size;
			scrollid.actpos = scrollid.origpos-scrollid.position;
		}
	}

	if ((scrollid.bklayer) && (scrollid.fwlayer))
	{	
		if (scrollid.position > 0) LayerVisibility('show', scrollid.bklayer);
		else  LayerVisibility('hide', scrollid.bklayer);
	
		if (scrollid.position >= (scrollid.origsize-scrollid.size)) LayerVisibility('hide', scrollid.fwlayer);
		else  LayerVisibility('show',scrollid.fwlayer);
	}
	//window.status = 'pos: '+scrollid.position+' actpos: '+ scrollid.actpos;
	LayerPosSet(scrollid.sclayer, 'top', scrollid.actpos);
	LayerClip(scrollid.sclayer, 0, scrollid.position, LayerSizeGet(scrollid.sclayer,'width'), scrollid.position+scrollid.size);
}

function ScrollGo(scrollid,nFunction)
{
	if (nFunction == 'end')
	{
		scrollid.position = scrollid.origsize-scrollid.size;
		scrollid.actpos = scrollid.origpos-scrollid.position;
	} 
	else if (nFunction == 'top')
	{
		scrollid.position = 0;
		scrollid.actpos = scrollid.origpos;
	}
	LayerPosSet(scrollid.sclayer, 'top', scrollid.actpos);	
	LayerClip(scrollid.sclayer, 0, scrollid.position, LayerSizeGet(scrollid.sclayer,'width'), scrollid.position+scrollid.size);
}

function ScrollJump(scrollid, nJump)
{
	scrollid = ScrollGetId(scrollid)
	if (!scrollid) return;
	scrollid.move = nJump;

	ScrollMove(scrollid);
}

