/*
 * TPM.Analytics
 *
 * Handles Google Analytics calls that get triggered on events other than page load.
 *
 * @author Isaac Luy / Stephen Kawaguchi
 * @version 0.3
 */



TPM.Analytics = (function () {

    var getPath = function () {
        /* TODO: SK: removed because ths code will only exist in V4 world
        var currentPath = window.location.pathname;

        // check for "/toyota/" in path name to determine if is V4 or V3
        if (currentPath.indexOf ("/toyota/") == -1) { //v3
            currentPath = "/" + document.title;
        }

        return currentPath;
        */

        return window.location.pathname;
    };

    return {
        getPath: function () {
            return getPath ();
        }
    };

}) ();

TPM.Analytics.Event = (function () {

    var track = function (category, action, label, isLocalized) {
        var languageFlag = "";
        
        // this conditional makes the "isLocalized" parameter optional, when not passed as argument it defaults to undefined.
        // by these implementation the locale is set by default when no "isLocalized" parameter is passed.
        if (isLocalized || isLocalized == undefined) {
            languageFlag = "_"+TPM.Core.getLocale();
        }

        _gaq.push([ '_trackEvent', category, action, label + languageFlag]);
        TPM.Log.debug('trackEvent : ' + category +' > '+ action+' > '+ label + languageFlag);
    };

    return {
        track: function (category, action, label, isLocalized) {
            track (category, action, label, isLocalized);
        }
    };

}) ();

TPM.Analytics.Pageview = (function () {
    var setPageview = function (path) {
        
        // This code is now on html_js_include.jsp where it should be
        // Google Analytics new asynchronous connect code
        /*
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', TPM.Globals.google_analytics_id]);
        _gaq.push(['_trackPageview', path]);

        (function() {
            var ga = document.createElement('script');
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            ga.setAttribute('async', 'true');
            document.documentElement.firstChild.appendChild(ga);
        })();*/
    };

    var pushPageview = function (path) {
        _gaq.push(['_trackPageview', path]);
    };

    var auto = function () {
        // refer to html_js_include.jsp
    };

    var track = function (type, path) {
        var append = "";
        switch (type) {
            case "pdf":
                append = "/pdf";
                break;
            case "exit":
                append = "/exit";
                break;
            case "click":
                append = "/click";
                break;
            case "success":
                append = "/success";
                break;
            case "failure":
                append = "/failure";
                break;
            case "print":
                append = "/print";
                break;
            default:
                append = "";
        }
        
        if(path.charAt(0) != "/") {path = "/" + path;}
        var newPath = TPM.Analytics.getPath() + path + append;
        pushPageview (newPath);
        TPM.Log.debug('track pageview: ' + newPath);
    };
    return {
        auto: function () {
            // refer to html_js_include.jsp
        },
        track: function (type, path) {
            track (type, path);
        }
    };
})();

