/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){var B=YAHOO.util;var A=function(D,C,E,F){if(!D){}this.init(D,C,E,F);};A.NAME="Anim";A.prototype={toString:function(){var C=this.getEl()||{};var D=C.id||C.tagName;return(this.constructor.NAME+": "+D);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(C,E,D){return this.method(this.currentFrame,E,D-E,this.totalFrames);},setAttribute:function(C,F,E){var D=this.getEl();if(this.patterns.noNegatives.test(C)){F=(F>0)?F:0;}if(C in D&&!("style" in D&&C in D.style)){D[C]=F;}else{B.Dom.setStyle(D,C,F+E);}},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if("style" in E){if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}}else{if(C in E){G=E[C];}}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G<C;++G){E[G]=I[G]+F[D]["by"][G]*1;}}else{E=I+F[D]["by"]*1;}}}this.runtimeAttributes[D].start=I;this.runtimeAttributes[D].end=E;this.runtimeAttributes[D].unit=(H(F[D].unit))?F[D]["unit"]:this.getDefaultUnit(D);return true;},init:function(E,J,I,C){var D=false;var F=null;var H=0;E=B.Dom.get(E);this.attributes=J||{};this.duration=!YAHOO.lang.isUndefined(I)?I:1;this.method=C||B.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=B.AnimMgr.fps;this.setEl=function(M){E=B.Dom.get(M);};this.getEl=function(){return E;};this.isAnimated=function(){return D;};this.getStartTime=function(){return F;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(B.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}B.AnimMgr.registerElement(this);return true;};this.stop=function(M){if(!this.isAnimated()){return false;}if(M){this.currentFrame=this.totalFrames;this._onTween.fire();}B.AnimMgr.stop(this);};var L=function(){this.onStart.fire();this.runtimeAttributes={};for(var M in this.attributes){this.setRuntimeAttribute(M);}D=true;H=0;F=new Date();};var K=function(){var O={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};O.toString=function(){return("duration: "+O.duration+", currentFrame: "+O.currentFrame);};this.onTween.fire(O);var N=this.runtimeAttributes;for(var M in N){this.setAttribute(M,this.doMethod(M,N[M].start,N[M].end),N[M].unit);}H+=1;};var G=function(){var M=(new Date()-F)/1000;var N={duration:M,frames:H,fps:H/M};N.toString=function(){return("duration: "+N.duration+", frames: "+N.frames+", fps: "+N.fps);};D=false;H=0;this.onComplete.fire(N);};this._onStart=new B.CustomEvent("_start",this,true);this.onStart=new B.CustomEvent("start",this);this.onTween=new B.CustomEvent("tween",this);this._onTween=new B.CustomEvent("_tween",this,true);this.onComplete=new B.CustomEvent("complete",this);this._onComplete=new B.CustomEvent("_complete",this,true);this._onStart.subscribe(L);this._onTween.subscribe(K);this._onComplete.subscribe(G);}};B.Anim=A;})();YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F===-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]===H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};this._queue=B;this._getIndex=E;};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){var A=function(F,E,G,H){A.superclass.constructor.call(this,F,E,G,H);};A.NAME="ColorAnim";A.DEFAULT_BGCOLOR="#fff";var C=YAHOO.util;YAHOO.extend(A,C.Anim);var D=A.superclass;var B=A.prototype;B.patterns.color=/color$/i;B.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;B.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;B.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;B.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;B.parseColor=function(E){if(E.length==3){return E;}var F=this.patterns.hex.exec(E);if(F&&F.length==4){return[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)];}F=this.patterns.rgb.exec(E);if(F&&F.length==4){return[parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10)];}F=this.patterns.hex3.exec(E);if(F&&F.length==4){return[parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16)];
}return null;};B.getAttribute=function(E){var G=this.getEl();if(this.patterns.color.test(E)){var I=YAHOO.util.Dom.getStyle(G,E);var H=this;if(this.patterns.transparent.test(I)){var F=YAHOO.util.Dom.getAncestorBy(G,function(J){return !H.patterns.transparent.test(I);});if(F){I=C.Dom.getStyle(F,E);}else{I=A.DEFAULT_BGCOLOR;}}}else{I=D.getAttribute.call(this,E);}return I;};B.doMethod=function(F,J,G){var I;if(this.patterns.color.test(F)){I=[];for(var H=0,E=J.length;H<E;++H){I[H]=D.doMethod.call(this,F,J[H],G[H]);}I="rgb("+Math.floor(I[0])+","+Math.floor(I[1])+","+Math.floor(I[2])+")";}else{I=D.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(F){D.setRuntimeAttribute.call(this,F);if(this.patterns.color.test(F)){var H=this.attributes;var J=this.parseColor(this.runtimeAttributes[F].start);var G=this.parseColor(this.runtimeAttributes[F].end);if(typeof H[F]["to"]==="undefined"&&typeof H[F]["by"]!=="undefined"){G=this.parseColor(H[F].by);for(var I=0,E=J.length;I<E;++I){G[I]=J[I]+G[I];}}this.runtimeAttributes[F].start=J;this.runtimeAttributes[F].end=G;}};C.ColorAnim=A;})();
/*
TERMS OF USE - EASING EQUATIONS
Open source under the BSD License.
Copyright 2001 Robert Penner All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
 * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
YAHOO.util.Easing = {
    easeNone: function (B, A, D, C) {
        return D * B / C + A;
    },
    easeIn: function (B, A, D, C) {
        return D * (B /= C) * B + A;
    },
    easeOut: function (B, A, D, C) {
        return -D * (B /= C) * (B - 2) + A;
    },
    easeBoth: function (B, A, D, C) {
        if ((B /= C / 2) < 1) {
            return D / 2 * B * B + A;
        }
        return -D / 2 * ((--B) * (B - 2) - 1) + A;
    },
    easeInStrong: function (B, A, D, C) {
        return D * (B /= C) * B * B * B + A;
    },
    easeOutStrong: function (B, A, D, C) {
        return -D * ((B = B / C - 1) * B * B * B - 1) + A;
    },
    easeBothStrong: function (B, A, D, C) {
        if ((B /= C / 2) < 1) {
            return D / 2 * B * B * B * B + A;
        }
        return -D / 2 * ((B -= 2) * B * B * B - 2) + A;
    },
    elasticIn: function (C, A, G, F, B, E) {
        if (C == 0) {
            return A;
        }
        if ((C /= F) == 1) {
            return A + G;
        }
        if (!E) {
            E = F * 0.3;
        }
        if (!B || B < Math.abs(G)) {
            B = G;
            var D = E / 4;
        } else {
            var D = E / (2 * Math.PI) * Math.asin(G / B);
        }
        return - (B * Math.pow(2, 10 * (C -= 1)) * Math.sin((C * F - D) * (2 * Math.PI) / E)) + A;
    },
    elasticOut: function (C, A, G, F, B, E) {
        if (C == 0) {
            return A;
        }
        if ((C /= F) == 1) {
            return A + G;
        }
        if (!E) {
            E = F * 0.3;
        }
        if (!B || B < Math.abs(G)) {
            B = G;
            var D = E / 4;
        } else {
            var D = E / (2 * Math.PI) * Math.asin(G / B);
        }
        return B * Math.pow(2, -10 * C) * Math.sin((C * F - D) * (2 * Math.PI) / E) + G + A;
    },
    elasticBoth: function (C, A, G, F, B, E) {
        if (C == 0) {
            return A;
        }
        if ((C /= F / 2) == 2) {
            return A + G;
        }
        if (!E) {
            E = F * (0.3 * 1.5);
        }
        if (!B || B < Math.abs(G)) {
            B = G;
            var D = E / 4;
        } else {
            var D = E / (2 * Math.PI) * Math.asin(G / B);
        }
        if (C < 1) {
            return -0.5 * (B * Math.pow(2, 10 * (C -= 1)) * Math.sin((C * F - D) * (2 * Math.PI) / E)) + A;
        }
        return B * Math.pow(2, -10 * (C -= 1)) * Math.sin((C * F - D) * (2 * Math.PI) / E) * 0.5 + G + A;
    },
    backIn: function (B, A, E, D, C) {
        if (typeof C == "undefined") {
            C = 1.70158;
        }
        return E * (B /= D) * B * ((C + 1) * B - C) + A;
    },
    backOut: function (B, A, E, D, C) {
        if (typeof C == "undefined") {
            C = 1.70158;
        }
        return E * ((B = B / D - 1) * B * ((C + 1) * B + C) + 1) + A;
    },
    backBoth: function (B, A, E, D, C) {
        if (typeof C == "undefined") {
            C = 1.70158;
        }
        if ((B /= D / 2) < 1) {
            return E / 2 * (B * B * (((C *= (1.525)) + 1) * B - C)) + A;
        }
        return E / 2 * ((B -= 2) * B * (((C *= (1.525)) + 1) * B + C) + 2) + A;
    },
    bounceIn: function (B, A, D, C) {
        return D - YAHOO.util.Easing.bounceOut(C - B, 0, D, C) + A;
    },
    bounceOut: function (B, A, D, C) {
        if ((B /= C) < (1 / 2.75)) {
            return D * (7.5625 * B * B) + A;
        } else {
            if (B < (2 / 2.75)) {
                return D * (7.5625 * (B -= (1.5 / 2.75)) * B + 0.75) + A;
            } else {
                if (B < (2.5 / 2.75)) {
                    return D * (7.5625 * (B -= (2.25 / 2.75)) * B + 0.9375) + A;
                }
            }
        }
        return D * (7.5625 * (B -= (2.625 / 2.75)) * B + 0.984375) + A;
    },
    bounceBoth: function (B, A, D, C) {
        if (B < C / 2) {
            return YAHOO.util.Easing.bounceIn(B * 2, 0, D, C) * 0.5 + A;
        }
        return YAHOO.util.Easing.bounceOut(B * 2 - C, 0, D, C) * 0.5 + D * 0.5 + A;
    }
};
(function () {
    var A = function (H, G, I, J) {
        if (H) {
            A.superclass.constructor.call(this, H, G, I, J);
        }
    };
    A.NAME = "Motion";
    var E = YAHOO.util;
    YAHOO.extend(A, E.ColorAnim);
    var F = A.superclass;
    var C = A.prototype;
    C.patterns.points = /^points$/i;
    C.setAttribute = function (G, I, H) {
        if (this.patterns.points.test(G)) {
            H = H || "px";
            F.setAttribute.call(this, "left", I[0], H);
            F.setAttribute.call(this, "top", I[1], H);
        } else {
            F.setAttribute.call(this, G, I, H);
        }
    };
    C.getAttribute = function (G) {
        if (this.patterns.points.test(G)) {
            var H = [F.getAttribute.call(this, "left"), F.getAttribute.call(this, "top")];
        } else {
            H = F.getAttribute.call(this, G);
        }
        return H;
    };
    C.doMethod = function (G, K, H) {
        var J = null;
        if (this.patterns.points.test(G)) {
            var I = this.method(this.currentFrame, 0, 100, this.totalFrames) / 100;
            J = E.Bezier.getPosition(this.runtimeAttributes[G], I);
        } else {
            J = F.doMethod.call(this, G, K, H);
        }
        return J;
    };
    C.setRuntimeAttribute = function (P) {
        if (this.patterns.points.test(P)) {
            var H = this.getEl();
            var J = this.attributes;
            var G;
            var L = J["points"]["control"] || [];
            var I;
            var M, O;
            if (L.length > 0 && !(L[0] instanceof Array)) {
                L = [L];
            } else {
                var K = [];
                for (M = 0, O = L.length; M < O; ++M) {
                    K[M] = L[M];
                }
                L = K;
            }
            if (E.Dom.getStyle(H, "position") == "static") {
                E.Dom.setStyle(H, "position", "relative");
            }
            if (D(J["points"]["from"])) {
                E.Dom.setXY(H, J["points"]["from"]);
            } else {
                E.Dom.setXY(H, E.Dom.getXY(H));
            }
            G = this.getAttribute("points");
            if (D(J["points"]["to"])) {
                I = B.call(this, J["points"]["to"], G);
                var N = E.Dom.getXY(this.getEl());
                for (M = 0, O = L.length; M < O; ++M) {
                    L[M] = B.call(this, L[M], G);
                }
            } else {
                if (D(J["points"]["by"])) {
                    I = [G[0] + J["points"]["by"][0], G[1] + J["points"]["by"][1]];
                    for (M = 0, O = L.length; M < O; ++M) {
                        L[M] = [G[0] + L[M][0], G[1] + L[M][1]];
                    }
                }
            }
            this.runtimeAttributes[P] = [G];
            if (L.length > 0) {
                this.runtimeAttributes[P] = this.runtimeAttributes[P].concat(L);
            }
            this.runtimeAttributes[P][this.runtimeAttributes[P].length] = I;
        } else {
            F.setRuntimeAttribute.call(this, P);
        }
    };
    var B = function (G, I) {
        var H = E.Dom.getXY(this.getEl());
        G = [G[0] - H[0] + I[0], G[1] - H[1] + I[1]];
        return G;
    };
    var D = function (G) {
        return (typeof G !== "undefined");
    };
    E.Motion = A;
})();
(function () {
    var D = function (F, E, G, H) {
        if (F) {
            D.superclass.constructor.call(this, F, E, G, H);
        }
    };
    D.NAME = "Scroll";
    var B = YAHOO.util;
    YAHOO.extend(D, B.ColorAnim);
    var C = D.superclass;
    var A = D.prototype;
    A.doMethod = function (E, H, F) {
        var G = null;
        if (E == "scroll") {
            G = [this.method(this.currentFrame, H[0], F[0] - H[0], this.totalFrames), this.method(this.currentFrame, H[1], F[1] - H[1], this.totalFrames)];
        } else {
            G = C.doMethod.call(this, E, H, F);
        }
        return G;
    };
    A.getAttribute = function (E) {
        var G = null;
        var F = this.getEl();
        if (E == "scroll") {
            G = [F.scrollLeft, F.scrollTop];
        } else {
            G = C.getAttribute.call(this, E);
        }
        return G;
    };
    A.setAttribute = function (E, H, G) {
        var F = this.getEl();
        if (E == "scroll") {
            F.scrollLeft = H[0];
            F.scrollTop = H[1];
        } else {
            C.setAttribute.call(this, E, H, G);
        }
    };
    B.Scroll = D;
})();
YAHOO.register("animation", YAHOO.util.Anim, {
    version: "2.8.0r4",
    build: "2449"
});