
var tratando = false;


// **************************************************************************
// Rotinas Auxiliares
// **************************************************************************

	function phpEditFormGetFileExtension( pFileName ) {

		if( pFileName.length == 0 ) return '';
		
		lIndexExtension = pFileName.lastIndexOf(".");
		
		lExt = pFileName.substring(lIndexExtension+1, pFileName.length  );
		
		return lExt.toUpperCase();
	}	

	function phpEditFormModulo(str) {
		soma=0;
		ind=2;
		for(pos=str.length-1;pos>-1;pos=pos-1) {
			soma = soma + (parseInt(str.charAt(pos)) * ind);
			ind++;
			if(str.length>11) {
				if(ind>9) ind=2;
			}
		}
		resto = soma - (Math.floor(soma / 11) * 11);
		if(resto < 2) {
			return 0
		}
		else {
			return 11 - resto
		}
	}

	function  phpEditFormRemoveTeclaNaoNumerica( campo ){
	
		l = campo.length ;
	
		carac = campo.substring(campo.length -1,campo.length);

		if ( (carac == '0') ||
			 (carac == '1') || 
			 (carac == '2') || 
			 (carac == '3') || 
			 (carac == '4') || 
			 (carac == '5') || 
			 (carac == '6') || 
			 (carac == '7') || 
			 (carac == '8') || 
			 (carac == '9') ) 
			return campo;

		return campo.substring(0,campo.length -1);		
	}
	
							



	/**
	 * Verifica se é uma tecla especial
	 *
	 * @param	string	$keyCode  código ascii da tecla
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormEhTeclaEspecial(keyCode){
	
		if (
			(keyCode==8)||
			(keyCode==9)||
			(keyCode==17)||
			(keyCode==18)||
			(keyCode==35)||
			(keyCode==36)||
			(keyCode==37)||
			(keyCode==39) ||
			(keyCode==45) ||
			(keyCode==46) 
			) return true;
	
		return false;
	}

	/**
	 * Verifica se é uma tecla numérica
	 *
	 * @param	string	$keyCode  código ascii da tecla
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormEhTeclaNumerica(keyCode){
	
		if ( ( (keyCode>=48) && (keyCode<=57) ) || ( (keyCode>=96) && (keyCode<=105) ) )
			return true;

		return false;
	}



	/**
	 * Valida um cep pelo tamanho
	 *
	 * @param	string	$v   valor no formato dd-mm-yyyy ou dd/mm/yyyy ou yyyy-mm-dd ou yyyy/mm/dd
	 * @return	int true se válido, false se inválido
	 */
  	function phpEditFormIsCep(name,field) {
	
		var checkstr = "0123456789";
		var CepField = field;
		var Cepvalue = "";
		var CepTemp = "";

		   Cepvalue = CepField.value;
		   /* Delete all chars except 0..9 */
		   for (i = 0; i < Cepvalue.length; i++) {
			  if (checkstr.indexOf(Cepvalue.substr(i,1)) >= 0) {
				 CepTemp = CepTemp + Cepvalue.substr(i,1);
			  }
		   }
		   

		   Cepvalue = CepTemp;
		   /* Always change date to 8 digits - string*/
		   /* if year is entered as 2-digit / always assume 20xx */
		   if (Cepvalue.length < 8) 
		  		return "-O campo " + name + " não é um CEP válido!\n"; 		

		return '';
	}
	
	
	/**
	 * Valida um cep pelo tamanho
	 *
	 * @param	string	$pNome   Título do campo
	 * @param	string	$pFileName   Nome /Path do arquivo
	 * @param	array	$pExtensions   Array de extensoes válidas
	 * @return	string vazio se válido, texto de erro se inválido
	 */	
	function phpEditFormIsValidExtension( pNome, pFileName, pExtensions ) {

		if( pFileName.length == 0 ) return '';

		lFileExt = phpEditFormGetFileExtension( pFileName );
			
		lValidStr = '';
		lSep = '';
		for( i =0 ; i < pExtensions.length; i++ ){
			lValidStr = lValidStr + lSep + pExtensions[i];
			lSep =  ' ou ';
			
			if( lFileExt == pExtensions[i] )
				return '';
		}
		
	  	return "-O campo " + pNome + " deve ser do tipo " + name + lValidStr + "!\n"; 		
	}	
	
	
	/**
	 * Valida uma data informada
	 *
	 * @param	string	$v   valor no formato dd-mm-yyyy ou dd/mm/yyyy ou yyyy-mm-dd ou yyyy/mm/dd
	 * @return	int true se válido, false se inválido
	 */
  	function phpEditFormIsDate(name,field) {

	
		var checkstr = "0123456789";
		var DateField = field;
		var Datevalue = "";
		var DateTemp = "";
		var seperator = "/";
		var day;
		var month;
		var year;
		var leap = 0;
		var err = 0;
		var i;
		
		   err = 0;
		   DateValue = DateField.value;
		   /* Delete all chars except 0..9 */
		   for (i = 0; i < DateValue.length; i++) {
			  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
				 DateTemp = DateTemp + DateValue.substr(i,1);
			  }
		   }
		   

		   DateValue = DateTemp;
		   /* Always change date to 8 digits - string*/
		   /* if year is entered as 2-digit / always assume 20xx */
		   if (DateValue.length == 6) {
			  DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
		   if (DateValue.length != 8) {
			  err = 19;}
		   /* year is wrong if year = 0000 */
		   year = DateValue.substr(4,4);
		   if (year == 0) {
			  err = 20;
		   }
		   /* Validation of month*/
		   month = DateValue.substr(2,2);
		   if ((month < 1) || (month > 12)) {
			  err = 21;
		   }
		   /* Validation of day*/
		   day = DateValue.substr(0,2);
		   if (day < 1) {
			 err = 22;
		   }
		   /* Validation leap-year / february / day */
		   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
			  leap = 1;
		   }
		   if ((month == 2) && (leap == 1) && (day > 29)) {
			  err = 23;
		   }
		   if ((month == 2) && (leap != 1) && (day > 28)) {
			  err = 24;
		   }
		   /* Validation of other months */
		   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
			  err = 25;
		   }
		   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
			  err = 26;
		   }
		   /* if 00 ist entered, no error, deleting the entry */
		   if ((day == 0) && (month == 0) && (year == 00)) {
			  err = 0; day = ""; month = ""; year = ""; seperator = "";
		   }
		   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
		   if (err == 0) {
		//	  DateField.value = day + seperator + month + seperator + year;
			  return '';	
		   }
		   /* Error-message if err != 0 */
		   else {
//			  alert("Date is incorrect!");
			  return "-O campo " + name + " não é uma data válida!\n"; 		
			  DateField.select();
			  DateField.focus();
//			  return false;
		   }
		   
	}

	/**
	 * Valida uma hora informada
	 *
	 * @param	string	$v   valor no formato dd-mm-yyyy ou dd/mm/yyyy ou yyyy-mm-dd ou yyyy/mm/dd
	 * @return	int true se válido, false se inválido
	 */
  	function phpEditFormIsTime(name,field) {

	
		var checkstr = "0123456789";
		var DateField = field;
		var Datevalue = "";
		var DateTemp = "";
		var seperator = ":";
		var hour;
		var minute;
		var seconds;
		var leap = 0;
		var err = 0;
		var i;
		
		   err = 0;
		   DateValue = DateField.value;
		   /* Delete all chars except 0..9 */
		   for (i = 0; i < DateValue.length; i++) {
			  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
				 DateTemp = DateTemp + DateValue.substr(i,1);
			  }
		   }
		   

		   DateValue = DateTemp;

		   /* Validation of minute*/
		   minute = DateValue.substr(2,2);
		   if ((minute < 0) || (minute > 59)) {
			  err = 21;
		   }
		   /* Validation of hour*/
		   hour = DateValue.substr(0,2);
		   if ((hour < 0) || (hour > 23)) {
			 err = 22;
		   }

		   /* if 00 ist entered, no error, deleting the entry */
		   if ((hour == 0) && (minute == 0) && (second == 00)) {
			  err = 0; hour = ""; minute = ""; second = ""; seperator = "";
		   }
		   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
		   if (err == 0) {
			  return '';	
		   }

		   /* Error-message if err != 0 */
		   else {
			  return "-O campo " + name + " não é uma hora válida!\n"; 		
			  DateField.select();
			  DateField.focus();
		   }
		   
	}

	/**
	 * Valida um CPF 
	 *
	 * @param	string	$v   valor no formato dd-mm-yyyy ou dd/mm/yyyy ou yyyy-mm-dd ou yyyy/mm/dd
	 * @return	int true se válido, false se inválido
	 */
  	function phpEditFormIsCPF(name,field) {
		var cpfq = '';
		var cpfq1;	 
	 
	 
		sText = field.value.split("");	 
		for (i = 0; i < sText.length; i++){  

			Char = sText[i]; // sText.charAt(i)	
			if ((Char >= "0") &&   (Char <= "9") ) 	
				cpfq = cpfq + sText[i];
	   	}	 
	 

		erro = false;
		erro1 = false;	
		cpf1 = cpfq.split("");

		if ( cpfq.length != 11 ){ 
			erro=true;
		}else if ( (cpf1[0]==cpf1[1])&&(cpf1[1]==cpf1[2])&&(cpf1[2]==cpf1[3])
				&&(cpf1[3]==cpf1[4])&&(cpf1[4]==cpf1[5])&&(cpf1[5]==cpf1[6])
				&&(cpf1[6]==cpf1[7])&&(cpf1[7]==cpf1[8])&&(cpf1[8]==cpf1[9])
				&&(cpf1[9]==cpf1[10])&&(cpf1[10]==cpf1[0])){ 
				erro=true;
		}
		else{	
			if (isNaN(cpfq)) {
				erro = true;
 			}
 		
			var i;
			var c = cpfq.substr(0,9);
			var dv = cpfq.substr(9,2);
			var d1 = 0;
			for (i = 0; i < 9; i++) {
				d1 += c.charAt(i)*(10-i);
			}
			if (d1 == 0){
				erro = true;
			}         
			d1 = 11 - (d1 % 11);
			if (d1 > 9) 
				d1 = 0;         
			if (dv.charAt(0) != d1) {
				erro = true;        
			}
			d1 *= 2;
			for (i = 0; i < 9; i++) {
				d1 += c.charAt(i)*(11-i);
			}
			d1 = 11 - (d1 % 11);
			if (d1 > 9) 
				d1 = 0;
			if (dv.charAt(1) != d1) {
				erro = true;
			}
		}   
	
		if(erro)
 	  		return "-O campo " + name + " não é um CPF válido!\n"; 		

		return '';
	}


	/**
	 * Valida um CNPJ
	 *
	 * @param	string	$v   valor no formato dd-mm-yyyy ou dd/mm/yyyy ou yyyy-mm-dd ou yyyy/mm/dd
	 * @return	int true se válido, false se inválido
	 */
  	function phpEditFormIsCNPJ(name,field) {
     var valor = '';
	 var aux;
	 var ret;
	 

   sText = field.value.split("");	 
   for (i = 0; i < sText.length; i++){  

	  Char = sText[i]; // sText.charAt(i)	
	  if ((Char >= "0") &&   (Char <= "9") ) 	
          valor = valor + sText[i];
   }	 
	
	
	primeiro=valor.substr(1,1);
	size=valor.length;
	erro = false;
	falso = true;	
	

	if(!erro){
	
		size--;
		for (i = 2; i < size-1; i++){
			proximo=(valor.substr(i,1));
			if (primeiro!=proximo) {
				falso=false;
			}
		}
	
		if (falso){
			erro = true;
		}else
	      if(phpEditFormModulo(valor.substring(0,valor.length - 2)) + "" + phpEditFormModulo(valor.substring(0,valor.length - 1)) !=valor.substring(valor.length - 2,valor.length)) 
   		    erro = true;
	}
	
		if(erro)
 	  		return "-O campo " + name + " não é um CNPJ válido!\n"; 		

		return '';
	}




// **************************************************************************
// Rotinas de Formatação
// **************************************************************************


	/**
	 * Formata teclas digitadas para maiúsculas
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataMaiusculas(campo,e){
		campo.value = campo.value.toUpperCase(); 
		e.returnValue=true; 	
		return true;
	}

	/**
	 * Formata texto com separadores de data
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataData(campo,e){
	   valor= campo.value;
	
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		if(keyCode==8){
			if(valor.length==3) campo.value=valor.substring(0,2);
			if(valor.length==6) campo.value=valor.substring(0,5);		 
			return true; 
		}	

		// Se não for número ignora tecla digitada
		if (!phpEditFormEhTeclaNumerica(keyCode)){
		
			if( phpEditFormEhTeclaEspecial( keyCode ) ){
				return true;
			}	
	
			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );
			e.returnValue=false; 
			return false;
		}
		

		if( (valor.length==2) || (valor.length==5) )  campo.value=campo.value+'/';
		
	
	
		return true;
	}


	/**
	 * Formata texto com separadores de hora
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataHora(campo,e){
	   valor= campo.value;
	
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		if(keyCode==8){
			if(valor.length==3) campo.value=valor.substring(0,2);
			return true; 
		}	

		// Se não for número ignora tecla digitada
		if (!phpEditFormEhTeclaNumerica(keyCode)){
		
			if( phpEditFormEhTeclaEspecial( keyCode ) ){
				return true;
			}	
	
			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );
			e.returnValue=false; 
			return false;
		}
		

		if (valor.length==2)  campo.value=campo.value+':';
		
	
	
		return true;
	}


	/**
	 * Formata texto com separadores para CPF
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataCPF(campo,e){
	   valor= campo.value;
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		if(keyCode==8){
			if(valor.length==4) campo.value=valor.substring(0,3);
			if(valor.length==8) campo.value=valor.substring(0,7);		 
			if(valor.length==12) campo.value=valor.substring(0,11);		 
			return true; 
		}	
	
		
		// Se não for número ignora tecla digitada
		if(!phpEditFormEhTeclaNumerica(keyCode)	){

			if( phpEditFormEhTeclaEspecial( keyCode ) )
				return true;
	
			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );
			e.returnValue=false; 
			return false;
		}
	
	
		//14 digitos + campos formatacao
		if(valor.length > 13 ){
		   if (navigator.appName.indexOf('Microsoft') != -1)
			campo.value=valor.substring(0,14);
		   else
			campo.value=valor.substring(0,14);
			
			e.returnValue=false; 
			return false;
		}
		
		if( (valor.length==3) || (valor.length==7) )  campo.value=campo.value+'.';
		if (valor.length==11) campo.value=campo.value+'/';
		
		return true;
	}


	/**
	 * Formata texto com separadores para CPF
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataSomenteNumeros(campo,e){
	   valor= campo.value;
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	
		// Se não for número ignora tecla digitada
		if(!phpEditFormEhTeclaNumerica(keyCode)	){
	
			if( phpEditFormEhTeclaEspecial( keyCode ) )
				return true;
	
			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );
			e.returnValue=false; 
			return false;		
		}
		else return true;
	}


	/**
	 * Formata texto com separadores para CEP
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataCep(campo,e){
	
	   valor= campo.value;
	   lLength = valor.length;
	
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	
		if(keyCode==8){
			if(valor.length==7) campo.value=valor.substring(0,6);
			return true; 
		}	
	
		
		// Se não for número ignora tecla digitada
		if(!phpEditFormEhTeclaNumerica(keyCode)	){

			if( phpEditFormEhTeclaEspecial( keyCode ) )
				return true;
			
			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );				
			e.returnValue=false; 
			return false;
		}
	
		//8 digitos + campos formatacao
		if(valor.length > 8 ){
		   if (navigator.appName.indexOf('Microsoft') != -1)
			campo.value=valor.substring(0,9);
		   else
			campo.value=valor.substring(0,9);
			
			e.returnValue=false; 
			return false;
		}
		
		//if (valor.length==5) campo.value=campo.value+'-';
		if (lLength==5) campo.value=campo.value+'-';
		
		 
		
		return true;
	}


	/**
	 * Formata texto com separadores para valor ponto flutuante
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataFloat(campo,e,maxcasas){
		valor= campo.value;
		valor2= campo.value;
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	
		//nao aceita "."
		if ( (keyCode==46) || (keyCode==190) ){
		   campo.value=valor.substring(0,valor.length-1);	
		   e.returnValue=false;
		   return false;
		}
		
		// se clicou ","
		if ( (keyCode==44) || (keyCode==188) ) { 

			// nao aceita mais de um "," 
			if (campo.value.indexOf(",") != -1){
				   valor2 = valor.substring(0,valor.length-1);
				   
				   if (valor2.indexOf(",") != -1){
					   campo.value=valor.substring(0,valor.length-1);	
					   e.returnValue=false;
					   return false;
					}   
			}   
	
	
			// se informou somente "," , poe "0,"
			if ( (campo.value == "," ) && ( (keyCode==44) || (keyCode==188) ) ){
			  campo.value = "0" + campo.value;
			}   
			
			return true;
		 }	
			
			
		// Se não for número ignora tecla digitada
		if(!phpEditFormEhTeclaNumerica(keyCode)	){

			if( phpEditFormEhTeclaEspecial( keyCode ) )
				return true;

			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );
			e.returnValue=false; 
			return false;
		}			
			
		// testa número de casas
		pos = campo.value.indexOf(",");
		if(pos != -1){
			 frac = campo.value.substr(pos + 1, 10);
			 if( frac.length > maxcasas){
				campo.value=valor.substring(0,valor.length -1);				
				e.returnValue=false;
				return false;
			 }   
		}				 

		return true;
	}

	/**
	 * Formata texto com separadores para CNPJ
	 *
	 * @param	string	$campo  objeto de edição
	 * @param	string	$e  evento
	 * @return	int true se válido, false se inválido
	 */
	function phpEditFormFormataCNPJ(campo,e){
	   valor= campo.value;
	
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	
	
	
	
		if(keyCode==8){
			if(valor.length==3) campo.value=valor.substring(0,2);
			if(valor.length==7) campo.value=valor.substring(0,6);		 
			if(valor.length==11) campo.value=valor.substring(0,10);		 
			if(valor.length==16) campo.value=valor.substring(0,15);		 
			return true; 
		}	
	
		
		// Se não for número ignora tecla digitada
		if(!phpEditFormEhTeclaNumerica(keyCode)	){

			if( phpEditFormEhTeclaEspecial( keyCode ) )
				return true;
	
			campo.value = phpEditFormRemoveTeclaNaoNumerica( valor );
			e.returnValue=false; 
			return false;
		}
	
		//14 digitos + campos formatacao
		if(valor.length > 17 ){
		   if (navigator.appName.indexOf('Microsoft') != -1)
			campo.value=valor.substring(0,18);
		   else
			campo.value=valor.substring(0,18);
			
			e.returnValue=false; 
			return false;
		}
		
		if( (valor.length==2) || (valor.length==6) )  campo.value=campo.value+'.';
		if (valor.length==10) campo.value=campo.value+'/';
		if (valor.length==15) campo.value=campo.value+'-';
		
		return true;
	}


// nao ajustados ainda....


function formataPercentualInteiro(campo,e){
   valor= campo.value;

	var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	// Se não for número ignora tecla digitada
	if (keyCode<48||keyCode>57){
		if ((keyCode==8)||(keyCode==46)||(keyCode==37)||(keyCode==39)) return true;
		
     	campo.value=valor.substring(0,valor.length-1);
		e.returnValue=false; 
	    return false;		
	}

	if (eval( campo.value ) > 100){
		
     	campo.value=valor.substring(0,valor.length-1);
		e.returnValue=false; 
	    return false;		
	}
	
	return true;
}








function formataStrMoedaReal(campo){
   var indPonto;
   var vl = ''; 

   vl = campo.toString();
 
   indPonto = vl.indexOf('.');
   if(indPonto == -1){ 
      vl +=   ',00';
      return 'R$ ' + vl;
   }else{
   
//str_1 = str.replace(re,"noite");
    return 'R$ ' + vl.replace('.',',');
   	 
   }	 
   

}



