
var mobjImages;				// Images array		
var mobjKeywords;			// Keywords array		
var mobjPhotoSizeCodes;		// Photo Size Codes array		
var mobjPhotoSizeNames;		// Photo Size Names array		
var mobjPhotoPrices;		// Photo Prices array		


// ********************************************* //

function onLoad()
{
	var objImage = new Image();
	objImage.src = "SmallBlank.gif";	
	
	// Populate Arrays (Images and Photo Sizes)
	mobjImages = document.getElementById("hdnImages").value.split("|");
	mobjKeywords = document.getElementById("hdnKeywords").value.split("|");
	mobjPhotoSizeCodes = document.getElementById("hdnPhotoSizeCode").value.split("|");
	mobjPhotoSizeNames = document.getElementById("hdnPhotoSizeName").value.split("|");
	mobjPhotoPrices = document.getElementById("hdnPhotoPrice").value.split("|");

	
	if (document.getElementById("ddlPhotoSize") != null)
	{
		popluatePhotoSizes();
	}
	
	if (document.getElementById("hdnPopupLarge").value == "Y")
	{
		// Hide the large Image Window
		document.getElementById("divOuterLargeImage").style.display = "none";		
	}

	preloadPageImages(parseInt(document.getElementById("hdnPageNumber").value), false);
	displayPageImages(parseInt(document.getElementById("hdnPageNumber").value), false);
	
	// Display the Image
	if (document.getElementById("hdnPopupLarge").value != "Y")
	{
		// Only display first image if not Popup Large		
		preloadLargeImage(document.getElementById("hdnFileName").value);	
		displayLargeImage(document.getElementById("hdnFileName").value);	
	}
	
	displayPlayPauseImage();
	
	
	//playNextImage();	
	if (document.getElementById("hdnPopupLarge").value != "Y")
	{
	    firstImage();
    }
    
	play();
}


// ********************************************* //

function popluatePhotoSizes()
{
	var objPhotoSize = document.getElementById("ddlPhotoSize")
	var objOption;
	var x;
	var strCurrencySymbol;

	strCurrencySymbol = getCookie("CurrencySymbol");	

	for(x=0;x<mobjPhotoSizeCodes.length;x++)
	{
		objOption = new Option(mobjPhotoSizeNames[x] + " (" + strCurrencySymbol + " " + mobjPhotoPrices[x] + ")", mobjPhotoSizeCodes[x]);
		objPhotoSize[objPhotoSize.length] = objOption;		
	}
}


// ********************************************* //
function GetImageName(pstrFileName)
{
	return pstrFileName;
}

// ********************************************* //


function preloadPageImages(pintPageNumber, pblnPreloadFirstLarge)
{
	var intImageCounter = 0;
		
	for(var loop = ((pintPageNumber - 1) * parseInt(document.getElementById("hdnPageSize").value)); loop < (pintPageNumber * parseInt(document.getElementById("hdnPageSize").value)); loop++)	
	{
		intImageCounter = intImageCounter + 1;
		
		if (loop <= (mobjImages.length - 1))
		{
			var objImage = new Image(1,1);
			objImage.src = GetImageUrl(document.getElementById("hdnReference").value, mobjImages[loop],parseInt(document.getElementById("hdnThumbSize").value));			
		}
	}
	
	
	if (pblnPreloadFirstLarge == true)
	{
		preloadLargeImage(mobjImages[parseInt(document.getElementById("hdnPageSize").value) * (pintPageNumber - 1)]);
	}	
}

// ********************************************* //


function preloadLargeImage(pstrFileName)
{
	var objImage = new Image(1,1);

	objImage.src = GetImageUrl(document.getElementById("hdnReference").value, pstrFileName,parseInt(document.getElementById("hdnLargeSize").value));
}


// ********************************************* //

function displayPageImages(pintPageNumber,pblnDisplayFirstLarge)
{
	if (document.getElementById("hdnThumbs").value == "N")
	{	
		// Thumbs are not being displayed
		return;
	}

	// Preload the thumbnail images, we have probably already got the images preload but we had best make sure
	preloadPageImages(parseInt(document.getElementById("hdnPageNumber").value), false);


	if (document.getElementById("hdnSupportsFilters").value == "Y")
	{
		if (document.getElementById("pnlOuterThumbs").filters.length > 0)
		{
			document.getElementById("pnlOuterThumbs").filters[0].apply();
		}
	}
    
    
	var intImageCounter = 0;
		
	for(var loop = ((pintPageNumber - 1) * parseInt(document.getElementById("hdnPageSize").value)); loop < (pintPageNumber * parseInt(document.getElementById("hdnPageSize").value)); loop++)	
	{
		intImageCounter = intImageCounter + 1;
		
		if (loop <= (mobjImages.length - 1))
		{
			document.getElementById(("Img" + intImageCounter)).className = "ThumbnailImage";
			document.getElementById(("Img" + intImageCounter)).src = GetImageUrl(document.getElementById("hdnReference").value, mobjImages[loop],parseInt(document.getElementById("hdnThumbSize").value));
			document.getElementById(("Imga" + intImageCounter)).href = "javascript:displayLargeImage('" + mobjImages[loop] + "');";
		}
		else
		{
			document.getElementById(("Img" + intImageCounter)).src = "";
			document.getElementById(("Img" + intImageCounter)).className = "ThumbnailImageBlank";
			document.getElementById(("Imga" + intImageCounter)).href = "#";
		}	
	}
	
	document.getElementById("hdnPageNumber").value = pintPageNumber;
	document.getElementById("divPageXofX").innerHTML = "Page " + document.getElementById("hdnPageNumber").value + " of " + document.getElementById("hdnPageCount").value;

	if (document.getElementById("hdnSupportsFilters").value == "Y")
	{
		if (document.getElementById("pnlOuterThumbs").filters.length > 0)
		{
			document.getElementById("pnlOuterThumbs").filters[0].play();
		}
	}
	
	if (pblnDisplayFirstLarge == true)
	{
		if (document.getElementById("hdnSupportsFilters").value == "Y")
		{
			if (document.getElementById("pnlOuterThumbs").filters.length > 0)
			{
				window.setTimeout("displayLargeImage(mobjImages[parseInt(document.getElementById(\"hdnPageSize\").value) * (" + pintPageNumber + " - 1)]);", 1000);		
			}	
			else
			{
				displayLargeImage(mobjImages[parseInt(document.getElementById("hdnPageSize").value) * (pintPageNumber - 1)]);
			}
		}
		else
		{
			displayLargeImage(mobjImages[parseInt(document.getElementById("hdnPageSize").value) * (pintPageNumber - 1)]);
		}
	}
	
	// Now we have displayed the current page of thumbnails, preload the next page now
	if (parseInt(document.getElementById("hdnPageNumber").value) < parseInt(document.getElementById("hdnPageCount").value))
	{
		preloadPageImages(parseInt(document.getElementById("hdnPageNumber").value) + 1, false);
	}
}

function displayLargeImage(pstrFileName)
{
	var intIndexOf;
	var intCounter = 0;
	var intDelay = 500;

	// Preload the image, we have probably already got the image preload but we had best make sure
	preloadLargeImage(pstrFileName);
	

	if (document.getElementById("hdnPopupLarge").value == "Y")
	{
		document.getElementById("divOuterLargeImage").style.display = "block";
	}


	if (document.getElementById("hdnSupportsFilters").value == "Y")
	{
		if (document.getElementById("tableInnerLargeImage").filters.length > 0)
		{
			document.getElementById("tableInnerLargeImage").filters[0].apply();

			intDelay = (document.getElementById("tableInnerLargeImage").filters[0].duration * 1000);
		}		
	}

    document.getElementById("ImgLarge").style.display = "none";
	document.getElementById("ImgLarge").src = "/" + document.getElementById("hdnSite").value + "/LargeBlank.gif";


	if (document.getElementById("hdnSupportsFilters").value == "Y")
	{
		if (document.getElementById("tableInnerLargeImage").filters.length > 0)
		{
			document.getElementById("tableInnerLargeImage").filters[0].play();
		}
	}
    
    setTimeout("displayLargeImageComplete('" + pstrFileName + "');", intDelay);
}

function displayLargeImageComplete(pstrFileName)
{
	var intIndexOf;
	var intCounter = 0;

    
	if (document.getElementById("hdnSupportsFilters").value == "Y")
	{
		if (document.getElementById("tableInnerLargeImage").filters.length > 0)
		{
			document.getElementById("tableInnerLargeImage").filters[0].apply();
		}		
	}


	// Bug in Safaria which does not resize the image to the size if the new image being loaded.  This code will get around it.
	if (navigator.userAgent.indexOf('Safari')!=-1)
	{
		document.getElementById("ImgLarge").src = "/" + document.getElementById("hdnSite").value + "/LargeBlank.gif";
	}

	document.getElementById("ImgLarge").src = GetImageUrl(document.getElementById("hdnReference").value, pstrFileName,parseInt(document.getElementById("hdnLargeSize").value));
    document.getElementById("ImgLarge").style.display = "block";

	if (document.getElementById("hdnSupportsFilters").value == "Y")
	{
		if (document.getElementById("tableInnerLargeImage").filters.length > 0)
		{
			document.getElementById("tableInnerLargeImage").filters[0].play();
		}
	}

	// Now we have displayed the current large image, preload the next large image now	
	intIndexOf = indexOf(pstrFileName, mobjImages)

	document.getElementById("spanLargeThumbsTitle").innerHTML = pstrFileName;
	document.getElementById("hdnFileName").value = pstrFileName;	
	document.getElementById("divFileNameData").innerHTML = GetImageName(pstrFileName);
	document.getElementById("divKeywordsData").innerHTML = mobjKeywords[intIndexOf];
	document.getElementById("divImageXofX").innerHTML = "Image " + (indexOf(document.getElementById("hdnFileName").value,mobjImages) + 1) + " of " + mobjImages.length;
		
	if (intIndexOf > -1 )
	{
		//found
		if (intIndexOf < (mobjImages.length -1))
		{
			// preload the next image
			intIndexOf = (intIndexOf + 1);
		}
		
		preloadLargeImage(mobjImages[intIndexOf]);
	}	
}



function closeLarge()
{
	document.getElementById("divOuterLargeImage").style.display = "none";
	document.getElementById("hdnPlay").value = "N";
}


// ********************************************* //
// Thumbnail Paging		
function firstPage()
{
	var blnDisplayLarge = !(document.getElementById("divOuterLargeImage").style.display == "none")
	
	document.getElementById("hdnPageNumber").value = 1;
	displayPageImages(parseInt(document.getElementById("hdnPageNumber").value),blnDisplayLarge);
}

function previousPage()
{
	var blnDisplayLarge = !(document.getElementById("divOuterLargeImage").style.display == "none")

	if (parseInt(document.getElementById("hdnPageNumber").value) > 1)
	{
		document.getElementById("hdnPageNumber").value = parseInt(document.getElementById("hdnPageNumber").value) - 1;
		displayPageImages(parseInt(document.getElementById("hdnPageNumber").value),blnDisplayLarge);
	}
}

function nextPage()
{
	var blnDisplayLarge = !(document.getElementById("divOuterLargeImage").style.display == "none")

	if (parseInt(document.getElementById("hdnPageNumber").value) < parseInt(document.getElementById("hdnPageCount").value))
	{
		document.getElementById("hdnPageNumber").value = parseInt(document.getElementById("hdnPageNumber").value) + 1;
		displayPageImages(document.getElementById("hdnPageNumber").value, blnDisplayLarge);
	}
}		

function lastPage()
{
	var blnDisplayLarge = !(document.getElementById("divOuterLargeImage").style.display == "none")

	document.getElementById("hdnPageNumber").value = parseInt(document.getElementById("hdnPageCount").value);
	displayPageImages(parseInt(document.getElementById("hdnPageNumber").value), blnDisplayLarge);
}		
		

// ********************************************* //
// Image Paging

function firstImage()
{				
	displayLargeImage(mobjImages[0]);
	
	showCorrectPage(mobjImages[0]);
}

function previousImage()
{
	var intIndexOf;
	
	intIndexOf = indexOf(document.getElementById("hdnFileName").value, mobjImages)
	if (intIndexOf > -1 )
	{
		//found
		if (intIndexOf > 0)
		{
			// Go to the next image
			intIndexOf = (intIndexOf - 1);
		}
		
		displayLargeImage(mobjImages[intIndexOf]);
		showCorrectPage(mobjImages[intIndexOf]);
	}
}

function nextImage()
{
	var intIndexOf;
	
	intIndexOf = indexOf(document.getElementById("hdnFileName").value, mobjImages)
	if (intIndexOf > -1 )
	{
		//found
		if (intIndexOf < (mobjImages.length -1))
		{
			// Go to the next image
			intIndexOf = (intIndexOf + 1);
		}
		
		displayLargeImage(mobjImages[intIndexOf]);
		showCorrectPage(mobjImages[intIndexOf]);
	}
}

function lastImage()
{				
	displayLargeImage(mobjImages[(mobjImages.length - 1)]);
	showCorrectPage(mobjImages[(mobjImages.length - 1)]);
}

function showCorrectPage(pstrFileName)
{
	var intImageNumber;
	var intPageNumber;
		
	intImageNumber = indexOf(pstrFileName,mobjImages);
	
	intPageNumber = Math.floor(intImageNumber / parseInt(document.getElementById("hdnPageSize").value)) + 1;
	
	if (intPageNumber != parseInt(document.getElementById("hdnPageNumber").value) && document.getElementById("hdnThumbs").value == "Y")
	{		
		if (document.getElementById("hdnSupportsFilters").value == "Y")
		{
			if (document.getElementById("pnlOuterThumbs").filters.length > 0)
			{
				window.setTimeout("displayPageImages(" + intPageNumber + ",false);", 1000);
			}	
			else
			{
				displayPageImages(intPageNumber,false);		
			}
		}
		else
		{
			displayPageImages(intPageNumber,false);		
		}
	}
}

// ********************************************* //



// ********************************************* //
// Playing/Stopping Images
function playStop()
{
	if (document.getElementById("hdnPlay").value == "Y")
	{
		document.getElementById("hdnPlay").value = "N";
	}
	else
	{
		document.getElementById("hdnPlay").value = "Y";			
	}
		
	displayPlayPauseImage();
	playNextImage();
}

function displayPlayPauseImage()
{
	if (document.getElementById("hdnPlay").value == "Y")
	{
		document.getElementById("imgLargePlayPause").src = document.getElementById("hdnSite").value + "/Pause.gif";
		document.getElementById("imgLargePlayPause").title = "Pause";
	}
	else
	{
		document.getElementById("imgLargePlayPause").src = document.getElementById("hdnSite").value + "/Play.gif";
		document.getElementById("imgLargePlayPause").title = "Play";
	}		
}

function playNextImage()
{
	var intIndexOf;
	var intNextImageIndex;

	if (document.getElementById("hdnPlay").value != "Y")
	{
		return;
	}
	
	intIndexOf = indexOf(document.getElementById("hdnFileName").value, mobjImages)
	if (intIndexOf > -1 )
	{
		//found
		if ((intIndexOf + 1) < mobjImages.length)
		{
			// Go to the next image
			intNextImageIndex = (intIndexOf + 1);
		}
		else
		{
			// go back to the beginning
			intNextImageIndex = 0;
		}
		
		displayLargeImage(mobjImages[intNextImageIndex]);
		showCorrectPage(mobjImages[intNextImageIndex]);
		play();
	}
}

function play()
{
	if (document.getElementById("hdnPlay").value != "Y")
	{
		return;
	}
	
	window.setTimeout('playNextImage()',4000);
}




// Add current image to order

function addToOrder()
{
	// Add Item to Cookie
	var intIndex;
	var strOrderCookieData;
	var strNewOrderCookieData;
	var objCookieValues;
	var strNewID;
	var blnVaild = true;
	var objRegExp = /\d+/;
	
	// Put vailidation here
	if (document.getElementById("hdnReference").value.length == 0 ||
		document.getElementById("hdnFileName").value.length == 0 ||
		document.getElementById("ddlPhotoSize").value.length == 0 ||
		document.getElementById("txtQty").value.length == 0)
	{
		blnVaild = false;
	}
	else
	{
		blnVaild = objRegExp.test(document.getElementById("txtQty").value);
	}

	if (blnVaild == false)
	{
		alert('Both Product and Quantity must be selected');
		return;
	}
	
	intIndex = indexOf(document.getElementById("ddlPhotoSize").value, mobjPhotoSizeCodes)
		
	strOrderCookieData = getCookie("Order");
	if (strOrderCookieData == null)
	{
		strOrderCookieData = '';
	}
				
	strNewOrderCookieData = addToOrderCookieData(strOrderCookieData, 
												document.getElementById("hdnReference").value, 
												document.getElementById("hdnFileName").value, 
												mobjPhotoSizeCodes[intIndex], 
												mobjPhotoSizeNames[intIndex],
												document.getElementById("txtQty").value,
												mobjPhotoPrices[intIndex]);
													  									  	
	deleteCookie("Order");
	setCookie("Order", strNewOrderCookieData);
	
	if (getCookie("Order") == null)
	{
		// Must have hit limit
		alert('No more items can be added to the shopping basket');
		deleteCookie("Order");
		setCookie("Order", strOrderCookieData);
	}
	else
	{
		document.getElementById("divAddedToOrder").style.display = "block";		
		document.getElementById("txtQty").value = "1";
		window.setTimeout("HideAddToOrder()", 1000);
	}
					
	return;
}
