var BlogTime=BlogTime||{};
BlogTime.Queue=[];
BlogTime.ActiveBlogId=-1;
BlogTime.ActiveBlog={};
BlogTime.IntervalId=NaN;
BlogTime.QueueEvent=function(stat){
BlogTime.Queue.push(stat);}
BlogTime.GetUserState=function(){
return 1;}
BlogTime.SetActiveBlog=function(blogId,viewState,actionCode){
if(BlogTime.ActiveBlogId!=blogId){
BlogTime.CloseActiveBlog(BlogTime.BlogTimeAction.LoseFocus);
if(!!blogId&&blogId>0){
var stat=BlogTime.CreateEventObject(blogId,viewState,actionCode,BlogTime.GetUserState());
BlogTime.ActiveBlog=stat;
BlogTime.QueueEvent(stat);
stat=null;}
BlogTime.ActiveBlogId=blogId;}}
BlogTime.SetBlogViewType=function(blogId,viewState){
for(stat in BlogTime.Queue){
if(stat.blogId===blogId){
stat.view=viewState;}}
if(BlogTime.ActiveBlog.blogId===blogId){
BlogTime.ActiveBlog.view=viewState;}}
BlogTime.CloseActiveBlog=function(action){
if(!!BlogTime.ActiveBlogId&&BlogTime.ActiveBlogId>0){
var stat=BlogTime.CreateEventObject(BlogTime.ActiveBlogId,BlogTime.ActiveBlog.view,action,BlogTime.GetUserState());
BlogTime.QueueEvent(stat);
stat=null;}}
BlogTime.CreateEventObject=function(blogId,viewState,actionCode,userState){
return{
action:actionCode,
view:viewState,
state:userState,
utcTime:BlogTime.GetDate(),
blogId:blogId};}
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(){
if(!BlogTime.DetectDesktop()){
BlogTime.SetActiveBlog(blogId,BlogTime.GetViewState(),BlogTime.BlogTimeAction.Land)
BlogTime.Send();
BlogTime.IntervalId=setInterval(BlogTime.Send,20000);}
else{
top.BlogTime.SetBlogViewType(blogId,BlogTime.GetViewState())}}
BlogTime.ShutDown=function(){
if(!isNaN(BlogTime.IntervalId)){
clearInterval(BlogTime.IntervalId);
BlogTime.Send();}}
BlogTime.PreparePing=function(){
if(BlogTime.ActiveBlogId>0){
var stat=BlogTime.CreateEventObject(BlogTime.ActiveBlogId,BlogTime.ActiveBlog.view,BlogTime.BlogTimeAction.Ping,BlogTime.GetUserState());
BlogTime.QueueEvent(stat);}}
BlogTime.Send=function(){
BlogTime.PreparePing();
var params={};
params['action']=BlogTime.DeQueueEvents();
if(!!window.Ajax){
new Ajax.Request("/BlogPoll.ashx",{
method:'post',
parameters:params});}
else if(!!window.ajaxGo){
ajaxGo('/BlogPoll.ashx?action='+encodeURIComponent(params['action']));}}
BlogTime.GetDate=function(){
var d=new Date();
var str='';
str=d.getUTCMonth()+'-'+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(){
if(window.viewType===0){
return BlogTime.BlogTimeView.Free;}
else if(window.viewType===1){
return BlogTime.BlogTimeView.Free;}
else if(window.viewType===2){
return BlogTime.BlogTimeView.Owner;}
else if(window.viewType===3){
return BlogTime.BlogTimeView.Author;}
else if(window.viewType===4){
return BlogTime.BlogTimeView.NonBillable;}
else{
return BlogTime.BlogTimeView.Unknown;}}
BlogTime.DetectDesktop=function(){
try{
return top!=window&&!!top.BlogTime&&!!top.WindowManager;}
catch(e){return false;}}
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}
BlogTime.BlogTimeUserState={
Active:1,
Idle:2}
