/*
Função para autenticação de campos Versão 1.7
Versão simples, original e com erros que verificava apenas campos em branco por David Flanagan
Versão ampliada e melhorada por LEandrO Antonio(leandro@garagem.org)
Desde 18/11/2002
Última atualização: 10/06/2003
*/

function possui_palavra_grande(campo,comprimento){
	array_palavras = campo.split(" ");
	for (c=0;c<array_palavras.length;c++)
	if (array_palavras[c].length > comprimento){
		alert('A palavra '+ array_palavras[c] +' possui muitos caracteres. Por favor, reduza para no máximo '+comprimento+'!')
		return true;
	}
	return false;
}

function abrir(pagina,largura,altura,preencher){
	hora = new Date()
	milisegundo = hora.getMilliseconds()
	var tela = window.open(pagina,"pagina"+milisegundo,"toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, top=0, left=0, width="+largura+", height="+altura);
		if (preencher)
			tela.moveTo(-5,-4);
}

function tab(nome_formulario,campo1,campo2) {
	if ((document.forms[nome_formulario].elements[campo1].value.length == document.forms[nome_formulario].elements[campo1].size))
		document.forms[nome_formulario].elements[campo2].focus();
}

function verificar_numerico(){
	if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
}

function verificar_nickname(){
	if ((event.keyCode < 48 && event.keyCode != 45) || (event.keyCode > 57 && event.keyCode < 65)) event.returnValue = false;
}

function verificar_data(){
	if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 47) event.returnValue = false;
}

function eh_branco(s) {
	for(var i=0; i<s.length; i++) {
		var c = s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
	}
	return true;
}

function enviar(nome_formulario,desabilitar,imagem_enviar){
	var campos_brancos = "";
	var campos_com_erro = "";
	var indice_campo_branco = 0;
	var indice_campo_erro = 0;
	var encontrou_erro = false;

	subtrair = imagem_enviar ? 0 : 1;

	for(var i=0; i<document.forms[nome_formulario].length-subtrair; i++){
		var campo = document.forms[nome_formulario].elements[i];
		var requerido = campo.requerido;

		if (requerido=='nao' && campo.value.length > 0) requerido='';

		if (((campo.type == "text") || (campo.type == "textarea") || (campo.type == "password") || (campo.type == "file")) && requerido!='nao'){
			if ((campo.value == null) || (campo.value == "") || eh_branco(campo.value)){
				if (!campos_brancos) indice_campo_branco = i;
				campos_brancos += campo.title + "\n";
				continue;
			}
			
			if (campo.tipo_campo=='numerico')
				if (campo.value.search(/^\d+$/)!=0)
					campos_com_erro += "- O campo '" + campo.title + "' deve ser numérico.\n";

			if (campo.tipo_campo=='email')
				if ((campo.value.search(/^[a-zA-Z0-9]+[\w\.\_\-\w]*[\w+]@[a-zA-Z0-9]+([\w\_\-\w]*\.[\w\_\-\w]+)+[\w\_\-\w]*$/))!=0)
					campos_com_erro += "- O campo '" + campo.title + "' não está preenchido corratamente.\n";

			if (campo.tipo_campo=='data'){
				if (campo.value.search(/(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/([0-9][0-9])/)!=0)
					campos_com_erro += "- O campo '"+ campo.title +"' não foi digitado corretamente!\n";
			}

			if (campo.tipo_campo=='nickname')
				if (campo.value.search(/^[a-zA-Z0-9\[-`{-~\-]+$/)!=0)
					campos_com_erro += "- O campo '"+ campo.title +"' sintaticamente não é um NickName válido.\nUtilize apenas os caracteres aceitos no IRC.\n";

			if (campo.tipo_campo=='url')
				if (campo.value.search(/^(http:\/\/)(www\.)?([a-zA-Z0-9]+([\w\_\-\w]*\.[\w\_\-\w]+)+[\w\_\-\w]*$)/)!=0)
					campos_com_erro += "- O campo '"+ campo.title +"' não está correto.\nUtilize o formato http://www.site.dominio (o www é opcional).\n";

			if (campo.tipo_campo=='caminho_disco')
				if (campo.value.search(/^[A-Za-z]:\\.+\.(jpg|jpeg|JPEG|JPG)$/)!=0)
					campos_com_erro += "- O caminho no disco para o campo '"+ campo.title +"' não está correto ou você não selecionou um arquivo de extensão .jpg ou .jpeg\n";

			if (campo.confere=='sim')
				if (campo.value != document.forms[nome_formulario].elements[i+1].value)
					campos_com_erro += "- Os campos '"+ campo.title +"' e '"+ document.forms[nome_formulario].elements[i+1].title +"' devem possuir o mesmo valor.\n";

			if (campo.tamanho_minimo!='')
				if (campo.value.length < campo.tamanho_minimo)
					campos_com_erro += "- O campo '"+ campo.title +"' deve possuir no mínimo "+ campo.tamanho_minimo +" caracteres.\n";

			if (campo.tamanho_maximo!='')
				if (campo.value.length > campo.tamanho_maximo)
					campos_com_erro += "- O campo '"+ campo.title +"' deve possuir no máximo "+ campo.tamanho_maximo +" caracteres.\n";
		}

		if (campo.type == "select-one")
			if (campo.value=='' && requerido!="nao")
				campos_com_erro += "- Faça uma escolha para o campo '"+ campo.title +"'.\n";

		if (campo.type == "radio"){
			var marcou = false;
			for (c=i;c<i+document.forms[nome_formulario].elements[document.forms[nome_formulario].elements[i].name].length;c++)
				if (document.forms[nome_formulario].elements[c].checked == true)
					marcou = true;
			if (!marcou)
				campos_com_erro += "- Marque uma opção para o campo '"+ campo.title +"'.\n";
			i=c-1;
		}
		
		if (campos_com_erro && !encontrou_erro){
			encontrou_erro = true;
			indice_campo_erro = i;
		}

	}

	if (!campos_brancos && !campos_com_erro) {
		if (!desabilitar) document.forms[nome_formulario].elements[i].disabled=true;
		document.forms[nome_formulario].submit();
		return true;
	}

	if (campos_brancos){
		alert("Preencha os campos que estão em branco:\n\n"+campos_brancos);
		document.forms[nome_formulario].elements[indice_campo_branco].focus();
		return false;
	}
	if (campos_com_erro){
		alert("Ocorreram os seguintes erros:\n\n"+campos_com_erro);
		document.forms[nome_formulario].elements[indice_campo_erro].focus();
		if (document.forms[nome_formulario].elements[indice_campo_erro].type!="select-one")
			document.forms[nome_formulario].elements[indice_campo_erro].select();
		return false;
	}
}

function foco(formulario,campo){
	document.forms[formulario].elements[campo].focus();
	document.forms[formulario].elements[campo].select();
}