LowPro={};LowPro.Version="0.4";if(!Element.addMethods){Element.addMethods=function(o){Object.extend(Element.Methods,o)}}DOM={nextElement:function(element){element=$(element);while(element=element.nextSibling){if(element.nodeType==1){return element}}return null},previousElement:function(element){element=$(element);while(element=element.previousSibling){if(element.nodeType==1){return element}}return null},remove:function(element){element=$(element);return element.parentNode.removeChild(element)},insertAfter:function(element,node,otherNode){element=$(element);return element.insertBefore(node,otherNode.nextSibling)},addBefore:function(element,node){element=$(element);return element.parentNode.insertBefore(node,element)},addAfter:function(element,node){element=$(element);return $(element.parentNode).insertAfter(node,element)},replaceElement:function(element,node){$(element).parentNode.replaceChild(node,element);return node}};Element.addMethods(DOM);DOM.Builder={IE_TRANSLATIONS:{"class":"className","for":"htmlFor"},ieAttrSet:function(attrs,attr,el){var trans;if(trans=this.IE_TRANSLATIONS[attr]){el[trans]=attrs[attr]}else{if(attr=="style"){el.style.cssText=attrs[attr]}else{if(attr.match(/^on/)){el[attr]=new Function(attrs[attr])}else{el.setAttribute(attr,attrs[attr])}}}},tagFunc:function(tag){return function(){var attrs,children;if(arguments.length>0){if(arguments[0].nodeName||typeof arguments[0]=="string"){children=arguments}else{attrs=arguments[0];children=[].slice.call(arguments,1)}}return DOM.Builder.create(tag,attrs,children)}},create:function(tag,attrs,children){attrs=attrs||{};children=children||[];var isIE=navigator.userAgent.match(/MSIE/);var el=document.createElement((isIE&&attrs.name)?"<"+tag+" name="+attrs.name+">":tag);for(var attr in attrs){if(typeof attrs[attr]!="function"){if(isIE){this.ieAttrSet(attrs,attr,el)}else{el.setAttribute(attr,attrs[attr].toString())}}}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)}})();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 domReady=this._domReady;if(domReady.done){return f()}if(document.addEventListener){document.addEventListener("DOMContentLoaded",domReady,false);
/*@cc_on @*/
/*@if (@_win32)
            var dummy = location.protocol == "https:" ?  "https://javascript:void(0)" : "javascript:void(0)";
            document.write("<script id=__ie_onload defer src='" + dummy + "'><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") { domReady(); }
            };
        /*@end @*/
}if(/WebKit/i.test(navigator.userAgent)){this._timer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){domReady()}},10)}Event.observe(window,"load",domReady);Event._readyCallbacks=[]}Event._readyCallbacks.push(f)}});Object.extend(Event,{observe:function(el,type,func){el=$(el);if(!func.$$guid){func.$$guid=Event._guid++}if(!el.events){el.events={}}var handlers=el.events[type];if(!handlers){handlers=el.events[type]={};if(el["on"+type]){handlers[0]=el["on"+type]}}handlers[func.$$guid]=func;el["on"+type]=Event._handleEvent;if(!Event.observers){Event.observers=[]}Event.observers.push([el,type,func,false])},stopObserving:function(el,type,func){el=$(el);if(el.events&&el.events[type]){delete el.events[type][func.$$guid]}for(var i=0;i<Event.observers.length;i++){if(Event.observers[i][0]==el&&Event.observers[i][1]==type&&Event.observers[i][1]==func){delete Event.observers[i]}}},_handleEvent:function(e){var returnValue=true;e=e||Event._fixEvent(window.event);var handlers=this.events[e.type],el=$(this);for(var i in handlers){el.$$handleEvent=handlers[i];if(el.$$handleEvent(e)===false){returnValue=false}}return returnValue},_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(element,event,fakeEvent){element=$(element);fakeEvent=fakeEvent||{type:event};if(element.events&&element.events[event]){$H(element.events[event]).each(function(cache){cache[1].call(element,fakeEvent)})}}});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.unload();ab.load(ab.rules)},10)}}});ab.responderApplied=true}if(ab.autoTrigger){this.onReady(ab.load.bind(ab,rules))}};Object.extend(Event.addBehavior,{rules:{},cache:[],reassignAfterAjax:true,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){$(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=[]}});Event.observe(window,"unload",Event.addBehavior.unload.bind(Event.addBehavior));Behavior={create:function(members){var behavior=function(){if(this==window){var args=[],behavior=arguments.callee;for(var i=0;i<arguments.length;i++){args.push(arguments[i])}return function(element){var initArgs=[this].concat(args);behavior.attach.apply(behavior,initArgs)}}else{this.element=$(arguments[0])}};behavior.prototype.initialize=Prototype.K;Object.extend(behavior.prototype,members);Object.extend(behavior,Behavior.ClassMethods);return behavior},ClassMethods:{attach:function(){var element=arguments[0];var bound=new this(element);bound.initialize.apply(bound,[].slice.call(arguments,1));this._bindEvents(bound);return bound},_bindEvents:function(bound){for(var member in bound){if(member.match(/^on(.+)/)&&typeof bound[member]=="function"){bound.element.observe(RegExp.$1,bound[member].bindAsEventListener(bound))}}}}};