	function ValidateEmail(sEmail) {
		var iAtIndex = sEmail.indexOf('@');
		if (iAtIndex < 0) {
			return false
		}
		var sLocalPart = sEmail.substring(0, iAtIndex);
		var sDomainPart = sEmail.substring(iAtIndex + 1, sEmail.length);

		return (IsLocalPart(sLocalPart) & IsDomainPart(sDomainPart))
	}

	function IsLocalPart(sLocalPart) {
		var iPerIndex = sLocalPart.indexOf('.');
		var sWord;
		var bFailure;
		bFailure = false;
		while (iPerIndex >= 0) {
			if (iPerIndex < 0) {
				return false
			}
			sWord = sLocalPart.substring(0, iPerIndex);
			sLocalPart = sLocalPart.substring(iPerIndex + 1, sLocalPart.length);
			bFailure = !IsWord(sWord);
			iPerIndex = sLocalPart.indexOf('.')
		}
		if (!bFailure) {
			bFailure = !IsWord(sLocalPart);
		}
		return !bFailure
	}

	function IsDomainPart(sDomainPart) {
		var iPerIndex = sDomainPart.indexOf('.');

		if (iPerIndex < 0) {
			return false
		}
		return IsLocalPart(sDomainPart)
	}

	var sAllowedChars = 'abcdefghijklmnopqrstuvwxyz0123456789-_';

	function IsWord(sWord) {
		if (sWord == '') {
			return false
		}
		sWord = sWord.toLowerCase();
		var iCounter = 0;
		var iCharIndex;
		while (iCounter < sWord.length) {
			iCharIndex = sAllowedChars.indexOf(sWord.charAt(iCounter));
			if (iCharIndex < 0) {
				return false
			}
			iCounter = iCounter + 1
		}
		return true
	}
	