2009-11-04 09:24:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  StatusNet  -  a  distributed  open - source  microblogging  tool 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 16:10:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Copyright  ( C )  2009 - 2011 ,  StatusNet ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:24:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Add  a  notice  encoded  as  JSON  into  the  current  timeline 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  it  under  the  terms  of  the  GNU  Affero  General  Public  License  as  published  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  Free  Software  Foundation ,  either  version  3  of  the  License ,  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  GNU  Affero  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  Affero  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  along  with  this  program .   If  not ,  see  < http : //www.gnu.org/licenses/>.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ category   Plugin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package    StatusNet 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ author     Evan  Prodromou  < evan @ status . net > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ author     Sarven  Capadisli  < csarven @ status . net > 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 16:10:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ copyright  2009 - 2011  StatusNet ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:24:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ license    http : //www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ link       http : //status.net/
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  is  the  UI  portion  of  the  Realtime  plugin  base  class ,  handling 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  queueing  up  and  displaying  of  notices  that  have  been  received  through 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  other  code  in  one  of  the  subclassed  plugin  implementations  such  as 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Meteor  or  Orbited . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Notices  are  passed  in  as  JSON  objects  formatted  per  the  Twitter - compatible 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  API . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ todo  Currently  we  duplicate  a  lot  of  formatting  and  layout  code  from 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        the  PHP  side  of  StatusNet ,  which  makes  it  very  difficult  to  maintain 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        this  package .  Internationalization  as  well  as  newer  features  such 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        as  location  data ,  customized  source  links  for  OStatus  profiles , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        and  image  thumbnails  are  not  yet  supported  in  Realtime  yet  because 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *        they  have  not  been  implemented  here . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								RealtimeUpdate  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     _userid :  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 13:29:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _showurl :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 16:10:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _keepaliveurl :  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     _closeurl :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _updatecounter :  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:54:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _maxnotices :  50 , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 12:46:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _windowhasfocus :  true , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _documenttitle :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     _paused : false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     _queuedNotices : [ ] , 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Initialize  the  Realtime  plugin  UI  on  a  page  with  a  timeline  view . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  This  function  is  called  from  a  JS  fragment  inserted  by  the  PHP  side 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  of  the  Realtime  plugin ,  and  provides  us  with  base  information 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  needed  to  build  a  near - replica  of  StatusNet ' s  NoticeListItem  output . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Once  the  UI  is  initialized ,  a  plugin  subclass  will  need  to  actually 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  feed  data  into  the  RealtimeUpdate  object ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { int }  userid :  local  profile  ID  of  the  currently  logged - in  user 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 13:29:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      *  @ param  { String }  showurl :  URL  for  shownotice  action ,  used  when  fetching  formatting  notices . 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      *                             This  URL  contains  a  stub  value  of  0000000000  which  will  be  replaced  with  the  notice  ID . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 13:29:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     init :  function ( userid ,  showurl ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . _userid  =  userid ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 13:29:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . _showurl  =  showurl ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-27 14:06:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . _documenttitle  =  document . title ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-01 01:09:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( window ) . bind ( 'focus' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          RealtimeUpdate . _windowhasfocus  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // Clear the counter on the window title when we focus in.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          RealtimeUpdate . _updatecounter  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          RealtimeUpdate . removeWindowCounter ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 12:46:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( window ) . bind ( 'blur' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 12:21:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $ ( '#notices_primary .notice' ) . removeClass ( 'mark-top' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-27 14:06:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 12:21:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $ ( '#notices_primary .notice:first' ) . addClass ( 'mark-top' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-01 01:09:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          // While we're in the background, received messages will increment
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // a counter that we put on the window title. This will cause some
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // browsers to also flash or mark the tab or window title bar until
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          // you seek attention (eg Firefox 4 pinned app tabs).
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          RealtimeUpdate . _windowhasfocus  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-27 14:06:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Accept  a  notice  in  a  Twitter - API  JSON  style  and  either  show  it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  or  queue  it  up ,  depending  on  whether  the  realtime  display  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  active . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  The  meat  of  a  Realtime  plugin  subclass  is  to  provide  a  substrate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  transport  to  receive  data  and  shove  it  into  this  function .  : ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Note  that  the  JSON  data  is  extended  from  the  standard  API  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  with  additional  fields  added  by  RealtimePlugin ' s  PHP  code . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { Object }  data :  extended  JSON  API - formatted  notice 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     receive :  function ( data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( RealtimeUpdate . isNoticeVisible ( data . id ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              // Probably posted by the user in this window, and so already
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              // shown by the AJAX form handler. Ignore it.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( RealtimeUpdate . _paused  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              RealtimeUpdate . purgeLastNoticeItem ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:54:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              RealtimeUpdate . insertNoticeItem ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              RealtimeUpdate . _queuedNotices . push ( data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              RealtimeUpdate . updateQueuedCounter ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          RealtimeUpdate . updateWindowCounter ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:54:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Add  a  visible  representation  of  the  given  notice  at  the  top  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  the  current  timeline . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  If  the  notice  is  already  in  the  timeline ,  nothing  will  be  added . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { Object }  data :  extended  JSON  API - formatted  notice 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  while  core  UI  JS  code  is  used  to  activate  the  AJAX  UI  controls , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *         the  actual  production  of  HTML  ( in  makeNoticeItem  and  its  subs ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *         duplicates  core  code  without  plugin  hook  points  or  i18n  support . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     insertNoticeItem :  function ( data )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 19:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // Don't add it if it already exists
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( RealtimeUpdate . isNoticeVisible ( data . id ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 19:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . makeNoticeItem ( data ,  function ( noticeItem )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            // Check again in case it got shown while we were waiting for data...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( RealtimeUpdate . isNoticeVisible ( data . id ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            var  noticeItemID  =  $ ( noticeItem ) . attr ( 'id' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  list  =  $ ( "#notices_primary .notices:first" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  prepend  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            var  threaded  =  list . hasClass ( 'threaded-notices' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( threaded  &&  data . in _reply _to _status _id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                // aho!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                var  parent  =  $ ( '#notice-'  +  data . in _reply _to _status _id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( parent . length  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // @todo fetch the original, insert it, and finish the rest
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // Check the parent notice to make sure it's not a reply itself.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    // If so, use it's parent as the parent.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    var  parentList  =  parent . closest ( '.notices' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( parentList . hasClass ( 'threaded-replies' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        parent  =  parentList . closest ( '.notice' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    list  =  parent . find ( '.threaded-replies' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( list . length  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        list  =  $ ( '<ul class="notices threaded-replies xoxo"></ul>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        parent . append ( list ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        SN . U . NoticeInlineReplyPlaceholder ( parent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    prepend  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 15:45:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            var  newNotice  =  $ ( noticeItem ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( prepend )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                list . prepend ( newNotice ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 15:45:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                var  placeholder  =  list . find ( 'li.notice-reply-placeholder' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( placeholder . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    newNotice . insertBefore ( placeholder ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    newNotice . appendTo ( list ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 15:45:44 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            newNotice . css ( { display : "none" } ) . fadeIn ( 1000 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            SN . U . NoticeReplyTo ( $ ( '#' + noticeItemID ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            SN . U . NoticeWithAttachment ( $ ( '#' + noticeItemID ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:46:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Check  if  the  given  notice  is  visible  in  the  timeline  currently . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Used  to  avoid  duplicate  processing  of  notices  that  have  been 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  displayed  by  other  means . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { number }  id :  notice  ID  to  check 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ return  boolean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     isNoticeVisible :  function ( id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ( $ ( "#notice-" + id ) . length  >  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Trims  a  notice  off  the  end  of  the  timeline  if  we  have  more  than  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  maximum  number  of  notices  visible . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     purgeLastNoticeItem :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $ ( '#notices_primary .notice' ) . length  >  RealtimeUpdate . _maxnotices )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ ( "#notices_primary .notice:last" ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-04 09:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  If  the  window / tab  is  in  background ,  increment  the  counter  of  newly 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  received  notices  and  append  it  onto  the  window  title . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Has  no  effect  if  the  window  is  in  foreground . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     updateWindowCounter :  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          if  ( RealtimeUpdate . _windowhasfocus  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              RealtimeUpdate . _updatecounter  +=  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 13:34:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              document . title  =  '(' + RealtimeUpdate . _updatecounter + ') '  +  RealtimeUpdate . _documenttitle ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:53:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-01 01:09:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Clear  the  background  update  counter  from  the  window  title . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  could  interfere  with  anything  else  trying  similar  tricks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     removeWindowCounter :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          document . title  =  RealtimeUpdate . _documenttitle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      *  Builds  a  notice  HTML  block  from  JSON  API - style  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  loads  data  from  server ,  so  runs  async . 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { Object }  data :  extended  JSON  API - formatted  notice 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 13:29:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      *  @ param  { function }  callback :  function ( DOMNode )  to  receive  new  code 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 12:32:39 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     makeNoticeItem :  function ( data ,  callback ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-14 13:29:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								         var  url  =  RealtimeUpdate . _showurl . replace ( '0000000000' ,  data . id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         $ . get ( url ,  { ajax :  1 } ,  function ( data ,  textStatus ,  xhr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								             var  notice  =  $ ( 'li.notice:first' ,  data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								             if  ( notice . length )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                 var  node  =  document . _importNode ( notice [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                 callback ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								             } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Creates  a  favorite  button . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { number }  id :  notice  ID  to  work  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  session _key :  session  token  for  form  CSRF  protection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ return  { String }  HTML  fragment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  this  replicates  core  StatusNet  code ,  making  maintenance  harder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  sloppy  HTML  building  ( raw  concat  without  escaping ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  no  i18n  support 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     makeFavoriteForm :  function ( id ,  session _key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  ff ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          ff  =  "<form id=\"favor-" + id + "\" class=\"form_favor\" method=\"post\" action=\"" + RealtimeUpdate . _favorurl + "\">" + 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                "<fieldset>" + 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               "<legend>Favor this notice</legend>" + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               "<input name=\"token-" + id + "\" type=\"hidden\" id=\"token-" + id + "\" value=\"" + session _key + "\"/>" + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               "<input name=\"notice\" type=\"hidden\" id=\"notice-n" + id + "\" value=\"" + id + "\"/>" + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               "<input type=\"submit\" id=\"favor-submit-" + id + "\" name=\"favor-submit-" + id + "\" class=\"submit\" value=\"Favor\" title=\"Favor this notice\"/>" + 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                "</fieldset>" + 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               "</form>" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  ff ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Creates  a  reply  button . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { number }  id :  notice  ID  to  work  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  nickname :  nick  of  the  user  to  whom  we  are  replying 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ return  { String }  HTML  fragment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  this  replicates  core  StatusNet  code ,  making  maintenance  harder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  sloppy  HTML  building  ( raw  concat  without  escaping ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  no  i18n  support 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     makeReplyLink :  function ( id ,  nickname ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  rl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          rl  =  "<a class=\"notice_reply\" href=\"" + RealtimeUpdate . _replyurl + "?replyto=" + nickname + "\" title=\"Reply to this notice\">Reply <span class=\"notice_id\">" + id + "</span></a>" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  rl ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 19:44:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Creates  a  repeat  button . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { number }  id :  notice  ID  to  work  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  session _key :  session  token  for  form  CSRF  protection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ return  { String }  HTML  fragment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  this  replicates  core  StatusNet  code ,  making  maintenance  harder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  sloppy  HTML  building  ( raw  concat  without  escaping ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  no  i18n  support 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 19:44:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     makeRepeatForm :  function ( id ,  session _key ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  rf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          rf  =  "<form id=\"repeat-" + id + "\" class=\"form_repeat\" method=\"post\" action=\"" + RealtimeUpdate . _repeaturl + "\">" + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               "<fieldset>" + 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 10:47:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               "<legend>Repeat this notice?</legend>" + 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 19:44:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               "<input name=\"token-" + id + "\" type=\"hidden\" id=\"token-" + id + "\" value=\"" + session _key + "\"/>" + 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 10:47:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               "<input name=\"notice\" type=\"hidden\" id=\"notice-" + id + "\" value=\"" + id + "\"/>" + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               "<input type=\"submit\" id=\"repeat-submit-" + id + "\" name=\"repeat-submit-" + id + "\" class=\"submit\" value=\"Yes\" title=\"Repeat this notice\"/>" + 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 19:44:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               "</fieldset>" + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               "</form>" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return  rf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Creates  a  delete  button . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { number }  id :  notice  ID  to  create  a  delete  link  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ return  { String }  HTML  fragment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  this  replicates  core  StatusNet  code ,  making  maintenance  harder 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  sloppy  HTML  building  ( raw  concat  without  escaping ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  no  i18n  support 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     makeDeleteLink :  function ( id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          var  dl ,  delurl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          delurl  =  RealtimeUpdate . _deleteurl . replace ( "0000000000" ,  id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          dl  =  "<a class=\"notice_delete\" href=\"" + delurl + "\" title=\"Delete this notice\">Delete</a>" ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          return  dl ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 15:24:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Adds  a  control  widget  at  the  top  of  the  timeline  view ,  containing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  pause / play  and  popup  buttons . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  url :  full  URL  to  the  popup  window  variant  of  this  timeline  page 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  timeline :  string  key  for  the  timeline  ( eg  'public'  or  'evan-all' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  path :  URL  to  the  base  directory  containing  the  Realtime  plugin , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *                        used  to  fetch  resources  if  needed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ todo  timeline  and  path  parameters  are  unused  and  probably  should  be  removed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 16:10:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    initActions :  function ( url ,  timeline ,  path ,  keepaliveurl ,  closeurl ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#notices_primary' ) . prepend ( '<ul id="realtime_actions"><li id="realtime_playpause"></li><li id="realtime_timeline"></li></ul>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . _pluginPath  =  path ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 16:10:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . _keepaliveurl  =  keepaliveurl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . _closeurl  =  closeurl ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 // On unload, let the server know we're no longer listening
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         $ ( window ) . unload ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ . ajax ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                type :  'POST' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                url :  RealtimeUpdate . _closeurl } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									setInterval ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $ . ajax ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                type :  'POST' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                url :  RealtimeUpdate . _keepaliveurl } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-08-19 17:06:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 16:10:08 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ,  15  *  60  *  1000  ) ;  // every 15 min; timeout in 30 min
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . initPlayPause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . initAddPopup ( url ,  timeline ,  RealtimeUpdate . _pluginPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Initialize  the  state  of  the  play / pause  controls . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  If  the  browser  supports  the  localStorage  interface ,  we ' ll  attempt 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  to  retrieve  a  pause  state  from  there ;  otherwise  we  default  to  paused . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     initPlayPause :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 12:12:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( typeof ( localStorage )  ==  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            RealtimeUpdate . showPause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 11:44:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( localStorage . getItem ( 'RealtimeUpdate_paused' )  ===  'true' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                RealtimeUpdate . showPlay ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                RealtimeUpdate . showPause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Switch  the  realtime  UI  into  paused  state . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Uses  SN . msg  i18n  system  for  the  button  label  and  tooltip . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  State  will  be  saved  and  re - used  next  time  if  the  browser  supports 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  the  localStorage  interface  ( via  setPause ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     showPause :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 11:44:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . setPause ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . showQueuedNotices ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-06 22:07:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . addNoticesHover ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_playpause' ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 11:39:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_actions' ) . prepend ( '<li id="realtime_playpause"><button id="realtime_pause" class="pause"></button></li>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:12:58 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_pause' ) . text ( SN . msg ( 'realtime_pause' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            . attr ( 'title' ,  SN . msg ( 'realtime_pause_tooltip' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 11:39:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            . bind ( 'click' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            RealtimeUpdate . removeNoticesHover ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            RealtimeUpdate . showPlay ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Switch  the  realtime  UI  into  play  state . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Uses  SN . msg  i18n  system  for  the  button  label  and  tooltip . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  State  will  be  saved  and  re - used  next  time  if  the  browser  supports 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  the  localStorage  interface  ( via  setPause ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     showPlay :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 11:44:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        RealtimeUpdate . setPause ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_playpause' ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 11:39:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_actions' ) . prepend ( '<li id="realtime_playpause"><span id="queued_counter"></span> <button id="realtime_play" class="play"></button></li>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:12:58 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_play' ) . text ( SN . msg ( 'realtime_play' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           . attr ( 'title' ,  SN . msg ( 'realtime_play_tooltip' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 11:39:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           . bind ( 'click' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            RealtimeUpdate . showPause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Update  the  internal  pause / play  state . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Do  not  call  directly ;  use  showPause ( )  and  showPlay ( ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  State  will  be  saved  and  re - used  next  time  if  the  browser  supports 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  the  localStorage  interface . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { boolean }  state :  true  =  paused ,  false  =  not  paused 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 11:44:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     setPause :  function ( state ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . _paused  =  state ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( typeof ( localStorage )  !=  'undefined' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            localStorage . setItem ( 'RealtimeUpdate_paused' ,  RealtimeUpdate . _paused ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Go  through  notices  we  have  previously  received  while  paused , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  dumping  them  into  the  timeline  view . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  long  timelines  are  not  trimmed  here  as  they  are  for  things  received  while  not  paused 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     showQueuedNotices :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ . each ( RealtimeUpdate . _queuedNotices ,  function ( i ,  n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            RealtimeUpdate . insertNoticeItem ( n ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . _queuedNotices  =  [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        RealtimeUpdate . removeQueuedCounter ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Update  the  Realtime  widget  control ' s  counter  of  queued  notices  to  show 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  the  current  count .  This  will  be  called  after  receiving  and  queueing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  a  notice  while  paused . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     updateQueuedCounter :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 19:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#realtime_playpause #queued_counter' ) . html ( '(' + RealtimeUpdate . _queuedNotices . length + ')' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Clear  the  Realtime  widget  control ' s  counter  of  queued  notices . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 17:23:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     removeQueuedCounter :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ ( '#realtime_playpause #queued_counter' ) . empty ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Set  up  event  handlers  on  the  timeline  view  to  automatically  pause 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  when  the  mouse  is  over  the  timeline ,  as  this  indicates  the  user ' s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  desire  to  interact  with  the  UI .  ( Which  is  hard  to  do  when  it ' s  moving ! ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     addNoticesHover :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $ ( '#notices_primary .notices' ) . hover ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( RealtimeUpdate . _paused  ===  false )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    RealtimeUpdate . showPlay ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( RealtimeUpdate . _paused  ===  true )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    RealtimeUpdate . showPause ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Tear  down  event  handlers  on  the  timeline  view  to  automatically  pause 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  when  the  mouse  is  over  the  timeline . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  this  appears  to  remove  * ALL *  event  handlers  from  the  timeline , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *         which  assumes  that  nobody  else  is  adding  any  event  handlers . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *         Sloppy  --  we  should  only  remove  the  ones  we  add . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     removeNoticesHover :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-06 22:07:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $ ( '#notices_primary .notices' ) . unbind ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 23:12:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  UI  initialization ,  to  be  called  from  Realtime  plugin  code  on  regular 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  timeline  pages . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Adds  a  button  to  the  control  widget  at  the  top  of  the  timeline  view , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  allowing  creation  of  a  popup  window  with  a  more  compact  real - time 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  view  of  the  current  timeline . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  url :  full  URL  to  the  popup  window  variant  of  this  timeline  page 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  timeline :  string  key  for  the  timeline  ( eg  'public'  or  'evan-all' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ param  { String }  path :  URL  to  the  base  directory  containing  the  Realtime  plugin , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *                        used  to  fetch  resources  if  needed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ todo  timeline  and  path  parameters  are  unused  and  probably  should  be  removed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 15:41:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     initAddPopup :  function ( url ,  timeline ,  path ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 15:24:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 11:39:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								         $ ( '#realtime_timeline' ) . append ( '<button id="realtime_popup"></button>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:12:58 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								         $ ( '#realtime_popup' ) . text ( SN . msg ( 'realtime_popup' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                             . attr ( 'title' ,  SN . msg ( 'realtime_popup_tooltip' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 11:39:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                             . bind ( 'click' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                window . open ( url , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:43:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         '' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-25 21:32:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         'toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-27 11:49:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 21:58:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								             return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 22:02:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 16:35:47 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  UI  initialization ,  to  be  called  from  Realtime  plugin  code  on  popup 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  compact  timeline  pages . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  Sets  up  links  in  notices  to  open  in  a  new  window . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ fixme  fails  to  do  the  same  for  UI  links  like  context  view  which  will 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *         look  bad  in  the  tiny  chromeless  window . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *  @ access  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 22:02:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     initPopupWindow :  function ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:42:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								         $ ( '.notices .entry-title a, .notices .entry-content a' ) . bind ( 'click' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            window . open ( this . href ,  '' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 15:47:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-18 10:42:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-20 04:09:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         $ ( '#showstream .entity_profile' ) . css ( { 'width' : '69%' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-23 17:07:20 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2009-09-21 19:17:37 +00:00