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

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 imageGalleryObj = false;
var maxGalleryXPos = false;
var slideSpeed = 0;
var imageGallery = new Array();

var totalThumbsWidth = 0;
var activePictureKey = -1;


function myAlert (str)  {
//	alert (str);
}


function ImageObj (imgTitle, imgCaption, imgCost, imgSize, frmSize, imgEditions) {
    this.imageTitle = imgTitle;
    this.imageCaption = imgCaption;
    this.imageCost = imgCost;
    this.imageSize = imgSize;
    this.framedSize = frmSize;
    this.imageEditions = imgEditions;
}



function startSlide(e)
{
	var MAX_SPEED = 5;
	
	if(document.all)e = event;
	var id = this.id;
//	this.getElementsByTagName('img')[0].src = '/images/layout/' + this.id + '_over.gif';	
	if(this.id=='arrow_right_inner'){
		slideSpeedMultiply = Math.floor((e.clientX - this.offsetLeft) / 5);
		slideSpeed = -slideSpeedMultiply;
		slideSpeed = Math.max(-MAX_SPEED,slideSpeed);
	}else{			
		slideSpeedMultiply = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
		slideSpeed = slideSpeedMultiply;
		slideSpeed = Math.min(MAX_SPEED,slideSpeed);
		if(slideSpeed<0)slideSpeed=MAX_SPEED;
	}
	
//	gallerySlide ();
}

function releaseSlide()
{
//	var id = this.id;
//	this.getElementsByTagName('img')[0].src = '/images/layout/' + this.id + '.gif';
	slideSpeed=0;
}

function gallerySlide()
{
	if(slideSpeed!=0){

		var leftPos = imageGalleryObj.offsetLeft;

		leftPos += slideSpeed;

		if (leftPos > maxGalleryXPos){
			leftPos = maxGalleryXPos;

			slideSpeed = 0;

		} else if (leftPos < minGalleryXPos){
			leftPos = minGalleryXPos;

			slideSpeed = 0;
		}

		imageGalleryObj.style.left = leftPos + 'px';
	}
	
	setTimeout('gallerySlide()',20);
}

function hover()
{

	if (! ((BrowserDetect.browser == "Explorer") && ("6" == BrowserDetect.version))) {
		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()
{
	var leftArrow = document.getElementById ('arrow_left_inner');
	var rightArrow = document.getElementById ('arrow_right_inner');	

	var arrowWidth = 50; // width of each arrow + its padding/margin/border, etc.

	imageGalleryObj = document.getElementById('theImages');
	var imageGalleryWidth = document.getElementById('galleryContainer').offsetWidth - (2 * arrowWidth);
	maxGalleryXPos = imageGalleryObj.offsetLeft; 
	minGalleryXPos = imageGalleryWidth - document.getElementById('slideEnd').offsetLeft + arrowWidth;
	var slideshowImages = imageGalleryObj.getElementsByTagName('img');

	totalThumbsWidth = 0;
	for(var no=0;no<slideshowImages.length;no++){
		slideshowImages[no].onmouseover = hover;
		
		var thumbWidth = slideshowImages[no].width;
//		myAlert ("thumbWidth: " + thumbWidth);
		totalThumbsWidth += thumbWidth + 10;	//	border, padding and margin are 10px
//		myAlert ("totalThumbsWidth: " + totalThumbsWidth);
	}


	var columnWidth = 510 // ('centralColumn').width;
//	myAlert ("columnWidth: " + columnWidth);


	// do we need the scrolling arrows?	
	if (totalThumbsWidth > columnWidth) {
//		myAlert ("scrolling");
		leftArrow.onmousemove = startSlide;
		leftArrow.onmouseout = releaseSlide;
		rightArrow.onmousemove = startSlide;
		rightArrow.onmouseout = releaseSlide;	
		leftArrow.display = "absolute";
		rightArrow.display = "absolute";
	} else {
//		myAlert ("not scrolling");
		leftArrow.display = "none";
		rightArrow.display = "none";
	}


	
	


	var i = 0;
	var looping = true;
	
	while (looping) {
		var imageTitleDiv = document.getElementById ('imageTitle' + i);
				
		if (imageTitleDiv != null) {
			var imageTitle = imageTitleDiv.innerHTML;
//			myAlert ("imageTitle: " + imageTitle);	
			
			var imageCaptionDiv = document.getElementById ('imageCaption' + i);
			
			if (imageCaptionDiv != null) {
				var imageCaption = imageCaptionDiv.innerHTML;
//				myAlert ("imageCaption: " + imageTitle);	


				var imageEditionsDiv = document.getElementById ('imageEditions' + i);
				var imageEditions = null;
				if (imageEditionsDiv != null) {
					imageEditions = imageEditionsDiv.innerHTML;
				}

				var imageCostDiv = document.getElementById ('imageCost' + i);
				var imageCost = null;
				if (imageCostDiv != null) {
					imageCost = imageCostDiv.innerHTML;
				}

				var imageSizeDiv = document.getElementById ('imageSize' + i);
				var imageSize = null;
				if (imageSizeDiv != null) {
					imageSize = imageSizeDiv.innerHTML;
				}

				var framedSizeDiv = document.getElementById ('framedSize' + i);
				var framedSize = null;
				if (framedSizeDiv != null) {
					framedSize = framedSizeDiv.innerHTML;
				}

				var imageObj = new ImageObj (imageTitle, imageCaption, imageCost, imageSize, framedSize, imageEditions);
			
//				myAlert ("adding: " + imageTitle);	
				imageGallery [i] = imageObj;		
			
			
			
				++ i;
				
			} else {
				looping = false;
			}
			
		} else {
			looping = false;
		}
	}

	gallerySlide();
}


function storeCurrentShopDetails (picKey, picIndex) {
	var request = false;
	try {
	  request = new XMLHttpRequest();
	} catch (trymicrosoft) {
	  try {
		request = new ActiveXObject("Msxml2.XMLHTTP");
	  } catch (othermicrosoft) {
		try {
		  request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (failed) {
		  request = false;
		}
	  }
	}

	if (request) {
		var projKey = getParameter ("key");

		if (projKey != null) {
			var url = "store.php?shopProject=" + projKey + "&shopPicture=" + picKey + "&shopPictureIndex=" + picIndex;
			request.open ("GET", url, true);
			request.onreadystatechange = function () {
				if (request.readyState == 4) {
					window.location = "popup.php?key=" + picKey;
				}
			}
			
			request.send (null);
		}


	} else {
		window.location = "popup.php?key=" + picKey;
	}
}




function showPreview (imageKey, imageIndex, mode, fullImageKey, fullImageLinkText, dimClass){
	var previewImage = document.getElementById('previewImage');

	var mountEl = document.getElementById('mount');

	if(previewImage == null){
		previewImage = document.createElement('img');
		previewImage.className = "png";
		previewImage.id="previewImage";
		mountEl.appendChild(previewImage);
	}

	if(displayWaitMessage){
		document.getElementById('waitMessage').style.display='inline';
	}
	document.getElementById('largeImageTitle').style.display='none';
	document.getElementById('largeImageCaption').style.display='none';
	previewImage.onload = function() { hideWaitMessageAndShowCaption(imageIndex,imageKey,mode); };
	
	var imgUrl = "image.php?key=" + imageKey;
	previewImage.src = imgUrl;


	if ((BrowserDetect.browser == "Explorer") && ("6" == BrowserDetect.version)) {
		supersleight.limitTo ("mount");
		supersleight.run ();
	}


	
	//mount.style.background='url('+ imgUrl + '">
	
	activePictureKey = imageKey;


		
	if (mode == "shop") {
//		setBasket ();
		var basketLink = document.getElementById ("basketLinkImage");
		//basketLink.href = "popup.php?key=" + imageKey;
		
		basketLink.onclick = function () {
			storeCurrentShopDetails (imageKey, imageIndex);
		};
		
		var basketLink = document.getElementById ("basketLinkText");
		//basketLink.href = "popup.php?key=" + imageKey;

		basketLink.onclick = function () {
			storeCurrentShopDetails (imageKey, imageIndex);
		};


	} else if (mode == "gallery") {

		var textAnchor = document.getElementById('fullSizeTextLink');
		var imageAnchor = document.getElementById('fullSizeImageLink');
		
		if (fullImageKey != -1) {
		
			if (textAnchor) {
				textAnchor.href = "image.php?key=" + fullImageKey + "&table=fullimages";
			
				if ((fullImageLinkText != null) && (fullImageLinkText != "")) {
					textAnchor.innerHTML = fullImageLinkText;
				} else {
					textAnchor.innerHTML = "See &#8216;" + imageGallery [imageIndex].imageTitle + "&#8217; in context.";				
				}
				//anchor.title = imageGallery [imageIndex].imageCaption;

				textAnchor.className = dimClass;
				textAnchor.style.visibility = "visible";			
			}

			if (imageAnchor) {
				imageAnchor.href = "image.php?key=" + fullImageKey + "&table=fullimages";
				imageAnchor.style.visibility = "visible";
				imageAnchor.className = dimClass;
			}


		} else {
			if (textAnchor) {
				textAnchor.href = "";
				textAnchor.className = "";
				textAnchor.style.visibility = "hidden";
			}

			if (imageAnchor) {
				imageAnchor.href = "";
				imageAnchor.className = "";
				imageAnchor.style.visibility = "hidden";
			}

		}
	}

	

	// resize mount;
	/*
	alert ("previewImage.width: " + previewImage.width);
	alert ("previewImage.height: " + previewImage.height);
	mountEl.width = previewImage.width + 200;	
	mountEl.height = previewImage.height + 200;
	*/
	document.getElementById('largeImageCaption').style.display='none';

}

function hideWaitMessageAndShowCaption(imageIndex, imageKey, mode)
{
	var imageTitleStr = imageGallery [imageIndex].imageTitle;
	var imageDescStr = imageGallery [imageIndex].imageCaption;

	var imageTitle = document.getElementById('largeImageTitle');
	var imageCaption = document.getElementById ('largeImageCaption');

	document.getElementById('waitMessage').style.display='none';	

	imageTitle.innerHTML = imageTitleStr;
	imageTitle.style.display='block';

	imageCaption.innerHTML = imageDescStr;
	imageCaption.style.display='block';

	
	var imageCostStr = imageGallery [imageIndex].imageCost;
	var imageSizeStr = imageGallery [imageIndex].imageSize;
	var framedSizeStr = imageGallery [imageIndex].framedSize;
	var imageEditionsStr = imageGallery [imageIndex].imageEditions;


	if (mode == "shop") {
		var imageCost = document.getElementById ('largeImageCost');
		var imageSize = document.getElementById ('largeImageSize');
		var framedSize = document.getElementById ('framedImageSize');
		var imageEditions = document.getElementById ('largeImageEditions');


	//	var blankRE = /^[\s]+$/;

		var pricing =  document.getElementById ('pricing');
		var showPricing = false;

		if (imageCostStr != null) {
			imageCost.innerHTML = imageCostStr;
			showPricing = true;
		} else {
			imageCost.innerHTML = "";	
		}

		if (imageSizeStr != null) {
			imageSize.innerHTML = imageSizeStr;
			showPricing = true;
		} else {
			imageSize.innerHTML = "";	
		}

		if (framedSizeStr != null) {
			framedSize.innerHTML = framedSizeStr;
			showPricing = true;
		} else {
			framedSize.innerHTML = "";	
		}


		if (imageEditionsStr != null) {
			imageEditions.innerHTML = imageEditionsStr;
			showPricing = true;
		} else {
			imageEditions.innerHTML = "";	
		}


		if (showPricing) {
			pricing.style.visibility = 'visible';
		} else {
			pricing.style.visibility = 'hidden';
		}

	}
}


