var erroValidacao = false;

//regras de validacao (Expressoes Regulares)
if(!self.g_IS&&parent.g_IS)var g_IS=parent.g_IS
if(!self.isArray&&parent.isArray) var isArray = parent.isArray
if(!self.isObject&&parent.isObject) var isObject = parent.isObject
if(!self.isDate&&parent.isDate) var isDate = parent.isDate
if(!self.isString&&parent.isString) var isString = parent.isString
var reSpaces				= /^\s+$/
var reLetra 				= /^[a-zA-Z]$/
var reAlfabetico 			= /^[a-zA-Z]+$/
var reAlfanumerico 			= /^[a-zA-Z0-9]+$/
var reAlfanumericoCifrao 		= /^[a-zA-Z0-9$]+$/;
var reAlfabeticoM 			= /^[A-Z\s?-??,.]+$/
var reAlfabeticoPlusMN 		= /^[A-Z\s?-???,.0-9]+$/
var reAlfabeticoPlusN 		= /^[a-zA-Z\s?-??-???,.0-9]+$/
var reAlfabeticoPlusNHifen	    = /^[a-zA-Z\s?-??-???,.0-9|\-]+$/;
var reAlfabeticoPlus 		= /^[a-zA-Z\s?-??-???.]+$/
var reAlfaSpaces			= /^[a-zA-Z0-9\s]+$/
var reDigito 				= /^\d/
var reDigitos 				=/^\d+$/;
var reLetraOuDigito 		= /^([a-zA-Z]|\d)$/
var reInteiro 				= /^\d+$/
var reSinalInteiro 			= /^(\+|\-)?\d+$/
var reDecimais 				= /((^\d*),?$)|((^\d*),(\d*)$)/
var reSinalDecimais 		= /^(\+|\-)?((\d*,?$)|(\d*,\d*$))/
var re2Decimais				= /(^\d*,?$)|(^\d*,\d{1,2}$)/
var reSinal2Decimais    	= /^(\+|\-)?((\d*,?$)|(\d*,\d{1,2}$))/
var re4Decimais				= /(^\d*,?$)|(^\d*,\d{1,4}$)/
var reSinal4Decimais   		= /^(\+|\-)?((\d*,?$)|(\d*,\d{1,4}$))/
var re7Decimais				= /(^\d*,?$)|(^\d*,\d{1,7}$)/
var reSinal7Decimais    	= /^(\+|\-)?((\d*,?$)|(\d*,\d{1,7}$))/
var reSinal2Inteiro2Decimais= /^(\+|\-)?(\d{1,2},\d{1,2}$)/
var reSinal3Inteiro3Decimais= /^(\+|\-)?(\d{1,3},\d{1,3}$)/
var reSinal3Inteiro2Decimais= /^(\+|\-)?(\d{1,3},\d{1,2}$)/

var reSinal3Inteiro4Decimais= /^(\+|\-)?(\d{1,3},\d{1,4}$)/

var reSinal4Inteiro2Decimais= /^(\+|\-)?(\d{1,4},\d{1,2}$)/
var reSinal6Inteiro2Decimais= /^(\+|\-)?(\d{1,6},\d{1,2}$)/
var reSinal5Inteiro2Decimais= /^(\+|\-)?(\d{1,5},\d{1,2}$)/
var reSinal8Inteiro2Decimais= /^(\+|\-)?(\d{1,8},\d{1,2}$)/
var reSinal8Inteiro8Decimais= /^(\+|\-)?(\d{1,8},\d{1,8}$)/
var reSinal8Inteiro4Decimais= /^(\+|\-)?(\d{1,8},\d{1,4}$)/
var reSinal3Inteiro4Decimais= /^(\+|\-)?(\d{1,3},\d{1,4}$)/
var reSinal10Inteiro4Decimais= /^(\+|\-)?(\d{1,10},\d{1,4}$)/
var reSinal12Inteiro2Decimais= /^(\+|\-)?(\d{1,12},\d{1,2}$)/
var reSinal14Inteiro6Decimais= /^(\+|\-)?(\d{1,14},\d{1,6}$)/
var reSinal14Inteiro4Decimais= /^(\+|\-)?(\d{1,14},\d{1,6}$)/
var reSinal14Inteiro2Decimais= /^(\+|\-)?(\d{1,14},\d{1,2}$)/
var reSinal13Inteiro2Decimais= /^(\+|\-)?(\d{1,15},\d{1,2}$)/
var reInteiroPonto = /^[0-9.]+$/

var reEmail 				= /^.+\@.+\..+$/
var reSN					= /^[SNsn]$/
var reCPFCGC            	= /(^(\d{3})\W?(\d{3})\W?(\d{3})\W?(\d{2})$)|(^(\d{8})\W?(\d{4})\W?(\d{2})$)/ 
var feCPFCGC				= "$2$3$4$5$7$8$9"
var fsCPFCGC				= "$2$3$4$5$7$8$9"
var reCPF       	        = /^(\d{3})\W?(\d{3})\W?(\d{3})\W?(\d{2})$/ 
var fsCPF					= "$1.$2.$3-$4"
var feCPF					= "$1$2$3$4"
var reCGCMF     	        = /^(\d{8})\W?(\d{4})\W?(\d{2})$/
var fsCGCMF					= "$1/$2-$3"
var feCGCMF					= "$1$2$3"

var reIERS					= /^(\d{3})\W?(\d{3})\W?(\d{4})$/
var fsIERS					= "$1/$2$3"
var feIERS					= "$1$2$3"

var reCEP					= /^(\d{5})\W?(\d{3})$/
var feCEP					= "$1$2"
var fsCEP					= "$1-$2"
var reData		    		= /^(([0]?[1-9])|([1,2]\d)|([3][0,1]))\W?(([0]?[1-9])|([1][0-2]))\W?([1-9][0-9]{1,3})$/
var fsData					= "$1/$5/$8"
var feData					= "$1$5$8"
var reMMAAAA		   		= /^(([0]?[1-9])|([1][0-2]))\W?((([1-9][3-9])|([2][0-9]))\d{2})$/
var fsMMAAAA				= "$1/$4"
var feMMAAAA				= "$1$4"
var reDDMMAAAA				= /^(([0]?[1-9])|([1,2]\d)|([3][0,1]))\W?(([0]?[1-9])|([1][0-2]))\W?([1-9][0-9]{3})$/
var reAAAA					= /^([1-9][0-9]{3})$/
var fsAAAA					= "$1"
var fsDDMMAAAA				= "$1/$5/$8"
var feDDMMAAAA				= "$1$5$8"
var reDDMMAA				= /^(([0]?[1-9])|([1,2]\d)|([3][0,1]))\W?(([0]?[1-9])|([1][0-2]))\W?([0-9][0-9]{1})$/
var fsDDMMAA				= "$1/$5/$8"
var feDDMMAA				= "$1$5$8"
var reDDMM					= /^(([0]?[1-9])|([1,2]\d)|([3][0,1]))\W?(([0]?[1-9])|([1][0-2]))$/
var feDDMM             		= "$1$5"
var fsDDMM              	= "$1/$5"
var reDia					= /^(([0]?[1-9])|([1,2]\d)|([3][0,1]))$/ 
var reMes					= /^(([0]?[1-9])|([1][0-2]))$/ 
var reMes13					= /^(([0]?[1-9])|([1][0-3]))$/ 
var reAno4					= /^[1-9][0-9]{3}$/
var reAno2					= /^[0-9][0-9]{1}$/
var reMoedaSinal2Decimais 	= /^(\+|\-)?((\d*,?$)|(\d*,\d{1,2}$))/
var reCurrency				= /^(R\$\s*)?(([0-9]{1,3})+(\,([0-9]{2}$)))/;
var feCurrency				= "$2"
var fsCurrency				= "R$ $2"
var reHHMM              = /^(([0][0-9])|([1]\d)|([2][0,1,2,3]))\W?(([0-5][0-9]))$/
var fsHHMM					= "$1:$5"
var reNomePessoa	 		= /^[0-9A-Z\s?,.\-\/|\\\'@&]+$/;
var reNomePessoaSearch	= /^[0-9A-Z\s?,.\-\/|\\\'@&\*]+$/;
var reImovelCodigoCompleto    = /^(\d{2})\W?(\d{2})\W?(\d{4})\W?(\d{3})\W?(\d{3})$/;
var fsImovelCodigoCompleto    = "$1.$2.$3.$4.$5";

// usar no onkeyUp -  realiza avanco automatico - nao impede o avanco com tab para outro campo
// para isso combinar com onBlur
//
var impPararNoUltimo=true  				 // Usado para fazer ciclo : false= retorna ao primeiro - true = trava no ultimo campo 

// usar no onBlur - inpede passagem para outro campo se nao bate com formato
// 
function impVInput (input,repadrao,msgerr){
	erroValidacao = true;
	if (repadrao) {
		if (input.value != "") {
			if (!repadrao.test(input.value)) {
				if (msgerr) {
					alert(msgerr);
				} else
				{
					alert(parent.acoes.ERRO_VALIDACAO_PADRAO);
				}
        		/*setTimeout("doSelection(document.forms['" + 
		        input.form.name + "'].elements['" + input.name + "'])", 0)
                */                
            	input.select();input.focus();
				erroValidacao = true;
				return false;
			} else {
				
			}
		}
	}
	erroValidacao = false;
	return true
}
/**************************************************************************************************
***************************************************************************************************/
function validaTelefone(oCampo){
	var bFoneValido,fone;

	if(!oCampo.value){//se n?o estiver preenchido, retorna true. N?o testa obrigatoriedade
		return true;
	}

	bFoneValido = true;
	fone = jsReplace(oCampo.value,"-","");
	fone = jsReplace(fone," ","");
	if(fone.length < 9){
		bFoneValido = false;
	}
	else{
		if(!reDigitos.test(fone)){ //verifica se eh so numero
			bFoneValido = false;
		}
	}

	//Formata o campo
	if(bFoneValido){
		if(fone.length == 9)//prefixo com tres digitos
			oCampo.value = fone.substring(0,2) + " " + fone.substring(2,5) + "-" + fone.substring(5);
		else if(fone.length == 10)//prefixo com quatro digitos
			oCampo.value = fone.substring(0,2) + " " + fone.substring(2,6) + "-" + fone.substring(6);
	}

	return bFoneValido;
}

function impValTelefone(obj, mensagem){
	if(obj.value != ''){
		if(validaTelefone(obj) == true){
			
		}else{
			alert(mensagem);
			obj.select();obj.focus();
		}
	}	
}
//digito m?dulo 11 - pode retornar digito 10  para verifica??o de aproveitamento
// 					 
function impCalcDig11(numero)
{var pesos=[2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9]
 var calc= 0 , x=''
 var numero=String(numero).split("")
 var limite=numero.length -1
 var result = 0
 var pso=0
 for (var i=limite; i>=0; i--)
 { x+="\npso:"+pesos[pso]+" * "+ numero[i] + " = " + (pesos[pso] * parseInt(numero[i]))
   calc += (pesos[pso++] * parseInt(numero[i]))
 } 
 result = 11 - ((calc)%11)
  if (result == 11){result = 0}
  return result	 
  
}
/**************************************************************************************************
***************************************************************************************************/
// REPLACE ALL INSTANCES OF find WITH replace
// inString: the string you want to convert
// find:     the value to search for
// replace:  the value to substitute
//
// usage:    jsReplace(inString, find, replace);
// example:  jsReplace("To be or not to be", "be", "ski");
//           result: "To ski or not to ski"
//
function jsReplace(inString, find, replace) {
	if (!inString) {
		return "";
	}
	// REPLACE ALL INSTANCES OF find WITH replace
	if (inString.indexOf(find) != -1) {
		// SEPARATE THE STRING INTO AN ARRAY OF STRINGS USING THE VALUE IN find
		t = inString.split(find);

		// JOIN ALL ELEMENTS OF THE ARRAY, SEPARATED BY THE VALUE IN replace
		return (t.join(replace));
	}
	else {
		return inString;
	}
}

//substitui todas as ocorrencias de uma string express?o regular por outra
function impFormat(instr, reBusca, sTroca,umavez,ignorecase) {
alert(reBusca);
    if (isString(reBusca)){ 
	  	reBusca = new RegExp(reBusca,((ignorecase)?"i":"")+((umavez)?"":"g"))
	}
    return instr.replace(reBusca,sTroca);
}
/**************************************************************************************************
***************************************************************************************************/
function valFormat(instr, reBusca, sTroca, umavez, ignorecase) {
	var x = String(typeof reBusca);
	if (x.toUpperCase().indexOf('STRING')>=0)
		reBusca = new RegExp(reBusca,((ignorecase)?"i":"")+((umavez)?"":"g"))
	return instr.replace(reBusca,sTroca);
}

// Fun??es de valida??o - CPF
// true = ok
// false = com erro
// 0 = vazio
function impValCPFCGC(field,bmsg,itipo,mensagem) {
    var atipo=["CPF/CNPJ","CPF","CNPJ"]
    itipo=(itipo)?itipo:0 //0=qualquer, 1=cpf,2=cgc   
	var cpf='', cgc='', digito='',dg='', dgc='', digitoc='', k=0; i=0, j=0, soma=0, mt=0;
	if (field.value=='') return 0
	var cpfcgc = field.value;
	var bcpf=false
	var bcgc=false
	if (itipo==0||itipo==1) bcpf= reCPF.test(cpfcgc)	// valida tamanho e formato do CPF
	if (itipo==0||itipo==2) bcgc= reCGCMF.test(cpfcgc)	// valida tamanho e formato do CCG
	if ((!bcpf)&&(!bcgc)){// formato n?o reconhecido
	 	 if(bmsg) alert (mensagem)
		 field.select();field.focus();
         //selecionarCampo(field);
		 return false 
	 }
// tirar separadores
if (bcpf){cpfcgc=cpfcgc.replace(reCPF,feCPF) }
else     {cpfcgc=cpfcgc.replace(reCGCMF,feCGCMF)} 
//valida entradas f?ceis
var cpferr = "00000000000222222222223333333333344444444444"+
             "55555555555666666666667777777777799999999999"
if ( cpferr.indexOf(cpfcgc)>=0){// informado campo de facil entrada
	 	 if(bmsg) alert (mensagem)
		 field.select();field.focus();
         //selecionarCampo(field);
		 return false 
	 }
mult = [2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9]; // tabela de pesos para colunas 
if (bcgc)
	{  	cgc = cpfcgc.substring(0,12);
		digito = cpfcgc.substring(12,14);
		for (j = 1; j <= 2; j++) {
		    digitoc = impCalcDig11(cgc)
		    if (digitoc == 10){digitoc = 0}
		    dgc +=digitoc;
			cgc+=digitoc;
		}
  }
  else {
	  cpf = cpfcgc.substring(0,9);
	  digito = cpfcgc.substring(9,11);
	  for (j = 1; j <= 2; j++) {
	    soma = 0;
	    mt = 2;
	    for (i = 8 + j; i >= 1; i--) {
	      soma += parseInt(cpf.charAt(i-1),10) * mt;
	      mt++;
	    }
	    dg = 11 - (soma % 11);
	    if (dg > 9) {dg = 0};
	    cpf += dg;
		dgc+=dg
	  }
  } 
  if (dgc != digito) {// digito inv?lido
	 	 if(bmsg) alert (((bcgc)?"CNPJ":"CPF")+" com digitos inv??lidos\nVerifique sua digita????o!")
		 field.select();field.focus();
		 return false 
	 }
  else {
   field.value=valFormat(field.value,((bcgc)?reCGCMF:reCPF),((bcgc)?fsCGCMF:fsCPF))
   return true }
 
  }

// valida digito do inscri??o estadual
// 0 = CAMPO vazio
// true = ok
// false = erro
function impValIERS(field,bmsg) {
var dg='',ie='',IERS='',dgc=''
if (field.value=='') return 0
var IERS = field.value;
bIERS= reIERS.test(IERS)	// valida tamanho e formato do CPF
if (!bIERS){// formato n?o reconhecido
	 	 if(bmsg) alert ("Conte?do informado n?o reconhecido como Inscri??o Estadual -RS\nVerifique sua digita??o")
		 field.select();field.focus();
         //selecionarCampo(field);
		 return false 
	 }
IERS=impFormat(IERS,reIERS,feIERS)
ie=IERS.substring(0,9)
dg=IERS.substring(9)
dgc=impCalcDig11(ie)
if (dgc==10) dgc=0
if (dg!=dgc) {// D?gito inv?lido
	 	 if(bmsg) alert ("Inscri??o Estadual com d?gitos inv?lidos\nVerifique sua digita??o")
		 //field.select();field.focus();
         selecionarCampo(field);
		 return false 
	 }
else  {
   field.value=impFormat(field.value,reIERS,fsIERS)
   return true }
 
}

// Valida datas
// true = ok
// false = com erro
// 0 = vazio
function impValData(field,bmsg,itipo) {

  	if (field.value==""){return true};

    var atipo=["data","dd/mm/aa","dd/mm/aaaa","dd/mm","mm/aaaa"]
    itipo=(itipo)?itipo:0 //0=qualquer, 1=dmaa,2=dmaaaa,3=ddmm,4=mmaaaa   
    var bformatoData = formatoData(field.value)
	var bDDMMAA 	=((bformatoData==1)&&(itipo==0||itipo==1))
	var bDDMMAAAA	=((bformatoData==2)&&(itipo==0||itipo==2))
	var bDDMM 		=((bformatoData==3)&&(itipo==0||itipo==3))
	var bMMAAAA		=((bformatoData==4)&&(itipo==0||itipo==4))

	if ((!bDDMMAA)&&(!bDDMMAAAA)&&(!bDDMM)&&(!bMMAAAA)){// formato n?o reconhecido
	 	 if(bmsg) alert ("Data inválida!")
		 field.select();field.focus();
         //selecionarCampo(field);
		 return false 
	 }
  	var dia0,mes0,ano0
  	var auxData;
  	var dData=""
	var dHoje=new Date()
	
	if (bDDMMAAAA) dData = valFormat(field.value,reDDMMAAAA,fsDDMMAAAA);
  	else if (bDDMMAA) dData = valFormat(field.value,reDDMMAA,fsDDMMAA);
		else dData=valFormat(field.value+"/"+dHoje.getFullYear(),reDDMMAAAA,fsDDMMAAAA)
		   if (bMMAAAA) dData=valFormat(field.value,reMMAAAA,fsMMAAAA) //MMAAAA

  	dma=dData.split("/")
	
	if (bDDMMAA){dma[2]= (dma[2]<20)?parseInt(dma[2], 10)+2000:parseInt(dma[2], 10)+1900} // janelamento de data
	
	if (bMMAAAA){dma[2]= dma[1];  dma[1]= dma[0];} //ajusta array comparativo para MMAAAA
		
	var obj = new Date(dma[2], dma[1]-1, dma[0])//cria data no browser


	dma[0]= "00" + dma[0]
	dma[1]= "00" + dma[1]
	dma[2]= "0000" + dma[2]
  	dma[0] = dma[0].substr(dma[0].length-2) 
  	dma[1] = dma[1].substr(dma[1].length-2)
  	dma[2] = dma[2].substr(dma[2].length-4)
  	dData=dma.join("/")
	
	dia0 = "00" + obj.getDate()
  	mes0 = "00" + (obj.getMonth()+1)
  	ano0 = "0000" + obj.getFullYear()
  	dia0 = dia0.substr(dia0.length-2) 
  	mes0 = mes0.substr(mes0.length-2)
  	ano0 = ano0.substr(ano0.length-4)
	if (bMMAAAA)
		{ auxData =  mes0 + "/"+ ano0
		  dData = dma[1] + "/"+ dma[2]}
	else{ auxData = dia0 + "/"+  mes0 + "/"+ ano0}

	if ((auxData != dData)) { 
	
		if(bmsg) {
			alert ("Campo data deve obedecer ao seguinte formato "+atipo[itipo]+".\nVerifique sua digitacao!")
		}
		//if (bmsg) alert("Data incorreta\nVerifique sua Digita??o")
		field.select();field.focus();
		return false     
	}
  	else {  if (bMMAAAA){field.value=mes0+"/"+ano0}
			else 		{field.value=dia0+"/"+mes0+((itipo==3)?"":("/"+((itipo==1)?ano0.substring(ano0,2):ano0)))}
			return true}
  }
function dma2amd(sdata)
{	dma=sdata.split("/")
	if (dma.length==2){
		var dHoje=new Date()
		dma[2]=dHoje.getFullYear()
	}
	dma[0]= "00" + dma[0]
	dma[1]= "00" + dma[1]
	dma[2]= "0000" + dma[2]
	dma[0] = dma[0].substr(dma[0].length-2) 
	dma[1] = dma[1].substr(dma[1].length-2)
	dma[2] = dma[2].substr(dma[2].length-4)
	return dma[2]+"/"+dma[1]+"/"+dma[0]
}
function formatoData(data){
	if  (bMMAAAA=reMMAAAA.test(data)) return 4	
	if  (reDDMMAA.test(data))  return 1
	if  (reDDMMAAAA.test(data)) return 2
	if  (bDDMM=reDDMM.test(data)) return 3
	return false
}
/*
function difData(data1,data2){
var fdata1=formatoData(data1)
var fdata2=formatoData(data2)
if (!formatoData(data1)){
	alert(data1+" n?o ? de formato dd/mm/aa, dd/mm/aaaa ou dd/mm")
	return false
}
if (!formatoData(data2)){
	alert(data2+" n?o ? de formato dd/mm/aa, dd/mm/aaaa ou dd/mm")
	return false
}
if (fdata1!=fdata2){
	alert ('datas n?o est?o no mesmo formato:\n'+data1+" / "+data2)
}
	var bDDMMAA 	=(fdata1==1)
	var bDDMMAAAA	=(fdata1==2)
	var bDDMM 		=(fdata1==3)
if (bDDMMAAAA) 
{ data1 = impFormat(data1,reDDMMAAAA,fsDDMMAAAA);
  data2=impFormat(data2,reDDMMAAAA,fsDDMMAAAA);
}
else
{ 	if (bDDMMAA) 
	{data1 = impFormat(data1,reDDMMAA,fsDDMMAA);
	 data2=  impFormat(data2,reDDMMAA,fsDDMMAA);
	}
	 else{
	 data1=impFormat(data1+"/"+dHoje.getFullYear(),reDDMMAAAA,fsDDMMAAAA)
	 data2=impFormat(data2+"/"+dHoje.getFullYear(),reDDMMAAAA,fsDDMMAAAA)
	 }
}
dma1=data1.split("/");dma2=data2.split("/")
var b= new Date(dma2[2], dma2[1]-1, dma2[0]) 
var a= new Date(dma1[2], dma1[1]-1, dma1[0])
return (b.getTime() - a.getTime())/(24 * 60 * 60 * 1000)//nro de dias de diferen?a a partir dos milisegundos desde 1970
}
*/
function impValCurrency(obj,foco){
	if (foco) {
		if (obj.value.indexOf("R$ ") == 0) {
			obj.value = obj.value.substr(3,obj.value.length)
			obj.select()
		}
	} else {
		if ((!obj || obj != '[object]') || (obj.value == "") || (obj.value.indexOf(",") > 0 && obj.value.length > obj.value.indexOf(",") + 2) && (obj.value.indexOf("R$ ") >= 0)) {
			return;
		}
		if (obj.value.indexOf(",") > 0) {
			obj.value = "R$ " + obj.value + ("00").substr(0,parseInt((obj.value.indexOf(",") + 3) - obj.value.length))
		} else {
			obj.value = "R$ " + obj.value + ",00"
		}
	}
}

function formataNumero(obj){
  //alert(obj);
//  while (obj.search(".")!=-1) obj.replace(".",","); 
  obj = obj.replace(".",",");
  //alert(obj);

  if (obj.indexOf(",") > 0) {
    obj =  obj + ("00").substr(0,parseInt((obj.indexOf(",") + 3) - obj.length))
  } else {
    obj = obj + ",00"
  }
  return obj
}

function impValNumerico(obj,str) {
	if (!obj || obj != '[object]') {
		alert("Erro, obj n?o declarado ou n?o ? objeto.\nLocal: PRInputs.js # impValNumerico.")
		return false
	}
	if (isNaN(obj.value)) {
		if (str) {
			alert("O conte??do informado para " + str + " deve ser num??rico.")
		} else {
			alert("O conte??do informado deve ser num??rico.")
		}
		obj.focus();
		obj.select();
		return false;
	}
	return true
}

function igualaCampos(campo1,campo2) {
	var bSelect = true
	if (igualaCampos.arguments.length=3)
	{
		if (!igualaCampos.arguments[3])
			bSelect = false
	}		
	if (campo1.value.indexOf("/") > 0 || campo2.value.indexOf("/") > 0) {
		if (campo2.value == "") {
			campo2.value = campo1.value
			return;
		}
		var s1, s2, arr1, arr2
		if (campo1.value != "")
			s1 = (campo1.value.split("/"))[2] + (campo1.value.split("/"))[1] + (campo1.value.split("/"))[0]
		if (campo2.value != "")
			s2 = (campo2.value.split("/"))[2] + (campo2.value.split("/"))[1] + (campo2.value.split("/"))[0]
		if (s2 == "" || s2 < s1) {
			campo2.value = campo1.value
			if (campo2.select){
				if (bSelect)
					campo2.select()
			}	
		}
	} else {
		if (campo1.value == "") { return;}
		if ((campo2.value == "") || ( campo2.value < campo1.value )) {
		   campo2.value=campo1.value
			if (campo2.select){
				if (bSelect)
					campo2.select()
			}	
		}
	}
}

function valCurrency(obj,nInt,nDig,sMsgErro,fEntrada) {
	if (fEntrada) {
		obj.value.replace(/\,/gi,'');
		obj.select()
		return true;
	}
	if (sMsgErro) { // valida??o de conteudo
		if (!testeCurrency(obj,nInt,nDig)) {
			alert(sMsgErro)
			obj.focus()
			obj.select()
			return false;
		}
		return true;
	} else { // valida??o no momento da digita??o
		sKeyCode = "48,49,50,51,52,53,54,55,56,57,45,44"
		if (sKeyCode.indexOf(event.keyCode) < 0) {
			event.keyCode = ""
			return;
		}
	}
}

function limpaZerosEsquerda(inputString,tipo){
// uso: limpaZerosAEsquerda('000123abc')
// usar tipo = 1 para permitir zero
	var outputString  = '';
	var espacosAntes  = 0;
	tipo = 0
	if (tipo == 1) {
		re = /^0*$/;
		res = inputString.match(re);
		if (inputString.substr(0,1) != "-" && res == null) inic = 0;
		else  inic = 1;
	}
	else inic = 0;
	for(var i = inic ; i < inputString.length ; i++){
		if(inputString.charAt(i) == '0'){ espacosAntes++; }
		else {	break;	}
	}
	outputString =  String(inputString).substr(espacosAntes);
	return outputString;
}


function valHora(obj,entrada) {
	if (entrada) {
		obj.value = obj.value.replace(/\:|[a-zA-Z]/g,"")
		obj.select();
	} else {
		if (obj.value == "") return
		obj.value = obj.value.replace(/\:[a-zA-Z]/g,"")
		if (obj.value.length > 4) {
			valHoraErro(obj)
			return false;
		} else {
			if (obj.value.length < 4) {
				obj.value = ("0000").substr(0,(4-obj.value.length)) + obj.value
			}
			var a = obj.value
			if ((parseInt(a.substr(0,2)) > 23) || (parseInt(a.substr(a.length-2,2)) > 59)) {
				valHoraErro(obj)
				return false;
			}
			obj.value = a.substr(0,2) + ":" + a.substr(a.length-2,2)
		}
	}
	return true;
}

function valHoraErro(obj) {
	alert("Conteudo informado nao reconhecido como sendo hora\nVerifique a sua digitacao")
	obj.focus();obj.select();
}

// Alterada por M?rcio Werner
function validaTextarea(campo, tamanhoMaximo) {
	conteudoCampo = campo.value;
	tamanhoCampo = conteudoCampo.length;
	if (tamanhoCampo > tamanhoMaximo) {
		alert('Voc? excedeu o limite de\n' + tamanhoMaximo + ' caracteres para esse campo');
		//campo.select();
		campo.value = campo.value.substr(0, tamanhoMaximo);
		campo.focus();
		return false;
	}
	return true;
}

/*
Autor: F?bio Avila da Silva
Data de Cria??o: 27/01/2003
Par?metros:
Descri??o:
	Verifica se os campos previamente cadastrados no array camposObrigatorios[], existentes em
	cada p?gina, foram preenchidos.
*/

function verificaCamposObrigatorios() {
	var l = 0;
	var mensagem;
	var submete = true;
	
	var	camposNaoPreenchidos = montaVetorCamposObrigatoriosNaoPreenchidos(0, camposTela, false, false);
	
	with (document.forms[0]) {
	
		if ( camposNaoPreenchidos.length > 0 ) {
			if ( camposNaoPreenchidos.length == 1 ) {
				mensagem = 'Falta preencher o seguinte campo:\n'
			} else {
				mensagem = 'Faltam preencher os seguintes campos:\n'
			}
			for( z = 0; z < camposNaoPreenchidos.length; z++ ) {
				mensagem+= '\t? ' + camposObrigatorios[camposNaoPreenchidos[z]][1] + '\n'
			}
			alert(mensagem);
			submete = false;
		}
	
		if (submete) {
			submitForm('Salvar');
		} else {
			objeto = eval(camposObrigatorios[camposNaoPreenchidos[0]][0]);
			selecionarCampo(objeto);
			return false;
		}
	}
}
/**
 * Fun??o que monta um vetor com base nos elementos obrigatorios do array de campos tela
 * #author Glauber R. da Silva
 * @param formulario indice do formulario	
 * @param camposTela vetor montado na tela
 * @param permitir valor zero 0
 * @param permitir string vazia " "  	
 * @return vetor contendo indices do campos tela que n?o est?o preenchidos
 */
function montaVetorCamposObrigatoriosNaoPreenchidos(formulario, camposTela, permitirValorZerado, permitirStringsVaziasMaiorQueZero)
{
	var camposNaoPreenchidos = new Array();
	var l = 0;
	var campo;
	var conseguiBuscarElemento = false;
	
	for( j = 0; j < camposTela.length; j++ ) 
	{
		if( camposTela[j][2] == "NOTNULL" ) 
		{
			conseguiBuscarElemento = false;
			try
			{
				//campo = eval(camposTela[j][0]);
				//campo = pegaObjeto(camposTela[j][0]);
				var expressao = "document.forms[" + formulario + "]." + camposTela[j][0];
				campo = eval(expressao);
				if (campo)				
				{
					conseguiBuscarElemento = true;
				}				
			}catch(e)
			{
			}	 
			
			if (conseguiBuscarElemento)
			{
				if ( campo.type == "radio" ) 
				{
					if ( campo.name != nomeRadio) 
					{
						testeRadio = true;
						for( k = 0; k < campo.length; k++ ) 
						{
							if ( campo[k].checked ) 
							{
								testeRadio = false;
							}
						}
						if ( testeRadio ) 
						{
							camposNaoPreenchidos[l] = j;
							l++;
						}
					}
				} else 
				{
					if ( campo.value == "") 
					{
						camposNaoPreenchidos[l] = j;
						l++;
					}else if (!permitirValorZerado)
					{
						var inputValue = parseInt(campo.value, 10);
						if ((!isNaN(inputValue) && inputValue == 0 && campo.value.length == 1) || (permitirStringsVaziasMaiorQueZero && campo.value == 0))
						{
							camposNaoPreenchidos[l] = j;
							l++;
						}
					}
				}
			}				
		}
	}	
	
	return camposNaoPreenchidos;
}

