/* >>> Strings e Máscaras para os campos do valida_tecla<<<*/
numeros   = "0123456789";
emails    = "abcdefghijklmnopqrstuvwxyz_.0123456789";
alfa      = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
alfabeto  = "ãõêâîôûabcdefghijklmnopqrstuvwxyz. ÃÕÂÊÎÛÔABCDEFGHIJKLMNOPQRSTUVWXYZ"
telefones = "()- 0123456789";
letras	  = "abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ"

datas     = "  /  /    ";
emailsc   = "@";
barra     = "/";
moeda     = ",";
horas     = "  :  ";
ceps	  = "     -   "
cnpj      = "  .   .   /    -  "
fone	  = "(  )    -    "
/* >>> Fim  <<<*/


function valida_email(campo) {
  if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(campo.value))) {
    alert("Favor informar um email válido.");
	campo.focus();
	return (false);
  }
}

function valida_tecla(obj,str,strone,mask) {
  code = (window.Event) ? event.which : event.keyCode;
  mykey=String.fromCharCode(code);
  if(code==8 || code==9 || code==13) return true;
  if ( ( ( str.indexOf(mykey)==-1 & strone.indexOf(mykey)==-1 ) || 
         ( obj.value.indexOf(mykey)!=-1 & strone.indexOf(mykey)!=-1) )) return false; 
  else {
    tam=obj.value.length;
    submask=mask.substr(tam,mask.length-tam);
    while (submask.indexOf(' ')!=-1 && submask.indexOf(' ')!=0) {
      obj.value=obj.value+submask.charAt(0);
      tam++;
      submask=mask.substr(tam,mask.length-tam);
    }
    if(obj.value.length<mask.length || mask.length==0) return true; 
    else {
      if(obj.value.length>mask.length) obj.value=obj.value.substr(0,mask.length);
      return false;
    }
  }
}


/*--------------------------------------------------------------------------------------------------------------------------------------*/

	/**
	 */
	
	function validador(tform){
		var resp;
		resp=validar(tform);
		
		if (resp==false) {
			return(false);
		} else { 
			return(validartipos(tform)) ;
		}
	}

/*--------------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------------*/
	
	/**
	 * Script de validacao de campos obrigatorios.
	 * fr -> Formulário
	 */
	
	function validar(fr) {
		var a;
		var s=new String;
		var resp;
		a=0;
		erro.innerHTML = "";			//LIMPA A REGIÃO DAS MENSAGENS DE ERRO
		aviso.style.display = 'none';
		resp=true;
		qtdeCheckSel = 0;
		vetNomeIdentificador = new Array();
		vetIdentificadorQtde = new Array();
		vetIdentificadorDesc = new Array();
		vetQtdeObrigatoriedade = new Array();
		
		//Faz um laço através dos Inputs contidos no FORM. (coleção Elements) 
		for(a=0;a<fr.elements.length;a++){ 
			//Verifica se o INPUT é obrigatório. Observe o acesso a um parâmetro criado por nós
			if(fr.elements[a].disabled == false){
				if (fr.elements[a].Obrigatorio=="1"){
					//Verifca se a caixa em questão é um INPUT ou um COMBO
					if(fr.elements[a].tagName!="SELECT"){
						//Se for um INPUT faz a validação para INPUTs que consistem em ... 
						s=fr.elements[a].value;
						//Limpar a string e verificar se seu tamanho (depois de limpa) é 0. Se for, ela só tinha espaços em branco
						s=limparstring(s);
						
						/*
						if(fr.elements[a].type == "checkbox") {
							descCheck = fr.elements[a].Descricao;
							if(fr.elements[a].checked == true) {
								qtdeCheckSel++;
							}
						} else {*/
						
							if (s.length==0) {
								//No caso da falta de campo obrigatório, exibe a mensagem de erro
								//Observe a concatenação constante no objeto erro (garantindo a exibição da mensagem para várias caixas
								// e a utilização do parâmetro Descricao, definido por nós.
								erro.innerHTML = erro.innerHTML + fr.elements[a].Descricao + " &eacute; informa&ccedil;&atilde;o obrigat&oacute;ria.<br>"
								aviso.style.display = '';
								window.scroll(0,0);
								resp=false;
							}
						//}
					} else{ 
						if(fr.elements[a].multiple) {
							//Caso a caixa seja uma LISTBOX(combo multiplo) compara-se cada posição.
							auxelement = fr.elements[a];
							auxlength=0;
							for(i=0;i<auxelement.length;i++){
								if(auxelement[i].selected == true){
									auxlength++;
								}
							}
							if(auxlength==0) {
								erro.innerHTML =erro.innerHTML + fr.elements[a].Descricao + " &eacute; informa&ccedil;&atilde;o obrigat&oacute;ria.<br>"
								aviso.style.display = '';
								window.scroll(0,0);
								resp=false;
							}
						} else {
							//Caso a caixa seja uma COMBO seu valor é comparado a -99 para saber se está ou não preenchida
							// A exibição da mensagem de erro é igual
							lAlertComboSimples = 0;
							if(fr.elements[a].length > 0){
								if ((fr.elements[a].item(fr.elements[a].selectedIndex).value==-99) || (fr.elements[a].item(fr.elements[a].selectedIndex).value=="")) {
									lAlertComboSimples = 1;
								}
							} else {
								lAlertComboSimples = 1;
							}
							if(lAlertComboSimples == 1){
								erro.innerHTML =erro.innerHTML + fr.elements[a].Descricao + " &eacute; informa&ccedil;&atilde;o obrigat&oacute;ria.<br>"
								aviso.style.display = '';
								window.scroll(0,0);
								resp=false;							
							}
						}
					}
				}
				if (fr.elements[a].Obrigatorio == "2") {
					jaPossuiElemento = false;
					for(x = 0; x < vetNomeIdentificador.length; x++) {
						if(vetNomeIdentificador[x] == fr.elements[a].NomeIdentificador) {
							pos = x;
							x = vetNomeIdentificador.length;
							jaPossuiElemento = true;
						}
					}
					if(jaPossuiElemento == false) {
						pos = vetIdentificadorDesc.length;
						vetQtdeObrigatoriedade[vetQtdeObrigatoriedade.length] = fr.elements[a].QtdeObrigatoriedade;
						vetNomeIdentificador[vetNomeIdentificador.length] = fr.elements[a].NomeIdentificador;
						vetIdentificadorQtde[vetIdentificadorQtde.length] = 0;
						msgErro = fr.elements[a].Descricao + " deve possuir ao menos " + fr.elements[a].QtdeObrigatoriedade + " campo";
						
						if(fr.elements[a].QtdeObrigatoriedade > 1) {
							msgErro += "s";
						}
						if( (fr.elements[a].type=="text") || (fr.elements[a].tagName=="TEXTAREA") ) {
							msgErro += " preenchido";
						}
						
						if( (fr.elements[a].type == "checkbox") || (fr.elements[a].type == "radio") ) {
							msgErro += " selecionado";
						}
						
						if(fr.elements[a].QtdeObrigatoriedade > 1) {
							msgErro += "s";
						}
						
						vetIdentificadorDesc[vetIdentificadorDesc.length] = msgErro;
					}
					
					if( (fr.elements[a].type=="text") || (fr.elements[a].tagName=="TEXTAREA") ) {
						s=fr.elements[a].value;
						s=limparstring(s);
						
						if(s.length != 0) {
							vetIdentificadorQtde[pos] = vetIdentificadorQtde[pos]+1;
						}
					}
					if( (fr.elements[a].type == "checkbox") || (fr.elements[a].type == "radio") ) {
						if(fr.elements[a].checked == true) {
							vetIdentificadorQtde[pos] = vetIdentificadorQtde[pos]+1;
						}
					}
				}
			}
		}
		
		// Verifica se os campos possuem a quantidade necessária preenchida ou marcada
		for(x = 0; x < vetIdentificadorQtde.length; x++) {
			if(vetIdentificadorQtde[x] < vetQtdeObrigatoriedade[x]) {
				erro.innerHTML = erro.innerHTML + vetIdentificadorDesc[x] + ".<br>"
				aviso.style.display = '';
				window.scroll(0,0);
				resp=false;
			}
		}
		
		// Se algum erro ocorreu, resp contém false e o formulário não será enviado
		return(resp);
	}

/*--------------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------------*/

	/**
	 * Valida os tipos dos campos.
	 * fr -> Formulário
	 */
	
	function validartipos(fr){
		var resp;
		var a=0;
		var temp;
		var s;
		resp=true;
		//Limpa o objeto de erro
		erro.innerHTML = "";
		aviso.style.display = 'none';
		// Faz o laço através de todos os elementos do form
		for(a=0;a<fr.elements.length;a++){ 
			if (fr.elements[a].Tipo=="IN"){			
				if(validaNumero(fr.elements[a]) == false){
					resp=false
					erro.innerHTML = erro.innerHTML + fr.elements[a].Descricao + " deve conter um valor numérico válido.<br>";
					aviso.style.display = '';
					window.scroll(0,0);		
				}
			}
			/*
			if (fr.elements[a].Tipo=="IN"){
				{ 
					// Se o tipo for inteiro, faz a validação de valores
					s=fr.elements[a].value;
					s=limparstring(s);
					if (fr.elements[a].Obrigatorio=="1" || s.length>0) {
						// A validação só é feita se o campo for obrigatório OU se estiver preenchido
						temp=fr.elements[a].value;
						//Utiliza a função isNaN para verificar se é um número e parseInt para verificar se é inteiro
						if (isNaN(parseInt(temp))){ 
							resp=false;
							erro.innerHTML=erro.innerHTML + fr.elements[a].Descricao + " deve conter um número inteiro.<br>";
							aviso.style.display = '';
							window.scroll(0,0);
						}
					}
				}
			}
			if (fr.elements[a].Tipo=="F") {
				//Se o tipo for Float faz a validação
				s=fr.elements[a].value;
				s=limparstring(s);
				if (fr.elements[a].Obrigatorio=="1" || s.length>0) {
					// A validação só é feita se o campo for obrigatório OU se estiver preenchido
					temp=fr.elements[a].value;
					//Utiliza a função isNaN para verificar se é um número e parseFloat para verificar se é Float
					if (isNaN(parseFloat(temp)) || parseFloat(temp)<=0){ 
						resp=false;
						erro.innerHTML = erro.innerHTML + fr.elements[a].Descricao + " deve conter um número real positivo.<br>";
						aviso.style.display = '';
						window.scroll(0,0);
					}
				}
			}*/
			if (fr.elements[a].Tipo=="NOM") {
				s=fr.elements[a].value;
				s=limparstring(s);
				if (fr.elements[a].Obrigatorio=="1" || s.length>0) {
					// A validação só é feita se o campo for obrigatório OU se estiver preenchido
					temp=fr.elements[a].value;
					// Verifica a existencia de espaço para saber se nome e sobrenome foram preenchidos
					if (temp.indexOf(" ")==-1){
						resp=false;
						erro.innerHTML = erro.innerHTML + fr.elements[a].Descricao + " deve conter nome e sobrenome.<br>";
						aviso.style.display = '';
						window.scroll(0,0);
					} 
				}
			}
			if (fr.elements[a].Tipo=="MAIL") {
				if(validaEmail(fr.elements[a]) == false){
					resp=false
					erro.innerHTML = erro.innerHTML + fr.elements[a].Descricao + " deve conter um e-mail válido.<br>";
					aviso.style.display = '';
					window.scroll(0,0);		
				}
			}
			if(fr.elements[a].Tipo=="DATA"){
				if(validaData(fr.elements[a]) == false){
					resp=false
					erro.innerHTML = erro.innerHTML + fr.elements[a].Descricao + " deve conter uma data válida.<br>";
					aviso.style.display = '';
					window.scroll(0,0);
				}
			}
		}
		//Se algo foi inválido, resp contém false
		return(resp); 
	}
	
	
/*--------------------------------------------------------------------------------------------------------------------------------------*/
	/**
	 * Faz limpeza de strings. Utilizada pela função de validação de campos obrigatorios
	 * s -> String que se deseja "limpar"
	 */

	function limparstring(s){
		while (s.search(" ")!=-1){
			s=s.replace(" ","");
		}
		return(s);
	}
	
/*--------------------------------------------------------------------------------------------------------------------------------------*/

	function writeFlash(url_root, width, height, bgcolor, version, name) {
		if (version == null || version == ''){
			version = '7,0,0,0';
		}
		document.writeln("<object name='"+name+"' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'");
		document.writeln(" codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version="+version+"' ");
		document.writeln(" width='"+width+"' height='"+height+"'> ");
		document.writeln("<param name='movie' value='"+url_root+"'>");
		document.writeln("<param name='quality' value='high'>");
		document.writeln("<param name='menu' value='false'>");
		document.writeln("<param name='bgcolor' value='#"+bgcolor+"'>");
		if (bgcolor == null || bgcolor == 'FFFFFF'){
			document.writeln("<param name='wmode' value='transparent'>");
		}
		document.writeln("<embed src='"+url_root+"' ");
		if (bgcolor == null || bgcolor == 'FFFFFF'){
			document.writeln(" wmode='transparent' ");
		}
		
		document.writeln(" quality='high' bgcolor='#"+bgcolor+"'  width='"+width+"' height='"+height+"' ");
		document.writeln(" type='application/x-shockwave-flash' ");
		document.writeln(" pluginspage='http://www.macromedia.com/shockwav/download/index.cgi?P1_Prod_Version=ShockwaveFlash'");
		document.writeln(" menu='false'>");
		document.writeln("</embed></object>");
	}
	
/*--------------------------------------------------------------------------------------------------------------------------------------*/;
	function AJAX(pMesagemAJAX){
		this.lMensagemAJAX = pMesagemAJAX;
		// Inicializa o XHTMLHTTPRequest
		try{
			lXMLHTTP = new XMLHttpRequest();
		}catch(ee){
			try{
				lXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					lXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(E){
					lXMLHTTP = false;
				}
			}
		}
		// Carrega a URL
		this.carregaURL = function(pURL, pDIV, pExibirCarregamento, pMetodo, pForm, pScriptExecutavel) {
			lSend = null;
			if (pMetodo == 'post') {
				lSend = this.getForm(pForm);
			}
			//Exibe o lTexto carregando no div conteúdo
			lDIVConteudo = document.getElementById(pDIV);
			//document.body.style.cursor = 'progress';
			if(pExibirCarregamento) {
				lDIVConteudo.innerHTML = '<div class="carregandoajax">' + this.lMensagemAJAX + '</div>';
			}
	
			//Abre a url
			lXMLHTTP.open(pMetodo, pURL, true);
			
			if (pMetodo ==  'post') {
				lXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			}
							
			//Executada quando o navegador obtiver o código
			lXMLHTTP.onreadystatechange = function() {
				if (lXMLHTTP.readyState == 4){
					//Lê o lTexto
					lTexto = lXMLHTTP.responseText;
		
					//Desfaz o urlencode do php
					lTexto = lTexto.replace(/\+/g," ");
					lTexto = unescape(lTexto);
					alert(lTexto);

					//Exibe o lTexto na div conteúdo
					//document.getElementById("testetste").value = lTexto;
					lDIVConteudo.innerHTML = lTexto;
					//document.body.style.cursor = 'auto';
				}
			}

			lXMLHTTP.send(lSend);
			
			if(pScriptExecutavel != null) {
				eval(pScriptExecutavel);
			}
		}
		
		this.getForm = function(pFormulario){
			lStringForm = '';
			//Faz um laço através dos Inputs contidos no FORM. (coleção Elements) 
			for(a=0; a<pFormulario.elements.length; a++){ 
				if((pFormulario.elements[a].disabled == false)&&(pFormulario.elements[a].type != 'submit')){
					lStringForm = pFormulario.elements[a].name + '=' +  pFormulario.elements[a].value + '&' + lStringForm ;
				}
			}  
			return lStringForm;
		}
	}
	
/*--------------------------------------------------------------------------------------------------------------------------------------*/

	function redirecionaAJAX(pListaURI,pPosicao,pParametros) {
		lAJAXRedirecionador = new AJAX("Carregando");
		pParametro = pParametros;
		this.insereAspa = function(pArray,pContrabarra) {
			lArrayRetorno = Array();
			for (a=0; a<pArray.length; a++) {
					if ((pArray[a]!= null) && (pArray[a]!= true) && (pArray[a]!= false)) {
						if (pContrabarra) {
							lArrayRetorno[a] = '\\\'' + pArray[a] + '\\\'';
						} else {
							lArrayRetorno[a] = '\'' + pArray[a] + '\'';							
						}
					} else {
						lArrayRetorno[a] = pArray[a]; 
					}
			}
			return lArrayRetorno;
		}

		pParametro =  this.insereAspa(pParametro,false);
		if ((pPosicao+1) < pListaURI.length) {
			pPosicao1 = pPosicao + 1;
			pParametro[pParametro.length] = '\'redirecionaAJAX(Array(' + insereAspa(pListaURI,true) + '),' + pPosicao1 + ',Array(' + insereAspa(pParametros,true) + '))\'';
		} else {
			pParametro[pParametro.length] = 'null';
		}

		pListaURI =  this.insereAspa(pListaURI,false);
		
		eval('lAJAXRedirecionador.carregaURL(' + pListaURI[pPosicao] + ',' + pParametro + ');');
	}
	
/*--------------------------------------------------------------------------------------------------------------------------------------*/;

	function validar_form_webmail() {
		if (form_webmail.imapuser.value == "") {
			alert("Por favor, informe seu usuário!");
			form_webmail.imapuser.focus();
			return false;
		} 
		if (form_webmail.pass.value == "") {
			alert("Por favor, informe sua senha!");
			form_webmail.pass.focus();
			return false;
		}
		return true;
	}