var Log = function(){

    /**
     *  Model
     *  @package Log
     */
     var Model = function(){

         var Requisicao = function(){

            var urlCasaemCasa=Path.root();
            var click = {
                "buscaRapida":false,
                "meuHistorico":false,
                "buscaAvancada":false,
                "buscaLivre":false,
                "buscaImobiliaria":false,
                "buscaReferencia":false,
                "buscaRegiao":false,
                "clickMapa":false,
                "verMapa":false
            };

            /**
            * Grava followup dos imoveis
            *
            * @package Log.Model
            */
            function gravaFollowup(params){
                jQuery.ajax({
                    url     : urlCasaemCasa+"/log/followup/",
                    data    : {
                        Tipo_Followup   : params['tipo'],
                        Codigo_Parceiro : params['parceiro'],
                        Codigo_Imovel   : params['imovel'],
                        exib            : params['modeloAnuncio']
                    },
                    success : function(resposta){
                         if(params['callback'] != undefined){
                             params['callback'](resposta);
                         }
                    },
                    error   : function(xhr){
                         if(params['callback'] != undefined){
                             params['callback']("erro");
                         }
                    }
                });              
            }

            /**
             * Grava click em links ou botões
             *  
             * @package Log.Model
             **/
            function gravaLogClick(local_click,parceiro,callback){
                jQuery.ajax({
                    url     : urlCasaemCasa+"/log/click/?callback=?",
                    data    : { Local: local_click, Codigo_Parceiro:parceiro },
                    dataType: "jsonp",
                    success : function(resposta){                        
                        if(callback!=undefined){
                            callback(resposta);
                        }
                    },
                    error   : function(xhr){
                        if(callback!=undefined){
                            callback("erro");
                        }
                    }
                });                
            }

            /**
             * Grava o logs do followup imovel
             *
             * @package Log.Model
             */
            function gravaLogTelefone(parceiro, imovel, modeloAnuncio){ gravaFollowup({"tipo":"telefone", "parceiro":parceiro, "imovel":imovel, "modeloAnuncio":modeloAnuncio}); }
            function gravaLogEmail(parceiro, imovel){ gravaFollowup({"tipo":"email", "parceiro": parceiro, "imovel":imovel}); }
            function gravaLogFavorito(parceiro, imovel, modeloAnuncio){ gravaFollowup({"tipo":"favorito", "parceiro":parceiro, "imovel":imovel, "modeloAnuncio":modeloAnuncio}); }

            /*
             * Grava o click nos botão de pesquisa
             * 
             * @package Log.Model
             */
            function gravaClickBotaoBuscaRapida(parceiro,callback){
                if(click.buscaRapida == false){
                    click.buscaRapida = true;
                    gravaLogClick('BuscaRapida',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickMapa(parceiro,callback){
                if(click.clickMapa == false){
                    click.clickMapa = true;
                    gravaLogClick('BuscaMapa',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickVerMapa(parceiro,callback){
                if(click.verMapa == false){
                    click.verMapa = true;
                    gravaLogClick('VerMapa',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickBotaoMeuHistorico(parceiro,callback){
                if(click.meuHistorico == false){
                    click.meuHistorico = true;
                    gravaLogClick('MeuHistorico',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickBotaoBuscaAvancada(parceiro,callback){
                if(click.buscaAvancada == false){
                    click.buscaAvancada = true;
                    gravaLogClick('BuscaAvancada',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickBotaoBuscaLivre(parceiro,callback){
                if(click.buscaLivre == false){
                    click.buscaLivre = true;
                    gravaLogClick('BuscaLivre',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickBotaoBuscaImobiliaria(parceiro,callback){
                if(click.buscaImobiliaria == false){
                    click.buscaImobiliaria = true;
                    gravaLogClick('BuscaImobiliaria',parceiro,callback);
                } else {
                    callback();
                }
            }

            function gravaClickBotaoBuscaReferencia(parceiro,callback){
                if(click.buscaReferencia == false){
                    click.buscaReferencia = true;
                    gravaLogClick('BuscaReferencia',parceiro,callback);
                } else {
                    callback();
                }
            }
            
            function gravaClickBotaoBuscaRegiao(parceiro,callback){
                if(click.buscaRegiao == false){
                    click.buscaRegiao = true;
                    gravaLogClick('BuscaRegiao',parceiro,callback);
                } else {
                    callback();
                }
            }

            /**
             * Retorno das requisicoes
             */
            return {
                gravaLogTelefone                : gravaLogTelefone,
                gravaLogEmail                   : gravaLogEmail,
                gravaLogFavorito                : gravaLogFavorito,
                gravaClickBuscaRapida           : gravaClickBotaoBuscaRapida,
                gravaClickMapa                  : gravaClickMapa,
                gravaVerMapa                    : gravaClickVerMapa,
                gravaClickBotaoMeuHistorico     : gravaClickBotaoMeuHistorico,
                gravaClickBotaoBuscaAvancada    : gravaClickBotaoBuscaAvancada,
                gravaClickBotaoBuscaLivre       : gravaClickBotaoBuscaLivre,
                gravaClickBotaoBuscaImobiliaria : gravaClickBotaoBuscaImobiliaria,
                gravaClickBotaoBuscaReferencia  : gravaClickBotaoBuscaReferencia,
                gravaClickBotaoBuscaRegiao      : gravaClickBotaoBuscaRegiao
            }
         }();

       /**
        * Retorno do Model
        */
       return{
           Requisicao : Requisicao
       }
     }();

     /**
      * Retorno geral
      */
    return {
        gravarLogTelefone               : Model.Requisicao.gravaLogTelefone,
        gravaLogEmail                   : Model.Requisicao.gravaLogEmail,
        gravaLogFavorito                : Model.Requisicao.gravaLogFavorito,
        gravaClickBuscaRapida           : Model.Requisicao.gravaClickBuscaRapida,
        gravaClickMapa                  : Model.Requisicao.gravaClickMapa,
        gravaVerMapa                    : Model.Requisicao.gravaVerMapa,
        gravaClickBotaoMeuHistorico     : Model.Requisicao.gravaClickBotaoMeuHistorico,
        gravaClickBotaoBuscaAvancada    : Model.Requisicao.gravaClickBotaoBuscaAvancada,
        gravaClickBotaoBuscaLivre       : Model.Requisicao.gravaClickBotaoBuscaLivre,
        gravaClickBotaoBuscaImobiliaria : Model.Requisicao.gravaClickBotaoBuscaImobiliaria,
        gravaClickBotaoBuscaReferencia  : Model.Requisicao.gravaClickBotaoBuscaReferencia,
        gravaClickBotaoBuscaRegiao      : Model.Requisicao.gravaClickBotaoBuscaRegiao
    }
}();
