// varre o formulário retornando um array cuja chave é o nome do campo e o valor, seu valor.
function recuperaNomeValor( idForm ) {
	var form = document.getElementById( idForm );
	var campos = new Array();

	var inputS = form.getElementsByTagName("input");
	for (var i=0; i < inputS.length; i++)
	{
		if( inputS[i].type=='text' || inputS[i].type=='hidden' || inputS[i].type=='password' )
		{
//			alert(inputS[i].name);
			campos[ inputS[i].name ] = inputS[i].value;
		}
		else if( inputS[i].type=='radio' || inputS[i].type=='checkbox' )
		{
//			alert(inputS[i].name);
			if( inputS[i].checked == true )
			{
				campos[ inputS[i].name ] = inputS[i].value;
			}			
		}
		/*else{
			alert( inputS[i].type );
		}*/
	}
	
	var textAreaS = form.getElementsByTagName("textarea");
	for (var i=0; i < textAreaS.length; i++)
	{
//		alert(selectS[i].name);
		campos[ textAreaS[i].name ] = textAreaS[i].value;
	}
	
	var selectS = form.getElementsByTagName("select");
	for (var i=0; i < selectS.length; i++)
	{
//		alert(selectS[i].name);
		campos[ selectS[i].name ] = selectS[i].value;
	}
	
	return campos;
}

function recuperaNomeCampos( idForm ){
	var form = document.getElementById( idForm );
	var inputS = form.getElementsByTagName("input");
	var textAreaS = form.getElementsByTagName("textarea");
	var selectS = form.getElementsByTagName("select");
	var campos = new Array();
	campos["normal"] = new Array();
	campos["checkbox"] = new Array();
	campos["radio"] = new Array();
	
	for (var i=0; i < inputS.length; i++)
	{
		if( inputS[i].type=='text' || inputS[i].type=='hidden' )
		{
			campos["normal"][inputS[i].name] = inputS[i].name;
		}
		else if( inputS[i].type=='checkbox' ){
			campos["checkbox"][inputS[i].name] = inputS[i].name;
		}
		else if( inputS[i].type=='radio' ){
			campos["radio"][inputS[i].name] = inputS[i].name;
		}
	}
	
	for (var i=0; i < textAreaS.length; i++)
	{
		campos["normal"][ textAreaS[i].name ] = textAreaS[i].name;
	}
		
	for (var i=0; i < selectS.length; i++)
	{
		campos["normal"][ selectS[i].name ] = selectS[i].name;
	}
	
	return campos;
}

// limpando um cbo [input select]
function limpoOptionsCBO(idCbo){
	var cbo = document.getElementById( idCbo );
	// limpando o cbo das equipes
	while (cbo.length > 0) {
		cbo.remove(cbo.length - 1);
	}
}

// cria uma option de cbo e já coloca na sua última posição
function criaOption(cbo,cboValue,cboText){
	var option = document.createElement('option');
	option.value = cboValue;
	option.text = cboText;
	try {
    	cbo.add(option, null); // standards compliant; doesn't work in IE
	}
  	catch(ex) {
    	cbo.add(option); // IE only
  	}
}

// Formatar valores em reais, para inserção no BD
function FormataReais(fld, milSep, decSep, e) 
{
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
		if (whichCode == 13) return true;
		key = String.fromCharCode(whichCode);  // Valor para o código da Chave
		if (strCheck.indexOf(key) == -1) return false;  // Chave inválida
		len = fld.value.length;
		for(i = 0; i < len; i++)
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
		aux = '';
		for(; i < len; i++)
		if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
		aux += key;
		len = aux.length;
		if (len == 0) fld.value = '';
		if (len == 1) fld.value = '0'+ decSep + '0' + aux;
		if (len == 2) fld.value = '0'+ decSep + aux;
		if (len > 2)
		{
			aux2 = '';
			for (j = 0, i = len - 3; i >= 0; i--) 
			{
				if (j == 3) 
				{
					aux2 += milSep;
					j = 0;
				}
					aux2 += aux.charAt(i);
					j++;
			}
			fld.value = '';
			len2 = aux2.length;
			for (i = len2 - 1; i >= 0; i--)
			fld.value += aux2.charAt(i);
			fld.value += decSep + aux.substr(len - 2, len);
		}
	return false;
}

// para uso nos textareas, caso o enter for acionado, não dá quebra de linha
function teclaEnter(e)
{
	var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13) {   
		return false;
    }
    else{
    	return true;
    }
}

function checaTamanhoTextArea(idCampo,e,tamMaximo){
	var whichCode = (window.Event) ? e.which : e.keyCode;
	// verificar se não foi o 'enter' a tecla acionada:
	if( teclaEnter(e)==true ){
		var campo = document.getElementById( idCampo );
		/* verificar se ultrapassou o tamanho permitido e se a pessoa continua digitando
		 8 é o backspace [apagar o que digitou]
		 0 é o tab [passar para outro campo]
		*/
		if( campo.value.length >= tamMaximo && whichCode != 8 && whichCode != 0 ){
//			alert (campo.value.length);
			return false;
		}
		else {
			return true;
		}
	}
	else {
		return false;
	}
}

/**
 * Quando utilizado o jQuery.
 * Varre o formulário indicado, recuperando os nomes dos campos e valores preenchidos.
 */
function recuperar_dados_formulario(id_form)
{
  var fields = $('#' + id_form).serializeArray();
  var dados = '{';
  $.each(fields, function(i, field){
    var valor_preenchido = field.value;

    //trocar as quebras de linha por espaço:
    valor_preenchido = valor_preenchido.replace(/(\r\n|\n\r|\n|\r)/gmi, " "); //trocar as quebras de linha por espaço

    dados += '"' + field.name + '":"' + valor_preenchido + '"';

    //alert(fields.length + ' > ' + i);
    if (i < (fields.length-1)) { //Colocar ',' para separar os campos
      dados += ',';
    }
  });
  dados += '}';

  return dados;
}
