﻿/***************************************************************************\
* Function: trackUser                                                       *
* Author:   Terry Tice                                                      *
* Created:  10/23/07                                                        *
* Purpose:  Tracks the current user.                                        *
\***************************************************************************/
function trackUser()
{
    var url = "/tracking.aspx";
    var referrer = document.referrer == '' ? 'undefined' : document.referrer;
    var affiliate;
    var parameters = "cookies="
    
    // If there is already a cookie then a session already exists, do nothing.
    if (getCookie("SessionID") != null)
        return;
        
    xmlRequest = createXmlHttpRequest();
        
    // Perform the cookie test
    setCookie("testCookie", "test");
    
    if (getCookie("testCookie") == "test")
        parameters += "yes"
    else
        parameters += "no"
        
    // Add the other tracking information
    parameters += "&url=" + escape(location.href);
    parameters += "&refurl=" + escape(document.referrer);
    parameters += "&websource=" + escape(getQueryString('source'));
    parameters += "&webkwid=" + escape(getQueryString('kwid'));
    
    xmlRequest.open("POST", url, true);
    xmlRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlRequest.setRequestHeader("Content-length", parameters.length);
    xmlRequest.setRequestHeader("Connection", "close");
    xmlRequest.send(parameters);
}

/***************************************************************************\
* Function: setCookie                                                       *
* Author:   Terry Tice                                                      *
* Created:  10/23/07                                                        *
* Purpose:  Places a cookie on the current user.                            *
\***************************************************************************/
function setCookie(name, value)
{
    document.cookie = name + '=' + value + '; path=/';
}

/***************************************************************************\
* Function: getCookie                                                       *
* Author:   Terry Tice                                                      *
* Created:  10/23/07                                                        *
* Purpose:  Retrieves a cookie on the current user.                         *
\***************************************************************************/
function getCookie(name)
{
    var prefix = name + "=";
    var split_cookies = document.cookie.split(';');
    
    for (var i = 0; i < split_cookies.length; i++) {
        var cookie = split_cookies[i];
        
        while (cookie.charAt(0) == ' ') 
            cookie = cookie.substring(1, cookie.length);
        
        if (cookie.indexOf(prefix) == 0) 
            return cookie.substring(prefix.length, cookie.length);
    }
    
    return null;
}

/***************************************************************************\
* Function: getQueryString                                                  *
* Author:   Terry Tice                                                      *
* Created:  10/23/07                                                        *
* Purpose:  Retrieves a query string value.                                 *
\***************************************************************************/
function getQueryString(name)
{
    var prefix = name + "=";
    var query_string;
    var split_params;
    
    // Determine if there is a query string provided.
    if (location.href.indexOf('?') == -1)
        return '';
        
    // If there is anything after a pound (#) sign then we don't want it.
    if (location.href.indexOf('#') != -1)
    {
        query_string = location.href.substring(location.href.indexOf('?') + 1, 
            location.href.indexOf('#'));
    }
    else
    {
        query_string = location.href.substring(location.href.indexOf('?') + 1, 
            location.href.length);
    }
    
    // Grab the params
    split_params = query_string.split('&');
    
    for (var i = 0; i < split_params.length; i++) 
    {
        var param = split_params[i];
        
        if (param.indexOf(prefix) == 0) 
            return param.substring(prefix.length, param.length);
    }
    
    return null;
}

trackUser();