/***********************************************************************************************

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=true;	// Display a please wait message while images are loading?
	
		
var activeImage = false;
var imageGalleryLeftPos = false;
var imageGalleryWidth = false;
var imageGalleryObj = false;
var maxGalleryXPos = false;
var slideSpeed = 0;
var imageGalleryCaptions = new Array();
function startSlide(e)
{
	if(document.all)e = event;
	var id = this.id;
	this.getElementsByTagName('IMG')[0].src = '/cms/tpl/!general/img/slideshow/' + 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 releaseSlide()
{
	var id = this.id;
	this.getElementsByTagName('IMG')[0].src = '/cms/tpl/!general/img/slideshow/' + 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';
	}
	setTimeout('gallerySlide()',20);
	
}

function showImage()
{
	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()
{
	if (document.getElementById('arrow_left'))
	{
		document.getElementById('arrow_left').onmousemove = startSlide;
		document.getElementById('arrow_left').onmouseout = releaseSlide;
		document.getElementById('arrow_right').onmousemove = startSlide;
		document.getElementById('arrow_right').onmouseout = releaseSlide;
		
		imageGalleryObj = document.getElementById('theImages');
		imageGalleryLeftPos = imageGalleryObj.offsetLeft;
		imageGalleryWidth = document.getElementById('galleryContainer').offsetWidth - 80;
		maxGalleryXPos = imageGalleryObj.offsetLeft; 
		minGalleryXPos = imageGalleryWidth - document.getElementById('slideEnd').offsetLeft;
		var slideshowImages = imageGalleryObj.getElementsByTagName('IMG');
		for(var no=0;no<slideshowImages.length;no++){
			slideshowImages[no].onmouseover = showImage;
		}
		
		var divs = imageGalleryObj.getElementsByTagName('DIV');
		for(var no=0;no<divs.length;no++){
			if(divs[no].className=='imageCaption')imageGalleryCaptions[imageGalleryCaptions.length] = divs[no].innerHTML;
		}
		gallerySlide();
		onclickNextPrevEventHandler(1);
	}
}

function showPreview(imagePath,imageIndex,imageProperties,forcedImageWidth,forcedImageHeight,imageWidth,imageHeight)
{
	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';
	img.onload = function() 
	{ 
		hideWaitMessageAndShowCaption(imageIndex-1); 
		
		switch(imageProperties)
		{
			case "width":
				if (forcedImageWidth != false)	img.style.width=forcedImageWidth+"px";
				img.style.height =  (forcedImageWidth/imageWidth) * imageHeight+"px";
			break;
						
			case "height":
				if (forcedImageHeight != false)	img.style.height=forcedImageHeight+"px";
				img.style.width =  (forcedImageHeight/imageHeight) * imageWidth+"px";
			break;
			
			case "both":
				if (forcedImageWidth != false)	img.style.width=forcedImageWidth+"px";
				if (forcedImageHeight != false)	img.style.height=forcedImageHeight+"px";
			break;
		}
	};
	img.src = imagePath;
	
	onclickNextPrevEventHandler(imageIndex);
	
}
function hideWaitMessageAndShowCaption(imageIndex)
{
	document.getElementById('waitMessage').style.display='none';	
	document.getElementById('largeImageCaption').innerHTML = imageGalleryCaptions[imageIndex];
	document.getElementById('largeImageCaption').style.display='block';
	
}
window.onload = initSlideShow;

function openImageWindow()
{
	var dateNow = new Date();
	var intNow = dateNow.getTime();
	imgObjectSrc = document.getElementById("image_large").src;
	window.open(imgObjectSrc,intNow);
}

function onclickNextPrevEventHandler(cnt)
{
	arrArrowDirection = getPrevNextImages(cnt);
	//alert(arrArrowDirection['prev']+"\n"+arrArrowDirection['next']);
	//strOnclick = 
	document.getElementById("imagePrev").onclick = arrArrowDirection['prev'];
	document.getElementById("imageNext").onclick = arrArrowDirection['next'];
}

function getPrevNextImages(pos)
{
	var arrArrowDirection = new Array();
	var imageGalleryObj = document.getElementById('theImages');
	var slideshowImages = imageGalleryObj.getElementsByTagName('A');
	var next = 0;
	var prev = 0;
	pos = parseInt(pos);
	var cntImages = slideshowImages.length;
	//alert(pos+" "+cntImages);
	if (pos > 1 && pos < cntImages)
	{
		prev = (pos-1);
		next = (pos+1);
	}
	
	if (pos == 1)
	{
		prev = cntImages;
		next = (pos+1);
	}
	
	if (pos == cntImages)
	{
		prev = (cntImages - 1);
		next = 1;
	}
	//alert(prev+"\n"+next);
	
	for(var i=0;i<cntImages;i++)
	{
		//if (pos >)
		//slideshowImages[no].onmouseover = showImage;
		//alert(slideshowImages[i].onclick);
		if (prev==(i+1))
		{
			arrArrowDirection['prev'] = slideshowImages[i].onclick;
			//alert(i);
		}
		
		if (next==(i+1))
		{
			arrArrowDirection['next'] = slideshowImages[i].onclick;
		}
		
	}
	return arrArrowDirection;
	
}
