text: /**
   * File: LeftAndMain.Ping.js
   */
  (function($) {
  	$.entwine('ss.ping', function($){
  
  		$('.cms-container').entwine(/** @lends ss.Form_EditForm */{
  			/**
  			 * Variable: PingIntervalSeconds
  			 * (Number) Interval in which /Security/ping will be checked for a valid login session.
  			 */
  			PingIntervalSeconds: 5*60,
  
  			onadd: function() {
  				this._setupPinging();
  				this._super();
  			},
  
  			/**
  			 * Function: _setupPinging
  			 *
  			 * This function is called by prototype when it receives notification that the user was logged out.
  			 * It uses /Security/ping for this purpose, which should return '1' if a valid user session exists.
  			 * It redirects back to the login form if the URL is either unreachable, or returns '0'.
  			 */
  			_setupPinging: function() {
  				var onSessionLost = function(xmlhttp, status) {
  					if(xmlhttp.status > 400 || xmlhttp.responseText == 0) {
  						// TODO will pile up additional alerts when left unattended
  						if(window.open('Security/login')) {
  							alert('Please log in and then try again');
  						} else {
  							alert('Please enable pop-ups for this site');
  						}
  					}
  				};
  
  				// setup pinging for login expiry
  				setInterval(function() {
  					$.ajax({
  						url: 'Security/ping',
  						global: false,
  						type: 'POST',
  						complete: onSessionLost
  					});
  				}, this.getPingIntervalSeconds() * 1000);
  			}
  		});
  	});
  }(jQuery));
  