
/*
* cmdatatagutils.js 
* $Id: cmdatatagutils.js.txt 95557 2008-08-15 17:09:00Z abrink $
* $Revision: 95557 $
*
* Version 4.1.0 - Content 
*
* Coremetrics Tag v4.0, 8/7/2006
* COPYRIGHT 1999-2002 COREMETRICS, INC. 
* ALL RIGHTS RESERVED. U.S.PATENT PENDING
*
* The following functions aid in the creation of Coremetrics data tags.
*/

var cm_ClientID = "90220567";
var cm_TrackLink = "A";
var cm_TrackImpressions = "RS";
var cm_JSFEnabled = true;
var cm_groupID = "KAW";

var cmJv = "1.0";
if (typeof (isNaN) == "function") cmJv = "1.1";
if (typeof (isFinite) == "function") cmJv = "1.2";
if (typeof (NaN) == "number") cmJv = "1.3";
if (typeof (decodeURI) == "function") cmJv = "1.5";
if (typeof (Array.forEach) == "function") cmJv = "1.6";
if (typeof (Iterator) == "object") cmJv = "1.7";

var cmCheckCMEMFlag = true;

/* TAG GENERATING FUNCTIONS */

/*
* Calling this function points tags to the production database
*/
function cmSetProduction() {
    cm_HOST = "data.coremetrics.com/eluminate?";
    cm_JSFPCookieDomain = "kawasaki.com";
}

function cmCreateManualImpressionTag(pageID, trackSP, trackRE) {
    // insert code to get pageID from cmTagControl if pageID is null
    cmMakeTag(["tid", "9", "pi", pageID, "cm_sp", trackSP, "cm_re", trackRE, "st", cm_ClientTS]);
}

function cmCreateManualLinkClickTag(href, name, pageID) {
    if (pageID) {
        pageID = cm_groupID + ":" + pageID;
    }
    if (cmCreateLinkTag == null && cM != null) {
        var cmCreateLinkTag = cM;
    }
    if (cmCreateLinkTag != null) {
        var dt = new Date();
        cmLnkT3 = dt.getTime();
        cmCreateLinkTag(cm_ClientTS, cmLnkT3, name, href, false, pageID);
    }
}

/* manual PageviewTag for off site page tagging.  Allows client to supply URL and Referring URL
*/
function cmCreateManualPageviewTag(pageID, categoryID, DestinationURL, ReferringURL) {
    cmMakeTag(["tid", "1", "pi", pageID, "cg", categoryID, "ul", DestinationURL, "rf", ReferringURL]);
}

function cmCreatePageElementTag(elementID, elementCategory, pageID, pageCategoryID, elementLocation) {
    cmMakeTag(["tid", "15", "eid", elementID, "ecat", elementCategory, "pflg", "0", "pid", pageID, "pcat", pageCategoryID, "eloc", elementLocation]);
}

/*
* Creates a Tech Props tag.
* pageID		: required. Page ID to set on this Pageview tag
*/
function cmCreateTechPropsTag(pageID, categoryID) {
    if (pageID == null) { pageID = cmGetDefaultPageID(); }
    cmMakeTag(["tid", "6", "pi", pageID, "cg", categoryID, "pc", "Y"]);
}

/*
* Creates a Pageview tag with the given Page ID
*
* pageID	: required. Page ID to set on this Pageview tag
* categoryID	: optional. Category ID to set on this Pageview tag
* searchString	: optional. Internal search string enterred by user to reach
*				  this page.
*
* 
*/
function cmCreatePageviewTag(pageID, categoryID, searchString, searchResults) {
    if (pageID == null) { pageID = cmGetDefaultPageID(); }
    cmMakeTag(["tid", "1", "pi", pageID, "cg", "NPL:" + categoryID, "se", searchString, "sr", searchResults]);
}

/*
* Creates a Pageview tag with the default value for Page ID. 
* Format of Page ID is "x/y/z/MyPage.asp"
*
* 
*/
function cmCreateDefaultPageviewTag(categoryID) {
    cmCreatePageviewTag(cmGetDefaultPageID(), categoryID);
}

/*
* Creates a Conversion Event tag
*
* eventID			: required. Conversion event ID
* actionType		: required. 1=conversion initiation, 2=conversion completion
* categoryID		: optional. Category for the event
* points			: optional. Point value to assign to conversion.
*/
function cmCreateConversionEventTag(eventID, actionType, categoryID, points) {
    cmMakeTag(["tid", "14", "cid", eventID, "cat", actionType, "ccid", categoryID, "cpt", points]);
}

/*
* Creates a Registration tag and/or a Newsletter tag
*
* customerID		: required for Registration. ID of Customer to register.
* customerEmail	: required for Newsletters. Optional for Registration.
* customerCity		: optional. City of Customer that placed this order
* customerState	: optional. State of Customer that placed this order
* customerZIP		: optional. Zipcode of Customer that placed this order
* newsletterName	: required for Newsletters. The name of the Newsletter.
* subscribe		: required for Newsletters. Either "Y" or "N"
*
*/
function cmCreateRegistrationTag(customerID, customerEmail, customerCity,
				customerState, customerZIP, newsletterName,
				subscribe) {
    cmMakeTag(["tid", "2", "cd", customerID, "em", customerEmail, "ct", customerCity, "sa", customerState, "zp", customerZIP, "nl", newsletterName, "sd", subscribe]);
}

/* Creates an Error Tag
*
*/
function cmCreateErrorTag(pageID, categoryID) {
    if (pageID == null) {
        pageID = cmGetDefaultPageID();
    }
    cmMakeTag(["tid", "404", "pi", pageID, "cg", categoryID, "pc", "Y"]);
}

function cmMakeTag(__v) {
    var cm = new _cm("vn2", "e4.0");
    var i;
    for (i = 0; i < __v.length; i += 2) {
        var _n = __v[i];
        var _v = __v[i + 1];
        cm[_n] = _v;
    }

    if (cm.tid == "6") {
        cm.addTP();
    }

    if (cm.tid == "1") {
        if (cI("cmTPSet") != 'Y') {
            cm.tid = "6";
            cm.pc = "Y";
            cm.addTP();
            document.cookie = "cmTPSet=Y; path=/";
        }
    }

    if ((cm.pi == null) && (cm.pc == "Y")) {
        cm.pi = cmGetDefaultPageID();
    }

    if (parent.cm_ref != null) {
        cm.rf = parent.cm_ref;
        if (cm.pc == "Y") {
            parent.cm_ref = document.URL;
        }
    }

    // if parent had mmc variables and this is the first pageview, add mmc to this url
    if (parent.cm_set_mmc) {
        cm.ul = document.location.href +
				((document.location.href.indexOf("?") < 0) ? "?" : "&") +
				parent.cm_mmc_params;
        if (cm.pc == "Y") {
            parent.cm_ref = cm.ul;
            parent.cm_set_mmc = false;
        }
    }

    if (cm.ul == null) {
        cm.ul = window.location.href;
    }

    //check for manual_cm_mmc parameter;
    if (this.manual_cm_mmc != null) {
        cm.ul = cm.ul + ((cm.ul.indexOf("&") == -1) ? ((cm.ul.indexOf("?") == -1) ? "?" : "&") : "&") + "cm_mmc=" + this.manual_cm_mmc;
    }

    // convert MMC parameters to lowercase;
    cm.ul = cm.ul.replace(/cm_mmc/gi, "cm_mmc");
    cm.ul = cm.ul.replace(/cm_ven/gi, "cm_ven");
    cm.ul = cm.ul.replace(/cm_cat/gi, "cm_cat");
    cm.ul = cm.ul.replace(/cm_pla/gi, "cm_pla");
    cm.ul = cm.ul.replace(/cm_ite/gi, "cm_ite");

    if (cm.pi) {
        cm.pi = cm_groupID + ":" + cm.pi;
    }
    if (cm.cg) {
        cm.cg = cm_groupID + ":" + cm.cg;
    }

    if (cm.eid) {
        cm.eid = cm_groupID + ":" + cm.eid;
    }
    if (cm.ecat) {
        cm.ecat = cm_groupID + ":" + cm.ecat;
    }
    if (cm.pid) {
        cm.pid = cm_groupID + ":" + cm.pid;
    }
    if (cm.pcat) {
        cm.pcat = cm_groupID + ":" + cm.pcat;
    }
    if (cm.eloc) {
        cm.eloc = cm_groupID + ":" + cm.eloc;
    }

    if (cm.cid) {
        cm.cid = cm_groupID + ":" + cm.cid;
    }
    if (cm.ccid) {
        cm.ccid = cm_groupID + ":" + cm.ccid;
    }

    cm.writeImg();
    if (cmCheckCMEMFlag) {
        cmCheckCMEMFlag = false;
        cmCheckCMEM();
    }

}

// HELPER FUNCTIONS -----------------------------------------------------------
/* These functions are used by the tag-generating functions and/or may be used
* in in general as convenience functions
*/

/*
* Creates an acceptable default Page ID value to use for Pageview tags.
* The default Page ID is based on the URL, and consists of the path and
* filename (without the protocol, domain and query string).
* 
* example:
* returns "x/y/MyPage.asp" for the URL http://www.mysite.com/x/y/MyPage.asp
*/
function cmGetDefaultPageID() {
    var pageName = window.location.pathname;

    // eliminates everything after "?" (for Opera browswers)
    var tempIndex1 = pageName.indexOf("?");
    if (tempIndex1 != -1) {
        pageName = pageName.substr(0, tempIndex1);
    }
    // eliminates everything after "#" (for Opera browswers)
    var tempIndex2 = pageName.indexOf("#");
    if (tempIndex2 != -1) {
        pageName = pageName.substr(0, tempIndex2);
    }
    // eliminates everything after ";"
    var tempIndex3 = pageName.indexOf(";");
    if (tempIndex3 != -1) {
        pageName = pageName.substr(0, tempIndex3);
    }

    var slashPos = pageName.lastIndexOf("/");
    if (slashPos == pageName.length - 1) {
        pageName = pageName + "default.asp"; /****************** SET TO DEFAULT DOC NAME */
    }

    while (pageName.indexOf("/") == 0) {
        pageName = pageName.substr(1, pageName.length);
    }

    return (pageName);
}

function cmIndexOfParameter(parameter, inString) {
    return inString.indexOf(parameter);
}

function cmExtractParameter(parameter, inString) {
    if (cmIndexOfParameter(parameter, inString) == -1) {
        return null;
    }
    var s = inString;
    var begin = s.indexOf(parameter);
    var end = s.indexOf("&", begin);
    if (end == -1) {
        end = s.length;
    }
    var middle = s.indexOf("=", begin);
    return s.substring(middle + 1, end);
}

function cmRemoveParameter(parameter, inString) {
    if (cmIndexOfParameter(parameter, inString) == -1) {
        return inString;
    }
    var s = inString;
    var begin = s.indexOf(parameter);
    var start = (begin - 1);
    var end = s.indexOf("&", begin);
    if (end == -1) {
        end = s.length;
    }
    if (s.substring(start, begin) == "?") {    // retain leading "?"
        start = (start + 1);
        end = (end + 1);
    }
    return s.substring(0, start) + s.substring(end, s.length);
}

function cmCheckCMEM() {
    if (cmIndexOfParameter("cm_em", document.location.href) != -1) {
        var emailAddress = cmExtractParameter("cm_em", document.location.href);
        cmCreateRegistrationTag(emailAddress, emailAddress);
    }
    if (cmIndexOfParameter("cm_lm", document.location.href) != -1) {
        var emailAddress = cmExtractParameter("cm_lm", document.location.href);
        cmCreateRegistrationTag(emailAddress, emailAddress);
    }
}

if (defaultNormalize == null) { var defaultNormalize = null; }

function myNormalizeURL(url, isHref) {
    var newURL = url;
    // ... transform newURL here ...
    if (defaultNormalize != null) {
        newURL = defaultNormalize(newURL, isHref);
    }
    return newURL;
}

// install normalization
if (document.cmTagCtl != null) {
    var func = "" + document.cmTagCtl.normalizeURL;
    if (func.indexOf('myNormalizeURL') == -1) {
        defaultNormalize = document.cmTagCtl.normalizeURL;
        document.cmTagCtl.normalizeURL = myNormalizeURL;
    }
}