/**
 * Classe Dne, XHR para consulta no WebService do DNE.
 *
 * @Author Equipe Presença.
 */
var Dne = {

	/**
	 * Object que tem os IDs padrões que será utilizado no return dos dados da pesquisa.
	 */
	camposDne : {

		  dsEndUf : "#uf"
		, dsEndCidade : "#localidade"
		, dsEndBairro : "#bairro"
		, dsEndLogradouro : "#logradouro"
		, nuEndCep : "#cep"
		, dsComplemento : "#complemento"

	}

	/**
	 * Atributos
	 */
	, nuEndCep : null	    // Número do cep utilizado na busca
	, objLogradouro: null   // Object que contém os dados do return do XHR após clicar em "pesquisar" no DNE.
	, strParams : ""        // Paramêtros adcionais que pode ser passado para o DNE ( prevendo adaptações e futuras implementações ).

	/**
	 * Busca o formulário via XHR de pequisa do DNE.
	 *
	 * @return String divShow - Div que será terá o seu conteúdo setado com o formulário vindo do DNE.
	 */
	, mostraFormPesquisa: function( divShow )
	{

		showLoading();
		$.post(URL_ROOT + 'dne/mostraFormPesquisa/'
			, function(response){
				$( '#' + divShow ).html( response );
				$( '#' + divShow ).slideDown('fast');
				hideLoading();
			}
		);
	}

	/**
	 * Efetua a busca das informações por logradouro no DNE.
	 *
	 * @return String divShow - Div que será terá o seu conteúdo setado com o formulário de resultado da pesquisa vindo do DNE.
	 */
	, buscaPorLogradouro: function( divShow ){
		showLoading();
		$.post(URL_ROOT + 'dne/pesquisaLogradouro/'
			, $('#FormDNEBuscaLogradouro').serialize() + Dne.strParams
			, function(response)
			{
				$( '#' + divShow ).html( response );
				$( '#' + divShow ).show();
				hideLoading();
			}
		);
	}

	/**
	 * Efetua a busca das informações por cep no DNE.
	 */
	, buscaPorCep: function(){
		showLoading();
		$.post(URL_ROOT + 'dne/pesquisaByCep/'
			, $('form').serialize() + Dne.strParams
			, function(response)
			{
				Dne.objLogradouro = eval( '(' + response + ')' );
				if(Dne.objLogradouro) Dne.fillOBjLogradouro();
				hideLoading();
				$( Dne.camposDne.dsComplemento ).focus();
				$( '#DNE' ).hide();
			}
		);
	}

	/**
	 * Adciona as informações da consulta do atributo objLogradouro nos campos do formulário.
	 *
	 * @param Array arrDivs - Array ou Object idem para o atributo camposDne.
	 */
	, fillOBjLogradouro: function( arrDivs ){

		if( typeof(arrDivs) == "object" )
			Dne.camposDne = arrDivs;

		$(Dne.camposDne.dsEndUf).val( Dne.objLogradouro.sg_uf );
		$(Dne.camposDne.dsEndCidade).val( Dne.objLogradouro.co_municipio );
		$(Dne.camposDne.dsEndBairro).val( Dne.objLogradouro.no_bairro );
		$(Dne.camposDne.dsEndLogradouro).val( Dne.objLogradouro.no_logradouro );

		$(Dne.camposDne.dsEndUf + "," +
		  Dne.camposDne.dsEndCidade + "," +
		  Dne.camposDne.dsEndBairro + "," +
		  Dne.camposDne.dsEndLogradouro).focus().blur();

	}

	/**
	 * Trata as informações do CEP antes de efetuar a busca pelo mesmo.
	 *
	 * @param Number nuEndCep - Número do CEP.
	 */
	, selecionaCep: function( nuEndCep ){

		Dne.strParams = "";
		Dne.nuEndCep = nuEndCep;
		$(Dne.camposDne.nuEndCep).val( Dne.nuEndCep );
		delegateApplyMask( $(Dne.camposDne.nuEndCep)[0], 'cep', null, true, '.' , '' , 0 , 100 , null );
		Dne.setValor( "nuEnderecoCep", $(Dne.camposDne.nuEndCep).val() );
		Dne.buscaPorCep();

	}

	/**
	 * Limpa a div que contém o html da consulta no DNE.
	 */
	, removeTelaPesquisa: function( divShow ){

		$('#' + divShow).empty();

	}

	/**
	 * Seta um valor para ser enviado na consulta do DNE.
	 *
	 * @param String param - Nome do parametro.
	 * @param String valor - Valor do parametro.
	 */
	, setValor : function( param, valor ){

		if( param == null )
			return false;

		Dne.strParams += "&"+param+"="+valor;

	}



}