(function($){$.idleTimer=function(newTimeout,elem){var idle=false,enabled=true,timeout=30000,events='mousemove keydown DOMMouseScroll mousewheel mousedown';elem=elem||document;var toggleIdleState=function(myelem){if(typeof myelem=='number')myelem=undefined;var obj=$.data(myelem||elem,'idleTimerObj');obj.idle=!obj.idle;obj.olddate=+new Date;var event=jQuery.Event($.data(elem,'idleTimer',obj.idle?"idle":"active")+'.idleTimer');event.stopPropagation();$(elem).trigger(event)},stop=function(elem){var obj=$.data(elem,'idleTimerObj');obj.enabled=false;clearTimeout(obj.tId);$(elem).unbind('.idleTimer')},handleUserEvent=function(){var obj=$.data(this,'idleTimerObj');clearTimeout(obj.tId);if(obj.enabled){if(obj.idle){toggleIdleState(this)}obj.tId=setTimeout(toggleIdleState,obj.timeout)}};var obj=$.data(elem,'idleTimerObj')||new function(){};obj.olddate=obj.olddate||+new Date;if(typeof newTimeout=="number"){timeout=newTimeout}else if(newTimeout==='destroy'){stop(elem);return this}else if(newTimeout==='getElapsedTime'){return(+new Date)-obj.olddate}$(elem).bind($.trim((events+' ').split(' ').join('.idleTimer ')),handleUserEvent);obj.idle=idle;obj.enabled=enabled;obj.timeout=timeout;obj.tId=setTimeout(toggleIdleState,obj.timeout);$.data(elem,'idleTimer',"active");$.data(elem,'idleTimerObj',obj)};$.fn.idleTimer=function(newTimeout){this[0]&&$.idleTimer(newTimeout,this[0]);return this}})(jQuery);
