2008-08-26 21:38:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/ * 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 18:40:12 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  StatusNet  -  a  distributed  open - source  microblogging  tool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Copyright  ( C )  2008 ,  StatusNet ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 21:38:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  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/>.
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:49:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ category   UI  interaction 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ package    StatusNet 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ author     Sarven  Capadisli  < csarven @ status . net > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ author     Evan  Prodromou  < evan @ status . net > 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  @ author     Brion  Vibber  < brion @ status . net > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ copyright  2009 , 2010  StatusNet ,  Inc . 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:49:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  @ license    http : //www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ link       http : //status.net/
 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-26 21:38:35 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 12:40:08 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								var  SN  =  {  // StatusNet
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    C :  {  // Config
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:59:17 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        I :  {  // Init
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            CounterBlackout :  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            MaxLength :  140 , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            PatternUsername :  /^[0-9a-zA-Z\-_.]*$/ , 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 12:18:46 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            HTTP20x30x :  [ 200 ,  201 ,  202 ,  203 ,  204 ,  205 ,  206 ,  300 ,  301 ,  302 ,  303 ,  304 ,  305 ,  306 ,  307 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            NoticeFormMaster :  null  // to be cloned from the one at top
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 16:21:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  are  these  worth  the  trouble ?  They  seem  to  mostly  just  duplicate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  themselves  while  slightly  obscuring  the  actual  selector ,  so  it ' s  hard 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  to  pop  over  to  the  HTML  and  find  something . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  In  theory ,  minification  could  reduce  them  to  shorter  variable  names , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  but  at  present  that  doesn ' t  happen  with  yui - compressor . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 12:40:08 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        S :  {  // Selector
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            Disabled :  'disabled' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            Warning :  'warning' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            Error :  'error' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 14:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Success :  'success' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Processing :  'processing' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:01:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            CommandResult :  'command_result' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            FormNotice :  'form_notice' , 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-03 00:33:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            NoticeDataGeo :  'notice_data-geo' , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 19:15:24 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            NoticeDataGeoCookie :  'NoticeDataGeo' , 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:35:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            NoticeDataGeoSelected :  'notice_data-geo_selected' , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            StatusNetInstance :  'StatusNetInstance' 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-12 12:10:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:05:16 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Map  of  localized  message  strings  exported  to  script  from  the  PHP 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  side  via  Action : : getScriptMessages ( ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Retrieve  them  via  SN . msg ( ) ;  this  array  is  an  implementation  detail . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:05:16 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    messages :  { } , 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  Grabs  a  localized  string  that ' s  been  previously  exported  to  us 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  from  server - side  code  via  Action : : getScriptMessages ( ) . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ example  alert ( SN . msg ( 'coolplugin-failed' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ param  { String }  key :  string  key  name  to  pull  from  message  index 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *  @ return  matching  localized  message  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    msg :  function  ( key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( SN . messages [ key ]  ===  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:05:16 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  '['  +  key  +  ']' ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 12:40:08 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return  SN . messages [ key ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 12:40:08 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    U :  {  // Utils
 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Sets  up  event  handlers  on  the  new  notice  form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form :  jQuery  object  whose  first  matching  element  is  the  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        FormNoticeEnhancements :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:16:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( jQuery . data ( form [ 0 ] ,  'ElementData' )  ===  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  MaxLength  =  form . find ( '.count' ) . text ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( MaxLength  ===  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    MaxLength  =  SN . C . I . MaxLength ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:16:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                jQuery . data ( form [ 0 ] ,  'ElementData' ,  { MaxLength :  MaxLength } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:16:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . Counter ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  NDT  =  form . find ( '.notice_data-text:first' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:16:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                NDT . on ( 'keyup' ,  function  ( e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . U . Counter ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  delayedUpdate  =  function  ( e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-15 14:57:09 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // Cut and paste events fire *before* the operation,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // so we need to trigger an update in a little bit.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // This would be so much easier if the 'change' event
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // actually fired every time the value changed. :P
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    window . setTimeout ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-15 14:57:09 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . U . Counter ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } ,  50 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Note there's still no event for mouse-triggered 'delete'.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                NDT . on ( 'cut' ,  delayedUpdate ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    . on ( 'paste' ,  delayedUpdate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:15:17 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '.count' ) . text ( jQuery . data ( form [ 0 ] ,  'ElementData' ) . MaxLength ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:52:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  To  be  called  from  event  handlers  on  the  notice  import  form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Triggers  an  update  of  the  remaining - characters  counter . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Additional  counter  updates  will  be  suppressed  during  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  next  half - second  to  avoid  flooding  the  layout  engine  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  updates ,  followed  by  another  automatic  check . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  The  maximum  length  is  pulled  from  data  established  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  FormNoticeEnhancements . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form :  jQuery  object  whose  first  element  is  the  notice  posting  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Counter :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SN . C . I . FormNoticeCurrent  =  form ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:16:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  MaxLength  =  jQuery . data ( form [ 0 ] ,  'ElementData' ) . MaxLength ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( MaxLength  <=  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-08-12 12:47:07 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  remaining  =  MaxLength  -  SN . U . CharacterCount ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:15:17 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  counter  =  form . find ( '.count' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( remaining . toString ( )  !=  counter . text ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( ! SN . C . I . CounterBlackout  ||  remaining  ===  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( counter . text ( )  !=  String ( remaining ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        counter . text ( remaining ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( remaining  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . addClass ( SN . C . S . Warning ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . removeClass ( SN . C . S . Warning ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // Skip updates for the next 500ms.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // On slower hardware, updating on every keypress is unpleasant.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( ! SN . C . I . CounterBlackout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        SN . C . I . CounterBlackout  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . C . I . FormNoticeCurrent  =  form ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        window . setTimeout ( "SN.U.ClearCounterBlackout(SN.C.I.FormNoticeCurrent);" ,  500 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Pull  the  count  of  characters  in  the  current  edit  field . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Plugins  replacing  the  edit  control  may  need  to  override  this . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form :  jQuery  object  whose  first  element  is  the  notice  posting  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ return  number  of  chars 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        CharacterCount :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-09 16:55:52 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  form . find ( '.notice_data-text:first' ) . val ( ) . length ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-12 12:47:07 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Called  internally  after  the  counter  update  blackout  period  expires ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  runs  another  update  to  make  sure  we  didn ' t  miss  anything . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form :  jQuery  object  whose  first  element  is  the  notice  posting  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ClearCounterBlackout :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Allow keyup events to poke the counter again
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            SN . C . I . CounterBlackout  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // Check if the string changed since we last looked
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SN . U . Counter ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 15:43:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Tickets #2112, 2333, 1677, 2362, 2831: fix AJAX form posting on SSL page views with ssl=sometimes
These have been failing for ages due to our outputting full URLs all the time, usually with the default protocol instead of the current one.
Forms would get output with an http: URL in their contents even when destined for an HTTPS page; while a regular form submission would just warn you about the secure->insecure transition, the AJAX code was failing outright and then not bothering to fall back to the regular submission.
I found it was easy to detect the mismatch -- just check the target URL and the current page's protocol before submitting.
Since failing over to non-AJAX submission to the HTTP URL throws up a warning, I figured it'd be easier (and much nicer for users) to just let it rewrite the target URL to use the secure protocol & hostname before doing the final submit.
This check is now automatically done for anything that calls SN.U.FormXHR() -- making most of our buttons on notices and profile/group headers work naturally.
The notice form setup code also runs the rewrite, which gets posting working without an error dialog.
I'd prefer in the long run to simply use relative URLs in most of our output; it avoids this problem completely and lets users simply stay in the current protocol mode instead of being constantly switched back to HTTP when clicking around.
(Note that folks using the SSLAlways extension to Firefox, for instance, will have their browsers constantly sending them back to HTTP pages, mimicking the desired user experience even though we haven't fully implemented it. These folks are likely going to be a lot happier with forms that submit correctly to go along with it!)
											 
										 
										
											2010-12-16 17:02:02 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Helper  function  to  rewrite  default  HTTP  form  action  URLs  to  HTTPS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  so  we  can  actually  fetch  them  when  on  an  SSL  page  in  ssl = sometimes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  It  would  be  better  to  output  URLs  that  didn ' t  hardcode  protocol 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  and  hostname  in  the  first  place ... 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        RewriteAjaxAction :  function  ( url )  { 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Tickets #2112, 2333, 1677, 2362, 2831: fix AJAX form posting on SSL page views with ssl=sometimes
These have been failing for ages due to our outputting full URLs all the time, usually with the default protocol instead of the current one.
Forms would get output with an http: URL in their contents even when destined for an HTTPS page; while a regular form submission would just warn you about the secure->insecure transition, the AJAX code was failing outright and then not bothering to fall back to the regular submission.
I found it was easy to detect the mismatch -- just check the target URL and the current page's protocol before submitting.
Since failing over to non-AJAX submission to the HTTP URL throws up a warning, I figured it'd be easier (and much nicer for users) to just let it rewrite the target URL to use the secure protocol & hostname before doing the final submit.
This check is now automatically done for anything that calls SN.U.FormXHR() -- making most of our buttons on notices and profile/group headers work naturally.
The notice form setup code also runs the rewrite, which gets posting working without an error dialog.
I'd prefer in the long run to simply use relative URLs in most of our output; it avoids this problem completely and lets users simply stay in the current protocol mode instead of being constantly switched back to HTTP when clicking around.
(Note that folks using the SSLAlways extension to Firefox, for instance, will have their browsers constantly sending them back to HTTP pages, mimicking the desired user experience even though we haven't fully implemented it. These folks are likely going to be a lot happier with forms that submit correctly to go along with it!)
											 
										 
										
											2010-12-16 17:02:02 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Quick hack: rewrite AJAX submits to HTTPS if they'd fail otherwise.
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( document . location . protocol  ===  'https:'  &&  url . substr ( 0 ,  5 )  ===  'http:' )  { 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Tickets #2112, 2333, 1677, 2362, 2831: fix AJAX form posting on SSL page views with ssl=sometimes
These have been failing for ages due to our outputting full URLs all the time, usually with the default protocol instead of the current one.
Forms would get output with an http: URL in their contents even when destined for an HTTPS page; while a regular form submission would just warn you about the secure->insecure transition, the AJAX code was failing outright and then not bothering to fall back to the regular submission.
I found it was easy to detect the mismatch -- just check the target URL and the current page's protocol before submitting.
Since failing over to non-AJAX submission to the HTTP URL throws up a warning, I figured it'd be easier (and much nicer for users) to just let it rewrite the target URL to use the secure protocol & hostname before doing the final submit.
This check is now automatically done for anything that calls SN.U.FormXHR() -- making most of our buttons on notices and profile/group headers work naturally.
The notice form setup code also runs the rewrite, which gets posting working without an error dialog.
I'd prefer in the long run to simply use relative URLs in most of our output; it avoids this problem completely and lets users simply stay in the current protocol mode instead of being constantly switched back to HTTP when clicking around.
(Note that folks using the SSLAlways extension to Firefox, for instance, will have their browsers constantly sending them back to HTTP pages, mimicking the desired user experience even though we haven't fully implemented it. These folks are likely going to be a lot happier with forms that submit correctly to go along with it!)
											 
										 
										
											2010-12-16 17:02:02 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  url . replace ( /^http:\/\/[^:\/]+/ ,  'https://'  +  document . location . host ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  url ; 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Tickets #2112, 2333, 1677, 2362, 2831: fix AJAX form posting on SSL page views with ssl=sometimes
These have been failing for ages due to our outputting full URLs all the time, usually with the default protocol instead of the current one.
Forms would get output with an http: URL in their contents even when destined for an HTTPS page; while a regular form submission would just warn you about the secure->insecure transition, the AJAX code was failing outright and then not bothering to fall back to the regular submission.
I found it was easy to detect the mismatch -- just check the target URL and the current page's protocol before submitting.
Since failing over to non-AJAX submission to the HTTP URL throws up a warning, I figured it'd be easier (and much nicer for users) to just let it rewrite the target URL to use the secure protocol & hostname before doing the final submit.
This check is now automatically done for anything that calls SN.U.FormXHR() -- making most of our buttons on notices and profile/group headers work naturally.
The notice form setup code also runs the rewrite, which gets posting working without an error dialog.
I'd prefer in the long run to simply use relative URLs in most of our output; it avoids this problem completely and lets users simply stay in the current protocol mode instead of being constantly switched back to HTTP when clicking around.
(Note that folks using the SSLAlways extension to Firefox, for instance, will have their browsers constantly sending them back to HTTP pages, mimicking the desired user experience even though we haven't fully implemented it. These folks are likely going to be a lot happier with forms that submit correctly to go along with it!)
											 
										 
										
											2010-12-16 17:02:02 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Grabs  form  data  and  submits  it  asynchronously ,  with  'ajax=1' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  parameter  added  to  the  rest . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  If  a  successful  response  includes  another  form ,  that  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  will  be  extracted  and  copied  in ,  replacing  the  original  form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  If  there ' s  no  form ,  the  first  paragraph  will  be  used . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 13:58:28 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  This  will  automatically  be  applied  on  the  'submit'  event  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  any  form  with  the  'ajax'  class . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ fixme  can  sometimes  explode  confusingly  if  returnd  data  is  bogus 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  error  handling  is  pretty  vague 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  can ' t  submit  file  uploads 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form :  jQuery  object  whose  first  element  is  a  form 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-17 18:36:59 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  function  onSuccess :  something  extra  to  do  on  success 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ access  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        FormXHR :  function  ( form ,  onSuccess )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ . ajax ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                type :  'POST' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dataType :  'xml' , 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Tickets #2112, 2333, 1677, 2362, 2831: fix AJAX form posting on SSL page views with ssl=sometimes
These have been failing for ages due to our outputting full URLs all the time, usually with the default protocol instead of the current one.
Forms would get output with an http: URL in their contents even when destined for an HTTPS page; while a regular form submission would just warn you about the secure->insecure transition, the AJAX code was failing outright and then not bothering to fall back to the regular submission.
I found it was easy to detect the mismatch -- just check the target URL and the current page's protocol before submitting.
Since failing over to non-AJAX submission to the HTTP URL throws up a warning, I figured it'd be easier (and much nicer for users) to just let it rewrite the target URL to use the secure protocol & hostname before doing the final submit.
This check is now automatically done for anything that calls SN.U.FormXHR() -- making most of our buttons on notices and profile/group headers work naturally.
The notice form setup code also runs the rewrite, which gets posting working without an error dialog.
I'd prefer in the long run to simply use relative URLs in most of our output; it avoids this problem completely and lets users simply stay in the current protocol mode instead of being constantly switched back to HTTP when clicking around.
(Note that folks using the SSLAlways extension to Firefox, for instance, will have their browsers constantly sending them back to HTTP pages, mimicking the desired user experience even though we haven't fully implemented it. These folks are likely going to be a lot happier with forms that submit correctly to go along with it!)
											 
										 
										
											2010-12-16 17:02:02 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                url :  SN . U . RewriteAjaxAction ( form . attr ( 'action' ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                data :  form . serialize ( )  +  '&ajax=1' , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                beforeSend :  function  ( xhr )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . addClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . addClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                error :  function  ( xhr ,  textStatus ,  errorThrown )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-16 16:10:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // If the server end reported an error from StatusNet,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // find it -- otherwise we'll see what was reported
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // from the browser.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  errorReported  =  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( xhr . responseXML )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        errorReported  =  $ ( '#error' ,  xhr . responseXML ) . text ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    window . alert ( errorReported  ||  errorThrown  ||  textStatus ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 02:22:47 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-16 16:10:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // Restore the form to original state.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // Hopefully. :D
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . removeClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . removeClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                success :  function  ( data ,  textStatus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( $ ( 'form' ,  data ) [ 0 ]  !==  undefined )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        var  form _new  =  document . _importNode ( $ ( 'form' ,  data ) [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . replaceWith ( form _new ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-17 18:36:59 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        if  ( onSuccess )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            onSuccess ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  if  ( $ ( 'p' ,  data ) [ 0 ]  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . replaceWith ( document . _importNode ( $ ( 'p' ,  data ) [ 0 ] ,  true ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-17 18:36:59 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        if  ( onSuccess )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            onSuccess ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        window . alert ( 'Unknown error.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-16 16:10:43 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Sets  up  event  handlers  for  special - cased  async  submission  of  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  notice - posting  form ,  including  some  pre - post  validation . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Unlike  FormXHR ( )  this  does  NOT  submit  the  form  immediately ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  It  sets  up  event  handlers  so  that  any  method  of  submitting  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  form  ( click  on  submit  button ,  enter ,  submit ( )  etc )  will  trigger 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  it  properly . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Also  unlike  FormXHR ( ) ,  this  system  will  use  a  hidden  iframe 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  automatically  to  handle  file  uploads  via  < input  type = "file" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  controls . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  tl ; dr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  vast  swaths  of  duplicate  code  and  really  long  variable  names  clutter  this  function  up  real  bad 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  error  handling  is  unreliable 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  cookieValue  is  a  global  variable ,  but  probably  shouldn ' t  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  saving  the  location  cache  cookies  should  be  split  out 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  some  error  messages  are  hardcoded  english :  needs  i18n 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  special - case  for  bookmarklet  is  confusing  and  uses  a  global  var  "self" .  Is  this  ok ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form :  jQuery  object  whose  first  element  is  a  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ access  public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        FormNoticeXHR :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:28:31 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SN . C . I . NoticeDataGeo  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:01:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            form . append ( '<input type="hidden" name="ajax" value="1"/>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Tickets #2112, 2333, 1677, 2362, 2831: fix AJAX form posting on SSL page views with ssl=sometimes
These have been failing for ages due to our outputting full URLs all the time, usually with the default protocol instead of the current one.
Forms would get output with an http: URL in their contents even when destined for an HTTPS page; while a regular form submission would just warn you about the secure->insecure transition, the AJAX code was failing outright and then not bothering to fall back to the regular submission.
I found it was easy to detect the mismatch -- just check the target URL and the current page's protocol before submitting.
Since failing over to non-AJAX submission to the HTTP URL throws up a warning, I figured it'd be easier (and much nicer for users) to just let it rewrite the target URL to use the secure protocol & hostname before doing the final submit.
This check is now automatically done for anything that calls SN.U.FormXHR() -- making most of our buttons on notices and profile/group headers work naturally.
The notice form setup code also runs the rewrite, which gets posting working without an error dialog.
I'd prefer in the long run to simply use relative URLs in most of our output; it avoids this problem completely and lets users simply stay in the current protocol mode instead of being constantly switched back to HTTP when clicking around.
(Note that folks using the SSLAlways extension to Firefox, for instance, will have their browsers constantly sending them back to HTTP pages, mimicking the desired user experience even though we haven't fully implemented it. These folks are likely going to be a lot happier with forms that submit correctly to go along with it!)
											 
										 
										
											2010-12-16 17:02:02 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Make sure we don't have a mixed HTTP/HTTPS submission...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            form . attr ( 'action' ,  SN . U . RewriteAjaxAction ( form . attr ( 'action' ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  Show  a  response  feedback  bit  under  the  new - notice  dialog . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  @ param  { String }  cls :  CSS  class  name  to  use  ( 'error'  or  'success' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  @ param  { String }  text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  showFeedback  =  function  ( cls ,  text )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . append ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( '<p class="form_response"></p>' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . addClass ( cls ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . text ( text ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  Hide  the  previous  response  feedback ,  if  any . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  removeFeedback  =  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '.form_response' ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:01:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            form . ajaxForm ( { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 16:21:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                dataType :  'xml' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 21:11:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                timeout :  '60000' , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                beforeSend :  function  ( formData )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-09 16:55:52 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( form . find ( '.notice_data-text:first' ) . val ( )  ==  '' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:01:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . addClass ( SN . C . S . Warning ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . addClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:48:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . addClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-05 01:15:08 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . U . normalizeGeoData ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-05 01:15:08 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                error :  function  ( xhr ,  textStatus ,  errorThrown )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . removeClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:48:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . removeClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    removeFeedback ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( textStatus  ==  'timeout' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        // @fixme i18n
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        showFeedback ( 'error' ,  'Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-17 14:24:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  response  =  SN . U . GetResponseXML ( xhr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        if  ( $ ( '.'  +  SN . C . S . Error ,  response ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            form . append ( document . _importNode ( $ ( '.'  +  SN . C . S . Error ,  response ) [ 0 ] ,  true ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 09:55:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            if  ( parseInt ( xhr . status )  ===  0  ||  jQuery . inArray ( parseInt ( xhr . status ) ,  SN . C . I . HTTP20x30x )  >=  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-31 10:57:20 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    . resetForm ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    . find ( '.attach-status' ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:03:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                SN . U . FormNoticeEnhancements ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                // @fixme i18n
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                showFeedback ( 'error' ,  '(Sorry! We had trouble sending your notice ('  +  xhr . status  +  ' '  +  xhr . statusText  +  '). Please report the problem to the site administrator if this happens again.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                success :  function  ( data ,  textStatus )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    removeFeedback ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  errorResult  =  $ ( '#'  +  SN . C . S . Error ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( errorResult . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        showFeedback ( 'error' ,  errorResult . text ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if  ( $ ( 'body' ) [ 0 ] . id  ==  'bookmarklet' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            // @fixme self is not referenced anywhere?
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            self . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:01:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  commandResult  =  $ ( '#'  +  SN . C . S . CommandResult ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        if  ( commandResult . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            showFeedback ( 'success' ,  commandResult . text ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:27:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            // New notice post was successful. If on our timeline, show it!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            var  notice  =  document . _importNode ( $ ( 'li' ,  data ) [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 15:24:44 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            var  notices  =  $ ( '#notices_primary .notices:first' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:58:30 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            var  replyItem  =  form . closest ( 'li.notice-reply' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if  ( replyItem . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                // If this is an inline reply, remove the form...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                var  list  =  form . closest ( '.threaded-replies' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                var  placeholder  =  list . find ( '.notice-reply-placeholder' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                replyItem . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:58:30 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                var  id  =  $ ( notice ) . attr ( 'id' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                if  ( $ ( '#'  +  id ) . length  ==  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    $ ( notice ) . insertBefore ( placeholder ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                }  // else Realtime came through before us...
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                // ...and show the placeholder form.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                placeholder . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:58:30 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            }  else  if  ( notices . length  >  0  &&  SN . U . belongsOnTimeline ( notice ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                // Not a reply. If on our timeline, show it at the top!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                if  ( $ ( '#'  +  notice . id ) . length  ===  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    var  notice _irt _value  =  form . find ( '[name=inreplyto]' ) . val ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    var  notice _irt  =  '#notices_primary #notice-'  +  notice _irt _value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    if  ( $ ( 'body' ) [ 0 ] . id  ==  'conversation' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        if  ( notice _irt _value . length  >  0  &&  $ ( notice _irt  +  ' .notices' ) . length  <  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-02 23:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                            $ ( notice _irt ) . append ( '<ul class="notices"></ul>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        $ ( $ ( notice _irt  +  ' .notices' ) [ 0 ] ) . append ( notice ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-02 23:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        notices . prepend ( notice ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    $ ( '#'  +  notice . id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        . css ( { display :  'none' } ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        . fadeIn ( 2500 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    SN . U . NoticeWithAttachment ( $ ( '#'  +  notice . id ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:54:07 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    SN . U . switchInputFormTab ( "placeholder" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-02 23:25:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:58:30 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:27:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                // Not on a timeline that this belongs on?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                // Just show a success message.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:58:30 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                // @fixme inline
 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 16:18:49 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                showFeedback ( 'success' ,  $ ( 'title' ,  data ) . text ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-02 23:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:03:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . resetForm ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . find ( '[name=inreplyto]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        form . find ( '.attach-status' ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:03:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . U . FormNoticeEnhancements ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                complete :  function  ( xhr ,  textStatus )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . removeClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:48:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  false ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 15:19:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . removeClass ( SN . C . S . Disabled ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-05 01:15:08 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:39:37 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=lat]' ) . val ( SN . C . I . NoticeDataGeo . NLat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=lon]' ) . val ( SN . C . I . NoticeDataGeo . NLon ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=location_ns]' ) . val ( SN . C . I . NoticeDataGeo . NLNS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=location_id]' ) . val ( SN . C . I . NoticeDataGeo . NLID ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  SN . C . I . NoticeDataGeo . NDG ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:56:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        FormProfileSearchXHR :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ . ajax ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                type :  'POST' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dataType :  'xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                url :  form . attr ( 'action' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                data :  form . serialize ( )  +  '&ajax=1' , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                beforeSend :  function  ( xhr )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . addClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . addClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                error :  function  ( xhr ,  textStatus ,  errorThrown )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    window . alert ( errorThrown  ||  textStatus ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                success :  function  ( data ,  textStatus )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  results _placeholder  =  $ ( '#profile_search_results' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( $ ( 'ul' ,  data ) [ 0 ]  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  list  =  document . _importNode ( $ ( 'ul' ,  data ) [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        results _placeholder . replaceWith ( list ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  _error  =  $ ( '<li/>' ) . append ( document . _importNode ( $ ( 'p' ,  data ) [ 0 ] ,  true ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        results _placeholder . html ( _error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . removeClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . find ( '.submit' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . removeClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        FormPeopletagsXHR :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ . ajax ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                type :  'POST' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                dataType :  'xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                url :  form . attr ( 'action' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                data :  form . serialize ( )  +  '&ajax=1' , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                beforeSend :  function  ( xhr )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '.submit' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . addClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . addClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . prop ( SN . C . S . Disabled ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                error :  function  ( xhr ,  textStatus ,  errorThrown )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    window . alert ( errorThrown  ||  textStatus ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                success :  function  ( data ,  textStatus )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  results _placeholder  =  form . parents ( '.entity_tags' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( $ ( '.entity_tags' ,  data ) [ 0 ]  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  tags  =  document . _importNode ( $ ( '.entity_tags' ,  data ) [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        $ ( tags ) . find ( '.editable' ) . append ( $ ( '<button class="peopletags_edit_button"/>' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        results _placeholder . replaceWith ( tags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        results _placeholder . find ( 'p' ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        results _placeholder . append ( document . _importNode ( $ ( 'p' ,  data ) [ 0 ] ,  true ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . removeClass ( SN . C . S . Processing ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . find ( '.submit' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                . removeClass ( SN . C . S . Disabled ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                . prop ( SN . C . S . Disabled ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        normalizeGeoData :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SN . C . I . NoticeDataGeo . NLat  =  form . find ( '[name=lat]' ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            SN . C . I . NoticeDataGeo . NLon  =  form . find ( '[name=lon]' ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            SN . C . I . NoticeDataGeo . NLNS  =  form . find ( '[name=location_ns]' ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            SN . C . I . NoticeDataGeo . NLID  =  form . find ( '[name=location_id]' ) . val ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SN . C . I . NoticeDataGeo . NDG  =  form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ) ;  // @fixme (does this still need to be fixed somehow?)
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  cookieValue  =  $ . cookie ( SN . C . S . NoticeDataGeoCookie ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-14 13:38:50 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( cookieValue  !==  undefined  &&  cookieValue  !=  'disabled' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                cookieValue  =  JSON . parse ( cookieValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . C . I . NoticeDataGeo . NLat  =  form . find ( '[name=lat]' ) . val ( cookieValue . NLat ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . C . I . NoticeDataGeo . NLon  =  form . find ( '[name=lon]' ) . val ( cookieValue . NLon ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( cookieValue . NLNS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    SN . C . I . NoticeDataGeo . NLNS  =  form . find ( '[name=location_ns]' ) . val ( cookieValue . NLNS ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    SN . C . I . NoticeDataGeo . NLID  =  form . find ( '[name=location_id]' ) . val ( cookieValue . NLID ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=location_ns]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=location_id]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( cookieValue  ==  'disabled' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . C . I . NoticeDataGeo . NDG  =  form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  false ) . prop ( 'checked' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . C . I . NoticeDataGeo . NDG  =  form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  true ) . prop ( 'checked' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Fetch  an  XML  DOM  from  an  XHR ' s  response  data . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Works  around  unavailable  responseXML  when  document . domain 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  has  been  modified  by  Meteor  or  other  tools ,  in  some  but  not 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  all  browsers . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { XMLHTTPRequest }  xhr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ return  DOMDocument 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        GetResponseXML :  function  ( xhr )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-17 14:24:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  xhr . responseXML ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  catch  ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  ( new  DOMParser ( ) ) . parseFromString ( xhr . responseText ,  "text/xml" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Sets  up  event  handlers  on  all  visible  notice ' s  reply  buttons  to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  tweak  the  new - notice  form  with  needed  variables  and  focus  it 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  when  pushed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  ( This  replaces  the  default  reply  button  behavior  to  submit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  directly  to  a  form  which  comes  back  with  a  specialized  page 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  with  the  form  data  prefilled . ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeReply :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( document ) . on ( 'click' ,  '#content .notice_reply' ,  function  ( e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:03:15 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                e . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  notice  =  $ ( this ) . closest ( 'li.notice' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-16 16:23:31 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeInlineReplyTrigger ( notice ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:03:15 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-28 15:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:03:15 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  Stub  --  kept  for  compat  with  plugins  for  now . 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ access  private 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeReplyTo :  function  ( notice )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 13:56:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 13:49:13 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  Open  up  a  notice ' s  inline  reply  box . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  notice :  jQuery  object  containing  one  notice 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  initialText 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeInlineReplyTrigger :  function  ( notice ,  initialText )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Find the notice we're replying to...
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 13:49:13 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  id  =  $ ( $ ( '.notice_id' ,  notice ) [ 0 ] ) . text ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  replyForm ,  placeholder ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 13:49:13 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  parentNotice  =  notice ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 12:54:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  stripForm  =  true ;  // strip a couple things out of reply forms that are inline
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // Find the threaded replies view we'll be adding to...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  list  =  notice . closest ( '.notices' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 12:54:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( list . closest ( '.old-school' ) . length )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // We're replying to an old-school conversation thread;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // use the old-style ping into the top form.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . switchInputFormTab ( "status" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                replyForm  =  $ ( '#input_form_status' ) . find ( 'form' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                stripForm  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 12:54:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  if  ( list . hasClass ( 'threaded-replies' ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // We're replying to a reply; use reply form on the end of this list.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // We'll add our form at the end of this; grab the root notice.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 13:49:13 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                parentNotice  =  list . closest ( '.notice' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 12:54:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // See if the form's already open...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                replyForm  =  $ ( '.notice-reply-form' ,  list ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // We're replying to a parent notice; pull its threaded list
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // and we'll add on the end of it. Will add if needed.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 16:08:37 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                list  =  $ ( 'ul.threaded-replies' ,  notice ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( list . length  ==  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-15 15:03:20 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . U . NoticeInlineReplyPlaceholder ( notice ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    list  =  $ ( 'ul.threaded-replies' ,  notice ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-17 20:34:17 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    placeholder  =  $ ( 'li.notice-reply-placeholder' ,  notice ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-17 20:34:17 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( placeholder . length  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        SN . U . NoticeInlineReplyPlaceholder ( notice ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // See if the form's already open...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                replyForm  =  $ ( '.notice-reply-form' ,  list ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 12:54:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  nextStep  =  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Override...?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                replyForm . find ( 'input[name=inreplyto]' ) . val ( id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 12:54:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( stripForm )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // Don't do this for old-school reply form, as they don't come back!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    replyForm . find ( '#notice_to' ) . prop ( 'disabled' ,  true ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    replyForm . find ( '#notice_private' ) . prop ( 'disabled' ,  true ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    replyForm . find ( 'label[for=notice_to]' ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    replyForm . find ( 'label[for=notice_private]' ) . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Set focus...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  text  =  replyForm . find ( 'textarea' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( text . length  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    throw  "No textarea" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  replyto  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( initialText )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    replyto  =  initialText  +  ' ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                text . val ( replyto  +  text . val ( ) . replace ( new  RegExp ( replyto ,  'i' ) ,  '' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                text . data ( 'initialText' ,  $ . trim ( initialText ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                text . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( text [ 0 ] . setSelectionRange )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  len  =  text . val ( ) . length ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    text [ 0 ] . setSelectionRange ( len ,  len ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( replyForm . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Update the existing form...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                nextStep ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Hide the placeholder...
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                placeholder  =  list . find ( 'li.notice-reply-placeholder' ) . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 16:13:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Create the reply form entry at the end
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  replyItem  =  $ ( 'li.notice-reply' ,  list ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( replyItem . length  ==  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    replyItem  =  $ ( '<li class="notice-reply"></li>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 12:18:46 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  intermediateStep  =  function  ( formMaster )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  formEl  =  document . _importNode ( formMaster ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        replyItem . append ( formEl ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        list . append ( replyItem ) ;  // *after* the placeholder
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  form  =  $ ( formEl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        replyForm  =  form ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-09 17:43:31 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . Init . NoticeFormSetup ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:11:11 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        nextStep ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 12:18:46 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( SN . C . I . NoticeFormMaster )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // We've already saved a master copy of the form.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // Clone it in!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        intermediateStep ( SN . C . I . NoticeFormMaster ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // Fetch a fresh copy of the notice form over AJAX.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // Warning: this can have a delay, which looks bad.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // @fixme this fallback may or may not work
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        var  url  =  $ ( '#form_notice' ) . attr ( 'action' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        $ . get ( url ,  { ajax :  1 } ,  function  ( data ,  textStatus ,  xhr )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            intermediateStep ( $ ( 'form' ,  data ) [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 12:18:46 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeInlineReplyPlaceholder :  function  ( notice )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-01 16:08:37 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  list  =  notice . find ( 'ul.threaded-replies' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-15 15:03:20 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( list . length  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                list  =  $ ( '<ul class="notices threaded-replies xoxo"></ul>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                notice . append ( list ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                list  =  notice . find ( 'ul.threaded-replies' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 16:13:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  placeholder  =  $ ( '<li class="notice-reply-placeholder">'  + 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-18 09:23:55 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    '<input class="placeholder" />'  + 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 16:13:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                '</li>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:23:18 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            placeholder . find ( 'input' ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:20:20 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                . val ( SN . msg ( 'reply_placeholder' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 16:13:16 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            list . append ( placeholder ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  apply  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:20:20 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  Sets  up  event  handlers  for  inline  reply  mini - form  placeholders . 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  Uses  'on'  rather  than  'live'  or  'bind' ,  so  applies  to  future  as  well  as  present  items . 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeInlineReplySetup :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:20:20 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( 'li.notice-reply-placeholder input' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                . on ( 'focus' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-11 15:20:20 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  notice  =  $ ( this ) . closest ( 'li.notice' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    SN . U . NoticeInlineReplyTrigger ( notice ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 16:27:42 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( 'li.notice-reply-comments a' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                . on ( 'click' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 16:27:42 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  url  =  $ ( this ) . attr ( 'href' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  area  =  $ ( this ) . closest ( '.threaded-replies' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $ . get ( url ,  { ajax :  1 } ,  function  ( data ,  textStatus ,  xhr )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  replies  =  $ ( '.threaded-replies' ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 16:27:42 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        if  ( replies . length )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            area . replaceWith ( document . _importNode ( replies [ 0 ] ,  true ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 16:27:42 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 16:27:42 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Sets  up  event  handlers  for  repeat  forms  to  toss  up  a  confirmation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  popout  before  submitting . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  Uses  'on'  rather  than  'live'  or  'bind' ,  so  applies  to  future  as  well  as  present  items . 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 02:22:47 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeRepeat :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( '.form_repeat' ) . on ( 'click' ,  function  ( e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                e . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeRepeatConfirmation ( $ ( this ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-31 22:37:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Shows  a  confirmation  dialog  box  variant  of  the  repeat  button  form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  This  seems  to  use  a  technique  where  the  repeat  form  contains 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  _both _  a  standalone  button  _and _  text  and  buttons  for  a  dialog . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  The  dialog  will  close  after  its  copy  of  the  form  is  submitted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  or  if  you  click  its  'close'  button . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  The  dialog  is  created  by  duplicating  the  original  form  and  changing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  its  style ;  while  clever ,  this  is  hard  to  generalize  and  probably 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  duplicates  a  lot  of  unnecessary  HTML  output . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  create  confirmation  dialogs  through  a  generalized  interface 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  that  can  be  reused  instead  of  hardcoded  text  and  styles . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeRepeatConfirmation :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  submit _i  =  form . find ( '.submit' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  submit  =  submit _i . clone ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            submit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                . addClass ( 'submit_dialogbox' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                . removeClass ( 'submit' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            form . append ( submit ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            submit . on ( 'click' ,  function  ( )  {  SN . U . FormXHR ( form ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            submit _i . hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                . addClass ( 'dialogbox' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                . append ( '<button class="close">×</button>' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                . closest ( '.notice-options' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . addClass ( 'opaque' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            form . find ( 'button.close' ) . click ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( this ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . removeClass ( 'dialogbox' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . closest ( '.notice-options' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . removeClass ( 'opaque' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '.submit_dialogbox' ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . find ( '.submit' ) . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:16:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-23 15:42:37 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-11 10:10:53 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Goes  through  all  notices  currently  displayed  and  sets  up  attachment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  handling  if  needed . 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:04:48 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeAttachments :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( '.notice a.attachment' ) . each ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-29 19:05:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeWithAttachment ( $ ( this ) . closest ( '.notice' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Sets  up  special  attachment  link  handling  if  needed .  Currently  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  consists  only  of  making  the  "more"  button  used  for  OStatus  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  cropping  turn  into  an  auto - expansion  button  that  loads  the  full 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  text  from  an  attachment  file . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  notice 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeWithAttachment :  function  ( notice )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-16 17:09:34 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( notice . find ( '.attachment' ) . length  ===  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-29 19:18:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-18 00:19:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  attachment _more  =  notice . find ( '.attachment.more' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( attachment _more . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( attachment _more [ 0 ] ) . click ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 14:56:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  m  =  $ ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    m . addClass ( SN . C . S . Processing ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $ . get ( m . attr ( 'href' )  +  '/ajax' ,  null ,  function  ( data )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-26 14:56:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        m . parent ( '.entry-content' ) . html ( $ ( data ) . find ( '#attachment_view .entry-content' ) . html ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-18 00:19:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 14:02:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-18 00:19:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-02 13:05:16 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) . attr ( 'title' ,  SN . msg ( 'showmore_tooltip' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-18 00:19:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 14:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Sets  up  event  handlers  for  the  file - attachment  widget  in  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  new  notice  form .  When  a  file  is  selected ,  a  box  will  be  added 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  below  the  text  input  showing  the  filename  and ,  if  supported 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  by  the  browser ,  a  thumbnail  preview . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  This  preview  box  will  also  allow  removing  the  attachment 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  prior  to  posting . 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeDataAttach :  function  ( form )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  i ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  NDA  =  form . find ( 'input[type=file]' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            NDA . change ( function  ( event )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '.attach-status' ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  filename  =  $ ( this ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( ! filename )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // No file -- we've been tricked!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  attachStatus  =  $ ( '<div class="attach-status '  +  SN . C . S . Success  +  '"><code></code> <button class="close">×</button></div>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                attachStatus . find ( 'code' ) . text ( filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                attachStatus . find ( 'button' ) . click ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    attachStatus . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 14:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    NDA . val ( '' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-03 02:00:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 14:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . append ( attachStatus ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( typeof  this . files  ===  "object" )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // Some newer browsers will let us fetch the files for preview.
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    for  ( i  =  0 ;  i  <  this . files . length ;  i ++ )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . U . PreviewAttach ( form ,  this . files [ i ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 14:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 16:14:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Get  PHP ' s  MAX _FILE _SIZE  setting  for  this  form ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  used  to  apply  client - side  file  size  limit  checks . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ return  int  max  size  in  bytes ;  0  or  negative  means  no  limit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        maxFileSize :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  max  =  $ ( form ) . find ( 'input[name=MAX_FILE_SIZE]' ) . attr ( 'value' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( max )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  parseInt ( max ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  For  browsers  with  FileAPI  support :  make  a  thumbnail  if  possible , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  and  append  it  into  the  attachment  display  widget . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Known  good : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  Firefox  3.6 . 6 ,  4.0 b7 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  Chrome  8.0 . 552.210 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Known  ok  metadata ,  can ' t  get  contents : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  Safari  5.0 . 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Known  fail : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  Opera  10.63 ,  11  beta  ( no  input . files  interface ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  { File }  file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ todo  use  configured  thumbnail  size 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ todo  detect  pixel  size ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ todo  should  we  render  a  thumbnail  to  a  canvas  and  then  use  the  smaller  image ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        PreviewAttach :  function  ( form ,  file )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  tooltip  =  file . type  +  ' '  +  Math . round ( file . size  /  1024 )  +  'KB' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  preview  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  blobAsDataURL ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( window . createObjectURL  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  createObjectURL  lets  us  reference  the  file  directly  from  an  < img > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  This  produces  a  compact  URL  with  an  opaque  reference  to  the  file , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  which  we  can  reference  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Firefox  3.6 . 6 :  no 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Firefox  4.0 b7 :  no 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Safari  5.0 . 2 :  no 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Chrome  8.0 . 552.210 :  works ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                blobAsDataURL  =  function  ( blob ,  callback )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    callback ( window . createObjectURL ( blob ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  if  ( window . FileReader  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  FileAPI 's FileReader can build a data URL from a blob' s  contents , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  but  it  must  read  the  file  and  build  it  asynchronously .  This  means 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  we ' ll  be  passing  a  giant  data  URL  around ,  which  may  be  inefficient . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Firefox  3.6 . 6 :  works ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Firefox  4.0 b7 :  works ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Safari  5.0 . 2 :  no 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 *  -  Chrome  8.0 . 552.210 :  works ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                blobAsDataURL  =  function  ( blob ,  callback )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  reader  =  new  FileReader ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    reader . onload  =  function  ( event )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        callback ( reader . result ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    reader . readAsDataURL ( blob ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                preview  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  imageTypes  =  [ 'image/png' ,  'image/jpeg' ,  'image/gif' ,  'image/svg+xml' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( $ . inArray ( file . type ,  imageTypes )  ==  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // We probably don't know how to show the file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                preview  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  maxSize  =  8  *  1024  *  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( file . size  >  maxSize )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Don't kill the browser trying to load some giant image.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                preview  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( preview )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                blobAsDataURL ( file ,  function  ( url )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  img  =  $ ( '<img>' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . attr ( 'title' ,  tooltip ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . attr ( 'alt' ,  tooltip ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . attr ( 'src' ,  url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        . attr ( 'style' ,  'height: 120px' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '.attach-status' ) . append ( img ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  img  =  $ ( '<div></div>' ) . text ( tooltip ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 16:56:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '.attach-status' ) . append ( img ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 12:20:25 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Initializes  state  for  the  location - lookup  features  in  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  new - notice  form .  Seems  to  set  up  some  event  handlers  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  triggering  lookups  and  using  the  new  values . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ fixme  tl ; dr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  there ' s  not  good  visual  state  update  here ,  so  users  have  a 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *         hard  time  figuring  out  if  it 's working or fixing if it' s  wrong . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeLocationAttach :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // @fixme this should not be tied to the main notice form, as there may be multiple notice forms...
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  NLat  =  form . find ( '[name=lat]' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  NLon  =  form . find ( '[name=lon]' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  NLNS  =  form . find ( '[name=location_ns]' ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  NLID  =  form . find ( '[name=location_id]' ) . val ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  NLN  =  '' ;  // @fixme
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  NDGe  =  form . find ( '[name=notice_data-geo]' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  check  =  form . find ( '[name=notice_data-geo]' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 14:27:55 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  label  =  form . find ( 'label.notice_data-geo' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            function  removeNoticeDataGeo ( error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                label 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . attr ( 'title' ,  jQuery . trim ( label . text ( ) ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 01:48:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    . removeClass ( 'checked' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '[name=lat]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . find ( '[name=lon]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . find ( '[name=location_ns]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . find ( '[name=location_id]' ) . val ( '' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 19:15:24 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ . cookie ( SN . C . S . NoticeDataGeoCookie ,  'disabled' ,  {  path :  '/'  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '.geo_status_wrapper' ) . removeClass ( 'success' ) . addClass ( 'error' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '.geo_status_wrapper .geo_status' ) . text ( error ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '.geo_status_wrapper' ) . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 13:44:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-18 12:55:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            function  getJSONgeocodeURL ( geocodeURL ,  data )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:53:41 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeGeoStatus ( form ,  'Looking up place name...' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ . getJSON ( geocodeURL ,  data ,  function  ( location )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  lns ,  lid ,  NLN _text ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( location . location _ns  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . find ( '[name=location_ns]' ) . val ( location . location _ns ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        lns  =  location . location _ns ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( location . location _id  !==  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        form . find ( '[name=location_id]' ) . val ( location . location _id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        lid  =  location . location _id ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    if  ( location . name  ===  undefined )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-18 12:55:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        NLN _text  =  data . lat  +  ';'  +  data . lon ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        NLN _text  =  location . name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:53:41 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . U . NoticeGeoStatus ( form ,  NLN _text ,  data . lat ,  data . lon ,  location . url ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    label 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 01:48:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        . attr ( 'title' ,  NoticeDataGeo _text . ShareDisable  +  ' ('  +  NLN _text  +  ')' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=lat]' ) . val ( data . lat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=lon]' ) . val ( data . lon ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=location_ns]' ) . val ( lns ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=location_id]' ) . val ( lid ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  cookieValue  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-16 19:44:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        NLat :  data . lat , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        NLon :  data . lon , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        NLNS :  lns , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        NLID :  lid , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        NLN :  NLN _text , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        NLNU :  location . url , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        NDG :  true 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-25 14:55:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 19:15:24 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $ . cookie ( SN . C . S . NoticeDataGeoCookie ,  JSON . stringify ( cookieValue ) ,  {  path :  '/'  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-05 00:37:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( check . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 16:43:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( $ . cookie ( SN . C . S . NoticeDataGeoCookie )  ==  'disabled' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    check . prop ( 'checked' ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    check . prop ( 'checked' ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-05 01:31:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  NGW  =  form . find ( '.notice_data-geo_wrap' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:49:24 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  geocodeURL  =  NGW . attr ( 'data-api' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-31 18:27:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                label . attr ( 'title' ,  label . text ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-31 18:08:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                check . change ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( check . prop ( 'checked' )  ===  true  ||  $ . cookie ( SN . C . S . NoticeDataGeoCookie )  ===  null )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        label 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 01:48:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . attr ( 'title' ,  NoticeDataGeo _text . ShareDisable ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . addClass ( 'checked' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-03 01:48:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 16:43:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        if  ( $ . cookie ( SN . C . S . NoticeDataGeoCookie )  ===  null  ||  $ . cookie ( SN . C . S . NoticeDataGeoCookie )  ==  'disabled' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            if  ( navigator . geolocation )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:53:41 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                SN . U . NoticeGeoStatus ( form ,  'Requesting location from browser...' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                navigator . geolocation . getCurrentPosition ( 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    function  ( position )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        form . find ( '[name=lat]' ) . val ( position . coords . latitude ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        form . find ( '[name=lon]' ) . val ( position . coords . longitude ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        var  data  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-16 19:44:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                            lat :  position . coords . latitude , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            lon :  position . coords . longitude , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            token :  $ ( '#token' ) . val ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-18 12:55:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        getJSONgeocodeURL ( geocodeURL ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    function  ( error )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-13 15:36:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        switch ( error . code )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            case  error . PERMISSION _DENIED : 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                removeNoticeDataGeo ( 'Location permission denied.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-13 15:36:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            case  error . TIMEOUT : 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                //$('#' + SN.C.S.NoticeDataGeo).prop('checked', false);
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                removeNoticeDataGeo ( 'Location lookup timeout.' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-13 15:36:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-13 15:36:42 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-13 15:50:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        timeout :  10000 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                if  ( NLat . length  >  0  &&  NLon . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 09:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    var  data  =  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-18 12:55:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                        lat :  NLat , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        lon :  NLon , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                        token :  $ ( '#token' ) . val ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 09:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-18 12:55:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    getJSONgeocodeURL ( geocodeURL ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    removeNoticeDataGeo ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    check . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    label . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 16:43:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            var  cookieValue  =  JSON . parse ( $ . cookie ( SN . C . S . NoticeDataGeoCookie ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 14:23:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 17:58:35 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            form . find ( '[name=lat]' ) . val ( cookieValue . NLat ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            form . find ( '[name=lon]' ) . val ( cookieValue . NLon ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            form . find ( '[name=location_ns]' ) . val ( cookieValue . NLNS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            form . find ( '[name=location_id]' ) . val ( cookieValue . NLID ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  cookieValue . NDG ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-08 13:36:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:53:41 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            SN . U . NoticeGeoStatus ( form ,  cookieValue . NLN ,  cookieValue . NLat ,  cookieValue . NLon ,  cookieValue . NLNU ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:40:33 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            label 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-14 01:48:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                . attr ( 'title' ,  NoticeDataGeo _text . ShareDisable  +  ' ('  +  cookieValue . NLN  +  ')' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                . addClass ( 'checked' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 16:17:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-04 23:36:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        removeNoticeDataGeo ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ) . change ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-29 16:17:17 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-19 15:17:18 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Create  or  update  a  geolocation  status  widget  in  this  notice  posting  form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-04 13:53:41 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  status 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  lat  ( optional ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  lon  ( optional ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  url  ( optional ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeGeoStatus :  function  ( form ,  status ,  lat ,  lon ,  url ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  wrapper  =  form . find ( '.geo_status_wrapper' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( wrapper . length  ==  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                wrapper  =  $ ( '<div class="'  +  SN . C . S . Success  +  ' geo_status_wrapper"><button class="close" style="float:right">×</button><div class="geo_status"></div></div>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                wrapper . find ( 'button.close' ) . click ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-23 19:24:47 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    form . find ( '[name=notice_data-geo]' ) . prop ( 'checked' ,  false ) . change ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:29:13 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-03 15:21:27 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . append ( wrapper ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  label ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                label  =  $ ( '<a></a>' ) . attr ( 'href' ,  url ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                label  =  $ ( '<span></span>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            label . text ( status ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( lat  ||  lon )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  latlon  =  lat  +  ';'  +  lon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                label . attr ( 'title' ,  latlon ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( ! status )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    label . text ( latlon ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            wrapper . find ( '.geo_status' ) . empty ( ) . append ( label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Setup  function  --  DOES  NOT  trigger  actions  immediately . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Initializes  event  handlers  for  the  "Send direct message"  link  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  profile  pages ,  setting  it  up  to  display  a  dialog  box  when  clicked . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Unlike  the  repeat  confirmation  form ,  this  appears  to  fetch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  the  form  _from  the  original  link  target _ ,  so  the  form  itself 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  doesn ' t  need  to  be  in  the  current  document . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  breaks  ability  to  open  link  in  new  window ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NewDirectMessage :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 16:14:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            NDM  =  $ ( '.entity_send-a-message a' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            NDM . attr ( { 'href' :  NDM . attr ( 'href' )  +  '&ajax=1' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            NDM . on ( 'click' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 16:14:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  NDMF  =  $ ( '.entity_send-a-message form' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( NDMF . length  ===  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 15:13:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $ ( this ) . addClass ( SN . C . S . Processing ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    $ . get ( NDM . attr ( 'href' ) ,  null ,  function  ( data )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        $ ( '.entity_send-a-message' ) . append ( document . _importNode ( $ ( 'form' ,  data ) [ 0 ] ,  true ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:01:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        NDMF  =  $ ( '.entity_send-a-message .form_notice' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:56:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . U . FormNoticeXHR ( NDMF ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 18:55:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . U . FormNoticeEnhancements ( NDMF ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-01 20:53:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        NDMF . append ( '<button class="close">×</button>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        $ ( '.entity_send-a-message button' ) . click ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 16:14:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            NDMF . hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 15:13:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        NDM . removeClass ( SN . C . S . Processing ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-31 16:14:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    NDMF . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( '.entity_send-a-message textarea' ) . focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-25 14:55:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Return  a  date  object  with  the  current  local  time  on  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  given  year ,  month ,  and  day . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { number }  year :  4 - digit  year 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { number }  month :  0  ==  January 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { number }  day :  1  ==  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ return  { Date } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        GetFullYear :  function  ( year ,  month ,  day )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-25 14:55:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  date  =  new  Date ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-26 01:58:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            date . setFullYear ( year ,  month ,  day ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-25 14:55:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  date ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:35:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Some  sort  of  object  interface  for  storing  some  structured 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  information  in  a  cookie . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Appears  to  be  used  to  save  the  last - used  login  nickname ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  That ' s  something  that  browsers  usually  take  care  of  for  us 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  these  days ,  do  we  really  need  to  do  it ?  Does  anything  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  use  this  interface ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  what  is  this ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  should  this  use  non - cookie  local  storage  when  available ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:35:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        StatusNetInstance :  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  @ fixme  what  is  this ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Set :  function  ( value )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:35:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  SNI  =  SN . U . StatusNetInstance . Get ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( SNI  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    value  =  $ . extend ( SNI ,  value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ . cookie ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    SN . C . S . StatusNetInstance , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    JSON . stringify ( value ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        path :  '/' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        expires :  SN . U . GetFullYear ( 2029 ,  0 ,  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  @ fixme  what  is  this ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Get :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:35:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  cookieValue  =  $ . cookie ( SN . C . S . StatusNetInstance ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( cookieValue  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    return  JSON . parse ( cookieValue ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  null ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             *  @ fixme  what  is  this ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Delete :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:35:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ . cookie ( SN . C . S . StatusNetInstance ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:27:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Check  if  the  current  page  is  a  timeline  where  the  current  user ' s 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  posts  should  be  displayed  immediately  on  success . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  this  should  be  done  in  a  saner  way ,  with  machine - readable 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  info  about  what  page  we ' re  looking  at . 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { DOMElement }  notice :  HTML  chunk  with  formatted  notice 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ return  boolean 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:27:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        belongsOnTimeline :  function  ( notice )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:27:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  action  =  $ ( "body" ) . attr ( 'id' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( action  ==  'public' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  profileLink  =  $ ( '#nav_profile a' ) . attr ( 'href' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( profileLink )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 15:10:30 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  authorUrl  =  $ ( notice ) . find ( '.vcard.author a.url' ) . attr ( 'href' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-29 13:27:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  ( authorUrl  ==  profileLink )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( action  ==  'all'  ||  action  ==  'showstream' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // Posts always show on your own friends and profile streams.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // @fixme tag, group, reply timelines should be feasible as well.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // Mismatch between id-based and name-based user/group links currently complicates
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // the lookup, since all our inline mentions contain the absolute links but the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // UI links currently on the page use malleable names.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 04:57:49 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-09 13:05:12 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Switch  to  another  active  input  sub - form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  This  will  hide  the  current  form  ( if  any ) ,  show  the  new  one ,  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  update  the  input  type  tab  selection  state . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { String }  tag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    switchInputFormTab :  function  ( tag )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // The one that's current isn't current anymore
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ ( '.input_form_nav_tab.current' ) . removeClass ( 'current' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 18:01:40 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( tag  ==  'placeholder' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Hack: when showing the placeholder, mark the tab
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // as current for 'Status'.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( '#input_form_nav_status' ) . addClass ( 'current' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( '#input_form_nav_'  +  tag ) . addClass ( 'current' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 18:01:40 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 04:57:49 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 14:20:19 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Don't remove 'current' if we also have the "nonav" class.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // An example would be the message input form. removing
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // 'current' will cause the form to vanish from the page.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  nonav  =  $ ( '.input_form.current.nonav' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if  ( nonav . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $ ( '.input_form.current' ) . removeClass ( 'current' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $ ( '#input_form_'  +  tag ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:40:39 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                . addClass ( 'current' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                . find ( '.ajax-notice' ) . each ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:40:39 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  form  =  $ ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    SN . Init . NoticeFormSetup ( form ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:44:17 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-18 00:31:47 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                . find ( '.notice_data-text' ) . focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } , 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-07 10:26:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        showMoreMenuItems :  function  ( menuid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( '#'  +  menuid  +  ' .more_link' ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  selector  =  '#'  +  menuid  +  ' .extended_menu' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-07 10:26:07 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  extended  =  $ ( selector ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            extended . removeClass ( 'extended_menu' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  void ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    Init :  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  If  user  is  logged  in ,  run  setup  code  for  the  new  notice  form : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *   -  char  counter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *   -  AJAX  submission 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *   -  location  events 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *   -  file  upload  events 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeForm :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $ ( 'body.user_in' ) . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:40:39 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // SN.Init.NoticeFormSetup() will get run
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // when forms get displayed for the first time...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Hack to initialize the placeholder at top
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( '#input_form_placeholder input.placeholder' ) . focus ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:40:39 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . U . switchInputFormTab ( "status" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Make inline reply forms self-close when clicking out.
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( 'body' ) . on ( 'click' ,  function  ( e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:52:03 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  currentForm  =  $ ( '#content .input_forms div.current' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( currentForm . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        if  ( $ ( '#content .input_forms' ) . has ( e . target ) . length  ==  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            // If all fields are empty, switch back to the placeholder.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            var  fields  =  currentForm . find ( 'textarea, input[type=text], input[type=""]' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            var  anything  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            fields . each ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:52:03 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                anything  =  anything  ||  $ ( this ) . val ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if  ( ! anything )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                SN . U . switchInputFormTab ( "placeholder" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  openReplies  =  $ ( 'li.notice-reply' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( openReplies . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:15:44 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        var  target  =  $ ( e . target ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        openReplies . each ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:15:44 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            // Did we click outside this one?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            var  replyItem  =  $ ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            if  ( replyItem . has ( e . target ) . length  ==  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:10:58 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                var  textarea  =  replyItem . find ( '.notice_data-text:first' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                var  cur  =  $ . trim ( textarea . val ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                // Only close if there's been no edit.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:10:58 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                if  ( cur  ==  ''  ||  cur  ==  textarea . data ( 'initialText' ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    var  parentNotice  =  replyItem . closest ( 'li.notice' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                    replyItem . remove ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-17 15:54:40 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                    parentNotice . find ( 'li.notice-reply-placeholder' ) . show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:15:44 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 16:06:01 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-18 00:38:26 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Infield labels for notice form inputs.
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-18 11:45:02 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( '.input_forms fieldset fieldset label' ) . inFieldLabels ( {  fadeOpacity : 0  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-18 00:38:26 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-09 17:43:31 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Encapsulate  notice  form  setup  for  a  single  form . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Plugins  can  add  extra  setup  by  monkeypatching  this 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  function . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ param  { jQuery }  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        NoticeFormSetup :  function  ( form )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-10 17:40:39 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( ! form . data ( 'NoticeFormSetup' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . NoticeLocationAttach ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . FormNoticeXHR ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . FormNoticeEnhancements ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . NoticeDataAttach ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . data ( 'NoticeFormSetup' ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-09 17:43:31 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Run  setup  code  for  notice  timeline  views  items : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  AJAX  submission  for  fave / repeat / reply  ( if  logged  in ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  Attachment  link  extras  ( 'more'  links ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Notices :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $ ( 'body.user_in' ) . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 12:18:46 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  masterForm  =  $ ( '.form_notice:first' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( masterForm . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-02 11:57:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . C . I . NoticeFormMaster  =  document . _importNode ( masterForm [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 12:18:46 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-11 10:12:34 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeRepeat ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeReply ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-28 15:38:54 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . NoticeInlineReplySetup ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SN . U . NoticeAttachments ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Run  setup  code  for  user  &  group  profile  page  header  area  if  logged  in : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  AJAX  submission  for  sub / unsub / join / leave / nudge 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  AJAX  form  popup  for  direct - message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        EntityActions :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $ ( 'body.user_in' ) . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_user_subscribe' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_user_unsubscribe' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_group_join' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_group_leave' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_user_nudge' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_peopletag_subscribe' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_peopletag_unsubscribe' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_user_add_peopletag' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_user_remove_peopletag' ,  function  ( )  {  SN . U . FormXHR ( $ ( this ) ) ;  return  false ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-10 14:29:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                SN . U . NewDirectMessage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:39:16 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ProfileSearch :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( $ ( 'body.user_in' ) . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( document ) . on ( 'click' ,  '.form_peopletag_edit_user_search input.submit' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    SN . U . FormProfileSearchXHR ( $ ( this ) . parents ( 'form' ) ) ;  return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Run  setup  code  for  login  form : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  loads  saved  last - used - nickname  from  cookie 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  sets  event  handler  to  save  nickname  to  cookie  on  submit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  @ fixme  is  this  necessary ?  Browsers  do  their  own  form  saving  these  days . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Login :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:39:16 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if  ( SN . U . StatusNetInstance . Get ( )  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  nickname  =  SN . U . StatusNetInstance . Get ( ) . Nickname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( nickname  !==  null )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( '#form_login #nickname' ) . val ( nickname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( '#form_login' ) . on ( 'submit' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:39:16 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . StatusNetInstance . Set ( { Nickname :  $ ( '#form_login #nickname' ) . val ( ) } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Called  when  a  people  tag  edit  box  is  shown  in  the  interface 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  loads  the  jQuery  UI  autocomplete  plugin 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  sets  event  handlers  for  tag  completion 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        PeopletagAutocomplete :  function  ( txtBox )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            var  split  =  function  ( val )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  val . split (  /\s+/  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            var  extractLast  =  function  ( term )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  split ( term ) . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            // don't navigate away from the field on tab when selecting an item
 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            txtBox . on (  "keydown" ,  function  (  event  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if  (  event . keyCode  ===  $ . ui . keyCode . TAB  && 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $ ( this ) . data (  "autocomplete"  ) . menu . active  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    event . preventDefault ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } ) . autocomplete ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                minLength :  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                source :  function  ( request ,  response )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // delegate back to autocomplete, but extract the last term
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    response ( $ . ui . autocomplete . filter ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        SN . C . PtagACData ,  extractLast ( request . term ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                focus :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                select :  function  ( event ,  ui )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  terms  =  split ( this . value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    terms . pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    terms . push ( ui . item . value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    terms . push ( "" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    this . value  =  terms . join ( " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) . data ( 'autocomplete' ) . _renderItem  =  function  ( ul ,  item )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // FIXME: with jQuery UI you cannot have it highlight the match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  _l  =  '<a class="ptag-ac-line-tag">'  +  item . tag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          +  ' <em class="privacy_mode">'  +  item . mode  +  '</em>' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          +  '<span class="freq">'  +  item . freq  +  '</span></a>' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    return  $ ( "<li/>" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . addClass ( 'mode-'  +  item . mode ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                            . addClass ( 'ptag-ac-line' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . data ( "item.autocomplete" ,  item ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . append ( _l ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            . appendTo ( ul ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Run  setup  for  the  ajax  people  tags  editor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  show  edit  button 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  -  set  event  handle  for  click  on  edit  button 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *    -  loads  people  tag  autocompletion  data  if  not  already  present 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *      or  if  it  is  stale . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        PeopleTags :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( '.user_profile_tags .editable' ) . append ( $ ( '<button class="peopletags_edit_button"/>' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( document ) . on ( 'click' ,  '.peopletags_edit_button' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                var  form  =  $ ( this ) . parents ( 'dd' ) . eq ( 0 ) . find ( 'form' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // We can buy time from the above animation
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ . ajax ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    url :  _peopletagAC , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    dataType :  'json' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    data :  { token :  $ ( '#token' ) . val ( ) } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    ifModified :  true , 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    success :  function  ( data )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        // item.label is used to match
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        for  ( i = 0 ;  i  <  data . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                            data [ i ] . label  =  data [ i ] . tag ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . C . PtagACData  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                        SN . Init . PeopletagAutocomplete ( form . find ( '#tags' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $ ( this ) . parents ( 'ul' ) . eq ( 0 ) . fadeOut ( 200 ,  function  ( )  { form . fadeIn ( 200 ) . find ( 'input#tags' ) } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 13:55:01 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( document ) . on ( 'click' ,  '.user_profile_tags form .submit' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . FormPeopletagsXHR ( $ ( this ) . parents ( 'form' ) ) ;  return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 13:45:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Set  up  any  generic  'ajax'  form  so  it  submits  via  AJAX  with  auto - replacement . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        AjaxForms :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( document ) . on ( 'submit' ,  'form.ajax' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 13:45:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                SN . U . FormXHR ( $ ( this ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( document ) . on ( 'click' ,  'form.ajax input[type=submit]' ,  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-23 15:21:31 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // Some forms rely on knowing which submit button was clicked.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // Save a hidden input field which'll be picked up during AJAX
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                // submit...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  button  =  $ ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                var  form  =  button . closest ( 'form' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                form . find ( '.hidden-submit-button' ) . remove ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $ ( '<input class="hidden-submit-button" type="hidden" />' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . attr ( 'name' ,  button . attr ( 'name' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . val ( button . val ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    . appendTo ( form ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 13:45:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        / * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  Add  logic  to  any  file  upload  forms  to  handle  file  size  limits , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  on  browsers  that  support  basic  FileAPI . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        UploadForms :  function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $ ( 'input[type=file]' ) . change ( function  ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( typeof  this . files  ===  "object"  &&  this . files . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    var  size  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    for  ( var  i  =  0 ;  i  <  this . files . length ;  i ++ )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        size  +=  this . files [ i ] . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    var  max  =  SN . U . maxFileSize ( $ ( this . form ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    if  ( max  >  0  &&  size  >  max )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        var  msg  =  'File too large: maximum upload size is %d bytes.' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        alert ( msg . replace ( '%d' ,  max ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        // Clear the files.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        $ ( this ) . val ( '' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        event . preventDefault ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 11:48:53 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        CheckBoxes :  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( "span[class='checkbox-wrapper']" ) . addClass ( "unchecked" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $ ( ".checkbox-wrapper" ) . click ( function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if  ( $ ( this ) . children ( "input" ) . prop ( "checked" ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // uncheck
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . children ( "input" ) . prop ( "checked" ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . removeClass ( "checked" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . addClass ( "unchecked" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . children ( "label" ) . text ( "Private?" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // check
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . children ( "input" ) . prop ( "checked" ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . removeClass ( "unchecked" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . addClass ( "checked" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    $ ( this ) . children ( "label" ) . text ( "Private" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-12-16 15:34:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/ * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Run  initialization  functions  on  DOM - ready . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Note  that  if  we 're waiting on other scripts to load, this won' t  happen 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  until  that ' s  done .  To  load  scripts  asynchronously  without  delaying  setup , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  don ' t  start  them  loading  until  after  DOM - ready  time ! 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * / 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								$ ( function  ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-08 13:45:51 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    SN . Init . AjaxForms ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-25 16:26:56 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    SN . Init . UploadForms ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 11:48:53 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    SN . Init . CheckBoxes ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-09-10 15:14:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $ ( '.'  +  SN . C . S . FormNotice ) . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        SN . Init . NoticeForm ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $ ( '#content .notices' ) . length  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:20:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        SN . Init . Notices ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 18:47:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $ ( '#content .entity_actions' ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        SN . Init . EntityActions ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-24 16:39:16 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $ ( '#form_login' ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        SN . Init . Login ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-07 00:44:21 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( $ ( '#profile_search_results' ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        SN . Init . ProfileSearch ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( $ ( '.user_profile_tags .editable' ) . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        SN . Init . PeopleTags ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 17:06:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-05 11:48:53 -04:00