// JavaScript Document

var LSL;
if (!LSL) {
	LSL = {};
}

if (!LSL.Form) {
	LSL.Form = {};
}

Array.prototype.indexOf = function(v) {
       for(var i = this.length; i-- && this[i] !== v;);
       return i;
}

LSL.Form.valida = function(form) {
	var opcional;
	if (form.opcional)
		opcional = (form.opcional.value.toLowerCase() + ',opcional').split(',');
	else
		opcional = [];

	var radios = [];
	for (var i=0; i<form.elements.length; i++) {
		var field = form.elements[i];
		if (typeof field.name == 'undefined') continue;
		if (field.disabled) continue;

		var fieldName = field.name.toLowerCase();
		var vazio = false;
		if (opcional.indexOf(fieldName) == -1) {
			
			var value = field.value;
			if (value == '') {
				vazio = true;
			} else if ((field.type.toLowerCase() == 'radio' || field.type.toLowerCase() == 'checkbox') && (radios.indexOf(fieldName) == -1)) {
				radios.push(fieldName);
				vazio = true;
				for (var k = 0; k < form.elements.length; k++) {
					if (typeof form.elements[k].name == 'undefined') continue;
					if (form.elements[k].disabled) continue;
					if (form.elements[k].name.toLowerCase() == fieldName) {
						if (form.elements[k].checked) {
							vazio = false;
							break;
						}
					}
				}
			}
		}
		if (vazio) {
			alert('Campo(s) obrigatório(s) não preenchido! (' + fieldName + ')');
			if (field.type.toLowerCase() != 'hidden') {
				field.focus();
			}
			return false;
		} else if (field.value != '') {
			if (fieldName == 'cep' && (!LSL.Form.isNatural(field.value) || field.value.length != 8)) {
				alert('Cep inválido.\nO CEP deve conter 8 números!'); field.focus(); return false;
			} else if (fieldName == 'ddd' && (!LSL.Form.isNatural(field.value) || field.value.length != 2 || form.telefone.value == '')) {
				alert('DDD inválido.\nO DDD deve conter 2 números!'); field.focus(); return false;
			} else if (fieldName == 'telefone' && (!LSL.Form.isNatural(field.value) || field.value.length < 8 || form.ddd.value == '')) {
				alert('Telefone inválido.\nO telefone deve conter no mínimo 8 números!'); field.focus(); return false;
			} else if ((fieldName == 'email' || fieldName == 'email2') && !LSL.Form.isMail(field.value)) {
				alert('E-mail inválido.'); field.focus(); return false;
			} else if (fieldName.substring(0,4) == 'data' && !LSL.Form.isDate(field.value)) {
				alert('Data inválida. Ex: 30/04/2007'); field.focus(); return false;
			} else if (fieldName == 'nascimento') {
				if (!LSL.Form.isDate(field.value)) {
					alert('Data inválida. Preencha a data no formato: DD/MM/YYYY'); field.focus(); return false;
				}
				/*else if (!LSL.Form.isDateNasc(field.value)) {
					alert('Data de nascimento inválida. Você deve ter no mínimo 16 anos para fazer a inscrição.'); field.focus(); return false;
				}*/
			} else if (fieldName == 'senha' && field.value.length < 6) {
				alert('A senha deve conter no mínimo 6 caracteres!'); field.focus(); return false;
			} else if (fieldName == 'identidade' && !LSL.Form.isNatural(field.value)) {
				alert('Identidade inválida. Digite apenas números!'); field.focus(); return false;
			} else if (fieldName == 'cpf' && !LSL.Form.verifyCPF(field.value)) {
				alert('CPF inválido.\nO CPF deve conter 11 numeros sem pontos ou traço!'); field.focus(); return false;
			}
		}
	}
	return true;
};

LSL.Form.getURI = function(form) {
	var uri = '';

	this.makeURI = function(nome,valor) {
		uri += (uri != ''?'&':'') + nome + '=' + encodeURIComponent(valor);
	};

	for (var i=0; i<form.elements.length; i++) {
		var field = form.elements[i];
		if (!field.disabled) {
			switch(field.type) {
				case 'text': case 'password': case 'hidden': 
					this.makeURI(field.name,field.value);
					break;
				case 'textarea':
					this.makeURI(field.name,field.value);
					break;
				case 'select-one':
					if (field.selectedIndex>=0) {
						this.makeURI(field.name,field.options[field.selectedIndex].value);
					}
					break;
				case 'select-multiple':
					for (var j=0; j<field.options.length; j++) {
						if (field.options[j].selected) {
							this.makeURI(field.name,field.options[j].value);
						}
					}
					break;
				case 'checkbox': case 'radio':
					if (field.checked) {
						this.makeURI(field.name,field.value);
					}
					break;
			}
		}
	}
	return uri;
};

LSL.Form.isNatural = function(text) {
	var chr = '0123456789';
	return LSL.Form.verify(text, chr);
};

LSL.Form.isNumeric = function(text) {
	var chr = '0123456789.,';
	return LSL.Form.verify(text, chr);
};

LSL.Form.isDate = function(text) {
	if (text.length == 10 && LSL.Form.isNatural(text.substring(0,2)) && text.substring(2,3) == '/' && LSL.Form.isNatural(text.substring(3,5)) && text.substring(5,6) == '/' && LSL.Form.isNatural(text.substring(6,10))) {
		return true;
	} else {
		return false;
	}
}
/*
LSL.Form.isDate = function(text, maxx) {
	var reg = /^(\d\d)\/(\d\d)\/(\d\d\d\d)$/;
	if (reg.test(text)) {
		var dia = parseFloat(text.replace(reg,'$1'));
		var mes = parseFloat(text.replace(reg,'$2'));
		var ano = parseFloat(text.replace(reg,'$3'));
		if (dia > 0 && dia < 32 && mes > 0 && mes < 13 && ano > 1900 && ano < 2300) {
			if (typeof(maxx) == 'object') {
				var data = new Date(ano, mes-1, dia);
				if (data.getTime() > maxx.getTime()) {
					return false;
				}
			}
			return true;
		}
	}
	return false;
};
  
LSL.Form.isDateNasc = function(text, int) {
	var ano = new Date();
	ano.setFullYear(ano.getFullYear()-int);
	if (LSL.Form.isDate(text, ano)) {
		return true;
	} else {
		return false;
	}
};*/

LSL.Form.isDateTime = function(text) {
	//DD/MM/YYYY HH:MM:SS
	//0123456789012345678
	if (text.length == 19 && LSL.Form.isNatural(text.substring(0,2)) && text.substring(2,3) == '/' && LSL.Form.isNatural(text.substring(3,5)) && text.substring(5,6) == '/' && LSL.Form.isNatural(text.substring(6,10)) &&
		text.substring(10,11) == ' ' && LSL.Form.isNatural(text.substring(11,13)) && text.substring(13,14) == ':' && LSL.Form.isNatural(text.substring(14,16)) && text.substring(16,17) == ':' && LSL.Form.isNatural(text.substring(17,19))) {
		return true;
	} else {
		return false;
	}
};

LSL.Form.verify = function(text, chr) {
	for (var i=0; i<text.length;i++) {
		if (chr.indexOf(text.charAt(i)) == -1) 
			return false;
	}
	return true;
};

LSL.Form.isMail = function(text) {
	if (text.indexOf('@')<1 || text.indexOf('@')>=(text.length-5) || text.length < 8)
		return false;
	return true;
};

LSL.Form.verifyCPF = function(cpf) {
	//if (cpf.length != 11) return false;
	//while (cpf != (cpf=cpf.replace('.','').replace('-','')));
	
	cpf = cpf.replace(/[^0-9]/g,'');
	
	if (!LSL.Form.isNatural(cpf)) return false;
	if (cpf.length != 11) return false;
	
	var digitos_iguais = true;
	for (i = 0; i < cpf.length - 1; i++) {
		if (cpf.charAt(i) != cpf.charAt(i + 1)) {
			digitos_iguais = false;
			break;
		}
	}
	if (digitos_iguais) return false;

	var ver1 = parseInt(cpf.charAt(9));
	var ver2 = parseInt(cpf.charAt(10));
	cpf = cpf.substring(0,9);

	var soma = 0;
	var k = 10;
	for (var j=0;j<cpf.length;j++) {
		soma += parseInt(cpf.charAt(j)) * k;
		k--;
	}
	var resto = soma%11;
	
	var verTemp = 0;
	if (resto >= 2) verTemp = 11 - resto;
	
	if (verTemp != ver1)
		return false;
	else {
		soma = 0;
		k = 11;
		cpf += ver1;
		for (var j=0;j<cpf.length;j++) {
			soma += parseInt(cpf.charAt(j)) * k;
			k--;
			if (k < 2) k = 9;
		}
		resto = soma%11;
		verTemp = 0;
		if (resto >= 2) verTemp = 11 - resto;
		if (verTemp != ver2) return false;
	}
	return true;
};

LSL.Form.mascaraDate = function(field) {
	var val = field.value;
	val = val.replace(/\D/g, '');
	val = val.replace(/(\d\d)(\d)/, '$1/$2');
	val = val.replace(/(\d\d)(\d)/, '$1/$2');
	field.value = val.substring(0,10);
};

LSL.Form.mascaraTelefone = function(field) {
	var val = field.value;
	val = val.replace(/\D/g, '');
	val = val.replace(/^(\d)(\d)?/, '($1$2');
	val = val.replace(/(\d\d)(\d)/, '$1) $2');
	val = val.replace(/(\d\d\d\d)(\d)/, '$1-$2');
	field.value = val.substring(0,14);
};

LSL.Form.mascaraCPF = function(field) {
	var val = field.value;
	val = val.replace(/\D/g, '');
	val = val.replace(/(\d\d\d)(\d)/, '$1.$2');
	val = val.replace(/(\d\d\d)(\d)/, '$1.$2');
	val = val.replace(/(\d\d\d)(\d)/, '$1-$2');
	field.value = val.substring(0,14);
};

LSL.sendFormConcursoIndex = function(form, tipo) {
	var id = $(form.concursos).val();
	if (id == '') {
		alert('Selecione um concurso antes de continuar.');
		return false;
	}
	if (tipo == 'I') {
		document.location.href = 'inscricoes/' + id;
	} else if (tipo == 'S') {
		document.location.href = 'segundavia/' + id;
	}
};

LSL.selectDeficiencia = function(field) {
	var disabled = (field.value == 'N');

	var labelBraile = document.getElementById('labelBraile');
	labelBraile.disabled = disabled;
	if (disabled) labelBraile.checked = false;

	var labelLedor = document.getElementById('labelLedor');
	labelLedor.disabled = disabled;
	if (disabled) labelLedor.checked = false;

	var labelFonte = document.getElementById('labelFonte');
	labelFonte.disabled = disabled;
	if (disabled) labelFonte.checked = false;

	var labelLibra = document.getElementById('labelLibra');
	labelLibra.disabled = disabled;
	if (disabled) labelLibra.checked = false;
};
