﻿validator = {
	equalChars: function (value) {
		if (validator.isEmpty(value)) return true;
		if (value.length == 1) return false;
		var equal = true;
		var first = value.substring(0, 1);
		for (var i = 1; i < value.length; i++) {
			if (first != value[i]) {
				equal = false;
				break;
			}
		}
		return equal;
	},
	isEmpty: function (value) {
		return (value.length == 0)
	},
	isName: function (value) {
		var Regex = /^[\wÀ-ÿ]|[\W\d\s][\&\*]{1,100}$/;

		return Regex.test(value);
	},
	isPassword: function (value) {
		var Regex = /^[\wÀ-ÿ]|[\W\d\s][\&\*]{1,20}$/;

		return Regex.test(value);
	},
	isEmail: function (value) {
		var Regex = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/;

		return Regex.test(value);
	},
	isUsername: function (value) {
		var Regex = /^([a-z]|[A-Z]|[ .çãáéíóúÃÁÉÍÓÚ])*$/;

		return Regex.test(value);
	},
	isDate: function (value) {
		var Regex = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

		return Regex.test(value);
	},
	isCPF: function (value) {
		/*var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
		if (!filtro.test(value) || value == "") {
		return false;
		}*/

		value = value.replace(/[.-]/g, "");

		if (value.length != 11 || value == "00000000000" || value == "11111111111" ||
		value == "22222222222" || value == "33333333333" || value == "44444444444" ||
		value == "55555555555" || value == "66666666666" || value == "77777777777" ||
		value == "88888888888" || value == "99999999999") {
			return false;
		}

		soma = 0;
		for (i = 0; i < 9; i++) soma += parseInt(value.charAt(i)) * (10 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11) resto = 0;
		if (resto != parseInt(value.charAt(9))) {
			return false;
		}

		soma = 0;
		for (i = 0; i < 10; i++) soma += parseInt(value.charAt(i)) * (11 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11) resto = 0;
		if (resto != parseInt(value.charAt(10))) {
			return false;
		}
		return true;
	},
	isCNPJ: function (value) {
		/*var filtro = /^\d{2}.\d{3}.\d{3}\/\d{4}-\d{2}$/i;
		
		if (!filtro.test(value)) {
		return false;
		}*/

		value = value.replace(/[.\/-]/g, "");

		if (value.length != 14 || value == "00000000000000" || value == "11111111111111" ||
		value == "22222222222222" || value == "33333333333333" || value == "44444444444444" ||
		value == "55555555555555" || value == "66666666666666" || value == "77777777777777" ||
		value == "88888888888888" || value == "99999999999999") {
			return false;
		}

		var a = [];
		var b = new Number;
		var c = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
		for (i = 0; i < 12; i++) {
			a[i] = value.charAt(i);
			b += a[i] * c[i + 1];
		}
		if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11 - x }
		b = 0;
		for (y = 0; y < 13; y++) {
			b += (a[y] * c[y]);
		}
		if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11 - x; }
		if ((value.charAt(12) != a[12]) || (value.charAt(13) != a[13])) {
			return false;
		}
		return true;
	}
}
