function trim(str) {
	return str.replace(/^\s+|\s+$/g,"");
}
function Mid(str, start, len)
{
// Make sure start and len are within proper bounds
    if (start < 0 || len < 0) return "";
    var iEnd, iLen = String(str).length;
    if (start + len > iLen)
          iEnd = iLen;
    else
          iEnd = start + len;
    return String(str).substring(start,iEnd);
}
function Chr(AsciiNum)
{
	return String.fromCharCode(AsciiNum);
}
function checkusername() {
document.register.username.value=trim(document.register.username.value);
if (document.register.username.value.length<5) {
	document.getElementById("cusername").innerHTML="Too short";
	return;
}
if (document.register.username.value.length>20) {
	document.getElementById("cusername").innerHTML="Too long";
	return;
}
for (i=0; i<document.register.username.value.length; i++) {
	if (Mid(document.register.username.value, i, 1)=="`" || Mid(document.register.username.value, i, 1)=="~" || Mid(document.register.username.value, i, 1)=="*" || Mid(document.register.username.value, i, 1)=="!" || Mid(document.register.username.value, i, 1)=="^" || Mid(document.register.username.value, i, 1)=="}" || Mid(document.register.username.value, i, 1)=="{" || Mid(document.register.username.value, i, 1)=="]" || Mid(document.register.username.value, i, 1)=="[" || Mid(document.register.username.value, i, 1)==")" || Mid(document.register.username.value, i, 1)=="(" || Mid(document.register.username.value, i, 1)=="'" || Mid(document.register.username.value, i, 1)==Chr(34) || Mid(document.register.username.value, i, 1)=="$" || Mid(document.register.username.value, i, 1)=="@" || Mid(document.register.username.value, i, 1)=="&" || Mid(document.register.username.value, i, 1)=="%" || Mid(document.register.username.value, i, 1)=="/" || Mid(document.register.username.value, i, 1)==Chr(92) || Mid(document.register.username.value, i, 1)==":" || Mid(document.register.username.value, i, 1)==";" || Mid(document.register.username.value, i, 1)==">" || Mid(document.register.username.value, i, 1)=="<" || Mid(document.register.username.value, i, 1)=="=" || Mid(document.register.username.value, i, 1)=="+" || Mid(document.register.username.value, i, 1)=="|" || Mid(document.register.username.value, i, 1)=="?" || Mid(document.register.username.value, i, 1)=="#" || Mid(document.register.username.value, i, 1)=="." || Mid(document.register.username.value, i, 1)==",") {
		document.getElementById("cusername").innerHTML="Invalid: use only letters or numbers";
		return;
	}
}
for (i=0; i<document.register.username.value.length; i++) {
	if (Mid(document.register.username.value, i, 1)==" ") {
		document.getElementById("cusername").innerHTML="Invalid: do not use spaces";
		return;
	}
}
if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			xmlhttp.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

xmlhttp.open("POST", "checkusername.asp?user="+document.register.username.value, false);
xmlhttp.send(""); //send the dummy data as it is required for the XMLHTTP object 
document.getElementById("cusername").innerHTML=xmlhttp.responseText;
}
function checkpassword1() {
document.register.password1.value=trim(document.register.password1.value);
if (document.register.password1.value.length<5) {
	document.getElementById("cpassword1").innerHTML="Too short";
	return;
}
if (document.register.password1.value.length>20) {
	document.getElementById("cpassword1").innerHTML="Too long";
	return;
}
document.getElementById("cpassword1").innerHTML="OK";
}
function checkpassword2() {
if (document.register.password2.value!=document.register.password1.value) {
	document.getElementById("cpassword2").innerHTML="Passwords do not match";
	return;
	}
document.getElementById("cpassword2").innerHTML="OK";
}
function checkemail1() {
document.register.email1.value=trim(document.register.email1.value);
if (document.register.email1.value.length<6) {
	document.getElementById("cemail1").innerHTML="Too short";
	return;
}
if (document.register.email1.value.length>60) {
	document.getElementById("cemail1").innerHTML="Too long";
	return;
}
if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			xmlhttp.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
for (i=0; i<document.register.email1.value.length; i++) {
	if (Mid(document.register.email1.value, i, 1)=="@") {
		xmlhttp.open("POST", "checkemail.asp?email="+document.register.email1.value, false);
		xmlhttp.send(""); //send the dummy data as it is required for the XMLHTTP object 
		document.getElementById("cemail1").innerHTML=xmlhttp.responseText;
		return;
	}
}
document.getElementById("cemail1").innerHTML="Invalid e-mail address";
}
function checkemail2() {
if (document.register.email2.value!=document.register.email1.value) {
	document.getElementById("cemail2").innerHTML="E-mails do not match";
	return;
	}
document.getElementById("cemail2").innerHTML="OK";
}
function checkfirstname() {
document.register.firstname.value=trim(document.register.firstname.value);
if (document.register.firstname.value.length<2) {
	document.getElementById("cfirstname").innerHTML="Too short";
	return;
}
if (document.register.firstname.value.length>30) {
	document.getElementById("cfirstname").innerHTML="Too long";
	return;
}
document.getElementById("cfirstname").innerHTML="OK";
}
function checklastname() {
document.register.lastname.value=trim(document.register.lastname.value);
if (document.register.lastname.value.length<2) {
	document.getElementById("clastname").innerHTML="Too short";
	return;
}
if (document.register.lastname.value.length>30) {
	document.getElementById("clastname").innerHTML="Too long";
	return;
}
document.getElementById("clastname").innerHTML="OK";
}
function checkcountry() {
document.register.country.value=trim(document.register.country.value);
if (document.register.country.value.length<3) {
	document.getElementById("ccountry").innerHTML="Too short";
	return;
}
if (document.register.country.value.length>30) {
	document.getElementById("ccountry").innerHTML="Too long";
	return;
}
document.getElementById("ccountry").innerHTML="OK";
}
function checkstate() {
document.register.state.value=trim(document.register.state.value);
if (document.register.state.value.length<3) {
	document.getElementById("cstate").innerHTML="Too short";
	return;
}
if (document.register.state.value.length>30) {
	document.getElementById("cstate").innerHTML="Too long";
	return;
}
document.getElementById("cstate").innerHTML="OK";
}
function checkcity() {
document.register.city.value=trim(document.register.city.value);
if (document.register.city.value.length<3) {
	document.getElementById("ccity").innerHTML="Too short";
	return;
}
if (document.register.city.value.length>30) {
	document.getElementById("ccity").innerHTML="Too long";
	return;
}
document.getElementById("ccity").innerHTML="OK";
}
function checkreg() {
var fl;
document.register.username.value=trim(document.register.username.value);
if (document.register.username.value.length<5) {
	alert("Username is too short. It needs to be over 4 characters long.");
	return;
}
if (document.register.username.value.length>20) {
	alert("Username is too long. It needs to be less than 21 characters long.");
	return;
}
for (i=0; i<document.register.username.value.length; i++) {
	if (Mid(document.register.username.value, i, 1)=="`" || Mid(document.register.username.value, i, 1)=="~" || Mid(document.register.username.value, i, 1)=="*" || Mid(document.register.username.value, i, 1)=="!" || Mid(document.register.username.value, i, 1)=="^" || Mid(document.register.username.value, i, 1)=="}" || Mid(document.register.username.value, i, 1)=="{" || Mid(document.register.username.value, i, 1)=="]" || Mid(document.register.username.value, i, 1)=="[" || Mid(document.register.username.value, i, 1)==")" || Mid(document.register.username.value, i, 1)=="(" || Mid(document.register.username.value, i, 1)=="'" || Mid(document.register.username.value, i, 1)==Chr(34) || Mid(document.register.username.value, i, 1)=="$" || Mid(document.register.username.value, i, 1)=="@" || Mid(document.register.username.value, i, 1)=="&" || Mid(document.register.username.value, i, 1)=="%" || Mid(document.register.username.value, i, 1)=="/" || Mid(document.register.username.value, i, 1)==Chr(92) || Mid(document.register.username.value, i, 1)==":" || Mid(document.register.username.value, i, 1)==";" || Mid(document.register.username.value, i, 1)==">" || Mid(document.register.username.value, i, 1)=="<" || Mid(document.register.username.value, i, 1)=="=" || Mid(document.register.username.value, i, 1)=="+" || Mid(document.register.username.value, i, 1)=="|" || Mid(document.register.username.value, i, 1)=="?" || Mid(document.register.username.value, i, 1)=="#" || Mid(document.register.username.value, i, 1)=="." || Mid(document.register.username.value, i, 1)==",") {
		alert("Invalid username: please use only letters or numbers.");
		return;
	}
}
for (i=0; i<document.register.username.value.length; i++) {
	if (Mid(document.register.username.value, i, 1)==" ") {
		alert("Invalid username: please do not use spaces.");
		return;
	}
}
if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			xmlhttp.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

xmlhttp.open("POST", "checkusername.asp?user="+document.register.username.value, false);
xmlhttp.send(""); //send the dummy data as it is required for the XMLHTTP object 
if (xmlhttp.responseText!="OK") {
	alert("This username already exists. Please choose another one.");
	return;
}
document.register.password1.value=trim(document.register.password1.value);
if (document.register.password1.value.length<5) {
	alert("Password is too short. It needs to be over 4 characters long.");
	return;
}
if (document.register.password1.value.length>20) {
	alert("Password is too long. It needs to be less than 21 characters long.");
	return;
}
if (document.register.password2.value!=document.register.password1.value) {
	alert("Passwords do not match.");
	return;
	}
document.register.email1.value=trim(document.register.email1.value);
if (document.register.email1.value.length<6) {
	alert("E-mail address is too short.");
	return;
}
if (document.register.email1.value.length>60) {
	alert("E-mail address is too long. It needs to be less than 61 characters long.");
	return;
}
for (i=0; i<document.register.email1.value.length; i++) {
	if (Mid(document.register.email1.value, i, 1)=="@") {
		fl="2";
	}
}
if (fl!="2") {
	alert("Invalid e-mail address. Please re-enter it.");
	return;
	}
xmlhttp.open("POST", "checkemail.asp?email="+document.register.email1.value, false);
xmlhttp.send(""); //send the dummy data as it is required for the XMLHTTP object 
if (xmlhttp.responseText!="OK") {
	alert("This e-mail address already exists. Please choose another one.");
	return;
	}
if (document.register.email2.value!=document.register.email1.value) {
	alert("E-mail addresses do not match.");
	return;
	}
document.register.firstname.value=trim(document.register.firstname.value);
if (document.register.firstname.value.length<2) {
	alert("First name is too short.");
	return;
}
if (document.register.firstname.value.length>30) {
	alert("First name is too long. It needs to be less than 31 characters long.");
	return;
}
document.register.lastname.value=trim(document.register.lastname.value);
if (document.register.lastname.value.length<2) {
	alert("Last name is too short.");
	return;
}
if (document.register.lastname.value.length>30) {
	alert("Last name is too long. It needs to be less than 31 characters long.");
	return;
}
document.register.country.value=trim(document.register.country.value);
if (document.register.country.value.length<3) {
	alert("Country is too short.");
	return;
}
if (document.register.country.value.length>30) {
	alert("Country is too long. It needs to be less than 31 characters long.");
	return;
}
document.register.state.value=trim(document.register.state.value);
if (document.register.state.value.length<3) {
	alert("State/Province is too short.");
	return;
}
if (document.register.state.value.length>30) {
	alert("State/Province is too long. It needs to be less than 31 characters long.");
	return;
}
document.register.city.value=trim(document.register.city.value);
if (document.register.city.value.length<3) {
	alert("City/Town is too short.");
	return;
}
if (document.register.city.value.length>30) {
	alert("City/Town is too long. It needs to be less than 31 characters long.");
	return;
}
if (document.register.ts.checked==false) {
		alert ("You must be over 18 years old and agree with our Terms of Use and Privacy Policy!");
		return;
	}
document.register.submit();

}

