//Tracking Functions
sTrackSendEmail = function(widgetLink) {
	sSetWidgetDistributeInfo(widgetLink,"","article","email");
	s.t();
};


function sTrackPhotoView(photoName,galleryTitle) { //Tracks as a Page View
	/* Custom Photo View Implementation Coming Soon */
	s.linkTrackVarsTmp=s.linkTrackVars;
	s.linkTrackVars+=",eVar21,prop43,";
	s.linkTrackEvents="event22";
	s.events="event22";
	s.eVar21="photo";

	s.prop15 ="gallery";
	photoName = photoName.toLowerCase();
	galleryTitle = galleryTitle.toLowerCase();
	if (galleryTitle != null && galleryTitle != "" && photoName != null && photoName != "") {
		s.eVar1 = galleryTitle;
		s.prop1 = s.eVar1;
		s.eVar2 = s.eVar1 + ":photos";
		s.prop2 = s.eVar2;
		s.eVar3 = s.eVar2 + ":" + photoName;
		s.prop3 = s.eVar3;
		s.pageName= s.eVar3;
	}
	else
		s.pageName = "";

	s.prop26="scroll:" + s.pageName;

	sSetHeavyPhoto();
	sGetHeavyPhoto();
	s.t();
	s.linkTrackEvents=s.events=s.eVar21="";
	s.linkTrackVars=s.linkTrackVarsTmp;
}

function sTrackPercentPageViewed(percentSeen){ //tracks as a custom link click
	/*call this function as more of the page is seen via scrolling or browser expanding*/
	//subtract the percent of the page that was already seen from the new total percent of the screen that was seen
	percentSeenNew = parseFloat(percentSeen) - parseFloat(sGetPercentSeen());
	if (percentSeenNew > 0){
		//track the difference
		s.linkTrackVarsTmp=s.linkTrackVars;
		s.linkTrackVars+=",prop26,products";
		s.linkTrackEvents="event22";
		s.events="event22";
		s.prop26="scroll:" + s.eVar4;
		//s.products=";;;;event22=" + parseFloat(sGetPercentSeen());
		s.products=";;;;event22=" + percentSeenNew;
		s.tl(this,'o','page-percent-seen')
		s.prop26=s.linkTrackEvents=s.events=s.products="";
		s.linkTrackVars=s.linkTrackVarsTmp
		sSetPercentSeen(percentSeen)
	}

}

function sTrackWidgetClick(widgetLink,searchTerm) {
	/* Set Widget Name  based on Widget Link Name*/
	var wnArray=new Array(3);
	wnArray=widgetLink.split(":");
	if(wnArray[0]) {
		widgetName=wnArray[0];
	}

	s.linkTrackVars=sLinkTrackVars + ",eVar23,prop16,eVar16,eVar17,prop27,";
	s.linkTrackEvents="event21"
	s.events="event21";
	s.eVar16=s.prop16=widgetName.toLowerCase();
	s.eVar17=s.prop27=widgetLink.toLowerCase();
	s.eVar23=searchTerm;
	s.tl(document.URL,'o','widget click: ' + widgetLink.toLowerCase());
	s.eVar23=s.prop16=s.eVar16=s.eVar17=s.prop27=s.events="";
	s.linkTrackVars=sLinkTrackVars;
}

function sTrackForm(formName, formEvent, contributeEvent, assetType, formMeta, visitorID) {
	s.linkTrackVars=sLinkTrackVars + ",eVar8,prop5,";
	s.eVar8=formName.toLowerCase();

	if (formEvent=="start"){
		s.linkTrackEvents="event17"
		s.events="event17";
	} else if (formEvent=="complete"){
		s.linkTrackEvents="event18"
		s.events="event18";
	} else {
		s.linkTrackEvents="event17,event18"
		s.events="event17,event18";
	}
	if ((contributeEvent.length)> 0){
		sSetHeavyContributor()
	}
	if ((contributeEvent.length)> 0 && contributeEvent != "distribute"){
	//track real-time contributions
		s.linkTrackVars+=",prop5";
		s.linkTrackEvents+=",event7"
		s.events+=",event7"
		s.prop5=s.eVar4 + ":" + contributeEvent
	} else if(formEvent!="start"){
		s.linkTrackEvents+=",event5"
		s.events+=",event5"
	}
	if ((assetType.length)> 0){
	//track asset uploaded
		s.linkTrackVars+=",eVar21";
		s.eVar21 = assetType;
	}
	if ((formMeta.length)> 0){
		//track meta fields in form
		s.linkTrackVars+=",prop24";
		s.prop24 = formMeta;
	}
	if ((visitorID.length)> 0){
	//track obsfuscated visitor ID On form complete
		s.linkTrackVars+=",eVar25";
		s.eVar25 = visitorID;
	}

	s.tl(document.URL,'o',formName.toLowerCase());
	s.eVar21=s.eVar25=s.prop24=s.linkTrackEvents=s.prop8=s.prop5=s.events="";
	s.linkTrackVars=sLinkTrackVars;
}

function sTrackDownload(downloadName) {
	s.tl(document.URL,'d',downloadName.toLowerCase());
}

function sTrackDistributeInfo() {
	s.linkTrackVars+=",prop16,eVar16,eVar17,prop27,prop18,eVar5,eVar21,events"
	s.linkTrackEvents="event5";
	s.tl(document.URL,'d',"distribute_" + s.prop16);
	s.linkTrackEvents=s.prop16=s.eVar16=s.eVar17=s.prop27=s.prop18=s.eVar5=s.eVar21=s.events="";
	s.linkTrackVars=sLinkTrackVars;
}


//Setting Functions
function sSetHeavyVideo(videoStarts,secondsViewed) {
	if(secondsViewed){
		sSecondsViewed=parseFloat(sGetVideoViewed())+secondsViewed;
		//video viewing threshold
		if(sSecondsViewed > 300 && sSecondsViewed <= 1800) { //5 mins
			videoThreshold="over-5-mins";
		} else if(sSecondsViewed > 1800) { //30 mins
			videoThreshold="over-30-mins";
		} else {
			videoThreshold="5-mins-or-less";
		}
		s.prop29=s.eVar29=s.getAndPersistValue(videoThreshold,'s_video_threshold',cookieLifetime);
		s.propa=s.getAndPersistValue(sSecondsViewed,'s_video_seconds',cookieLifetime);
	}

	if(videoStarts){
		sVideoStarts=parseFloat(sGetVideoStarts())+videoStarts;
		if (sVideoStarts >= 1 && sVideoStarts <3){
			viewerType="low-video";
		} else if (sVideoStarts >= 1){
			viewerType="high-video";
		} else {
			viewerType="no-video";
		}
		s.propb=s.getAndPersistValue(sVideoStarts,'s_video_starts',cookieLifetime);
		s.prop42=s.eVar42=s.getAndPersistValue(viewerType,'s_video_viewer',cookieLifetime);
	}

}
function sSetHeavyPhoto() {
	//possible values are “no-photo”,”low-photo", or “heavy-photo”
	numPhotosViewed = getCookie(photoCookieName);
	if(numPhotosViewed == 0)
		s.eVar43=s.prop43="no-photo";
	else if(numPhotosViewed < photoHeavyMinimum)
		s.eVar43=s.prop43="low-photo";
	else
		s.eVar43=s.prop43="high-photo";
	s.eVar43=s.prop43=s.getAndPersistValue(s.prop43,'s_photo_viewer',cookieLifetime);
}

function sSetHeavyContributor(viewerType) {
	//possible values are “no-contributions”,”low-contributions”, or “heavy-contributions”
	numContributions = getCookie(contributionCookieName);
	if(numContributions == 0)
		s.eVar44=s.prop44="no-contributions";
	else if(numContributions < contributionHeavyMinimum)
		s.eVar44=s.prop44="low-contributions";
	else
		s.eVar44=s.prop44="high-contributions";
	s.eVar44=s.prop44=s.eVar44=s.getAndPersistValue(s.prop44,'s_contributor',cookieLifetime);
}

function sSetPercentSeen(percentSeen) {
	//possible values are 0.25,0.5,0.75,1
	s.perSeen=s.getAndPersistValue(percentSeen,'s_percentseen',0);
}

function sSetWidgetDistributeInfo(widgetLink,widgetSource,assetType,shareTo){
	/* Set Widget Name  based on Widget Link Name*/
	var wnArray=new Array(3);
	wnArray=widgetLink.split(":");
	if(wnArray[0]) {
		widgetName=wnArray[0];
	}
	s.eVar16=s.prop16=widgetName;
	s.eVar17=s.prop27=widgetLink;
	s.prop18=widgetSource;
	s.eVar21=assetType;
	s.eVar5=shareTo;
	s.events="event5" //distribute
}


//Getting Functions
function sGetHeavyVideo() {
	heavyVideo = s.getAndPersistValue(s.prop42,'s_video_viewer',cookieLifetime);
	if(!heavyVideo){
		heavyVideo = "no-video";
	}
	return heavyVideo;
}

function sGetVideoViewed() {
	videoViewed = s.getAndPersistValue(s.propa,'s_video_seconds',cookieLifetime);
	if(!videoViewed){
		videoViewed = 0;
	}
	return videoViewed;
}

function sGetVideoThreshold() {
	videoThreshold = s.getAndPersistValue(s.prop29,'s_video_threshold',cookieLifetime);
	if(!videoThreshold){
		videoThreshold = "5-mins-or-less";
	}
	return videoThreshold;
}

function sGetVideoStarts() {
	videoStarts = s.getAndPersistValue(s.propb,'s_video_starts',cookieLifetime);
	if(!videoStarts){
		videoStarts = 0;
	}
	return videoStarts;
}

function sGetHeavyPhoto() {
	heavyPhoto = s.getAndPersistValue(s.prop43,'s_photo_viewer',cookieLifetime);
	if(!heavyPhoto) {
		sSetHeavyPhoto("no-photo");
		heavyPhoto = "no-photo"
	}
	return  s.getAndPersistValue(s.prop43,'s_photo_viewer',cookieLifetime);
}


function sGetHeavyContributor() {
	heavyContributor = s.getAndPersistValue(s.prop44,'s_contributor',cookieLifetime);
	if(!heavyContributor) {
		heavyContributor = "no-contributions";
		sSetHeavyContributor("no-contributions");
	}
	return s.getAndPersistValue(s.prop44,'s_contributor',cookieLifetime);

}

function sGetPercentSeen() {
	percentSeen = s.getAndPersistValue(s.perSeen,'s_percentseen',0);
	return percentSeen;

}

function sGetYear(){
	var d = new Date();
	return d.getFullYear();
}

//

//return a concatenated comma seperated string of titles based on a css class name

var sTrackingCssNameWidgets = 'sTrackingClassNameWidgets';
var sTrackingCssNameVideos = 'sTrackingClassNameVideos';

function sGetTitlesByCssClass(cssClassName)
{
 var returnElementTitles = "";
 $$(cssClassName).each(function(elmt) {
     if (elmt.title){
         if (returnElementTitles == "")
             returnElementTitles = (elmt.title);
         else
             returnElementTitles += ("," + elmt.title);
     }
 });
	return returnElementTitles;
}

//Gets the number ads on a page based on an
//array comcast uses to push their ads ad objects into
//depends on the fact that "ary" is defined elsewehere
function sGetNumberOfProducts()
{

if (typeof ary != "undefined") { // MS-414

 if (ary)
     return ary.length;
 else
     return 0;
     
} // MS-414

}

//Methods for tracking and firing events based on percentage of page viewed
//var siteCatalystIsMaximumViewedAreaEvent25 = false;  always has at least 25% of page viewed
var siteCatalystIsMaximumViewedAreaEvent50 = false;
var siteCatalystIsMaximumViewedAreaEvent75 = false;
var siteCatalystIsMaximumViewedAreaEvent100 = false;

function sGetScrollPercentage()
{
	 var y;
	 y = document.documentElement.offsetHeight ? document.documentElement.offsetHeight : document.height; //document height
	 y = y < document.body.offsetHeight ? document.body.offsetHeight : y;
	 y2 = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; //client height
	 y3 = document.viewport.getScrollOffsets().top;

	 //we have to add the client height to add the entire height of the scrollbar segment since scrolltop only gives the top of the segment
	 y3 = y3 + y2;
	 if (y3 > y2)
	     y2 = y3;

	 var percentage = y2/y;

	 if (percentage > .75)
	 {
	    return 1;
	 }
	 else if (percentage > .5)
	 {
	    return 0.75;
	 }
	 else if (percentage > .25)
	 {
	    return 0.5;
	 }
	 else
	 {
		 return 0.25;
	 }
}

function sScrollingEvent()
{
	var percentage = sGetScrollPercentage();

	if (siteCatalystIsMaximumViewedAreaEvent100 == false && percentage > .75)
	 {
	     siteCatalystIsMaximumViewedAreaEvent100 = true;
	     siteCatalystIsMaximumViewedAreaEvent75 = true;
	     siteCatalystIsMaximumViewedAreaEvent50 = true;
	     siteCatalystIsMaximumViewedAreaEvent25 = true;
	     sTrackPercentPageViewed(1);
	 }
	 else if (siteCatalystIsMaximumViewedAreaEvent75 == false && percentage > .5)
	 {
	     siteCatalystIsMaximumViewedAreaEvent75 = true;
	     siteCatalystIsMaximumViewedAreaEvent50 = true;
	     siteCatalystIsMaximumViewedAreaEvent25 = true;
	     sTrackPercentPageViewed(0.75);
	 }
	 else if (siteCatalystIsMaximumViewedAreaEvent50 == false && percentage > .25)
	 {
	     siteCatalystIsMaximumViewedAreaEvent50 = true;
	     siteCatalystIsMaximumViewedAreaEvent25 = true;
	     sTrackPercentPageViewed(0.5);
	 }
	 else {
	 	//sTrackPercentPageViewed(0);
	 }
}

function sSetDynamicEventProperties(){
	sScrollingEvent();
	sTrackPercentPageViewed(sGetPercentSeen());
}


//Updates the cookie with # of photos viewed, videos viewed, items contributed
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    currval = unescape(document.cookie.substring(c_start,c_end));
    if(currval < 100)
	setCookie(c_name,parseInt(currval) +1);
    return currval;
    }
  }
setCookie(c_name,1);
return 0;
}
function setCookie(c_name,value)
{
//session cookie
document.cookie=c_name+ "=" +escape(value);
}




//Configuration Variables
cookieLifetime=0; //# of Days the cookie will last
photoCookieName="photo";
photoHeavyMinimum=18; //Minimum # of Photos to view before being categorized as high-photo;
videoCookieName="video";
VideoHeavyMinimum=3; //Minimum # of videos to view before being categorized as high-video;
contributionCookieName="contribution";
contributionHeavyMinimum=3; //Minimum # of contributions to view before being categorized as high-contributor;