/*
* Slides, A Slideshow Plugin for jQuery
* Intructions: http://slidesjs.com
* By: Nathan Searles, http://nathansearles.com
* Version: 1.1.8
* Updated: June 1st, 2011
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function (A) {
    A.fn.slides = function (B) {
        B = A.extend({}, A.fn.slides.option, B);
        return this.each(function () {
            A("." + B.container, A(this)).children().wrapAll('<div class="slides_control"/>');
            var V = A(this), J = A(".slides_control", V), Z = J.children().size(), Q = J.children().outerWidth(), M = J.children().outerHeight(), D = B.start - 1, L = B.effect.indexOf(",") < 0 ? B.effect : B.effect.replace(" ", "").split(",")[0], S = B.effect.indexOf(",") < 0 ? L : B.effect.replace(" ", "").split(",")[1], O = 0, N = 0, C = 0, P = 0, U, H, I, X, W, T, K, F;
            function E(c, b, a) {
                if (!H && U) {
                    H = true; B.animationStart(P + 1);
                    switch (c) {
                        case "next": N = P;
                            O = P + 1;
                            O = Z === O ? 0 : O;
                            X = Q * 2;
                            c = -Q * 2;
                            P = O;
                            break;
                        case "prev": N = P;
                            O = P - 1;
                            O = O === -1 ? Z - 1 : O;
                            X = 0;
                            c = 0;
                            P = O;
                            break;
                        case "pagination": O = parseInt(a, 10);
                            N = A("." + B.paginationClass + " li." + B.currentClass + " a", V).attr("href").match("[^#/]+$");
                            if (O > N) {
                                X = Q * 2;
                                c = -Q * 2;
                            } 
                            else {
                                X = 0;
                                c = 0;
                            } P = O;
                            break;
                    } if (b === "fade") {
                        if (B.crossfade) {
                            J.children(":eq(" + O + ")", V).css({ zIndex: 10 }).fadeIn(B.fadeSpeed, B.fadeEasing, function () {
                                if (B.autoHeight) {
                                    J.animate({ height: J.children(":eq(" + O + ")", V).outerHeight() }, B.autoHeightSpeed, function () {
                                        J.children(":eq(" + N + ")", V).css({ display: "none", zIndex: 0 });
                                        J.children(":eq(" + O + ")", V).css({ zIndex: 0 });
                                        B.animationComplete(O + 1);
                                        H = false;
                                    });
                                } else {
                                    J.children(":eq(" + N + ")", V).css({ display: "none", zIndex: 0 });
                                    J.children(":eq(" + O + ")", V).css({ zIndex: 0 });
                                    B.animationComplete(O + 1);
                                    H = false;
                                } 
                            });
                        } else {
                            J.children(":eq(" + N + ")", V).fadeOut(B.fadeSpeed, B.fadeEasing, function () {
                                if (B.autoHeight) {
                                    J.animate({ height: J.children(":eq(" + O + ")", V).outerHeight() }, B.autoHeightSpeed, function () {
                                        J.children(":eq(" + O + ")", V).fadeIn(B.fadeSpeed, B.fadeEasing);
                                    });
                                } else {
                                    J.children(":eq(" + O + ")", V).fadeIn(B.fadeSpeed, B.fadeEasing, function () {
                                        if (A.browser.msie) {
                                            A(this).get(0).style.removeAttribute("filter");
                                        } 
                                    });
                                } B.animationComplete(O + 1);
                                H = false;
                            });
                        } 
                    } else {
                        J.children(":eq(" + O + ")").css({ left: X, display: "block" });
                        if (B.autoHeight) {
                            J.animate({ left: c, height: J.children(":eq(" + O + ")").outerHeight() }, B.slideSpeed, B.slideEasing, function () {
                                J.css({ left: -Q });
                                J.children(":eq(" + O + ")").css({ left: Q, zIndex: 5 });
                                J.children(":eq(" + N + ")").css({ left: Q, display: "none", zIndex: 0 });
                                B.animationComplete(O + 1);
                                H = false;
                            });
                        } else {
                            J.animate({ left: c }, B.slideSpeed, B.slideEasing, function () {
                                J.css({ left: -Q });
                                J.children(":eq(" + O + ")").css({ left: Q, zIndex: 5 });
                                J.children(":eq(" + N + ")").css({ left: Q, display: "none", zIndex: 0 });
                                B.animationComplete(O + 1);
                                H = false;
                            });
                        } 
                    } if (B.pagination) {
                        A("." + B.paginationClass + " li." + B.currentClass, V).removeClass(B.currentClass);
                        A("." + B.paginationClass + " li:eq(" + O + ")", V).addClass(B.currentClass);
                    } 
                } 
            } function R() {
                clearInterval(V.data("interval"));
            } function G() {
                if (B.pause) {
                    clearTimeout(V.data("pause"));
                    clearInterval(V.data("interval"));
                    K = setTimeout(function () {
                        clearTimeout(V.data("pause"));
                        F = setInterval(function () {
                            E("next", L);
                        }, B.play);
                        V.data("interval", F);
                    }, B.pause); V.data("pause", K);
                } else {
                    R();
                } 
            } if (Z < 2) {
                return;
            } if (D < 0) {
                D = 0;
            } if (D > Z) {
                D = Z - 1;
            } if (B.start) {
                P = D;
            } if (B.randomize) {
                J.randomize();
            } A("." + B.container, V).css({ overflow: "hidden", position: "relative" });
            J.children().css({ position: "absolute", top: 0, left: J.children().outerWidth(), zIndex: 0, display: "none" });
            J.css({ position: "relative", width: (Q * 3), height: M, left: -Q });
            A("." + B.container, V).css({ display: "block" });
            if (B.autoHeight) {
                J.children().css({ height: "auto" });
                J.animate({ height: J.children(":eq(" + D + ")").outerHeight() }, B.autoHeightSpeed);
            } if (B.preload && J.find("img:eq(" + D + ")").length) {
                A("." + B.container, V).css({ background: "url(" + B.preloadImage + ") no-repeat 50% 50%" });
                var Y = J.find("img:eq(" + D + ")").attr("src") + "?" + (new Date()).getTime();
                if (A("img", V).parent().attr("class") != "slides_control") {
                    T = J.children(":eq(0)")[0].tagName.toLowerCase();
                } else {
                    T = J.find("img:eq(" + D + ")");
                } J.find("img:eq(" + D + ")").attr("src", Y).load(function () {
                    J.find(T + ":eq(" + D + ")").fadeIn(B.fadeSpeed, B.fadeEasing, function () {
                        A(this).css({ zIndex: 5 });
                        A("." + B.container, V).css({ background: "" });
                        U = true;
                        B.slidesLoaded();
                    });
                });
            } else {
                J.children(":eq(" + D + ")").fadeIn(B.fadeSpeed, B.fadeEasing, function () {
                    U = true;
                    B.slidesLoaded();
                });
            } if (B.bigTarget) {
                J.children().css({ cursor: "pointer" });
                J.children().click(function () {
                    E("next", L);
                    return false;
                });
            } if (B.hoverPause && B.play) {
                J.bind("mouseover", function () {
                    R();
                });
                J.bind("mouseleave", function () {
                    G();
                });
            } if (B.generateNextPrev) {
                //A("." + B.container, V).after('<a href="#" class="' + B.prev + '">Prev</a>');
                A("." + B.container, V).after('<div id="menu" div align="center"><input type="button" class="' + B.prev + '" value="<<<" ></div>');
                //A("." + B.prev, V).after('<a href="#" class="' + B.next + '">Next</a>');
                A("." + B.prev, V).after('<input type="button" class="' + B.next + '" value=">>>" >');
            } 
            
            A("." + B.next, V).click(function (a) {
                a.preventDefault();
                if (B.play) {
                    G();
                } E("next", L);
            });

            A("." + B.prev, V).click(function (a) {
                a.preventDefault();
                if (B.play) {
                    G();
                } E("prev", L);
            });

            if (B.generatePagination) {
                if (B.prependPagination) {
                    V.prepend("<ul class=" + B.paginationClass + "></ul>");
                } else {
                    V.append("<ul class=" + B.paginationClass + "></ul>");
                } J.children().each(function () {
                    A("." + B.paginationClass, V).append('<li><a href="#' + C + '">' + (C + 1) + "</a></li>");
                    C++;
                });
            } else {
                A("." + B.paginationClass + " li a", V).each(function () {
                    A(this).attr("href", "#" + C);
                    C++;
                });
            } A("." + B.paginationClass + " li:eq(" + D + ")", V).addClass(B.currentClass);
            A("." + B.paginationClass + " li a", V).click(function () {
                if (B.play) {
                    G();
                } I = A(this).attr("href").match("[^#/]+$");
                if (P != I) {
                    E("pagination", S, I);
                } return false;
            });
            A("a.link", V).click(function () {
                if (B.play) {
                    G();
                } I = A(this).attr("href").match("[^#/]+$") - 1;
                if (P != I) {
                    E("pagination", S, I);
                } return false;
            });
            if (B.play) {
                F = setInterval(function () {
                    E("next", L);
                }, B.play);
                V.data("interval", F);
            } 
        });
    };
    A.fn.slides.option = { preload: false, preloadImage: "/img/loading.gif", container: "slides_container", generateNextPrev: false, next: "next", prev: "prev", pagination: true, generatePagination: false, prependPagination: false, paginationClass: "pagination", currentClass: "current", fadeSpeed: 350, fadeEasing: "", slideSpeed: 350, slideEasing: "", start: 1, effect: "slide", crossfade: false, randomize: false, play: 0, pause: 0, hoverPause: false, autoHeight: false, autoHeightSpeed: 350, bigTarget: false, animationStart: function () { }, animationComplete: function () { }, slidesLoaded: function () { } };
    A.fn.randomize = function (C) {
        function B() {
            return (Math.round(Math.random()) - 0.5);
        } return (A(this).each(function () {
            var F = A(this);
            var E = F.children();
            var D = E.length;
            if (D > 1) {
                E.hide();
                var G = [];
                for (i = 0;
i < D;
i++) {
                    G[G.length] = i;
                } G = G.sort(B);
                A.each(G, function (I, H) {
                    var K = E.eq(H);
                    var J = K.clone(true);
                    J.show().appendTo(F);
                    if (C !== undefined) {
                        C(K, J);
                    } K.remove();
                });
            } 
        }));
    };
})(jQuery);

