LowPro={};LowPro.Version="0.5";LowPro.CompatibleWithPrototype="1.6";if(Prototype.Version.indexOf(LowPro.CompatibleWithPrototype)!=0&&console&&console.warn){console.warn("This version of Low Pro is tested with Prototype "+LowPro.CompatibleWithPrototype+" it may not work as expected with this version ("+Prototype.Version+")")}if(!Element.addMethods){Element.addMethods=function(A){Object.extend(Element.Methods,A)}}DOM={};DOM.Builder={tagFunc:function(A){return function(){var B,C;if(arguments.length>0){if(arguments[0].nodeName||typeof arguments[0]=="string"){C=arguments}else{B=arguments[0];C=Array.prototype.slice.call(arguments,1)}}return DOM.Builder.create(A,B,C)}},create:function(A,B,D){B=B||{};D=D||[];A=A.toLowerCase();var E=new Element(A,B);for(var C=0;C<D.length;C++){if(typeof D[C]=="string"){D[C]=document.createTextNode(D[C])}E.appendChild(D[C])}return $(E)}};(function(){var B=("p|div|span|strong|em|img|table|tr|td|th|thead|tbody|tfoot|pre|code|h1|h2|h3|h4|h5|h6|ul|ol|li|form|input|textarea|legend|fieldset|select|option|blockquote|cite|br|hr|dd|dl|dt|address|a|button|abbr|acronym|script|link|style|bdo|ins|del|object|param|col|colgroup|optgroup|caption|label|dfn|kbd|samp|var").split("|");var C,A=0;while(C=B[A++]){window["$"+C]=DOM.Builder.tagFunc(C)}})();DOM.Builder.fromHTML=function(B){var A;if(!(A=arguments.callee._root)){A=arguments.callee._root=document.createElement("div")}A.innerHTML=B;return A.childNodes[0]};Object.extend(Event,{onReady:function(A){if(document.body){A()}else{document.observe("dom:loaded",A)}}});Event.addBehavior=function(B){var A=this.addBehavior;Object.extend(A.rules,B);if(!A.responderApplied){Ajax.Responders.register({onComplete:function(){if(Event.addBehavior.reassignAfterAjax){setTimeout(function(){A.reload()},10)}}});A.responderApplied=true}if(A.autoTrigger){this.onReady(A.load.bind(A,B))}};Object.extend(Event.addBehavior,{rules:{},cache:[],reassignAfterAjax:false,autoTrigger:true,load:function(D){for(var B in D){var C=D[B];var A=B.split(",");A.each(function(G){var H=G.split(/:(?=[a-z]+$)/),E=H[0],F=H[1];$$(E).each(function(I){if(F){C=Event.addBehavior._wrapObserver(C);$(I).observe(F,C);Event.addBehavior.cache.push([I,F,C])}else{if(!I.$$assigned||!I.$$assigned.include(C)){if(C.attach){C.attach(I)}else{C.call($(I))}I.$$assigned=I.$$assigned||[];I.$$assigned.push(C)}}})})}},unload:function(){this.cache.each(function(A){Event.stopObserving.apply(Event,A)});this.cache=[]},reload:function(){var A=Event.addBehavior;A.unload();A.load(A.rules)},_wrapObserver:function(A){return function(B){if(A.call(this,B)===false){B.stop()}}}});Event.observe(window,"unload",Event.addBehavior.unload.bind(Event.addBehavior));$$$=Event.addBehavior.bind(Event);var Behavior={create:function(){var D=null,C=$A(arguments);if(Object.isFunction(C[0])){D=C.shift()}var E=function(){var G=arguments.callee;if(!this.initialize){var F=$A(arguments);return function(){var H=[this].concat(F);G.attach.apply(G,H)}}else{var F=(arguments.length==2&&arguments[1] instanceof Array)?arguments[1]:Array.prototype.slice.call(arguments,1);this.element=$(arguments[0]);this.initialize.apply(this,F);G._bindEvents(this);G.instances.push(this)}};Object.extend(E,Class.Methods);Object.extend(E,Behavior.Methods);E.superclass=D;E.subclasses=[];E.instances=[];if(D){var A=function(){};A.prototype=D.prototype;E.prototype=new A;D.subclasses.push(E)}for(var B=0;B<C.length;B++){E.addMethods(C[B])}if(!E.prototype.initialize){E.prototype.initialize=Prototype.emptyFunction}E.prototype.constructor=E;return E},Methods:{attach:function(A){return new this(A,Array.prototype.slice.call(arguments,1))},_bindEvents:function(A){for(var B in A){if(B.match(/^on(.+)/)&&typeof A[B]=="function"){A.element.observe(RegExp.$1,Event.addBehavior._wrapObserver(A[B].bindAsEventListener(A)))}}}}};Remote=Behavior.create({initialize:function(A){if(this.element.nodeName=="FORM"){new Remote.Form(this.element,A)}else{new Remote.Link(this.element,A)}}});Remote.Base={initialize:function(A){this.options=Object.extend({evaluateScripts:true},A||{})},_makeRequest:function(A){if(A.update){new Ajax.Updater(A.update,A.url,A)}else{new Ajax.Request(A.url,A)}return false}};Remote.Link=Behavior.create(Remote.Base,{onclick:function(){var A=Object.extend({url:this.element.href,method:"get"},this.options);return this._makeRequest(A)}});Remote.Form=Behavior.create(Remote.Base,{onclick:function(B){var A=B.element();if(["input","button"].include(A.nodeName.toLowerCase())&&A.type=="submit"){this._submitButton=A}},onsubmit:function(){var A=Object.extend({url:this.element.action,method:this.element.method||"get",parameters:this.element.serialize({submit:this._submitButton.name})},this.options);this._submitButton=null;return this._makeRequest(A)}});Observed=Behavior.create({initialize:function(B,A){this.callback=B.bind(this);this.options=A||{};this.observer=(this.element.nodeName=="FORM")?this._observeForm():this._observeField()},stop:function(){this.observer.stop()},_observeForm:function(){return(this.options.frequency)?new Form.Observer(this.element,this.options.frequency,this.callback):new Form.EventObserver(this.element,this.callback)},_observeField:function(){return(this.options.frequency)?new Form.Element.Observer(this.element,this.options.frequency,this.callback):new Form.Element.EventObserver(this.element,this.callback)}})