var InvisibleCaptcha = function(form, params) {
  
  /***************
  INITIALIZATION
  ***************/
  
  form = $(form)
  params = params || {}
  
  var _min_time_between_keypresses = params.min_time_between_keypresses || 20 // milliseconds
  var _min_keypresses = params.min_keypresses || 10
  
  var _last_keypress_time = new Date().getTime()
  var _num_keypresses = 0
  
  
  /***************
  PRIVATE FUNCTIONS
  ***************/
  
  var observe_keypress = function(e) {
    var time = new Date().getTime()
    if(time - _last_keypress_time < _min_time_between_keypresses) return;
    _last_keypress_time = time
    _num_keypresses += 1
  }
  
  form.find('input, textarea').keydown(observe_keypress)
  
  
  /***************
  PUBLIC FUNCTIONS
  ***************/
  
  var verify = function() {
    return _num_keypresses >= _min_keypresses
  }
  
  
  return {
    verify: verify
  }
  
}