function register(e) {
	/* Cancel the submit event, and find out which form was submitted */
	knackerEvent(e);
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) return;

	/* Check if this form is already in the process of being submitted.
	* If so, don't allow it to be submitted again. */
	if (target.ajaxInProgress) return;

	/* Set up the request */
	var xmlhttp =  new XMLHttpRequest();
	xmlhttp.open('POST', 'ajax/register.php', true);

	/* The callback function */
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				var loadingImg = document.getElementById('loadingFeedback');
				if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 1) {
					var feedbackText = 'Thank you for registering an account with meTracks. Please check your email.';
					document.getElementById('regform').reset();
				} else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 2) {
					var feedbackText = 'Please complete all fields.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 0) {
					var feedbackText = 'Username already taken.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 11) {
					var feedbackText = 'An existing account is using the mail address you entered. Please choose another.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 12) {
					var feedbackText = 'Please remove any numbers from "Username", "Name" and "Surname" fields.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 13) {
					var feedbackText = 'Please read and accept our Terms and Conditions.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 14) {
					var feedbackText = 'Invalid email address';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 15) {
					var feedbackText = 'Invalid S3 account settings';
				}
				else {
					var feedbackText = 'The answer to the sum you entered is incorrect. Remember to answer with a word rather than a number.'
				}
				var feedbackSpan = document.createElement('div');
				feedbackSpan.id = 'loadingFeedback';
				feedbackSpan.appendChild(document.createTextNode(feedbackText));
				loadingImg.parentNode.replaceChild(feedbackSpan, loadingImg);
				var loadingParent = document.getElementById('loadingparent');
				loadingParent.style.display = "block"; 

				// Free up the form to go again
				target.ajaxInProgress = false;
			} else
			target.submit();
		}
	}

	/* Send the POST request */
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	str = '';
	var fobj = document.getElementById('regform');
	for(var i = 0;i < fobj.elements.length;i++) {
		var val = fobj.elements[i].value;
		var rexp = new RegExp("\\+", "g");
		var encodedState = val.replace(rexp, "\%2B");
		if (fobj.elements[i].type == 'checkbox' && fobj.elements[i].checked == false) {
				continue;
		} else {
			str += fobj.elements[i].name + "=" + encodeURI(encodedState) + "&";
		}
	}
	str = str.substr(0,(str.length - 1));
	xmlhttp.send(str);

	/* Add temporary feedback that the request has been sent */
	var loadingFeedback = document.getElementById('loadingFeedback');
	var loadingImg = document.createElement('img');
	loadingImg.src = 'images/working.gif';
	loadingImg.id = 'loadingFeedback';
	loadingFeedback.parentNode.replaceChild(loadingImg, loadingFeedback);
	var loadingParent = document.getElementById('loadingparent');
	loadingParent.style.display = "block"; 
	target.ajaxInProgress = true;
}
function registerint(e) {
	/* Cancel the submit event, and find out which form was submitted */
	knackerEvent(e);
	var target = window.event ? window.event.srcElement : e ? e.target : null;
	if (!target) return;

	/* Check if this form is already in the process of being submitted.
	* If so, don't allow it to be submitted again. */
	if (target.ajaxInProgress) return;

	/* Set up the request */
	var xmlhttp =  new XMLHttpRequest();
	xmlhttp.open('POST', 'ajax/registerint.php', true);

	/* The callback function */
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				var loadingImg = document.getElementById('loadingFeedback');;
				if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 1)
					var feedbackText = 'Thank you for registering your interest in meTracks.';
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 2) {
					var feedbackText = 'Please enter your Email address.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 0) {
					var feedbackText = 'Username already taken';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 11) {
					var feedbackText = 'We already have your Email address in our database.';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 12) {
					var feedbackText = 'We don\'t allow numbers in names';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 13) {
					var feedbackText = 'You need to accept our terms of service';
				}
				else if (xmlhttp.responseXML.getElementsByTagName('result')[0].firstChild.data == 14) {
					var feedbackText = 'Invalid email address';
				}
				else
					var feedbackText = 'The answer to the sum you entered is incorrect. Remember to answer with a word rather than a number.'
				var feedbackSpan = document.createElement('div');
				feedbackSpan.id = 'loadingFeedback';
				feedbackSpan.appendChild(document.createTextNode(feedbackText));
				loadingImg.parentNode.replaceChild(feedbackSpan, loadingImg);
				var loadingParent = document.getElementById('loadingparent');
				loadingParent.style.display = "block"; 
				// Free up the form to go again
				target.ajaxInProgress = false;
			} else
			target.submit();
		}
	}

	/* Send the POST request */
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	str = '';
	var fobj = document.getElementById('regform2');
	for(var i = 0;i < fobj.elements.length;i++) {
		var val = fobj.elements[i].value;
		var rexp = new RegExp("\\+", "g");
		var encodedState = val.replace(rexp, "\%2B");
		str += fobj.elements[i].name + "=" + encodeURI(encodedState) + "&";
	}
	str = str.substr(0,(str.length - 1));
	xmlhttp.send(str);

	/* Add temporary feedback that the request has been sent */
	var loadingFeedback = document.getElementById('loadingFeedback');
	var loadingImg = document.createElement('img');
	loadingImg.src = 'images/working.gif';
	loadingImg.id = 'loadingFeedback';
	loadingFeedback.parentNode.replaceChild(loadingImg, loadingFeedback);
	var loadingParent = document.getElementById('loadingparent');
	loadingParent.style.display = "block"; 
	target.ajaxInProgress = true;
}
function launch(url)
{
	newwindow=window.open(url,'name','scrollbars,height=500,width=400');
	if (window.focus) {newwindow.focus()}
	return false;
}
function termson(whichLayer) {
	var style2 = document.getElementById(whichLayer).style;
	style2.display = style2.display? "":"block";
}