// JValid.js

var JValid = new Object();

// valida cep
JValid.cep = function(cep) {
	while(/[^0-9]/.test(cep))
            cep = cep.replace(/[^0-9]/, "");
	if(cep.length != 8 || isNaN(cep) || cep == 00000000 || cep == 11111111 || cep == 22222222 ||
		cep == 33333333 ||	cep == 44444444 || cep == 55555555 || cep == 66666666 || cep == 77777777 ||
		cep == 88888888 || cep == 99999999) {
		return false;
	} else {
		return true;
	}
}

// valida email
JValid.email = function(email) {
	var caracteres = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	if((caracteres.test(email))) {
		return true;
	} else {
		return false;
	}
}

// valida telefone
JValid.telefone = function(telefone) {
	while(/[^0-9]/.test(telefone))
        telefone = telefone.replace(/[^0-9]/, "");
    if(!isNaN(telefone)) {
        if(telefone.length == 8 || telefone.length == 10) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

// valida CNPJ
JValid.cnpj = function(cnpj) {
	while(/[^0-9]/.test(cnpj))
		cnpj = cnpj.replace(/[^0-9]/, "");
	if(cnpj != '') {
		for(i=0;i<cnpj.length + 1;i++)
			cnpj = cnpj.replace(/[^0-9]/, '');
		var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
		digitos_iguais = 1;
		if (cnpj.length < 14 && cnpj.length < 15) {
			return false;
		}
		for (i = 0; i < cnpj.length - 1; i++) {
			if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
				digitos_iguais = 0;
				break;
			}
		}
		if (!digitos_iguais) {
			tamanho = cnpj.length - 2
			numeros = cnpj.substring(0,tamanho);
			digitos = cnpj.substring(tamanho);
			soma = 0;
			pos = tamanho - 7;
			for (i = tamanho; i >= 1; i--) {
				soma += numeros.charAt(tamanho - i) * pos--;
				if (pos < 2) {
					pos = 9;
				}
			}
			resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
			if (resultado != digitos.charAt(0)) {
				return false;
			}
			tamanho = tamanho + 1;
			numeros = cnpj.substring(0,tamanho);
			soma = 0;
			pos = tamanho - 7;
			for (i = tamanho; i >= 1; i--) {
				soma += numeros.charAt(tamanho - i) * pos--;
				if (pos < 2) {
					pos = 9;
				}
			}
			resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
			if (resultado != digitos.charAt(1)) {
				return false;
			} else {
				return true;
			}
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

// valida CPF
JValid.cpf = function(cpf) {
        while(/[^0-9]/.test(cpf))
            cpf = cpf.replace(/[^0-9]/, "");
	if(cpf != '') {
		var numeros, digitos, soma, i, resultado, digitos_iguais;
		digitos_iguais = 1;
		if (cpf.length < 11) {
			return false;
		}
		for (i = 0; i < cpf.length - 1; i++) {
			if (cpf.charAt(i) != cpf.charAt(i + 1)){
				digitos_iguais = 0;
				break;
			}
		}
		if (!digitos_iguais) {
			numeros = cpf.substring(0,9);
			digitos = cpf.substring(9);
			soma = 0;
			for (i = 10; i > 1; i--) {
				soma += numeros.charAt(10 - i) * i;
			}
			resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
			if (resultado != digitos.charAt(0)) {
				return false;
			}
			numeros = cpf.substring(0,10);
			soma = 0;
			for (i = 11; i > 1; i--) {
				soma += numeros.charAt(11 - i) * i;
			}
			resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
			if (resultado != digitos.charAt(1)) {
				return false;
			}
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

// valida data
JValid.data = function(data) {
	if(data.length != 10) {
		return false;
	} else {
		arrData = data.split("/");
		if(arrData[0].length == 2 && !isNaN(arrData[0])) {
			if(arrData[0] <= 0 && arrData[0] > 31) {
				return false;
			}
		} else {
			return false;
		}
		if(arrData[1].length == 2 && !isNaN(arrData[1])) {
			if(arrData[1] <= 0 && arrData[1] > 12) {
				return false;
			}
		} else {
			return false;
		}
		var objDate = new Date();
		if(JGlobal.navegadorIE()) {
			ano = objDate.getYear();
		} else {
			ano = objDate.getYear() + 1900;
		}
		if(arrData[2].length == 4 && !isNaN(arrData[2])) {
			if(arrData[2] <= (ano - 10) && arrData[2] > (ano + 1)) {
				return false;
			}
		} else {
			return false;
		}
		return true;
	}
}

// valida hora
JValid.hora = function(hora) {
	if(hora.length != 8) {
		return false;
	} else {
		var arrHora = hora.split(':');
		if(arrHora[0].length == 2 && !isNaN(arrHora[0])) {
			if(arrHora[0] < 0 && arrHora[0] > 23) {
				return false;
			}
		} else {
			return false;
		}
		if(arrHora[1].length == 2 && !isNaN(arrHora[1])) {
			if(arrHora[1] < 0 && arrHora[1] > 59) {
				return false;
			}
		} else {
			return false;
		}
		if(arrHora[2].length == 2 && !isNaN(arrHora[2])) {
			if(arrHora[2] < 0 && arrHora[2] > 59) {
				return false;
			}
		} else {
			return false;
		}
		return true;
	}
}
