/*
 * jQuery Cycle Plugin
 * Examples and documentation at: http://malsup.com/jquery/cycle/
 * Copyright (c) 2007-2008 M. Alsup
 * Version: 2.30 (02-NOV-2008)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 */
;
(function(G){
    var A = "2.30";
    var B = G.browser.msie && /MSIE 6.0/.test(navigator.userAgent);
    function D(){
        if (window.console && window.console.log) {
            window.console.log("[cycle] " + Array.prototype.join.call(arguments, ""))
        }
    }
    G.fn.cycle = function(I){
        var J = arguments[1];
        return this.each(function(){
            if (I === undefined || I === null) {
                I = {}
            }
            if (I.constructor == String) {
                switch (I) {
                    case "stop":
                        if (this.cycleTimeout) {
                            clearTimeout(this.cycleTimeout)
                        }
                        this.cycleTimeout = 0;
                        G(this).data("cycle.opts", "");
                        return;case "pause":
                        this.cyclePause = 1;
                        return;case "resume":
                        this.cyclePause = 0;
                        if (J === true) {
                            I = G(this).data("cycle.opts");
                            if (!I) {
                                D("options not found, can not resume");
                                return
                            }
                            if (this.cycleTimeout) {
                                clearTimeout(this.cycleTimeout);
                                this.cycleTimeout = 0
                            }
                            E(I.elements, I, 1, 1)
                        }
                        return;default:
                        I = {
                            fx: I
                        }
                }
            }
            else {
                if (I.constructor == Number) {
                    var O = I;
                    I = G(this).data("cycle.opts");
                    if (!I) {
                        D("options not found, can not advance slide");
                        return
                    }
                    if (O < 0 || O >= I.elements.length) {
                        D("invalid slide index: " + O);
                        return
                    }
                    I.nextSlide = O;
                    if (this.cycleTimeout) {
                        clearTimeout(this.cycleTimeout);
                        this.cycleTimeout = 0
                    }
                    E(I.elements, I, 1, O >= I.currSlide);
                    return
                }
            }
            if (this.cycleTimeout) {
                clearTimeout(this.cycleTimeout)
            }
            this.cycleTimeout = 0;
            this.cyclePause = 0;
            var R = G(this);
            var P = I.slideExpr ? G(I.slideExpr, this) : R.children();
            var L = P.get();
            if (L.length < 2) {
                D("terminating; too few slides: " + L.length);
                return
            }
            var K = G.extend({}, G.fn.cycle.defaults, I ||
            {}, G.metadata ? R.metadata() : G.meta ? R.data() : {});
            if (K.autostop) {
                K.countdown = K.autostopCount || L.length
            }
            R.data("cycle.opts", K);
            K.container = this;
            K.elements = L;
            K.before = K.before ? [K.before] : [];
            K.after = K.after ? [K.after] : [];
            K.after.unshift(function(){
                K.busy = 0
            });
            if (K.continuous) {
                K.after.push(function(){
                    E(L, K, 0, !K.rev)
                })
            }
            if (B && K.cleartype && !K.cleartypeNoBg) {
                C(P)
            }
            var T = this.className;
            K.width = parseInt((T.match(/w:(\d+)/) || [])[1]) || K.width;
            K.height = parseInt((T.match(/h:(\d+)/) || [])[1]) || K.height;
            K.timeout = parseInt((T.match(/t:(\d+)/) || [])[1]) || K.timeout;
            if (R.css("position") == "static") {
                R.css("position", "relative")
            }
            if (K.width) {
                R.width(K.width)
            }
            if (K.height && K.height != "auto") {
                R.height(K.height)
            }
            if (K.startingSlide) {
                K.startingSlide = parseInt(K.startingSlide)
            }
            if (K.random) {
                K.randomMap = [];
                for (var M = 0; M < L.length; M++) {
                    K.randomMap.push(M)
                }
                K.randomMap.sort(function(V, U){
                    return Math.random() - 0.5
                });
                K.randomIndex = 0;
                K.startingSlide = K.randomMap[0]
            }
            else {
                if (K.startingSlide >= L.length) {
                    K.startingSlide = 0
                }
            }
            var N = K.startingSlide || 0;
            P.css({
                position: "absolute",
                top: 0,
                left: 0
            }).hide().each(function(U){
                var V = N ? U >= N ? L.length - (U - N) : N - U : L.length - U;
                G(this).css("z-index", V)
            });
            G(L[N]).css("opacity", 1).show();
            if (G.browser.msie) {
                L[N].style.removeAttribute("filter")
            }
            if (K.fit && K.width) {
                P.width(K.width)
            }
            if (K.fit && K.height && K.height != "auto") {
                P.height(K.height)
            }
            if (K.pause) {
                R.hover(function(){
                    this.cyclePause = 1
                }, function(){
                    this.cyclePause = 0
                })
            }
            var S = G.fn.cycle.transitions[K.fx];
            if (G.isFunction(S)) {
                S(R, P, K)
            }
            else {
                if (K.fx != "custom") {
                    D("unknown transition: " + K.fx)
                }
            }
            P.each(function(){
                var U = G(this);
                this.cycleH = (K.fit && K.height) ? K.height : U.height();
                this.cycleW = (K.fit && K.width) ? K.width : U.width()
            });
            K.cssBefore = K.cssBefore ||
            {};
            K.animIn = K.animIn ||
            {};
            K.animOut = K.animOut ||
            {};
            P.not(":eq(" + N + ")").css(K.cssBefore);
            if (K.cssFirst) {
                G(P[N]).css(K.cssFirst)
            }
            if (K.timeout) {
                K.timeout = parseInt(K.timeout);
                if (K.speed.constructor == String) {
                    K.speed = G.fx.speeds[K.speed] || parseInt(K.speed)
                }
                if (!K.sync) {
                    K.speed = K.speed / 2
                }
                while ((K.timeout - K.speed) < 250) {
                    K.timeout += K.speed
                }
            }
            if (K.easing) {
                K.easeIn = K.easeOut = K.easing
            }
            if (!K.speedIn) {
                K.speedIn = K.speed
            }
            if (!K.speedOut) {
                K.speedOut = K.speed
            }
            K.slideCount = L.length;
            K.currSlide = N;
            if (K.random) {
                K.nextSlide = K.currSlide;
                if (++K.randomIndex == L.length) {
                    K.randomIndex = 0
                }
                K.nextSlide = K.randomMap[K.randomIndex]
            }
            else {
                K.nextSlide = K.startingSlide >= (L.length - 1) ? 0 : K.startingSlide + 1
            }
            var Q = P[N];
            if (K.before.length) {
                K.before[0].apply(Q, [Q, Q, K, true])
            }
            if (K.after.length > 1) {
                K.after[1].apply(Q, [Q, Q, K, true])
            }
            if (K.click && !K.next) {
                K.next = K.click
            }
            if (K.next) {
                G(K.next).bind("click", function(){
                    return F(L, K, K.rev ? -1 : 1)
                })
            }
            if (K.prev) {
                G(K.prev).bind("click", function(){
                    return F(L, K, K.rev ? 1 : -1)
                })
            }
            if (K.pager) {
                H(L, K)
            }
            K.addSlide = function(V, W){
                var U = G(V), X = U[0];
                if (!K.autostopCount) {
                    K.countdown++
                }
                L[W ? "unshift" : "push"](X);
                if (K.els) {
                    K.els[W ? "unshift" : "push"](X)
                }
                K.slideCount = L.length;
                U.css("position", "absolute");
                U[W ? "prependTo" : "appendTo"](R);
                if (W) {
                    K.currSlide++;
                    K.nextSlide++
                }
                if (B && K.cleartype && !K.cleartypeNoBg) {
                    C(U)
                }
                if (K.fit && K.width) {
                    U.width(K.width)
                }
                if (K.fit && K.height && K.height != "auto") {
                    P.height(K.height)
                }
                X.cycleH = (K.fit && K.height) ? K.height : U.height();
                X.cycleW = (K.fit && K.width) ? K.width : U.width();
                U.css(K.cssBefore);
                if (K.pager) {
                    G.fn.cycle.createPagerAnchor(L.length - 1, X, G(K.pager), L, K)
                }
                if (typeof K.onAddSlide == "function") {
                    K.onAddSlide(U)
                }
            };
            if (K.timeout || K.continuous) {
                this.cycleTimeout = setTimeout(function(){
                    E(L, K, 0, !K.rev)
                }, K.continuous ? 10 : K.timeout + (K.delay || 0))
            }
        })
    };
    function E(N, I, M, O){
        if (I.busy) {
            return
        }
        var L = I.container, Q = N[I.currSlide], P = N[I.nextSlide];
        if (L.cycleTimeout === 0 && !M) {
            return
        }
        if (!M && !L.cyclePause && ((I.autostop && (--I.countdown <= 0)) || (I.nowrap && !I.random && I.nextSlide < I.currSlide))) {
            if (I.end) {
                I.end(I)
            }
            return
        }
        if (M || !L.cyclePause) {
            if (I.before.length) {
                G.each(I.before, function(R, S){
                    S.apply(P, [Q, P, I, O])
                })
            }
            var J = function(){
                if (G.browser.msie && I.cleartype) {
                    this.style.removeAttribute("filter")
                }
                G.each(I.after, function(R, S){
                    S.apply(P, [Q, P, I, O])
                })
            };
            if (I.nextSlide != I.currSlide) {
                I.busy = 1;
                if (I.fxFn) {
                    I.fxFn(Q, P, I, J, O)
                }
                else {
                    if (G.isFunction(G.fn.cycle[I.fx])) {
                        G.fn.cycle[I.fx](Q, P, I, J)
                    }
                    else {
                        G.fn.cycle.custom(Q, P, I, J, M && I.fastOnEvent)
                    }
                }
            }
            if (I.random) {
                I.currSlide = I.nextSlide;
                if (++I.randomIndex == N.length) {
                    I.randomIndex = 0
                }
                I.nextSlide = I.randomMap[I.randomIndex]
            }
            else {
                var K = (I.nextSlide + 1) == N.length;
                I.nextSlide = K ? 0 : I.nextSlide + 1;
                I.currSlide = K ? N.length - 1 : I.nextSlide - 1
            }
            if (I.pager) {
                G.fn.cycle.updateActivePagerLink(I.pager, I.currSlide)
            }
        }
        if (I.timeout && !I.continuous) {
            L.cycleTimeout = setTimeout(function(){
                E(N, I, 0, !I.rev)
            }, I.timeout)
        }
        else {
            if (I.continuous && L.cyclePause) {
                L.cycleTimeout = setTimeout(function(){
                    E(N, I, 0, !I.rev)
                }, 10)
            }
        }
    }
    G.fn.cycle.updateActivePagerLink = function(I, J){
        G(I).find("a").removeClass("activeSlide").filter("a:eq(" + J + ")").addClass("activeSlide")
    };
    function F(I, J, M){
        var L = J.container, K = L.cycleTimeout;
        if (K) {
            clearTimeout(K);
            L.cycleTimeout = 0
        }
        if (J.random && M < 0) {
            J.randomIndex--;
            if (--J.randomIndex == -2) {
                J.randomIndex = I.length - 2
            }
            else {
                if (J.randomIndex == -1) {
                    J.randomIndex = I.length - 1
                }
            }
            J.nextSlide = J.randomMap[J.randomIndex]
        }
        else {
            if (J.random) {
                if (++J.randomIndex == I.length) {
                    J.randomIndex = 0
                }
                J.nextSlide = J.randomMap[J.randomIndex]
            }
            else {
                J.nextSlide = J.currSlide + M;
                if (J.nextSlide < 0) {
                    if (J.nowrap) {
                        return false
                    }
                    J.nextSlide = I.length - 1
                }
                else {
                    if (J.nextSlide >= I.length) {
                        if (J.nowrap) {
                            return false
                        }
                        J.nextSlide = 0
                    }
                }
            }
        }
        if (J.prevNextClick && typeof J.prevNextClick == "function") {
            J.prevNextClick(M > 0, J.nextSlide, I[J.nextSlide])
        }
        E(I, J, 1, M >= 0);
        return false
    }
    function H(J, K){
        var I = G(K.pager);
        G.each(J, function(L, M){
            G.fn.cycle.createPagerAnchor(L, M, I, J, K)
        });
        G.fn.cycle.updateActivePagerLink(K.pager, K.startingSlide)
    }
    G.fn.cycle.createPagerAnchor = function(K, L, I, J, M){
        var N = (typeof M.pagerAnchorBuilder == "function") ? G(M.pagerAnchorBuilder(K, L)) : G('<a href="#">' + (K + 1) + "</a>");
        if (N.parents("body").length == 0) {
            N.appendTo(I)
        }
        N.bind(M.pagerEvent, function(){
            M.nextSlide = K;
            var P = M.container, O = P.cycleTimeout;
            if (O) {
                clearTimeout(O);
                P.cycleTimeout = 0
            }
            if (typeof M.pagerClick == "function") {
                M.pagerClick(M.nextSlide, J[M.nextSlide])
            }
            E(J, M, 1, M.currSlide < K);
            return false
        });
        if (M.pauseOnPagerHover) {
            N.hover(function(){
                M.container.cyclePause = 1
            }, function(){
                M.container.cyclePause = 0
            })
        }
    };
    function C(K){
        function J(L){
            var L = parseInt(L).toString(16);
            return L.length < 2 ? "0" + L : L
        }
        function I(N){
            for (; N && N.nodeName.toLowerCase() != "html"; N = N.parentNode) {
                var L = G.css(N, "background-color");
                if (L.indexOf("rgb") >= 0) {
                    var M = L.match(/\d+/g);
                    return "#" + J(M[0]) + J(M[1]) + J(M[2])
                }
                if (L && L != "transparent") {
                    return L
                }
            }
            return "#ffffff"
        }
        K.each(function(){
            G(this).css("background-color", I(this))
        })
    }
    G.fn.cycle.custom = function(T, N, I, K, J){
        var S = G(T), O = G(N);
        O.css(I.cssBefore);
        var L = J ? 1 : I.speedIn;
        var R = J ? 1 : I.speedOut;
        var M = J ? null : I.easeIn;
        var Q = J ? null : I.easeOut;
        var P = function(){
            O.animate(I.animIn, L, M, K)
        };
        S.animate(I.animOut, R, Q, function(){
            if (I.cssAfter) {
                S.css(I.cssAfter)
            }
            if (!I.sync) {
                P()
            }
        });
        if (I.sync) {
            P()
        }
    };
    G.fn.cycle.transitions = {
        fade: function(J, K, I){
            K.not(":eq(" + I.startingSlide + ")").css("opacity", 0);
            I.before.push(function(){
                G(this).show()
            });
            I.animIn = {
                opacity: 1
            };
            I.animOut = {
                opacity: 0
            };
            I.cssBefore = {
                opacity: 0
            };
            I.cssAfter = {
                display: "none"
            };
            I.onAddSlide = function(L){
                L.hide()
            }
        }
    };
    G.fn.cycle.ver = function(){
        return A
    };
    G.fn.cycle.defaults = {
        fx: "fade",
        timeout: 4000,
        continuous: 0,
        speed: 1000,
        speedIn: null,
        speedOut: null,
        next: null,
        prev: null,
        prevNextClick: null,
        pager: null,
        pagerClick: null,
        pagerEvent: "click",
        pagerAnchorBuilder: null,
        before: null,
        after: null,
        end: null,
        easing: null,
        easeIn: null,
        easeOut: null,
        shuffle: null,
        animIn: null,
        animOut: null,
        cssBefore: null,
        cssAfter: null,
        fxFn: null,
        height: "auto",
        startingSlide: 0,
        sync: 1,
        random: 0,
        fit: 0,
        pause: 0,
        pauseOnPagerHover: 0,
        autostop: 0,
        autostopCount: 0,
        delay: 0,
        slideExpr: null,
        cleartype: 0,
        nowrap: 0,
        fastOnEvent: 0
    }
})(jQuery);

