/**
* Observer - Observe formelements for changes
*
* @version		1.0rc1
*
* @license		MIT-style license
* @author		Harald Kirschner <mail [at] digitarald.de>
* @copyright	Author
*/
var Observer = new Class({
options: {
periodical: false,
delay: 1000
},
initialize: function(el, onFired, options){
this.setOptions(options);
this.addEvent('onFired', onFired);
this.element = $(el);
this.listener = this.fired.bind(this);
this.value = this.element.getValue();
if (this.options.periodical) this.timer = this.listener.periodical(this.options.periodical);
else this.element.addEvent('keyup', this.listener);
},
fired: function() {
var value = this.element.getValue();
if (this.value == value) return;
this.clear();
this.value = value;
this.timeout = this.fireEvent.delay(this.options.delay, this, ['onFired', [value]]);
},
clear: function() {
$clear(this.timeout);
return this;
}
});
Observer.implement(new Options);
Observer.implement(new Events);
