﻿/************************************************
* function validaPassaporte
* Verifica se o valor do passaporte é válido
* Input: texto a ser verificado
************************************************/
function validaPassaporte(iValue, aiLojas, aiEstabelecimentos) {
	if (iValue.length != 13) {
		return 1 //O passaporte precisa ter 13 caracteres numéricos
	} else {
		iSetimaPosicao = iValue.substr(0,7)
		iNonaPosicao = iValue.substr(7,2)
		iDecimaSegundaPosicao = iValue.substr(9,3)
		iDecimaTerceiraPosicao = iValue.substr(12,1)
	
		//Verifica se as primeiras 7 posicoes é menor que 13.
		if (iSetimaPosicao == 0) {
			return 2
		}
		//Verifica se as primeiras 7 posicoes é multipla de 13.
		iResto = (iSetimaPosicao / 13)
		if ((parseInt(iResto) * 13) != iSetimaPosicao) {
			return 2
		}
		//Verifica se a loja informada existe no banco de dados
		for (i = 0; i < aiLojas.length; i++) {
			if (parseInt(iNonaPosicao, 10) == parseInt(aiLojas[i], 10)) {
				iLoja = 1
				break;
			} else {
				iLoja = 0
			}
		}
		if (iLoja == 0) {
			return 2
		}
		
		if (parseInt(iDecimaSegundaPosicao, 10) >= 1 && parseInt(iDecimaSegundaPosicao, 10) <= 200) {
				iEstabelecimentos = 1
			} else {
				iEstabelecimentos = 0
			}
		
		if (iEstabelecimentos == 0) {
			return 2
		}

		//Verifica se a 13ª esta entre 0 e 3
		if (iDecimaTerceiraPosicao < 0 || iDecimaTerceiraPosicao > 3) {
			return 2
		}
	}
	
	return 0
}

/*******************************************************************************
* function warnInvalid
* Gera um alert para o usuário e volta o foco para o campo que está com problema
* Input: theField - campo do formulário com problema
*        warnText - texto a ser mostrado no alert
*        temSelect - indica se deve aplicar select()
********************************************************************************/
function warnInvalid (theField, warnText, temSelect) {   
	theField.focus();
    if (temSelect) {
		theField.select();
	}
    alert(warnText);
    return false;
}

/************************************************
* function isEmpty
* Verifica se um campo está vazio
* Input: s - campo a ser verificado
************************************************/               
function isEmpty(s) {
	return ((s == null) || (s.length == 0));
}

/*******************************************************************
* function isNumeric
* Verifica se um campo é numérico. Se contém apenas dígitos de 0 a 9
* Input: s - campo a ser verificado
********************************************************************/
function isNumeric(s) {
	var i;
	if (isEmpty(s)) 
		return false;
		
	for (i = 0; i < s.length; i++) {   
		var c = s.charAt(i);
		
		if (!isDigit(c)) return false;
	}
	
	return true;
}

/************************************************	
* function isDigit
* Verifica se o caracter é um dígito de 0 a 9
* Input: c - dígito a ser verificado
************************************************/
function isDigit (c) { 
	return ((c >= "0") && (c <= "9")) 
}

/************************************************
* function verificaEmail
* Verifica se um email é válido
* Input: email a ser verificado
************************************************/
function verificaEmail(email) {
   var s = new String(email);

	// { } ( ) < > [ ] | \ /
    if ((s.indexOf("{")>=0) || (s.indexOf("}")>=0) || (s.indexOf("(")>=0) || (s.indexOf(")")>=0) || (s.indexOf("<")>=0) || (s.indexOf(">")>=0) || (s.indexOf("[")>=0) || (s.indexOf("]")>=0) || (s.indexOf("|")>=0) || (s.indexOf("\"")>=0) || (s.indexOf("/")>=0) )
    	return false;

	// Verifica se existe alguma vogal acentuada
	ls = s.toLowerCase();
	if ((ls.indexOf("á")>=0) || (ls.indexOf("à")>=0) || (ls.indexOf("ã")>=0) || (ls.indexOf("â")>=0) || (ls.indexOf("é")>=0) || (ls.indexOf("í")>=0) || (ls.indexOf("ó")>=0) || (ls.indexOf("õ")>=0) || (ls.indexOf("ô")>=0) || (ls.indexOf("ú")>=0) || (ls.indexOf("ü")>=0))
		return false;
		
	// & * $ % ? ! ^ ~ ` ' " espaço em branco
	if ((s.indexOf("&")>=0) || (s.indexOf("*")>=0) || (s.indexOf("$")>=0) || (s.indexOf("%")>=0) || (s.indexOf("?")>=0) || (s.indexOf("!")>=0) || (s.indexOf("^")>=0) || (s.indexOf("~")>=0) || (s.indexOf("`")>=0) || (s.indexOf("'")>=0) || (s.indexOf(" ")>=0) )
		return false;
        
	// , ; : = #
	if ((s.indexOf(",")>=0) || (s.indexOf(";")>=0) || (s.indexOf(":")>=0) || (s.indexOf("=")>=0) || (s.indexOf("#")>=0) )
		return false;
        
	// procura se existe apenas um @
	if ( (s.indexOf("@") < 0) || (s.indexOf("@") != s.lastIndexOf("@")) )
		return false;
        
	// verifica se tem pelo menos um ponto após o @
	if (s.lastIndexOf(".") < s.indexOf("@"))
		return false;
    
	// verifica se não tem "@" seguido de "."
	if (s.indexOf("@.") >= 0)
		return false;
        
	return true;
}