function NewCaptcha() {
	var capimg = document.getElementById('capimage');
	capimg.src = 'http://dataforce.openid.authgate.co.uk/cap.php?'+(new Date()).getTime();
}

			function regcheck() {
				var rf = document.getElementById('Register');
				if (rf.Username.value == "") {
					alert("Username must not be blank");
					return false;
				}
				
				if (rf.Password.value == "") {
					alert("Password must not be blank");
					return false;
				}
				
				if (rf.Firstname.value == "") {
					alert("Firstname must not be blank");
					return false;
				}
				
				if (rf.Surname.value == "") {
					alert("Surname must not be blank");
					return false;
				}
				if (rf.Addr1.value == "") {
					alert("Addr1 must not be blank");
					return false;
				}
				if (rf.City.value == "") {
					alert("Town/City must not be blank");
					return false;
				}
				if (rf.County.value == "") {
					alert("State/County must not be blank");
					return false;
				}
				if (rf.Zip.value == "") {
					alert("Zip/PostCode must not be blank");
					return false;
				}
				if (rf.Country.value == "") {
					alert("Country must not be blank");
					return false;
				}
				if (rf.Email.value == "") {
					alert("Contact Email must not be blank");
					return false;
				}
				if (rf.Captcha.value == "") {
					alert("Captcha must not be blank");
					return false;
				}
				return true;
			}



			function dolprep() {
				var lf = document.getElementById('Logout');
				lf.dologout.disabled = true;
				lf.dologout.value = 'Logging Out...';
				return true;
			}

			function dorprep() {
				var lf = document.getElementById('Renew');
				lf.dorenew.disabled = true;
				lf.dorenew.value = 'Processing...';
				return true;
			}
			
			function domaprep() {
				var lf = document.getElementById('Modify');
				lf.domodify.disabled = true;
				lf.domodify.value = 'Processing...';
				return true;
			}
			
			function dohomeprep() {
				var lf = document.getElementById('GoHome');
				lf.dohome.disabled = true;
				lf.dohome.value = 'Processing...';
				return true;
			}

			function AJAXOnly() {
				doprep();
			}
			function canContinueAjax() {
				if (!http) { return false; }
				return !checkOID();
			}
			function doprep() {
				var lf = document.getElementById('Login');
				lf.dologin.disabled = true;
				lf.dologin.value = 'Logging In...';
				lf.LoginUsername.readonly = true;
				lf.LoginPassword.readonly = true;
				lf.LoginAuthCode.readonly = true;
				if (canContinueAjax()) {
					return TryAJAX();
				} else {
					return true;
				}
			}
			function TryAJAX() {
				SetError3('Preparing Login Request');
				document.getElementById('Login').dologin.value = 'AJAX Login..';
				DoAJAX();
				return false; // Return False Because AJAX is handling this!
			}

			function DoAJAX() {
				if (http) {
					SetError3('http request not null');
					lf = document.getElementById('Login');
					var Digest = document.getElementById("LoginDigest").value;
					var Username = document.getElementById("LoginUsername").value;
					var Password = document.getElementById("LoginPassword").value;
					var AuthCode = document.getElementById("LoginAuthCode").value;
					var HA1 = hex_md5(Digest+hex_md5(Password+' '+Username.toLowerCase()));
					var date = new Date;
					var MyDigest = hex_md5(''+date.getTime())+':'+hex_md5(''+Math.floor(Math.random()*1000000));
					var Response = hex_md5(HA1+':'+MyDigest);
										var oid = document.getElementById("oid");
										SetError3('Opening to '+lf.action);
					http.open("POST", lf.action, true);
					http.onreadystatechange = handleHttpResponse;
					http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
					str = 'ajax='
					str += '&Digest='+escape(Digest);
					str += '&LoginUsername='+escape(Username);
					str += '&Response='+escape(Response);
					str += '&MyDigest='+escape(MyDigest);
					str += '&LoginAuthCode='+escape(AuthCode);
										if (oid != null) {
						str += '&oid='+escape(oid.value);
					}
										SetError3('Finding site');
					if (document.getElementById("LoginSiteID")) str += '&siteid='+escape(document.getElementById("LoginSiteID").value);
					if (document.getElementById("LoginDomain")) str += '&domain='+escape(document.getElementById("LoginDomain").value);
					SetError3('Sending Login Request');
					http.send(str);
					SetError3('Login Request Set, Waiting for response..');
				}
			}

			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 agt = navigator.userAgent.toLowerCase();
			var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
			var is_opera = (agt.indexOf("opera") != -1);
			var is_gecko = (agt.indexOf("gecko") != -1);

			var http = null;
			var pagetype = ''
			function LoadAJAX(type) {
				pagetype = type;
				// Setup the HTTP Object
				if (window.hex_md5) {
					http = getHTTPObject();
										SetError("AJAX Secure Login Status: Enabled","[<a href=\"javascript:DisableAJAX();\">Disable AJAX On Login</a>]", true, false);
					ChangeHTML("AJAXStatus","Enabled");
					if (pagetype == 'login') { document.getElementById("DisableAJAX").value = '0'; }
									} else {
					// AJAX Login Disabled due to lack of MD5.
					http = null;
					SetError("AJAX Secure Login Status: Disabled","Reason: No MD5 Support", false, false);
					ChangeHTML("AJAXStatus","Disabled (No MD5)");
				}
			}

			function EnableAJAX() {
				if (pagetype == 'login') { document.getElementById("DisableAJAX").value = '0'; }
				LoadAJAX(pagetype);
			}

			function DisableAJAX() {
				http = null;
				if (pagetype == 'login') { document.getElementById("DisableAJAX").value = '1'; }
				SetError("AJAX Secure Login Status: Disabled","Reason: Requested By User [<a href=\"javascript:EnableAJAX();\">Enable</a>]", false, false);
			}

			function SetError(Error1,Error2,Good,Hide3){
				if (pagetype != 'login') { 
					return;
				} else {
					errloc = document.getElementById('ErrorLocation');
					document.getElementById('Error1').style.display = 'block';
					document.getElementById('Error2').style.display = 'block';
					if (Error1 != "") { ChangeHTML('Error1',Error1); } else { document.getElementById('Error1').style.display = 'none'; }
					if (Error2 != "") { ChangeHTML('Error2',Error2); } else { document.getElementById('Error2').style.display = 'none'; }
					errloc.style.display = "";
					if (Good) { errloc.style.background = "#AFA"; }
					else { errloc.style.background = "#FAA"; }

					if (Hide3) { document.getElementById('Error3').style.display = 'none'; }
				}
			}

			function SetError3(Error3){
				if (pagetype != 'login') { 
					return;
				} else {
					document.getElementById('Error3').style.display = 'block';
					if (Error3 != "") {ChangeHTML('Error3','<br><br>'+Error3); } else { document.getElementById('Error3').style.display = 'none'; }
				}
			}

			function isObject(a) { return (a && typeof a == 'object') || (typeof a == 'function'); }
			function isFunction(a) { return (typeof a == 'function'); }
			function ChangeHTML(el,content){
				if (!isObject(el)) {
					el = document.getElementById(el);
					if (!isObject(el)) { return false; }
				}

				if (is_gecko) {
					if (document.getElementById && !document.all){
						rng = document.createRange();
						rng.setStartBefore(el);
						htmlFrag = rng.createContextualFragment(content);
						while (el.hasChildNodes()) { el.removeChild(el.lastChild); }
						el.appendChild(htmlFrag);
					}
				} else {
					el.innerHTML = content;
				}
				return true;
			}


			function handleHttpResponse() {
				// only if req shows "loaded"
				SetError3('Responding: '+http.readyState);
				if (http.readyState == 4) {
					// only if "OK"
					SetError3('Responding State: '+http.status);
					if (http.status == 200) {
						//alert(http.responseText);
						var response = http.responseXML.documentElement;

						var Status = response.getElementsByTagName('status')[0].firstChild.data;
						var Msg = response.getElementsByTagName('message')[0].firstChild.data;
						var url = response.getElementsByTagName('url')[0].firstChild.data;						

						SetError("Login Status: "+Status,"Login Msg: "+Msg,true,false);
						SetError3('URL: '+url);

						if (Status == 0) {
							// Failure!
							SetError("Login Failue:",Msg,false,true);
						} else if (Status == 1) {
							// Success!
							SetError("Login Success:",Msg,true,true);
							// Redirect if needed!
							if (url != 'none') {
								SetError3('<a href="'+url+'">Redirecting, please Wait.</a>');
								window.location = url;
							}
						} else {
							// Other!
							SetError("Login Did Not Complete:",Msg,false,true);
						}

						lf = document.getElementById('Login');
						lf.dologin.disabled = false;
						lf.dologin.value = 'Login';
						return true;

						return true;
					}
				}
			}
			
			function OIDOnKeyUp() { }
			function OIDOnClick() { }
			function OIDOnChange() { }
			function checkOID() {
				var oidform = document.getElementById("openid_url");
				return (oidform.parentNode.parentNode.style.display != 'none');
			}
			
			function changeLoginForm() {
				var oidform = document.getElementById("openid_url").parentNode.parentNode;
				var username = document.getElementById("LoginUsername").parentNode.parentNode;
				var password = document.getElementById("LoginPassword").parentNode.parentNode;
				var authcode = document.getElementById("LoginAuthCode").parentNode.parentNode;
				
				var link = document.getElementById("changelink");
				
				if (checkOID()) {
					oidform.style.display = 'none';
					username.style.display = 'block';
					password.style.display = 'block';
					authcode.style.display = 'block';
					document.getElementById("openid_url").value = '';
					document.getElementById("Login").action='/?dologin';
					link.innerHTML = 'Use OpenID Login';
				} else {
					oidform.style.display = 'block';
					username.style.display = 'none';
					password.style.display = 'none';
					authcode.style.display = 'none';
					document.getElementById("Login").action='/?oidlogin';
					document.getElementById("LoginPassword").value = '';
					document.getElementById("LoginUsername").value = '';
					document.getElementById("LoginAuthCode").value = '';
					link.innerHTML = 'Use Authgate Login';
				}
			}
			
		