function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

function linkBack () {
	if (document.getElementById && document.getElementsByTagName) {
		if (document.getElementById('back')) {
			var list = document.getElementById('back');
			var links = list.getElementsByTagName('a');
			for (var i = 0; i < links.length; i++) {
				links[i].href = "javascript:back();";
			}
		}
	}
}

function updateSearchBox () {
	if (document.getElementById) {
		if (document.getElementById('query')) {
			var field = document.getElementById('query');
			var stringToDisplay = "Enter keywords";
			field.value = stringToDisplay;
			field.onfocus = function() {
				if (this.value == stringToDisplay) {
					this.value = "";
				}
			};
			field.onblur = function() {
				if (this.value == "") {
					this.value = stringToDisplay;
				}
			};
		}
	}
}

function disableSearchContextField () {
	if (document.getElementById) {
		if (document.getElementById('examples') && document.getElementById('context')) {
			var examples = document.getElementById('examples');
			var context = document.getElementById('context');
			if (examples.options[examples.selectedIndex].value == -1) {
				context.disabled = true;
			}
			examples.onchange = function() {
				if (this.options[this.selectedIndex].value == -1) {
					context.disabled = true;
				} else {
					context.disabled = false;
				}
			};
		}
	}
}

function addQuotesInUnsupportedUAs () {
	if (document.getElementsByTagName) {
		quotesElements = document.getElementsByTagName('q');
		if (quotesElements.length > 0) {
			q = quotesElements[0];
			
			if (q.currentStyle) {
				s = q.currentStyle;
			} else if (document.defaultView && document.defaultView.getComputedStyle) {
				s = document.defaultView.getComputedStyle(q, '');
			}
			supportsQuotes = false;
			for (prop in s) {
				if (prop.toLowerCase() == 'quotes') {
					supportsQuotes = true;
					break;
				}
			}
			if (!supportsQuotes) {
				for (var i = 0; i < quotesElements.length; i++) {
					quotesElements[i].innerHTML = "&ldquo;" + quotesElements[i].innerHTML + "&rdquo;";
				}
			}
		}
	}
}

function embedText () {
	if (document.getElementsByTagName) {
		if (document.getElementsByTagName('li')) {
			var items = document.getElementsByTagName('li');
			for (var i = 0; i < items.length; i++) {
				if (items[i].className.indexOf("embedded") >= 0) {
					items[i].onclick = function () {
						return toggleEmbedded(this);
					};
					toggleEmbedded(items[i]);
				}
			}
		}
	}
}

function toggleEmbedded (element) {
	if (element.childNodes) {
		var children = element.childNodes;
		for (var i = 0; i < children.length; i++) {
			var hide = true;
			var grandchildren = children[i].childNodes;
			for (var j = 0; j < grandchildren.length; j++) {
				if (grandchildren[j].className == "embedToggle") {
					hide = false;
				}
			}
			if (hide == true) {
				if (children[i].className == "off") {
					children[i].className = "on";
					toggleEmbedSpan(element, "on");
				} else {
					children[i].className = "off";
					toggleEmbedSpan(element, "off");
				}
			}
		}
	}
}

function toggleEmbedSpan (element, state) {
	if (element.getElementsByTagName) {
		if (element.getElementsByTagName('span')) {
			var items = element.getElementsByTagName('span');
			for (var i = 0; i < items.length; i++) {
				if (items[i].className.match("embedToggle")) {
					if (state == "on") {
						items[i].innerHTML = "[less]";
					} else {
						items[i].innerHTML = "[more]";
					}
				}
			}
		}
	}
}

function activateGroups () {
	if (document.getElementsByTagName) {
		if (document.getElementsByTagName('li')) {
			var items = document.getElementsByTagName('li');
			for (var i = 0; i < items.length; i++) {
				if (items[i].className.match("group")) {
					items[i].onclick = function () {
						return toggleGroup(this);
					};
				} else if (items[i].firstChild.nodeName == "A") {
					items[i].onclick = function () {
						return liFollowLink(this);
					};
				}
			}
		}
	}
}

function toggleGroup (element) {
	if (element.nodeName == "LI") {
		if (element.className.match("groupOn")) {
			element.className = "group";
		} else {
			element.className = "groupOn";
		}
		var children = element.childNodes;
		for (var i = 0; i < children.length; i++) {
			if (children[i].nodeName == "UL") {
				if (children[i].className == "off") {
					children[i].className = "on";
				} else {
					children[i].className = "off";
				}
			}
		}
	}
}

function liFollowLink (element) {
	if (element.nodeName == "LI" && element.parentNode.nodeName == "UL" && element.parentNode.className.match("on")) {
		window.location = element.firstChild.href;
	}
}

function checkArticleAlertForm (form) {
	with (form) {
		if (validateField(name, "You must enter your name.") == false) {
			name.focus();
			return false;
		}
		if (validateField(email, "You must enter your email address.") == false) {
			email.focus();
			return false;
		}
		if (validateField(address1, "You must enter the first line of your mailing address.") == false) {
			address1.focus();
			return false;
		}
		if (validateField(suburb, "You must enter your city or suburb.") == false) {
			suburb.focus();
			return false;
		}
		if (validateField(state, "You must enter your state.") == false) {
			state.focus();
			return false;
		}
		if (validateField(postcode, "You must enter your postcode.") == false) {
			postcode.focus();
			return false;
		}
	}
}

function checkSurveyForm (form) {
	with (form) {
		if (validateField(title, "You must enter your title.") == false) {
			title.focus();
			return false;
		}
		if (validateField(firstName, "You must enter your first name.") == false) {
			firstName.focus();
			return false;
		}
		if (validateField(middleInitial, "You must enter your middle initial.") == false) {
			middleInitial.focus();
			return false;
		}
		if (validateField(surname, "You must enter your surname.") == false) {
			surname.focus();
			return false;
		}
		if (validateField(position, "You must enter the tile of your position.") == false) {
			position.focus();
			return false;
		}
		if (validateField(organization, "You must enter name of your organization.") == false) {
			organization.focus();
			return false;
		}
		if (validateField(address1, "You must enter the first line of your mailing address.") == false) {
			address1.focus();
			return false;
		}
		if (validateField(suburb, "You must enter your city or suburb.") == false) {
			suburb.focus();
			return false;
		}
		if (validateField(state, "You must enter your state.") == false) {
			state.focus();
			return false;
		}
		if (validateField(postcode, "You must enter your postcode.") == false) {
			postcode.focus();
			return false;
		}
		if (validateField(officePhone, "You must enter your office phone number.") == false) {
			officePhone.focus();
			return false;
		}
		if (validateField(officeFax, "You must enter your office fax number.") == false) {
			officeFax.focus();
			return false;
		}
		if (validateField(mobilePhone, "You must enter your mobile phone number.") == false) {
			mobilePhone.focus();
			return false;
		}
		if (validateField(email, "You must enter your email address.") == false) {
			email.focus();
			return false;
		}
	}
}

function validateField (field, alertText) {
	with (field) {
		if (value == null || value == "") {
			alert(alertText);
			return false;
		} else {
			return true;
		}
	}
}

function disableDependentFields () {
	if (document.getElementById) {
		if (document.getElementById('other') && document.getElementById('otherWriteIn')) {
			var other = document.getElementById('other');
			var writeIn = document.getElementById('otherWriteIn');
			if (other.checked == false) {
				writeIn.disabled = true;
			} else {
				writeIn.disabled = false;
			}
			other.onchange = function () {
				if (document.getElementById) {
					if (document.getElementById('otherWriteIn')) {
						var target = document.getElementById('otherWriteIn');
						if (target.disabled == true) {
							target.disabled = false;
						} else {
							target.disabled = true;
						}
					}
				}
			};
		}
	}
}

function disableSubmitOnSubmit () {
	if (document.getElementById) {
		if (document.getElementById('submit')) {
			var button = document.getElementById('submit');
			button.onmouseup = function () {
				this.disabled = true;
			}
		}
	}
}

function enableDynamicBTT () {
	if (document.getElementById) {
		if (document.getElementById('backToTop')) {
			var BTTElement = document.getElementById('backToTop');
			BTTElement.className = "dynamicBTT";
	/*		window.onscroll = function () {
				if (window.pageYOffset > 0) {
					if (document.getElementById) {
						if (document.getElementById('backToTop')) {
							var BTTElement = document.getElementById('backToTop');
							BTTElement.className = "dynamicBTT";
						}
					}
				} else {
					if (document.getElementById) {
						if (document.getElementById('backToTop')) {
							var BTTElement = document.getElementById('backToTop');
							BTTElement.className = "hiddenBTT";
						}
					}
				}
			}; */
		}
	}
}

//addLoadEvent(addQuotesInUnsupportedUAs);
//addLoadEvent(disableSearchContextField);
//addLoadEvent(embedText);
//addLoadEvent(activateGroups);
//addLoadEvent(updateSearchBox);
//addLoadEvent(linkBack);
//addLoadEvent(disableSubmitOnSubmit);
//addLoadEvent(disableDependentFields);
addLoadEvent(enableDynamicBTT);