const MINIMUM_PHONE_NUMBER_LENGTH = 9; const PHONE_OK = 0; const PHONE_ERROR_EMPTY_PHONE = 1; const PHONE_ERROR_INVALID_CHARS = 2; const PHONE_ERROR_PHONE_SHORT_LENGTH = 3; const PHONE_ERROR_PHONE_IS_FICTIVE = 4; function IsPhoneTextNumber(str) { var result = (str != null); result = result && (str.length != 0); result = result && (str.match(/[0-9]/i)); return result; } function GetFixedPhoneNumber(phone_number) { var result = ""; if (phone_number) { for (var i = 0; i < phone_number.length; i++) { if (IsPhoneTextNumber(phone_number.charAt(i))) { result += phone_number.charAt(i); } } } return result; } function CheckPhoneEmpty(phone_number) { var result = (phone_number != null); if (result) { phone_number = phone_number.trim(); result = result && (phone_number.length > 0); } return result; } function CheckPhoneChars(phone_number) { if (phone_number) { var phone_regex = /^[0-9\+\-\ \(\)]+$/; if (phone_regex.test(phone_number)) { return true; } } return false; } function CheckPhoneLength(phone_number) { phone_number = GetFixedPhoneNumber(phone_number); if (phone_number) { return (phone_number.length >= MINIMUM_PHONE_NUMBER_LENGTH); } return false; } function IsStringFilledWithDigit(phone, digit) { phone = phone.split(digit).join(''); return (phone.length == 0); } function IsPhoneFilledBySingleDigit(phone) { for (var i = 0; i <= 9; i++) { if (IsStringFilledWithDigit(phone, i)) return true; } return false; } function CheckFictivePhoneNumber(phone) { phone = GetFixedPhoneNumber(phone); var result = (!IsPhoneFilledBySingleDigit(phone)); return result; } function ValidatePhoneNumber(phone_number) { if (!CheckPhoneEmpty(phone_number)) return PHONE_ERROR_EMPTY_PHONE; if (!CheckPhoneChars(phone_number)) return PHONE_ERROR_INVALID_CHARS; if (!CheckPhoneLength(phone_number)) return PHONE_ERROR_PHONE_SHORT_LENGTH; if (!CheckFictivePhoneNumber(phone_number)) return PHONE_ERROR_PHONE_IS_FICTIVE; return PHONE_OK; } function PhoneValidationStatusToDescription(status) { switch (status) { case PHONE_OK: return "OK"; case PHONE_ERROR_EMPTY_PHONE: return "Номер телефона не может быть пустым"; case PHONE_ERROR_INVALID_CHARS: return "Номер телефона содержит некорректные символы"; case PHONE_ERROR_PHONE_IS_FICTIVE: return "Номер телефона не может состоять из одной цифры"; case PHONE_ERROR_PHONE_SHORT_LENGTH: return "Слишком короткий номер телефона"; } return "Неизвестная ошибка"; } function IsValidPhoneNumber(phone_number) { var phone_validate_result = ValidatePhoneNumber(phone_number); return (phone_validate_result == PHONE_OK); }