
String.prototype.trim = function() {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

var INVALID_PHONE_REASONS = {
	valid: true,
	too_short: 1,
	too_long: 2,
	bad_chars: 3
};

function isValidPhoneNumber(phone) {
	var phoneNumberDelimiters = ['(', ')', '-', 'x', '+', ' '];

	var newPhone = '';
	var justNums = '';
	for (var i=0; i < phone.length; i++) {
		var containsDelimiterChar = false;

		for (var j=0; j < phoneNumberDelimiters.length; j++) {
			if (phone.charAt(i) == phoneNumberDelimiters[j]) {
				containsDelimiterChar = true;
			}
		}

		if (!containsDelimiterChar) {
			newPhone += phone.charAt(i);

			if (isNumeric(phone.charAt(i))) {
				justNums += phone.charAt(i);
			}
		}
	}

	if (newPhone.length < 7) {
		return INVALID_PHONE_REASONS.too_short;
	}

	var same = (newPhone == justNums);

	if (same) {
		return INVALID_PHONE_REASONS.valid;
	} else {
		return INVALID_PHONE_REASONS.bad_chars;
	}
}

function isNumeric(str) {
	var num = parseInt(str);

	return doStringsMatch(str, num);
}

function doStringsMatch(str1, str2) {
	str1 += "";
	str2 += "";

	if (str1.length != str2.length) {
		return false;
	}

	for (var i=0; i < str1.length; i++) {
		if (str1[i] != str2[i]) {
			return false;
		}
	}

	return true;
}

