// Javascript Genesis Games
// Todos os direitos reservados a Fernando Chagas Santos - web@genesisgames.com.br

// ---------------------------------------------------------- 
// Funções gerais
// ---------------------------------------------------------- 

//Erro ao cadastrar
function erro(nome) {
	if (nome == "yes") alert("Login e/ou senha incorreto(s)");
	if (nome == "email") alert("O e-mail já foi cadastrado, favor escolher outro.\nCaso tenha esquecido sua senha clique no link ESQUECI MINHA SENHA.");
}

//Email geral
function veremail(formulario) {
  if (!validaemail(formulario.email.value))
  {
    alert("O e-mail especificado não é válido!\nPor favor, preencha o seu e-mail corretamente.");
    formulario.email.focus();
    return (false);
  }
}

//Verifica se e-mail é válido
function validaemail (emailStr) {

	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {

	/* Too many/few @'s or something; basically, this address doesn't
	even fit the general mould of a valid e-mail address. */

	//alert("Email address seems incorrect (check @ and .'s)");
	return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	// Start by checking that only basic ASCII characters are in the strings (0-127).

	for (i=0; i<user.length; i++) {
	if (user.charCodeAt(i)>127) {
	//alert("Ths username contains invalid characters.");
	return false;
	   }
	}
	for (i=0; i<domain.length; i++) {
	if (domain.charCodeAt(i)>127) {
	//alert("Ths domain name contains invalid characters.");
	return false;
	   }
	}

	// See if "user" is valid 

	if (user.match(userPat)==null) {

	// user is not valid

	//alert("The username doesn't seem to be valid.");
	return false;
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
	host name) make sure the IP address is valid. */

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {

	// this is an IP address

	for (var i=1;i<=4;i++) {
	if (IPArray[i]>255) {
	//alert("Destination IP address is invalid!");
	return false;
	   }
	}
	return true;
	}

	// Domain is symbolic name.  Check if it's valid.
	 
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
	if (domArr[i].search(atomPat)==-1) {
	//alert("The domain name does not seem to be valid.");
	return false;
	   }
	}

	/* domain name seems valid, but now make sure that it ends in a
	known top-level domain (like com, edu, gov) or a two-letter word,
	representing country (uk, nl), and that there's a hostname preceding 
	the domain or country. */

	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	domArr[domArr.length-1].search(knownDomsPat)==-1) {
	//alert("The address must end in a well-known domain or two letter " + "country.");
	return false;
	}

	// Make sure there's a host name preceding the domain.

	if (len<2) {
	//alert("This address is missing a hostname!");
	return false;
	}

	// If we've gotten this far, everything's valid!
	return true;
}


//Somente numeros
function vernum(nome) {

  var checkOK = "0123456789";
  var checkStr = nome;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }
  if (!allValid) {  return (false); }
return(true);
}

// ---------------------------------------------------------- 
// Verifica erros em cadastramento
// ---------------------------------------------------------- 

// ----> Inclusão de cadastro
function checkcadastro(formulario) {
//Campo E-mail
  if (formulario.email.value.length == 0 || formulario.email.value.length > 40)
  {
    alert("Por favor, preencha o seu e-mail corretamente.");
    formulario.email.focus();
    return (false);
  }
 
  if (!validaemail(formulario.email.value))
  {
    alert("O e-mail especificado não é válido!\nPor favor, preencha o seu e-mail corretamente.");
    formulario.email.focus();
    return (false);
  }
//Campo senha  
     var s;
     s = formulario.senha;
     var i; 
     var num = 0, carac = 0;
     for (i = 0; i < s.value.length; i++)
     {
	var c = s.value.charAt(i);
	if (((c >= "0") && (c <= "9") || (c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))
 	{
	}
    else
 	{
		alert("O campo senha contém caracteres inválidos!! (Digite apenas letras e/ou números)");
        formulario.senha.focus();	
		return (false);
	}
	}
 if (formulario.senha.value.length < 4 || formulario.senha.value.length > 25)
  {
    alert("Por favor, a sua senha deve conter entre 4 a 25 caracteres!");
    formulario.senha.focus();
    return(false);
  }
  if (formulario.senha.value.split(" ").length > 1)
  {
    alert("Por favor, o campo senha não deve conter espaços!");
    formulario.senha.focus();
    return(false);
  }
  if (formulario.senha2.value.length == 0)
  {
    alert("Por favor, confirme sua senha!");
    formulario.senha2.focus();
    return(false);
  }
  if (formulario.senha.value != formulario.senha2.value)
  {
    alert("Atenção! Os campos Senha e Confirmar Senha precisam ser iguais!");
    formulario.senha.value = "";
    formulario.senha2.value = "";
    formulario.senha.focus();
    return(false);
  }	
//Campo Nome
if (formulario.nome.value.length < 4 || formulario.nome.value.split(" ").length == 1)
  {
    alert("Por favor, preencha o Nome Completo corretamente.");
    formulario.nome.focus();
    return(false);
}
//Campo CPF
var i; 
  
s = document.formulario.cpf.value; 
foc = document.formulario.cpf.focus(); 

if (s.length < 11)
{
	alert("CPF Invalido") 
	foc;  
	return(false);
} else {
	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){
		alert("CPF Invalido")
		foc;
		return(false);
	}
	  
	d1 = 11 - (d1 % 11); 
	 
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1) {
		alert("CPF Invalido")
		foc;
		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) { 
		alert("CPF Invalido") 
		foc;  
		return(false);
	}
}
//Campo RG
   if (formulario.rg.value.length == 0)
  {
    alert("Preencha o seu RG.");
    formulario.rg.focus();
    return(false);
  }
//Campo Orgao Emissor
   if (formulario.orgaoemissor.value.length == 0)
  {
    alert("Preencha o seu Orgão Emissor.");
    formulario.orgaoemissor.focus();
    return(false);
  }
  //Campo Orgao Emissor
   if (formulario.mae.value.length == 0)
  {
    alert("Preencha o Nome da Mãe por razões de segurança.");
    formulario.mae.focus();
    return(false);
  }
//validar data de nascimento
erro=0;
hoje = new Date();
anoAtual = hoje.getFullYear();
barras = formulario.nascimento.value.split("/");
if (barras.length == 3){
	dia = barras[0];
	mes = barras[1];
	ano = barras[2];
	resultado = (!isNaN(dia) && (dia > 0) && (dia < 32)) && (!isNaN(mes) && (mes > 0) && (mes < 13)) && (!isNaN(ano) && (ano.length == 4) && (ano <= anoAtual && ano >= 1900));
		if (!resultado) {
			alert("Formato de data invalido!");
			formulario.nascimento.focus();
			return false;
		}
} else {
	alert("Formato de data invalido!");
	formulario.nascimento.focus();
	return false;
}
 //Campo Endereço, Número do endereço, Complemento
   if ( formulario.endereco.value.length == 0 )
  {
    alert("Por favor, preencha o Endereço corretamente.");
    formulario.endereco.focus();
    return(false);
  }
   //Campo Bairro
   if ( formulario.bairro.value.length == 0 )
  {
    alert("Por favor, preencha o Bairro corretamente.");
    formulario.bairro.focus();
    return(false);
  } 
//Campo CEP
   if (formulario.cep1.value.length != 5 || formulario.cep2.value.length != 3)
  {
    alert("Por favor, informe seu CEP corretamente.");
    formulario.cep1.focus();
    return(false);
  }

//Campo Cidade
   if (formulario.cidade.value.length < 3)
  {
    alert("Por favor, preencha o nome da cidade corretamente.");
    formulario.cidade.focus();
    return(false);
  }
//Campo Estado
   if (formulario.estado.selectedIndex == "")
  {
    alert("Por favor, informe seu Estado.");
    formulario.estado.focus();
    return(false);
  }
// Campo Telefones
// Primeiro Telefone
if (formulario.ddd.value.length == 0)
  {
    alert("Por favor, informe seu telefone");
    formulario.ddd.focus();
    return(false);
  } else {
	  if (formulario.tipoTelefone[0].checked == false && formulario.tipoTelefone[1].checked == false && formulario.tipoTelefone[2].checked == false) {
	      alert("Por favor, informe o tipo do telefone");
		  formulario.ddd.focus();
		  return(false);
	 } else {
		 if ((formulario.tipoTelefone[1].checked == true || formulario.tipoTelefone[2].checked == true) && formulario.titularTelefone.value == '') {
			alert("Por favor, informe o titular do telefone");
		  	formulario.titularTelefone.focus();
		 	return(false);
		 }
	 }
  }
  
if (formulario.ddd.value.length > 0 || formulario.prefixo.value.length > 0 || formulario.sufixo.value.length > 0 )
{
  if (formulario.ddd.value.length != 2)
  {
    alert("Por favor, preencha o DDD corretamente.");
    formulario.ddd.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.ddd.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o DDD corretamente.");
    formulario.ddd.focus();
    return (false);
  }

  if (formulario.prefixo.value.length < 2)
  {
    alert("Por favor, preencha o prefixo do telefone corretamente.");
    formulario.prefixo.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.prefixo.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o prefixo do telefone corretamente.");
    formulario.prefixo.focus();
    return (false);
  }

  if (formulario.sufixo.value.length != 4)
  {
    alert("Por favor, preencha o sufixo do telefone corretamente.");
    formulario.sufixo.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.sufixo.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o sufixo do telefone corretamente.");
    formulario.sufixo.focus();
    return (false);
  }
}
//Segundo Telefone
if (formulario.ddd2.value.length > 0 || formulario.prefixo2.value.length > 0 || formulario.sufixo2.value.length > 0 )
{
  if (formulario.ddd2.value.length != 2)
  {
    alert("Por favor, preencha o DDD corretamente.");
    formulario.ddd2.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.ddd2.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o DDD corretamente.");
    formulario.ddd2.focus();
    return (false);
  }

  if (formulario.prefixo2.value.length < 2)
  {
    alert("Por favor, preencha o prefixo do telefone corretamente.");
    formulario.prefixo2.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.prefixo2.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o sufixo do telefone corretamente.");
    formulario.prefixo2.focus();
    return (false);
  }

  if (formulario.sufixo2.value.length != 4)
  {
    alert("Por favor, preencha o sufixo do telefone corretamente.");
    formulario.sufixo2.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.sufixo2.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o número do telefone corretamente.");
    formulario.sufixo2.focus();
    return (false);
  }
}
}


// ---------------------------------------------------------- 
// Verifica erros em pedido
// ---------------------------------------------------------- 

// ----> Inclusão de cadastro
function checkEntrega(formulario) {
	 //Campo Endereço, Número do endereço, Complemento
   if ( formulario.endereco.value.length == 0 )
  {
    alert("Por favor, preencha o Endereço corretamente.");
    formulario.endereco.focus();
    return(false);
  }
   //Campo Bairro
   if ( formulario.bairro.value.length == 0 )
  {
    alert("Por favor, preencha o Bairro corretamente.");
    formulario.bairro.focus();
    return(false);
  } 
// Primeiro Telefone
if (formulario.ddd.value.length == 0)
  {
    alert("Por favor, informe seu telefone");
    formulario.ddd.focus();
    return(false);
  }
if (formulario.ddd.value.length > 0 || formulario.prefixo.value.length > 0 || formulario.sufixo.value.length > 0 )
{
  if (formulario.ddd.value.length != 2)
  {
    alert("Por favor, preencha o DDD corretamente.");
    formulario.ddd.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.ddd.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o DDD corretamente.");
    formulario.ddd.focus();
    return (false);
  }

  if (formulario.prefixo.value.length < 2)
  {
    alert("Por favor, preencha o prefixo do telefone corretamente.");
    formulario.prefixo.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.prefixo.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o prefixo do telefone corretamente.");
    formulario.prefixo.focus();
    return (false);
  }

  if (formulario.sufixo.value.length != 4)
  {
    alert("Por favor, preencha o sufixo do telefone corretamente.");
    formulario.sufixo.focus();
    return (false);
  }

  var checkOK = "0123456789";
  var checkStr = formulario.sufixo.value;
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    allNum += ch;
  }

  if (!allValid)
  {
    alert("Por favor, preencha o sufixo do telefone corretamente.");
    formulario.sufixo.focus();
    return (false);
  }
}
}
