/**
 * 
 * Biblioteca para validacoes gerais em Javascript
 * 
 * Alguns tipos de campo possuem funcoes exclusivas por enquanto,
 * como o CEP
 * 
 */


/**
 * Funcao para verificar se um campo esta em branco
 * 
 * @param {String} idCampo
 * @return true caso o campo esteja em branco ou false caso contrario
 */
function emBranco(valorCampo) {
	if(valorCampo == "" || valorCampo == null) {
		return true;
	} else {
		return false;
	}
}

/**
 * Funcao para retornar uma expressao regular chamada por exp
 * ou false caso exp seja indefinido
 * 
 * @param {Object} exp nome da expressao a ser retornada
 * @return expressao regular ou false no caso de exp indefinida
 */
function getExp(exp) {
	switch(exp) {
		case "numeros"    : return /^[0-9]{1,}$/;
		case "letras"     : return /^[A-Za-z]$/;
		case "login"      : return /^[A-Za-z0-9]{6,10}$/;
		case "senha"      : return /^[A-Za-z0-9]{6,20}$/;
		case "ddd"        : return /^[0-9]{2}$/;
		case "telefone"   : return /^[0-9]{8}$/;
		case "email"      : return /^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/;
		case "cep"        : return /^[0-9]{5}-[0-9]{3}$/;
    case "cpf"        : return /^\b([0-9]{3}\.?){3}-[0-9]{2}\b$/;
    case "cnpj"       : return /^\b[0-9]{2,3}\.?([0-9]{3}\.?){2}\/[0-9]{4}-[0-9]{2}\b$/;

		// mais expressoes serao adicionadas a qualquer momento		
		default: return false;
	}
}

/**
 * Validacao generica para campos de acordo com a expressao
 * 
 * @param {String} valorCampo
 * @param {String} exp
 */
function eValido(valorCampo,exp) {
	if(valorCampo.match(getExp(exp))) {
		return true;
	} else {
		alert("O campo foi digitado em um formato inválido. Por favor preencha-o corretamente.");
		return false;
	}
}


/* -------------- EXCLUSIVAS -------------- */

/**
 * Essa funoao pode ser chamada na saída do campo CEP, no evento onBlur do textbox
 * ou entao no submit da pagina, no evento onSubmit do formulario.
 * 
 * @param {String} cep
 * @return alerta e false caso o CEP seja invalido ou true caso seja valido
 */
function validarCep(cep) {
  var valid = "0123456789-";
  var hyphencount = 0;

  if (cep.length != 9 && cep.length != 10) {
    alert("Por favor digite o CEP corretamente.");
    return false;
  }
  for (var i = 0; i < cep.length; i++) {
    temp = "" + cep.substring(i, i+1);
    if (temp == "-") hyphencount++;
    if (valid.indexOf(temp) == "-1") {
      alert("Caracteres inválidos no campo do CEP. Tente novamente.");
      return false;
    }
    if ((hyphencount > 1) || ((cep.length == 10) && "" + cep.charAt(5) != "-")) {
      alert("Um CEP deve possuir o formato NNNNN-NNN. Por favor, tente novamente.");
      return false;
    }
  }
  return true;
}

/**
 * Chamada para script de verificacao da existencia
 * de um login na base de dados
 * 
 * @param {String} l
 */
function verificarLogin(l) {
  if (l == "" || l == null) {
    alert("Preencha o campo antes de verificá-lo.");
  } else if (l.length < 6 || l.length > 20) {
    alert("O login deve ser constituído de 6 a 20 caracteres.");
  } else {
	  var pop = new PopupWindow();
 		pop.url = "../painelfunc/verlogin.php?login=" + l;
 		pop.toolbar = "no";
 		pop.width = "400";
  	pop.height = "200";
	  pop.show();
 	}
}

