var np = {

    // Settings
    trackOutboundLinks: true,
    trackCrossDomain: false,
    domains: ['.keukengereiwinkel.nl'],
    fileTypes: ['.zip', '.pdf', '.doc'],
    labelExternalLink: 'ext',
    labelDownloadLink: 'download',
    labelMailtoLink: 'mailto',

    // Functions
    l: function (o, t, cb, c) { if (o.addEventListener) { o.addEventListener(t, cb, c) } else { o.attachEvent('on' + t, cb) } },
    m: function (d, h) { for (var i = 0; i < d.length; i++) { if (h.indexOf(d[i]) > -1) { if (h.indexOf(document.domain) == -1) { return true; } } } return false; },
    t: function (e) { var t; if (!e) var e = window.event; if (!e) return; if (e.target) t = e.target; else if (e.srcElement) t = e.srcElement; if (t.nodeType == 3) t = t.parentNode; return t; },
    i: function () {

        var a = document.getElementsByTagName('a');
        var f = document.getElementsByTagName('form');

        // Apply outbound tagging to anchors
        if (np.trackOutboundLinks) {
            for (var i = 0; i < a.length; i++) {
                // Outbound
                var k = 0;
                for (var j = 0; j < np.domains.length; j++) {
                    if (a[i].href.indexOf(np.domains[j]) == -1) {
                        k++;
                    }
                }
                if (k == np.domains.length && a[i].href.indexOf('mailto:') == -1) {
                    // Add event listener onClick
                    var onClick = function (e) {
                        var s = this.href.split("//");
                        _gaq.push(['_trackPageview', '/' + np.labelExternalLink + '/' + s[1]]);
                        if (typeof (console) != 'undefined') console.log("onClick: _gaq.push(['_trackPageview','/" + np.labelExternalLink + "/" + s[1] + "']);");
                    };
                    np.l(a[i], 'click', onClick, true);
                }

                // Download
                for (var j = 0; j < np.fileTypes.length; j++) {
                    if (a[i].href.indexOf(np.domains[0]) != -1 && a[i].href.indexOf(np.fileTypes[j]) != -1) {
                        // Add event listener onClick
                        var onClick = function (e) {
                            var s = this.href.split(np.domains[0]);
                            _gaq.push(['_trackPageview', '/' + np.labelDownloadLink + s[1]]);
                            if (typeof (console) != 'undefined') console.log("onClick: _gaq.push(['_trackPageview','/" + np.labelDownloadLink + s[1] + "']);");
                        };
                        np.l(a[i], 'click', onClick, true);

                        break;
                    }
                }

                // Mail to
                if (a[i].href.indexOf("mailto:") != -1) {
                    var onClick = function (e) {
                        var s = this.href.split(':');
                        _gaq.push(['_trackPageview', '/' + np.labelMailtoLink + '/' + s[1]]);
                        if (typeof (console) != 'undefined') console.log("onClick: _gaq.push(['_trackPageview','/" + np.labelMailtoLink + '/' + s[1] + "']);");
                    };
                    np.l(a[i], 'click', onClick, true);
                }
            }
        }

        // Apply crossdomain tagging
        if (np.trackCrossDomain) {
            // Tag anchors
            for (var i = 0; i < a.length; i++) {

                // Match link to external domain function
                if (np.m(np.domains, a[i].href)) {
                    var onClick = function (e) {
                        _gaq.push(['_link', (np.t(e)).href]);
                        if (typeof (console) != 'undefined') console.log("onClick: _gaq.push(['_link','" + (np.t(e)).href + "']);");
                    };
                    np.l(a[i], 'click', onClick, true);
                    a[i].setAttribute('onclick', a[i].getAttribute('onclick') + ';return false;');
                }

            }

            // Tag forms
            for (var i = 0; i < f.length; i++) {

                // Match form post to external domain function
                if (np.m(np.domains, f[i].action)) {
                    var onSubmit = function (e) {
                        _gaq.push(['_linkByPost', (np.t(e))]);
                        if (typeof (console) != 'undefined') console.log("onSubmit: _gaq.push(['_linkByPost'," + (np.t(e)) + "]);");
                    };
                    np.l(f[i], 'submit', onSubmit, true);
                }

            }
        }
    }

};

// Execute at onLoad event
np.l(window, 'load', np.i, true);
