/***********************************************
* CMotion Image Gallery- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* Visit http://www.dynamicDrive.com for source code
* Last updated Mar 15th, 04'. Added "End of Gallery" message.
* This copyright notice must stay intact for legal use
***********************************************/

var restarea=6 //1) width of the "neutral" area in the center of the gallery in px
var maxspeed=5 //2) top scroll speed in pixels. Script auto creates a range from 0 to top speed.
var imgwidth=398; //each image is 398 pixels wide
var tid=null;	// time interval

////NO NEED TO EDIT BELOW THIS LINE////////////

var iedom=document.all||document.getElementById
var scrollspeed=0
var movestate=""

var actualwidth=''
var cross_scroll, ns_scroll
var loadedyes=0

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)
}

function positiondiv(){
	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, html){
	statusdiv.style.visibility=what
	statusdiv.innerHTML=html
}

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 moveleftamt(amt){
	scrollspeed = amt;
	moveleft();
	clearTimeout(lefttime);
}

function moverightamt(amt){
	scrollspeed = amt;
	moveright();
	clearTimeout(righttime);
}

function moveleftspeed(speed){
	scrollspeed = speed;
	moveleft();
}

function moverightspeed(speed){
	scrollspeed = speed;
	moveright();
}

function movetoyear(yearnum){
	//determine how fast to move; the further away, the faster to move
	if(tid) clearInterval(tid);
	var curpos = parseInt(cross_scroll.style.left);
	var targetpos = -1 * yearnum * imgwidth;
	var delta = (curpos - targetpos);

	// initialize scrollspeed
	scrollspeed = 5;
	adjustspeed(delta, imgwidth);
	tid = setInterval('moveimage(' + targetpos + ')', 10);
}

function moveimage(targetpos){
	// determine if you need to move left or right
	// this delta will change during every recursion
	var curpos = parseInt(cross_scroll.style.left);
	var delta = (curpos - targetpos);
	if((Math.abs(delta) <= maxspeed * 2) || (iedom&&parseInt(cross_scroll.style.left)<=(menuwidth-actualwidth))) {
//	if((Math.abs(delta) <= maxspeed * 2)) {
		clearInterval(tid);
		cross_scroll.style.left = targetpos+"px";
	}
	
	if(delta > 0) {
		moveleft();
		if (window.lefttime) clearTimeout(lefttime)
	}
	else {
		moveright();
		if (window.righttime) clearTimeout(righttime)
	}
	
	delta = parseInt(cross_scroll.style.left) - targetpos;
	showhidediv("hidden", "")
		
	return;
}

function adjustspeed (delta, imgwidth) {
	// increment by 1 every 2 image width, the base speed is maxspeed
	scrollspeed= Math.floor(Math.abs(delta)/(imgwidth * 2)) + maxspeed;
	// set 10 mph speed limit
	scrollspeed = (scrollspeed > (maxspeed * 2)) ? 10 : scrollspeed;
}

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"
			showhidediv("hidden", "")
		}
		else
			showhidediv("visible", "<span style='font-size: 11px'>End of Timeline</span>")
	}
	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"
			showhidediv("hidden", "")
		}
		else
			showhidediv("visible", "<span style='font-size: 11px'>Beginning of Timeline</span>")
	}
	righttime=setTimeout("moveright()",10)
}

function motionengine(e){
	var dsocx=(window.pageXOffset)? pageXOffset: ietruebody().scrollLeft;
	var dsocy=(window.pageYOffset)? pageYOffset : ietruebody().scrollTop;
	var 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
	if (window.righttime) clearTimeout(righttime)
	if (movestate!="left") moveleft()
	}
	else if (curposy<leftbound){
	scrollspeed=(leftbound-curposy)/((menuwidth-restarea)/2) * maxspeed
	if (window.lefttime) clearTimeout(lefttime)
	if (movestate!="right") moveright()
	}
	else
	scrollspeed=0
}

function contains_ns6(a, b) {
	while (b.parentNode)
	if ((b = b.parentNode) == a)
	return true;
	return false;
}

function stopmotion(e){
	if ((window.event&&!crossmain.contains(event.toElement)) || (e && e.currentTarget && e.currentTarget!= e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget))){
	if (window.lefttime) clearTimeout(lefttime)
	if (window.righttime) clearTimeout(righttime)
	movestate=""
	}
}

function fillup(){
	if (iedom){
		crossmain=document.getElementById? document.getElementById("motioncontainer") : document.all.motioncontainer
		menuwidth=parseInt(crossmain.style.width)
		mainobjoffset=getposOffset(crossmain, "left")
		cross_scroll=document.getElementById? document.getElementById("motiongallery") : document.all.motiongallery
		actualwidth=document.all? cross_scroll.offsetWidth : document.getElementById("trueContainer").offsetWidth

		crossmain.onmousemove=function(e){
			motionengine(e)
		}

		crossmain.onmouseout=function(e){
			stopmotion(e)
			showhidediv("hidden", "")
		}
	}
	loadedyes=1
	creatediv()
	positiondiv()
}
window.onload=fillup
