//#############################################################
//####                        Máscaras                     ####
//#### <input type="text" tipo="numerico" onclick="Mascaras.carregar();"> aqui so da para digitar numeros<br />
//#### <input type="text" tipo="numerico" onclick="Mascaras.carregar();" negativo=true> aqui so da para digitar numeros e no caso de precionar "-" umsinal de negativo vai aparecer<br />
//#### <input type="text" tipo="decimal" negativo="false" casasdecimais="3" onclick="Mascaras.carregar();"> números decimais<br />
//#### <input type="text" tipo="numerico" onclick="Mascaras.carregar();" mascara="##/##/####"> data<br />
//#### <input type="text" tipo="numerico" onclick="Mascaras.carregar();" mascara="###.###.###-##"> cpf<br />
//#############################################################
Mascaras = {
IsIE: navigator.appName.toLowerCase().indexOf('microsoft')!=-1,
AZ: /[A-Z]/i,
Acentos: /[À-ÿ]/i,
Num: /[0-9]/,
carregar: function(parte){
 var Tags = ['input','textarea'];
 if (typeof parte == "undefined") parte = document;
 for(var z=0;z<Tags.length;z++){
  Inputs=parte.getElementsByTagName(Tags[z]);
  for(var i=0;i<Inputs.length;i++)
   if(('button,image,hidden,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1)
    this.aplicar(Inputs[i]);
 }
},
aplicar: function(campo){
 tipo = campo.getAttribute('tipo');
 if (!tipo || campo.type == "select-one") return;
 orientacao = campo.getAttribute('orientacao');
 mascara = campo.getAttribute('mascara');
 if (tipo.toLowerCase() == "decimal"){
  orientacao = "esquerda";
  casasdecimais = campo.getAttribute('casasdecimais');
  tamanho = campo.getAttribute('maxLength');
  if (!tamanho || tamanho > 50)
   tamanho = 10;
  if (!casasdecimais)
   casasdecimais = 2;
  campo.setAttribute("mascara", this.geraMascaraDecimal(tamanho, casasdecimais));
  campo.setAttribute("tipo", "numerico");
  campo.setAttribute("orientacao", orientacao);
 }
 if (orientacao && orientacao.toLowerCase() == "esquerda") campo.style.textAlign = "right";
 if (mascara) campo.setAttribute("maxLength", mascara.length);
 if (tipo){
  campo.onkeypress = function(e){ return Mascaras.onkeypress(e?e:event); };
  campo.onkeyup = function(e){ Mascaras.onkeyup(e?e:event, campo) };
 }
 campo.setAttribute("snegativo", ((campo.value).substr(0,1) == "-" ? "s" : "n"));
},
onkeypress: function(e){
 KeyCode = this.IsIE ? event.keyCode : e.which;
 campo =  this.IsIE ? event.srcElement : e.target;
 readonly = campo.getAttribute('readonly');
 if (readonly) return;
 maxlength = campo.getAttribute('maxlength');
 pt = campo.getAttribute('pt');
 selecao = this.selecao(campo);
 if (selecao.length > 0 && KeyCode != 0){
  campo.value = ""; return true;
 }
 if (KeyCode == 0) return true;
 Char = String.fromCharCode(KeyCode);
 valor = campo.value;
 mascara = campo.getAttribute('mascara');
 if (KeyCode != 8){
  tipo = campo.getAttribute('tipo').toLowerCase();
  negativo = campo.getAttribute('negativo');
  if(negativo && KeyCode == 45){
   snegativo = campo.getAttribute('snegativo');
   snegativo = (snegativo == "s" ? "n" : "s");
   campo.setAttribute("snegativo", snegativo);
  }else{
   valor += Char
   if (tipo == "numerico" && Char.search(this.Num) == -1) return false;
   if (KeyCode != 32 && tipo == "caracter" && Char.search(this.AZ) == -1 && Char.search(this.Acentos) == -1) return false;
  }
 }
 if (mascara){
  this.aplicarMascara(campo, valor);
  return false;
 }
 return true;
},
onkeyup: function(e, campo){
 KeyCode = this.IsIE ? event.keyCode : e.which;
 if (KeyCode != 9 && KeyCode != 16 && KeyCode != 109){
  valor = campo.value;
  if (KeyCode == 8 && !this.IsIE) valor = valor.substr(0,valor.length-1);
  this.aplicarMascara(campo, valor);
 }
},
aplicarMascara: function(campo, valor){
 mascara = campo.getAttribute('mascara');
 if (!mascara) return;
 negativo = campo.getAttribute('negativo');
 snegativo = campo.getAttribute('snegativo');
 if (negativo && valor.substr(0,1) == "-") 
  valor = valor.substr(1,valor.length-1);
 orientacao = campo.getAttribute('orientacao');
 var i = 0;
 for(i=0;i<mascara.length;i++){
  caracter = mascara.substr(i,1);
  if (caracter != "#") valor = valor.replace(caracter, "");
 }
 retorno = "";
 if (orientacao != "esquerda"){
  contador = 0;
  for(i=0;i<mascara.length;i++){
   caracter = mascara.substr(i,1);
   if (caracter == "#"){
    retorno += valor.substr(contador,1);
    contador++;
   }else
    retorno += caracter;
   if(contador >= valor.length) break;
  }
 }else{
  contador = valor.length-1;
  for(i=mascara.length-1;i>=0;i--){
   if(contador < 0) break;
   caracter = mascara.substr(i,1);
   if (caracter == "#"){
    retorno = valor.substr(contador,1) + retorno;
    contador--;
   }else
    retorno = caracter + retorno;
  }
 }
 if (negativo && snegativo == "s")
  retorno = "-" + retorno;
 campo.value = retorno;
},
geraMascaraDecimal: function(tam, decimais){
 var retorno = ""; var contador = 0; var i = 0;
 decimais = parseInt(decimais);
 for (i=0;i<(tam-(decimais+1));i++){
  retorno = "#" + retorno;
  contador++;
  if (contador == 3){
   retorno = "." + retorno;
   contador=0;
  }
 }
 retorno = retorno + ",";
 for (i=0;i<decimais;i++) retorno += "#";
 return retorno;
},
selecao: function(campo){
 if (this.IsIE)
  return document.selection.createRange().text;
 else
  return (campo.value).substr(campo.selectionStart, (campo.selectionEnd - campo.selectionStart));
},
formataValor: function (valor, decimais){
 valor = valor.split('.');
 if (valor.length == 1) valor[1] = "";
 for(var i=valor[1].length;i<decimais;i++)
  valor[1] += "0"; 
 valor[1] = valor[1].substr(0,2);
 return (valor[0] + "." + valor[1]);
}
};

//#############################################################
//####    Verifica  formatação do campo como aaa@bbb.cc    ####
//####         Retorna true se for um E-Mail valido        ####
//####        Retorna false nao for um E-Mail valido       ####
//#############################################################
function IsValidEmail( Value )
{
	var i, Current, Tmp
	var Array = Value.split( '@' , 3 );

	// Se tiver mais ou menos que 1 Arroba ou nao tiver nada antes ou apos o Arroba
	if( Array.length != 2 || Array[0] == '' || Array[1] == '' )
		return false;

	Tmp = Array[0];
	// Se contiver caracteres especiais antes do Arroba
	for(i=0; i < Tmp.length ;i++)
		{
		Current =  Tmp.charAt(i);
		if( (Current < '0' || Current > '9') && (Current < 'A' || Current > 'Z') && (Current < 'a' || Current > 'z') && Current != '_' && Current != '-' && Current != '.' )
			return false;
		}

	Tmp = Array[1];
	// Se contiver caracteres especiais depois do Arroba
	for(i=0; i < Tmp.length ;i++)
		{
		Current =  Tmp.charAt(i);
		if( (Current < '0' || Current > '9') && (Current < 'A' || Current > 'Z') && (Current < 'a' || Current > 'z') && Current != '.' )
			return false;
		}
	
	Tmp = Tmp.split( '.' , 4 );
	// Se depois do arroba existir menos de 2 ou mais de 3 pontos
	if( Tmp.length != 2 && Tmp.length != 3 && Tmp.length != 4 )
		return false;

	// Se depois do arroba existir menos de 2 ou mais de 3 pontos
	if( Tmp.length == 2 && (Tmp[0] == '' || Tmp[1] == '') )
		return false;

	// Se depois do arroba existir menos de 2 ou mais de 3 pontos
	if( Tmp.length == 3 && (Tmp[0] == '' || Tmp[1] == '' || Tmp[2] == '') )
		return false;

	return true
	}

//#############################################################
//  Function:       isWhitespace (s)																									|
//  Description:    Returns true if string s is empty or whitespace characters only.	|
//  Arguments:      s = document.forms[0].elemment																		|
//  Returns:        true/false																												|
//#############################################################

var whitespace = " \t\n\r";

function isWhitespace (s)
{   
		var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

//#############################################################
// ================== VALIDAÇÃO DE DATAS ======================
// método: OnChange="javascript:VerificaData(this);"
//#############################################################
function VerificaData(field){ 
    var checkstr = "0123456789"; 
    var DateField = field; 
    var Datevalue = ""; 
    var DateTemp = ""; 
    var seperator = "/"; 
    var day; 
    var month; 
    var year; 
    var leap = 0; 
    var err = 0; 
    var i; 
    err = 0; 
    DateValue = DateField.value; 
    
    /* Deleta todos os caracteres exceto 0..9 */ 
    for (i = 0; i < DateValue.length; i++) { 
        if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) { 
            DateTemp = DateTemp + DateValue.substr(i,1); 
        } 
    } 
    
    DateValue = DateTemp; 
    
    /* Sempre modifica a data para 8 digitos*/ 
    /* Se o ano for digitado com 2 digitos assume 20xx */ 
    if (DateValue.length == 6) { 
        DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);
    }
     
    if (DateValue.length != 8) { 
        err = 1;
    } 
    
    /* ano é considerado inválido se for = 0000 */ 
    year = DateValue.substr(4,4); 
    if (year == 0) { 
        err = 1; 
    } 
    
    /* Validação do Mês */ 
    month = DateValue.substr(2,2); 
    if ((month < 1) || (month > 12)) { 
        err = 1; 
    } 

    /* Validação do Dia */ 
    day = DateValue.substr(0,2); 
    if (day < 1) { 
        err = 1; 
    } 

    /* Validação do ano bissexto referente ao mês de fevereiro */ 
    if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) { 
        leap = 1; 
    } 
    if ((month == 2) && (leap == 1) && (day > 29)) { 
        err = 1; 
    } 
    if ((month == 2) && (leap != 1) && (day > 28)) { 
        err = 1; 
    } 
    
    /* Validação dos outros meses */ 
    if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) { 
        err = 1; 
    }     
    if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) { 
        err = 1; 
    } 
    
    /* Se não houver erro escreve a data completa no campo input com os separadores (ex. 07/01/2004) */ 
    if (err == 0) { 
        DateField.value = day + seperator + month + seperator + year; 
    } else { 
        /*
        alert("Data Inválida!");   Escreve mensagem de erro se err != 0  
        DateField.select();
        DateField.value = ''; 
        DateField.focus(); 
        */
        return false; 
    } 
    
    return true; 
} 

//#############################################################
//  Function:       isEmpty(s)																								|
//  Description:    Check whether string s is empty.													|
//  Arguments:      s = document.forms[0].elemment														|
//  Returns:        true/false																								|
//#############################################################

function isEmpty(s){
	return ((s == null) || (s.length == 0))
}



//#############################################################
//  Validar Contato																								|
//#############################################################
function validarContato(){
	f = document.formulario_contato
	
	/////NOME-------------------------------------------------
	if (f.nome.value == '')
	{ alert('Favor preencher o campo Nome'); f.nome.focus(); return false};
	
	/////EMAIL-------------------------------------------------
	if (!IsValidEmail(f.email.value))
	   {alert('Favor preencher o campo E-mail'); f.email.focus(); return false};
}


//#############################################################
//  Validar Inscrições																			|
//#############################################################
function validarInscreva_se(){
	f = document.formulario_inscrevase
	
	/////SOBRENOME-------------------------------------------------
	if (f.sobrenome.value == '')
	{ alert('Favor preencher o campo Sobrenome'); f.sobrenome.focus(); return false};
	
	/////NOME-------------------------------------------------
	if (f.nome.value == '')
	{ alert('Favor preencher o campo Nome'); f.nome.focus(); return false};
	
	/////ENDEREÇO-------------------------------------------------
	if (f.endereco.value == '')
	{ alert('Favor preencher o campo de Endereço'); f.endereco.focus(); return false};
	
	/////APTO-------------------------------------------------
	//if (f.complemento.value == '')
	//{ alert('Favor preencher o campo Apto'); f.complemento.focus(); return false};
	   
	/////CIDADE-------------------------------------------------
	if (f.cidade.value == '')
	{ alert('Favor preencher o campo Cidade'); f.cidade.focus(); return false};
	
	/////ESTADO-------------------------------------------------
	if (f.estado.value == '')
	{ alert('Favor preencher o campo Estado'); f.estado.focus(); return false};
	
	/////CEP-------------------------------------------------
	if (f.cep.value == '')
	{ alert('Favor preencher o campo Cep'); f.cep.focus(); return false};
	
	/////PAÍS-------------------------------------------------
	if (f.pais.value == '')
	{ alert('Favor preencher o campo País'); f.pais.focus(); return false};
	
	/////TODOS OS FONES-------------------------------------------------
	if (f.fone_res.value == '' && f.fone_cel.value == '' && f.fone_com.value == '')
	{ alert('Favor preencher um dos campos Telefone'); f.fone_res.focus(); return false};
	
	/*
	/////FONE RESIDENCIAL-------------------------------------------------
	if (f.fone_res.value == '')
	{ alert('Favor preencher o campo Telefone Residencial'); f.fone_res.focus(); return false};
		
	/////CELULAR-------------------------------------------------
	if (f.fone_cel.value == '')
	{ alert('Favor preencher o campo Telefone Celular'); f.fone_cel.focus(); return false};
	
	/////FONE COMERCIAL-------------------------------------------------
	if (f.fone_com.value == '')
	{ alert('Favor preencher o campo Telefone Comercial'); f.fone_com.focus(); return false};
	*/
	/////EMAIL-------------------------------------------------
	if (!IsValidEmail(f.email.value))
	   {alert('Favor preencher o campo E-mail'); f.email.focus(); return false};
}



//#############################################################
//  Tira frases de apoio dos campos.																							|
//#############################################################
function validarInscrevase(campo){
	var frase = new Array(12);
		frase[0] = 'Escreva sua mensagem.';
		frase[1] = 'Escreva seu nome.';
		frase[2] = 'Escreva seu e-mail.';
		frase[3] = 'Escreva seu sobrenome.';
		frase[4] = 'Escreva seu endereço.';
		frase[5] = 'Escreva seu complemento.';
		frase[6] = 'Escreva sua cidade.';
		frase[7] = 'Escreva seu estado.';
		frase[8] = 'Escreva seu cep.';
		frase[9] = 'Escreva seu país.';
		frase[10] = 'Escreva seu telefone residencial.';
		frase[11] = 'Escreva seu telefone celular.';
		frase[12] = 'Escreva seu telefone  comercial.';
		frase[12] = 'Escreva sua instituição.';
		
		
		if (campo != undefined && campo != null ){
			for (x in frase){
				if (campo.value == frase[x])
					{campo.value = ''; campo.focus(); return false;};
			}
		}
}