jQuery( function( $ )
{

	/**
	 *
	 * Página inicial
	 * http://www.companhiadoemprestimo.com.br/
	 *
	 **/
	if( exists( 'form#form-credito' ) )
	{

		/**
		 *
		 * Máscara do campo de telefone
		 *
		 **/
		$( 'input#form-credito-telefone' ).setMask( 'phone' );



		/**
		 *
		 * Validação do formulário de solicitação de crédito
		 *
		 **/
		$( 'form#form-credito' ).submit( function( )
		{

			// Nome
			if( is_empty( 'input#form-credito-nome' ) )
			{
				alert( 'Informe seu nome!' );
				$( 'input#form-credito-nome' ).focus( );
				return false;
			}

			// E-mail
			if( is_empty( 'input#form-credito-email' ) )
			{
				alert( 'Informe seu e-mail!' );
				$( 'input#form-credito-email' ).focus( );
				return false;
			}
			else if( !validate_field( 'email', $( 'input#form-credito-email' ).val( ) ) )
			{
				alert( 'E-mail inválido! Verifique o e-mail informado' );
				$( 'input#form-credito-email' ).focus( );
				return false;
			}

			// Telefone
			if( is_empty( 'input#form-credito-telefone' ) )
			{
				alert( 'Informe seu telefone!' );
				$( 'input#form-credito-telefone' ).focus( );
				return false;
			}
			else if( !validate_field( 'telefone', $( 'input#form-credito-telefone' ).val( ) ) )
			{
				alert( 'Telefone inválido! Verifique o telefone informado' );
				$( 'input#form-credito-telefone' ).focus( );
				return false;
			}

		});

	}




	/**
	 *
	 * Solicite seu crédito
	 * http://www.companhiadoemprestimo.com.br/solicite-seu-credito.php
	 *
	 **/
	if( exists( 'form#form-solicite-seu-credito' ) )
	{

		/**
		 *
		 * Máscaras
		 *
		 **/
		$( 'input#telefone' ).setMask( 'phone' );
		$( 'input#data-nascimento' ).setMask( 'date' );
		$( 'input#cpf' ).setMask( 'cpf' );



		/**
		 *
		 * Validação do formulário de solicitação de crédito
		 *
		 **/
		$( 'form#form-solicite-seu-credito' ).submit( function( )
		{

			// Nome
			if( is_empty( 'input#nome' ) )
			{
				alert( 'Informe seu nome!' );
				$( 'input#nome' ).focus( );
				return false;
			}

			// E-mail
			if( is_empty( 'input#email' ) )
			{
				alert( 'Informe seu e-mail!' );
				$( 'input#email' ).focus( );
				return false;
			}
			else if( !validate_field( 'email', $( 'input#email' ).val( ) ) )
			{
				alert( 'E-mail inválido! Verifique o e-mail informado' );
				$( 'input#email' ).focus( );
				return false;
			}

			// Telefone
			if( is_empty( 'input#telefone' ) )
			{
				alert( 'Informe seu telefone!' );
				$( 'input#telefone' ).focus( );
				return false;
			}
			else if( !validate_field( 'telefone', $( 'input#telefone' ).val( ) ) )
			{
				alert( 'Telefone inválido! Verifique o telefone informado' );
				$( 'input#telefone' ).focus( );
				return false;
			}

			// Órgão pertencente
			if( is_equals( 'select#orgao-pertencente', '-' ) )
			{
				alert( 'Informe o órgão pertencente!' );
				$( 'select#orgao-pertencente' ).focus( );
				return false;
			}

		});



		/**
		 *
		 * Ao carregar a página, desmarca o select do órgão pertencente
		 *
		 **/
		$( 'select#orgao-pertencente' ).val( '-' );



		/**
		 *
		 * Exibe os campos corretos de acordo com a escolha do usuário
		 *
		 **/
		$( 'select#orgao-pertencente' ).live( 'change', function( )
		{

			/**
			 *
			 * Opção "Selcione..." e "Funcionários de empresas privadas"
			 *
			 **/
			if( is_equals( 'select#orgao-pertencente', '-' ) || is_equals( 'select#orgao-pertencente', 'funcionarios_empresas_privadas' ) )
			{

				/**
				 *
				 * Esconde os fieldsets
				 *
				 **/
				$( 'form#form-solicite-seu-credito fieldset.hidden' ).hide( );

			}



			/**
			 *
			 * Outras opções do <select>
			 *
			 **/
			else
			{

				/**
				 *
				 * ID do fieldset que será exibido
				 *
				 **/
				id = '';



				/**
				 *
				 * Identifica o ID do fieldset correspondente
				 *
				 **/
				switch( $( this ).val( ) )
				{

					case 'inss':
					{
						id = 'dados-inss';
						break;
					}

					case 'militar_exercito':
					{
						id = 'dados-militares-exercito';
						break;
					}

					case 'militar_marinha':
					{
						id = 'dados-militares-marinha';
						break;
					}

					case 'militar_aeronautica':
					{
						id = 'dados-militares-aeronautica';
						break;
					}

					case 'federal':
					{
						id = 'dados-federal';
						break;
					}

					case 'governo_prefeituras':
					{
						id = 'dados-governo-prefeituras';
						break;
					}

				}



				/**
				 *
				 * Esconde os fieldsets
				 *
				 **/
				$( 'form#form-solicite-seu-credito fieldset.hidden' ).hide( );



				/**
				 *
				 * Exibe o fieldset escolhido
				 *
				 **/
				$( 'form#form-solicite-seu-credito fieldset#' + id ).show( );

			}

		});

	}



	/**
	 *
	 * Fale Conosco
	 * http://www.companhiadoemprestimo.com.br/fale-conosco.php
	 *
	 **/
	if( exists( 'form#form-contato' ) )
	{

		/**
		 *
		 * Máscaras
		 *
		 **/
		$( 'input#telefone' ).setMask( 'phone' );
		$( 'input#celular' ).setMask( 'phone' );



		/**
		 *
		 * Validação do formulário de contato
		 *
		 **/
		$( 'form#form-contato' ).submit( function( )
		{

			// Nome
			if( is_empty( 'input#nome' ) )
			{
				alert( 'Informe seu nome!' );
				$( 'input#nome' ).focus( );
				return false;
			}

			// E-mail
			if( is_empty( 'input#email' ) )
			{
				alert( 'Informe seu e-mail!' );
				$( 'input#email' ).focus( );
				return false;
			}
			else if( !validate_field( 'email', $( 'input#email' ).val( ) ) )
			{
				alert( 'E-mail inválido! Verifique o e-mail informado' );
				$( 'input#email' ).focus( );
				return false;
			}

			// Telefone
			if( !is_empty( 'input#telefone' ) )
			{
				if( !validate_field( 'telefone', $( 'input#telefone' ).val( ) ) )
				{
					alert( 'Telefone inválido! Verifique o telefone informado' );
					$( 'input#telefone' ).focus( );
					return false;
				}
			}

			// Celular
			if( !is_empty( 'input#celular' ) )
			{
				if( !validate_field( 'telefone', $( 'input#celular' ).val( ) ) )
				{
					alert( 'Celular inválido! Verifique o celular informado' );
					$( 'input#celular' ).focus( );
					return false;
				}
			}

			// Mensagem
			if( is_empty( 'textarea#mensagem' ) )
			{
				alert( 'Escreva sua mensagem!' );
				$( 'textarea#mensagem' ).focus( );
				return false;
			}

		});

	}



	/**
	 *
	 * Abre o link em uma nova janela
	 *
	 **/
	$( 'a.window-open' ).live( 'click', function( )
	{

		window_open( $( this ).attr( 'href' ), ( $( this ).attr( 'rel' ) ) ? $( this ).attr( 'rel' ) : $( this ).attr( 'href' ) );
		return false;

	});



	/**
	 *
	 * Carrega a função que evita abertura de janelas com o mesmo contéudo
	 *
	 **/
	prevent_duplicated_windows;

});



/**
 *
 * Verifica se o campo está vazio
 *
 * @param element: Elemento que será validado
 * @return Boolean
 *
**/
function is_empty( element )
{
	return ( $( element ).val( ) === '' ) ? true : false;
}



/**
 *
 * Verifica se o valor do input/textarea é igual ao valor informado
 *
 * @param element: Elemento que será validado
 * @param comparare_with: Valor que será utilizado na comparação
 * @return Boolean
 *
**/
function is_equals( element, comparare_with )
{
	return ( $( element ).val( ) == comparare_with ) ? true : false;
}



/**
 *
 * Verifica se o elemento existe no DOM
 *
 * @param element: Elemento que será verificado
 * @return Boolean
 *
**/
function exists( element )
{
	return ( $( element ).length >= 1 ) ? true : false;
}



/**
 *
 * Valida o valor do campo informado, utilizando Expressões Regulares
 *
 * @param type: Tipo de campo que será validado
 * @param value: Valor informado no campo que será validado
 * @return Boolean
 *
 **/
function validate_field( type, value )
{

	var filter;


	if( type == 'cnpj' )
	{
		return validate_cnpj( value );
	}
	else if( type == 'cpf' )
	{
		return validate_cpf( value );
	}
	else
	{

		switch( type )
		{
			case 'email':
				filter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
				break;
	
			case 'url':
				filter = /^(http(s)?\:\/\/)?(localhost|[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,3})((\/\S*)|(\/)[a-zA-Z0-9\.\?\/\{\}_%=&+-]+)?$/;
				break;
	
			case 'telefone':
				filter = /^\([0-9]{2}\) [0-9]{4}-[0-9]{4}$/;
				break;
	
			case '0800':
				filter = /^(0800) [0-9]{7}$/;
				break;
	
			case '0300':
				filter = /^(0300) [0-9]{7}$/;
				break;
	
			case 'servico-ddg':
				filter = /^(0[38]00) [0-9]{7}$/;
				break;
	
			case 'data':
				filter = /^(((0[1-9]|[12][0-9]|3[01])(\/)(0[13578]|1[02])(\/)[12][0-9]{3})|((0[1-9]|[12][0-9]|30)(\/)(0[469]|11)(\/)[12][0-9]{3})|((29)(\/)(02)(\/)(1804|1808|1812|1816|1820|1824|1828|1832|1836|1840|1844|1848|1852|1856|1860|1864|1868|1872|1876|1880|1884|1888|1892|1896|1904|1908|1912|1916|1920|1924|1928|1932|1936|1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008|2012|2016|2020|2024|2028|2032|2036|2040|2044|2048|2052|2056|2060|2064|2068|2072|2076|2080|2084|2088|2092|2096|2104|2108|2112|2116|2120|2124|2128|2132|2136|2140|2144|2148|2152|2156|2160|2164|2168|2172|2176|2180|2184|2188|2192|2196))|((0[1-9]|[12][0-8])(\/)(02)(\/)[12][0-9]{3}))$/;
				break;
	
			case 'mes-ano':
				filter = /^(0[1-9]|1[012])(\/)[12][0-9]{3}$/;
				break;
	
			case 'hora':
				filter = /^([0-1][0-9]|2[0-3]):([0-5][0-9])$/;
				break;
	
			case 'cep':
				filter = /^[0-9]{5}-[0-9]{3}$/;
				break;
	
			case 'estado':
				filter = /^(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)$/;
				break;
	
			default:
				return false;
		}
	
		return ( filter.test( value ) ) ? true : false;

	}

}



/**
 *
 * Valida o número do CNPJ
 *
 * @param cnpj: Número do CNPJ que será validado
 * @return Boolean
 *
 **/
function validate_cnpj( cnpj )
{

	var filter_cnpj = /^([0-9]{2})\.([0-9]{3})\.([0-9]{3})\/([0-9]{4})\-([0-9]{2})$/;


	if( !filter_cnpj.test( cnpj ) )
	{
		return false;
	}
	else
	{
		var sum1 = 0, sum2 = 0, sum3 = 0, calc1 = 5, calc2 = 6;
		cnpj = cnpj.replace( /[.\/-]/g, '' );
	}

	for( var i = 0; i <= 12; i++ )
	{
		calc1 = ( calc1 < 2 ) ? 9 : calc1;
		calc2 = ( calc2 < 2 ) ? 9 : calc2;

		if( i <= 11 )
		{
			sum1 += cnpj.charAt( i ) * calc1;
		}

		sum2 += cnpj.charAt( i ) * calc2;
		sum3 += cnpj.charAt( i );
		calc1--;
		calc2--;
	}

	sum1 %= 11;
	sum2 %= 11;

	return ( sum3 && cnpj.charAt( 12 ) == ( sum1 < 2 ? 0 : ( 11 - sum1 ) ) && cnpj.charAt( 13 ) == ( sum2 < 2 ? 0 : ( 11 - sum2 ) ) ) ? true : false;
}



/**
 *
 * Valida o número do CPF
 *
 * @param cpf: Número do CPF que será validado
 * @return Boolean
 *
 **/
function validate_cpf( cpf )
{

	for( i = 0; i <= 9; i++ )
	{
		i = i.toString( );

		if( cpf == i + i + i + '.' + i + i + i + '.' + i + i + i + '-' + i + i )
		{
			return false;
		}
	}

	soma = 0;
	cpf = cpf.replace( /\./g, '' ).replace( /-/g, '' );
	for( n = 0; n < 9; n++ )
	{
		soma += parseInt( cpf.charAt( n ) ) * ( 10 - n );
	}

	resto = 11 - ( soma % 11 );

	if( resto == 10 || resto == 11 )
	{
		resto = 0;
	}

	if( resto != parseInt( cpf.charAt( 9 ) ) )
	{
		return false;
	}

	soma = 0;

	for( i = 0; i < 10; i++ )
	{
		soma += parseInt( cpf.charAt( i ) ) * (11 - i);
	}

	resto = 11 - ( soma % 11 );

	if( resto == 10 || resto == 11 )
	{
		resto = 0;
	}

	if( resto != parseInt( cpf.charAt( 10 ) ) )
	{
		return false;
	}

	return true;
}


/**
 *
 * Abre o link em uma nova janela
 *
 * @param url: URL que será aberta
 * @param name: Nome da janela
 * @param properties: Propriedades da nova janela ( popup )
 * @return void
 *
 **/
function window_open( url, name, properties )
{

	/**
	 *
	 * Identifica se a URL informada já está com o "http"
	 *
	 **/
	var absolutePath = ( exists( 'base' ) ) ? $( 'base' ).attr( 'href' ) : '';
	var filter = /^(http)/;
	var url = ( filter.test( url ) ) ? url : absolutePath + url;



	/**
	 *
	 * Verifica se o name foi informado
	 *
	 **/
	if( typeof name === 'undefined' )
	{
		name = 'tfp';
	}



	/**
	 *
	 * Verifica se foram adicionadas propriedades
	 *
	 **/
	if( typeof properties === 'undefined' )
	{
		properties = '';
	}


	window_name = window.open( url, name, properties );

}



/**
 *
 * Evita que várias janelas com o mesmo nome sejam abertas
 *
 * @return void
 *
 **/
function prevent_duplicated_windows( )
{

	if( window.window_name && window.window_name.open && !window.window_name.closed )
	{
		window.window_name.opener = null;
	}

}
