﻿analytics =
{
    config:
    {
        categoryEmail: 'Email',
        categoryForm: 'Form',
        categoryRSS: 'RSS',
        actionGeneral: 'contact_general',
        customActions: [],
        customActionIDs: [],
        opt_labelRSS: 'Signup'
    },
    settings:
    {
        emailselector: 'a[href^=mailto:]',
        formselector: '#id_matrix input.button[type=submit]',
        downloadselector: 'a[href$=.pdf],a[href$=.doc],a[href$=.docx],a[href*=.pdf?],a[href*=.doc?],a[href*=.docx?]',
        rssselector: 'a.rss',
        actionFilter: function(e) {
            var cl = $(e.currentTarget);
            if (cl.hasClass('footerlink')) {
                return analytics.config.actionGeneral;
            }
            else {
                var sisteareaid = $('meta[name=site-area]').attr('content');
                var comparetoid = jQuery.inArray(sisteareaid, analytics.config.customActionIDs);
                if (comparetoid != -1) {
                    return analytics.config.customActions[comparetoid];

                }
                else {
                    return analytics.config.actionGeneral;
                }

            }
        }
    },
    init: function(settings, config) {

        analytics.settings = $.extend(analytics.settings, settings);
        analytics.config = $.extend(analytics.config, config);
        $(analytics.settings.downloadselector).addClass('track-this').addClass('download-track');

        $(analytics.settings.formselector).addClass('track-this');

        $(analytics.settings.emailselector).addClass('track-this').addClass('email-track');
        $('#Footer,Footer').find(analytics.settings.emailselector).addClass('track-this').addClass('email-track').addClass('footerlink');

        $(analytics.settings.rssselector).addClass('track-this').addClass('rss-track');

        analytics.addTrackingClicks();
    },
    addTrackingClicks: function() {
        $('.track-this').each(function() {
            $(this).click(function(e) {
                //e.preventDefault();

                var category;
                var action = analytics.config.actionGeneral;
                var opt_label;
                var opt_value;
                var loc = String(document.location.pathname);

                if (typeof (analytics.settings.actionFilter) == 'function') {
                    action = analytics.settings.actionFilter(e);
                }
                if ($(this).hasClass('email-track')) {
                    category = analytics.settings.categoryEmail;
                    opt_label = loc;
                    _gaq.push(['_trackEvent', category, action, opt_label]);
                }
                else if ($(this).hasClass('button')) {
                    category = analytics.settings.categoryForm;
                    opt_label = loc;
                    _gaq.push(['_trackEvent', category, action, opt_label]);

                }
                else if ($(this).hasClass('rss-track')) {
                    category = analytics.settings.categoryRSS;
                    opt_label = analytics.settings.opt_labelRSS;
                    _gaq.push(['_trackEvent', category, opt_label]);
                }
                else if ($(this).hasClass('download-track')) {
                    opt_label = $(this).attr('href');
                    opt_label = loc + opt_label.substring(opt_label.lastIndexOf('/') + 1, opt_label.length);
                    opt_label = opt_label.split("?")[0];
                    _gaq.push(['_trackPageview', opt_label]);
                }

            });
        });
    }
}
$(document).ready(function() {
    //example for filter to add custom actions 
    /* analytics.settings.actionFilter = function (e) {
    //set curernt target to cl
    var cl = $(e.currentTarget);
    //here we separate footer contact links from other
    if (cl.hasClass('footerlink')) {
    return analytics.config.actionGeneral;
    }
    else {
    //here we can add code to generate custom actions. define ids to compare against in analytics.config.customActionIDs. add the values in analytics.config.customActions
    var sisteareaid = $('meta[name=site-area]').attr('content');
    var comparetoid = jQuery.inArray(sisteareaid, analytics.config.customActionIDs);
    if (comparetoid != -1) {
    return analytics.config.customActions[comparetoid];

            }
    else {
    return analytics.config.actionGeneral;
    }

        }
    };*/
    analytics.init();
});
