var lOffsetPos=0;
var lOffset2step;


// Information container for a ScrollLayer
function ScrollStruct(objName, layerID, xPos, yPos, orientation, visibleSize, clipOffsetPos)
{
this.name          = objName;
this.layerID       = layerID;
this.xPos          = xPos;
this.yPos          = yPos;
this.orientation   = orientation;
this.visibleSize   = visibleSize;
//this.clipOffsetPos = 0; // Relative from LEFT if "Horiz", TOP if "Vert" 
this.clipOffsetPos = clipOffsetPos // Relative from LEFT if "Horiz", TOP if "Vert" 
this.dist          = 0;
this.speed         = 0;
this.stopPoint     = 0;
this.intervalID    = 0; // For setInterval and clearInterval
this.scrolling     = false; 
}

//**************************************************************
//
// function ScrollLayer()
//
// The ScrollLayer function moves the clip to the offset
// location stored in "clipOffsetPos" relative to the layer
// in either the horizontal or vertical direction depending
// on the "orientation" of the layer.
//
//
//  DEBUG INFO
//  ADD: Need to add Netscape support (Currently supports IE5+).
//
//**************************************************************
function ScrollLayer(scrollStruct)
{
//alert(document.getElementById(scrollStruct.layerID).style.posLeft);
//alert(document.getElementById(scrollStruct.layerID).style.posTop);
//alert(document.getElementById(scrollStruct.layerID).style.clip);

	if (navigator.appName != "Netscape") 
	{
		//Explorer
		var width   = parseInt(document.all[scrollStruct.layerID].style.width);
		var height  = parseInt(document.all[scrollStruct.layerID].style.height);
	}
	else
	{
		if(document.layers)
		{
			//alert('document.layers');	
		}
		else
		{
			var width   = parseInt(document.getElementById(scrollStruct.layerID).style.width);
			var height  = parseInt(document.getElementById(scrollStruct.layerID).style.height);
		}
	}

if (scrollStruct.clipOffsetPos + scrollStruct.speed >= 0
&& scrollStruct.clipOffsetPos + scrollStruct.speed + scrollStruct.visibleSize
<= (scrollStruct.orientation == "Horiz" ? width : height))
{
scrollStruct.clipOffsetPos += scrollStruct.speed;

// Check for stop points
if (scrollStruct.speed > 0
&& scrollStruct.dist*(scrollStruct.stopPoint+1) >= scrollStruct.clipOffsetPos - scrollStruct.speed
&& scrollStruct.dist*(scrollStruct.stopPoint+1) <= scrollStruct.clipOffsetPos)
{
scrollStruct.stopPoint += 1;
clearInterval(scrollStruct.intervalID);
scrollStruct.scrolling = false;
}
else if (scrollStruct.speed < 0
&& scrollStruct.dist*(scrollStruct.stopPoint-1) >= scrollStruct.clipOffsetPos
&& scrollStruct.dist*(scrollStruct.stopPoint-1) <= scrollStruct.clipOffsetPos - scrollStruct.speed)
{
scrollStruct.stopPoint -= 1;
clearInterval(scrollStruct.intervalID);
scrollStruct.scrolling = false; 
} 

// Create and display the clip in the approppriate location
// if the position of the clip remains inside the layer.
// clip: rect(top right bottom left)
if (scrollStruct.orientation == "Horiz")
{
	
	if (navigator.appName != "Netscape") 
	{
		//Explorer
		//alert(document.all[scrollStruct.layerID].style.posLeft);
		document.all[scrollStruct.layerID].style.posLeft = scrollStruct.xPos - scrollStruct.clipOffsetPos;
		document.all[scrollStruct.layerID].style.posTop  = scrollStruct.yPos; 
		document.all[scrollStruct.layerID].style.clip    = "rect(auto " + (scrollStruct.clipOffsetPos + scrollStruct.visibleSize) + "px auto " + scrollStruct.clipOffsetPos + "px)";
	}
	else
	{
		if(document.layers)
		{
			//alert('document.layers');	
		}
		else
		{
			//document.getElementById(scrollStruct.layerID)
			//alert(document.getElementById(scrollStruct.layerID).style.posLeft);
			//document.getElementById(scrollStruct.layerID).style.posLeft = scrollStruct.xPos - scrollStruct.clipOffsetPos;
			document.getElementById(scrollStruct.layerID).style.Left = scrollStruct.xPos - scrollStruct.clipOffsetPos;
			document.getElementById(scrollStruct.layerID).style.posTop  = scrollStruct.yPos; 
			document.getElementById(scrollStruct.layerID).style.clip    = "rect(auto " + (scrollStruct.clipOffsetPos + scrollStruct.visibleSize) + "px auto " + scrollStruct.clipOffsetPos + "px)";
		}
	}

}
else if (scrollStruct.orientation == "Vert")
{
document.all[scrollStruct.layerID].style.posLeft = scrollStruct.xPos;
document.all[scrollStruct.layerID].style.posTop  = scrollStruct.yPos - scrollStruct.clipOffsetPos;
document.all[scrollStruct.layerID].style.clip    = "rect(" + scrollStruct.clipOffsetPos + "px auto " + (scrollStruct.clipOffsetPos + scrollStruct.visibleSize) + "px auto)"; 
}
else return;

	if (navigator.appName != "Netscape") 
	{
		//Explorer
		document.all[scrollStruct.layerID].style.visibility = "visible"; 
	}
	else
	{
		if(document.layers)
		{
			//alert('document.layers');	
		}
		else
		{
			//document.getElementById(scrollStruct.layerID)
			document.getElementById(scrollStruct.layerID).style.visibility = "visible"; 
		}
	}

}
else 
{
clearInterval(scrollStruct.intervalID);
scrollStruct.scrolling = false;
}
}

// Methods to perform on a Scroll Layer
function ScrollForward(scrollStruct, dist, speed)
{
    PauseScroll(scrollStruct);
    if (!scrollStruct.scrolling)
{
scrollStruct.dist       = dist;
scrollStruct.speed      = speed;
scrollStruct.scrolling  = true;
scrollStruct.intervalID = setInterval("ScrollLayer(" + scrollStruct.name + ")", 1);
}
}
function ScrollBackward(scrollStruct, dist, speed)
{
    PauseScroll(scrollStruct);
    if (!scrollStruct.scrolling)
{
scrollStruct.dist       = dist;
scrollStruct.speed      = -speed;
scrollStruct.scrolling  = true; 
scrollStruct.intervalID = setInterval("ScrollLayer(" + scrollStruct.name + ")", 1);
}
}
function PauseScroll(scrollStruct)
{
clearInterval(scrollStruct.intervalID);
scrollStruct.scrolling = false;
}