function validaCNPJ(form)
{
  var CNPJ = form.cpfCnpj.value;

  if (CNPJ.length == 18)
  {
    if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
      return false;
    if (CNPJ == "00.000.000/0000-00")
      return false;

    if (document.layers && parseInt(navigator.appVersion) == 4)
    {
      tmp = CNPJ.substring(0,2);
      tmp += CNPJ.substring (3,6);
      tmp += CNPJ.substring (7,10);
      tmp += CNPJ.substring (11,15);
      tmp += CNPJ.substring (16,18);
      CNPJ = tmp;
    }
    else
    {
      CNPJ = CNPJ.replace (".","");
      CNPJ = CNPJ.replace (".","");
      CNPJ = CNPJ.replace ("-","");
      CNPJ = CNPJ.replace ("/","");
    }
  }
  else if (CNPJ.length == 14)
  {
    if (CNPJ == "00000000000000")
      return false; 
  }
  else
    return false;

  var nonNumbers = /\D/;
  if (nonNumbers.test(CNPJ))
    return false;

  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]))
    return false;

  return true;
}


function validaCPF(form)
{
  var cpf = form.cpfCnpj.value;
  
  if (cpf.length == 14)
  {
    if ((cpf.charAt(3) != ".") || (cpf.charAt(7) != ".") || (cpf.charAt(11) != "-"))
      return false;

    if (document.layers && parseInt(navigator.appVersion) == 4)
    {
      tmp = cpf.substring(0,3);
      tmp += cpf.substring (4,7);
      tmp += cpf.substring (7,10);
      tmp += cpf.substring (8,11);
      tmp += cpf.substring (12,14);
      cpf = tmp;
    }
    else
    {
      cpf = cpf.replace (".","");
      cpf = cpf.replace (".","");
      cpf = cpf.replace ("-","");
    }
  }
  else if (cpf.length != 11)
    return false;

  var nonNumbers = /\D/;
  if (nonNumbers.test(cpf))
    return false;

  if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" ||
      cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" ||
      cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" ||
      cpf == "99999999999")
    return false;

  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]))
    return false;

  return true;
}


// Valida e-mail
function validaEmail(mail)
{
  var er = new RegExp(/^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$/);
  if (typeof(mail) == "string")
  {
    if (er.test(mail))
      return true;
  }
  else if (typeof(mail) == "object")
  {
    if (!er.test(mail.value))
      return false;
    else
    {
      mail.style.border='';
      return true;
    }
  }
  return false;
}


// Funcao para validar formulario de pedido de demo
function validaFormularioDemo(form)
{
  for (i = 0; i < form.length; i++)
  {
    if (form[i].value == "")
    {
      if ((form[i].title.length > 0) && (form[i].title != "Empresa"))
      {
	alert("O campo "+ form[i].title +" é de preenchimento obrigatório!");
	form[i].focus();
	form[i].style.border='dashed 1px #FF0000';

	return false;
      } 
    }
    else
    {
      form[i].style.border='solid 1px #c0c0c0';
    }
  }

  if (validaEmail(form.email) == false)
  {
    alert("E-mail Inválido!");
    form.email.focus();
    form.email.style.border='dashed 1px #FF0000';

    return false;
  }

  if (form.email.value != form.conf.value)
  {
    alert('Os campos e-mail e confirmação são diferentes. Por favor, preencha-os com o mesmo valor');
    form.conf.focus();
    form.conf.style.border='dashed 1px #FF0000';

    return false;
  }  

  // Valida CPF e CNPJ

  if (validaCPF(form) == true)
    return true;

  if (validaCNPJ(form) == false)
  {
    alert("CPF/CNPJ Inválido!");
    form.cpfCnpj.focus();
    form.cpfCnpj.style.border='dashed 1px #FF0000';

    return false;
  }

  if (form.nomeEmpresa.value == "")
  {
    alert("O campo Empresa é de preenchimento obrigatório quando a demonstração é para uma pessoa jurídica (já que foi especificado um CNPJ) !");
    form.nomeEmpresa.focus();
    form.nomeEmpresa.style.border='dashed 1px #FF0000';

    return false;
  }
  return true;
}


function validaFormularioSenha(form)
{
  for (i = 0; i < form.length; i++)
  {
    if (form[i].value == "")
    {
      if (form[i].title.length > 0)
      {
	alert("O campo "+ form[i].title +" é de preenchimento obrigatório!");
	form[i].focus();
	form[i].style.border='dashed 1px #FF0000';

	return false;
      } 
    }
    else
    {
      form[i].style.border='solid 1px #c0c0c0';
    }
  }

  if (validaEmail(form.email) == false)
  {
    alert("E-mail Inválido!");
    form.email.focus();
    form.email.style.border='dashed 1px #FF0000';

    return false;
  }

  if (form.email.value != form.conf.value)
  {
    alert('Os campos e-mail e confirmação são diferentes. Por favor, preencha-os com o mesmo valor');
    form.conf.focus();
    form.conf.style.border='dashed 1px #FF0000';

    return false;
  }  

  // Valida CPF e CNPJ

  if (validaCPF(form) == true)
    return true;

  if (validaCNPJ(form) == false)
  {
    alert("CPF/CNPJ Inválido!");
    form.cpfCnpj.focus();
    form.cpfCnpj.style.border='dashed 1px #FF0000';

    return false;
  }
  return true;
}


function validaFormularioSuporte(form)
{
  for (i = 0; i < form.length; i++)
  {
    if (form[i].value == "")
    {
      if (form[i].title.length > 0)
      {
	alert("O campo "+ form[i].title +" é de preenchimento obrigatório!");
	form[i].focus();
	form[i].style.border='dashed 1px #FF0000';

	return false;
      } 
    }
    else
    {
      form[i].style.border='solid 1px #c0c0c0';
    }
  }

  if (validaEmail(form.email) == false)
  {
    alert("E-mail Inválido!");
    form.email.focus();
    form.email.style.border='dashed 1px #FF0000';

    return false;
  }
  return true;
}


// FUNÇÃO PARA VALIDAR OS FORMULARIOS 
function validaFormulario(form){
	for (i=0;i<form.length;i++){
		if (form[i].value == ""){
			if (form[i].title.length > 0){
				alert("O campo "+ form[i].title +" é de preenchimento obrigatório!");
				form[i].focus();
				form[i].style.border='dashed 1px #FF0000';
				return false;
			} 
		} else {
			form[i].style.border='solid 1px #c0c0c0';
		}
	} 
	return true;
}


// função para formatar telefone
function formata(objForm, strField, sMask, evtKeyPress){
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;
	if(window.event) { // Internet Explorer
		nTecla = evtKeyPress.keyCode; 
	} else 
	if(evtKeyPress.which) { // Nestcape
		nTecla = evtKeyPress.which;
	}

	sValue = objForm[strField].value;
      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( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
	  sValue = sValue.toString().replace( ":", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;
      	i = 0;
      	nCount = 0;
      	sCod = "";
      	mskLen = fldLen;
     if (nTecla != 8) { // backspace
	 // números de 0 a 9 / APENAS NÚMEROS
      	if (sMask.charAt(i-1) == "9") { // apenas números...
      		return ((nTecla > 47) && (nTecla < 58)); 
		} else { // qualquer caracter...
      		while (i <= mskLen) {
      			bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
	  			bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
      			if (bolMask) {
      				sCod += sMask.charAt(i);
      				mskLen++; 
				} else {
      				sCod += sValue.charAt(nCount);
      				nCount++;
      			}
     				i++;
      		}
      		objForm[strField].value = sCod;
      		return true;
      } 
	} else {
   		return true;
	}
} 

// formata data
function m_DATA(campo,tammax,tecla) {
	if(typeof(tecla) == 'undefined')
		var tecla = window.event;
		var codigo = (tecla.which ? tecla.which : tecla.keyCode ? tecla.keyCode : tecla.charCode);
		var vr = campo.value;
			vr = vr.replace( "/", "" );
			vr = vr.replace( "/", "" );
		var tam = vr.length;
	if (tam < tammax) { tam = vr.length + 1; }
	if (codigo == 8) { tam = tam - 1; }
		tam = tam - 1;
	if ( (tam >= 2) && (tam < 3) ) { vr = vr.substr( 0, tam - 0 ) + '/' + vr.substr( tam - 0, 2 ); }
	if ( (tam >= 3) && (tam < 4) ) { vr = vr.substr( 0, tam - 1 ) + '/' + vr.substr( tam - 1, 2 ); }
	if (tam == 4) { vr = vr.substr( 0, tam - 2 ) + '/' + vr.substr( tam - 2, 2 ) + '/' + vr.substr( tam - 0, 5 ); }
	if (tam == 5) { vr = vr.substr( 0, tam - 3 ) + '/' + vr.substr( tam - 3, 2 ) + '/' + vr.substr( tam - 1, 6 ); }
	if (tam == 6) { vr = vr.substr( 0, tam - 4 ) + '/' + vr.substr( tam - 4, 2 ) + '/' + vr.substr( tam - 2, 7 ); }
	if (tam == 7) { vr = vr.substr( 0, tam - 5 ) + '/' + vr.substr( tam - 5, 2 ) + '/' + vr.substr( tam - 3, 8 ); }
		campo.value = vr;
}

// PERMITE SO NUMEROS DIGITADOS
function NumbersOnly(myfield, e, dec)
{
	var key;
	var keychar;

	if (window.event)
		key = window.event.keyCode;
	else if (e)
		key = e.which;
	else
		return true;
	
	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==27) )
		return true;

	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
		return true;

	// decimal point jump
	else if (dec && (keychar == "."))
	{
		myfield.form.elements[dec].focus();
		return false;
	}
	else
		return false;
}

// FUNCAO PARA MOSTRAR E ESCONDER UM ELEMENTO
function hideElement(id){
	var Elemento = document.getElementById(id).style.display='none';
	return Elemento;
}

function showElement(id){
	var Elemento = document.getElementById(id).style.display='block';
	return Elemento;
}

