var xmlhttp;
var pageId;
var id;

function GetXmlHttpObject() {
	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		return new XMLHttpRequest();
	}
	if (window.ActiveXObject) {
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

function getLinks(str) {
	xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null) {
		alert ("Browser does not support HTTP Request");
		return;
	}
	var pageId = document.getElementById('pageId');
	var id = pageId.getAttribute('rel');
	var url="ajxGetLinks.php";
	url=url+"?id="+id;
	url=url+"&sid="+Math.random();
	xmlhttp.onreadystatechange=stateChanged;
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
}

function stateChanged() {
	if (xmlhttp.readyState==4) {
		if (xmlhttp.responseText != '') {
			//document.getElementById("pageId").innerHTML = xmlhttp.responseText;
			var pi = document.getElementById("pageId");
			//var ta = document.createTextNode(a);
			var a = document.createElement('a');
			a.innerHTML = xmlhttp.responseText;
			pi.appendChild(a);

		} else {
			document.getElementById("pageId").innerHTML = id;
		}
	}
}

function emailStatus(email)
{
xmlhttp2=GetXmlHttpObject();
if (xmlhttp2==null)
  {
  alert ("Browser does not support HTTP Request");
  return;
  }
var url="cemail.php"; //Checks if email already exists
url=url+"?email="+email;
url=url+"&sid="+Math.random();
xmlhttp2.open("GET",url,true);
xmlhttp2.onreadystatechange=stateChangedEmail;

xmlhttp2.send(null);
}

function stateChangedEmail()
{
if (xmlhttp2.readyState==4)
{
	if (xmlhttp2.responseText == '1') { // If the email already exists
		document.getElementById("errorMesEmail").innerHTML = "Email already exists. Please choose another email.";
		eStatus = '';
	} else {
		eStatus = 1;
	}
}
}

function checkWholeForm(theForm) {
    var why = "";
   /* why += checkEmail(theForm.email.value);
    why += checkPhone(theForm.phone.value);*/

	with(theForm) {
		/*why += checkPassword(pass.value);*/
		cUser = checkUsername(username.value);
		//cDupUser = checkDupUsername(username.value);

		cPass = checkPassword2(pass.value);
		cMatchPass = matchPass(pass.value, pass2.value);
		cEmail = checkEmail(email.value);
		cEmailRegex = checkEmailRegex(email.value);
		userStatus(username.value);
		emailStatus(email.value);

		/*var errorMesUser = document.getElementById("errorMesUsername").innerHTML;
		if(errorMesUser == "Username already exists. Please choose another username.") {
			return false;
		}*/
		//why += checkEmailRegex(email.value);

		if (cUser == "" || cPass == "" || cMatchPass == "" || cEmail == "" || cEmailRegex == "" || uStatus == "" || eStatus == "" || cDupUser == "") {
			return false;
		}
	}
return true;
}

function checkUsername (usernameVal) {
 this.errorMes = document.getElementById('errorMesUsername'); // dom to display error message

 var error = "";
 if (usernameVal == "") {
    error = "You didn't enter a username.\n";
 	this.errorMes.innerHTML = error;
 	return false;
 } else if (this.errorMes.innerHTML != "") { // if all the other checks pass then check if there is an error message and if so do not display the error message because it is from a previous error message
 	this.errorMes.innerHTML = "";
 	return true;
 } else {
 	return true;
 }
}

function checkDupUsername (usernameVal) {
	xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null) {
		alert ("Browser does not support HTTP Request");
		return;
	}
	var url="checkDupUsername.php"; //check for duplicate username
	url=url+"?usernameVal="+usernameVal;
	url=url+"&sid="+Math.random();
	xmlhttp.open("GET",url,true);
	xmlhttp.onreadystatechange=stateChangedcheckDupUsername;

	xmlhttp.send(null);
}

function stateChangedcheckDupUsername() {
	if (xmlhttp.readyState==4) {
		if (xmlhttp.responseText == 1) {
			document.getElementById("errorMesUsername").innerHTML = 'Username already exists in the database. Please use another name.';
			return false;
		} else if (xmlhttp.responseText == 2) {
			//document.getElementById("errorMesUsername").innerHTML = 'Username already exists in the database. Please use another name.';
			return true;
		}
	}
}

function checkPassword2 (passVal) {
this.errorMes = document.getElementById('errorMesPass'); // dom to display error message


//this.illegalChars = "/[\W]/"; // allow only letters and numbers

	if (passVal == "") { // check for empty password field
		error = "You didn't enter a password.\n";
		this.errorMes.innerHTML = error;
		return false;
	} else if (passVal.length < 6) { // checks if password is less than number of characters
		error = "Password is less than 6 characters.\n";
		this.errorMes.innerHTML = error;
		return false;
	} else if (this.errorMes.innerHTML != "") { // if all the other checks pass then check if there is an error message and if so do not display the error message
	 	this.errorMes.innerHTML = "";
	 	return true;
	} else {
		return true;
	}
}

function matchPass(passVal, pass2Val) {
this.errorMes = document.getElementById('errorMesPass2'); // dom to display error message

	if (passVal != pass2Val) {
		error2 = "Passwords do not match.\n";
		this.errorMes.innerHTML = error2;
		return false;
	} else if (this.errorMes.innerHTML != "") { // if all the other checks pass then check if there is an error message and if so do not display the error message
	 	this.errorMes.innerHTML = "";
	 	return true;
	} else {
		return true;
	}
}

function checkEmail(emailVal) {
 this.errorMes = document.getElementById('errorMesEmail'); // dom to display error message
 //this.emailRegex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{1,})*\.([a-z]{2,}){1}$";
 //this.emailRegex = "^[_+a-z0-9-]+@[a-z0-9-]+\.([a-z]{2,}){1}$";
 var emailRegex = "/[\W]/";

 var error = "";
 if (emailVal == "") {
    error = "You didn't enter an email address.\n";
 	this.errorMes.innerHTML = error;
 	return false;
 } else if (this.errorMes.innerHTML != "") { // if all the other checks pass then check if there is an error message and if so do not display the error message
 	this.errorMes.innerHTML = "";
 	return true;
 } else {
 	return true;
 }
}

function checkEmailRegex(emailVal) {
this.errorMes = document.getElementById('errorMesEmail'); // dom to display error message
var emailRegex = /[_+a-zA-Z0-9-]+(\.[_+a-zA-Z0-9-])*@[_+a-zA-Z0-9-]+(\.([a-zA-Z]{2,}))+/i;

	if (emailRegex.test(emailVal) != true) {
 	error = "The email you entered does not look like a valid email address.";
 	this.errorMes.innerHTML = error;
 	return false;
 	} else {
 		return true;
 	}
}

function checkPassword (strng) {
 var error = "";
 if (strng == "") {
    error = "You didn't enter a password.\n";
    return error;
 }
    var illegalChars = /\W/; // allow only letters and numbers
    if ((strng.length < 6) || (strng.length > 8)) {
       error = "The password is the wrong length.\n";
       return error;
    }
    else if (illegalChars.test(strng)==true) {
      error = "The password contains illegal characters.\n";
      return error
    }
}

function addElement() {
  var ni = document.getElementById('myDiv');
  var numi = document.getElementById('theValue');
  var num = (document.getElementById('theValue').value -1)+ 2;
  numi.value = num;
  var newdiv = document.createElement('div');
  var divIdName = 'my'+num+'Div';
  newdiv.setAttribute('id',divIdName);
  newdiv.innerHTML = 'Element Number '+num+' has been added! <a href=\'#\' onclick=\'removeElement('+divIdName+')\'>Remove the div "'+divIdName+'"</a>';
  ni.appendChild(newdiv);
}

function removeElement(parId,errorMesId) {
  var d = document.getElementById(parId);
  var olddiv = document.getElementById(errorMesId);
  d.removeChild(olddiv);
}