Вариантов куча. Разница в том, в каком месте пользователь твоего скрипта должен что-то дописывать сам. Идея в том - и в этом смысл универсального скрипта, - что пользователь не должен править твою функцию вообще. Править, что-то дописывать в checkform.js в этом смысле вообще нельзя. Например, улучшенный вариант и его использование могло бы быть что-то типа такого (вызов функции):
checkForm(form, {
username: {
check: 'required length',
min: 4
},
email: 'required email',
site: 'required url',
phone: {
check: 'regexp',
pattern: '^\(\d{3}\) \d{4}-\d{3}$'
}
})
и тд.. Конечно, кода будет больше, но зато можно использовать повторно. Или правила проверки можно привязывать к элементам формы в атрибутах.