function marcar_checkboxes(formulario, campo){
	f = document.forms[formulario];
	if (document.forms[formulario].elements[campo].length != undefined)
		for (c = 0; c < f.elements[campo].length; c++)
			f.elements[campo][c].checked = f.marcar_todas.checked ? 1 : 0;
	else
		f.elements[campo].checked = f.marcar_todas.checked ? 1 : 0;
}



function preview(formulario, campo, arquivo){
	var caminho_imagem = document.forms[formulario].elements[campo].value;
	var extensao = caminho_imagem.substr(caminho_imagem.length - 4).toLowerCase();
	
	if (extensao != '.jpg'){
		alert("Apenas são aceitas imagens no formato .jpg!");
		return false;
	}
		document.images[arquivo].src = "file://"+caminho_imagem;
}


function preencher_combo(combo_dos_dados, array_itens, valor_subitem){
	var j = 0;

	document.getElementById('combo_'+combo_dos_dados.name).style.display = 'none';

	for (i = combo_dos_dados.options.length; i >= 0; i--)
		combo_dos_dados.options[i] = null;

	if (array_itens != undefined){
		combo_dos_dados.options[0] = new Option();
		for (i = 0; i < array_itens.length; i++){
			combo_dos_dados.options[j] = new Option(array_itens[i][0]);
			combo_dos_dados.options[j].value = array_itens[i][1]; 
			if (combo_dos_dados.options[j].value == valor_subitem)
				combo_dos_dados.options[j].selected = true;
			j++;
		}
		document.getElementById('combo_'+combo_dos_dados.name).style.display = 'block';
	}
}


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 verificar_nome(formulario){
	inputstr = document.forms[formulario].nome.value;

	var regex=/^[a-zA-Z\[áéíóúâêôãõÍÓç ]+$/;
	if (!regex.test(inputstr)) document.forms[formulario].nome.value = document.forms[formulario].nome.value.substring(0,document.forms[formulario].nome.value.length-1);
}

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.getAttribute('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.getAttribute('tipo_campo')=='numerico')
				if (campo.value.search(/^\d+$/)!=0)
					campos_com_erro += "- O campo '" + campo.title + "' deve ser numérico.\n";

			if (campo.getAttribute('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 corretamente.\n";

			if (campo.getAttribute('tipo_campo')=='data'){
				if (campo.value.search(/(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/([6-8][0-9]|9[0-4])/)!=0)
					campos_com_erro += "- O campo '"+ campo.title +"' não foi digitado corretamente!\n Use a sintaxe: dd/mm/aa, onde:\n dd: Dia - Ex.: 01\n mm: Mês - Ex.: 09\n aa: Ano - Ex.: 80 (O ano deve ser maior que 60 e menor que 94!)\n";
			}

			if (campo.getAttribute('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.getAttribute('tipo_campo')=='nome')
				if (campo.value.search(/^[a-zA-Z\[áéíóúâêôãõÍÓç ]+$/)!=0)
					campos_com_erro += "- O campo '"+ campo.title +"' deve possuir apenas letras!\n";

			if (campo.getAttribute('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.getAttribute('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();
}