//abre popup
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function valida(referenciaElemento,validacao) {

	var validacoes = new Array();

	// Abaixo a declaracao das expressoes regulares

		validacoes.alfabetico = /[a-z]/i;
		validacoes.alfanumerico = /^[a-z_0-9]*$/i;
		validacoes.texto = /[\w]/i;
		validacoes.numerico = /^\d*$/;
		validacoes.ddd = /^\d{2}$/;
		validacoes.tel = /^\d{7,8}$/;
		validacoes.telefone = /^(\(?\d{2}\)?)?\s?\d{3,4}[\-\s]?\d{4}$/;
		//validacoes.data = /^\d{2}\/\d{2}\/\d{4}$/;
		validacoes.data = /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(20|1[9])[0-9][0-9]$/;
		validacoes.datanasc = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
		validacoes.mesano = /^\d{1,2}\/\d{4}$/;
		validacoes.email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
		validacoes.moeda = /^(R\$\s?)?\d{1,3}(\.?\d{3})*(\,\d{2})?$/;
		validacoes.ini_cep = /^\d{5}$/;
		validacoes.fim_cep = /^\d{3}$/;
		validacoes.cep = /^\d{5}(-?\d{3})$/;
		//validacoes.horario = /^([0-1][0-9]|[0-9]|2[0-3])[:,h][0-5]\d[:,m][0-5]\d[h,m,s]?$/i;
		//validacoes.horario = /^(0[1-9]|1[0-9]|2[0-4]):[0-5][0-9]$/i; //errado
		validacoes.horario = /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/i;
		
		validacoes.uf = /^AC$|^AL$|^AP$|^AM$|^BA$|^CE$|^DF$|^ES$|^GO$|^MA$|^MT$|^MS$|^MG$|^PA$|^PB$|^PR$|^PE$|^PI$|^RJ$|^RN$|^RS$|^RO$|^RR$|^SC$|^SP$|^SE$|^TO$/i;
		validacoes.sexo = /m|f/i;
		validacoes.cpf =/(\d{3}\.?)(\d{3}\.?)(\d{3}-?)\d{2}$/i;
		validacoes.dia = /^(0[1-9]|[12][0-9]|3[01])$/;
		validacoes.mes = /^(0[1-9]|1[012])$/;
		validacoes.ano = /^(20|1[9])[0-9][0-9]$/;
									
		// Fim da declaração das Expressões Regulares


							
	var textos = new Array();
							
	// Abaixo a declaracao dos textos de retorno
							
	textos.alfabetico	= "Esse campo só permite letras";
	textos.alfanumerico = "Esse campo só permite letras e números";
	textos.texto		= "Esse campo só permite texto";
	textos.numerico		= "Esse campo só permite números";
	textos.ddd			= "O DDD deve ter 2 números";
	textos.tel			= "O telefone deve ter entre 7 e 8 números";
	textos.telefone		= "O telefone digitado não é válido";
	textos.data			= "A data digitada não é valida. Ex : 31/12/2001";
	textos.datanasc		= "A data de nascimento digitada não é valida";
	textos.mesano		= "O mês/ano está inválido . Ex: 12/2000.";
	textos.email		= "O e-mail digitado não é válido";
	textos.moeda		= "O tipo de moeda digitada não é valida";
	textos.ini_cep		= "A primeira parte do cep deve ter 5 números";
	textos.fim_cep		= "A segunda parte do cep deve ter 3 números";
	textos.cep			= "O cep digitado não é válido";
	textos.horario		= "O horário digitado não é válido";
	textos.uf			= "O estado digitado não é válido";
	textos.sexo			= "O sexo digitado não é válido";
	textos.cpf			= "O cpf digitado não é válido";
	textos.dia			= "O dia deve ter entre 1 e 2 números";
	textos.mes			= "O mês deve ter entre 1 e 2 números";
	textos.ano			= "O ano deve ter 4 números";

	// Fim da declaração dos textos de retorno

	var valorCampo = referenciaElemento.value;
	var nomeCampo = referenciaElemento.name;

	if (valorCampo == null | valorCampo == "" ) {
		return false;
	}else{
		var expressao = validacoes[validacao];
		var texto = textos[validacao];
		var validado = expressao.test(valorCampo);

		if(!validado){
			alert(texto);
			referenciaElemento.focus();
			referenciaElemento.select();
			return false;
		}
	}
}

