Element.collectTextNodes=function(a){return $A($(a).childNodes).collect(function(b){return(b.nodeType==3?b.nodeValue:(b.hasChildNodes()?Element.collectTextNodes(b):""))}).flatten().join("")};Element.collectTextNodesIgnoreClass=function(a,b){return $A($(a).childNodes).collect(function(c){return(c.nodeType==3?c.nodeValue:((c.hasChildNodes()&&!Element.hasClassName(c,b))?Element.collectTextNodesIgnoreClass(c,b):""))}).flatten().join("")};Element.setStyle=function(a,b){a=$(a);for(k in b){a.style[k.camelize()]=b[k]}};Element.setContentZoom=function(a,b){Element.setStyle(a,{fontSize:(b/100)+"em"});if(navigator.appVersion.indexOf("AppleWebKit")>0){window.scrollBy(0,0)}};Element.getOpacity=function(b){var a;if(a=Element.getStyle(b,"opacity")){return parseFloat(a)}if(a=(Element.getStyle(b,"filter")||"").match(/alpha\(opacity=(.*)\)/)){if(a[1]){return parseFloat(a[1])/100}}return 1};Element.setOpacity=function(a,b){a=$(a);if(b==1){Element.setStyle(a,{opacity:(/Gecko/.test(navigator.userAgent)&&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:null});if(/MSIE/.test(navigator.userAgent)){Element.setStyle(a,{filter:Element.getStyle(a,"filter").replace(/alpha\([^\)]*\)/gi,"")})}}else{if(b<0.00001){b=0}Element.setStyle(a,{opacity:b});if(/MSIE/.test(navigator.userAgent)){Element.setStyle(a,{filter:Element.getStyle(a,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+b*100+")"})}}};Element.getInlineOpacity=function(a){return $(a).style.opacity||""};Element.childrenWithClassName=function(a,b){return $A($(a).getElementsByTagName("*")).select(function(d){return Element.hasClassName(d,b)})};Array.prototype.call=function(){var a=arguments;this.each(function(b){b.apply(this,a)})};var Effect={tagifyText:function(a){var b="position:relative";if(/MSIE/.test(navigator.userAgent)){b+=";zoom:1"}a=$(a);$A(a.childNodes).each(function(c){if(c.nodeType==3){c.nodeValue.toArray().each(function(d){a.insertBefore(Builder.node("span",{style:b},d==" "?String.fromCharCode(160):d),c)});Element.remove(c)}})},multiple:function(b,c){var e;if(((typeof b=="object")||(typeof b=="function"))&&(b.length)){e=b}else{e=$(b).childNodes}var a=Object.extend({speed:0.1,delay:0},arguments[2]||{});var d=a.delay;$A(e).each(function(g,f){new c(g,Object.extend(a,{delay:f*a.speed+d}))})},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(b,c){b=$(b);c=(c||"appear").toLowerCase();var a=Object.extend({queue:{position:"end",scope:(b.id||"global"),limit:1}},arguments[2]||{});Effect[Element.visible(b)?Effect.PAIRS[c][1]:Effect.PAIRS[c][0]](b,a)}};var Effect2=Effect;Effect.Transitions={};Effect.Transitions.linear=function(a){return a};Effect.Transitions.none=function(a){return 0};Effect.Transitions.full=function(a){return 1};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){this.effects=[];this.interval=null},_each:function(a){this.effects._each(a)},add:function(b){var c=new Date().getTime();var a=(typeof b.options.queue=="string")?b.options.queue:b.options.queue.position;switch(a){case"front":this.effects.findAll(function(d){return d.state=="idle"}).each(function(d){d.startOn+=b.finishOn;d.finishOn+=b.finishOn});break;case"end":c=this.effects.pluck("finishOn").max()||c;break}b.startOn+=c;b.finishOn+=c;if(!b.options.queue.limit||(this.effects.length<b.options.queue.limit)){this.effects.push(b)}if(!this.interval){this.interval=setInterval(this.loop.bind(this),40)}},remove:function(a){this.effects=this.effects.reject(function(b){return b==a});if(this.effects.length==0){clearInterval(this.interval);this.interval=null}},loop:function(){var a=new Date().getTime();this.effects.invoke("loop",a)}});Effect.Queues={instances:$H(),get:function(a){if(typeof a!="string"){return a}if(!this.instances[a]){this.instances[a]=new Effect.ScopedQueue()}return this.instances[a]}};Effect.Queue=Effect.Queues.get("global");Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1,fps:25,sync:false,from:0,to:1,delay:0,queue:"parallel"};Effect.Base=function(){};Effect.Base.prototype={position:null,start:function(a){this.options=Object.extend(Object.extend({},Effect.DefaultOptions),a||{});this.currentFrame=0;this.state="idle";this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.event("beforeStart");if(!this.options.sync){Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).add(this)}},loop:function(c){if(c>=this.startOn){if(c>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish()}this.event("afterFinish");return}var b=(c-this.startOn)/(this.finishOn-this.startOn);var a=Math.round(b*this.options.fps*this.options.duration);if(a>this.currentFrame){this.render(b);this.currentFrame=a}}},render:function(a){if(this.state=="idle"){this.state="running";this.event("beforeSetup");if(this.setup){this.setup()}this.event("afterSetup")}if(this.state=="running"){if(this.options.transition){a=this.options.transition(a)}a*=(this.options.to-this.options.from);a+=this.options.from;this.position=a;this.event("beforeUpdate");if(this.update){this.update(a)}this.event("afterUpdate")}},cancel:function(){if(!this.options.sync){Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).remove(this)}this.state="finished"},event:function(a){if(this.options[a+"Internal"]){this.options[a+"Internal"](this)}if(this.options[a]){this.options[a](this)}},inspect:function(){return"#<Effect:"+$H(this).inspect()+",options:"+$H(this.options).inspect()+">"}};Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(b){this.element=$(b);if(/MSIE/.test(navigator.userAgent)&&(!this.element.hasLayout)){Element.setStyle(this.element,{zoom:1})}var a=Object.extend({from:Element.getOpacity(this.element)||0,to:1},arguments[1]||{});this.start(a)},update:function(a){Element.setOpacity(this.element,a)}});Effect.Appear=function(element){var options=Object.extend({from:(Element.getStyle(element,"display")=="none"?0:Element.getOpacity(element)||0),to:1,beforeSetup:function(effect){with(Element){setOpacity(effect.element,effect.options.from);show(effect.element)}}},arguments[1]||{});return new Effect.Opacity(element,options)};
