   	/***********************************************************************************************
	
	Copyright (c) 2005 - Alf Magne Kalleland post@dhtmlgoodies.com
	
	UPDATE LOG:
	
	March, 10th, 2006 : Added support for a message while large image is loading
	
	Get this and other scripts at www.dhtmlgoodies.com
	
	You can use this script freely as long as this copyright message is kept intact.
	
	***********************************************************************************************/ 
   	
	var displayWaitMessage=false;	// Display a please wait message while images are loading?
  	
   		
	var activeImage = false;
	var activeLink = false;
	var imageGalleryLeftPos = false;
	var imageGalleryWidth = false;
	var imageGalleryObj = false;
	var maxGalleryXPos = false;
	var slideSpeed = 0;
	var imageGalleryCaptions = new Array();
	// added
	var slideIncrement = 0; // variable to control slideshow movement
	var itemWidth = 0; // width of link items
	var slideDirection = ""; // direction of slide
	var slideAmount = 0;
	var slideStart = 0;
	var slideEnd = 0;
	
	function startSlide(e)
	{
		if(document.all)e = event;
		var id = this.id;
		this.getElementsByTagName('IMG')[0].src = 'images/' + this.id + '_over.gif';	
		if(this.id=='arrow_right'){
			slideSpeedMultiply = Math.floor((e.clientX - this.offsetLeft) / 5);
			slideSpeed = -1*slideSpeedMultiply;
			slideSpeed = Math.max(-10,slideSpeed);
		}else{			
			slideSpeedMultiply = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
			slideSpeed = 1*slideSpeedMultiply;
			slideSpeed = Math.min(10,slideSpeed);
			if(slideSpeed<0)slideSpeed=10;
		}
	}

	function startSlide_v2(e)
	{
		if(document.all)e = event;
		var id = this.id;
		slideIncrement = itemWidth*4; // slide 4 images left or right
		//slideIncrement = itemWidth; // slide 1 images left or right
		slideStart = imageGalleryObj.offsetLeft;
		if(this.id=='next'){
			/*
			slideSpeedMultiply = Math.floor((e.clientX - this.offsetLeft) / 5);
			slideSpeed = -1*slideSpeedMultiply;
			slideSpeed = Math.max(-10,slideSpeed);
			*/
			slideDirection = "right";
			slideEnd = slideStart-slideIncrement;
		}else{
			/*
			slideSpeedMultiply = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
			slideSpeed = 1*slideSpeedMultiply;
			slideSpeed = Math.min(10,slideSpeed);
			if(slideSpeed<0)slideSpeed=10;
			*/
			slideDirection = "left";
			slideEnd = slideStart+slideIncrement;
		}
	}
	
	function releaseSlide()
	{
		var id = this.id;
		this.getElementsByTagName('IMG')[0].src = 'images/' + this.id + '.gif';
		slideSpeed=0;
	}
		
	function gallerySlide()
	{
		if(slideSpeed!=0){
			var leftPos = imageGalleryObj.offsetLeft;
			leftPos = leftPos/1 + slideSpeed;
			if(leftPos>maxGalleryXPos){
				leftPos = maxGalleryXPos;
				slideSpeed = 0;
				
			}
			if(leftPos<minGalleryXPos){
				leftPos = minGalleryXPos;
				slideSpeed=0;
			}
			
			imageGalleryObj.style.left = leftPos + 'px';
		}	
		if(slideIncrement > 0){
			var oldLeftPos = imageGalleryObj.offsetLeft;
			var leftPos = imageGalleryObj.offsetLeft;
			slideIncrement = slideIncrement - (slideIncrement/2);
			if (slideIncrement < 1) {
				leftPos = slideEnd;
				slideIncrement = 0; 
				//alert("done");
			}
			//alert("leftPos ="+leftPos+" slideDirection="+slideDirection+" slideEnd="+slideEnd);
				
			if (slideDirection == "left") {
				leftPos = leftPos+(slideIncrement);
			}
			if (slideDirection == "right") {
				leftPos = leftPos-(slideIncrement);
			}
			if(leftPos>maxGalleryXPos){
				leftPos = maxGalleryXPos;		
			}
			if(leftPos<minGalleryXPos){
				leftPos = minGalleryXPos;
			}


	
			//slideIncrement = 0; // stop call for debugging
			imageGalleryObj.style.left = leftPos + 'px';
			//alert("end of gallerySlide()");
		}
		// speed at which gallerySlide function is called
		setTimeout('gallerySlide()',80);
	}
	
	function showImage()
	{
		if(activeImage){
			activeImage.style.filter = 'alpha(opacity=100)';	
			activeImage.style.opacity = 1;
		}	
		this.style.filter = 'alpha(opacity=50)';
		this.style.opacity = 0.5;	
		activeImage = this;	
	}
	
	function hideImage()
	{
		if(activeImage){
			activeImage.style.filter = 'alpha(opacity=50)';	
			activeImage.style.opacity = 0.5;
		}	
		this.style.filter = 'alpha(opacity=100)';
		this.style.opacity = 1;	
		activeImage = this;	
	}

	function initSlideShow()
	{
		// find widths of thumbnail items
		itemWidth = getElementWidth('link1');
		/*
		document.getElementById('arrow_left').onmousemove = startSlide;
		document.getElementById('arrow_left').onmouseout = releaseSlide;
		document.getElementById('arrow_right').onmousemove = startSlide;
		document.getElementById('arrow_right').onmouseout = releaseSlide;
		*/
		document.getElementById('prev').onclick = startSlide_v2;
		document.getElementById('next').onclick = startSlide_v2;
		
		imageGalleryObj = document.getElementById('theImages');
		imageGalleryLeftPos = imageGalleryObj.offsetLeft; // left position of thumbnails
		//alert("imageGalleryLeftPos="+imageGalleryLeftPos);
		imageGalleryWidth = document.getElementById('galleryContainer').offsetWidth; // size of viewable area of thumbs
		//alert("imageGalleryWidth="+imageGalleryWidth);
		maxGalleryXPos = imageGalleryObj.offsetLeft; // leftmost x position
		//alert("maxGalleryXPos="+maxGalleryXPos);
		//minGalleryXPos = imageGalleryWidth - document.getElementById('slideEnd').offsetLeft; // rightmost x position
		minGalleryXPos = -imageGalleryWidth; // rightmost x position

		//alert("imageGalleryWidth="+imageGalleryWidth+"document.getElementById('slideEnd').offsetLeft="+document.getElementById('slideEnd').offsetLeft+"minGalleryXPos="+minGalleryXPos);

		// assign function for mouseover/mouseout events on thumbs	
		/*
		var slideshowImages = imageGalleryObj.getElementsByTagName('IMG');
		for(var no=0;no<slideshowImages.length;no++){
			slideshowImages[no].onmouseover = showImage;
			slideshowImages[no].onmouseout = hideImage;
		}
		*/
		// init array of captions
		var divs = imageGalleryObj.getElementsByTagName('DIV');
		// get captions
		for(var no=0;no<divs.length;no++){
			if(divs[no].className=='imageCaption')imageGalleryCaptions[imageGalleryCaptions.length] = divs[no].innerHTML;
		}

		gallerySlide();
	}
	
	function showPreview(imagePath,imageIndex){
		var subImages = document.getElementById('previewPane').getElementsByTagName('IMG');
		if(subImages.length==0){
			var img = document.createElement('IMG');
			document.getElementById('previewPane').appendChild(img);
		}else img = subImages[0];
		
		if(displayWaitMessage){
			document.getElementById('waitMessage').style.display='inline';
		}
		document.getElementById('largeImageCaption').style.display='none';
		// tcv - onload method behaves erratically in safari and chrome
		// img.onload = function() { hideWaitMessageAndShowCaption(imageIndex-1); };
		hideWaitMessageAndShowCaption(imageIndex-1);
		img.src = imagePath;
		// ghost selected thumbnail of image
		//var slideshowImages = imageGalleryObj.getElementsByTagName('IMG');

		//alert("imageIndex="+imageIndex);
		//alert("slideshowImages[imageIndex]="+slideshowImages[imageIndex]);
		//var objImg = slideshowImages[imageIndex-1];
		//alert("objImg="+objImg.style.filter);
		//objImg.style.filter = 'alpha(opacity=50)';	
		//objImg.style.opacity = 0.5;
	
		// change style of link (background of thumbnail)
		var slideshowLinks = imageGalleryObj.getElementsByTagName('A');
		// reset all classes for links
		for(var no=0;no<slideshowLinks.length;no++){
			slideshowLinks[no].className = 'gradientbkgnd trans-border item';
		}
		var objLink = slideshowLinks[imageIndex-1];
		objLink.className = 'gradientbkgnd trans-border item selected';			
	}
	
	function hideWaitMessageAndShowCaption(imageIndex)
	{
		document.getElementById('waitMessage').style.display='none';	
		document.getElementById('largeImageCaption').innerHTML = imageGalleryCaptions[imageIndex];
		document.getElementById('largeImageCaption').style.display='block';
		
	}
	
function getElementWidth(Elem) {
	// different browser types
	ns4 = false;
	op5 = false;
	
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.width;
	} 
	else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) {
			xPos = elem.style.pixelWidth;
		} else {
			xPos = elem.offsetWidth;
		}
		return xPos;
	}
}	

function getElementHeight(Elem) {
	
	// different browser types
	ns4 = false;
	op5 = false;
	
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.height;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) { 
			xPos = elem.style.pixelHeight;
		} else {
			xPos = elem.offsetHeight;
		}
		return xPos;
	} 
}


/***********************************************************************************
function writeCaptionDivs()

	write divs for captions e.g.
	
	<div id="image1" class="imageCaption">
	We've got the unfiltered, leading edge ...
	</div>
/***********************************************************************************/
function writeCaptionDivs() {
	var j = 1;
	// create a slidebar twice the size for pseudo repeat
	//for (i=1; i<(caption.length*2); i++) {
	for (i=1; i<(caption.length); i++) {
		document.write("<div id='image"+j+"' class='imageCaption'>");
		document.write(caption[j]);
		document.write("</div>");
		j++;
		if (j == caption.length) j = 1; // reset to start of array
	}
}
/***********************************************************************************
function writeThumbDivs()
	Write links for thumbnails

	first thumb formatted as:

	<A target='_blank' id="link1" class="gradientbkgnd trans-border item selected" onmouseover="showPreview('images/slideshow/image1.jpg','1');return false" href="#"> 
	<SPAN class="controls indicator"></SPAN> 
	<IMG class=" image linestyle-4 bkgnd-1" src="images/slideshow/image1.jpg"> 
	<SPAN class=item-label>EM-blog.com<br><br><br></SPAN></A> 

	remaining thumbs formatted as:

	<A target='_blank' class="gradientbkgnd trans-border item" onmouseover="showPreview('images/slideshow/image7.jpg','7');return false" href="#"> 
	<SPAN class="controls indicator"></SPAN> 
	<IMG class=" image linestyle-2 bkgnd-1" src="images/slideshow/image7.jpg"> 
	<SPAN class=item-label>NEMBR 2010<br><br><br></SPAN> </A> 
/**********************************************************************************/
function writeThumbDivs() {
	var j = 1;
	// create a slidebar twice the size for pseudo repeat
	//for (i=1; i<(caption.length*2); i++) {
	for (i=1; i<(caption.length); i++) {
		if (i == 1) {
			document.write("<A target='_blank' id='link1' class='gradientbkgnd trans-border item selected' onmouseover=\"showPreview('images/slideshow/"+thumbimage[j]+"','"+j+"');return false\" href='"+thumblink[j]+"'>");
		}
		else {
			document.write("<A target='_blank' class='gradientbkgnd trans-border item' onmouseover=\"showPreview('images/slideshow/"+thumbimage[j]+"','"+j+"');return false\" href='"+thumblink[j]+"'>");
		}
		document.write("<SPAN class='controls indicator'></SPAN>");
		document.write("<IMG class='image linestyle-2 bkgnd-1' src='images/slideshow/"+thumbimage[j]+"'>");
		document.write("<SPAN class='item-label'>"+thumbheading[j]+"</SPAN></A>");
		j++;
		if (j == caption.length) j = 1; // reset to start of array

		
	}
}


	
	window.onload = initSlideShow;