/* -------------------------------------------------------
//////////////////////////////////////////////////////////
analyticsWrapper used as middelware between RIOT and ADIDAS.
//////////////////////////////////////////////////////////
------------------------------------------------------- */

/*
    --- Link Tracking ----
    @class is used to add the automaticLinkt tracking
    @name is used to lookup the id from the xml 
    Example: <a class="metrics-manualClick" name="shop-now">SHOP NOW</a>


*/

window.analyticsWrapper = window.analyticsWrapper || {};


(function(ns){
    var that = ns; 
    var xmlData;
    var adidasAnaliticsApi;
    var pageTag = {};
    var ajaxTimeOut = 100; // Times to ook if the ajax call came back


    that.init = function () {
        $.ajax({
            url: "proxyService.aspx?xml=analyticTags.xml",
            dataType: "xml",
            success: function(data){
                xmlData = $(data);

                if (Adidas) {
                    adidasAnaliticsApi = new Adidas(isProduction);
                    adidasAnaliticsApi.Analytics.prePendCountryCodeToPageId(true);
                    adidasAnaliticsApi.Analytics.prePendCountryCodeToCategoryId(true);
                }

                getPageTag(analyticsPageId);
                that.trackPage(pageTag.pagename, pageTag.category);

                $('.metrics-manualClick').bind('click', function () {
                    that.trackElement($(this).attr('name'));
                });

            },
            error: function () {
                //console.info('analyticsFileNotFound ore MimeType incorrect');
            }
        });
    };
    



    
    var getPageTag = function (id) {
        pageTag.pagename = evalInlineVars($(xmlData).find('page[id=' + id + ']').attr('pagename'));
        pageTag.category = $(xmlData).find('page[id=' + id + ']').attr('category');
    };
    
    var evalInlineVars = function (iString) {
        var myregexp = /\$\{([a-zA-Z0=9_.]+)\}/;

        if(myregexp.test(iString)){
            var results = myregexp.exec(iString);
            var myVar = "";
            if ( results && window[results[1]] ){
                myVar = window[results[1]];
            }
            iString = iString.replace(myregexp, myVar);
            return evalInlineVars(iString);
        } else {
            return iString;
        }
    };
    
    var getElementTag = function (id) {
        return $(xmlData).find('element[id=' + id + ']').attr('value');
    };




    /* -------------------------------------------------------
    //////////////////////////////////////////////////////////
    trackElement
    Required:   @id
    @id:        Element Name
    //////////////////////////////////////////////////////////
    ------------------------------------------------------- */
    that.trackElement = function (id) {
        console.log('trackElement:', getElementTag(id), pageTag.category);
        if(adidasAnaliticsApi) {
            adidasAnaliticsApi.Analytics.tagPageElement(getElementTag(id), pageTag.category, '');
        }
    };
    
    /* -------------------------------------------------------
    //////////////////////////////////////////////////////////
    trackPage
    Required:   @name, @category
    @name:      PageName
    @category:  PageCategory
    //////////////////////////////////////////////////////////
    ------------------------------------------------------- */
    that.trackPage = function(name, category) {
        if(!name || !category) {
            console.log("TrackPage must be provided with a name and category", name, category);
            return;
        }
        console.log("TrackPage: name/category", name, category);
        if(adidasAnaliticsApi) {
            adidasAnaliticsApi.Analytics.tagPageView(name, category,'','','');
        }
    };
    
    /* -------------------------------------------------------
    //////////////////////////////////////////////////////////
    trackAction
    Required:   @name
    @name:      actionName
    @category:  actionCategory -- Can be provided but should be the same as the page
    //////////////////////////////////////////////////////////
    ------------------------------------------------------- */
    that.trackAction = function(name, cat) {
        var category = cat || pageTag.category;

        if(!name) {
            console.log("analyticFlashWrapper.trackAction must be provided with atleast a name", name, category);
            return;
        }
        
		console.log("TrackPage: name/category", name, category);
        if(adidasAnaliticsApi) {
		    adidasAnaliticsApi.Analytics.tagFlashEvent(name, category, '');
		}

    };

    
})(analyticsWrapper);
