
var ImcsTracking = function() {

    function GetUrlExtension(fileName) {
        var extension = "";
        var urlParts = fileName.split('/');

        if (urlParts.length > 0) {
            var lastPart = urlParts[urlParts.length - 1].split('?');
            var parts = lastPart[0].split('.');

            if (parts.length > 1) {
                extension = parts[parts.length - 1];
            }
        }

        return extension.toLowerCase();
    }

    function GetNameFromId(element) {
        var ids = element.id.split("_");
        var name = ids[ids.length - 1];
        return name;
    }


    function TrackLinksAndButtons(categoryId, categoryName) {
        var link;

        var buttonEventDescription = ' Category:' + categoryName + '(' + categoryId + ')';

        for (var i = 0; i < document.links.length; i++) {
            link = document.links[i];

            if (link.href.toLowerCase().indexOf('javascript:') != -1) {
                $addHandler(link, "click", function() { tracker.TrackEvent('Button', GetNameFromId(this) + buttonEventDescription); });
            }
            else {
                if (link.hostname.length < 1)
                { continue; }
                var hostname = link.hostname.toLowerCase();
                if (hostname != window.location.hostname) {
                    $addHandler(link, "click", function() { tracker.TrackExternalClickEvent(this.href, ''); });
                }
                else {
                    var extension = GetUrlExtension(link.href);
                    if (extension.length > 0) {
                        if (extension != 'aspx') {
                            $addHandler(link, "click", function() { tracker.TrackDownloadEvent(this.href, ''); });
                        }
                    }
                }
            }
        }

        var inputs = document.getElementsByTagName("input");
        var type;
        var input;
        for (var inputIndex = 0; inputIndex < inputs.length; inputIndex++) {
            //debugger;
            input = inputs[inputIndex];
            type = input.type.toLowerCase();
            if ((type == 'button') || (type == 'submit') || (type == 'image')) {
                $addHandler(input, "click", function() { tracker.TrackEvent('Button', GetNameFromId(this) + buttonEventDescription); });
            }
        }
    }

    function TrackExternalLinks() {
        var link;
        for (var i = 0; i < document.links.length; i++) {
            link = document.links[i];
            if (link.hostname.length < 1)
            { continue; }
            var hostname = link.hostname.toLowerCase();
            if (hostname != window.location.hostname) {
                $addHandler(link, "click", function() { tracker.TrackExternalClickEvent(this.href, ''); });
            }
            else {
                var extension = GetUrlExtension(link.href);
                if (extension.length > 0) {
                    if (extension != 'aspx') {
                        $addHandler(link, "click", function() { tracker.TrackDownloadEvent(this.href, ''); });
                    }
                }
            }
        }
    }
    return {
        TrackExternalLinks: function() {
            TrackExternalLinks();
        },
        TrackLinksAndButtons: function(categoryId, categoryName) {
            TrackLinksAndButtons(categoryId, categoryName);
        }
    };
} ();


 