var bw=new verifyCompatibleBrowser();
var ScrollSpeed=50;
var ScrollStep=8;
var loop, timer;
var initialised;
var ContentActual=1;
var ContentTotal=1;
var HideArrows=false;

var objContainer;
var objScrollUp;
var objScrollDown;
var objContent;
var objContainer;

function InitialiseScrollableArea(ContainerX, ContainerY, ContentMax)
{
	ContentTotal=ContentMax;
// Crea gli oggetti per container, scroll up and down
	objContainer=new ConstructContainer("divContainer");
	objScrollUp=new ConstructScrollUp("divScrollUp");
	objScrollDown=new ConstructScrollDown("divScrollDown");
// Crea gli oggetti per i contenuti
	for (i=1; i<=ContentMax; i++)
		eval("objContent"+i+"=new ConstructContent('divContent"+i+"', 'divContainer');");
// Attiva il primo contenuto
	eval("objContent=objContent"+ContentActual);
// Inizializza posizioni e area di clipping
	objContainer.MoveArea(ContainerX, ContainerY);
    objContainer.clipWidth=objContainer.width+2;
	objContainer.clipHeight=objContainer.height;
	objScrollUp.MoveArea(objContainer.x+objContainer.width+10, objContainer.y+2);
	objScrollDown.MoveArea(objContainer.x+objContainer.width+10, objContainer.y+objContainer.height-20);
	objContent.MoveArea(0, 0);
// Visualizza gli oggetti (le frecce solo se necessarie)
	objContent.css.visibility="visible";
	objContainer.css.visibility="visible";
	if ( objContent.height>objContainer.height )
	{
		if ( !HideArrows )
			objScrollUp.css.visibility="visible";
		objScrollDown.css.visibility="visible";
	}
	else
	{
		if ( HideArrows )
			objScrollUp.css.visibility="hidden";
		objScrollDown.css.visibility="hidden";
	}
	initialised=true;
}

function verifyCompatibleBrowser()
{
    this.ver=navigator.appVersion;
    this.dom=document.getElementById?1:0;
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
    this.ie4=(document.all && !this.dom)?1:0;
    this.ns5=(this.dom && parseInt(this.ver)>=5)?1:0;
    this.ns4=(document.layers && !this.dom)?1:0;
    this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5);
    return this;
}

function ConstructContainer(obj, nest)
{
	Container=new ConstructObject(obj, nest);
    Container.clipHeight=bw.ns4?Container.css.clip.height:Container.el.offsetHeight;
    Container.clipWidth=bw.ns4?Container.css.clip.width:Container.el.offsetWidth;
    return Container;
}

function ConstructScrollUp(obj, nest)
{
	Scroll=new ConstructObject(obj, nest);
    return Scroll;
}

function ConstructScrollDown(obj, nest)
{
	Scroll=new ConstructObject(obj, nest);
    return Scroll;
}

function ConstructContent(obj, nest)
{
	var Content=new ConstructObject(obj, nest);
    Content.ScrollUp=ScrollUp;
	Content.ScrollDown=ScrollDown;
    Content.ScrollTop=ScrollTop;
	Content.ScrollBottom=ScrollBottom;
    return Content;
}

function ConstructObject(obj, nest)
{
    nest=(!nest)?'':'document.'+nest+'.';
    this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0;
    this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;
	this.x=bw.ns4?this.css.left:this.css.pixelLeft;
	this.y=bw.ns4?this.css.top:this.css.pixelTop;
    this.height=bw.ns4?this.css.document.height:this.el.offsetHeight;
    this.width=bw.ns4?this.css.document.width:this.el.offsetWidth;
    this.obj=obj+"Object";
    eval(this.obj+"=this");
    this.MoveArea=MoveArea;
    return this;
}

function MoveArea(x, y)
{
    this.x=x;
	this.y=y;
    this.css.left=this.x;
    this.css.top=this.y;
}

function ScrollDown(move)
{
	if ( -this.y<(this.height-objContainer.clipHeight) )
	{
	    this.MoveArea(0, this.y-move);
		if ( HideArrows )
		{
		// Nasconde la freccia DOWN se non serve
			if ( -this.y<(this.height-objContainer.clipHeight) )
				objScrollDown.css.visibility="visible";
			else
				objScrollDown.css.visibility="hidden";
		// Visualizza la freccia UP se serve
			if ( this.y<0 )
				objScrollUp.css.visibility="visible";
			else
				objScrollUp.css.visibility="hidden";
		}
	    if ( loop )
			setTimeout(this.obj+".ScrollDown("+move+")", ScrollSpeed);
	}
}

function ScrollUp(move)
{
	if ( this.y<0 )
	{
	    this.MoveArea(0,this.y-move);
		if ( HideArrows )
		{
		// Nasconde la freccia UP se non serve
			if ( this.y<0 )
				objScrollUp.css.visibility="visible";
			else
				objScrollUp.css.visibility="hidden";
		// Visualizza la freccia DOWN se serve
			if ( -this.y<(this.height-objContainer.clipHeight) )
				objScrollDown.css.visibility="visible";
			else
				objScrollDown.css.visibility="hidden";
		}
	    if ( loop )
			setTimeout(this.obj+".ScrollUp("+move+")", ScrollSpeed);
	}
}

function ScrollBottom()
{
    this.MoveArea(0, objContainer.clipHeight-this.height);
	objScrollUp.css.visibility="visible";
	if ( HideArrows )
		objScrollDown.css.visibility="hidden";
}

function ScrollTop()
{
    this.MoveArea(0, 0);
	if ( HideArrows )
		objScrollUp.css.visibility="hidden";
	objScrollDown.css.visibility="visible";
}

function PerformScroll(direction)
{
	if ( initialised )
	{
		loop=true;
		if( direction>0 )
			objContent.ScrollDown(ScrollStep);
		else
			objContent.ScrollUp(-ScrollStep);
	}
}

function PerformTopBottom(direction)
{
	if ( initialised )
	{
		if( direction>0 )
			objContent.ScrollBottom();
		else
			objContent.ScrollTop();
	}
}

function CeaseScroll()
{
    loop=false;
    if ( timer )
		clearTimeout(timer);
}

function ActivateContent(ContentNumber)
{
	CeaseScroll();
	ContentActual=ContentNumber;
	objContent.css.visibility="hidden";
	objContent.MoveArea(0, 0);
	eval("objContent=objContent"+ContentActual);
	objContent.MoveArea(0, 0);
	objContent.css.visibility="visible";
// Visualizza le frecce solo se necessarie
	if ( objContent.height>objContainer.height )
	{
		objScrollUp.css.visibility="visible";
		objScrollDown.css.visibility="visible";
	}
	else
	{
		objScrollUp.css.visibility="hidden";
		objScrollDown.css.visibility="hidden";
	}
}

function ChangeContent(ContentNext)
{
	CeaseScroll();
	if ( ContentNext<0 && ContentActual>1 )
		ContentActual--;
	else if ( ContentNext>0 && ContentActual<ContentTotal )
		ContentActual++;
	else
		return;
	objContent.css.visibility="hidden";
	objContent.MoveArea(0, 0);
	eval("objContent=objContent"+ContentActual);
	objContent.MoveArea(0, 0);
// Visualizza le frecce solo se necessarie
	objContent.css.visibility="visible";
	if ( objContent.height>objContainer.height )
	{
		objScrollUp.css.visibility="visible";
		objScrollDown.css.visibility="visible";
	}
	else
	{
		objScrollUp.css.visibility="hidden";
		objScrollDown.css.visibility="hidden";
	}
}
