window.onload = init;

function init()
{
	if (!document.getElementById || !document.createTextNode)
		return;

	var objSubmit = document.getElementById('submitAsCT');
	var objjsactive = document.getElementById('jsactive');
	var objCSS = document.getElementById('cssopt');
	var objMedia = document.getElementById('mediaopt');
	var objSMIL = document.getElementById('smilopt');
	var objScript = document.getElementById('scriptopt');

	var objCSSBase = document.getElementById('cssoptbase');
	var objMediaBase = document.getElementById('mediaoptbase');
	var objSMILBase = document.getElementById('smiloptbase');
	var objScriptBase = document.getElementById('scriptoptbase');

	var objLevel1 = document.getElementById('level1opt');
	var objLevel2 = document.getElementById('level2opt');
	var objLevel3 = document.getElementById('level3opt');

	var objCookies = document.getElementById('savesettings');

	if (!objSubmit || !objCSS || !objMedia || !objSMIL || !objScript || !objCSSBase || !objMediaBase || !objSMILBase || !objScriptBase || !objLevel1 || !objLevel2 || !objLevel3 )
		return;

	// Hide values by default
	objSubmit.style.display = 'none';
	objjsactive.style.display = 'inline';
	// objSMILBase.parentNode.style.display = 'none';
	//objScriptBase.parentNode.style.display = 'none';
	//objProgBase.parentNode.style.display = 'none';

	objCSS.onclick = function(event){return toggleContent(this, event, 'basecss', 'CSS');};
	objCSS.onkeypress = function(event){return toggleContent(this, event, 'basecss', 'CSS');};
	objMedia.onclick = function(event){return toggleContent(this, event, 'basemedia', 'Multimedia');};
	objMedia.onkeypress = function(event){return toggleContent(this, event, 'basemedia', 'Multimedia');};
	objSMIL.onclick = function(event){return toggleContent(this, event, 'basesmil', 'SMIL');};
	objSMIL.onkeypress = function(event){return toggleContent(this, event, 'basesmil', 'SMIL');};
	objScript.onclick = function(event){return toggleContent(this, event, 'basescript', 'Scripting');};
	objScript.onkeypress = function(event){return toggleContent(this, event, 'basescript', 'Scripting');};

	objCSSBase.onclick = function(event){return toggleBase(this, event, 'basecssbase', 'CSS');};
	objCSSBase.onkeypress = function(event){return toggleBase(this, event, 'basecssbase', 'CSS');};
	objMediaBase.onclick = function(event){return toggleBase(this, event, 'basemediabase', 'Multimedia');};
	objMediaBase.onkeypress = function(event){return toggleBase(this, event, 'basemediabase', 'Multimedia');};
	objSMILBase.onclick = function(event){return toggleBase(this, event, 'basesmilbase', 'SMIL');};
	objSMILBase.onkeypress = function(event){return toggleBase(this, event, 'basesmilbase', 'SMIL');};
	objScriptBase.onclick = function(event){return toggleBase(this, event, 'basescriptbase', 'Scripting');};
	objScriptBase.onkeypress = function(event){return toggleBase(this, event, 'basescriptbase', 'Scripting');};

	objLevel1.onclick = function(event){return updateLevel(this, event, 'level1');};
	objLevel1.onkeypress = function(event){updateLevel(this, event, 'level1');};
	objLevel2.onclick = function(event){return updateLevel(this, event, 'level2');};
	objLevel2.onkeypress = function(event){updateLevel(this, event, 'level2');};
	objLevel3.onclick = function(event){return updateLevel(this, event, 'level3');};
	objLevel3.onkeypress = function(event){updateLevel(this, event, 'level3');};

	objCookies.onclick = function(event){return toggleCookies(this, event);};
	objCookies.onkeypress = function(event){return toggleCookies(this, event);};
}


function toggleContent(objElement, objEvent, strClass, strTechnology)
{
	if (tabOver(objEvent))
		return true;

	var objChild = document.getElementById(objElement.id + 'base');
	if (objElement.checked)
		objChild.parentNode.style.display = 'block';
	else
		objChild.parentNode.style.display = 'none';

	var objCollection = document.getElementsByTagName('*');

	for (var iCounter=0; iCounter<objCollection.length; iCounter++)
	{
		if (objCollection[iCounter].className && objCollection[iCounter].className.indexOf(strClass) !== -1)
		{
			if (objElement.checked)
			{
				if (!objChild.checked && objCollection[iCounter].className.indexOf(strClass + 'base') !== -1)
				{
					if (objCollection[iCounter].nodeName.toLowerCase() == 'span')
						objCollection[iCounter].style.display = 'inline';
					else
						objCollection[iCounter].style.display = 'block';
				}
				else if (objCollection[iCounter].className.indexOf(strClass + 'base') === -1)
				{
					if (objCollection[iCounter].nodeName.toLowerCase() == 'span')
						objCollection[iCounter].style.display = 'inline';
					else
						objCollection[iCounter].style.display = 'block';
				}
			}
			else
				objCollection[iCounter].style.display = 'none';
		}
	}
	toggleStatus(objElement, objEvent, strClass, strTechnology, 1);

	if (document.getElementById('savesettings').checked)
	{
		if (objElement.checked)
			setCookie(objElement.id, 'Y');
		else
			setCookie(objElement.id, 'N');
	}

	return true;
}

function toggleSufficient(objElement, objEvent, strClass)
{
	var objCollection = document.getElementsByTagName('*');

	for (var iCounter=0; iCounter<objCollection.length; iCounter++)
	{
		if (objCollection[iCounter].className && objCollection[iCounter].className.indexOf(strClass) !== -1)
		{
			if (objElement.checked)
			{
				if (objCollection[iCounter].nodeName.toLowerCase() == 'span')
					objCollection[iCounter].style.display = 'inline';
				else
					objCollection[iCounter].style.display = 'block';
			}
			else
				objCollection[iCounter].style.display = 'none';
		}
	}
}

function toggleSufficientBase(objElement, objEvent, strClass)
{
	var objCollection = document.getElementsByTagName('*');

	for (var iCounter=0; iCounter<objCollection.length; iCounter++)
	{
		if (objCollection[iCounter].className && objCollection[iCounter].className.indexOf(strClass) !== -1)
		{
			if (!objElement.checked)
			{
				if (objCollection[iCounter].nodeName.toLowerCase() == 'span')
					objCollection[iCounter].style.display = 'inline';
				else
					objCollection[iCounter].style.display = 'block';
			}
			else
				objCollection[iCounter].style.display = 'none';
		}
	}
}

function toggleBase(objElement, objEvent, strClass, strTechnology)
{
	if (tabOver(objEvent))
		return true;

	var strIDRef;

	toggleSufficientBase(objElement, objEvent, strClass);
	toggleStatusBase(objElement, objEvent, strClass, strTechnology, 0);

	if (document.getElementById('savesettings').checked)
	{
		if (objElement.checked)
			setCookie(objElement.id, 'Y');
		else
			setCookie(objElement.id, 'N');
	}

	return true;
}

function updateLevel(objElement, objEvent, strClass)
{
	if (tabOver(objEvent))
		return true;

	var strIDRef;

	toggleSufficient(objElement, objEvent, strClass);
	toggleStatus(objElement, objEvent, strClass, null, 0);

	if (document.getElementById('savesettings').checked)
	{
		if (objElement.checked)
			setCookie(objElement.id, 'Y');
		else
			setCookie(objElement.id, 'N');
	}

	return true;
}

function toggleCookies(objElement, objEvent)
{
	if (tabOver(objEvent))
		return true;

	if (objElement.checked)
	{
		setCookie('allowcookies', 'Y');
		// Store the current state of the checkboxes
		var objCheck = document.getElementsByTagName('input');
		for (var iCounter=0; iCounter<objCheck.length; iCounter++)
			if (objCheck[iCounter].type.toLowerCase() == 'checkbox' && objCheck[iCounter].checked)
				setCookie(objCheck[iCounter].id, 'Y');
			else
				setCookie(objCheck[iCounter].id, 'N');
	}
	else
		setCookie('allowcookies', 'N');

	return true;
}

function toggleStatus(objElement, objEvent, strClass, strTechnology, iLevel)
{
	var strID = objElement.id;
	var objLabel = document.getElementsByTagName('label');

	for (var iCounter=0; iCounter<objLabel.length; iCounter++)
	{
		strIDRef = objLabel[iCounter].getAttribute('for');
		// And then there's IE to consider!
		if (strIDRef === null)
			strIDRef = objLabel[iCounter].getAttribute('htmlfor');

		if (strIDRef == strID)
		{
			var strSpanID = strID + 'span';
			var objSpan = objLabel[iCounter].getElementsByTagName('span');
			var objSpan = document.getElementById(strSpanID);

			if (!objElement.checked && !objSpan)
			{
				objSpan = document.createElement('span');
				// Can't use setAttribute because of IE
				objSpan.className = 'showhideR';
				objSpan.setAttribute('id', strSpanID);
				if (strTechnology)
				{
					if (iLevel > 0)
						objSpan.appendChild(document.createTextNode('(' + strTechnology + ' techniques and failures now hidden)'));
					else
						objSpan.appendChild(document.createTextNode('(' + strTechnology + ' techniques now hidden)'));
				}
				else
					objSpan.appendChild(document.createTextNode('(' + objLabel[iCounter].firstChild.data.replace(/Show /, '') + ' and techniques now hidden)'));

				objLabel[iCounter].parentNode.appendChild(objSpan);
			}
			else if (objSpan)
				objSpan.parentNode.removeChild(objSpan);

			break;
		}
	}
}

function toggleStatusBase(objElement, objEvent, strClass, strTechnology, iLevel)
{
	var strID = objElement.id;
	var objLabel = document.getElementsByTagName('label');

	for (var iCounter=0; iCounter<objLabel.length; iCounter++)
	{
		strIDRef = objLabel[iCounter].getAttribute('for');
		// And then there's IE to consider!
		if (strIDRef === null)
			strIDRef = objLabel[iCounter].getAttribute('htmlfor');

		if (strIDRef == strID)
		{
			var strSpanID = strID + 'span';
			var objSpan = objLabel[iCounter].getElementsByTagName('span');
			var objSpan = document.getElementById(strSpanID);

			if (objElement.checked && !objSpan)
			{
				objSpan = document.createElement('span');
				// Can't use setAttribute because of IE
				objSpan.className = 'showhideR';
				objSpan.setAttribute('id', strSpanID);
				if (strTechnology)
				{
					if (iLevel > 0)
						objSpan.appendChild(document.createTextNode('(' + strTechnology + ' techniques and failures now hidden)'));
					else
						objSpan.appendChild(document.createTextNode('(' +strTechnology + ' techniques now hidden)'));
				}
				else
					objSpan.appendChild(document.createTextNode('(' + objLabel[iCounter].firstChild.data.replace(/Show /, '') + ' and techniques now hidden)'));

				objLabel[iCounter].parentNode.appendChild(objSpan);
			}
			else if (objSpan)
				objSpan.parentNode.removeChild(objSpan);

			break;
		}
	}
}

function tabOver(objEvent)
{
	var iKeyCode;

	if (objEvent && objEvent.type == 'keypress')
	{
		if (objEvent.keyCode)
			iKeyCode = objEvent.keyCode;
		else if (objEvent.which)
			iKeyCode = objEvent.which;

		if (iKeyCode != 32)
			return true;
	}
	
	return false;
}

function setCookie(strName, strValue)
{
	var objDate = new Date();

	objDate.setTime(objDate.getTime()+(365*24*60*60*1000));

	var strExpires = '; expires=' + objDate.toGMTString();

	document.cookie = strName + '=' + strValue + strExpires + '; path=/';
}



















