// muda o foco do campo quando totalmente preenchido
function mudarFoco(objetoInput, nomeDoForm) {

	if (objetoInput.maxLength == parseInt(objetoInput.value.length)) {

		// seta os objetos necessários
		elementosDoForm = document.forms[nomeDoForm];
		quantidadeElementosDoForm = elementosDoForm.length;

		// procura o próximo objeto para qual deve setar o foco
		for (i=0; i < quantidadeElementosDoForm; i++) {
			if (elementosDoForm[i].tabIndex == objetoInput.tabIndex) {
				proximoCampo = elementosDoForm[i+1];
				proximoCampo.focus();
				return;

			} else {
				proximoCampo = '';

			}

		}

	}

}

//	Valida o número do CNPJ
function checkCNPJ(cnpj){
	if (cnpj.toString() == '') return false;

	if (isNaN(cnpj)) return false;

	cnpj = cnpj.toString();
	var soma1 = 0;
	soma1 += 5 * cnpj.charAt(0);
	soma1 += 4 * cnpj.charAt(1);
	soma1 += 3 * cnpj.charAt(2);
	soma1 += 2 * cnpj.charAt(3);
	soma1 += 9 * cnpj.charAt(4);
	soma1 += 8 * cnpj.charAt(5);
	soma1 += 7 * cnpj.charAt(6);
	soma1 += 6 * cnpj.charAt(7);
	soma1 += 5 * cnpj.charAt(8);
	soma1 += 4 * cnpj.charAt(9);
	soma1 += 3 * cnpj.charAt(10);
	soma1 += 2 * cnpj.charAt(11);
	var divisao1 = soma1 / 11;
	var multiplica1 = parseInt(divisao1,10) * 11;
	var resto1 = soma1 - multiplica1;
	if (resto1 <= 1) {
		var digi1 = 0;
	} else {
		var digi1 = 11 - resto1;
	}
	var soma2 = 0;
	soma2 += 6 * cnpj.charAt(0);
	soma2 += 5 * cnpj.charAt(1);
	soma2 += 4 * cnpj.charAt(2);
	soma2 += 3 * cnpj.charAt(3);
	soma2 += 2 * cnpj.charAt(4);
	soma2 += 9 * cnpj.charAt(5);
	soma2 += 8 * cnpj.charAt(6);
	soma2 += 7 * cnpj.charAt(7);
	soma2 += 6 * cnpj.charAt(8);
	soma2 += 5 * cnpj.charAt(9);
	soma2 += 4 * cnpj.charAt(10);
	soma2 += 3 * cnpj.charAt(11);
	soma2 += 2 * digi1;
	var divisao2 = soma2 / 11;
	var multiplica2 = parseInt(divisao2,10) * 11;
	var resto2 = soma2 - multiplica2;
	if (resto2 <= 1) {
		var digi2 = 0;
	} else {
		var digi2 = 11 - resto2;
	}
	if (cnpj.charAt(12) == digi1.toString() & cnpj.charAt(13) == digi2.toString()) {
		return true;
	} else {
		return false;
	}
}

function validarCampos(nomeDoFormulario) {

	arrayForm = document.forms[nomeDoFormulario];
	tamanho = arrayForm.length;
	
	arrayElementos = new Array;
	
	for (i=0; i < tamanho; i++ ) {
		if (arrayForm[i].tabIndex) {
			arrayElementos[arrayForm[i].tabIndex] = arrayForm[i];

		}
		
	}
	
	for (i=0; i < arrayElementos.length ; i++ ) {
		// valida se os campos obrigatórios estão preenchidos
		if (arrayElementos[i] && arrayElementos[i].obrigatorio && arrayElementos[i].value == '') {
			alert ('Preencha o campo ' + arrayElementos[i].label);
			arrayElementos[i].focus();
			return false;

		// valida os campos numéricos
		} else if (arrayElementos[i] && arrayElementos[i].tipo == 'numerico' && isNaN(arrayElementos[i].value) ) {
			alert ('O campo ' + arrayElementos[i].label + ' deve ser numérico');
			arrayElementos[i].select();
			return false;

		// valida o CNPJ
		} else if (arrayElementos[i] && arrayElementos[i].tipo == 'cnpj') {

			if (arrayElementos[i].value.length < 14) {
				for (j = arrayElementos[i].value.length; j < 14; j++) {
					arrayElementos[i].value = "0" + arrayElementos[i].value;
				}
				
			}

			if (!checkCNPJ(arrayElementos[i].value)) {
				alert (arrayElementos[i].label + ' inválido');
				arrayElementos[i].select();
				return false;			

			}

		} else if (arrayElementos[i] && arrayElementos[i].tipo == 'mes' && (isNaN(arrayElementos[i].value) || (arrayElementos[i].value > 12 || arrayElementos[i].value < 1) ) ) {
			alert (arrayElementos[i].label + ' inválido');
			arrayElementos[i].select();
			return false;


		} else if (arrayElementos[i] && arrayElementos[i].tipo == 'data') {

			if (arrayElementos[i].value.length < 10) {
				alert ('Por favor informe a data no formato dd/mm/aaaa');
				arrayElementos[i].select();
				return false;

			} else if (!verificarData(arrayElementos[i])) {
				alert (arrayElementos[i].label + ' inválida ');
				arrayElementos[i].select();
				return false;

			}

		}

	}

	arrayForm.submit();
	return;

}

