var gaConfig = {

    //CHAT
    chatEntrar: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Chat',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/chat'
        };
    },

    //A LINVING TE LIGA
    livingTeLiga: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'A Living te Liga',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/a-living-te-liga'
        };
    },
    livingTeLigaRodape: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'A Living te Liga (rodapé)',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/a-living-te-liga-rodape'
        };
    },

    //INFORMACOES POR EMAIL
    informacoesPorEmail: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Informacoes por email',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/informacoes-por-email'
        };
    },
    informacoesPorEmailRodape: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Informacoes por email (rodapé)',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/informacoes-por-email-rodape'
        };
    },

    //VENDA SEU TERRENO
    vendaSeuTerreno: function (estadoSigla) {
        return {
            category: 'Venda seu Terreno',
            action: estadoSigla,
            label: '',
            virtualPage: '/' + estadoSigla + '/virtual/venda-seu-terreno'
        };
    },

    //SIMULE SEU FINANCIAMENTO
    simuleSeuFinanciamento: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Simule Seu Financiamento',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/simule-seu-financiamento'
        };
    },

    //ENVIE PARA UM AMIGO
    envieParaAmigo: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Envie para um amigo',
            action: estadoSigla,
            label: empreendimento
        };
    },
    envieParaAmigoObra: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Envie para um amigo (imagem Obra)',
            action: estadoSigla,
            label: empreendimento
        };
    },

    //FUTUROS LANCAMENTOS
    futurosLancamentosEnviar: function (estadoSigla, empreendimento) {
        empreendimento = empreendimento || '';
        return {
            category: 'Futuros Lancamentos',
            action: estadoSigla,
            label: empreendimento,
            virtualPage: '/' + estadoSigla + '/virtual/futuros-lancamentos'
        };
    },


    /**
    * Faz a chamada do metodo _gaq.push(['_trackEvent', category, action, opt_label])
    * a partir do nome do atributo (ou da funcao) deste objeto (gaConfig)
    *
    * @param event (String, required) Nome do atributo (ou funcao)
    * Se event for um nome de funcao, os parametros a serem passados sao separados por ':'
    *
    * @example
    * callEvent('nome_de_atributo')
    * callEvent('nome_de_funcao')
    * callEvent('nome_de_funcao:param1:param2:param3')
    */
    callEvent: function (event) {
        event = event.split(':');
        var ga = this[event.shift()];
        if (typeof ga == 'function') {
            ga = ga.apply(this, event);
        }
        if (typeof ga == 'object') {
            if (ga.virtualPage && ga.virtualPage != '') {
                this.virtualPageView(ga.virtualPage);
            }
            _gaq.push(['_trackEvent', ga.category, ga.action, ga.label]);
            //alert('_trackEvent: ' + ga.category + ', ' + ga.action + ', ' + ga.label);
        }
    },

    /**
    * Faz a chamada do metodo _gaq.push(['_trackPageview', page_url])
    *
    * @param pageName (String, required)
    */
    virtualPageView: function (url) {
        _gaq.push(['_trackPageview', url]);
        //alert('_trackPageview: ' + url);
    }
};

function trackSocial(network, socialAction) {
    _gaq.push(['_trackSocial', network, socialAction, location.href]); 
}
