var Rules={};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(B){var A=null;this._unloadCache();B._each(function(D){var C=$A(D.key.split(","));C.each(function(E){var G=E.split(":");var F=G[1];$$(G[0]).each(function(H){if(G[1]==""||G.length==1){return D.value(H)}if(F.toLowerCase()=="loaded"){this.timer[G[0]]=setInterval(this._checkLoaded.bind(this,H,G[0],D),15)}else{A=function(J){var I=Event.element(J);if(I.nodeType==3){I=I.parentNode}D.value($(I),J)};this.cache.push([H,F,A]);Event.observe(H,F,A)}}.bind(this))}.bind(this))}.bind(this))},_unloadCache:function(){if(!this.cache){return }for(var A=0;A<this.cache.length;A++){Event.stopObserving.apply(this,this.cache[A]);this.cache[A][0]=null}this.cache=[]},_checkLoaded:function(A,D,C){var B=$(A);if(A.tagName!="undefined"){clearInterval(this.timer[D]);C.value(B)}},_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)}});