function submitNewsletter(lang) {
	clearError ();
	clearMessage ();
	
	var theForm = document.getElementById ("newsletterAddForm");
	
	var prenume = theForm.elements["newsletterFstName"].value;
	var nume = theForm.elements["newsletterLstName"].value;
	var email = theForm.elements["newsletterEmail"].value;
	var city = theForm.elements["newsletterCity"].value;
	
	var notFilledError = null;
	
	if (prenume == "") {
		if (lang == "en") {
			notFilledError = "Please fill in the mandatory fields: First Name";
		} else {
			notFilledError = "V\u0103 rug\u0103m s\u0103 introduce\u0163i c\u00e2mpul(urile) obligatorii: Prenume";
		}
	}
	
	if (nume == "") {
		if (notFilledError == null) {
			if (lang == "en") {
				notFilledError = "Please fill in the mandatory fields: Last Name";
			} else {
				notFilledError = "V\u0103 rug\u0103m s\u0103 introduce\u0163i c\u00e2mpul(urile) obligatorii: Nume";
			}
		} else {
			if (lang == "en") {
				notFilledError += ", Last Name";
			} else {
				notFilledError += ", Nume";
			}
		}		
	}
	
	if (email == "") {
		if (notFilledError == null) {
			if (lang == "en") {
				notFilledError = "Please fill in the mandatory fields: Email";
			} else {
				notFilledError = "V\u0103 rug\u0103m s\u0103 introduce\u0163i c\u00e2mpul(urile) obligatorii: Email";
			}
		} else {
			if (lang == "en") {
				notFilledError += ", Email";
			} else {
				notFilledError += ", Email";
			}
		}		
	}
	
	if (notFilledError != null) {
		showError(notFilledError);
		return;
	}
	
	if (!isEmail(email)) {
		if (lang == "en") {
			showError ("Invalid email format: " + email);
		} else {
			showError ("Email invalid: " + email);
		}
		return;
	}
	
	document.getElementById ("newsletterFormSubmit").style.display = "none";
	document.getElementById ("newsletterLoadingDiv").style.display = "block";
	
	var query = "newsletterFstName=" + prenume + "&newsletterLstName=" + nume + "&newsletterEmail=" + email;
	
	if (city != "") {
		query += "&newsletterCity=" + city;
	}
	
	var ajaxTransaction = new AjaxTransaction (theForm.action, query, function (response) {
		registerResponse (response, lang);
	});
	if (ajaxTransaction.initOk()) {
		ajaxTransaction.doPost();
	}
}

function registerResponse (response, lang) {
	clearError ();
	
	document.getElementById ("newsletterLoadingDiv").style.display = "none";
	document.getElementById ("newsletterFormSubmit").style.display = "block";
	
	if (response.getElementsByTagName("status").length < 1) {
		if (lang == "en") {
			showError("A server error has occured; Please try again or contact us at info@mokushozen.ro");
		} else {
			showError("A intervenit o eroare \u00cen procesul de \u00cenregistrare; v\u0103 rug\u0103m s\u0103 \u00eencerca\u0163i din nou sau s\u0103 ne contacta\u0163i pe la info@mokushozen.ro");
		}
		return;
	} else {
		var resultStatus = parseInt(response.getElementsByTagName("status")[0].firstChild.nodeValue);
		
		if (resultStatus == NaN || resultStatus == -2) {
			if (lang == "en") {
				showError("A server error has occured; Please try again or contact us at info@mokushozen.ro");
			} else {
				showError("A intervenit o eroare \u00cen procesul de \u00cenregistrare; v\u0103 rug\u0103m s\u0103 \u00eencerca\u0163i din nou sau s\u0103 ne contacta\u0163i pe la info@mokushozen.ro");
			}
		} else {
			if (resultStatus == -1) {
				if (lang == "en") {
					showError("This email address is already registered to our newsletter");
				} else {
					showError("Adresa introdus\u0103 este deja abonat\u0103 la newsletter");
				}
			} else {
				document.getElementById ("newsletterAddForm").reset();
				if (lang == "en") {
					showMessage("Thank you for registering!");
				} else {
					showMessage("\u00censcriere reu\u015fit\u0103. V\u0103 mul\u0163umim!");
				}
			}
		}
	}
}

function formReset () {
	document.getElementById('newsletterAddForm').reset();
	clearError ();
	clearMessage ();
}

function isEmail (value) {
	var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
	var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
	var reg1 = new RegExp(reg1str);
	var reg2 = new RegExp(reg2str);
	
	if (reg1.test(value) || !reg2.test(value)) {	     	
		return false;
	}
	
	return true;
}

function showMessage (message) {
	clearMessage ();
	
	var element = document.getElementById("messageDiv");
	
	if (element != null) {
		element.appendChild(document.createTextNode(message));
	}
}

function clearMessage () {
	var element = document.getElementById("messageDiv");
	
	if (element != null) {
		while (element.hasChildNodes()) {
			element.removeChild(element.firstChild);
		}
	}
}

function showError (message) {
	clearError ();
	document.getElementById("errorDiv").appendChild(document.createTextNode(message));
}

function clearError () {
	var element = document.getElementById("errorDiv");
	
	if (element != null) {
		while (element.hasChildNodes()) {
			element.removeChild(element.firstChild);
		}
	}
}