//////////////////////////////////////////////////////////////////////
//
// Adapted from: CMotion - requires prototype.js
//
// © Dynamic Drive DHTML code library (www.dynamicdrive.com)
// Visit http://www.dynamicDrive.com for source code
// This copyright notice must stay intact for legal use
// Modified for autowidth and optional starting positions in
// http://www.dynamicdrive.com/forums/showthread.php?t=11839 
// by jschuer1 8/5/06
//
//////////////////////////////////////////////////////////////////////


var restarea=60; // width of the "neutral" area in the center of the gallery.
	
var maxspeed=3; // top scroll speed in pixels. Script auto creates a range from 0 to top speed.

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 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 stopmotion(e){
	if (!window.opera||(window.opera&&e.relatedTarget !== null))
	if ((window.event&&!crossmain.contains(event.toElement)) || (e && e.currentTarget && e.currentTarget != e.relatedTarget)){
	clearTimeout(lefttime);
	clearTimeout(righttime);
	movestate = "";
	}
}

function loadScroller(){
	if (iedom){
		crossmain = $(motioncontainer);
		menuwidth = crossmain.offsetWidth;
		cross_scroll = $(motiongallery);
		cross_scroll.style.left = "0px";
		cross_scroll.style.top = "0px";
		actualwidth = $(trueContainer).offsetWidth;
		crossmain.onmousemove=function(e){
		motionengine(e);
	}
		crossmain.onmouseout=function(e){
		stopmotion(e);
	}
	}
		loadedyes = 1;
}



//////////////////////////////////////////////////////////////////////
//
// image gallery - requires prototype.js
//
//////////////////////////////////////////////////////////////////////

function showPic(whichpic) {
	currentPic = whichpic;
	var source = whichpic.getAttribute("href");
	var picture = $(placeholder);
	picture.setAttribute("src",source);
	if (whichpic.getAttribute("name")) {
	var text = whichpic.getAttribute("name");
	} else {
	var text = "";
	}
	var info = $(description);
	if (info.firstChild.nodeType == 3) {
	info.firstChild.nodeValue = text;
	}
	return false;
}

function nextPic() {
	for ( var i=0; i < picLinks.length; i++) {
			if (picLinks[i] == currentPic) {
			picIndex = (i == picLinks.length - 1 ? 0 : i+1);
		}
	}	
	showPic(picLinks[picIndex]);
}

function prevPic() {
	for ( var i=0; i < picLinks.length; i++) {
			if (picLinks[i] == currentPic) {
			picIndex = (i == 0 ? picLinks.length - 1 : i-1);
		}
	}	
	showPic(picLinks[picIndex]);
}

function prepareGallery() {
  var gallery = $(motiongallery);
  picLinks = gallery.getElementsByTagName("a");
  currentPic = picLinks[0];
  for ( var i=0; i < picLinks.length; i++) {
    picLinks[i].onclick = function() {
      return showPic(this);
	}
    picLinks[i].onkeypress = picLinks[i].onclick;
  }
  var button = $(rightButton);
  	  button.onclick = function() {
      return nextPic();
	}
  var button = $(leftButton);
  	  button.onclick = function() {
      return prevPic();
	}
}

//////////////////////////////////////////////////////////////////////
//
// script loader
//
//////////////////////////////////////////////////////////////////////


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

//////////////////////////////////////////////////////////////////////
//
// load stuff
//
//////////////////////////////////////////////////////////////////////

addLoadEvent(prepareGallery);
addLoadEvent(loadScroller);