// Google Analytics - Custom measurement functions
// (c) Satama Interactive
// 2009-09-29


// Variable default values, overriden in pagecode if necessary
var urchinDownload = '\.pdf$|\.doc$|\.xls$|\.exe$|\.zip$|\.ppt$'; // Download types or dynamic files defined as downloads, delimiter character: |
var urchinRSS = '\.rss$|\.rss2$'; // RSS link filetypes (can be dynamic), delimiter character: |
var urchinMedia = '\.mp3$|\.mp4$|\.wmv$'; // Files listed as listen downloads, delimiter character: |
var urchinInternalDomains = ''; //  Separated list of domains concidered as internal links (format: '|domain.com|domain.net'), delimiter character: |
var downloadContentFilter = /(municipalwater|water[^a-z\/]+brochures)/ig; // URL filter for specific content downloads. NOTE! Remember to update trackEvent call on line 42
//
// Measurement code start - Do not change anything beyond this line!
//

function urchinEventBind(obj, evt, newhandler, captures) {
    if (obj.attachEvent) {
        obj.attachEvent('on' + evt, newhandler);
    } else if (obj.addEventListener) {
        obj.addEventListener(evt, newhandler, captures);
    } else {
        var oldhandler;
        if (oldhandler = obj['on' + evt]) {
            obj['on' + evt] = function() { oldhandler(); newhandler(); }
        } else {
            obj['on' + evt] = newhandler;
        }
    }
}

function runTracker(pageType, pageItem, pageName, pageBind, currentBind, pageCondition) {
    switch (pageType) {
        case "email":
            urchinEventBind(pageItem, pageBind, function() { pageTracker._trackEvent(pageType, pageName.substring(7)); ((currentBind != null) ? currentBind : "") }, pageCondition);
            break;
        case "downloads":
            urchinEventBind(pageItem, pageBind, function() { pageTracker._trackEvent(pageType, pageName.replace(/^(http|https):\/\/([a-z-.0-9]+)\//i, '')); ((currentBind != null) ? currentBind : "") }, pageCondition);
            break;
        case "content_downloads":
            urchinEventBind(pageItem, pageBind, function() { pageTracker._trackEvent('downloads', pageName.replace(/^(http|https):\/\/([a-z-.0-9]+)\//i, ''), 'Municipal Water'); ((currentBind != null) ? currentBind : "") }, pageCondition);
            break;
        case "offsite":
            urchinEventBind(pageItem, pageBind, function() { pageTracker._trackEvent(pageType, pageName.replace(/^http:\/\/|https:\/\//i, '')); ((currentBind != null) ? currentBind : "") }, pageCondition);
            break;
        case "rss":
            urchinEventBind(pageItem, pageBind, function() { pageTracker._trackEvent(pageType, pageName.replace(/^http:\/\/|https:\/\//i, '')); ((currentBind != null) ? currentBind : "") }, pageCondition);
            break;
        case "media":
            urchinEventBind(pageItem, pageBind, function() { pageTracker._trackEvent(pageType, pageName.replace(/^http:\/\/|https:\/\//i, '')); ((currentBind != null) ? currentBind : "") }, pageCondition);
            break;
        default:
    }
}

function urchinRun(urchinPageName, urchinContentGroup) {
    if (urchinPageName && urchinPageName != "") {
        urchinPageName = urchinPageName;
    } else {
        urchinPageName = location.pathname + location.search;
    }

    pageTracker._trackPageview(urchinPageName);

    var userCurrentVariable = urchinGetCookie("__utmv");
    if (urchinContentGroup) {
        if (urchinContentGroup != userCurrentVariable && urchinContentGroup != "") {
            pageTracker._setVar(urchinContentGroup);
        }
    }

    var tmpDomain = document.domain.split(".");
    tmpDomain = tmpDomain.slice(-3);
    var urchinDomain = tmpDomain.join(".");

    var a = document.getElementsByTagName('a');
    var isDownload = new RegExp("(" + urchinDownload + ")", "i");
    var isMedia = new RegExp("(" + urchinMedia + ")", "i");
    var isRSS = new RegExp("(" + urchinRSS + ")", "i");
    var isInternalLink = new RegExp("(" + urchinDomain + urchinInternalDomains + ")", "i");
    for (var i = 0; i < a.length; i++) {
        var currentBind = a[i].getAttribute("onclick");
        actionBind = 'click'; // What event to bind to, default "click". NOTE! Change currentBind attribute as well
        // actionIdent = '/'; // Content group to be used, default '/' NOTE! No longer needer
        if (a[i].protocol != "javascript:") {
            if (a[i].protocol == "mailto:") {
                runTracker('email', a[i], a[i].href, actionBind, currentBind, false);
            } else if (urchinDownload && isDownload.test(a[i].href)) {
                if (a[i].href.match(downloadContentFilter)) {
                    runTracker('content_downloads', a[i], a[i].href, actionBind, currentBind, false);
                } else {
                    runTracker('downloads', a[i], a[i].href, actionBind, currentBind, false);
                }
            } else if (urchinRSS && isRSS.test(a[i].href)) {
                runTracker('rss', a[i], a[i].href, actionBind, currentBind, false);
            } else if (urchinMedia && isMedia.test(a[i].href)) {
                runTracker('media', a[i], a[i].href, actionBind, currentBind, false);
            } else if (!isInternalLink.test(a[i].href)) {
                runTracker('offsite', a[i], a[i].href, actionBind, currentBind, false);
            }
        }
    }
}

function urchinGetCookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) {
        return null;
    }
    if (start == -1) return null;
    var end = document.cookie.indexOf(";", len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len, end));
}
