// JavaScript Document

function identBot(botao) {
	oBot=botao;
	return true;
}

function showHide(ocampo,id,disp) {
 var obj = document.getElementById(id);
 if(ocampo.checked==true) {
  obj.style.display = disp;
 } 
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v5.0
  oldVal=oBot.value;
  oBot.disabled=true;
  oBot.value="Aguarde...";
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' deve conter um e-mail válido.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' deve conter somente números.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' deve conter um número entre '+min+' e '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' é obrigatório.\n'; }
  } if (errors) {
  				oBot.disabled=false;
  				oBot.value=oldVal;
  				alert('Erro(s) no preenchimento:\n'+errors);
				};
  document.MM_returnValue = (errors == '');
}

// VALIDA CNPJ E CPF  --------------------------------------------

function valida_cpfcnpj(ocampo)  // VALIDA CNPJ E CPF  ==============
{
var cpfcnpj = ocampo.value;
s = limpa_string(cpfcnpj);

if(cpfcnpj=="") { return true; }

// checa se é cpf ------------------------------
if (s.length == 11) 
	{
	if (valida_CPF(cpfcnpj) == false ) 
		{
           alert("O CPF não é válido !");
           ocampo.focus();
           return false;
		}
     }

 // checa se é cgc ------------------------------
     else if (s.length == 14) 
	 {
       if (valida_CGC(cpfcnpj) == false ) 
	   {
		   alert("O CNPJ não é válido !");
           ocampo.focus();
           return false;
		}
     } else {
        alert("O CPF/CGC não é válido !");
        ocampo.focus();
        return false;
     }
}

function limpa_string(S){ // Deixa so' os digitos no numero

var Digitos = "0123456789";
var temp = "";
var digito = "";
    for (var i=0; i<S.length; i++){
      digito = S.charAt(i);
      if (Digitos.indexOf(digito)>=0){temp=temp+digito}
    }
    return temp
}
function valida_CPF(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(10-i);
	}
        if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	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)
	{
		return false;
	}
        return true;
}

function valida_CGC(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
	var d1 = 0;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
        if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		alert('CPF/CGC Inválido!');
		return false;
	}
        return true;
}

// Máscaras de números  -------------------------------------------

function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

if(document.all) { // Internet Explorer
nTecla = evtKeyPress.keyCode; }
else if(document.layers||document.getElementById) { // Nestcape
nTecla = evtKeyPress.which;
}

sValue = objForm[strField].value;

// Limpa todos os caracteres de formatação que  já estiverem no campo.
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString().replace( "/", "" );
sValue = sValue.toString().replace( "/", "" );
sValue = sValue.toString().replace( "(", "" );
sValue = sValue.toString().replace( "(", "" );
sValue = sValue.toString().replace( ")", "" );
sValue = sValue.toString().replace( ")", "" );
sValue = sValue.toString().replace( "h", "" );
sValue = sValue.toString().replace( "h", "" );
sValue = sValue.toString().replace( ":", "" );
sValue = sValue.toString().replace( ":", "" );
sValue = sValue.toString().replace( " ", "" );
sValue = sValue.toString().replace( " ", "" );

fldLen = sValue.length;
mskLen = sMask.length;

i = 0;
nCount = 0;
sCod = "";
mskLen = fldLen;

while (i <= mskLen) {
bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == "h"))
bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
bolMask = bolMask || ((sMask.charAt(i) == ":"))

if (bolMask) {
sCod += sMask.charAt(i);
mskLen++; }
else {
sCod += sValue.charAt(nCount);
nCount++;
}

i++;
}

objForm[strField].value = sCod;

if (nTecla != 8) { // backspace
if (sMask.charAt(i-1) == "9") { // apenas números...
return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
else { // qualquer caracter...
return true;
} }
else {
return true;
}
}

// valida data -------------------------------------------------------

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;

  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 = 20;}
  /* 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;
  }
  /* Error-message if err != 0 */
  else {
     alert("Data incorreta!");
	 DateField.value="";
     DateField.select();
  	 DateField.focus();
	 return false
  }
  return true
}

// Valida form ---------------------------------------------------------------

function validaradio(oradio) {
	var tam=oradio.length;
	var ocheck = false;
	
	if(tam && tam>0) {
		for(x=0; x<tam; x++) {
			if(oradio[x].checked==true) ocheck=true;
		}
		if (ocheck==false) { 
			alert("Campo: "+oradio[0].name+" é obrigatório.");
			return ocheck;
		}
	} else {
			if(oradio.checked==true) ocheck=true;
		}
		if (ocheck==false) {
			alert("Campo: "+oradio.name+" é obrigatório.");
			return ocheck;
		}
}

function validaform(osub,oform) 
{
	identBot(osub)
	oBot=osub;
	var paramfunc = validaform.arguments;
	var contpar=paramfunc.length;
	for (i=1; i<contpar; i++) {
		ocampo=paramfunc[i]; 
		if(ocampo.length>1 && ocampo[0].type=='radio') {
			cp_rad = validaradio(ocampo);
			if(cp_rad==false) return cp_rad;
		}
		if(ocampo.value=="") {
			alert("Campo: "+ocampo.name+" é obrigatório.");
			ocampo.style.backgroundColor="#FFFFCC";
			ocampo.style.border="1px solid #FF0000";
			return false; 
			}
	}
	if(oform.CPF_CNPJ) {
		return valida_cpfcnpj(oform.CPF_CNPJ) // se tiver cnpj
	} else { return true; }
}


