﻿function GetTrackerURL()
{
    if (document.domain == "localhost")
        return "http://localhost/content/Tracking/Tracker.aspx";
    else if (document.domain == "beta.content.understand.com")
        return "http://beta.content.understand.com/Tracking/Tracker.aspx";
    else
        return "http://content.understand.com/Tracking/Tracker.aspx";
}

function TrackEvent(type, params)
{
    var parameters = GetEncodedParameters(params);

    var eventName = encodeURIComponent(window.location.pathname);
    
    var eventType = encodeURIComponent(type);
    
    var referrer = encodeURIComponent(document.referrer);
    
    var formData =
        'Parameters=' + parameters +
        '&EventName=' + eventName +
        '&EventType=' + eventType +
        '&Referrer=' + referrer;
    
    var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('MSXML2.XMLHTTP.3.0');
    
    request.open('POST', GetTrackerURL(), true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.setRequestHeader('Content-length', formData.length);
    request.setRequestHeader('Connection', 'close');
    request.send(formData);
}

function GetEncodedParameters(input)
{
    var encodedParameters = '';
    
    if (input == null)
    {
        // Encode the querystring and send it as form data
        encodedParameters = window.location.search.substring(1).replace(/\+/g, ' ');
    }
    else
    {
        // Use the argument parameters instead of the querystring
        for (var i = 0; i < input.length; ++i)
        {
            if (input[i].length == 2)
            {
                encodedParameters += encodeURIComponent(input[i][0]) + '=' + encodeURIComponent(input[i][1]) + '&';
            }
        }
        
        // Remove the trailing &
        if (encodedParameters.indexOf('&') != -1)
        {
            encodedParameters = encodedParameters.substring(0, encodedParameters.length - 1);
        }
        
    }
    
    return encodeURIComponent(encodedParameters);
}