var current_time = new Date();
var keystroke_timer = current_time.getTime();
function trim12 (str) {
	 //http://blog.stevenlevithan.com/archives/faster-trim-javascript
  var	str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
  }
  function autosave(content, id){
    id = id[1];
    content = trim12(content.innerHTML);
    //if(content != box_cache[id]){ 
    new Ajax.Updater('alert_box', 'request.php', {
      asynchronous:true, 
      evalScripts:true, 
      onSuccess: function(){ 
                      new Effect.Appear('alert_box', {queue: 'front', duration: .25}); 
                      new Effect.Highlight('alert_box'); 
                      new Effect.Pulsate('alert_box', {duration: .25, fps: 5 }); 
                      new Effect.Fade('alert_box', { queue: 'end', duration: .5});}, 
      parameters: { content: escape(content), id: id}});
  }
  function update_content(source, destination){
    current_time = new Date();
    if(current_time.getTime() < (keystroke_timer + 500)){
     keystroke_timer = current_time.getTime();
    }
    else {
      var dest = document.getElementById(destination);
      dest.innerHTML = source;
      keystroke_timer = current_time.getTime();
    }
  }