var $jQ = jQuery;

$jQ(".ddd").keypress(function(e){

	if(VerificarNumero(e) == false)
	{
		return false;
	}
	
	return formataCampo(this, "00", e);
	
});
$jQ(".ddd").keyup(function() {
	if ($jQ(".ddd").val().length == 2) {
		$jQ(".telefone").focus();
	}
	
});
$jQ(".telefone").keypress(function(e){
	if(VerificarNumero(e) == false)
	{
		return false;
	}
	return formataCampo(this, "0000-0000", e);
});
	
	
// Min-width IE6
var largura = $jQ('.limites').width();
if ($jQ.browser.msie && $jQ.browser.version < 7 && largura < 1002) {
	$jQ('.limites').css('width', '1002px');
}

$("#btnEnviarContato").click(function (){

	//validando campos
	if($(".assunto").val().trim().length == 0)
	{
		MsgBox.Show("Assunto", "Selecione um assunto para continuar!", "alerta");		
		MsgBox.PressClose = function ()
		{
			MsgBox.Close();
			$(".assunto").focus();
		}		
		return false;
	}
	else {
		if($(".nome").val().trim().length < 2)
		{
			MsgBox.Show("Nome", "Entre com seu nome para continuar!", "alerta");
			MsgBox.PressClose = function ()
			{
				MsgBox.Close();
				$(".nome").focus();
			}	
			return false;
		}
		else {
			if (($jQ(".email").val().length == 0) || (!VerificaEmail(document.getElementById("email"))))
			{		
				MsgBox.Show("Nome", "Entre com um email válido para continuar!", "alerta");
				MsgBox.PressClose = function ()
				{
					MsgBox.Close();
					$(".email").focus();
				}	

				return false;
			}
			else {
				if($jQ(".filial").val().length == 0)
				{
					MsgBox.Show("Filial", "Entre com uma filial para continuar!", "alerta");
					MsgBox.PressClose = function ()
					{
						MsgBox.Close();
						$(".filial").focus();
					}	

					return false;
				}	
				else {
					if($jQ(".mensagem").val().length == 0)
					{
						MsgBox.Show("Mensagem", "Entre com sua mensagem para continuar!", "alerta");
						MsgBox.PressClose = function ()
						{
							MsgBox.Close();
							$(".mensagem").focus();
						}	
						
						return false;
					}	
					else {
						if ($jQ(".mensagem").val().length >= 2000) {
							MsgBox.Show("Mensagem", "Sua mensagem deve ter no máximo 2000 caracteres!", "alerta");
							MsgBox.PressClose = function ()
							{
								MsgBox.Close();
								$(".mensagem").focus();
							}	

							return false;
						}
						else {
							$jQ(".form").submit();
						}
					}
				}
						
			}
					
		}
	}
});

// baloes dos produtos (tooltip)
$jQ('.produtos .conteudo .coluna2 .produtos li').hover(function(){
	$jQ('span', $jQ(this)).fadeIn('fast');
	}, function(){
	$jQ('span', $jQ(this)).fadeOut('fast');
});

	

/*
	:::Exemplo:::
	<!-- a formatação está no class -->
	<form id="frmValidacoes" name="frmValidacoes" method="post">
		<input id="txtCpf" name="txtCpf" type="text" size="30" class="val_cpf" />
		<input id="txtData" name="txtData" type="text" size="30" class="val_data" />
	</form>
	
	<script>
		//No lugar de um form pode utilizar uma div.
		SetarValidacoes("frmValidacoes");
	</script>
*/
function SetarValidacoes(idContainer, blnSetarBlur)
{
	// ***************** <VALIDACAO_CPF>
	// Exemplo: <input id="txtCpf" name="txtCpf" type="text" size="30" class="val_cpf" />
	var lstInputsCpf = $jQ("#" + idContainer + " :input.val_cpf");
	
	$jQ(lstInputsCpf).attr("maxlength", "14");
	
	$jQ(lstInputsCpf).keypress(function(e){
		if(VerificarNumero(e) == false)
		{
			return false;
		}
        return formataCampo(this, '000.000.000-00', e);
	});
	
	$jQ(lstInputsCpf).blur(function() {
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			if (ValidarCpf($jQ(this).val().trim()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
				parent.MsgBox.Show("CPF inválido", "Verifique o CPF digitado.<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_CPF>
	
	// ***************** <VALIDACAO_DATA>
	// Exemplo: <input id="txtData" name="txtData" type="text" size="30" class="val_data" />
	var lstInputsData = $jQ("#" + idContainer + " :input.val_data");
	
	$jQ(lstInputsData).attr("maxlength", "10");
	
	$jQ(lstInputsData).keypress(function(e){
		if(VerificarNumero(e) == false){
			return false;
        }       
        return formataCampo(this, '00/00/0000', e);
	});
	
	$jQ(lstInputsData).blur(function() {
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			if (ValidarData($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
			
				parent.MsgBox.Show("Data inválida", "Verifique a data digitada.<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_DATA>
	
	// ***************** <VALIDACAO_EMAIL>
	// Exemplo: <input id="txtEmail" name="txtEmail" type="text" size="30" class="val_email" />
	var lstInputsEmail = $jQ("#" + idContainer + " :input.val_email");
	
	$jQ(lstInputsEmail).blur(function() {
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			$jQ(this).val($jQ(this).val().toLowerCase());
			if (ValidarEmail($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
				parent.MsgBox.Show("E-mail inválido", "Verifique o e-mail digitado.<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_EMAIL>
	
	// ***************** <VALIDACAO_CNPJ>
	// <input id="txtCnpj" name="txtCnpj" type="text" size="30" class="val_cnpj" />
	var lstInputsCnpj = $jQ("#" + idContainer + " :input.val_cnpj");

	$jQ(lstInputsCnpj).attr("maxlength", "18");
	
	$jQ(lstInputsCnpj).keypress(function(e){
		if(VerificarNumero(e) == false)
		{
			return false;
		}
		return formataCampo(this, '00.000.000/0000-00', e);
	});

	$jQ(lstInputsCnpj).blur(function(){
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length)
		{
	        if(ValidarCnpj($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
				parent.MsgBox.Show("CNPJ inválido", "Verifique o CNPJ digitado.<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_CNPJ>
	
	// ***************** <VALIDACAO_SO_NUMEROS>
	// <input id="txtNumeros" name="txtNumeros" type="text" size="30" class="val_apenasnumeros" />
	var lstInputsNumeros = $jQ("#" + idContainer + " :input.val_apenasnumeros");
	
	$jQ(lstInputsNumeros).blur(function(e){
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			if (ValidarApenasNumeros($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).val("");
					$jQ(inputThis).focus();
				}
				parent.MsgBox.Show("Atenção", "Apenas números para este campo.<br />", "alerta");
			}
		}
	});
	
	$jQ(lstInputsNumeros).keypress(function(e){
		return VerificarNumero(e);
	});
	// ***************** </VALIDACAO_SO_NUMEROS>
	
	// ***************** <VALIDACAO_TELEFONE_COM_DDD>
	// <input id="txtTelefoneDDD" name="txtTelefoneDDD" type="text" size="30" class="val_telefoneddd" />
	var lstInputsTelefoneDDD = $jQ("#" + idContainer + " :input.val_telefoneddd");
	
	$jQ(lstInputsTelefoneDDD).attr("maxlength", "14");

	$jQ(lstInputsTelefoneDDD).keypress(function(e){
		if(VerificarNumero(e) == false)
		{
			return false;
		}
		return formataCampo(this, "(00) 0000-0000", e);
	});
	
	$jQ(lstInputsTelefoneDDD).blur(function(){
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			if (ValidarTelefoneDdd($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
				parent.MsgBox.Show("Atenção", "Telefone inválido, verifique.<br />O formato correto é (xx) xxxx-xxxx<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_TELEFONE_COM_DDD>
	
	// ***************** <VALIDACAO_TELEFONE>
	// <input id="txtTelefone" name="txtTelefone" type="text" size="30" class="val_telefone" />
	var lstInputsTelefone = $jQ("#" + idContainer + " :input.val_telefone");

	$jQ(lstInputsTelefone).attr("maxlength", "9");

	$jQ(lstInputsTelefone).keypress(function(e){
		if(VerificarNumero(e) == false)
		{
			return false;
		}
		return formataCampo(this, "0000-0000", e);
	});
	
	$jQ(lstInputsTelefone).blur(function(){
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			if (ValidarTelefone($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
				parent.MsgBox.Show("Atenção", "Telefone inválido, verifique.<br />O formato correto é xxxx-xxxx<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_TELEFONE_COM_DDD>
	
	// ***************** <VALIDACAO_CEP>
	// <input id="txtCep" name="txtCep" type="text" size="30" class="val_cep" />
	var lstInputsCep = $jQ("#" + idContainer + " :input.val_cep");

	$jQ(lstInputsCep).attr("maxlength", "9");

	$jQ(lstInputsCep).keypress(function(e){
		if(VerificarNumero(e) == false)
		{
			return false;
		}
		return formataCampo(this, "00000-000", e);
	});
	
	$jQ(lstInputsCep).blur(function(){
		if (blnSetarBlur == true ) { return true; }
		if ($jQ(this).val().trim().length > 0)
		{
			if (ValidarCep($jQ(this).val()) == false)
			{
				var inputThis = this;
				MsgBox.PressClose = function()
				{
					MsgBox.Close();
					$jQ(inputThis).select();
				}
				parent.MsgBox.Show("CEP inválido", "Verifique o CEP digitado.<br />", "alerta");
			}
		}
	});
	// ***************** </VALIDACAO_TELEFONE_COM_DDD>
}

// Valida cpf e retorna true se cpf correto
function ValidarCpf(vlrEntrada)
{
	var strCPF = vlrEntrada;
    var Soma;
    var Resto;
    Soma = 0;
	exp = /\.|\-/g
	strCPF = strCPF.toString().replace( exp, "" );

	if (strCPF == "11111111111" || strCPF == "22222222222" || strCPF == "33333333333" || strCPF == "44444444444" ||
		strCPF == "55555555555" || strCPF == "66666666666" || strCPF == "77777777777" || strCPF == "88888888888" ||
		strCPF == "99999999999" || strCPF == "00000000000" )
		return false;
		
    for (i=1; i<=9; i++)
	Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (11 - i); 
    Resto = (Soma * 10) % 11;
    if ((Resto == 10) || (Resto == 11)) 
	Resto = 0;
    if (Resto != parseInt(strCPF.substring(9, 10)) )
	return false;
	Soma = 0;
    for (i = 1; i <= 10; i++)
       Soma = Soma + parseInt(strCPF.substring(i-1, i)) * (12 - i);
    Resto = (Soma * 10) % 11;
    if ((Resto == 10) || (Resto == 11)) 
	Resto = 0;
    if (Resto != parseInt(strCPF.substring(10, 11) ) )
        return false;
    return true;
}

// Valida data e retorna true se data correta
function ValidarData(vlrEntrada)
{
	var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$jQ/;
	var vdt = new Date();
	var vdia = vdt.getDay();
	var vmes = vdt.getMonth();
	var vano = vdt.getYear();
	
	if (!((vlrEntrada.match(expReg)) && (vlrEntrada != "")))
		return false;
	else
		return true;
}

// Valida e-mail e retorna true se e-mail válido
function ValidarEmail(vlrEntrada)
{
	var parametro = vlrEntrada.toLowerCase();
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$jQ";
	var regex = new RegExp(emailReg);
	return regex.test(parametro);
}

// Valida CNPJ e retorna true se válido
function ValidarCnpj(vlrEntrada)
{
	var cnpj = vlrEntrada;
	var valida = new Array(6,5,4,3,2,9,8,7,6,5,4,3,2);
	var dig1= new Number;
	var dig2= new Number;
	
	exp = /\.|\-|\//g
	cnpj = cnpj.toString().replace( exp, "" ); 
	var digito = new Number(eval(cnpj.charAt(12)+cnpj.charAt(13)));
			
	for(i = 0; i<valida.length; i++)
	{
		dig1 += (i>0? (cnpj.charAt(i-1)*valida[i]):0);
		dig2 += cnpj.charAt(i)*valida[i];
	}
	dig1 = (((dig1%11)<2)? 0:(11-(dig1%11)));
	dig2 = (((dig2%11)<2)? 0:(11-(dig2%11)));
	
	if(((dig1*10)+dig2) != digito)
		return false;
	else
		return true;
}

// Valida se existem apenas números no campo e retorna true válido
function ValidarApenasNumeros(vlrEntrada)
{
	var ValidChars = "0123456789";
	var IsNumber = true;
	var Char;

	for (i = 0; i < vlrEntrada.length && IsNumber == true; i++)
	{ 
		Char = vlrEntrada.charAt(i); 
		if (ValidChars.indexOf(Char) == -1)
			IsNumber = false;
	}
	return IsNumber;
}

// Valida se foi digitado um telefone com ddd corretamente e retorna true
function ValidarTelefoneDdd(vlrEntrada)
{
	exp = /\(\d{2}\)\ \d{4}\-\d{4}/
	return exp.test(vlrEntrada);
}

// Valida se foi digitado um telefone sem ddd corretamente e retorna true
function ValidarTelefone(vlrEntrada)
{
	exp = /\d{4}\-\d{4}/
	return exp.test(vlrEntrada);
}

// Valida se foi digitado um cep corretamente e retorna true
function ValidarCep (vlrEntrada)
{
	exp = /\d{5}\-\d{3}/
	return exp.test(vlrEntrada);
}

// Permite apenas números no campo
function VerificarNumero(tecla)
{
	var Digitado = tecla.which;	
	if ((Digitado == 8 || Digitado == 13 || Digitado == 9 || Digitado == 71 ) || (Digitado >= 48 && Digitado <= 57)) {
		return true;
	}
	return false;
}

//Caracteres inválidos
function ValidarCaracter(idCampo)
{
	var strValid = " çÇáàãäâabcdéèëêefghìíïîijklmnòóõöôopqrstùúüûuvwxyzÁÀÃÄÂABCDÉÈËÊEFGHÍÌÏÎIJKLMNÓÒÔÖÔOPQRSTÚÙÜÛUVWXYZ0123456789)(&-."
	var strTemp;
	for (var i=0; i < idCampo.value.length; i++)
	{
		strTemp = "" + idCampo.value.substring(i, i+1);
		if (strValid.indexOf(strTemp) == "-1")
		{
			return false;
			return;
		}
	}
	return true;
}

//Calcula idade
function calculaIdade(dataNasc) { 
	var dataAtual = new Date();
	var anoAtual = dataAtual.getFullYear();
	var anoNascParts = dataNasc.split('/');
	var diaNasc =anoNascParts[0];
	var mesNasc =anoNascParts[1];
	var anoNasc =anoNascParts[2];
	var idade = anoAtual - anoNasc;
	var mesAtual = dataAtual.getMonth() + 1; 

	//se mês atual for menor que o nascimento, nao fez aniversario ainda; (26/10/2009) 
	if(mesAtual < mesNasc)
	{
		idade--; 
	}
	else
	{
		//se estiver no mes do nasc, verificar o dia
		if(mesAtual == mesNasc)
		{ 
			if(dataAtual.getDate() < diaNasc )
			{ 
			//se a data atual for menor que o dia de nascimento ele ainda nao fez aniversario
			idade--; 
			}
		}
	} 
	return idade; 
}

// Coloca mascara no campo.
function formataCampo(objInput, Mascara, tecla)
{ 
	var boleanoMascara;
	var Digitado = tecla.keyCode ? tecla.keyCode : tecla.which ? tecla.which : tecla.charCode;

	exp = /\-|\.|\/|\(|\)| /g
	campoSoNumeros = $jQ(objInput).val().toString().replace( exp, "" ); 

	var posicaoCampo = 0;    
	var NovoValorCampo="";
	var TamanhoMascara = campoSoNumeros.length;; 

	if (Digitado != 8)
	{ // backspace 
		for(i = 0; i <= TamanhoMascara; i++)
		{ 
			boleanoMascara  = ((Mascara.charAt(i) == "-") || (Mascara.charAt(i) == ".") || (Mascara.charAt(i) == "/"));
			boleanoMascara  = boleanoMascara || ((Mascara.charAt(i) == "(") || (Mascara.charAt(i) == ")") || (Mascara.charAt(i) == " "));
			if (boleanoMascara)
			{ 
				NovoValorCampo += Mascara.charAt(i);
				TamanhoMascara++;
			}
			else
			{ 
				NovoValorCampo += campoSoNumeros.charAt(posicaoCampo);
				posicaoCampo++; 
			}
		}
		$jQ(objInput).val(NovoValorCampo);
		return true; 
	}
	else
		return true;
}

//Retorna os campos de preenchimento obrigatório que estão vazios.
function RetornarRequeridos(idContainer)
{
	var lstInputRequeridos = $jQ("#" + idContainer + " :input.val_requerido");
	var inputs = new Array();
	
	for (var i = 0; i < lstInputRequeridos.length; i++)
	{
		if ($jQ(lstInputRequeridos[i]).attr("disabled") == "")
		{
			if ($jQ(lstInputRequeridos[i]).val().trim().length == 0)
			{
				inputs.push(lstInputRequeridos[i]);
			}
			else
			{
				var classe = $jQ(lstInputRequeridos[i]).attr("class");
				
				if (classe.search("val_cpf") == 0)
				{
					if (ValidarCpf($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_data") == 0)
				{
					if (ValidarData($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_email") == 0)
				{
					$jQ(lstInputRequeridos[i]).val($jQ(lstInputRequeridos[i]).val().toLowerCase());
					if (ValidarEmail($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_cnpj") == 0)
				{
					if (ValidarCnpj($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_apenasnumeros") == 0)
				{
					if (ValidarApenasNumeros($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_telefoneddd") == 0)
				{
					if (ValidarTelefoneDdd($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_telefone") == 0)
				{
					if (ValidarTelefone($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
				else if (classe.search("val_cep") == 0)
				{
					if (ValidarCep($jQ(lstInputRequeridos[i]).val()) == false)
						inputs.push(lstInputRequeridos[i]);
				}
			}
		}
	}
	return inputs;
}
