jTimeout v3 (only 4kb!)

This cross-tab jQuery plugin keeps track of time and let's a user know before their session times out so they can extend it. Then tells them when it has expired so they can login again.


Watch the timer below and see how jTimeout reacts as it counts down/when you click the extend button.

60 Secs Left Timed Out Reset

View on Github Download Created by HTMLGuy
Donations are appreciated (via PayPal)
How to use (dead simple):
$(function(){
   $.jTimeout();
});

Dependencies:
Options:
$(function(){
   $.jTimeout(
   	{
        expiration_key: 'jtimeout-session-expiration', //key used to store expiration in localstorage (change this for multiple timers)
		flashTitle: true, //whether or not to flash the tab/title bar when about to timeout, or after timing out
		flashTitleSpeed: 500, //how quickly to switch between the original title, and the warning text
		flashingTitleText: '**WARNING**', //what to show in the tab/title bar when about to timeout, or after timing out
		originalTitle: document.title, //store the original title of this page

		timeoutAfter: 1440, //pass this from server side to be fully-dynamic. For PHP: ini_get('session.gc_maxlifetime'); - 1440 is generally the default timeout
		heartbeat: 1, //how many seconds in between checking the expiration - warning: changing this can effect your prior countdown warning and timeout - for best results, stick with 1

		extendOnMouseMove: true, //Whether or not to extend the session when the mouse is moved
		mouseDebounce: 30, //How many seconds between extending the session when the mouse is moved (instead of extending a billion times within 5 seconds)
		onMouseMove: false, //Override the standard $.get() request that uses the extendUrl with your own function.

		extendUrl: '/dashboard', //URL to request in order to extend the session.
		logoutUrl: '/logout', //URL to request in order to force a logout after the timeout. This way you can end a session early based on a shorter timeout OR if the front-end timeout doesn't sync with the backend one perfectly, you don't look like an idiot.
		loginUrl: '/login', //URL to send a customer when they want to log back in

		secondsPrior: 60, //how many seconds before timing out to run the next callback (onPriorCallback)
		onPriorCallback: false, //override the popup that shows when getting within x seconds of timing out

		onClickExtend: false, //override the click to extend button callback

		onTimeout: false, //override the timeout function if you'd like
		onSessionExtended: false //override the session extension method (triggered only after a timeout)
	}
   );

   $.jTimeout().reset(); //will reset the expiration using the timeoutAfter option above
   $.jTimeout().setExpiration(1000); //will set the expiration to 1000 seconds in the future
   $.jTimeout().getExpiration(); //gets the expiration date string
   $.jTimeout().getSecondsTillExpiration(); //gets the number of seconds until the session expires
   $.jTimeout().destroy(); //detaches event handlers and stops flashing (if applicable)
});