var unsubscribeRetries = 0;

var unsubscribeMessages = new Array(3);
unsubscribeMessages[0] = new Array(2);
unsubscribeMessages[0]["ro"] = "Sunte\u0163i sigur c\u0103 vre\u0163i s\u0103 v\u0103 dezabona\u0163i?";
unsubscribeMessages[0]["en"] = "Are you sure that you want to unsubscribe ?";

unsubscribeMessages[1] = new Array(2);
unsubscribeMessages[1]["ro"] = "Sunte\u0163i destul de sigur c\u0103 vre\u0163i s\u0103 v\u0103 dezabona\u0163i?";
unsubscribeMessages[1]["en"] = "Are you really sure that you want to unsubscribe ?";

unsubscribeMessages[2] = new Array(2);
unsubscribeMessages[2]["ro"] = "Sunte\u0163i foarte sigur c\u0103 vre\u0163i s\u0103 v\u0103 dezabona\u0163i?";
unsubscribeMessages[2]["en"] = "Are you completely sure that you want to unsubscribe ?";

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 (city == "") {
		if (notFilledError == null) {
			if (lang == "en") {
				notFilledError = "Please fill in the mandatory fields: City";
			} else {
				notFilledError = "V\u0103 rug\u0103m s\u0103 introduce\u0163i c\u00e2mpul(urile) obligatorii: Localitate";
			}
		} else {
			if (lang == "en") {
				notFilledError += ", City";
			} else {
				notFilledError += ", Localitate";
			}
		}		
	}
	
	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;
	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 ();
	clearError ();
	
	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 ();
	clearMessage ();
	document.getElementById("errorDiv").appendChild(document.createTextNode(message));
}

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

function unsubscribeToNewsletter(lang) {
	var theForm = document.getElementById ("newsletterUnsubscribeForm");
	var email = theForm.elements["newsletterEmail"].value;
	
	if (email == "") {
		if (lang == "ro") {
			showError ("V\u0103 rug\u0103m s\u0103 introduce\u0163i c\u00e2mpul(urile) obligatorii: Email");
		} else {
			showError ("Please fill in the mandatory fields: Email");
		}
		
		unsubscribeRetries = 0;		
		return;
	}
	
	if (!isEmail(email)) {
		if (lang == "en") {
			showError ("Invalid email format: " + email);
		} else {
			showError ("Email invalid: " + email);
		}
		
		unsubscribeRetries = 0;		
		return;
	}
	
	if (unsubscribeRetries <= 2) {
		showMessage (unsubscribeMessages[unsubscribeRetries][lang]);
		unsubscribeRetries ++;
		return;
	}
	
	document.getElementById ("newsletterFormSubmit").style.display = "none";
	document.getElementById ("newsletterLoadingDiv").style.display = "block";
	
	var query = "newsletterEmail=" + email;
	
	var ajaxTransaction = new AjaxTransaction (theForm.action, query, function (response) {
		unregisterResponse (response, lang);
	});
	if (ajaxTransaction.initOk()) {
		ajaxTransaction.doPost();
	}
}

function unregisterResponse (response, lang) {
	clearError ();
	clearMessage();
	
	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 {
			document.getElementById ("newsletterUnsubscribeForm").reset();
			if (lang == "en") {
				showMessage("Unregister successful. Thank you!");
			} else {
				showMessage("Dezabonare reu\u015fit\u0103. V\u0103 mul\u0163umim!");
			}
		}
	}
}
