function checkAll(name){
	for (i=0; i < document.forms[0].elements.length; i++)
	{
		if (document.forms[0].elements[i].name == name)
		{
			document.forms[0].elements[i].checked = true;
		}
	}
}

function unCheckAll(name){
	for (i=0; i < document.forms[0].elements.length; i++)
	{
		if (document.forms[0].elements[i].name == name)
		{
			document.forms[0].elements[i].checked = false;
		}
	}
} 

function restoreDefaults(name, name_orig){
	unCheckAll(name);

	array_orig = name_orig.value.split(", ");
	j=0;

	for (i=0; i < document.forms[0].elements.length; i++)
	{
		if (document.forms[0].elements[i].name == name)
		{
			if (document.forms[0].elements[i].value == array_orig[j])
			{
				document.forms[0].elements[i].checked = true;
				j++;
			}
		}
	}
}

function administrative_actions(action_param,elem_radio,elem_hidden,url){
	if ((action_param == 'U') || (action_param == 'D'))
	{
		fg_ok = false;
		for (i=0; i < document.forms[0].elements.length; i++)
		{
			if (document.forms[0].elements[i].name == elem_radio)
			{
				if (document.forms[0].elements[i].checked == true)
				{
					fg_ok = true;
				}
			}
		}
		
		if (fg_ok == false)
		{
			window.alert("É necessário escolher um registro para modificar/remover.");
		}
		else
		{
			elem_hidden.value = action_param;
			document.forms[0].action = url;
			document.forms[0].submit();
		}
	}
	else
	{
		elem_hidden.value = action_param;
		document.forms[0].action = url;
		document.forms[0].submit();
	}
}

function admin_actions(value_param, value_obj, form, form_action){
	value_param.value = value_obj;
	form.action = form_action;
	form.submit();
}


function validate_form()
{
	for (i=0; i<document.form.elements.length;i++)
	{
		if (document.form.elements[i].getAttribute("notnull") == "true")
		{
			if ((document.form.elements[i].type != "checkbox") && (document.form.elements[i].type != "radio"))
			{
				if (document.form.elements[i].value == "")
				{
					window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' é de preenchimento obrigatório.");
					document.form.elements[i].focus();
					return false;
				}
			}
			else
			{
				fg_notnull = false;
				for (j=0; j < document.form.elements.length;j++)
				{
					if ((document.form.elements[i].name == document.form.elements[j].name) && (document.form.elements[j].checked == true)) 
					{
						fg_notnull = true;
					}
				}
				
				if (fg_notnull == false)
				{
					window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' deve ser informado.");
					document.form.elements[i].focus();
					return false;
				}
			}
		}

		if (document.form.elements[i].getAttribute("or_att") != null)
		{
			for (j=0; j<document.form.elements.length;j++)
			{
				if (document.form.elements[j].name == document.form.elements[i].getAttribute("or_att"))
				{
					//document.form.elements[i].getAttribute("name_long");
					fg_notnull = ((document.form.elements[i].value != "") || (document.form.elements[j].value != ""))

					if (fg_notnull == false)
					{
						window.alert("Um dos campos '"+document.form.elements[i].getAttribute("name_long")+"', '"+document.form.elements[j].getAttribute("name_long")+"' devem ser informados.");
						document.form.elements[i].focus();
						return false;
					}
				}
			}
		}
		
		if (document.form.elements[i].getAttribute("and_att") != null)
		{
			if (document.form.elements[i].value != "")
			{
				j=-1;
				fg_notnull = true;
				while ((fg_notnull == true) && (j < document.form.elements.length))
				{
					j++;
					if (document.form.elements[j].name == document.form.elements[i].getAttribute("and_att"))
					{
						
						if ((document.form.elements[j].type != "checkbox") && (document.form.elements[j].type != "radio"))
						{
							fg_notnull = (document.form.elements[j].value != "");
						}
						else
						{
							fg_notnull = false;
							for (w=0; w < document.form.elements.length;w++)
							{
								if ((document.form.elements[j].name == document.form.elements[w].name) && (document.form.elements[w].checked == true)) 
								{
									fg_notnull = true;
								}
							}
						}
					}
					
					
				}
				
				if (fg_notnull == false)
				{
					window.alert("Ambos os campos '"+document.form.elements[i].getAttribute("name_long")+"', '"+document.form.elements[j].getAttribute("name_long")+"' devem ser informados.");
					document.form.elements[j].focus();
					return false;
				}				
			}
		}
				
		if (document.form.elements[i].getAttribute("validate") != "")
		{
			if (document.form.elements[i].value != "")
			{
				switch (document.form.elements[i].getAttribute("validate"))
				{
					case "cnpj":
						//if (!validaCNPJ(document.form.elements[i].value))
						if (!isCnpj(document.form.elements[i].value))
						{
							window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' não é um CNPJ válido.");
							document.form.elements[i].focus();
							return false;
						}
					break;
					
					case "cpf":
						if (!isCpf(document.form.elements[i].value))
						{
							window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' não é um CPF válido");
							document.form.elements[i].focus();
							return false;
						}
					break;
					
					case "number":
						if (isNaN(document.form.elements[i].value))
						{
							window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' não é um número válido.");						
							document.form.elements[i].focus();
							return false;
						}
					break;

					case "date":
						if (checkdate(document.form.elements[i].value, "none") == false)
						{
							window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' não é uma data válida.");
							document.form.elements[i].focus();
							return false;
						}
					break;	
					
					case "date_before":
						if (checkdate(document.form.elements[i].value, "before") == false)
						{
							window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' é inválido.");
							document.form.elements[i].focus();
							return false;
						}
					break;
					
					case "date_after":
						if (checkdate(document.form.elements[i].value, "after") == false)
						{
							window.alert("O campo '"+document.form.elements[i].getAttribute("name_long")+"' é inválido.");
							document.form.elements[i].focus();
							return false;
						}
					break;					

					case "email"	:
						parte1 = document.form.elements[i].value.indexOf("@");
						parte2 = document.form.elements[i].value.indexOf(".");
						parte3 = document.form.elements[i].value.length;
						
						if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9))
						{
							window.alert ("O campo '"+document.form.elements[i].getAttribute("name_long")+"' deve conter um endereco eletrônico válido.");
							document.form.elements[i].focus();
							return false;
						}
					break;
				}
			}
		}

		if (document.form.elements[i].getAttribute("transferto") != null)
		{
			if ((document.form.elements[i].type == "select") || (document.form.elements[i].type == "select-multiple"))
			{
				var destiny_field = "";
				
				for (j=0; j<document.form.elements.length; j++)
				{
					if (document.form.elements[j].name == document.form.elements[i].getAttribute("transferto"))
					{
						//alert(document.form.elements[j].name);
						destiny_field = document.form.elements[j];
						j = document.form.elements.length;
					}
				}

				for (j=0; j<document.form.elements[i].length; j++)
				{
					destiny_field.value = destiny_field.value + document.form.elements[i].options[j].value+";";						
				}
				destiny_field.value = destiny_field.value.substring(0,destiny_field.value.length-1);
			}				
		}
		
		if (document.form.elements[i].getAttribute("equals") != null)
		{
			if (document.form.elements[i].type == "password")
			{
				var destiny_field = "";
				
				for (j=0; j<document.form.elements.length; j++)
				{
					if (document.form.elements[j].name == document.form.elements[i].getAttribute("equals"))
					{
						if (document.form.elements[i].value != document.form.elements[j].value)
						{
							window.alert("Os campos '"+document.form.elements[j].getAttribute("name_long")+"' e '"+document.form.elements[i].getAttribute("name_long")+"' não são iguais. Favor redigitar.");
							document.form.elements[i].value = "";
							document.form.elements[j].value = "";
							document.form.elements[j].focus();
							return false;
						}	
						j = document.form.elements.length;
					}
				}
			}				
		}
		
		if ((document.form.elements[i].type == "textarea") && (document.form.elements[i].getAttribute("maxlength") != null))
		{
			if (document.form.elements[i].value.length > document.form.elements[i].getAttribute("maxlength"))
			{
				window.alert("Você execeu o limite de caracteres ("+document.form.elements[i].getAttribute("maxlength")+") em "+document.form.elements[i].getAttribute("name_long")+". Total: "+document.form.elements[i].value.length);
				document.form.elements[i].focus();
				return false;
			}
		}
	}
	
	for (i=0; i<document.form.elements.length;i++)
	{
		if (document.form.elements[i].name == "action_form")
		{
			if (document.form.elements[i].value != "")
			{
				document.form.action = document.form.elements[i].value;
				i = document.form.elements.length;
			}
		}
	}
}

function checkdate(datefield, special_cond)
{
//erro=0;
	hoje = new Date();
	anoAtual = hoje.getFullYear();
	
	barras = datefield.split("/");
	if (barras.length == 3){
		dia = barras[0];
		mes = barras[1];
		ano = barras[2];
	
		resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4));
		
		if(resultado == true)
		{
			//special_cond -> before, after, none		
			switch (special_cond)
			{
				case "before":
					resultado = (ano <= anoAtual && ano >= 1900);
				break;
				case "after":
					resultado = (ano <= 3000 && ano >= anoAtual);
				break;
				default:
					resultado = (ano <= 3000 && ano >= 1900);
				break;
			}
		}

		if (resultado == false) {
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return false;
    }
}

function validate_list(action_value, field, fg_action_field, total)
{
	fg_action_field.value = action_value;
		
	fg_checked = false;
	if ((fg_action_field.value == "U") || (fg_action_field.value == "D"))
	{
		if (total != 1)
		{
			for (i=0;i<total;i++)
			{
				if (field[i].checked)
				{
					fg_checked = true;
				}
			}
				
			if (!fg_checked)
			{
				window.alert("Você precisa selecionar algo para prosseguir...");
				field[0].focus();
			}
			else
			{
				document.form.submit();
			}
		}
		else
		{
			if (!field.checked)
			{
				window.alert("Você precisa selecionar algo para prosseguir...");
				field.focus();
			}
			else
			{
				document.form.submit();
			}
		}
	}
	else
	{
		document.form.submit();
	}
}

function idoublecombo_change(combo_origin, combo_destiny)
{
	for (i=0; i < combo_origin.length; i++) {
		if (combo_origin.options[i].selected) {
			var oOption = document.createElement("OPTION");
			oOption.text = combo_origin[i].text;
			oOption.value = combo_origin[i].value;
			combo_destiny.options.add(oOption);
			combo_origin.remove(i);
			i = i - 1;
		}
	}
}

function criaMascara(_RefObjeto, _Modelo){

    var valorAtual = _RefObjeto.value;
    var valorNumerico = '';
    var nIndexModelo = 0;
    var nIndexString = 0;
    var valorFinal = '';
    var adicionarValor = true;


      // limpa a string valor atual para verificar
      // se todos os caracteres são números
      for (i=0;i<_Modelo.length;i++){
        if (_Modelo.substr(i,1) != '#'){
          valorAtual = valorAtual.replace(_Modelo.substr(i,1),'');
      }}

      // verifica se todos os caracteres são números
      for (i=0;i<valorAtual.length;i++){
        if (!isNaN(parseFloat(valorAtual.substr(i,1)))){
          valorNumerico = valorNumerico + valorAtual.substr(i,1);
      }}
      
      // aplica a máscara ao campo informado usando
      // o modelo de máscara informado no script
      for (i=0;i<_Modelo.length;i++){

        if (_Modelo.substr(i,1) == '#'){
          if (valorNumerico.substr(nIndexModelo,1) != ''){
            valorFinal = valorFinal + valorNumerico.substr(nIndexModelo,1);
            nIndexModelo++;nIndexString++;
          }
            else {
              adicionarValor = false;
        }}

          else {
            if (adicionarValor && valorNumerico.substr(nIndexModelo,1) != ''){
            valorFinal = valorFinal + _Modelo.substr(nIndexString,1)
            nIndexString++;
          }}
      }

      //alert(valorFinal)
      _RefObjeto.value = valorFinal
  }
