//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License.

Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(B,A){this.elements=this.subject=$$(B);this.parent(A);},compute:function(G,H,I){var C={};for(var D in G){var A=G[D],E=H[D],F=C[D]={};
for(var B in A){F[B]=this.parent(A[B],E[B],I);}}return C;},set:function(B){for(var C in B){var A=B[C];for(var D in A){this.render(this.elements[C],D,A[D],this.options.unit);
}}return this;},start:function(C){if(!this.check(arguments.callee,C)){return this;}var H={},I={};for(var D in C){var F=C[D],A=H[D]={},G=I[D]={};for(var B in F){var E=this.prepare(this.elements[D],B,F[B]);
A[B]=E.from;G[B]=E.to;}}return this.parent(H,I);}});var Accordion=new Class({Extends:Fx.Elements,options:{display:0,show:false,height:true,width:false,opacity:true,fixedHeight:false,fixedWidth:false,wait:false,alwaysHide:false},initialize:function(){var C=Array.link(arguments,{container:Element.type,options:Object.type,togglers:$defined,elements:$defined});
this.parent(C.elements,C.options);this.togglers=$$(C.togglers);this.container=$(C.container);this.previous=-1;if(this.options.alwaysHide){this.options.wait=true;
}if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show;}if(this.options.start){this.options.display=false;this.options.show=false;
}this.effects={};if(this.options.opacity){this.effects.opacity="fullOpacity";}if(this.options.width){this.effects.width=this.options.fixedWidth?"fullWidth":"offsetWidth";
}if(this.options.height){this.effects.height=this.options.fixedHeight?"fullHeight":"scrollHeight";}for(var B=0,A=this.togglers.length;B<A;B++){this.addSection(this.togglers[B],this.elements[B]);
}this.elements.each(function(E,D){if(this.options.show===D){this.fireEvent("active",[this.togglers[D],E]);}else{for(var F in this.effects){E.setStyle(F,0);
}}},this);if($chk(this.options.display)){this.display(this.options.display);}},addSection:function(E,C,G){E=$(E);C=$(C);var F=this.togglers.contains(E);
var B=this.togglers.length;this.togglers.include(E);this.elements.include(C);if(B&&(!F||G)){G=$pick(G,B-1);E.inject(this.togglers[G],"before");C.inject(E,"after");
}else{if(this.container&&!F){E.inject(this.container);C.inject(this.container);}}var A=this.togglers.indexOf(E);E.addEvent("click",this.display.bind(this,A));
if(this.options.height){C.setStyles({"padding-top":0,"border-top":"none","padding-bottom":0,"border-bottom":"none"});}if(this.options.width){C.setStyles({"padding-left":0,"border-left":"none","padding-right":0,"border-right":"none"});
}C.fullOpacity=1;if(this.options.fixedWidth){C.fullWidth=this.options.fixedWidth;}if(this.options.fixedHeight){C.fullHeight=this.options.fixedHeight;}C.setStyle("overflow","hidden");
if(!F){for(var D in this.effects){C.setStyle(D,0);}}return this;},display:function(A){A=($type(A)=="element")?this.elements.indexOf(A):A;if((this.timer&&this.options.wait)||(A===this.previous&&!this.options.alwaysHide)){return this;
}this.previous=A;var B={};this.elements.each(function(E,D){B[D]={};var C=(D!=A)||(this.options.alwaysHide&&(E.offsetHeight>0));this.fireEvent(C?"background":"active",[this.togglers[D],E]);
for(var F in this.effects){B[D][F]=C?0:E[this.effects[F]];}},this);return this.start(B);}});
var Asset = new Hash({ javascript: function(F, D) {
    D = $extend({ onload: $empty, document: document, check: $lambda(true) }, D); var B = new Element("script", { src: F, type: "text/javascript" });
    var E = D.onload.bind(B), A = D.check, G = D.document; delete D.onload; delete D.check; delete D.document; B.addEvents({ load: E, readystatechange: function() {
        if (["loaded", "complete"].contains(this.readyState)) {
            E();
        } 
    } 
    }).setProperties(D); if (Browser.Engine.webkit419) { var C = (function() { if (!$try(A)) { return; } $clear(C); E(); }).periodical(50); } return B.inject(G.head);
}, css: function(B, A) {
    return new Element("link", $merge({ rel: "stylesheet", media: "screen", type: "text/css", href: B }, A)).inject(document.head);
}, image: function(C, B) {
    B = $merge({ onload: $empty, onabort: $empty, onerror: $empty }, B); var D = new Image(); var A = $(D) || new Element("img"); ["load", "abort", "error"].each(function(E) {
        var F = "on" + E;
        var G = B[F]; delete B[F]; D[F] = function() {
            if (!D) { return; } if (!A.parentNode) { A.width = D.width; A.height = D.height; } D = D.onload = D.onabort = D.onerror = null; G.delay(1, A, A);
            A.fireEvent(E, A, 1);
        };
    }); D.src = A.src = C; if (D && D.complete) { D.onload.delay(1); } return A.setProperties(B);
}, images: function(D, C) {
    C = $merge({ onComplete: $empty, onProgress: $empty }, C);
    if (!D.push) { D = [D]; } var A = []; var B = 0; D.each(function(F) {
        var E = new Asset.image(F, { onload: function() {
            C.onProgress.call(this, B, D.indexOf(F)); B++; if (B == D.length) {
                C.onComplete();
            } 
        } 
        }); A.push(E);
    }); return new Elements(A);
}
});
