LowPro={};
LowPro.Version="0.1";
Object.extend(Event,{_domReady:function(){
if(arguments.callee.done){
return;
}
arguments.callee.done=true;
if(Event._timer){
clearInterval(Event._timer);
}
Event._readyCallbacks.each(function(f){
f();
});
Event._readyCallbacks=null;
},onReady:function(f){
if(!this._readyCallbacks){
var _3=this._domReady;
if(_3.done){
return f();
}
if(document.addEventListener){
document.addEventListener("DOMContentLoaded",_3,false);
}
if(/WebKit/i.test(navigator.userAgent)){
this._timer=setInterval(function(){
if(/loaded|complete/.test(document.readyState)){
_3();
}
},10);
}
Event.observe(window,"load",_3);
Event._readyCallbacks=[];
}
Event._readyCallbacks.push(f);
}});
if(!Element.addMethods){
Element.addMethods=function(o){
Object.extend(Element.Methods,o);
};
}
Element.addMethods({observe:function(el,_6,_7){
Event.observe(el,_6,_7);
},stopObserving:function(el,_9,_a){
Event.stopObserving(el,_9,_a);
}});
Object.extend(Event,{observe:function(el,_c,_d){
el=$(el);
if(!_d.$$guid){
_d.$$guid=Event._guid++;
}
if(!el.events){
el.events={};
}
var _e=el.events[_c];
if(!_e){
_e=el.events[_c]={};
if(el["on"+_c]){
_e[0]=el["on"+_c];
}
}
_e[_d.$$guid]=_d;
el["on"+_c]=Event._handleEvent;
if(!Event.observers){
Event.observers=[];
}
Event.observers.push([el,name,_d,false]);
},stopObserving:function(el,_10,_11){
if(el.events&&el.events[_10]){
delete el.events[_10][_11.$$guid];
}
},_handleEvent:function(e){
var _13=true;
e=e||Event._fixEvent(window.event);
var _14=this.events[e.type],el=$(this);
for(var i in _14){
el.$$handleEvent=_14[i];
if(el.$$handleEvent(e)===false){
_13=false;
}
}
return _13;
},_fixEvent:function(e){
e.preventDefault=Event._preventDefault;
e.stopPropagation=Event._stopPropagation;
return e;
},_preventDefault:function(){
this.returnValue=false;
},_stopPropagation:function(){
this.cancelBubble=true;
},_guid:1});
Object.extend(Event,{trigger:function(_18,_19,_1a){
_18=$(_18);
_1a=_1a||{type:_19};
this.observers.each(function(_1b){
if(_1b[0]==_18&&_1b[1]==_19){
_1b[2].call(_18,_1a);
}
});
}});
Event.addBehavior=function(_1c){
var ab=this.addBehavior;
Object.extend(ab.rules,_1c);
if(ab.autoTrigger){
this.onReady(ab.load.bind(ab));
}
Ajax.Responders.register({onComplete:function(){
if(Event.addBehavior.reassignAfterAjax){
setTimeout(function(){
ab.load();
},10);
}
}});
};
Object.extend(Event.addBehavior,{rules:{},cache:[],reassignAfterAjax:true,autoTrigger:true,load:function(){
this.unload();
for(var _1e in this.rules){
var _1f=this.rules[_1e];
var _20=_1e.split(",");
_20.each(function(sel){
var _22=sel.split(/:(?=[a-z]+$)/),css=_22[0],_24=_22[1];
$$(css).each(function(_25){
if(_24){
$(_25).observe(_24,_1f);
Event.addBehavior.cache.push([_25,_24,_1f]);
}else{
if(!_25.$$assigned||!_25.$$assigned.include(_1f)){
if(_1f.attach){
_1f.attach(_25);
}else{
_1f.call($(_25));
}
_25.$$assigned=_25.$$assigned||[];
_25.$$assigned.push(_1f);
}
}
});
});
}
},unload:function(){
this.cache.each(function(c){
Event.stopObserving.apply(Event,c);
});
}});
Event.observe(window,"unload",Event.addBehavior.unload.bind(Event.addBehavior));
Behavior={create:function(_27){
var _28=Class.create();
_28.prototype.initialize=Prototype.K;
Object.extend(_28.prototype,_27);
Object.extend(_28,Behavior.ClassMethods);
return _28;
},ClassMethods:{attach:function(_29){
var _2a=new this;
_2a.element=$(_29);
this._bindEvents(_2a);
return _2a;
},_bindEvents:function(_2b){
for(var _2c in _2b){
if(_2c.match(/^on(.+)/)&&typeof _2b[_2c]=="function"){
_2b.element.observe(RegExp.$1,_2b[_2c].bindAsEventListener(_2b));
}
}
}}};
LowPro.SelectorLite=Class.create();
LowPro.SelectorLite.prototype={initialize:function(_2d){
this.results=[];
this.selectors=[];
this.index=0;
for(var i=_2d.length-1;i>=0;i--){
var _2f={tag:"*",id:null,classes:[]};
var _30=_2d[i];
var _31=_30.length-1;
do{
var id=_30.lastIndexOf("#");
var _33=_30.lastIndexOf(".");
var _34=Math.max(id,_33);
if(_34==-1){
_2f.tag=_30.toUpperCase();
}else{
if(id==-1||_33==_34){
_2f.classes.push(_30.substring(_33+1));
}else{
if(!_2f.id){
_2f.id=_30.substring(id+1);
}
}
}
_30=_30.substring(0,_34);
}while(_34>0);
this.selectors[i]=_2f;
}
},get:function(_35){
this.findElements(_35||document,this.index==(this.selectors.length-1));
return this.results;
},findElements:function(_36,_37){
var _38=this.selectors[this.index],_39=[],_3a;
if(_38.id){
_3a=$(_38.id);
if(_3a&&(_38.tag=="*"||_3a.tagName==_38.tag)&&(_3a.childOf(_36))){
_39=[_3a];
}
}else{
_39=$A(_36.getElementsByTagName(_38.tag));
}
if(_38.classes.length==1){
_39=_39.select(function(_3b){
return $(_3b).hasClassName(_38.classes[0]);
});
}else{
if(_38.classes.length>1){
_39=_39.select(function(_3c){
var _3d=$(_3c).classNames();
return _38.classes.all(function(_3e){
return _3d.include(_3e);
});
});
}
}
if(_37){
this.results=this.results.concat(_39);
}else{
++this.index;
_39.each(function(_3f){
this.findElements(_3f,this.index==(this.selectors.length-1));
}.bind(this));
}
}};
LowPro.$$old=$$;
LowPro.optimize$$=true;
function $$(a,b){
if(LowPro.optimize$$==false||b||a.indexOf("[")>=0){
return LowPro.$$old.apply(this,arguments);
}
return new LowPro.SelectorLite(a.split(/\s+/)).get();
}

