(function($){$.idleTimer=function(newTimeout,elem){var idle=false,enabled=true,timeout=30000,events='mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove';elem=elem||document;var toggleIdleState=function(myelem){if(typeof myelem==='number'){myelem=undefined;}
var obj=$.data(myelem||elem,'idleTimerObj');obj.idle=!obj.idle;var elapsed=(+new Date())-obj.olddate;obj.olddate=+new Date();if(obj.idle&&(elapsed<timeout)){obj.idle=false;clearTimeout($.idleTimer.tId);if(enabled)
$.idleTimer.tId=setTimeout(toggleIdleState,timeout);return;}
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')||{};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){if(this[0]){$.idleTimer(newTimeout,this[0]);}
return this;};})(jQuery);
