//Tracking Functions
function sTrackPhotoView(photoName) { //Tracks as a Page View
	/* Custom Photo View Implementation Coming Soon */
	s.linkTrackVarsTmp=s.linkTrackVars;
	s.linkTrackVars+=",eVar21,prop43,";
	s.events="";
	s.eVar21="photo";
	s.pageName="photos:"+photoName;
	sSetHeavyPhoto();
	sGetHeavyPhoto();
	s.t();
	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=" + 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 {
		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.prop43="no-photo";
	else if(numPhotosViewed < photoHeavyMinimum) 
		s.prop43="low-photo";
	else
		s.prop43="high-photo";
	s.prop43=s.getAndPersistValue(s.prop43,'s_photo_viewer',0);	 
}

function sSetHeavyContributor(viewerType) {
	//possible values are “no-contributions”,”low-contributions”, or “heavy-contributions”
	numContributions = getCookie(contributionCookieName);
	if(numContributions == 0)
		s.prop44="no-contributions";
	else if(numContributions < contributionHeavyMinimum) 
		s.prop44="low-contributions";
	else
		s.prop44="high-contributions";
	s.prop44=s.eVar44=s.getAndPersistValue(s.prop44,'s_contributor',0);	 
}

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 sGetVideoThreshold() {
	videoThreshold = s.getAndPersistValue(s.prop29,'s_video_threshold',cookieLifetime);
	if(!videoThreshold){
		videoThreshold = "5-mins-or-less";
	}	
	return videoThreshold;
}

function sGetHeavyPhoto() {
	heavyPhoto = s.getAndPersistValue(s.prop43,'s_photo_viewer',0);	 
	if(!heavyPhoto) {
		sSetHeavyPhoto("no-photo");
		heavyPhoto = "no-photo"		
	}
	return  s.getAndPersistValue(s.prop43,'s_photo_viewer',0);
}


function sGetHeavyContributor() {
	heavyContributor = s.getAndPersistValue(s.prop44,'s_contributor',0);	 
	if(!heavyContributor) {
		heavyContributor = "no-contributions";
		sSetHeavyContributor("no-contributions");
	}
	return s.getAndPersistValue(s.prop44,'s_contributor',0);
	
}


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 (ary)
     return ary.length;
 else
     return 0;
}


//Methods for tracking and firing events based on percentage of page viewed
var siteCatalystIsMaximumViewedAreaEvent25 = false;
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 (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 if (siteCatalystIsMaximumViewedAreaEvent25 == false)
 {
     siteCatalystIsMaximumViewedAreaEvent25 = true;        
     sTrackPercentPageViewed(0.25);
 }
     
 return  percentage;          
 
}


//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)
{
expiredays=cookieLifetime;
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}




//Configuration Variables
cookieLifetime=365; //# 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;
