/* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * jFlow
 * Version: 1.1 (May 22, 2008)
 * Requires: jQuery 1.2+
 */
 
(function (A) {
    A.fn.jFlow = function (D) {
        var E = A.extend({}, A.fn.jFlow.defaults, D);
        var F = 0;
        var B = A(".jFlowControl").length;
		var timer;
		var clicked = false;
        A(this).find(".jFlowControl").each(function (G) {
            A(this).click(function () {
				clearInterval(timer);
				A(".jFlowControl").addClass("dot");
                A(".jFlowControl").removeClass("jFlowSelected");
				A(this).removeClass("dot");
                A(this).addClass("jFlowSelected");
                var H = Math.abs(F - G);
                A(E.slides).animate({
                    marginLeft: "-" + (G * A(E.slides).find(":first-child").width() + "px")
                }, E.duration * (H));
                F = G;
				
				if (F==0){
					A(".jFlowPrev").addClass("hidden");
					A(".jFlowNext").removeClass("hidden");
				}else if (F==B-1){
					A(".jFlowNext").addClass("hidden");
					A(".jFlowPrev").removeClass("hidden");
				}
			
            })
        });
        A(E.slides).before('<div id="jFlowSlide"></div>').appendTo("#jFlowSlide");
        A(E.slides).find("div").each(function () {
            A(this).before('<div class="jFlowSlideContainer"></div>').appendTo(A(this).prev())
        });
		A(".jFlowControl").eq(F).removeClass("dot");
        A(".jFlowControl").eq(F).addClass("jFlowSelected");
        var C = function (G) {
                A("#jFlowSlide").css({
                    position: "relative",
                    width: E.width,
                    height: E.height,
                    overflow: "hidden"
                });
                A(E.slides).css({
                    position: "relative",
                    width: A("#jFlowSlide").width() * A(".jFlowControl").length + "px",
                    height: A("#jFlowSlide").height() + "px",
                    overflow: "hidden"
                });
                A(E.slides).children().css({
                    position: "relative",
                    width: A("#jFlowSlide").width() + "px",
                    height: A("#jFlowSlide").height() + "px",
                    "float": "left"
                });
                A(E.slides).css({
                    marginLeft: "-" + (F * A(E.slides).find(":first-child").width() + "px")
                })
            };
        C();
        A(window).resize(function () {
            C()
        });
        A(".jFlowPrev").click(function () {
			clearInterval(timer);
            if (F > 0) {
                F--
            }
			
			if (F==0){
				A(".jFlowPrev").addClass("hidden");
				A(".jFlowNext").removeClass("hidden");
			}
			
            A(".jFlowControl").removeClass("jFlowSelected");
			A(".jFlowControl").addClass("dot");
            A(E.slides).animate({
                marginLeft: "-" + (F * A(E.slides).find(":first-child").width() + "px")
            }, E.duration);
			A(".jFlowControl").eq(F).removeClass("dot");
            A(".jFlowControl").eq(F).addClass("jFlowSelected");
			
        });
        A(".jFlowNext").click(function () {
			clearInterval(timer);
            if (F < B - 1) {
                F++
            }
			
			if (F==B-1){
				A(".jFlowNext").addClass("hidden");
				A(".jFlowPrev").removeClass("hidden");
			}
            A(".jFlowControl").removeClass("jFlowSelected");
			A(".jFlowControl").addClass("dot");
            A(E.slides).animate({
                marginLeft: "-" + (F * A(E.slides).find(":first-child").width() + "px")
            }, E.duration);
			A(".jFlowControl").eq(F).removeClass("dot");
            A(".jFlowControl").eq(F).addClass("jFlowSelected");
        });
		A(".jFlowPrev").addClass("hidden");
		timer=setInterval(function(){
			if (!clicked && F < B - 1) {
                A(".jFlowNext").click();
            }
			//else A(".jFlowControl").eq(0).click();
		}, 3000);
    };
    A.fn.jFlow.defaults = {
        easing: "swing",
        duration: 400,
        width: "100%"
    }
})(jQuery);
