// Module reg_validate.js
// validation module for all registrations

window.onload = initPage;

// if var is false, field has error or not tested
var emailValid = false;
var firstNameValid = false;
var lastNameValid = false;
var password1Valid = false;
var password2Valid = false;
var screenNameValid = false;
var passHintValid = false;
var orgNameValid = false;
var orgEmailValid = false;
var orgNameValid = false;
var contactEmailValid = false;
var contactfirstNameValid = true;
var contactlastNameValid = true;
var webPageValid = false;
var ministryValid = false;
var countryValid = false;

var err_blank = "The Email field cannot be blank.";
var err_format = "The Email field has an invalid format.";
var reg_msg = "That Email already registered.";
var not_reg = "Contact must currently be registered."
var err_reg ="Please enter a valid email address.";				// registration error, set in checkEmail.js

var err_name = "That name blank or has an invalid format";
var err_orgName = "The Organization name field has an invalid format.";
var err_orgBlank = "The Organization name field cannot be blank.";
var err_orgReg = "The Organization must currently be registered.";

var err_pass = "The Password field is blank or has invalid format.";
var err_pass2 = "The Password field is blank or does not match.";
var hint_err ="The Hint can contain only letters or numbers.";
var err_web = "That web page description has an invalid format.";
var err_ministry = "Please select a ministry.";
var err_country = "Please select a country.";

var	required = "yes";
var	notRequired = "no";

function initPage() {
var pgmName = document.getElementById("pgmName").value;		// called from program name
//alert ("pgmName = " + pgmName);

// equivalent to assigning the "onblur" in the input field	HF, p57
// common field names

	document.getElementById("password1").onblur= checkPassword1;	// required
	document.getElementById("password2").onblur= checkPassword2;	// required
	document.getElementById("passhint").onblur= checkPasshint;		// not required
	document.getElementById("screenName").onblur= screenNameCheck;	// required

//  alert ("pgmName 1 = " + pgmName);
	switch (pgmName) {
		case "user" :
			document.getElementById("firstName").onblur= firstNameCheck;		// required
			document.getElementById("lastName").onblur= lastNameCheck;			// required
			document.getElementById("email").onblur= checkEmailReqd;	// required
//			document.getElementById("email").focus();				// set focus
			break;

		case "pastor" :
			document.getElementById("firstName").onblur= firstNameCheck;;		// required
			document.getElementById("lastName").onblur= lastNameCheck;			// required
			document.getElementById("email").onblur= checkEmailReqd;		// required
			document.getElementById("orgemail").onblur= checkOrgEmail;	// not required
			document.getElementById("orgname").onblur= checkOrgname;		// not required
			document.getElementById("email").focus();				// set focus
			break;

		case "missionary" :
			document.getElementById("firstName").onblur= firstNameCheck;;	// required
			document.getElementById("lastName").onblur= lastNameCheck;		// required
			document.getElementById("email").onblur= checkEmailReqd;		// required
			document.getElementById("webpage").onblur= checkWebPage;		// not required
			document.getElementById("min_type").onblur=  checkMinistry;		// required
			document.getElementById("ctry_n").onblur= checkCountry;			// required
			document.getElementById("orgemail").onblur= checkOrgEmail;		// not required
			document.getElementById("orgname").onblur= checkOrgname;		// not required
			document.getElementById("email").focus();						// set focus
			break;

		case "leadership" :
			document.getElementById("firstName").onblur= firstNameCheck;;	// required
			document.getElementById("lastName").onblur= lastNameCheck;		// required
			document.getElementById("email").onblur= checkEmailReqd;		// required
			document.getElementById("webpage").onblur= checkWebPage;		// not required
			document.getElementById("orgemail").onblur= checkOrgEmail;		// not required
			document.getElementById("orgname").onblur= checkOrgname;		// not required
// show initial message
//			document.getElementById("contactemail").className="valid";
			document.getElementById("orgemail_err").className="message";
			document.getElementById("orgemail_err").value = err_orgReg;

			break;

		case "organization" :
			document.getElementById("orgemail").onblur= checkOrgEmail;			// required
			document.getElementById("orgname").onblur= checkOrgname;			// required
			document.getElementById("contactemail").onblur= checkContactEmail;		// contact email, required
			document.getElementById("contactfirstName").onblur= contactFirstNameCheck;		// required
			document.getElementById("contactlastName").onblur= contactLastNameCheck;		// required
			document.getElementById("webpage").onblur= checkWebPage;			// not required
			document.getElementById("contactemail").focus();						// set focus
			break;
	}
}

// assure all fields valid before submission
function checkValid() {
var pgmName = document.getElementById("pgmName").value;		// called from program name
//alert ("check " + pgmName);
	if (pgmName != "organization") {		// check for non-organization vars
//alert ("email");
		if (!emailValid) {
			document.getElementById("email").className="invalid";
			document.getElementById("email_err").className="err";
			document.getElementById("email_err").value = err_reg;
			document.getElementById("email").focus();				// error, set focus
			return false;
		}

		if (!firstNameValid) {
			document.getElementById("firstName").className="ivvalid";
			document.getElementById("firstName_err").className="err";
			document.getElementById("firstName_err").value = err_name;
//			document.getElementById("firstName").focus();				// error, set focus
			return false;
		}

		if (!lastNameValid) {
			document.getElementById("lastName").className="invalid";
			document.getElementById("lastName_err").className="err";
			document.getElementById("lastName_err").value = err_name;
//			document.getElementById("lastName").focus();				// error, set focus
			return false;
		}

		if (!screenNameValid) {
			document.getElementById("screenName").className="invalid";
			document.getElementById("screenName_err").className="err";
			document.getElementById("screenName_err").value = err_name;
//			document.getElementById("lastName").focus();				// error, set focus
			return false;
		}
	} else {											// organization, check for org email (required)
// alert ("check contact email " + contactEmailValid);
		if (!contactEmailValid) {									// contact not already eregistered
			contactEmail = document.getElementById("contactemail").value;

			document.getElementById("contactemail").className="invalid";
			document.getElementById("contactemail_err").className="err";
			document.getElementById("contactemail_err").value = not_reg;
//				document.getElementById("contactemail").focus();				// error, set focus
// alert ("check contact email " + contactEmailValid);
			return false;
		} else {							// contact already eregistered
			contactfirstNameValid = true;
			contactlastNameValid = true;
		}

//alert ("org email");
		if (!orgEmailValid) {		// required
			document.getElementById("orgemail").className="invalid";
			document.getElementById("orgemail_err").className="err";
			document.getElementById("orgemail_err").value =err_reg;
//			document.getElementById("email").focus();				// error, set focus
			return false;
		}
	}

// checks for all types
//  alert ("pass 1 " + password1Valid);
	if (!password1Valid) {					// required
		document.getElementById("password1").className="invalid";
		document.getElementById("password1_err").className="err";
		document.getElementById("password1_err").value= err_pass;
//		document.getElementById("password1").focus();				// error, set focus
		return false;
	}

	if (!password2Valid) {					// required
//  alert ("pass 2 ");
		document.getElementById("password2").className="invalid";
		document.getElementById("password2_err").className="err";
		document.getElementById("password2_err").value= err_pass2;
//		document.getElementById("password2").focus();				// error, set focus
		return false;
	}


  if (!passHintValid) {		// not required
//alert ("pass hint ");
		passhint = document.getElementById("passhint").value;
		if (isEmpty(passhint)) {
			passHintValid = true;
		} else {
			document.getElementById("passhint").className="invalid";
			document.getElementById("passhint_err").className="err";
			document.getElementById("passhint_err").value=hint_err;
//			document.getElementById("passhint").focus();				// error, set focus
			return false;
		}
	}

	if (pgmName == "missionary") {			// Ministry type, required
//  alert ("missionary ");
		if (!ministryValid) {
			minType = document.getElementById("min_type").value;
			if (isEmpty(minType)) {
// alert ("min type empty");
				document.getElementById("min_type").className="invalid";
				document.getElementById("min_type_err").className="err";
				document.getElementById("min_type_err").value =err_ministry;
				ministryValid = false;
				return false;
			}
		}

		if (!countryValid) {			// country, required
			country = document.getElementById("ctry_n").value;
			if (isEmpty(country)) {
// alert ("country empty");
				document.getElementById("ctry_n").className="invalid";
				document.getElementById("ctry_n_err").className="err";
				document.getElementById("ctry_n_err").value =err_country;
				countryValid = false;
				return false;
//  alert ("country a "+rtn);
			}
		}
	}
//  alert ("missionary a ");

	if (pgmName == "organization" || pgmName == "missionary") {		// web page, not required
//  alert ("pgm org");
		if (!webPageValid) {				// check for valid
			webPage = document.getElementById("webpage").value;
//alert ("check WebPage");
			if (isEmpty(webPage)) {				// web page not required
				webPageValid = true;
			} else {
//  alert ("web " +webPageValid);
				document.getElementById("webpage").className="invalid";
				document.getElementById("webpage_err").className="err";
				document.getElementById("webpage_err").value=err_web;
//				document.getElementById("webpage").focus();				// error, set focus
				return false;
			}
		}
	}

//  alert ("orgNameValid" + orgNameValid);

	if (pgmName != "organization" ) {							// not an organization
		orgname = document.getElementById("orgname").value;		// not required
		if (isEmpty(orgname)) {
			orgNameValid = true;
		} else {
//  alert ("orgNameValid a /" + orgNameValid);
			if (!isOrgName(orgname)) {
				document.getElementById("orgname").className="invalid";
				document.getElementById("orgname_err").className="err";
				document.getElementById("orgname_err").value=err_orgName;
//				document.getElementById("orgname").focus();				// error, set focus
				return false;
			} else {
				orgNameValid = true;
			}
		}
	}

// check organization contact info


//alert ("no error");
//return false;


// no errors - disable submission button
	document.getElementById("register").className="disabled";
	document.getElementById("register").disabled= true;
	document.getElementById("register").value="Processing";
	return true;
}
