// JavaScript Document
// Função para aceitar apenas números em campos texto
// onKeyPress = "return soNumeros(event)"
function soNumeros(e){
     var key;
     var keychar;

     if (window.event) {
        key = window.event.keyCode;
     } else if (e) {
        key = e.which;
     } else {
        return true;
     }	

     keychar = String.fromCharCode(key);

     // teclas de controle
     if ((key==null) || (key==0) || (key==8) ||
          (key==9) || (key==13) || (key==27) ) {
        return true;
     } else if ((("0123456789").indexOf(keychar) > -1)) {
        return true;     
     } else {
        return false;
     }
}



function trim(str){
	return str.replace(/^\s*|\s*$/g,"");
}


function validaCPF(cpf) {
	//cpf = cpf.value;
	valor = true;
	erro = new String;

	cpf = cpf. replace (".","");
	cpf = cpf. replace (".","");
	cpf = cpf. replace ("-","");

	if (cpf.length < 11) erro += "São necessários 11 dígitos para verificação do CPF! \n"; 
	
	var nonNumbers = /\D/;

	if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas números! \n";	

	if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
		  erro += "Número de CPF inválido!\n"
	}

	var a = [];
	var b = new Number;
	var c = 11;
	for (i=0; i<11; i++){
		a[i] = cpf.charAt(i);
		if (i < 9) b += (a[i] *  --c);
	}
	if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
	b = 0;
	c = 11;
	for (y=0; y<10; y++) b += (a[y] *  c--); 
	if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
	if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
		erro +="Dígito verificador do CPF com problema!\n";
	}

	if (erro.length > 0){		
		return erro;
	} else {
		return '';
	}
}



 function validaCNPJ(CNPJ) {
		 erro = new String;
		 erro = '';
		 if (CNPJ =='00.000.000/0000-00'){
			 erro += "É necessário preencher corretamente o número do CNPJ!\n ";
			 return erro;
		 }
		 if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ!\n "; 
		 if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
		 if (erro.length == 0) erro += "É necessário preencher corretamente o número do CNPJ!\n ";
		 }
		 //substituir os caracteres que não são números
	   if(document.layers && parseInt(navigator.appVersion) == 4){
			   x = CNPJ.substring(0,2);
			   x += CNPJ. substring (3,6);
			   x += CNPJ. substring (7,10);
			   x += CNPJ. substring (11,15);
			   x += CNPJ. substring (16,18);
			   CNPJ = x; 
	   } else {
			   CNPJ = CNPJ. replace (".","");
			   CNPJ = CNPJ. replace (".","");
			   CNPJ = CNPJ. replace ("-","");
			   CNPJ = CNPJ. replace ("/","");
	   }
	   var nonNumbers = /\D/;
	   if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números!\n "; 
	   var a = [];
	   var b = new Number;
	   var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
	   for (i=0; i<12; i++){
			   a[i] = CNPJ.charAt(i);
			   b += a[i] * c[i+1];
}
	   if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
	   b = 0;
	   for (y=0; y<13; y++) {
			   b += (a[y] * c[y]); 
	   }
	   if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
	   if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
			   erro +="Dígito verificador com problema!\n";
	   }
	   if (erro.length > 0){
			   return erro;
	   } 
	   return '';
}

// Função para aceitar apenas ('.','/','-')
function soCNPJ(e){
     var key;
     var keychar;


     if (window.event) {
        key = window.event.keyCode;
     } else if (e) {
        key = e.which;
     } else {
        return true;
     }

     keychar = String.fromCharCode(key);

     // teclas de controle
     if ((key==null) || (key==0) || (key==8) ||
          (key==9) || (key==13) || (key==27) || (key==45) || (key==46) || (key==47) ) {
        return true;
     } else if ((("0123456789-./").indexOf(keychar) > -1)) {
        return true;     
     } else {
        return false;
     }
}

// Função para aceitar apenas ('-')
function soCEP(e){
     var key;
     var keychar;

     if (window.event) {
        key = window.event.keyCode;
     } else if (e) {
        key = e.which;
     } else {
        return true;
     }

     keychar = String.fromCharCode(key);

     // teclas de controle
     if ((key==null) || (key==0) || (key==8) ||
          (key==9) || (key==13) || (key==27) || (key==45) ) {
        return true;
     } else if ((("0123456789-").indexOf(keychar) > -1)) {
        return true;     
     } else {
        return false;
     }
}

//##//funcoes de paginacao



// máscara de campos
// uso: onkeydown="FormataCampo(this,event,'##/##/####')"
function FormataCampo(Campo,teclapres,mascara, sai) {

	if (sai == "S" && consistente == "N") {
		if (obrigatorio == "N" && Campo.value.length > 0) {
			obrig_fixo = "S";
			Consist(Campo.maxLength, Campo);
			obrig_fixo = "N";
		}
		if (obrigatorio == "S" || Campo.value.length > 0) {
			if (sai == "S") {
				if (Campo.value.length != mascara.length) {
					alert('O campo precisa estar neste formato:\n\n       '+ mascara);
					Campo.value = "";
				}
				erro = "S";
				return false;
			}
		}
	}
	if (sai == "S" && obrigatorio == "N" && Campo.value.length > 0) {
		obrig_fixo = "S";
		Consist(Campo.maxLength, Campo);
		obrig_fixo = "N";
		if (consistente == "N") {
			alert('O campo precisa estar neste formato:\n\n       '+ mascara);
		}
	}


	strtext = Campo.value;
	tamtext = strtext.length;
	tammask = mascara.length;
	arrmask = new Array(tammask);
	for (var i = 0 ; i < tammask; i++) {
		arrmask[i] = mascara.slice(i,i+1)
	} 

	//alert(teclapres.keyCode );
	if (((((arrmask[tamtext] == "#") || (arrmask[tamtext] == "9"))) || (((arrmask[tamtext+1] != "#") || (arrmask[tamtext+1] != "9"))))) {
		if ((teclapres.keyCode >= 35 && teclapres.keyCode <= 40)||(teclapres.keyCode >= 48 && teclapres.keyCode <= 57)||(teclapres.keyCode >= 96 && teclapres.keyCode <= 105)||(teclapres.keyCode == 8)||(teclapres.keyCode == 9) ||(teclapres.keyCode == 46) ||(teclapres.keyCode == 13)||(teclapres.keyCode == 16)){
			Organiza_Casa(Campo,arrmask[tamtext],teclapres.keyCode,strtext)		
		} else {
			Detona_Event(Campo,strtext)
		}
	} else {
		if ((arrmask[tamtext] == "A")) {
			charupper = event.valueOf()
			Detona_Event(Campo,strtext)
			masktext = strtext + charupper 
			Campo.value = masktext
		}
	}
}

function check_date(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;
	var strDataMsg = "";

	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;
	  strDataMsg = "A data informada é inválida.";		  
	}

   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
	  err = 20;
	  strDataMsg = "O ano informado é inválido.";
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
	  err = 21;
	  strDataMsg = "O mês informado é inválido.";
   }

   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
	 err = 22;
	 strDataMsg = "O dia informado é inválido.";
   }

   /* 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;
	  strDataMsg = "O mês informado possui no máximo 29 dias.";
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
	  err = 24;
	  strDataMsg = "O mês informado possui no máximo 28 dias.";
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
	  err = 25;
	  strDataMsg = "O mês informado possui no máximo 31 dias.";
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
	  err = 26;
	  strDataMsg = "O mês informado possui no máximo 30 dias.";
   }
   /* 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 true;
   }
   else {
	  alert(strDataMsg);
	  DateField.select();
	  DateField.focus();
	  return false;
   }
}

function Organiza_Casa(Campo,arrpos,teclapres_key,strtext){
	if (((arrpos == "/") || (arrpos == ".") || (arrpos == ",") || (arrpos == ":") || (arrpos == " ") || (arrpos == "-")) && !(teclapres_key == 8)){
		separador = arrpos
		masktext = strtext + separador
		Campo.value = masktext
	}
}
function Detona_Event(Campo,strtext){
	event.returnValue = false
	if (strtext != "") {
		Campo.value = strtext
	}
}

function limitatext(campo,maxtamanho){
	if (campo.value.length>=maxtamanho && event.keyCode !=8 && event.keyCode !=46) { 
		event.keyCode = 0;
	}

	if (campo.value.length >= maxtamanho) {
		campo.value = campo.value.substring(0,maxtamanho);
	}

}

function soMoney(tammax){
	event.srcElement.maxLength=tammax;
	if (event.srcElement.value.length+1>tammax) { 
		event.KeyCode=0;
	}

	if ( ((event.keyCode >= 48) && (event.keyCode <= 57 )) || ((event.keyCode == 44) || (event.keyCode == 45))) {
		if (event.keyCode == 44) {
			if (event.srcElement.value.indexOf(",") > -1) {			
				event.keyCode = 0
				return false
			}
		}
		if (event.keyCode == 45) {
			if (event.srcElement.value.indexOf("-") > -1) {			
				event.keyCode = 0
				return false
			}
		}
		return true
	} else {
		if (event.keyCode != 8){
			 event.keyCode = 0
			 return false
		 }
	}
}

function GetDecimalDelimiter(nCountryCode)
{

       var sRet='';

       switch (nCountryCode)
       {

            case 3:
                           
                           sRet = ',';
                           break;
            
            case 2:
                           
                           sRet = ',';
                           break;
            default:
                           sRet = '.';
                           break;
 
        }

      return sRet;

}

function GetCommaDelimiter(nCountryCode)
{

       var sRet='';

       switch (nCountryCode)
       {
            
            case 3:   
                           
                           sRet = '';
                           break;
            case 2:   
                           
                           sRet = '.';
                           break;
            default:
                           sRet = ',';
                           break;
 
        }

      return sRet;

}

function FormatClean(num) {
     var sVal='';
     var nVal = num.length;
     var sChar='';
     
   try
   {
       for(i=0;i<nVal;i++)
      {
         sChar = num.charAt(i);
         nChar = sChar.charCodeAt(0);
         if ((nChar >=48) && (nChar <=57))  { 
			 sVal += num.charAt(i);   
		 }
      }
   }
    catch (exception) { AlertError("Format Clean",e); } 

    return sVal;
}
 

function FormatCurrency(num,nCountryCode) {       
        var sVal='';
        var minus='';
        var Decimal='';

		Decimal = GetDecimalDelimiter(nCountryCode);

		if (num.toString().lastIndexOf("-") == 0) { 
			minus='-'; 
		}

		if (num.toString().lastIndexOf(Decimal) < 0) { 
			num = num + '00'; 			
		}
		// completa com zeros parte decimal caso tenha
		if (num.toString().lastIndexOf(Decimal) > -1) { 
			arrNum	= num.toString().split(Decimal);
			mil		= arrNum[0];
			cen		= arrNum[1];

			if (cen.toString().length == 0) { cen = cen + '00'; }
			if (cen.toString().length == 1) { cen = cen + '0'; }

			num = mil +'.'+ cen;
		}
		num = FormatClean(num);
        sVal = minus + FormatDollar(num,GetCommaDelimiter(nCountryCode)) + GetDecimalDelimiter(nCountryCode) + FormatCents(num); 
		return sVal;		

}

function FormatNumber(num,nCountryCode)
{       
        var sVal='';
        var minus='';
        var CommaDelimiter='';

        try 
       {

           CommaDelimiter = GetCommaDelimiter(nCountryCode);

           if (num.toString().lastIndexOf("-") == 0) { minus='-'; }

           num = FormatClean(num);

           num = parseFloat(num);

           var samount = new String(num);
             
           for (var i = 0; i < Math.floor((samount.length-(1+i))/3); i++)
          {
             samount = samount.substring(0,samount.length-(4*i+3)) + CommaDelimiter + samount.substring(samount.length-(4*i+3));
          }

        }
        catch (exception) { AlertError("Format Number",e); }
        return minus + samount;
}

function FormatCents(amount)
{
     var cents = '';

      try
      {
           amount = parseFloat(amount);
           var samount = new String(amount);

           if (samount.length == 0) { return '00'; }
           if (samount.length == 1) { return '0' + samount; }
           if (samount.length == 2) { return samount; }
         
           cents =  samount.substring(samount.length -2,samount.length);
          
      }
      catch (exception) { AlertError("Format Cents",e); }
      return cents;
}

function FormatDollar(amount,CommaDelimiter) {
   try 
   {
  
        amount = parseFloat(amount);

        var samount = new String(amount);

        if (samount.length < 3) { return 0; }  

        samount =  samount.substring(0,samount.length -2);
             
        for (var i = 0; i < Math.floor((samount.length-(1+i))/3); i++)
        {
           samount = samount.substring(0,samount.length-(4*i+3)) + CommaDelimiter + samount.substring(samount.length-(4*i+3));
         }

   }
    catch (exception) { AlertError("Format Comma",e); }
    return samount;
}


 function replace(strIn, strFind, strRpc) {
    out = strFind; // replace this
    add = strRpc; // with this
    temp = "" + strIn // temporary holder

    while (temp.indexOf(out)>-1) {
    pos= temp.indexOf(out);
    temp = "" + (temp.substring(0, pos) + add +
    temp.substring((pos + out.length), temp.length));
    }
    return temp;
}
