// JavaScript Document
function verifica_form(form, popup_width, popup_height, popup_name, popup_scroll) {
  var passed = false;
  var ok = false
  var campo
  for (i = 0; i < form.length; i++) {
    campo = form[i].name;
    if (form[i].alt == "sim") {
      if (form[i].type == "text" | form[i].type == "password" | form[i].type == "textarea" | form[i].type == "select-one") {
        if (form[i].value == "" | form[i].value == "http://") {
		  form[campo].className="alertClass";
          alert(form[campo].title);
          form[campo].focus();
          return passed;
          stop;
        }
      }
      else if (form[i].type == "radio" | form[i].type == "checkbox") {
		if (form[campo].length){
          for (x = 0; x < form[campo].length; x++) {
            ok = false;
            if (form[campo][x].checked) {
              ok = true;
              break;
            }
          }
          if (ok == false) {
            alert(form[campo][0].title);
            form[campo][0].focus();
		    form[campo][0].select();
            return passed;
            stop;
          }
		}
		else {
          if (form[campo].checked==false) {
            alert(form[campo].title);
            form[campo].focus();
		    form[campo].select();
            return passed;
            stop;
          }
		}
      }
      var msg = ""
      if (form[campo].lang == "data") msg = verifica_data(form[campo]);
      if (form[campo].lang == "cpf") msg = checa_cpf(form[campo].value);
      if (form[campo].lang == "cnpj") msg = checa_cnpj(form[campo].value);
      if (form[campo].lang == "cpf_cnpj") {
	    msg = checa_cpf(form[campo].value);
	    if (msg != "") msg = checa_cnpj(form[campo].value);
	  }
      if (form[campo].lang == "email") msg = checa_email(form[campo].value);
      if (form[campo].lang == "numerico") msg = checa_numerico(form[campo].value);
      if (form[campo].lang == "moeda") msg = checa_moeda(form[campo].value);
      if (msg != "") {
	    if (form[campo].lang == "cpf_cnpj") msg = "Informe corretamente o número do CPF ou CNPJ";
        form[campo].className="alertClass";
        alert(msg);
        form[campo].focus();
        form[campo].select();
        return passed;
        stop;
      }
    }
  }
  passed = true;
  if (popup_width!='' && popup_height!='' && popup_name!='' && popup_scroll!=''){
    abre_janela(popup_width, popup_height, popup_name, popup_scroll);
  }
  return passed;
}
function checa_numerico(campo) {
  var mensagem = "Este campo aceita somente números"
  var msg = "";
  if (isNaN(campo)) msg = mensagem;
  return msg;
}
function checa_moeda(campo) {
  var mensagem = "Informe corretamente o valor como abaixo:\n\nEx.: 0,99\nEx.: 199 ou 199,99\nEx.: 1299 ou 1.299,99"
  var msg = "";
  if (isNaN(campo.replace(",",""))) msg = mensagem;
  return msg;
}
function checa_email(campo) {
  var mensagem = "Informe corretamente o email"
  var msg = "";
  var email = campo.match(/(\w+)@(.+)\.(\w+)$/);
  if (email == null){
    msg = mensagem;
  }
  return msg;
}
function checa_cpf(campo) {
  var mensagem = "Informe corretamente o número do CPF"
  var msg = "";
  if (campo.length != 11 || campo == "00000000000" || campo == "11111111111" ||
    campo == "22222222222" ||	campo == "33333333333" || campo == "44444444444" ||
    campo == "55555555555" || campo == "66666666666" || campo == "77777777777" ||
    campo == "88888888888" || campo == "99999999999")
    msg = mensagem;
  soma = 0;
  for (y=0; y < 9; y ++)
    soma += parseInt(campo.charAt(y)) * (10 - y);
  resto = 11 - (soma % 11);
  if (resto == 10 || resto == 11)resto = 0;
  if (resto != parseInt(campo.charAt(9)))
    msg = mensagem; soma = 0;
  for (y = 0; y < 10; y ++)
    soma += parseInt(campo.charAt(y)) * (11 - y);
  resto = 11 - (soma % 11);
  if (resto == 10 || resto == 11) resto = 0;
  if (resto != parseInt(campo.charAt(10)))
    msg = mensagem;
  return msg;
}
function checa_cnpj(campo) {
  var mensagem = "Informe corretamente o número do CNPJ"
  var msg = "";
  var y;
  var c = campo.substr(0,12);
  var dv = campo.substr(12,2);
  var d1 = 0;
  for (y = 0; y < 12; y++) {
    d1 += c.charAt(11-y)*(2+(y % 8));
  }
  if (d1 == 0) msg = mensagem;
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(0) != d1)msg = mensagem;
  d1 *= 2;
  for (y = 0; y < 12; y++) {
    d1 += c.charAt(11-y)*(2+((y+1) % 8));
  }
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(1) != d1) msg = mensagem;
  return msg;
}
function verifica_data(campo) {
  var msg = "";
  var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  var matchArray = campo.value;
  matchArray = campo.value.match(datePat);
  if (matchArray == null) {
    msg = "Informe o dia, mês e ano como abaixo:\n\nEx.: 28/01/2005";
    return msg;
  }
  month = matchArray[3];
  day = matchArray[1];
  year = matchArray[5];
  if (month < 1 || month > 12) {
    msg = "Não existe o mês "+month;
    return msg;
  }
  if (day < 1 || day > 31) {
    msg = "Não existe o dia "+day;
    return msg;
  }
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    msg = "O mês "+month+" não possui 31 dias";
    return msg;
  }
  if (month == 2) {
  var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
  if (day > 29 || (day==29 && !isleap)) {
    msg = "Fevereiro de " + year + " não possui " + day + " dias";
    return msg;
  }
  }
  return msg;
}
function resetClass(campo) {
  campo.className="formClass";
}
