/***********************************************

* CMotion Image Gallery- © 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

***********************************************/



 //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=1000;

 //4) Set to 1 for left start, 0 for right, 2 for center.

var startpos=1;

 //5) Set message to show at end of gallery. Enter "" to disable message.

var endofgallerymsg='<span style="font-size: 11px;">End of Gallery</span>';



function enlargeimage(path, optWidth, optHeight){ //function to enlarge image. Change as desired.

var actualWidth=typeof optWidth!="undefined" ? optWidth : "600px" //set 600px to default width

var actualHeight=typeof optHeight!="undefined" ? optHeight : "500px" //set 500px to  default height

var winattributes="width="+actualWidth+",height="+actualHeight+",resizable=yes"

window.open(path,"", winattributes)

}



var posStore = "0px";

var caption;



function displayImageAction(object)

{ 

	var arrayPageSize = getPageSize();

	var arrayPageScroll = getPageScroll();

	var loadingOverlay = document.getElementById("loadingOverlay");

	var loadingImage = document.getElementById("loadingImage");

	var displayImageContainer = document.getElementById("displayImageContainer");

	var displayImage = document.getElementById("displayImage");

	var displayImageCaption = document.getElementById("displayImageCaption");

	

	var thumbnail = getThumbnail(object);

	var imageURL = thumbnail.getAttribute("src");

	imageURL = imageURL.replace(/thumbnails/,"images");



	var displayImage = document.getElementById("displayImage");



	if (displayImage.getAttribute("src")!=imageURL)

	{

		displayImage.setAttribute("alt", "Loading...");

		displayImageCaption.innerHTML = "Loading...";

		loadingOverlay.style.left = getLeft(displayImageContainer) + 3 + "px";

		loadingOverlay.style.top = getTop(displayImageContainer) + 3 + "px";

		loadingOverlay.style.width = displayImageContainer.clientWidth + "px";

		loadingOverlay.style.height = displayImageContainer.clientHeight + "px";

		loadingImage.style.display = 'block';

		loadingOverlay.style.display = "block";

		loadingImage.style.top = ((displayImageContainer.clientHeight - loadingImage.clientHeight) / 2) + "px";

		loadingImage.style.left = ((displayImageContainer.clientWidth - loadingImage.clientWidth) / 2) + 'px';



		caption = thumbnail.getAttribute("caption");



		displayImage.src = imageURL;

	}

	

	cross_scroll.style.left=posStore;

}



function getThumbnail(object)

{

	var thumb;

	var nodes = object.childNodes;

	

	for (var i=0; i<nodes.length; i++)

	{

		if (nodes[i].nodeType==1)

		{

			thumb =  object.childNodes[i];

		}

	}

	

	return thumb;

}



function displayImageAction_Complete()

{

	var loadingOverlay = document.getElementById("loadingOverlay");

	loadingOverlay.style.display = "none";



	var displayImageContainer = document.getElementById("displayImageContainer");

	var displayImage = document.getElementById("displayImage");

	var displayImageCaption = document.getElementById("displayImageCaption");

	displayImage.setAttribute("alt", caption);

	displayImageCaption.innerHTML = caption;



	displayImageContainer.style.width = displayImage.width + "px";

	displayImageCaption.style.width = displayImage.width + "px";

	cross_scroll.style.left=posStore;

}



function initialise()

{

	fillup();

	var displayImage = document.getElementById("displayImage");	

	displayImage.onload=displayImageAction_Complete;

	displayImageAction_Complete();

	displayImageAction(document.getElementById("initialImage"));

}



function getLeft(object)

{

    var thisLeft = object.offsetLeft;

    

    if (object.offsetParent)

    {

    	thisLeft += getLeft(object.offsetParent);

    }

    

    return thisLeft;

}



function getTop(object)

{

    var thisLeft = object.offsetTop;

    

    if (object.offsetParent)

    {

    	thisLeft += getTop(object.offsetParent);

    }

    

    return thisLeft;

}



/* Lifted from Lightbox */

//

// getPageScroll()

// Returns array with x,y page scroll values.

// Core code from - quirksmode.org

//

function getPageScroll(){



	var yScroll;



	if (self.pageYOffset) {

		yScroll = self.pageYOffset;

	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict

		yScroll = document.documentElement.scrollTop;

	} else if (document.body) {// all other Explorers

		yScroll = document.body.scrollTop;

	}



	arrayPageScroll = new Array('',yScroll) 

	return arrayPageScroll;

}







//

// getPageSize()

// Returns array with page width, height and window width, height

// Core code from - quirksmode.org

// Edit for Firefox by pHaez

//

function getPageSize(){

	

	var xScroll, yScroll;

	

	if (window.innerHeight && window.scrollMaxY) {	

		xScroll = document.body.scrollWidth;

		yScroll = window.innerHeight + window.scrollMaxY;

	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac

		xScroll = document.body.scrollWidth;

		yScroll = document.body.scrollHeight;

	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari

		xScroll = document.body.offsetWidth;

		yScroll = document.body.offsetHeight;

	}

	

	var windowWidth, windowHeight;

	if (self.innerHeight) {	// all except Explorer

		windowWidth = self.innerWidth;

		windowHeight = self.innerHeight;

	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode

		windowWidth = document.documentElement.clientWidth;

		windowHeight = document.documentElement.clientHeight;

	} else if (document.body) { // other Explorers

		windowWidth = document.body.clientWidth;

		windowHeight = document.body.clientHeight;

	}	

	

	// for small pages with total height less then height of the viewport

	if(yScroll < windowHeight){

		pageHeight = windowHeight;

	} else { 

		pageHeight = yScroll;

	}



	// for small pages with total width less then width of the viewport

	if(xScroll < windowWidth){	

		pageWidth = windowWidth;

	} else {

		pageWidth = xScroll;

	}





	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 

	return arrayPageSize;

}

/* End of code oifted from lightbox */



////NO NEED TO EDIT BELOW THIS LINE////////////



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";

cross_scroll.style.left=posStore;

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");

}

posStore = cross_scroll.style.left;

lefttime=setTimeout("moveleft()",10);

}



function moveright(){

if (loadedyes){

movestate="right";

cross_scroll.style.left=posStore;

if (iedom&&parseInt(cross_scroll.style.left)<0){

cross_scroll.style.left=parseInt(cross_scroll.style.left)+scrollspeed+"px";

showhidediv("hidden");

}

else

showhidediv("visible");

}

posStore = cross_scroll.style.left;

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 fillup(){

if (iedom){

crossmain=document.getElementById? document.getElementById("motioncontainer") : document.all.motioncontainer;

if(typeof crossmain.style.maxWidth!=='undefined')

crossmain.style.maxWidth=maxwidth+'px';

menuwidth=crossmain.offsetWidth;

cross_scroll=document.getElementById? document.getElementById("motiongallery") : document.all.motiongallery;

actualwidth=document.getElementById? document.getElementById("trueContainer").offsetWidth : document.all['trueContainer'].offsetWidth;

if (startpos)

cross_scroll.style.left=(menuwidth-actualwidth)/startpos+'px';

crossmain.onmousemove=function(e){

motionengine(e);

}



crossmain.onmouseout=function(e){

stopmotion(e);

showhidediv("hidden");

}

}

loadedyes=1

if (endofgallerymsg!=""){

creatediv();

positiondiv();

}

if (document.body.filters)

onresize()

}

//window.onload=fillup;

window.onload=initialise;



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;

}
