LowPro={};LowPro.Version='0.5';LowPro.CompatibleWithPrototype='1.6';if(Prototype.Version.indexOf(LowPro.CompatibleWithPrototype)!=0&&window.console&&window.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(o){Object.extend(Element.Methods,o)};DOM={};DOM.Builder={tagFunc:function(tag){return function(){var attrs,children;if(arguments.length>0){if(arguments[0].constructor==Object){attrs=arguments[0];children=Array.prototype.slice.call(arguments,1);}else{children=arguments;};children=$A(children).flatten()}
return DOM.Builder.create(tag,attrs,children);};},create:function(tag,attrs,children){attrs=attrs||{};children=children||[];tag=tag.toLowerCase();var el=new Element(tag,attrs);for(var i=0;i<children.length;i++){if(typeof children[i]=='string')
children[i]=document.createTextNode(children[i]);el.appendChild(children[i]);}
return $(el);}};(function(){var els=("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 el,i=0;while(el=els[i++])
window['$'+el]=DOM.Builder.tagFunc(el);})();DOM.Builder.fromHTML=function(html){var root;if(!(root=arguments.callee._root))
root=arguments.callee._root=document.createElement('div');root.innerHTML=html;return root.childNodes[0];};Object.extend(Event,{onReady:function(f){if(document.body)f();else document.observe('dom:loaded',f);}});Event.addBehavior=function(rules){var ab=this.addBehavior;Object.extend(ab.rules,rules);if(!ab.responderApplied){Ajax.Responders.register({onComplete:function(){if(Event.addBehavior.reassignAfterAjax)
setTimeout(function(){ab.reload()},10);}});ab.responderApplied=true;}
if(ab.autoTrigger){this.onReady(ab.load.bind(ab,rules));}};Event.delegate=function(rules){return function(e){var element=$(e.element());for(var selector in rules)
if(element.match(selector))return rules[selector].apply(this,$A(arguments));}}
Object.extend(Event.addBehavior,{rules:{},cache:[],reassignAfterAjax:false,autoTrigger:true,load:function(rules){for(var selector in rules){var observer=rules[selector];var sels=selector.split(',');sels.each(function(sel){var parts=sel.split(/:(?=[a-z]+$)/),css=parts[0],event=parts[1];$$(css).each(function(element){if(event){observer=Event.addBehavior._wrapObserver(observer);$(element).observe(event,observer);Event.addBehavior.cache.push([element,event,observer]);}else{if(!element.$$assigned||!element.$$assigned.include(observer)){if(observer.attach)observer.attach(element);else observer.call($(element));element.$$assigned=element.$$assigned||[];element.$$assigned.push(observer);}}});});}},unload:function(){this.cache.each(function(c){Event.stopObserving.apply(Event,c);});this.cache=[];},reload:function(){var ab=Event.addBehavior;ab.unload();ab.load(ab.rules);},_wrapObserver:function(observer){return function(event){if(observer.call(this,event)===false)event.stop();}}});Event.observe(window,'unload',Event.addBehavior.unload.bind(Event.addBehavior));$$$=Event.addBehavior.bind(Event);var Behavior={create:function(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0]))
parent=properties.shift();var behavior=function(){var behavior=arguments.callee;if(!this.initialize){var args=$A(arguments);return function(){var initArgs=[this].concat(args);behavior.attach.apply(behavior,initArgs);};}else{var args=(arguments.length==2&&arguments[1]instanceof Array)?arguments[1]:Array.prototype.slice.call(arguments,1);this.element=$(arguments[0]);this.initialize.apply(this,args);behavior._bindEvents(this);behavior.instances.push(this);}};Object.extend(behavior,Class.Methods);Object.extend(behavior,Behavior.Methods);behavior.superclass=parent;behavior.subclasses=[];behavior.instances=[];if(parent){var subclass=function(){};subclass.prototype=parent.prototype;behavior.prototype=new subclass;parent.subclasses.push(behavior);}
for(var i=0;i<properties.length;i++)
behavior.addMethods(properties[i]);if(!behavior.prototype.initialize)
behavior.prototype.initialize=Prototype.emptyFunction;behavior.prototype.constructor=behavior;return behavior;},Methods:{attach:function(element){return new this(element,Array.prototype.slice.call(arguments,1));},_bindEvents:function(bound){for(var member in bound)
if(member.match(/^on(.+)/)&&typeof bound[member]=='function')
bound.element.observe(RegExp.$1,Event.addBehavior._wrapObserver(bound[member].bindAsEventListener(bound)));}}};Remote=Behavior.create({initialize:function(options){if(this.element.nodeName=='FORM')new Remote.Form(this.element,options);else new Remote.Link(this.element,options);}});Remote.Base={initialize:function(options){this.options=Object.extend({evaluateScripts:true},options||{});this._bindCallbacks();},_makeRequest:function(options){if(options.update)new Ajax.Updater(options.update,options.url,options);else new Ajax.Request(options.url,options);return false;},_bindCallbacks:function(){$w('onCreate onComplete onException onFailure onInteractive onLoading onLoaded onSuccess').each(function(cb){if(Object.isFunction(this.options[cb]))
this.options[cb]=this.options[cb].bind(this);}.bind(this));}}
Remote.Link=Behavior.create(Remote.Base,{onclick:function(){var options=Object.extend({url:this.element.href,method:'get'},this.options);return this._makeRequest(options);}});Remote.Form=Behavior.create(Remote.Base,{onclick:function(e){var sourceElement=e.element();if(['input','button'].include(sourceElement.nodeName.toLowerCase())&&sourceElement.type=='submit')
this._submitButton=sourceElement;},onsubmit:function(){var options=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(options);}});Observed=Behavior.create({initialize:function(callback,options){this.callback=callback.bind(this);this.options=options||{};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);}});var ResizingTextArea=Class.create();ResizingTextArea.prototype={defaultRows:1,initialize:function(field)
{this.defaultRows=Math.max(field.rows,1);this.resizeNeeded=this.resizeNeeded.bindAsEventListener(this);Event.observe(field,"click",this.resizeNeeded);Event.observe(field,"keyup",this.resizeNeeded);},resizeNeeded:function(event)
{var t=Event.element(event);var lines=t.value.split('\n');var newRows=lines.length+1;var oldRows=t.rows;for(var i=0;i<lines.length;i++)
{var line=lines[i];if(line.length>=t.cols)newRows+=Math.floor(line.length/t.cols);}
if(newRows>t.rows)t.rows=newRows;if(newRows<t.rows)t.rows=Math.max(this.defaultRows,newRows);}}