var BlogTime=BlogTime||{};
BlogTime.Queue=[];
BlogTime.ActiveBlogId=-1;
BlogTime.KnownBlogs={};
BlogTime.LastSeenPostByBlog={};
BlogTime.IntervalId=NaN;
BlogTime.UserActiveState=2;
BlogTime.IdleThresholdMilliseconds=30000;
BlogTime.IdleTimer=NaN;
BlogTime.QueueEvent=function(stat){
BlogTime.Queue.push(stat);}
BlogTime.GetUserState=function(){
return BlogTime.UserActiveState;}
BlogTime.SetActiveBlog=function(blogId,viewState,actionCode,source,blogBubbleImpression,adPostId,blogBubbleServed){
if(BlogTime.ActiveBlogId!=blogId){
BlogTime.CloseActiveBlog(BlogTime.BlogTimeAction.LoseFocus);
if(!!blogId&&blogId>0){
var stat=BlogTime.CreateEventObject(blogId,BlogTime.LastSeenPostByBlog[blogId],viewState,actionCode,BlogTime.GetUserState(),source,blogBubbleImpression,adPostId,blogBubbleServed);
BlogTime.KnownBlogs[blogId]=stat;
BlogTime.QueueEvent(stat);
stat=null;}
BlogTime.ActiveBlogId=blogId;}}
BlogTime.SetBlogViewType=function(blogId,viewState,source,blogBubbleImpression,adPostId,blogBubbleServed){
for(var statKey in BlogTime.Queue){
var stat=BlogTime.Queue[statKey];
if(stat.blogId===blogId){
if(!stat.source&&!stat.view){
stat.view=viewState;
stat.source=source;
if(!!blogBubbleImpression){
stat.blogBubbleImpression=blogBubbleImpression;}
if(!!adPostId){
stat.adPostId=adPostId;}}}}
var targetBlog=BlogTime.KnownBlogs[blogId];
if(!!targetBlog){
targetBlog.view=viewState;
targetBlog.source=source;
if(!!blogBubbleImpression){
targetBlog.blogBubbleImpression=blogBubbleImpression;}
if(!!adPostId){
targetBlog.adPostId=adPostId;}
if(targetBlog.view!=viewState||targetBlog.source!=source){
BlogTime.CloseActiveBlog(BlogTime.BlogTimeAction.ChangeState);
BlogTime.ActiveBlogId=-1;
BlogTime.SetActiveBlog(blogId,viewState,BlogTime.BlogTimeAction.Land,source,blogBubbleImpression,adPostId,blogBubbleServed);}}}
BlogTime.CloseActiveBlog=function(action){
var activeBlogID=BlogTime.ActiveBlogId;
if(!!activeBlogID&&activeBlogID>0){
var stat=BlogTime.CreateEventObject(activeBlogID,BlogTime.LastSeenPostByBlog[activeBlogID],BlogTime.KnownBlogs[activeBlogID].view,action,BlogTime.GetUserState());
BlogTime.QueueEvent(stat);
stat=null;}}
BlogTime.CreateEventObject=function(blogId,postId,viewState,actionCode,userState,source,blogBubbleImpression,adPostId,blogBubbleServed){
var eventObject={
action:actionCode,
view:viewState,
state:userState,
utcTime:BlogTime.GetDate(),
blogId:blogId,
postId:postId,
source:source};
if(blogBubbleImpression){
eventObject.blogBubbleImpression=blogBubbleImpression;}
if(blogBubbleServed){
eventObject.blogBubbleServed=blogBubbleServed;}
if(adPostId){
eventObject.adPostId=adPostId}
return eventObject;}
BlogTime.DeQueueEvents=function(){
var temp=BlogTime.Queue;
BlogTime.Queue=[];
if(!!Object.toJSON){
return Object.toJSON(temp);}
else if(!!window.gadgets&&!!window.gadgets.json){
return window.gadgets.json.parse(temp);}
else{
return JSON.stringify(temp);}}
BlogTime.Start=function(){
var idleField=window.document.getElementById("BlogTime_IdleThresholdSeconds");
if(idleField!==null){
BlogTime.IdleThresholdMilliseconds=parseInt(idleField.value,10)*1000;}
if(window.addEventListener){
window.addEventListener("scroll",BlogTime_MarkActive,false);
window.document.documentElement.addEventListener("mouseover",BlogTime_MarkActive,false);}
else if(window.attachEvent){
window.attachEvent("onscroll",BlogTime_MarkActive);
window.document.documentElement.attachEvent("onmouseover",BlogTime_MarkActive);}
if(/*@cc_on!@*/false){
window.document.onfocusin=BlogTime_MarkActive;
window.document.onfocusout=BlogTime_MarkInactive;}
else{
window.onfocus=BlogTime_MarkActive;
window.onblur=BlogTime_MarkInactive;}
if(!BlogTime.DetectDesktop()){
BlogTime.LastSeenPostByBlog[blogId]=postId;
BlogTime.SetActiveBlog(blogId,BlogTime.GetViewState(),BlogTime.BlogTimeAction.Land,BlogTime.GetSource(),BlogTime.GetBlogBubbleImpression(window),BlogTime.GetAdPostID(window),BlogTime.GetBlogBubbleServed(window));}
else{
top.BlogTime.LastSeenPostByBlog[blogId]=postId;
top.BlogTime.SetBlogViewType(blogId,BlogTime.GetViewState(),BlogTime.GetSource(),BlogTime.GetBlogBubbleImpression(window),BlogTime.GetAdPostID(window),BlogTime.GetBlogBubbleServed(window));}}
BlogTime.ShutDown=function(){
if(!isNaN(BlogTime.IntervalId)){
clearInterval(BlogTime.IntervalId);
BlogTime.IntervalId=NaN;}}
BlogTime.PreparePing=function(){
var activeBlogID=BlogTime.ActiveBlogId;
if(BlogTime.ActiveBlogId>0){
var stat=BlogTime.CreateEventObject(activeBlogID,BlogTime.LastSeenPostByBlog[activeBlogID],BlogTime.KnownBlogs[activeBlogID].view,BlogTime.BlogTimeAction.Ping,BlogTime.GetUserState(),BlogTime.KnownBlogs[activeBlogID].source,BlogTime.KnownBlogs[activeBlogID].blogBubbleImpression,BlogTime.KnownBlogs[activeBlogID].adPostId,BlogTime.KnownBlogs[activeBlogID].blogBubbleServed);
BlogTime.QueueEvent(stat);}}
BlogTime.Send=function(){}
BlogTime.GetDate=function(){
var d=new Date();
var str='';
str=(d.getUTCMonth()+1)+'-'+d.getUTCDate()+'-'+d.getUTCFullYear()+' ';
str+=d.getUTCHours()+':'+d.getUTCMinutes()+':'+d.getUTCSeconds()+'.';
var ms=d.getUTCMilliseconds();
if(ms>=100){
str+=ms;}
else if(ms>=10){
str+='0'+ms;}
else{
str+='00'+ms;}
return str;}
BlogTime.GetViewState=function(){
var viewState=0;
if(window.viewType===0){
viewState=BlogTime.BlogTimeView.Free;}
else if(window.viewType===1){
viewState=BlogTime.BlogTimeView.Free;}
else if(window.viewType===2){
viewState=BlogTime.BlogTimeView.Owner;}
else if(window.viewType===3){
viewState=BlogTime.BlogTimeView.Author;}
else if(window.viewType===4){
viewState=BlogTime.BlogTimeView.NonBillable;}
else{
viewState=BlogTime.BlogTimeView.Unknown;}
if(!!window.singlePost){
viewState+=4;}
return viewState;}
BlogTime.GetSource=function(){
if(!window.pageType){
return BlogTime.BlogTimeSource.Desktop;}
return window.pageType;}
BlogTime.GetBlogBubbleImpression=function(blogWindow){
var searchText=blogWindow.location.search;
var impressionIndex=searchText.indexOf("blogBubbleImpression=");
if(impressionIndex!==-1){
impressionIndex+=21;
var impressionText=searchText.substr(impressionIndex);
impressionIndex=impressionText.indexOf("&");
if(impressionIndex!==-1){
impressionText=impressionText.substring(0,impressionIndex);}
return decodeURIComponent(impressionText.replace(/\+/g,"%20"));}
else{
return null;}}
BlogTime.GetBlogBubbleServed=function(blogWindow){
var searchText=blogWindow.location.search;
var impressionIndex=searchText.indexOf("blogBubbleServed=");
if(impressionIndex!==-1){
impressionIndex+=21;
var impressionText=searchText.substr(impressionIndex);
impressionIndex=impressionText.indexOf("&");
if(impressionIndex!==-1){
impressionText=impressionText.substring(0,impressionIndex);}
return decodeURIComponent(impressionText.replace(/\+/g,"%20"));}
else{
return null;}}
BlogTime.GetAdPostID=function(blogWindow){
var searchText=blogWindow.location.search;
var impressionIndex=searchText.indexOf("apid=");
if(impressionIndex!==-1){
impressionIndex+=5;
var impressionText=searchText.substr(impressionIndex);
impressionIndex=impressionText.indexOf("&");
if(impressionIndex!==-1){
impressionText=impressionText.substring(0,impressionIndex);}
return decodeURIComponent(impressionText.replace(/\+/g,"%20"));}
else{
return null;}}
BlogTime.DetectDesktop=function(){
try{
return top!=window&&!!top.BlogTime&&!!top.WindowManager;}
catch(e){return false;}}
function BlogTime_MarkActive(){
if(BlogTime.UserActiveState!==BlogTime.BlogTimeUserState.Active){
BlogTime.PreparePing();
BlogTime.UserActiveState=BlogTime.BlogTimeUserState.Active;}
var idleTimer=BlogTime.IdleTimer;
if(!(isNaN(idleTimer))){
window.clearTimeout(idleTimer);
BlogTime.IdleTimer=NaN;}
BlogTime.IdleTimer=window.setTimeout(BlogTime_MarkInactiveTimeout,BlogTime.IdleThresholdMilliseconds);}
function BlogTime_MarkInactiveTimeout(){
if(BlogTime.UserActiveState!==BlogTime.BlogTimeUserState.Idle){
BlogTime.PreparePing();
BlogTime.UserActiveState=BlogTime.BlogTimeUserState.Idle;}
BlogTime.IdleTimer=NaN;}
function BlogTime_MarkInactive(){
if(BlogTime.UserActiveState!==BlogTime.BlogTimeUserState.Idle){
BlogTime.PreparePing();
BlogTime.UserActiveState=BlogTime.BlogTimeUserState.Idle;}
var idleTimer=BlogTime.IdleTimer;
if(!(isNaN(idleTimer))){
window.clearTimeout(idleTimer);
BlogTime.IdleTimer=NaN;}}
BlogTime.BlogTimeAction={
Land:1,
Ping:2,
GainFocus:3,
LoseFocus:4,
Close:5,
NoActivity:6,
ChangeState:7}
BlogTime.BlogTimeView={
Unknown:0,
Owner:1,
Author:2,
NonBillable:3,
Free:4,
OwnerSinglePost:5,
AuthorSinglePost:6,
NonBillableSinglePost:7,
FreeSinglePost:8}
BlogTime.BlogTimeUserState={
Active:1,
Idle:2}
BlogTime.BlogTimeSource={
Desktop:1,
UniqueUrl:2,
ShoutoutFlow:3,
ViralLoopToGo:4}

