﻿/* Ver. 1.5 */

function Tracking(
    trackerBaseUrl,
    landingPageId,
    sponsoredListingTrackingCodeID,
    adKeyword,
    matchType,
    distribution,
    creativeId,
    userQuery,
    refererUrl,
    refererSite,
    keywordId,
    campaignId,
    adGroupId,
    networkId,
    sponsoredListingKeyword,
    feed,
    siteId,
    usePresalePage,
    experimentId, 
    experimentGroupId
    ) {
    this.TrackerBaseUrl = trackerBaseUrl;
    this.LandingPageId = landingPageId;
    this.SponsoredListingTrackingCodeID = sponsoredListingTrackingCodeID;
    this.AdKeyword = adKeyword;
    this.MatchType = matchType;
    this.Distribution = distribution;
    this.CreativeId = creativeId;
    this.UserQuery = userQuery;
    this.RefererUrl = refererUrl;
    this.RefererSite = refererSite;
    this.KeywordId = keywordId;
    this.CampaignId = campaignId;
    this.AdGroupId = adGroupId;
    this.NetworkId = networkId;
    this.SponsoredListingKeyword = sponsoredListingKeyword;
    this.Feed = feed;
    this.SiteId = siteId;
    this.UsePresalePage = usePresalePage;
    this.ExperimentId = experimentId;
    this.ExperimentGroupId = experimentGroupId;

    this.TrackShoppingLink = function(shoppingFeedType, merchant) {
        var querystring = this.GetQueryStringBase();
        querystring = this.AppendUrlParameter(querystring, 'sft', shoppingFeedType);
        querystring = this.AppendUrlParameter(querystring, 'merc', merchant);
        var imgSrc = this.TrackerBaseUrl + 'shopping.gif' + querystring;

        var img = new Image();
        img.src = imgSrc;

        return true;
    }

    this.TrackHotelLink = function() {
        var querystring = this.GetQueryStringBase();
        var imgSrc = this.TrackerBaseUrl + 'hotel.gif' + querystring;

        var img = new Image();
        img.src = imgSrc;

        return true;
    }

    this.TrackToolbarLink = function() {
        var querystring = this.GetQueryStringBase();
        var imgSrc = this.TrackerBaseUrl + 'toolbar.gif' + querystring;

        var img = new Image();
        img.src = imgSrc;

        if (typeof (ReportYahooConversion) != "undefined") {
            ReportYahooConversion();
        }
        return true;
    }

    this.TrackSponsoredLink = function(sponsoredListingKeyword, rank, location, order, sponsorSiteHost) {
        var querystring = this.GetQueryStringBase();

        querystring = this.AppendUrlParameter(querystring, 'slk', sponsoredListingKeyword);
        querystring = this.AppendUrlParameter(querystring, 'rank', rank);
        querystring = this.AppendUrlParameter(querystring, 'loc', location);
        querystring = this.AppendUrlParameter(querystring, 'order', order);
        querystring = this.AppendUrlParameter(querystring, 'sshost', sponsorSiteHost);

        var imgSrc = this.TrackerBaseUrl + 'sponsor.gif' + querystring;

        var img = new Image();
        img.src = imgSrc;

        if (typeof (ReportYahooConversion) != "undefined") {
            ReportYahooConversion();
        }

        return true;
    }


    this.TrackLink = function(eventName) {

    var querystring = this.GetQueryStringBase();

        var imgSrc = this.TrackerBaseUrl + escape(eventName) + '-tracker.gif' + querystring;

        var img = new Image();
        img.src = imgSrc;

        return true;
    }

    this.TrackInboundLink = function() {

        var querystring = this.GetQueryStringBase();

        querystring = this.AppendUrlParameter(querystring, 'slk', sponsoredListingKeyword);

        var imgSrc = this.TrackerBaseUrl + 'inbound.gif' + querystring;

        var img = new Image();
        img.src = imgSrc;

        return true;
    }

    this.LoadInboundTrackingScript = function() {
        var trackingHandlerUrl = this.TrackerBaseUrl + 'js/TrackingHandler.ashx?sltcid=' + this.SponsoredListingTrackingCodeID;
        document.write('<scr' + 'ipt src="', trackingHandlerUrl, '" type="text/javascript" language="javascript"><\/scr' + 'ipt>');
    }

    this.GetQueryStringBase = function() {
        var querystring = '';
        querystring = this.AppendUrlParameter(querystring, 'id', this.LandingPageId);
        querystring = this.AppendUrlParameter(querystring, 'sltcid', this.SponsoredListingTrackingCodeID);
        querystring = this.AppendUrlParameter(querystring, 'akwd', this.AdKeyword);
        querystring = this.AppendUrlParameter(querystring, 'mt', this.MatchType);
        querystring = this.AppendUrlParameter(querystring, 'dist', this.Distribution);
        querystring = this.AppendUrlParameter(querystring, 'uq', this.UserQuery);
        querystring = this.AppendUrlParameter(querystring, 'cid', this.CreativeId);
        querystring = this.AppendUrlParameter(querystring, 'rurl', this.RefererUrl);
        querystring = this.AppendUrlParameter(querystring, 'rsite', this.RefererSite);
        querystring = this.AppendUrlParameter(querystring, 'kwid', this.KeywordId);
        querystring = this.AppendUrlParameter(querystring, 'campid', this.CampaignId);
        querystring = this.AppendUrlParameter(querystring, 'adgrpid', this.AdGroupId);
        querystring = this.AppendUrlParameter(querystring, 'nid', this.NetworkId);
        querystring = this.AppendUrlParameter(querystring, 'feed', this.Feed);
        querystring = this.AppendUrlParameter(querystring, 'purl', document.location);
        querystring = this.AppendUrlParameter(querystring, 'wsid', this.SiteId);
        querystring = this.AppendUrlParameter(querystring, 'upp', this.UsePresalePage);
        querystring = this.AppendUrlParameter(querystring, 'eid', this.ExperimentId);
        querystring = this.AppendUrlParameter(querystring, 'egid', this.ExperimentGroupId);

        return querystring;
    }

    this.AppendUrlParameter = function(querystring, key, value) {
        if (value == null || value.length == 0)
            return querystring;

        if (querystring.length == 0)
            querystring = '?';
        else
            querystring += '&';

        querystring += key + '=' + escape(value);

        return querystring;
    }

    this.LoadInboundTrackingScript();
}

