function validateUsername(username, document) {
	
	var xmlhttp;
	/* running locally on IE6,IE7 */;/*
										 * Gotta love IE's support for
										 * Conditional Compilation
										 */
	; /*
		 * @cc_on if(location.protocol=="file:"){ if(!xmlhttp)try{ xmlhttp=new
		 * ActiveXObject("MSXML2.XMLHTTP"); }catch(e){xmlhttp=false;}
		 * if(!xmlhttp)try{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		 * }catch(e){xmlhttp=false;} } @cc_off @
		 */

	/* IE7, Firefox, Safari, Opera... the Standard way */
	if (!xmlhttp) {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}

	/* IE6 */
	if (typeof ActiveXObject != "undefined") {
		if (!xmlhttp) {
			try {
				xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
			} catch (e) {
				xmlhttp = false;
			}
		}
		if (!xmlhttp) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				xmlhttp = false;
			}
		}
	}

	/* IceBrowser */
	if (!xmlhttp) {
		try {
			xmlhttp = createRequest();
		} catch (e) {
			xmlhttp = false;
		}
	}

	combined_url = "redirect.jsp?username=" + username;
	xmlhttp.open("HEAD", combined_url, true);
	xmlhttp.send(null);

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var statuscode = xmlhttp.getResponseHeader("statuscode");
			var statustext = xmlhttp.getResponseHeader("statustext");

			if (statuscode == 200) {
				document.getElementById("message").innerHTML = "Username reserved";
				document.getElementById("username_star").style.color = "#FF0000";
				document.registerform.registerbutton.disabled = true;
			} else if (statuscode == 404) {
				document.getElementById("message").innerHTML = "";
				document.getElementById("username_star").style.color = "#000000";
				document.registerform.registerbutton.disabled = false;
			}
		}
	};
	
	if(document.registerform.registerbutton.disabled == false) {
		return true;
	}else {
		return false;
	}
}

function checkEmail(email) {
	var re = new RegExp(/^[\w\d._%+-]+@[\w\d.-]+\.[\w]{2,4}$/);
	if(email.match(re)) {
		return true;
	}else {
		return false;
	}
}

function checkUsername(username) {
	var re = new RegExp(/[A-Za-z0-9_]+/);
	if(username.match(re)) {
		return true;
	}else {
		return false;
	}
}

function checkMSISDN(msisdn) {
	if(msisdn.charAt(0) == "0")
		return false;
		
	var re = new RegExp(/[0-9]+/);
	if(msisdn.match(re)) {
		return true;
	}else {
		return false;
	}
}

function validateForm(document) {
	document.getElementById("formtable").style.display="block";
	var termsstatus = document.getElementById("terms").checked;
	var password = document.registerform.password.value;
	var password2 = document.registerform.password2.value;
	var email = document.registerform.email.value;
	var msisdn = document.registerform.mobilephone_number.value;
	var username = document.registerform.username.value;
	var error = false;

	document.getElementById("username_star").style.color = "#000000";
	document.getElementById("password_star").style.color = "#000000";
	document.getElementById("password2_star").style.color = "#000000";
	document.getElementById("email_star").style.color = "#000000";
	document.getElementById("mobilephone_number_star").style.color = "#000000";
	
	document.getElementById("message").innerHTML = "";

	
	if (error == false && username == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}

	if (error == false && password == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}

	if (error == false && password2 == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}

	if (error == false && email == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}

	if (error == false && msisdn == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}
	
	if (error == false && checkUsername(username) == false) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("username_star").style.color = "#FF0000";
		document.getElementById("message").innerHTML = "Invalid username";
		error = true;
		return false;
	}
	
	if (error == false && checkEmail(email) == false) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("email_star").style.color = "#FF0000";
		document.getElementById("message").innerHTML = "Invalid email";
		error = true;
		return false;
	}
	
	if (error == false && password != password2) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("password_star").style.color = "#FF0000";
		document.getElementById("password2_star").style.color = "#FF0000";
		document.getElementById("message").innerHTML = "Password mismatch";
		error = true;
		return false;
	}

	if (error == false && checkMSISDN(msisdn) == false) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("mobilephone_number_star").style.color = "#FF0000";
		document.getElementById("message").innerHTML = "Invalid phone number";
		error = true;
		return false;
	}

	if (error == false && termsstatus == false) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("message").innerHTML = "Please, accept terms";
		error = true;
		return false;
	}

	if (error == false) {
		document.registerform.registerbutton.disabled = false;
		checkUsername(username, document);
	} else {
		document.registerform.registerbutton.disabled = true;
	}

	return true;
}

function validateUpdateForm(document) {
	var password_current = document.registerform.password_current.value;
	var password = document.registerform.password.value;
	var password2 = document.registerform.password2.value;
	var email = document.registerform.email.value;
	var msisdn = document.registerform.mobilephone_number.value;
	var error = false;

	document.getElementById("message").innerHTML = "";

	if(error == false && password_current == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}
	
	if (error == false && email == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}
	
	if (error == false && msisdn == "") {
		document.registerform.registerbutton.disabled = true;
		error = true;
		return false;
	}

	if (error == false && password != password2) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("message").innerHTML = "Password mismatch";
		error = true;
		return false;
	}
	
	if (error == false && checkEmail(email) == false) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("message").innerHTML = "Invalid email";
		error = true;
		return false;
	}
	
	if (error == false && checkMSISDN(msisdn) == false) {
		document.registerform.registerbutton.disabled = true;
		document.getElementById("message").innerHTML = "Invalid phone number";
		error = true;
		return false;
	}

	if (error == false) {
		document.registerform.registerbutton.disabled = false;
	} else {
		document.registerform.registerbutton.disabled = true;
	}

	return true;
}