class SignUp {	
	constructor(email, password, fname, lname, gender, city, country) {
		this.email = email;
		this.password = password;
		this.firstname = fname;
		this.familyname = lname;
		this.gender = gender;
		this.city = city;
		this.country = country;
	}
}

displayView = function() {
	// the code required to display a view
};
window.onload = function() {
	// code that is executed as the page is loaded.
	// You shall put your own custom code here.
	// window alert() is not allowed to be used in your implementation.
	//window.alert("Hello TDDD97!");
	if (localStorage.getItem("logintoken") != null) {
		loadProfileView();
	} else {
		loadWelcomeView();
	}
};

loadWelcomeView = function() {

	document.getElementById("pagecontent").innerHTML = document.getElementById("welcomeview").innerText;
	var loginform = document.forms["loginform"];
	var signupform = document.forms["signupform"];
	signupform.addEventListener("submit", function(event) {
		event.preventDefault();
		if(inputValidation("signupform")) {
			var signupObject = new SignUp(signupform["email"].value,
									signupform["password"].value,
									signupform["fname"].value,
									signupform["lname"].value,
									signupform["gender"].value,
									signupform["city"].value,
									signupform["country"].value);
			var message = serverstub.signUp(signupObject);
			console.log(message);
			if (!message.success) {
				signupform["email"].value = "";
				signupform["email"].setAttribute("placeholder", message.message);
			} else {
				document.getElementById("pagecontent").innerHTML = "";
				document.getElementById("pagecontent").innerText = "";
				document.getElementById("pagecontent").innerHTML = document.getElementById("profileview").innerText;
				localStorage.setItem("logintoken", message.data);
				console.log(message.data);
			}
		}
	})
		
			
	loginform.addEventListener("submit", function(event) {
		event.preventDefault();
		if (inputValidation("loginform")) {
			var message = serverstub.signIn(loginform["email"].value, loginform["password"].value);
			console.log(message);
			if(!message.success) {
				loginform["email"].value = "";
				loginform["password"].value = "";
				loginform["email"].setAttribute("placeholder", message.message);
			} else {
				document.getElementById("pagecontent").innerHTML = "";
				document.getElementById("pagecontent").innerText = "";
				document.getElementById("pagecontent").innerHTML = document.getElementById("profileview").innerText;
				localStorage.setItem("logintoken", message.data);
				console.log(message.data);
			}
		}
	})

}

loadProfileView = function() {
		console.log("cookie loaded");
		console.log(localStorage.getItem("logintoken"));
		document.getElementById("pagecontent").innerHTML = document.getElementById("profileview").innerText;
}

inputValidation = function(formID) {
	var form = document.forms[formID];	
	let allInputs = form.querySelectorAll("input");
	var valid = true;
	allInputs.forEach(function(elem) {
		if(elem.type === "text" && elem.value === "") {
			elem.setAttribute("placeholder", "Don't leave blank");
			valid = false;
		} })
	if (!validateEmail(form)) {
		valid = false;
	}
	valid = validatePassword(form, formID); 
	return valid;
}

function validateEmail(form) {
  var validRegex = /\w+@\w+\.\w+/
  var email = form["email"];
  if (!email.value.match(validRegex)) {
	email.value = "";
    email.setAttribute("placeholder", "Invalid email");
    return false;
  } 
  return true;
}

function validatePassword(form, formID) {
	if(formID == "signupform" && form["password"].value != form["password2"].value) {
		form["password"].value = "";
		form["password2"].value = "";
		form["password"].setAttribute("placeholder", "Passwords must match");
		form["password2"].setAttribute("placeholder", "Passwords must match");	
		return false;	
	}
	if(formID == "signupform" && form["password"].value.length < 8) {
		form["password"].value = "";
		form["password2"].value = "";
		form["password"].setAttribute("placeholder", "Password must be 8 characters or longer");
		return false;
	}
	if(formID == "loginform" && form["password"].value.length < 8) {
		form["password"].value = "";
		form["password"].setAttribute("placeholder", "Wrong password");
		return false;
	}
	return true;
}