 //1) Set width of the "neutral" area in the center of the gallery.
var restarea = 6;
 //2) Set top scroll speed in pixels. Script auto creates a range from 0 to top speed.
var maxspeed = 7;
 //3) Set to maximum width for gallery - must be less than the actual length of the image train.
var maxwidth = 2000;
 //4) Set to 1 for left start, 0 for right, 2 for center.
var startpos = 0;
 //5) Set message to show at end of gallery. Enter "" to disable message.
var endofgallerymsg = '<span style = "font-size: 11px;">Image Tooltip</span>';

var imagesLoaded = 0;
var imageToLoad = -1;
var imageLoading = 0;

var iedom = document.all||document.getElementById, scrollspeed = 0, movestate = '', actualwidth = '', cross_scroll, ns_scroll, statusdiv, loadedyes = 0, lefttime, righttime;

function ietruebody()
{
	return (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
}

function creatediv()
{
	statusdiv = document.createElement("div")
	statusdiv.setAttribute("id","statusdiv")
	document.body.appendChild(statusdiv)
	statusdiv = document.getElementById("statusdiv")
	statusdiv.innerHTML = endofgallerymsg
}

function positiondiv()
{
	var mainobjoffset = getposOffset(crossmain, "left"),
	menuheight = parseInt(crossmain.offsetHeight),
	mainobjoffsetH = getposOffset(crossmain, "top");
	statusdiv.style.left = mainobjoffset + (menuwidth / 2) - (statusdiv.offsetWidth / 2) + "px";
	statusdiv.style.top = menuheight + mainobjoffsetH + "px";
}

function showhidediv(what)
{
	if (endofgallerymsg != "") 
	{
		positiondiv();
		statusdiv.style.visibility = what;
	}
}

function getposOffset(what, offsettype)
{
	var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
	var parentEl = what.offsetParent;
	while (parentEl != null)
	{
		totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
		parentEl = parentEl.offsetParent;
	}
	return totaloffset;
}

function moveleft()
{
	if (loadedyes)
	{
		movestate = "left";
		if (iedom && parseInt(cross_scroll.style.left) > (menuwidth - actualwidth))
		{
			cross_scroll.style.left = parseInt(cross_scroll.style.left)-scrollspeed + "px";
		}
	}
	lefttime = setTimeout("moveleft()",10);
}

function moveright()
{
	if (loadedyes)
	{
		movestate = "right";
		if (iedom && parseInt(cross_scroll.style.left) < 0)
		{
			cross_scroll.style.left = parseInt(cross_scroll.style.left)+scrollspeed + "px";
		}
	}
	righttime = setTimeout("moveright()",10);
}

function motionengine(e)
{
	var mainobjoffset = getposOffset(crossmain, "left"),
	dsocx = (window.pageXOffset)? pageXOffset: ietruebody().scrollLeft,
	dsocy = (window.pageYOffset)? pageYOffset : ietruebody().scrollTop,
	curposy = window.event ? event.clientX : e.clientX ? e.clientX : "";
	curposy -= mainobjoffset - dsocx;
	var leftbound = (menuwidth - restarea) / 2;
		
	var rightbound = (menuwidth +restarea) / 2;
	if (curposy > rightbound)
	{
		scrollspeed = (curposy-rightbound)/((menuwidth-restarea) / 2) * maxspeed;
		clearTimeout(righttime);
		if (movestate != "left") 
			moveleft();
	}
	else if (curposy < leftbound)
	{
		scrollspeed = (leftbound - curposy)/((menuwidth-restarea) / 2) * maxspeed;
		clearTimeout(lefttime);
		if (movestate != "right") 
			moveright();
	}
	else
		scrollspeed = 0;
}

function contains_ns6(a, b) 
{
	if (b !== null)
	while (b.parentNode)
	if ((b = b.parentNode) == a)
	return true;
	return false;
}

function stopmotion(e)
{
	if (!window.opera||(window.opera&&e.relatedTarget !== null))
	if ((window.event&&!crossmain.contains(event.toElement)) || (e && e.currentTarget && e.currentTarget!= e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget)))
	{
		clearTimeout(lefttime);
		clearTimeout(righttime);
		movestate = "";
	}
}

function setOpacity(obj, value) 
{
	obj.style.opacity = value/100;
	obj.style.filter = 'alpha(opacity=' + value + ')';
}

function fillup()
{
	if (iedom)	
	{
		var tc = document.getElementById("trueContainer");
	
		if (tc) 
		{
			var recs = tc.getAttribute("recs");
			imageToLoad = recs;
		}
			
		crossmain = document.getElementById("motioncontainer");
		if (typeof crossmain.style.maxWidth !== 'undefined')
			crossmain.style.maxWidth = maxwidth + 'px';
		menuwidth = crossmain.offsetWidth;
		cross_scroll = document.getElementById("motiongallery");
		var trueCon = document.getElementById("trueContainer");
		actualwidth = trueCon.offsetWidth;
		
		if (actualwidth < menuwidth)
		{
			startpos = 2; // if insufficent pictures center it!
		}			
						
		var piclinks = trueCon.getElementsByTagName('img');
		
		for (var i = 0; i < piclinks.length; i++)
		{
			var picLink = piclinks[i];
			
			picLink.align='absmiddle';
			
			picLink.onmouseover = function()
			{
				if (this.id) 
				{
					if (imageLoading == 0)
					{
						statusdiv.innerHTML = this.id;
						showhidediv("visible");	
					}
					
				    setOpacity(this, 50);
				}
			}
			
			picLink.onmouseout = function()
			{
				if (this.id)
				{				
				    setOpacity(this, 100);
				}
			}	
			
			picLink.onclick = function()
			{
				if (this.id)
				{
					imageLoading = 1; // we are loading an image
					statusdiv.innerHTML = "<img src='images/loading.gif'> Loading Image..."
					showhidediv("visible");	
			
					showDiv(this);
				}
			}	
			
			picLink.onload = function()
			{
				if (this.id)
				{
					imagesLoaded++;
					if (imagesLoaded == imageToLoad)
					{	
						// only when all loaded do we know the true size

						actualwidth = trueCon.offsetWidth;
						
						if (actualwidth < menuwidth)
						{
							startpos = 2; // if insufficent pictures center it!
		
							cross_scroll.style.left = (menuwidth - actualwidth) / startpos + 'px';
						}						
					
						var tc = document.getElementById("thumbLoading");
						
						tc.style.visibility = "hidden";			
					}
				}
			}
			
			var idStr = picLink.id;
			var len = idStr.length;
			var idx = idStr.indexOf('-') + 1;
			var newImgName = "photos/" + idStr.substr(idx, len-idx) + "_thumb.jpg";
			
			picLink.src = newImgName;			
		}
		
		if (startpos)
		{
			cross_scroll.style.left = (menuwidth-actualwidth) / startpos + 'px';
		}
							
		crossmain.onmousemove = function(e)
		{
			motionengine(e);
		}
		
		crossmain.onmouseout = function(e)
		{
			stopmotion(e);
			if (imageLoading == 0)
			{
				showhidediv("hidden");	
			}
		}
	}
	loadedyes = 1
	if (endofgallerymsg != "")
	{
		creatediv();
		positiondiv();
	}

	if (document.body.filters)
		onresize()
}

window.onload = fillup;

onresize = function()
{
	if (typeof motioncontainer !== 'undefined' && motioncontainer.filters)
	{
		motioncontainer.style.width = "0";
		motioncontainer.style.width = "";
		motioncontainer.style.width = Math.min(motioncontainer.offsetWidth, maxwidth) + 'px';
	}
	menuwidth = crossmain.offsetWidth;
	cross_scroll.style.left = startpos? (menuwidth - actualwidth) / startpos + 'px' : 0;
}