﻿//functions to set/check for omniDebug cookie
function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        createCookieByDate(name, value, date);
    }
    else
        createCookieByDate(name, value, null);
}

function createCookieByDate(name, value, cDate) {
    if (cDate) {
        var expires = "; expires=" + cDate.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

function qsp_match(qsp) {
    var params = location.search.substring(1)
    var paramArray = new Array;
    paramArray = params.split("&")
    for (var i = 0; i < paramArray.length; i++) {
        var bitArray = new Array;
        bitArray = paramArray[i].split('=')
        if (bitArray[0] == qsp) return bitArray[1];
    }
}

//if URL contains parameter: omniDebug=true, set cookie for half hour
if (qsp_match('omniDebug') == "true") {
    createCookie("omniDebug", true, 0.02)
}

//check for omniDebug cookie--otherwise stop the tag from firing
// report suite: if s_account  = "wastemdev", check for omniDebug cookie
var sGoLive = true;
if (s_account == "wastemdev") {
    if (!readCookie("omniDebug")) {
        //dev environment, discard data
        sGoLive = false;
    }
}


/* Plugin Config */
s.usePlugins = true
function s_doPlugins(s) {
    /* Add calls to plugins here */

    /* custom event on every page name */
    s.events = s.apl(s.events, "event5", ",", 2)

    /* capture host in server to keep tabs on errors */
    s.server = document.location.host;

    /* Page Name Parsing - commented out based on request from G2*/
//    if (!s.pageName)
//        s.pageName = document.title
//    else if (s.pageName.trim() == "")
//        s.pageName = document.title


    /* URL Capture for debugging purposes */
    s.prop19 = location.href.split("?")[0]


    // channel hierarchy
    s.eVar8 = s.prop12;

    /* Traffic Timeparting EST*/
    var currDate = new Date();
    s.prop3 = s.getTimeParting('h', '-5', currDate.getFullYear()); // Set hour
    s.prop4 = s.getTimeParting('d', '-5', currDate.getFullYear()); // Set day
    s.prop5 = s.getTimeParting('w', '-5', currDate.getFullYear()); // Set Weekend / Weekday

    /* New/Repeat Status and Pathing Variables */
    s.prop7 = s.eVar3 = s.getNewRepeat();
    if (s.pageName && s.prop7 == 'New') s.prop8 = s.pageName;
    if (s.pageName && s.prop7 == 'Repeat') s.prop9 = s.pageName;



    /* External Campaigns */
    if (!s.campaign)
        s.campaign = s.getQueryParam('cmp');
    s.campaign = s.getValOnce(s.campaign, "s_camp", 0);


    /* Internal Campaigns */
    if (!s.eVar4) {
        s.eVar4 = s.getQueryParam('intcmp');
        s.eVar4 = s.getValOnce(s.eVar4, "s_eVar4", 0);
    }

    /* Enhanced download tracking */
    s.url = s.downloadLinkHandler();
    if (s.url) {
        //Track FileName and event
        s.eVar2 = s.url.substring(s.url.lastIndexOf("/") + 1, s.url.length);
        s.prop6 = s.url.substring(s.url.lastIndexOf("/") + 1, s.url.length);
        s.events = s.apl(s.events, "event1", ",", 2)
    }

    s.eVar1 = s.crossVisitParticipation(s.campaign, 's_cpm', '90', '5', '>', 'purchase');


    /* Legacy Internal Search --never implemented */
    /*	if(s.eVar5){
	 
	  s.eVar5=s.eVar5.toLowerCase();  
    var t_search=s.getValOnce(s.eVar5,'ev5',0);
    if(t_search) {
    if(s.events)
    s.events=s.apl(s.events,"event10",",",2)
    else
    s.events="event10"
	  
    }
    }
    */


}
s.doPlugins = s_doPlugins
/************************** PLUGINS SECTION *************************/
/* You may insert any plugins you wish to use here.                 */



/* crossVisitParticipation Example: 1.2  -- REQUIRES s.split                                                    
*                                                                                        
* List of Parameters:                                                                    
* vu-variable to stack values from                                                       
* cn-name of cookie to stack values in                                                   
* ex-expiration of variable value in days                                                   
* ct-number of distinct values to store in cookie                                        
* dl-delimiter to display in variable                                                         
* ev-success event(s) which clear cookie (use comma separated list)                        
*                                                                                        
*/

s.crossVisitParticipation = new Function("v", "cn", "ex", "ct", "dl", "ev", ""
+ "var s=this;var ay=s.split(ev,',');for(var u=0;u<ay.length;u++){if(s"
+ ".events&&s.events.indexOf(ay[u])!=-1){s.c_w(cn,'');return '';}}if(!"
+ "v||v=='')return '';var arry=new Array();var a=new Array();var c=s.c"
+ "_r(cn);var g=0;var h=new Array();if(c&&c!='') arry=eval(c);var e=ne"
+ "w Date();e.setFullYear(e.getFullYear()+5);if(arry.length>0&&arry[ar"
+ "ry.length-1][0]==v)arry[arry.length-1]=[v, new Date().getTime()];el"
+ "se arry[arry.length]=[v, new Date().getTime()];var data=s.join(arry"
+ ",{delim:',',front:'[',back:']',wrap:'\\''});var start=arry.length-c"
+ "t < 0?0:arry.length-ct;s.c_w(cn,data,e);for(var x=start;x<arry.leng"
+ "th;x++){var diff=Math.round(new Date()-new Date(parseInt(arry[x][1]"
+ ")))/86400000;if(diff<ex){h[g]=arry[x][0];a[g++]=arry[x];}}var r=s.j"
+ "oin(h,{delim:dl});return r;");



/*
* Plugin: getTimeParting 1.3 - Set timeparting values based on time zone
*/

s.getTimeParting = new Function("t", "z", "y", ""
+ "dc=new Date('1/1/2000');f=15;ne=8;if(dc.getDay()!=6||"
+ "dc.getMonth()!=0){return'Data Not Available'}else{;z=parseInt(z);"
+ "if(y=='2009'){f=8;ne=1};gmar=new Date('3/1/'+y);dsts=f-gmar.getDay("
+ ");gnov=new Date('11/1/'+y);dste=ne-gnov.getDay();spr=new Date('3/'"
+ "+dsts+'/'+y);fl=new Date('11/'+dste+'/'+y);cd=new Date();"
+ "if(cd>spr&&cd<fl){z=z+1}else{z=z};utc=cd.getTime()+(cd.getTimezoneO"
+ "ffset()*60000);tz=new Date(utc + (3600000*z));thisy=tz.getFullYear("
+ ");var days=['Sunday','Monday','Tuesday','Wednesday','Thursday','Fr"
+ "iday','Saturday'];if(thisy!=y){return'Data Not Available'}else{;thi"
+ "sh=tz.getHours();thismin=tz.getMinutes();thisd=tz.getDay();var dow="
+ "days[thisd];var ap='AM';var dt='Weekday';var mint='00';if(thismin>3"
+ "0){mint='30'}if(thish>=12){ap='PM';thish=thish-12};if (thish==0){th"
+ "ish=12};if(thisd==6||thisd==0){dt='Weekend'};var timestring=thish+'"
+ ":'+mint+ap;var daystring=dow;var endstring=dt;if(t=='h'){return tim"
+ "estring}if(t=='d'){return daystring};if(t=='w'){return en"
+ "dstring}}};");
/*
* Plugin: getNewRepeat 1.0 - Return whether user is new or repeat
*/
s.getNewRepeat = new Function(""
+ "var s=this,e=new Date(),cval,ct=e.getTime(),y=e.getYear();e.setTime"
+ "(ct+30*24*60*60*1000);cval=s.c_r('s_nr');if(cval.length==0){s.c_w("
+ "'s_nr',ct,e);return 'New';}if(cval.length!=0&&ct-cval<30*60*1000){s"
+ ".c_w('s_nr',ct,e);return 'New';}if(cval<1123916400001){e.setTime(cv"
+ "al+30*24*60*60*1000);s.c_w('s_nr',ct,e);return 'Repeat';}else retur"
+ "n 'Repeat';");
/*
* Plugin: getQueryParam 2.1 - return query string parameter(s)
*/
s.getQueryParam = new Function("p", "d", "u", ""
+ "var s=this,v='',i,t;d=d?d:'';u=u?u:(s.pageURL?s.pageURL:s.wd.locati"
+ "on);if(u=='f')u=s.gtfs().location;while(p){i=p.indexOf(',');i=i<0?p"
+ ".length:i;t=s.p_gpv(p.substring(0,i),u+'');if(t)v+=v?d+t:t;p=p.subs"
+ "tring(i==p.length?i:i+1)}return v");
s.p_gpv = new Function("k", "u", ""
+ "var s=this,v='',i=u.indexOf('?'),q;if(k&&i>-1){q=u.substring(i+1);v"
+ "=s.pt(q,'&','p_gvf',k)}return v");
s.p_gvf = new Function("t", "k", ""
+ "if(t){var s=this,i=t.indexOf('='),p=i<0?t:t.substring(0,i),v=i<0?'T"
+ "rue':t.substring(i+1);if(p.toLowerCase()==k.toLowerCase())return s."
+ "epa(v)}return ''");
/*
* Plugin: getValOnce 0.2 - get a value once per session or number of days
*/
s.getValOnce = new Function("v", "c", "e", ""
+ "var s=this,k=s.c_r(c),a=new Date;e=e?e:0;if(v){a.setTime(a.getTime("
+ ")+e*86400000);s.c_w(c,v,e?a:0);}return v==k?'':v");
/*
* Utility Function: split v1.5 - split a string (JS 1.0 compatible)
*/
s.split = new Function("l", "d", ""
+ "var i,x=0,a=new Array;while(l){i=l.indexOf(d);i=i>-1?i:l.length;a[x"
+ "++]=l.substring(0,i);l=l.substring(i+d.length);}return a");
/*
* Plugin Utility: apl v1.1
*/
s.apl = new Function("L", "v", "d", "u", ""
+ "var s=this,m=0;if(!L)L='';if(u){var i,n,a=s.split(L,d);for(i=0;i<a."
+ "length;i++){n=a[i];m=m||(u==1?(n==v):(n.toLowerCase()==v.toLowerCas"
+ "e()));}}if(!m)L=L?L+d+v:v;return L");

/*
* Plugin: downloadLinkHandler 0.5 - identify and report download links
*/
s.downloadLinkHandler = new Function("p", ""
+ "var s=this,h=s.p_gh(),n='linkDownloadFileTypes',i,t;if(!h||(s.linkT"
+ "ype&&(h||s.linkName)))return '';i=h.indexOf('?');t=s[n];s[n]=p?p:t;"
+ "if(s.lt(h)=='d')s.linkType='d';else h='';s[n]=t;return h;");
/*
* Utility Function: p_gh
*/
s.p_gh = new Function(""
+ "var s=this;if(!s.eo&&!s.lnk)return '';var o=s.eo?s.eo:s.lnk,y=s.ot("
+ "o),n=s.oid(o),x=o.s_oidt;if(s.eo&&o==s.eo){while(o&&!n&&y!='BODY'){"
+ "o=o.parentElement?o.parentElement:o.parentNode;if(!o)return '';y=s."
+ "ot(o);n=s.oid(o);x=o.s_oidt}}return o.href?o.href:'';");
/*
* Utility Function: p_c
*/
s.p_c = new Function("v", "c", ""
+ "var x=v.indexOf('=');return c.toLowerCase()==v.substring(0,x<0?v.le"
+ "ngth:x).toLowerCase()?v:0");

/*
* s.join: 1.0 - s.join(v,p)
*
*  v - Array (may also be array of array)
*  p - formatting parameters (front, back, delim, wrap)
*
*/

s.join = new Function("v", "p", ""
+ "var s = this;var f,b,d,w;if(p){f=p.front?p.front:'';b=p.back?p.back"
+ ":'';d=p.delim?p.delim:'';w=p.wrap?p.wrap:'';}var str='';for(var x=0"
+ ";x<v.length;x++){if(typeof(v[x])=='object' )str+=s.join( v[x],p);el"
+ "se str+=w+v[x]+w;if(x<v.length-1)str+=d;}return f+str+b;");


/*
* Function - read combined cookies v 0.3
*/
if (!s.__ccucr) {
    s.c_rr = s.c_r; s.__ccucr = true;
    s.c_r = new Function("k", ""
+ "var s=this,d=new Date,v=s.c_rr(k),c=s.c_rr('s_pers'),i,m,e;if(v)ret"
+ "urn v;k=s.ape(k);i=c.indexOf(' '+k+'=');c=i<0?s.c_rr('s_sess'):c;i="
+ "c.indexOf(' '+k+'=');m=i<0?i:c.indexOf('|',i);e=i<0?i:c.indexOf(';'"
+ ",i);m=m>0?m:e;v=i<0?'':s.epa(c.substring(i+2+k.length,m<0?c.length:"
+ "m));if(m>0&&m!=e)if(parseInt(c.substring(m+1,e<0?c.length:e))<d.get"
+ "Time()){d.setTime(d.getTime()-60000);s.c_w(s.epa(k),'',d);v='';}ret"
+ "urn v;");
}
/*
* Function - write combined cookies v 0.3
*/
if (!s.__ccucw) {
    s.c_wr = s.c_w; s.__ccucw = true;
    s.c_w = new Function("k", "v", "e", ""
+ "this.new2 = true;"
+ "var s=this,d=new Date,ht=0,pn='s_pers',sn='s_sess',pc=0,sc=0,pv,sv,"
+ "c,i,t;d.setTime(d.getTime()-60000);if(s.c_rr(k)) s.c_wr(k,'',d);k=s"
+ ".ape(k);pv=s.c_rr(pn);i=pv.indexOf(' '+k+'=');if(i>-1){pv=pv.substr"
+ "ing(0,i)+pv.substring(pv.indexOf(';',i)+1);pc=1;}sv=s.c_rr(sn);i=sv"
+ ".indexOf(' '+k+'=');if(i>-1){sv=sv.substring(0,i)+sv.substring(sv.i"
+ "ndexOf(';',i)+1);sc=1;}d=new Date;if(e){if(e.getTime()>d.getTime())"
+ "{pv+=' '+k+'='+s.ape(v)+'|'+e.getTime()+';';pc=1;}}else{sv+=' '+k+'"
+ "='+s.ape(v)+';';sc=1;}if(sc) s.c_wr(sn,sv,0);if(pc){t=pv;while(t&&t"
+ ".indexOf(';')!=-1){var t1=parseInt(t.substring(t.indexOf('|')+1,t.i"
+ "ndexOf(';')));t=t.substring(t.indexOf(';')+1);ht=ht<t1?t1:ht;}d.set"
+ "Time(ht);s.c_wr(pn,pv,d);}return v==s.c_r(s.epa(k));");
}



/* Configure Modules and Plugins */

s.loadModule("Media")
s.Media.autoTrack = false
s.Media.trackWhilePlaying = true
s.Media.trackVars = "None"
s.Media.trackEvents = "None"


/* 
* Plugins: Cookies -- allow you to read or create cookies. 
*/

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        createCookieByDate(name, value, date);
    }
    else
        createCookieByDate(name, value, null);
}

function createCookieByDate(name, value, cDate) {
    if (cDate) {
        var expires = "; expires=" + cDate.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

function debug(varName, varValue) {
    if (readCookie("wmDebug") == "true")
        somevar = true; //placeholder
    //alert(varName + " == " + varValue)

}


// proper case string prptotype (JScript 5.5+)

String.prototype.toProperCase = function() {
    return this.toLowerCase().replace(/^(.)|\s(.)/g,
      function($1) { return $1.toUpperCase(); });
}


// trims leading, trailing and even intermediate spaces
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ');
}

function internalCampaign(linkName, destHref) {
    //First, determine if this is an Internal or Link. Internal links you pass in the data as an onclick event, but external you send an Exit Page 
    if (destHref.indexOf(".pdf") == -1  //this is not a pdf
		&&
		(destHref.indexOf(document.location.host) > -1  //same domain 
			|| destHref.charAt(0) == "/" //the first character of the destHref is the root reference
			|| destHref.substring(0, 3) == "../" //destHref begins with
			|| (destHref.split("?")[0].split("#")[0].length - destHref.split("?")[0].split("#")[0].replace(/\./g, "").length) == 1 //only one dot means it can't be an external link
			|| destHref.indexOf(".") == -1 //no periods means an internal link
		)
	) {
        //this is an internal link
        s.linkTrackVars = "eVar4"
        s.linkTrackEvents = "none"
        s.eVar4 = linkName + ' (on ' + s.pageName + ')'
        s.tl(true, 'o', 'Internal Campaign: ' + linkName)
        /*		alert(destHref.charAt(0) == "/")
        alert(destHref.substring(0,3) == "../")
        alert(destHref.indexOf(document.location.host)>-1)
        alert((destHref.split("?")[0].split("#")[0].length - destHref.split("?")[0].split("#")[0].replace(/\./g,"").length) == 1) //only one dot means it can't be an external link		
        alert(destHref.indexOf(".") == -1)	
        */

        window.location = destHref;  //open the link in the current window
    }
    else {
        //this is an external link"
        s.eVar4 = linkName + ' (on ' + s.pageName + ')'
        s.pageName = "Exit Link: " + linkName
        s.t();
        window.open(destHref);
    }

}

// This counts the number of times a string matching the
// given regular expression can be found in the given text.
function CountValue(strText, reTargetString) {
    var intCount = 0;

    // Use replace to globally iterate over the matching
    // strings.
    strText.replace(
		reTargetString,

    // This function will get called for each match
    // of the regular expression.
		function() {
		    intCount++;
		}
	);

    // Return the updated count variable.
    return (intCount);
}
