// Interactive Checklist.

	function Set(question, state, rfc)
	{
		if (rfc == true)
		{
			if (state == 'yes') var changeclass = 'yes';
			else if (state == 'no') var changeclass = 'no';
			else if (state == 'dk') var changeclass = 'dk';
			else if (state == 'na') var changeclass = 'na';
		}
		else
		{
			if (state == 'yes') var changeclass = 'yes';
			else if (state == 'no') var changeclass = 'ok';
			else if (state == 'dk') var changeclass = 'ok';
			else if (state == 'na') var changeclass = 'na';
		}
	
		document.getElementById('question-' + question).className = changeclass
		document.getElementById('response-' + question + '-' + state).checked = true;
	
		changed = true;
	}

	function EnableChildren(childrenStr)
	{
		var children = childrenStr.split(',');
		var j = 0
		var i = 0
	
		for (j=0; j<children.length; j++)
		{
			if (document.getElementById('response-' + children[j] + '-yes').disabled == true)
			{
				document.getElementById('question-' + children[j]).className = '';
				document.getElementById('response-' + children[j] + '-na').checked = false;
				document.getElementById('response-' + children[j] + '-yes').disabled = false;
				document.getElementById('response-' + children[j] + '-no').disabled = false;
				document.getElementById('response-' + children[j] + '-dk').disabled = false;
				document.getElementById('response-' + children[j] + '-na').disabled = false;
			}
		}
		
		changed = true;
	}

	function DisableChildren(childrenStr)
	{
		var children = childrenStr.split(',');
		var j = 0
		var i = 0
		
		for (j=0; j<children.length; j++)
		{
			if (document.getElementById('response-' + children[j] + '-yes').disabled == false)
			{
				document.getElementById('question-' + children[j]).className = 'disabled'
				document.getElementById('response-' + children[j] + '-na').checked = true;
				document.getElementById('response-' + children[j] + '-yes').disabled = true;
				document.getElementById('response-' + children[j] + '-no').disabled = true;
				document.getElementById('response-' + children[j] + '-dk').disabled = true;
				document.getElementById('response-' + children[j] + '-na').disabled = true;
			}
		}
	
		changed = true;
	}
	
	function ToggleNote(question)
	{
		if (document.getElementById('notebutton-' + question).innerHTML == 'remove note')
		{
			document.getElementById('note-' + question).style.display = 'none';
			document.getElementById('note-' + question).value = '';
			document.getElementById('notebutton-' + question).innerHTML = 'add note';
		}
		else
		{
			document.getElementById('note-' + question).style.display = 'block';
			document.getElementById('note-' + question).focus();
			document.getElementById('notebutton-' + question).innerHTML = 'remove note';
		}
		
		changed = true;
	}

	function ToggleHelp(question, ap, version, country, site)
	{
		if (document.getElementById('helpbutton-' + question).innerHTML == 'show help')
		{
			document.getElementById('helpbutton-' + question).innerHTML = 'hide help';
			document.getElementById('help-' + question).style.display = 'block';

			http.open('GET', site + 'site/ajax/contractor_actionpoint.php?ap=' + ap + '&version=' + version + '&country=' + country, true);

			http.onreadystatechange = function() {
				if (http.readyState == 4) {
					document.getElementById('help-' + question).firstChild.innerHTML = http.responseText;
				}
			}

			http.send(null);

			return true;
		}
		else
		{
			document.getElementById('help-' + question).style.display = 'none';
			document.getElementById('helpbutton-' + question).innerHTML = 'show help';
			return true;
		}
	}

	function ToggleSection(section)
	{
		var rows = document.getElementById('section-' + section).getElementsByTagName('tr');

		if (document.getElementById('check-' + section).checked == false)
		{
			for (var i=0, j=rows.length; i<j; i++)
			{
				var inputs = rows[i].getElementsByTagName('input');
				for(var k=0, l=inputs.length; k<l; k++)
				{
					if (inputs[k].value == 'na' && inputs[k].checked)
					{
						inputs[k].checked = false;
						rows[i].className = '';
					}
				}
			}
		}
		else
		{
			for (var i=0, j=rows.length; i<j; i++)
			{
				rows[i].className = 'na';
				var inputs = rows[i].getElementsByTagName('input');
				for(var k=0, l=inputs.length; k<l; k++)
				{
					if (inputs[k].value == 'na') inputs[k].checked = true;
					else inputs[k].checked = false;
				}
			}
		}
	}

	function ConfirmSave(place)
	{
		if (changed == true)
		{
			if (confirm('If you navigate away from this page any unsaved changes you have made will be lost.')) window.location = place;
		}
		else return window.location = place;
	}

// Interactive Audit - Information Audit.

	function InformationUpdateGrade(cfh)
	{
		var correct = 0;
		var num = 0;
		var ongoing_good = false;
		var date_good = false;
		var grade = 0;

		var inputs = document.getElementById('cfh-' + cfh).getElementsByTagName('input');
		for (var i=0, j=inputs.length; i<j; i++)
		{
			if (inputs[i].id.substr(0, 8) == 'question')
			{
				if (inputs[i].type == 'text')
				{
					num++;
					if (inputs[i].value.length > 0) correct++;
				}
				else if (inputs[i].type == 'radio')
				{
					if (inputs[i].value == 'no') num++;
					else if ((inputs[i].value == 'yes' || inputs[i].value == 'na') && inputs[i].checked == true) correct++;
				}
			}
			else if (inputs[i].id.substr(0, 7) == 'ongoing')
			{
				if (inputs[i].type == 'radio' && (inputs[i].value == 'yes' || inputs[i].value == 'na') && inputs[i].checked == true) ongoing_good = true;
			}
			else if (inputs[i].id.substr(0, 4) == 'date')
			{
				var datebits = document.getElementById('date-' + cfh).value.split('/');
				if (datebits.length > 1)
				{
					if (
						((datebits[0] - 0) == datebits[0] && datebits[0].length == 2) &&
						((datebits[1] - 0) == datebits[1] && datebits[1].length == 2) &&
						((datebits[2] - 0) == datebits[2] && datebits[2].length == 4)
					)
					{
						date_good = true;
					}
				}
			}
		}

		if (correct == num)
		{
			if (ongoing_good && date_good) grade = 3;
			else grade = 2;
		}
		else if (correct > 0) grade = 1;
		else grade = 0;

		document.getElementById('grade-' + cfh).innerHTML = grade;
	}

	function InformationQuestionSet(cfh, question, state)
	{
		document.getElementById('question-row-' + question).className = state;
		document.getElementById('question-' + question + '-' + state).checked = true;

		if (state == 'na')
		{
			var na = true;
			var inputs = document.getElementById('cfh-' + cfh).getElementsByTagName('input');
			for (var i=0, j=inputs.length; i<j; i++)
			{
				if (inputs[i].id.substr(0, 8) == 'question' && inputs[i].value == 'na' && inputs[i].checked == false) na = false; // Found an N/A that wasn't checked.
			}
			
			if (na == true)
			{
				document.getElementById('ongoing-row-' + cfh).className = 'na';
				document.getElementById('ongoing-' + cfh + '-yes').disabled = true;
				document.getElementById('ongoing-' + cfh + '-yes').checked = false;
				document.getElementById('ongoing-' + cfh + '-no').disabled = true;
				document.getElementById('ongoing-' + cfh + '-no').checked = false;

				document.getElementById('date-row-' + cfh).className = 'na';
				document.getElementById('date-' + cfh).value = 'DD/MM/YYYY';
				document.getElementById('date-' + cfh).disabled = true;
				
				document.getElementById('grade-' + cfh).innerHTML = 'N/A';
			}
			else InformationUpdateGrade(cfh);
		}
		else
		{
			if (document.getElementById('ongoing-row-' + cfh).className == 'na')
			{
				document.getElementById('ongoing-row-' + cfh).className = '';
				document.getElementById('ongoing-' + cfh + '-yes').disabled = false;
				document.getElementById('ongoing-' + cfh + '-yes').checked = false;
				document.getElementById('ongoing-' + cfh + '-no').disabled = false;
				document.getElementById('ongoing-' + cfh + '-no').checked = false;
	
				document.getElementById('date-row-' + cfh).className = '';
				document.getElementById('date-' + cfh).value = 'DD/MM/YYYY';
				document.getElementById('date-' + cfh).disabled = false;
			}

			InformationUpdateGrade(cfh);
		}
	}

	function InformationTextClick(t)
	{
		if (t.value == '(enter name)')
		{
			t.focus();
			t.select();
		}
	}

	function InformationTextChange(cfh, question, value)
	{
		if (value.length > 0) document.getElementById('question-row-' + question).className = 'yes';
		else document.getElementById('question-row-' + question).className = '';
		
		InformationUpdateGrade(cfh);
	}

	function InformationTextBlur(cfh, question, value)
	{
		if (value.length > 0 && value != '(enter name)') document.getElementById('question-row-' + question).className = 'yes';
		else
		{
			document.getElementById('question-' + question).value = '(enter name)';
			document.getElementById('question-row-' + question).className = '';
		}
		
		InformationUpdateGrade(cfh);
	}

	function InformationOngoingSet(cfh, state)
	{
		document.getElementById('ongoing-row-' + cfh).className = state;
		document.getElementById('ongoing-' + cfh + '-' + state).checked = true;
		
		InformationUpdateGrade(cfh);
	}

	function InformationDateChange(cfh, value, e)
	{
		var key = window.event ? e.keyCode : e.which;
		if ((key < 46 || key > 58) && key != 13) return false;

		value = value + String.fromCharCode(key);
		var datebits = value.split('/');

		if (datebits.length > 1)
		{
			if (
				((datebits[0] - 0) == datebits[0] && datebits[0].length > 0) &&
				((datebits[1] - 0) == datebits[1] && datebits[1].length > 0)
			)
			{
				document.getElementById('date-row-' + cfh).className = 'yes';
				return true;
			}
		}

		document.getElementById('date-row-' + cfh).className = 'no';
		return true;
	}
	
	function InformationDateBlur(cfh, value)
	{
		var datebits = value.split('/');

		if (datebits.length > 1)
		{
			if (
				((datebits[0] - 0) == datebits[0] && datebits[0].length > 0) &&
				((datebits[1] - 0) == datebits[1] && datebits[1].length > 0)
			)
			{
				if (datebits[0] > 31) datebits[0] = 31;
				if (datebits[0].length == 1) datebits[0] = '0' + datebits[0];
				else if (datebits[0].length > 2) datebits[0] = datebits[0].substr(0, 2);

				if (datebits[1] > 12) datebits[1] = 12;
				if (datebits[1].length == 1) datebits[1] = '0' + datebits[1];
				else if (datebits[0].length > 2) datebits[0] = datebits[1].substr(0, 2);

				var d = new Date();
				var year = d.getFullYear();
				if ((datebits[2] - 0) == datebits[2])
				{
					if (datebits[2].length == 1) datebits[2] = '200' + datebits[2];
					else if (datebits[2].length == 2)
					{
						if (datebits[2] > 50) datebits[2] = '19' + datebits[2];
						else datebits[2] = '20' + datebits[2];
					}
					else if (datebits[2].length == 3) datebits[2] = datebits[2] + '0';
					else if (datebits[2].length > 4) datebits[2] = datebits[2].substr(0, 4);
					
					if (datebits[2] > year) datebits[2] = year;
				}
				else datebits[2] = year;

				document.getElementById('date-' + cfh).value = datebits[0] + '/' + datebits[1] + '/' + datebits[2];
				document.getElementById('date-row-' + cfh).className = 'yes';

				InformationUpdateGrade(cfh);
				return true;
			}
		}

		document.getElementById('date-' + cfh).value = 'DD/MM/YYYY';
		document.getElementById('date-row-' + cfh).className = '';
		
		InformationUpdateGrade(cfh);
	}

	function InformationDateClick(t)
	{
		if (t.value == 'DD/MM/YYYY')
		{
			t.focus();
			t.select();
		}
	}

// Interactive Audit - Infection Control Audit.

	function SetInfection(section, req, state)
	{
		document.getElementById('row-' + section + '-' + req).className = state;
		document.getElementById('response-' + section + '-' + req + '-' + state).checked = true;
	}

	function ToggleInfectionHelp(section, req)
	{
		if (document.getElementById('help-' + section + '-' + req).style.display == 'block')
		{
			document.getElementById('helpbutton-' + section + '-' + req).innerHTML = 'show help';
			document.getElementById('help-' + section + '-' + req).style.display = 'none';
			return true;
		}
		else
		{
			document.getElementById('helpbutton-' + section + '-' + req).innerHTML = 'hide help';
			document.getElementById('help-' + section + '-' + req).style.display = 'block';
			return true;
		}
	}
	
	function ToggleInformationHelp(question)
	{
		if (document.getElementById('help-' + question).style.display == 'block')
		{
			document.getElementById('helpbutton-' + question).innerHTML = 'show help';
			document.getElementById('help-' + question).style.display = 'none';
			return true;
		}
		else
		{
			document.getElementById('helpbutton-' + question).innerHTML = 'hide help';
			document.getElementById('help-' + question).style.display = 'block';
			return true;
		}
	}

	function ToggleInformationExplanation(cfh)
	{
		if (document.getElementById('cfh-explanation-' + cfh).style.display == 'block')
		{
			document.getElementById('cfh-explanation-button-' + cfh).innerHTML = 'show explanation';
			document.getElementById('cfh-explanation-' + cfh).style.display = 'none';
			return true;
		}
		else
		{
			document.getElementById('cfh-explanation-button-' + cfh).innerHTML = 'hide explanation';
			document.getElementById('cfh-explanation-' + cfh).style.display = 'block';
			return true;
		}

	}

// Everything else.

	function getHTTPObject() {
		if (typeof XMLHttpRequest != 'undefined')
		{
			return new XMLHttpRequest();
		}
	
		try
		{
			return new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e)
		{
			try
			{
				return new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (e)
			{}
		}
	
		return false;
	}

	var http = getHTTPObject();
	var changed = false;
