// JavaScript Document

function OnCheckReminder() {
	if(window.XMLHttpRequest) {
		oRequest = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		oRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	url = "include/check-reminder.asp?sEmail=" + document.getElementById("sEmail").value + "&irnd=" + Math.floor(Math.random()*10001)
	oRequest.open("POST", url, true);
	oRequest.onreadystatechange = UpdateCheckReminder;
	oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oRequest.send("sEmail=" + document.getElementById("sEmail").value + "&irnd=" + Math.floor(Math.random()*10001));
}

function UpdateCheckReminder() {
	if(oRequest.readyState == 4) {
		if(oRequest.status == 200) {
			document.getElementById("forgot_errors").innerHTML = oRequest.responseText;
		} else {
			document.getElementById("forgot_errors").innerHTML = "<br />Asynchronous Error";
		}
		x = verify()
		if(document.getElementById("forgot_errors").innerHTML.length == 0) {
			document.frmReminder.submit();
		}
	}
}

function verify() {
	var themessage = "You are required to complete the following fields:<ul>";
	if (document.frmReminder.sEmail.value=="") {
		themessage = themessage + "<li>E-mail Address</li>";
		document.frmReminder.sEmail.style.backgroundColor = "#FF7D7D";
	} else if(checkValidEmail(document.frmReminder.sEmail)) {
		themessage = themessage + "<li>E-mail Address (currently invalid)</li>";
		document.frmReminder.sEmail.style.backgroundColor = "#FF7D7D";
	}
	if (themessage != "You are required to complete the following fields:<ul>") {
		document.getElementById("forgot_errors").innerHTML = themessage + "</ul>";
		return false;
	}
}

function checkValidEmail(sEmail) {

	if (typeof(sEmail) != "object") {
		alert("Validation not supported on this browser.");
		return(false);
	}
	
	var message;
	
	if (stringEmpty(sEmail.value)) {
		message = "Error! There is no input value entered.";
		return(true);
	} else if (noAtSign( sEmail.value )) {
		message = "Error! The address \"" + sEmail.value + "\" does not contain an '@' character.";
		return(true);
	} else if (nothingBeforeAt(sEmail.value)) {
		message = "Error! The address \"" + sEmail.value;
		message += "\" must contain at least one character before the '@' character";
		return(true);
	} else if (noLeftBracket(sEmail.value)) {
		message = "Error! The address \"" + sEmail.value;
		message += "\" contains a right square bracket ']',\nbut no corresponding left square bracket '['.";
		return(true);
	} else if (noRightBracket(sEmail.value)) {
		message = "Error! The address \"" + sEmail.value;
		message += "\" contains a left square bracket '[',\nbut no corresponding right square bracket ']'.";
		return(true);
	} else if (noValidPeriod(sEmail.value)) {
		message = "Error! The address \"" + sEmail.value + "\" must contain a period ('.') character.";
		return(true);
	} else if (noValidSuffix(sEmail.value)) {
		message = "Error! The address \"" + sEmail.value;
		message += "\" must contain a two, three or four character suffix.";
		return(true);
	} else {
		message = "Success! The email address \"" + sEmail.value + "\" validates OK.";
		return(false);
	}

	var objType = typeof(sEmail.focus);
	if (objType == "object" || objType == "function") {
		sEmail.focus();
	}
}
	
function checkValid (formField) {
	if ( checkValidation ( formField ) == true ) {
	}
	return ( false );
}
	
function stringEmpty (formField) {
	if ( formField.length < 1 ) {
		return ( true );
	} else {
		return ( false );
	}
}
	
function noAtSign (formField) {
	// CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
	if (formField.indexOf ('@', 0) == -1) {
		return ( true )
	} else {
		return ( false );
	}
}
	
function nothingBeforeAt (formField) {
	// CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
	if ( formField.indexOf ( '@', 0 ) < 1 ) {
		return ( true )
	} else {
		return ( false );
	}
}
	
function noLeftBracket (formField) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
	if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
		return ( true )
	} else {
		return ( false );
	}
}
	
function noRightBracket (formField) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
	if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
		return ( true );
	} else {
		return ( false );
	}
}
	
function noValidPeriod (formField) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
	if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
	return ( false );
	
	// CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
	if (formField.indexOf ( '.', 0 ) == -1)
	return ( true );
	
	return ( false );
}
	
function noValidSuffix(formField) {
	// IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
	if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
		return ( false );
	}
	
	// CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
	var len = formField.length;
	var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
	if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
		return ( true );
	} else {
		return ( false );
	}
}