function toggleDef(defname){ if (document.getElementById) document.getElementById(defname+"def").style.display = document.getElementById(defname+"def").style.display == "none" ? "block" : "none"; return false; }
function toggleAllDefs(status){ if (document.getElementById) { defRoot = document.getElementById("faqdefs"); for (i=0; i<defRoot.childNodes.length; i++) { node = defRoot.childNodes[i]; if (node.nodeName=="DD") { node.style.display = status ? "block" : "none"; } } } }
function matrixImage() {
	this.imgSrc = "";
	this.fadeTimeout = 1000;
}
function matrixImageObject() {
	this.matrixImageArray = new Array();
	this.matrixImageArrayCount = 0; //size of array above
	this.matrixImageArrayPosition = 0; //current image position
	this.matrixElementHolder = document.createElement("span"); //holds reference to the span holder
	this.repeatLoop = false; //repeat the fading image loop once it has completed?
}
var matrixImages = new Object();
function makeNewMatrixImage(strImgSrc, intTimeout)
{
	var newMatrixImage = new matrixImage();
	newMatrixImage.imgSrc = strImgSrc;
	newMatrixImage.fadeTimeout = intTimeout;
	return newMatrixImage;
}
function setupMatrixPanel(intBlockNumber, blnRepeatLoop)
{
	if (matrixImages[intBlockNumber] == undefined)
	{
		matrixImages[intBlockNumber] = new matrixImageObject();
		matrixImages[intBlockNumber].repeatLoop = blnRepeatLoop;
		matrixImages[intBlockNumber].matrixImageArrayPosition++; //setup that the faded image is to be the second image
	}
}
function addMatrixPanelImage(intBlockNumber, strImgSrc, intTimeout)
{
	if (matrixImages[intBlockNumber] != undefined)
		matrixImages[intBlockNumber].matrixImageArray[matrixImages[intBlockNumber].matrixImageArrayCount++] = new makeNewMatrixImage(strImgSrc, intTimeout);
}
function loadFadingImageMatrix(matrixHolderId)
{
	if (document.getElementById) /*jscript ver check*/
	{
		var individualImageHolders = document.getElementById(matrixHolderId).getElementsByTagName("span");
		
		for (i = 0;i < individualImageHolders.length;i++)
		{
			if (matrixImages[i] != undefined) //if the box has been initialised
			{
				matrixImages[i].matrixElementHolder = individualImageHolders[i]; //setup the span that holds the images
				if (matrixImages[i].matrixImageArrayCount > 1 && matrixImages[i].matrixImageArrayPosition < matrixImages[i].matrixImageArrayCount)
				{
					var initialImage = individualImageHolders[i].getElementsByTagName("img");
					if (initialImage.length > 0) //sets the first images opacity so that later functions can use maths on it
					{
						initialImage[0].style.opacity = .99;
						initialImage[0].style.MozOpacity = .99;
						initialImage[0].style.filter = "alpha(opacity=" + (.99*100) + ")";
					}
					
					matrixImages[i].matrixElementHolder.appendChild(createNewFadedImage(matrixImages[i].matrixImageArray[matrixImages[i].matrixImageArrayPosition].imgSrc));					
					
					if (matrixImages[i].matrixImageArrayPosition + 1 < matrixImages[i].matrixImageArrayCount)
						matrixImages[i].matrixImageArrayPosition++;
					else
						matrixImages[i].matrixImageArrayPosition = 0;
					//set the original images fade/opacity
					//then set the timeout to complete the fade
					setTimeout("doFade("+i+");",matrixImages[i].matrixImageArray[matrixImages[i].matrixImageArrayPosition].fadeTimeout);
				}
			}
		}
	}
}
function createNewFadedImage(imgSrc)
{
	var newImage = document.createElement("img");
	newImage.setAttribute("src",imgSrc);
	//newImage.setAttribute("width","162");
	newImage.setAttribute("class","panel_image");
	newImage.style.opacity = .01;
	newImage.style.MozOpacity = .01;
	newImage.style.filter = "alpha(opacity=" + (.01*100) + ")";
	return newImage;
}
function doFade(blockNumber)
{
	if (document.getElementById) //js version check
	{
		if (matrixImages[blockNumber] != undefined) //if the block is in the correct place
		{
			var imgs = matrixImages[blockNumber].matrixElementHolder.getElementsByTagName("img");
			if (imgs.length == 2) //work out more dynamic bit here
			{
				cOpacity = parseFloat(imgs[0].style.opacity) - .05;
				nOpacity = parseFloat(imgs[1].style.opacity) + .05;
				imgs[0].style.opacity = cOpacity;
				imgs[0].style.MozOpacity = cOpacity;
				imgs[0].style.filter = "alpha(opacity=" + (cOpacity*100) + ")";
				imgs[1].style.opacity = nOpacity;
				imgs[1].style.MozOpacity = nOpacity;
				imgs[1].style.filter = "alpha(opacity=" + (nOpacity*100) + ")";
				
				if (cOpacity <= 0.0 || nOpacity >= 1.0)
					replaceFadedImage(blockNumber, imgs);
				else
					setTimeout("doFade("+blockNumber+");",50);
			}
		}
	}
}
function replaceFadedImage(blockNumber, imgs) 
{
	if (matrixImages[blockNumber].matrixImageArrayPosition + 1 < matrixImages[blockNumber].matrixImageArrayCount || matrixImages[blockNumber].repeatLoop)
	{
		matrixImages[blockNumber].matrixElementHolder.removeChild(imgs[0]);
		matrixImages[blockNumber].matrixElementHolder.appendChild(createNewFadedImage(matrixImages[blockNumber].matrixImageArray[matrixImages[blockNumber].matrixImageArrayPosition].imgSrc));
		if (matrixImages[blockNumber].matrixImageArrayPosition + 1 < matrixImages[blockNumber].matrixImageArrayCount)
			matrixImages[blockNumber].matrixImageArrayPosition++;
		else
			matrixImages[blockNumber].matrixImageArrayPosition = 0;
	
		setTimeout("doFade("+blockNumber+");",matrixImages[blockNumber].matrixImageArray[matrixImages[blockNumber].matrixImageArrayPosition].fadeTimeout);
	}
}