var g_bDebug = false;
var g_sCampaignId = "3A28A74B-C6A2-4473-8E8B-1B7B9B24A600";
var g_sTrackerHTMLNameAttribute = "mtr_name";
var g_sTrackerHTMLWeightAttribute = "mtr_wt";
var g_sImgName = "a.gif";
var g_iMaxHoursForSession = 8;
var g_iMaxMinutesForSession = 30;
var g_sDebug = "";
var g_MTR = new Object();
var g_sPrefix = "MTR.";
var g_sImpressionsList = "";
var g_iDefaultWeight = 0;
var g_sJV = "";
var g_sReturnVisitorCookieStartVisit = "mtrS";
var g_sReturnVisitorCookieLastVisit = "mtrL";
var onLoadFinished=false;
function initPageMtr(sUserId, sSessionId, sReferrer) 
{
	if (!(onLoadFinished)) {
        setReturnVisitorCookie();
        setVariables(sUserId, sSessionId);
        addTagsToHTMLPage();
        onLoadFinished = true;
    }
    setReferrer(sReferrer);

    pageLoadCallToBeacon();

    if ((g_bDebug) && (g_sDebug != "")) {
        alert(g_sDebug);
    }
    g_sDebug = "";
};

function goTo(url) 
{
	var a = document.createElement('a');
 if(!a.click)
{ 
  //only IE has this (at the moment);
  window.location = url;
  return;
 }
 a.setAttribute('href', url);
 a.style.display = 'none';
 window.document.body.appendChild(a);
 a.target = "_self";
 a.click();
}

function flashMtrPageLoad( sSection, sPageName, sView, sUserId, sSessionId )
{
    g_MTR.cc_n = sSection;
        
    if (!(onLoadFinished)) {
        setReturnVisitorCookie();
        setVariables(sUserId, sSessionId);
        addTagsToHTMLPage();
        onLoadFinished = true;
    }

    if (sUserId != null) {
        g_MTR.us_i = sUserId;
        g_sDebug += "user id= " + g_MTR.us_i + "\n";
    }
    if (sSessionId != null) {
        g_MTR.us_s = sSessionId;
        g_sDebug += "session id= " + g_MTR.us_s + "\n";
    }
    g_sDebug += "page id= " + "FLASH_" + sPageName + "\n";
    var sBeaconQueryString = "";
    for (var obj in g_MTR){
	    if (g_MTR[obj]) {
	        if (obj == "ti_n")
	        {
	            sBeaconQueryString += formatForQueryString(obj, "FLASH_" + sPageName);
	        }
	        else 
	        {
		        sBeaconQueryString += formatForQueryString(obj, g_MTR[obj]);
		    }
	    }
    }
    sBeaconQueryString += formatForQueryString('vw_n', sView);
    g_sDebug += "\npageLoadCallToBeacon= " + sBeaconQueryString + "\n";
    callToBeacon(sBeaconQueryString); 
    sBeaconQueryString = ""; 
    if ((g_bDebug) && (g_sDebug != "")) {
        alert(g_sDebug);
    }
    g_sDebug = "";
};
function flashMtrPageView( sPageName, sView, sUserId, sSessionId )
{
    if (!(onLoadFinished)) {
        setReturnVisitorCookie();
        setVariables(sUserId, sSessionId);
        addTagsToHTMLPage();
        onLoadFinished = true;
    }
    if (sUserId != null)
    {
        g_MTR.us_i = sUserId;
        g_sDebug += "user id= " + g_MTR.us_i + "\n";
    }
    if (sSessionId != null) 
    {
        g_MTR.us_s = sSessionId;
        g_sDebug += "session id= " + g_MTR.us_s + "\n";
    }
    g_sDebug += "page id= " + "FLASH_" + sPageName + "\n";
    var sBeaconQueryString = "";
    for (var obj in g_MTR){
	    if (g_MTR[obj]) {
	        if (obj == "ti_n")
	        {
	            sBeaconQueryString += formatForQueryString(obj, "FLASH_" + sPageName);
	        }
	        else 
	        {
		        sBeaconQueryString += formatForQueryString(obj, g_MTR[obj]);
		    }
	    }
    }
    sBeaconQueryString += formatForQueryString('vw_n', "FLASH_" + sView);
    g_sDebug += "\npageLoadCallToBeacon= " + sBeaconQueryString + "\n";
    callToBeacon(sBeaconQueryString); 
    sBeaconQueryString = ""; 
    if ((g_bDebug) && (g_sDebug != "")) {
        alert(g_sDebug);
    }
    g_sDebug = "";
};

function flashMtrClick( sClickAction, sUniqueElementName, iElementClickWeight, sPageName )
{
    if (sPageName != null)
    { g_sDebug += "page id= " + "FLASH_" + sPageName + "\n"; }
    else
    { g_sDebug += "page id= " + g_MTR.ti_n + "\n"; }
    g_MTR.ck_n = sUniqueElementName;
    g_sDebug += "click name= " + g_MTR.ck_n + "\n";
    if (iElementClickWeight) {
        g_MTR.ck_w = (isNaN(iElementClickWeight) ? g_iDefaultWeight : iElementClickWeight);
    }
    else {
        g_MTR.ck_w = g_iDefaultWeight;
    }
    g_sDebug += "click weight= " + g_MTR.ck_w + "\n";
    g_MTR.ck_a = sClickAction;
    g_sDebug += "click action= " + g_MTR.ck_a + "\n";
    var sBeaconQueryString = "";
	for (var obj in g_MTR){
		if (g_MTR[obj]) {
		    if (obj == "ti_n" & sPageName != null)
		    {
		        sBeaconQueryString += formatForQueryString(obj, "FLASH_" + sPageName);
		    }
		    else 
		    {
			    sBeaconQueryString += formatForQueryString(obj, g_MTR[obj]);
			}
		}
	}
    g_sDebug += "clickCallToBeacon= " + sBeaconQueryString + "\n";
    callToBeacon(sBeaconQueryString);
    sBeaconQueryString = ""; 
};

function setReturnVisitorCookie() {
    try {
        var iIndex = document.cookie.indexOf(g_sReturnVisitorCookieName + "=");
        var iLength = iIndex + g_sReturnVisitorCookieName.length + 1;
        var oCurrTime = new Date();
        var sDomain = getDomainForCookie();
        var oExpDate = new Date();
        oExpDate.setTime(oExpDate.getTime() + (3650 * 24 * 60 * 60 * 1000));
        if (
        ((!iIndex) && (g_sReturnVisitorCookieName != document.cookie.substring(0, g_sReturnVisitorCookieName.length)))
        || (iIndex == -1)
        ) {    	
            document.cookie = g_sReturnVisitorCookieName + "=" + g_MtrId +
                "; expires=" + oExpDate.toGMTString() +
                "; domain=" + sDomain +
                "; path=" + "/";
            document.cookie = g_sReturnVisitorCookieStartVisit + "=" + oCurrTime.getTime() +
                "; expires=" + oExpDate.toGMTString() +
                "; domain=" + sDomain +
                "; path=" + "/";
            document.cookie = g_sReturnVisitorCookieLastVisit + "=" + oCurrTime.getTime() +
                "; expires=" + oExpDate.toGMTString() +
                "; domain=" + sDomain +
                "; path=" + "/";
            g_sDebug += "new cookie set= " + document.cookie + "\n";
            g_sDebug += "new cookie expire date= " + oExpDate.toGMTString() + "\n";
            g_sDebug += "new cookie domain= " + sDomain + "\n";
            iIndex = document.cookie.indexOf(g_sReturnVisitorCookieName + "=");
            if (
            ((!iIndex) && (g_sReturnVisitorCookieName != document.cookie.substring(0, g_sReturnVisitorCookieName.length)))
            || (iIndex == -1)
            )
            { g_MTR.co_n = "n"; }
            else
            { g_MTR.co_n = "y"; }
        }
        else {
            var iTempStartTime = 0;
            var iTempLastVisit = 0;
            var arrCookie = document.cookie.split(";");
            g_MTR.co_n = "y";
            for (var i = 0; i < arrCookie.length; i++) {
                var c = arrCookie[i];
                while (c.charAt(0) == ' ') { 
                    c = c.substring(1, c.length);
                }
                if (c.indexOf(g_sReturnVisitorCookieStartVisit + "=") == 0) {
                    iTempStartTime = c.substring((g_sReturnVisitorCookieStartVisit + "=").length, c.length);
                    if ((isNaN(iTempStartTime)) || (iTempStartTime < 0)) {
                        iTempStartTime = 0;
                    }
                }
                if (c.indexOf(g_sReturnVisitorCookieLastVisit + "=") == 0) {
                    iTempLastVisit = c.substring((g_sReturnVisitorCookieLastVisit + "=").length, c.length);
                    if ((isNaN(iTempLastVisit)) || (iTempLastVisit < 0)) {
                        iTempLastVisit = 0;
                    }
                }
            }
            if (
                ((oCurrTime.getTime() - iTempStartTime) >= (g_iMaxHoursForSession * 60 * 60 * 1000)) || 
                ((oCurrTime.getTime() - iTempLastVisit) >= (g_iMaxMinutesForSession * 60 * 1000))
            ) {
                document.cookie = g_sReturnVisitorCookieStartVisit + "=" + oCurrTime.getTime() +
                    "; expires=" + oExpDate.toGMTString() +
                    "; domain=" + sDomain +
                    "; path=" + "/";
            }
            document.cookie = g_sReturnVisitorCookieLastVisit + "=" + oCurrTime.getTime() +
                "; expires=" + oExpDate.toGMTString() +
                "; domain=" + sDomain +
                "; path=" + "/";
            g_sDebug += "updated cookie= " + document.cookie + "\n";
        } 
        var arrCurrentCookie = document.cookie.split(";");
        var sTrackingCookie = "";
        for (var i = 0; i < arrCurrentCookie.length; i++) {
            if (
                (arrCurrentCookie[i].indexOf(g_sReturnVisitorCookieName + "=") > -1) || 
                (arrCurrentCookie[i].indexOf(g_sReturnVisitorCookieStartVisit + "=") > -1) || 
                (arrCurrentCookie[i].indexOf(g_sReturnVisitorCookieLastVisit + "=") > -1)
            ) {
                sTrackingCookie += arrCurrentCookie[i].replace(" ", "") + ";";
            }
        }
        g_MTR.us_c = sTrackingCookie;
    }
    catch (e) { }
};
function getDomainForCookie() {
    var sDomain = window.location.toString();
    if (sDomain.indexOf("://") > -1) {
        sDomain = sDomain.substring((sDomain.indexOf("://")+3), sDomain.length);
    }
    if (sDomain.indexOf("/") > -1) {
        sDomain = sDomain.substring(0, sDomain.indexOf("/"));
    }
    var arrURL = sDomain.split(".");
    if (arrURL.length > 2) {
        sDomain = "." + arrURL[arrURL.length - 2] + "." + arrURL[arrURL.length - 1];
    }
    return sDomain;
}
function addTagsToHTMLPage() 
{
    var oAllBeaconTags = document.getElementsByTagName("*");
    var sSeparator = "*";
    for(var i = 0; i <= oAllBeaconTags.length-1; i++) {
        if (oAllBeaconTags.item(i).getAttribute(g_sTrackerHTMLNameAttribute) != undefined) { 
            if (oAllBeaconTags.item(i).getAttribute(g_sTrackerHTMLNameAttribute).length > 0) {                
                var sTagName = oAllBeaconTags.item(i).getAttribute(g_sTrackerHTMLNameAttribute);
                oAllBeaconTags.item(i).mtrName = sTagName;
                if (oAllBeaconTags.item(i).getAttribute(g_sTrackerHTMLWeightAttribute) != undefined) {
                    var iWeight = oAllBeaconTags.item(i).getAttribute(g_sTrackerHTMLWeightAttribute);
                    oAllBeaconTags.item(i).mtrWt = (isNaN(iWeight) ?  g_iDefaultWeight : iWeight);
                 }
                 else {
                    oAllBeaconTags.item(i).mtrWt = g_iDefaultWeight;
                 }
                g_sImpressionsList += sTagName + sSeparator + iWeight + ";";                
                var oExistingOnClick = oAllBeaconTags.item(i).onclick;
                if ((oExistingOnClick == null)||(oExistingOnClick == undefined)) {
                    oAllBeaconTags.item(i).onclick = function() { clickCallToBeacon(this.mtrName,this.mtrWt); };
                }
                else {
                    oAllBeaconTags.item(i).mtrPrev = oExistingOnClick;
                    oAllBeaconTags.item(i).onclick = function() { clickCallToBeacon(this.mtrName,this.mtrWt); this.mtrPrev(); };
                } 
            }
        }
    }
};
function callToBeacon(sQueryString)
{ 
    var sBaseURL = "http" + (window.location.protocol.indexOf('https:') == 0 ? 's' : '') +
        "://" + g_sTrackingServer + "/" + g_sImgName + "?";
	
		var randomnumber=Math.floor(Math.random()*100001);

	if (document.images) 
	{
		var oImage = new Image();
        oImage.src = sBaseURL + "rnd=" + randomnumber + "&" + sQueryString;	
    }
    else {
        var oImageTag = document.createElement('<img border="0" id="mtrImg" width="1" height="1" src="' + sBaseURL + "rnd=" + randomnumber + "&" + sQueryString + '" />');
        document.body.insertBefore(oImageTag);
    }

    if ((g_bDebug) && (g_sDebug != "")) {
        alert(g_sDebug);
    }
    g_sDebug = "";
    resetRecurringVars();

};
function clickCallToBeacon(sName,iWeight) {
    g_MTR.ck_n = sName;
    g_sDebug += "click id= " + g_MTR.ck_n + "\n";
    g_MTR.ck_w = (isNaN(iWeight) ? g_iDefaultWeight : iWeight);
    g_sDebug += "click weight= " + g_MTR.ck_w + "\n";
    var sBeaconQueryString = "";
	for (var obj in g_MTR){
		if (g_MTR[obj]) {
			sBeaconQueryString += formatForQueryString(obj, g_MTR[obj]);
		}
	}
    g_sDebug += "clickCallToBeacon= " + sBeaconQueryString + "\n";
    callToBeacon(sBeaconQueryString);
    sBeaconQueryString = "";  
};
function pageLoadCallToBeacon() {
    var sBeaconQueryString = "";
	for (var obj in g_MTR){
		if (g_MTR[obj]) {
			sBeaconQueryString += formatForQueryString(obj, g_MTR[obj]);
		}
	}

    //TMS - vw_n query string was too long for the Products List Page
    if (g_MTR.ti_n == "Products List" || g_MTR.ti_n == "Products List(FR)")
        g_sImpressionsList = "";  
  
	sBeaconQueryString += formatForQueryString('vw_n', g_sImpressionsList);

    g_sDebug += "\npageLoadCallToBeacon= " + sBeaconQueryString + "\n";

    callToBeacon(sBeaconQueryString); 
    sBeaconQueryString = ""; 
};
function formatForQueryString(sName,sValue){
	return g_sPrefix + sName + "=" + encodeURIComponent(sValue) + "&";
};
function readMetaTags(){
	var elems;
	if (document.all){
		elems=document.all.tags("meta");
	}
	else if (document.documentElement){
		elems=document.getElementsByTagName("meta");
	}
	if (typeof(elems)!= "undefined"){
		for (var i = 1; i <= elems.length; i++){
			var meta = elems.item(i-1);
			if (meta.name){
				if (meta.name.indexOf(g_sPrefix) == 0){
					g_MTR[meta.name.substring(g_sPrefix.length)] = meta.content;
				}
			}
		}
	}
}
function setReferrer(sReferrer){
    g_MTR.rf_n = "";
    if (!(sReferrer) || (sReferrer == '')) 
    {
        if ((window.document.referrer != "")&&(window.document.referrer != "-")){
	        if (!((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) < 4))){
		        g_MTR.rf_n = window.document.referrer;
	        }
        }
	}
	else
	{   
	    g_MTR.rf_n = sReferrer;
	}
	g_sDebug += "referer= " + g_MTR.rf_n + "\n";
}

function setVariables(sUserId, sSessionId){
    g_MTR.cm_i = g_sCampaignId;
    g_sDebug += "campaign id= " + g_MTR.cm_i + "\n";
    g_MTR.us_i = sUserId;
    g_sDebug += "user id= " + g_MTR.us_i + "\n";
    g_MTR.us_s = sSessionId;
    g_sDebug += "session id= " + g_MTR.us_s + "\n";
    readMetaTags();
    g_sDebug += "page id= " + g_MTR.ti_n + "\n";
    g_sDebug += "category= " + g_MTR.cc_n + "\n";
    g_sDebug += "subcategory= " + g_MTR.cc_s + "\n";
    g_sDebug += "path analysis= " + g_MTR.pa_n + "\n";
    g_sDebug += "step name= " + g_MTR.pa_p + "\n";
    g_sDebug += "step number= " + g_MTR.pa_x + "\n";
    g_sDebug += "return visitor cookie= " + g_MTR.us_c + "\n";
    if (g_MTR.ck_n) {
    g_sDebug += "click element name= " + g_MTR.ck_n + "\n";
    }
    if (g_MTR.ck_w) {
    g_sDebug += "click element weight= " + g_MTR.ck_w + "\n";
    }
	var m_dNow = new Date();
	g_sDebug += "current date = " + m_dNow + "\n";
	g_MTR.tz_n = (m_dNow.getTimezoneOffset() / 60) * (-1);
	g_sDebug += "time zone = " + g_MTR.tz_n + "\n";
	g_MTR.bh_n = m_dNow.getHours();
	g_sDebug += "current hour= " + g_MTR.bh_n + "\n";
	g_MTR.ul_n = (navigator.appName == "Netscape" ? navigator.language : navigator.userLanguage);
	g_sDebug += "client language= " + g_MTR.ul_n + "\n";
	if (typeof(screen) == "object"){
		g_MTR.cd_n = ((navigator.appName == "Netscape") ? screen.pixelDepth : screen.colorDepth);
		g_sDebug += "colour depth= " + g_MTR.cd_n + "\n";
		g_MTR.sr_n = screen.width + "x" + screen.height;
		g_sDebug += "screen resolution= " + g_MTR.sr_n + "\n";
	}
	g_MTR.js_n = "y";
	g_sDebug += "javascript enabled= " + g_MTR.js_n + "\n";
	if (typeof(g_sJV) != "undefined"){
		g_MTR.js_v = g_sJV;
		g_sDebug += "javascript version= " + g_MTR.js_v + "\n";
	    g_MTR.fv_n = -1;
	    if (g_sJV >= 1.3) {
            if (window.ActiveXObject){
                for (var ver = 12; ver >= 2; ver--){
	                try{
		                var flash = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + ver + "');");
		                if (flash){
			                g_MTR.fv_n = ver;
			                break;
			            }
		            }
		            catch(e){ }
	            }
            } 
        }
        if (g_MTR.fv_n == -1) {
            try {
                var oFlashVersion = getFlashPluginVersion();
                if (oFlashVersion.installed) {
                    g_MTR.fv_n = oFlashVersion.major + "." + oFlashVersion.minor;
                }
            }
            catch(e) { }
        }
        g_sDebug += "flash version= " + g_MTR.fv_n + "\n";
	}
	g_MTR.ur_n=window.location.pathname;
	g_sDebug += "uri path= " + g_MTR.ur_n + "\n";
    g_MTR.qy_n = "";
	if (window.location.search){
		g_MTR.qy_n = window.location.search;
	}
	g_sDebug += "query string= " + g_MTR.qy_n + "\n";
	g_MTR.ua_n = navigator.userAgent;
	g_sDebug += "useragent= " + g_MTR.ua_n + "\n";
};

function getFlashPluginVersion() 
{ 
    var version = { 
        major: -1, 
        minor: -1, 
        installed: false
    };
    var plugin = navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin; 
    if (!plugin) {
        return version;
    }
    version.installed = true;
    var description = plugin.description; 
    var versionArray = description.match(/[\d.]+/g); 
    if (!versionArray) {
        return version;
    }
    if (versionArray.length >= 1 && !isNaN(versionArray[0])) {
        version.major = parseFloat(versionArray[0]);
    }
    if (versionArray.length >= 2 && !isNaN(versionArray[1])) {
        version.minor = parseFloat(versionArray[1]);
    }
    return version;
}
function resetRecurringVars() {
    if (g_MTR.ck_n) {
        g_MTR.ck_n = null;
    }
    
    if (g_MTR.ck_w) {
        g_MTR.ck_w = null;
    }
    
    if (g_MTR.ck_a) {
        g_MTR.ck_a = null;
    }    
}
