text: 
  (function(D,P){"use strict";var VERSION='0.1.0';var DEFAULTS={time:30,text:'Session Expired.',events:'mousemove keyup',debug:''};var ival=0,last=0,init=false;function now(){return(new Date()).getTime();}
  function on(name,fn){if(D.addEventListener){try{D.addEventListener(name,fn,false);}catch(e){D.addEventListener(name,fn);}}else if(D.attachEvent){D.attachEvent('on'+name,fn);}else{throw'on() failed';}}
  function make_event(type){var r;if(D.createEvent){r=D.createEvent("HTMLEvents");r.initEvent(type,true,false);}else if(D.createEventObject){r=D.createEventObject();}else{r=null;}
  return r;}
  var can_fake_events=(function(){var cached=false,r=null;function test(){var type='forcedtimeoutfakeevent',e=make_event(type);try{if(D.dispatchEvent){D.dispatchEvent(e);}else if(D.fireEvent){D.fireEvent('on'+type);}else{return false;}
  return true;}catch(err){return false;}}
  return function(){if(!cached){cached=true;r=test();}
  return r;};})();function fire(type){if(can_fake_events()){var e=make_event(type);if(D.dispatchEvent){D.dispatchEvent(e);}else if(D.fireEvent){D.fireEvent('on'+type);}else{throw'fire() failed';}}else if(D['on'+type]){D['on'+type]();}else{}}
  function ready(fn){if(D.addEventListener){on('DOMContentLoaded',fn);}else if(D.attachEvent){on('readystatechange',function(){if(D.readyState=='complete')
  fn();});}else{throw'ready() failed';}}
  function get(id){var e=D.getElementById(P+id);return e?e.getAttribute('value'):DEFAULTS[id];}
  function reset(){last=now();}
  function expire(text){clearInterval(ival);D.body.innerText=text;fire('forcedtimeout');}
  ready(function(){if(init)
  return;init=true;var debug=!!get('debug'),time=parseInt(get('time'),10)*60000,text=get('text'),evs=get('events').split(/\s+/),poll=60000;if(debug){time=10000;poll=5000;}
  for(var i=0,l=evs.length;i<l;i++)
  on(evs[i],reset);reset();ival=setInterval(function(){if(now()-time>last)
  expire(text);},poll);});})(document,'x-forced-timeout-');