﻿const eForm = document.querySelector('#eAcademeForm');

eForm.addEventListener("keypress", (event) => {
	//temp fix for compatibility with old validation functions
	if (['onlyAlpha','onlyAlphaNoSpace','onlyAlphaCapital','onlyAlphaCapitalNoSpace','onlyAlphaSmall','onlyAlphaSmallNoSpace','onlyAlphaNumeric','onlyAlphaNumericNoSChar','onlyAlphaForName','onlyAlphaForEMail','onlyAlphaNumWithSChar','onlyAlphaNumWithSCharForPwd','onlyNumericCSV','onlyNumericCSVRange','isNumber','isNumberSigned','isFloatNumber','isFloatSigned'].includes(event.target.className)) {
		if (!window[event.target.className](this, event)) { event.preventDefault(); }
	}
	let charVal = event.keyCode;
	if (!window[event.target.className](charVal)) { event.preventDefault(); }
	//above is shorthand to call following functions
	//	if (event.target.className === 'onlyAlpha') {
	//		if (!onlyAlpha(charVal)) { event.preventDefault(); }
	//		return;
	//	}
	//	if (event.target.className === 'onlyAlphaNoSpace') {
	//		if (!onlyAlphaNoSpace(charVal)) { event.preventDefault(); }
	//		return;
	//	}
});

function isNumber(n) {
	return n === 0 || (n >= 48 && n <= 57);
}

function isNumberSigned(n) {
	return isNumber(n) || n == 45;
}

function isFloatNumber(n) {
	return isNumber(n) || n == 46;
}

function isFloatSigned(n) {
	return isFloatNumber(n) || n == 45;
}

function onlyNumericCSV(n) {
	return isNumber(n) || n == 32 || n == 44;
}

function onlyNumericCSVRange(n) {
	return onlyNumericCSV(n) || n == 45 || n == 46;
}

function onlyAlphaCapitalNoSpace(n) {
	return n === 0 || n > 64 && n < 91;
}

function onlyAlphaCapital(n) {
	return onlyAlphaCapitalNoSpace(n) || n == 32;
}

function onlyAlphaSmallNoSpace(n) {
	return n === 0 || n > 96 && n < 123;
}

function onlyAlphaSmall(n) {
	return onlyAlphaSmallNoSpace(n) || n == 32;
}

function onlyAlphaNoSpace(n) {
	return onlyAlphaCapitalNoSpace(n) || onlyAlphaSmallNoSpace(n);
}

function onlyAlpha(n) {
	return onlyAlphaNoSpace(n) || n == 32;
}

function onlyAlphaNumeric(n) {
	return onlyAlpha(n) || isNumber(n) || n == 46 || n == 39;
}

function onlyAlphaNumericNoSChar(n) {
	return onlyAlphaCapitalNoSpace(n) || onlyAlphaSmallNoSpace(n) || isNumber(n);
}

function onlyAlphaForName(n) {
	return onlyAlpha(n);
}

function onlyAlphaForEMail(n) {
	return onlyAlphaNumericNoSChar(n) || n == 45 || n == 46 || n == 64 || n == 95;
}

function onlyAlphaNumWithSChar(n) {
	return onlyAlphaNoSpace(n) || n >= 32 && n <= 57;
}

function onlyAlphaNumWithSCharForPwd(n) {
	return onlyAlphaNoSpace(n) || n >= 35 && n <= 58 || n == 33 || n == 63;
}
