var EventSelectors={version:'1.0_pre',cache:[],start:function(a){this.rules=a||{};this.timer=new Array();this._extendRules();this.assign(this.rules)},assign:function(i){var j=null;this._unloadCache();i._each(function(g){var h=$A(g.key.split(','));h.each(function(d){var e=d.split(':');var f=e[1];$$(e[0]).each(function(c){if(e[1]==''||e.length==1)return g.value(c);if(f.toLowerCase()=='loaded'){this.timer[e[0]]=setInterval(this._checkLoaded.bind(this,c,e[0],g),15)}else{j=function(a){var b=Event.element(a);if(b.nodeType==3)b=b.parentNode;g.value($(b),a)};this.cache.push([c,f,j]);Event.observe(c,f,j)}}.bind(this))}.bind(this))}.bind(this))},_unloadCache:function(){if(!this.cache)return;for(var i=0;i<this.cache.length;i++){Event.stopObserving.apply(this,this.cache[i]);this.cache[i][0]=null}this.cache=[]},_checkLoaded:function(a,b,c){var d=$(a);if(a.tagName!='undefined'){clearInterval(this.timer[b]);c.value(d)}},_extendRules:function(){Object.extend(this.rules,{_each:function(a){for(key in this){if(key=='_each')continue;var b=this[key];var c=[key,b];c.key=key;c.value=b;a(c)}}})}};Ajax.Responders.register({onComplete:function(){EventSelectors.assign(Rules)}})