//Check form values
function check_form(form)
{
	var firstname = form.firstname.value;
	var lastname = form.lastname.value;
	var email = form.email.value;
	var username = form.username.value;
	var password1 = form.password1.value;
	var password2 = form.password2.value;

	if (!checkName(firstname)) {
		alert("That name is not valid.\r\nPlease write your name");
	    return false;
	} else if (!checkName(lastname)) {
		alert("That last name is not valid.\r\nPlease write your last name");
	    return false;
	} else if (!checkEmail(form)) {
		return false;
	} else if (!checkUsername(username)) {
		alert("The Username needs to be longer than 3 characters and can not contain spaces.\r\nPlease choose another username");
		return false;
	} else if (!checkPassword(password1, password2)) {
		form.password1.value="";
		form.password2.value="";
		alert("The passwords you typed did not match each other or they are shorter than 6 characters\r\nPlease type them again");
		return false;
	}
	else {
		//Submit Form
		return true;
	}
}

function checkEmail(form) {
	var email = form.email.value;
	if (!isEmail(email)) {
		alert("Please provide a valid email");
		return false;
	}
	return true;
}

function checkUsername(userName) {
	if (userName.length<3 || hasSpaces(userName)) {
    	return false;
  	} else {
    	return true;
	}
}

function checkPassword(password1, password2) {
	if (password1 != password2 || password1.length<6) {
		return false;
	} else {
		return true;
	}
}

function checkName(name) {
  if (name.length<3) {
    return false;
  } else if (!isAlphabetic(name)) {
    return false;
  } else {
    return true;
  }
}

function isAlphabetic(s){
  var i;
  for (i=0;i<s.length;i++) {
    var c=s.charAt(i);
    if (!isLetter(c)) {
        return false;
	}
  }
  // All are letters
  return true;
}

function isLetter(c) {
  return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) || (c==" ") || (c=="'") || (c=="-"));
}

function checkNum(num) {
  if (num.length<2)
    return false;
  else if (!isNumber(num))
    return false;
  else
    return true;
}

function isNumber(s) {
  var i;
  for (i=0;i<s.length;i++) {
	var c=s.charAt(i);
    if (!isDigit(c))
	  return false;
  }
  // All are digits
  return true;
}

function isDigit(c) {
  return ( ((c >= "0") && (c <= "9")) || (c=="-") || (c=="(") || (c==")") || (c=="[") || (c=="]") || (c==" ") );
}

function isEmpty(s) {
  return ((s == null) || (s.length == 0));
}

function isEmail(s) {
	var email = trim(s);
	var emailReg = "^[\\w]+([_\\.-][\\w]+)*@([\\w]+([\.-][\\w]+)*)+\\.[a-z]{2,}$";
    var regex = new RegExp(emailReg);
    return regex.test(email);
}

function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

function hasSpaces(str)
{
	var regex = new RegExp("\\s+");
	return regex.test(str);
}
