﻿
Type.registerNamespace("PlainJoeStudios.MediaSocial.WebServer.Controls");PlainJoeStudios.MediaSocial.WebServer.Controls.Timeline=function(parameters){this._ctor(parameters);};PlainJoeStudios.MediaSocial.WebServer.Controls.Timeline.prototype={_arr_fnListeners:null,_arr_oEvents:null,_iIdCounter:1,_ctor:function(){this._arr_fnListeners=[];this._arr_oEvents=[];},tick:function(oDateTimeNow){if(typeof(oDateTimeNow)==="number"){oDateTimeNow=new Date(oDateTimeNow);}
var arr_oEvents=this._arr_oEvents;var iNumEvents=arr_oEvents.length;var i=0;for(;i<iNumEvents;++i){var oEvent=arr_oEvents[i];if(oEvent.oDateTime<oDateTimeNow){this._fireEvent(oEvent);}
else{break;}}
if(i>0){arr_oEvents.splice(0,i);}},_fireEvent:function(oEvent){for(var k in this._arr_fnListeners){this._arr_fnListeners[k](oEvent.oUserData);}},addListener:function(fnListener){if(typeof(fnListener)!=="function"){return;}
this._arr_fnListeners.push(fnListener);},removeListener:function(fnListener){for(var i=0;i<this._arr_fnListeners.length;++i){if(this._arr_fnListeners[k]===fnListener){this._arr_fnListeners.splice(i,1);return;}}},addEvent:function(oDateTime,oUserData){if(typeof(oDateTime)==="number"){oDateTime=new Date(oDateTime);}
var iId=this._iIdCounter++;var o={iId:iId,oDateTime:oDateTime,oUserData:oUserData};this._arr_oEvents.push(o);this._arr_oEvents.sort(function(a,b){if(a.oDateTime>b.oDateTime){return 1;}if(a.oDateTime<b.oDateTime){return-1;}return 0;});return iId;},removeEvent:function(iId){for(var i=0;i<this._arr_fnListeners.length;++i){if(this._arr_fnListeners[k]===iId){this._arr_fnListeners.splice(i,1);return;}}},removeEventsAll:function(){this._arr_oEvents=[];},forEachEvent:function(fnCallback){for(var i=0;i<this._arr_oEvents.length;++i){if(fnCallback(this._arr_oEvents[i].oUserData)===false){return;}}}};