// Hide Elements
// hides all elements listed in the 'elementTypes' array with a class that contains the word 'hide' - for accessibility, so that pages will display content with JavaScript disabled
// Version: 1.0
function hideElements(elementId)
{
	var root = document.getElementById(elementId);
	var elementTypes = new Array("div", "ul", "dd");
	
	// iterate through all the elements listed in the array 'elementTypes'
	for (var i = 0; i < elementTypes.length; i++)
	{
		hiddenElements = root.getElementsByTagName(elementTypes[i]); 
		for (var j = 0; j < hiddenElements.length; j++)
		{
			var strClassName = new String(hiddenElements[j].className);
			// if the element has a class containing the word 'hide' then hide that element
			if (strClassName.indexOf("hide") != -1)
			{
				hiddenElements[j].style.display = "none";
			}
		}
	}
}

// Toggle
// toggles the selected element between display and hide
// Version: 1.0
function toggle(selectedId)
{
	var selectedId = document.getElementById(selectedId);
	current = (selectedId.style.display == 'block') ? 'none' : 'block';
	selectedId.style.display = current;
}

// Toggle & Hide
// toggles been displaying and hiding an element - also hides all other elements so that only one element is displayed at a time
// Version: 2.0
function toggleHide(selectedId)
{
	var elementId = document.getElementById(selectedId);
	var containerId = elementId.parentNode.id;
	
	// work out if the toggled element is currently displayed or not
	if (elementId.style.display == 'none')
	{
		var toggleId = true;
	}
	
	// hide all elements with 'class="hide"' within the same container element
	hideElements(containerId);
	
	// toggle the element style to a display value of 'block' (only if the display had been set to 'none')
	if (toggleId == true)
	{
		toggle(selectedId);
	}
	return toggleId;
}

function imageToggleHide(thisId,selectedId)
{
	var imageTag = thisId.parentNode.getElementsByTagName('dt');
	for (var i = 0; i < imageTag.length; i++)
	{
		imageTag[i].style.backgroundImage = 'url(/_images/site/icon_plus.gif)';
	}
	var returnValue = toggleHide(selectedId);
	if (returnValue == true)
	{
		thisId.style.backgroundImage = 'url(/_images/site/icon_minus.gif)';
	}
}

// Navigation Dropdown Bar (IE5/6)
// uses JavaScript to add a class name 'over' to li elements - required due to IE's lack of support for :hover on anything but the <a> element
// Version: 1.0
function dropDown(elementId)
{
	if (document.all&&document.getElementById) // i.e. if the browser is IE5/IE6
	{
		navRoot = document.getElementById(elementId);
		for (i=0; i < navRoot.childNodes.length; i++)
		{
		node = navRoot.childNodes[i];
		if (node.nodeName=="LI")
			{
				node.onmouseover=function()
				{
					this.className+=" over";
					//alert(this.className);
				}
				node.onmouseout=function()
				{
					this.className=this.className.replace;
					(" over", "");
					//alert(this.className);
				}
			}
		}
	}
}


// Browser Detection
// works out what browser is being used to view a page
// Version: 1.1

function detectBrowser()
{
	var strUserAgent = new String(navigator.userAgent);
	var browserName = 'An unknown browser';
	var arrBrowsers = new Array("Opera", "Firefox", "Netscape", "MSIE");
	
	for (var i = 0; i < arrBrowsers.length; i ++)
	{
		var j = strUserAgent.indexOf(arrBrowsers[i]);
		if (j > -1)
		{
			var k = strUserAgent.indexOf('.', j);
			var browserVersion = new String(strUserAgent.substring(j,k));
			browserVersion = browserVersion.replace('/',' ');
			browserVersion = browserVersion.replace('MSIE','Internet Explorer');
			browserVersion = browserVersion.replace('Netscape6','Netscape');
			return browserVersion;
		}
	}
}


// Swap Images
// Version: 1.0
function swapProductImages(imageId,imageSrc)
{
	var selectedImage = document.getElementById(imageId);
	selectedImage.src = '/_images/products/' + imageSrc;
}
