// created 28/05/2007#MA

// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Revision of Flash required
var requiredRevision = 28;

var intImage = -1;
var strRow;

var intDataFrameHideWidth = 2;
var intDataFrameShowWidth = 275;
var intNavFrameHideHeight = 2;
var intNavFrameShowHeight = 40;
var intScrollbarWidth = 12;
var boolInDataFrame = false;
var boolInNavFrame = false;
var intHeightImageFrameOffset = 4;		// default if can't pick up from CSS e.g. Safari
var intWidthImageFrameOffset = 20;		// ditto
var ImgURL_ImageFrame = null;
var intScale = 0;
var boolMetBrowserRequirements = false;

var objFlashPlayer = null;
var boolFirstImage = true;
// added 05/09/2007#MA to pass to Flash
var strPassedImageID = "";

args_init ();

function subFirst()
{
	intImage = -1;
	subNext();
}

function subPrevious()
{
	intImage--;
	// wrap around?
	if ( intImage < 0 )
	{
		intImage = aImageData.length - 1;
	}

	strRow = aImageData[intImage];
	
	// subtitle?
	if ( strRow.substr(0, 2) == '**' )
	{
		subPrevious();
		return;
	}
	else
	{
		newLocation();
	}
}

function subNext()
{
	intImage++;
	// wrap around?
	if ( intImage >= aImageData.length )
	{
		intImage = 0;
	}

	strRow = aImageData[intImage];
	
	// subtitle?
	if ( strRow.substr(0, 2) == '**' )
	{
		subNext();
		return;
	}
	else
	{
		newLocation();
	}
}

function subLast()
{
	intImage = aImageData.length;
	subPrevious();
}

function newLocation()
{
	// changed 08/08/2007#MA
	/*
	strRow = aImageData[intImage];
	var strHref = location.href;
	var intPosEquals = strHref.indexOf('=');
	var strNewURL;
	if ( intPosEquals == -1 )
		strNewURL = location.href + '?imageID=' + aImageData[strRow][intColImageID];
	else
		strNewURL = strHref.substr(0, intPosEquals + 1) + aImageData[strRow][intColImageID];
		
	location.href = strNewURL;
	*/
	drawForm();
}

function ShowImage(strImageURL)
{
	objFlashPlayer.ShowImage(strImageURL);
}
function ShowImageControls()
{
	objFlashPlayer.ShowImageControls();
}
	
function writeHTML(strRow)
{
	writeDivHTML(strRow, 'ImgURL_ImageFrame');
}

function drawForm()
{
	// changed 09/09/2007#ma
	//strRow = aImageData[intImage];
	//var strImageID = aImageData[strRow][intColImageID];
	var strImageID = ".";
	
/*		writeDivHTML(aImageData[strImageID][intColTitle], 'ImgURL_DataFrame.Title', true);
	writeDivHTML(aImageData[strImageID][intColCatalogueNumber], 'ImgURL_DataFrame.CatalogueNumber', true);
	writeDivHTML(aImageData[strImageID][intColMedium], 'ImgURL_DataFrame.Medium', true);
	writeDivHTML(aImageData[strImageID][intColDate], 'ImgURL_DataFrame.Date', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionSize], 'ImgURL_DataFrame.LimitedEditionSize', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionImageHeight], 'ImgURL_DataFrame.LimitedEditionImageHeight', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionImageWidth], 'ImgURL_DataFrame.LimitedEditionImageWidth', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionPrintHeight], 'ImgURL_DataFrame.LimitedEditionPrintHeight', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionPrintWidth], 'ImgURL_DataFrame.LimitedEditionPrintWidth', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionFrameHeight], 'ImgURL_DataFrame.LimitedEditionFrameHeight', true);
	writeDivHTML(aImageData[strImageID][intColLimitedEditionFrameWidth], 'ImgURL_DataFrame.LimitedEditionFrameWidth', true);

	if ( aImageData[strImageID][intColLimitedEditionPriceUnFramed] == 'N/A' )
	{
		XBrowser.hideDiv('ImgURL_DataFrame.LimitedEditionPriceUnFramed.Buy');
	}
	else
	{
		XBrowser.showDiv('ImgURL_DataFrame.LimitedEditionPriceUnFramed.Buy');
		document.frmLimitedEditionUnFramedBuy.item_name.value = aImageData[strImageID][intColTitle];
		document.frmLimitedEditionUnFramedBuy.item_number.value = aImageData[strImageID][intColCatalogueNumber];
		document.frmLimitedEditionUnFramedBuy.os0.value = "Limited";
		document.frmLimitedEditionUnFramedBuy.os1.value = "No";
		document.frmLimitedEditionUnFramedBuy.amount.value = toPound(aImageData[strImageID][intColLimitedEditionPriceUnFramed]);
	}
	writeDivHTML(toPound(aImageData[strImageID][intColLimitedEditionPriceUnFramed]), 'ImgURL_DataFrame.LimitedEditionPriceUnFramed', true);

	if ( aImageData[strImageID][intColLimitedEditionPriceFramed] == 'N/A' )
	{
		XBrowser.hideDiv('ImgURL_DataFrame.LimitedEditionPriceFramed.Buy');
	}
	else
	{
		XBrowser.showDiv('ImgURL_DataFrame.LimitedEditionPriceFramed.Buy');
		document.frmLimitedEditionFramedBuy.item_name.value = aImageData[strImageID][intColTitle];
		document.frmLimitedEditionFramedBuy.item_number.value = aImageData[strImageID][intColCatalogueNumber];
		document.frmLimitedEditionFramedBuy.os0.value = "Limited";
		document.frmLimitedEditionFramedBuy.os1.value = "Yes";
		document.frmLimitedEditionFramedBuy.amount.value = toPound(aImageData[strImageID][intColLimitedEditionPriceFramed]);
	}
	writeDivHTML(aImageData[strImageID][intColLimitedEditionPriceFramed], 'ImgURL_DataFrame.LimitedEditionPriceFramed', true);

	writeDivHTML(aImageData[strImageID][intColUnLimitedEditionHeight], 'ImgURL_DataFrame.UnLimitedEditionHeight', true);
	writeDivHTML(aImageData[strImageID][intColUnLimitedEditionWidth], 'ImgURL_DataFrame.UnLimitedEditionWidth', true);
	writeDivHTML(aImageData[strImageID][intColUnLimitedEditionPriceUnFramed], 'ImgURL_DataFrame.UnLimitedEditionPriceUnFramed', true);
	if ( aImageData[strImageID][intColUnLimitedEditionPriceUnFramed] == 'N/A' )
	{
		XBrowser.hideDiv('ImgURL_DataFrame.UnLimitedEditionPriceUnFramed.Buy');
	}
	else
	{
		XBrowser.showDiv('ImgURL_DataFrame.UnLimitedEditionPriceUnFramed.Buy');
		document.frmUnLimitedEditionUnFramedBuy.item_name.value = aImageData[strImageID][intColTitle];
		document.frmUnLimitedEditionUnFramedBuy.item_number.value = aImageData[strImageID][intColCatalogueNumber];
		document.frmUnLimitedEditionUnFramedBuy.os0.value = "UnLimited";
		document.frmUnLimitedEditionUnFramedBuy.os1.value = "No";
		document.frmUnLimitedEditionUnFramedBuy.amount.value = toPound(aImageData[strImageID][intColUnLimitedEditionPriceUnFramed]);
	}		
	if ( aImageData[strImageID][intColEssayURL].length > 0 )
	{
		var strEssay = '<a href="' + aImageData[strImageID][intColEssayURL] + '" title="Essay on ' + aImageData[strImageID][intColTitle] + '" target="_blank">Essay</a>';
		writeDivHTML(strEssay, 'ImgURL_DataFrame.Essay', true);
	}
	else
		writeDivHTML('', 'ImgURL_DataFrame.Essay', true);
*/
	drawFlashImage(strImageID);
}

function drawFlashImage(strImageID)
{
	// changed 17/08/2007#MA
	if (boolFirstImage)
	{
		boolFirstImage = false;
		
		// changed 08/08/2007#MA
		//var so = new SWFObject("ImageZoomerURL.swf", "ImageZoomerURL", XBrowser.getElementWidth('ImgURL_ImageFrame'), XBrowser.getElementHeight('ImgURL_ImageFrame'), "7", "#3399FF");
		//////var so = new SWFObject("ImageZoomerURL.swf", "ImageZoomerURL", XBrowser.getElementWidth('ImgURL_ImageFrame'), XBrowser.getElementHeight('ImgURL_ImageFrame'), "9", "#FFFFFF");
		var so = new SWFObject("iz2u/iz2u.xml", "iz2u", "100%", "100%", "9.0.28", "#FFFFFF");
		//var so = new SWFObject("ImageZoomerURL.swf", "ImageZoomerURL", "100%", "100%", "7", "#3399FF");
		so.addParam("quality", "best");
		// changed 25/08/2007#MA
		//so.addParam("wmode", "transparent");
		so.addParam("wmode", "window");
		so.addParam("loop", "false");
		so.addParam("menu", "false");
		// changed 07/08/2007#MA
		//so.addParam("scale", "noborder");
		//////so.addParam("scale", "showall");
		so.addParam("scale", "noScale");
		so.addParam("salign", "tl");
		// added 24/08/2007#MA
		so.addParam("allowFullScreen", "true");
		
		var strFlashVars = "";
		// changed 05/09/2007#MA to pass to Flash
		//strFlashVars = "zoomifyImagePath=" + aImageData[strImageID][intColImageURL];		// 'Images/My_Coin_Collection';
		strFlashVars = "zoomifyImagePath=" + strPassedImageID;
		
		// removed 30/10/2007#MA understood that this isn't used
		// added 24/09/2007#MA
		//strFlashVars = strFlashVars + "&SRC=./Zoom/zoomifyViewer.swf";
		
		// changed 09/09/2007#ma
		if (XBrowser.hasScrollBars(ImgURL_ImageFrame))
		{
			strFlashVars = strFlashVars + "&Title=" + aImageData[strImageID][intColWorkType];
			strFlashVars = strFlashVars + "&CatalogueNumber=" + aImageData[strImageID][intColCatalogueNumber];
			strFlashVars = strFlashVars + "&Medium=" + aImageData[strImageID][intColMedium];
			strFlashVars = strFlashVars + "&Date=" + aImageData[strImageID][intColDate];
			strFlashVars = strFlashVars + "&LimitedEditionSize=" + aImageData[strImageID][intColLimitedEditionSize];
			strFlashVars = strFlashVars + "&LimitedEditionImageWidth=" + aImageData[strImageID][intColLimitedEditionImageWidth];
			strFlashVars = strFlashVars + "&LimitedEditionImageHeight=" + aImageData[strImageID][intColLimitedEditionImageHeight];
			strFlashVars = strFlashVars + "&LimitedEditionPrintWidth=" + aImageData[strImageID][intColLimitedEditionPrintWidth];
			strFlashVars = strFlashVars + "&LimitedEditionPrintHeight=" + aImageData[strImageID][intColLimitedEditionPrintHeight];
			strFlashVars = strFlashVars + "&LimitedEditionFrameWidth=" + aImageData[strImageID][intColLimitedEditionFrameWidth];
			strFlashVars = strFlashVars + "&LimitedEditionFrameHeight=" + aImageData[strImageID][intColLimitedEditionFrameHeight];
			strFlashVars = strFlashVars + "&LimitedEditionPriceFramed=" + aImageData[strImageID][intColLimitedEditionPriceFramed];
			strFlashVars = strFlashVars + "&LimitedEditionPriceUnFramed=" + aImageData[strImageID][intColLimitedEditionPriceUnFramed];
			strFlashVars = strFlashVars + "&UnLimitedEditionWidth=" + aImageData[strImageID][intColUnLimitedEditionWidth];
			strFlashVars = strFlashVars + "&UnLimitedEditionHeight=" + aImageData[strImageID][intColUnLimitedEditionHeight];
			strFlashVars = strFlashVars + "&UnLimitedEditionPriceUnFramed=" + aImageData[strImageID][intColUnLimitedEditionPriceUnFramed];
			strFlashVars = strFlashVars + "&zoomStageHeight=" + XBrowser.getElementHeight('ImgURL_ImageFrame');
			strFlashVars = strFlashVars + "&zoomStageWidth=" + XBrowser.getElementWidth('ImgURL_ImageFrame');
		}
		
		so.addParam("FlashVars",  strFlashVars + "&zoomifyX=0.0&zoomifyY=0.0&zoomifyZoom=-1&zoomifyToolbar=1&zoomifyNavWindow=1");
	   
		// changed 07/08/2007#MA
		//so.write("flashcontent");
		so.write("ImgURL_ImageFrame");
		

/*			// added 21/08/2007#MA data panel
		var so = new SWFObject("DataPanel.swf", "DataPanel", "100%", "100%", "7", "#3399FF");
		so.addParam("quality", "best");
		// changed 21/08/2007#MA
		so.addParam("wmode", "transparent");
		////so.addParam("wmode", "opaque");
		so.addParam("loop", "false");
		so.addParam("menu", "false");
		// changed 07/08/2007#MA
		//so.addParam("scale", "noborder");
		so.addParam("scale", "showall");
		// removed 08/08/2007#MA
		//so.addParam("salign", "tl");
	   
		// changed 07/08/2007#MA
		//so.write("flashcontent");
		so.write("ImgURL_DataFrame");
*/







		// added 15/08/2007#MA
		objFlashPlayer = detectFlashPlayer();
	}
	else
	{
		var strImageURL = aImageData[strImageID][intColImageURL];
		ShowImage(strImageURL);		//strImageURL);
	}
}

function positionContent()
{
	XBrowser.MaximiseWindow();

	XBrowser.setElementHeight('ImgURL_ImageFrame', XBrowser.getWindowHeight() + (XBrowser.hasScrollBars(ImgURL_ImageFrame) ? intNavFrameHideHeight - intHeightImageFrameOffset : intScrollbarWidth * intScale));
	XBrowser.setElementWidth('ImgURL_ImageFrame', XBrowser.getWindowWidth());		// + (XBrowser.hasScrollBars(ImgURL_ImageFrame) ? intDataFrameHideWidth - intWidthImageFrameOffset : intScrollbarWidth * intScale));
	XBrowser.setElementPos('ImgURL_ImageFrame', 0, 0);
	
/*		XBrowser.setElementHeight('ImgURL_DataFrame', XBrowser.getWindowHeight());
	XBrowser.setElementWidth('ImgURL_DataFrame', intDataFrameHideWidth);
	XBrowser.setElementPos('ImgURL_DataFrame', XBrowser.getElementLeft('ImgURL_ImageFrame') + XBrowser.getElementWidth('ImgURL_ImageFrame') - (intScrollbarWidth * intScale), XBrowser.getElementTop('ImgURL_ImageFrame'));

	XBrowser.setElementHeight('ImgURL_NavFrame', intNavFrameHideHeight);
	XBrowser.setElementWidth('ImgURL_NavFrame', XBrowser.getElementWidth('ImgURL_ImageFrame'));
	XBrowser.setElementPos('ImgURL_NavFrame', XBrowser.getElementLeft('ImgURL_ImageFrame'), XBrowser.getElementTop('ImgURL_ImageFrame') + XBrowser.getElementHeight('ImgURL_ImageFrame') - (intScrollbarWidth * intScale));
*/	}

function __PostLoad__()
{
	if (boolMetBrowserRequirements)
	{
		if (is_safari)
		{
			intHeightImageFrameOffset = 5;
			intWidthImageFrameOffset = -6;
		}
		else if (is_ie)
		{
			intHeightImageFrameOffset = 6;
			intWidthImageFrameOffset = 6;
		}
		else
		{
			var intCSSheight = XBrowser.xGetComputedStyle('CSSvarHeightImageFrameOffset', 'z-index');
			if ( !(intCSSheight == null || intCSSheight.toLowerCase() == 'normal') )
				intHeightImageFrameOffset = parseInt(intCSSheight);
	
			var intCSSwidth = XBrowser.xGetComputedStyle('CSSvarWidthImageFrameOffset', 'z-index');
			if ( !(intCSSwidth == null || intCSSwidth.toLowerCase() == 'normal') )
				intWidthImageFrameOffset = parseInt(intCSSwidth);
		}
		
		// initial mainFrame content
		positionContent();
		start();
	}
}

function dataFrameShow()
{
	if (!boolInDataFrame)
	{
		boolInDataFrame = true;
		XBrowser.setElementWidth('ImgURL_DataFrame', intDataFrameShowWidth);
		XBrowser.setElementPos('ImgURL_DataFrame', XBrowser.getElementLeft('ImgURL_ImageFrame') + XBrowser.getElementWidth('ImgURL_ImageFrame') - intDataFrameShowWidth + intDataFrameHideWidth, XBrowser.getElementTop('ImgURL_ImageFrame'));
	}
}

function dataFrameHide()
{
	if (boolInDataFrame)
	{
		XBrowser.setElementHeight('ImgURL_DataFrame', XBrowser.getWindowHeight());
		XBrowser.setElementWidth('ImgURL_DataFrame', intDataFrameHideWidth);
		XBrowser.setElementPos('ImgURL_DataFrame', XBrowser.getElementLeft('ImgURL_ImageFrame') + XBrowser.getElementWidth('ImgURL_ImageFrame'), XBrowser.getElementTop('ImgURL_ImageFrame'));
		boolInDataFrame = false;
	}
}

function navFrameShow()
{
	if (!boolInNavFrame)
	{
		boolInNavFrame = true;
		XBrowser.setElementHeight('ImgURL_NavFrame', intNavFrameShowHeight);
		XBrowser.setElementPos('ImgURL_NavFrame', XBrowser.getElementLeft('ImgURL_ImageFrame'), XBrowser.getElementTop('ImgURL_ImageFrame') + XBrowser.getElementHeight('ImgURL_ImageFrame') - intNavFrameShowHeight + intNavFrameHideHeight);
	}
}

function navFrameHide()
{
	if (boolInNavFrame)
	{
		XBrowser.setElementHeight('ImgURL_NavFrame', intNavFrameHideHeight);
		XBrowser.setElementPos('ImgURL_NavFrame', XBrowser.getElementLeft('ImgURL_ImageFrame'), XBrowser.getElementTop('ImgURL_ImageFrame') + XBrowser.getElementHeight('ImgURL_ImageFrame'));
		boolInNavFrame = false;
	}
}

function start()
{
	// is there a imageID parameter?
	if ( window.location.search.length > 0 )
	{
		strPassedImageID = args["imageID"];
		
		// added 09/09/2007#ma
		drawForm();
		return;
		
		intImage = -1;
		do
		{
			strRow = aImageData[++intImage];
		}
		while ( intImage < aImageData.length && strPassedImageID !=  aImageData[strRow][intColImageID] )
		
		if ( strPassedImageID ==  aImageData[strRow][intColImageID] )
		{
			drawForm();
		}
		else
		{
			//subFirst();
			intImage = 0;
			drawForm();
		}
	}	
	else
	{
		//subFirst();
		intImage = 0;
		drawForm();
	}
}

function mouseOverBasket()
{
	showToolTip(this,event,'Add to basket.');
}
	
function detectFlashPlayer()
{
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
		// changed 27/11/2007#MA
		//return window.ImageZoomerURL;
		return window.iz2u;
	}
	else
	{
		// changed 27/11/2007#MA
		//return window.document.ImageZoomerURL;
		return window.document.iz2u;
	}
}

function launchFlash(strPassedImageID)
{
	// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
	var hasProductInstall = DetectFlashVer(6, 0, 65);
	
	// Version check based upon the values defined in globals
	var hasRequstedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

	// Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
	if ( hasProductInstall && !hasRequstedVersion )
	{
		// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
		// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
		// DO NOT MODIFY THE FOLLOWING FOUR LINES
		// Location visited after installation is complete if installation is required
		var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
		var MMredirectURL = window.location;
		document.title = document.title.slice(0, 47) + " - Flash Player Installation";
		var MMdoctitle = document.title;
	
		// changed 24/01/2008#MA causing IE to hang
//		AC_FL_RunContent(
//			"src", "playerProductInstall",
//			"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
//			"width", "550",
//			"height", "300",
//			"align", "middle",
//			"id", "detectionExample",
//			"quality", "high",
//			"bgcolor", "#3A6EA5",
//			"name", "detectionExample",
//			"allowScriptAccess","sameDomain",
//			"type", "application/x-shockwave-flash",
//			"pluginspage", "http://www.adobe.com/go/getflashplayer"
//		);
		document.write('<p>We apologise for the inconvenience, but to see these amazing images requires you have Adobe Flash Player of at least version <b>' + requiredMajorVersion + '.' + requiredMinorVersion + '.' + requiredRevision + '</b> installed on you computer.</p>');
		document.write('<p>We cannot detect your Flash Player or what version it is and so we kindly ask you to install/update it.</p>');
		document.write('<p>You can get it simply by clicking this link...</p>');
		document.write('<p><a href="http://www.adobe.com/go/getflashplayer"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> </a>');
	}
	else if (hasRequstedVersion)
	{
		boolMetBrowserRequirements = true;
		document.write('<div id="CSSvarHeightImageFrameOffset"></div>');
		document.write('<div id="CSSvarWidthImageFrameOffset"></div>');
		document.write('<div id="divScreen">');
	/*	document.write('<div id="ImgURL_ImageFrame" onMouseOver="dataFrameHide();navFrameHide();"></div>');
	*/	document.write('<div id="ImgURL_ImageFrame"></div>');
	/*	document.write('<div id="ImgURL_DataFrame" onMouseOver="dataFrameShow();"></div>');
		document.write('<div id="ImgURL_NavFrame" onMouseOver="navFrameShow();"></div>');
	*/	document.write('</div>');
	}
	else
	{  // flash is too old or we can't detect the plugin
		document.write('<p>We apologise for the inconvenience, but to see these amazing images requires you have Adobe Flash Player of at least version <b>' + requiredMajorVersion + '.' + requiredMinorVersion + '.' + requiredRevision + '</b> installed on you computer.</p>');
		// changed 24/01/2008#MA
		document.write('<p>We cannot detect your Flash Player or what version it is and so we kindly ask you to install/update it.</p>');
		//document.write('<p><a href=http://www.macromedia.com/go/getflash/>You can get it simply by clicking this link...</a></p>');
		document.write('<p>You can get it simply by clicking this link...</p>');
		document.write('<p><a href="http://www.adobe.com/go/getflashplayer"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> </a>');
	}
}

function showIZU_MenuPage(strPage)
{
	window.open("/iz2u/iz2uWWW/" + strPage + ".htm","iz2u",'width=800,height=600,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes')
}

// added 19/11/2007#MA
// wrapper for __SetCookie
function SetInfoSplashCookie( strYesNo )
{
	SetCookie( "ShowInfoSplashOnStart-Up", strYesNo, '10000', '/', '', '' );
}

// added 11/03/2008#MA
// wrapper for __SetCookie
function SetKV_Cookie( strKey, strValue )
{
	SetCookie( strKey, strValue, '10000', '/', '', '' );
}


// added 19/11/2007#MA
function SetCookie( name, value, expires, path, domain, secure ) 
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	
	/*
	if the expires variable is set, make the correct 
	expires time, the current script below will set 
	it for x number of days, to make it for hours, 
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name + "=" + escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// added 19/11/2007#MA
// this fixes an issue with the old method, ambiguous values 
// with this test document.cookie.indexOf( name + "=" );
function GetCookie( check_name )
{
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	
	if ( !b_cookie_found )
	{
		return null;
	}
}
	
// added 19/11/2007#MA
// this deletes the cookie when called
function DeleteCookie( name, path, domain )
{
	if ( Get_Cookie( name ) )
		document.cookie = name + "=" + 	( ( path ) ? ";path=" + path : "") + 	( ( domain ) ? ";domain=" + domain : "" ) + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function loadXMLString(txt) 
{
	try //Internet Explorer
	{
		docXML = new ActiveXObject("Microsoft.XMLDOM");
		docXML.async = "false";
		docXML.loadXML(txt);
		return(docXML); 
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			parser = new DOMParser();
			docXML = parser.parseFromString(txt,"text/xml");
			return(docXML);
		}
		catch(e) { alert(e.message) }
	}
	return(null);
}

var docIZ2U_XML;
var objIZ2U_Params = new Object();

function getIZ2U_Param(strParamName)
{
	return objIZ2U_Params[strParamName];
}

function as_JSinterfaceIZ2U(strXML, astrParams)
{
	docIZ2U_XML = loadXMLString(strXML);
	
	for (intParam = 0; intParam < astrParams.length; intParam++ )
	{
		var astrParam = astrParams[intParam].split("=");
		objIZ2U_Params[astrParam[0]] = astrParam[1];
	}
	// 1st parameter should be myFunction
	var strFunction = getIZ2U_Param("myFunction");
	eval(strFunction);
}

// the following is a list of helper IZ2U functions accessed by a constructor var myIZ2U = new IZ2U();
function IZ2U()
{
	this.getParam = function(strParamName)
	{
		return objIZ2U_Params[strParamName];
	};
	
	this.getXML_NodeValue = function(strNode)
	{
		return docIZ2U_XML.getElementsByTagName(strNode)[0].childNodes[0].nodeValue;
	};
}

function PAY_PAL(strMyPayPal_EmailAddress)
{
	var m_objPayPal = new Object();
	m_objPayPal.business = strMyPayPal_EmailAddress;
	
	this.newCartItem = function()
	{
		// user should define all other properties...
		
		return m_objPayPal;
	};
	
	this.addToCart = function(objPayPal)
	{
		delete objPayPal.display;												// do not display shopping cart - cannot co-exist with add
		objPayPal.add = 1;														// add item to shopping cart
		objPayPal.cmd = "_cart";												// The button that the person clicked was an Add to Cart button
		doPayPal(objPayPal);
	};
	
	this.showCart = function()
	{
		delete m_objPayPal.add;												// do not add item to shopping cart - cannot co-exist with delete
		m_objPayPal.display = 1;												// just display shopping cart
		m_objPayPal.cmd = "_cart";												// The button that the person clicked was an Add to Cart button
		doPayPal(m_objPayPal);
	};
	
	function doPayPal(objPayPal)
	{
		//var strPayPal_URL = "https://www.paypal.com/cgi-bin/webscr?";
		var strPayPal_URL = "https://www.paypal.com/uk/cgi-bin/webscr?";
		
		for (var strPayPalProperty in objPayPal)
			strPayPal_URL += strPayPalProperty + "=" + objPayPal[strPayPalProperty] + "&";
			
		// N.B. Cannot have any spaces - replace them with "+"
		strPayPal_URL = strPayPal_URL.replace(" ", "+");
		
		window.open(strPayPal_URL);
	};
	
}

