/* jQuery Carousel 0.9.2
Copyright 2008-2009 Thomas Lanciaux and Pierre Bertet.
This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/
;
(function ($) {
    $.fn.carousel2 = function (params) {
        var params = $.extend({
            direction: "horizontal",
            loop: false,
            dispItems: 1,
            pagination: false,
            paginationPosition: "inside",
            nextBtn: '<a role="button">Next</a>',
            prevBtn: '<a role="button">Previous</a>',
            btnsPosition: "inside",
            nextBtnInsert: "appendTo",
            prevBtnInsert: "prependTo",
            nextBtnInsertFn: false,
            prevBtnInsertFn: false,
            autoSlide: false,
            autoSlideInterval: 3000,
            delayAutoSlide: false,
            combinedClasses: false,
            effect: "slide",
            slideEasing: "swing",
            animSpeed: "normal",
            equalWidths: "true",
            verticalMargin: 0,
            callback: function () {},
            useAddress: false,
            adressIdentifier: "carousel",
            tabLabel: function (tabNum) {
                return tabNum;
            }
        }, params);
        if (params.btnsPosition == "outside") {
            params.prevBtnInsert = "insertBefore";
            params.nextBtnInsert = "insertAfter";
        }
        params.delayAutoSlide = params.delayAutoSlide || params.autoSlideInterval;
        return this.each(function () {
            var env = {
                $elts: {},
                params: params,
                launchOnLoad: []
            };
            env.$elts.carousel = $(this).addClass("js");
            env.$elts.content = $(this).children().css({
                position: "absolute",
                "top": 0
            });
            env.$elts.wrap = env.$elts.content.wrap('<div class="carousel-wrap"></div>').parent().css({
                overflow: "hidden",
                position: "relative"
            });
            env.steps = {
                first: 0,
                count: env.$elts.content.children().length
            };
            env.steps.last = env.steps.count - 1;
            if ($.isFunction(env.params.prevBtnInsertFn)) {
                env.$elts.prevBtn = env.params.prevBtnInsertFn(env.$elts);
            } else {
                env.$elts.prevBtn = $(params.prevBtn)[params.prevBtnInsert](env.$elts.carousel);
            }
            if ($.isFunction(env.params.nextBtnInsertFn)) {
                env.$elts.nextBtn = env.params.nextBtnInsertFn(env.$elts);
            } else {
                env.$elts.nextBtn = $(params.nextBtn)[params.nextBtnInsert](env.$elts.carousel);
            }
            env.$elts.nextBtn.addClass("carousel-control next carousel-next");
            env.$elts.prevBtn.addClass("carousel-control previous carousel-previous");
            initButtonsEvents(env);
            if (env.params.pagination) {
                initPagination(env);
            }
            initAddress(env);
			
            $(function () {
                var $items = env.$elts.content.children();
                var $maxHeight = 0;
                $items.each(function () {
                    $item = $(this);
                    $itemHeight = $item.outerHeight();
                    if ($itemHeight > $maxHeight) {
                        $maxHeight = $itemHeight;
                    }
                });
				
                if (env.params.verticalMargin > 0) {
                    $maxHeight = $maxHeight + env.params.verticalMargin;
                }
                $items.height($maxHeight);
                var $firstItem = env.$elts.content.children(":first");
                env.itemWidth = $firstItem.outerWidth();
                if (params.direction == "vertical") {
                    env.contentWidth = env.itemWidth;
                } else {
                    if (params.equalWidths) {
                        env.contentWidth = env.itemWidth * env.steps.count;
                    } else {
                        env.contentWidth = (function () {
                            var totalWidth = 0;
                            env.$elts.content.children().each(function () {
                                totalWidth += $(this).outerWidth();
                            });
                            return totalWidth;
                        })();
                    }
                }
                env.$elts.content.width(env.contentWidth);
                env.itemHeight = $maxHeight;
                if (params.direction == "vertical") {
                    env.$elts.content.css({
                        height: env.itemHeight * env.steps.count + "px"
                    });
                    env.$elts.content.parent().css({
                        height: env.itemHeight * env.params.dispItems + "px"
                    });
                } else {
                    env.$elts.content.parent().css({
                        height: env.itemHeight + "px",
                    });
                }
                updateButtonsState(env);
                $.each(env.launchOnLoad, function (i, fn) {
                    fn();
                });
                if (env.params.autoSlide) {
                    window.setTimeout(function () {
                        env.autoSlideInterval = window.setInterval(function () {
                            goToStep(env, getRelativeStep(env, "next"));
                        }, env.params.autoSlideInterval);
                    }, env.params.delayAutoSlide);
                }
            });
        });
    };

    function initButtonsEvents(env) {
        env.$elts.nextBtn.add(env.$elts.prevBtn).bind("enable", function () {
            var $this = $(this).unbind("click").bind("click", function () {
                goToStep(env, getRelativeStep(env, ($this.is(".next") ? "next" : "prev")));
                stopAutoSlide(env);
            }).removeClass("disabled");
            if (env.params.combinedClasses) {
                $this.removeClass("next-disabled previous-disabled");
            }
        }).bind("disable", function () {
            var $this = $(this).unbind("click").addClass("disabled");
            if (env.params.combinedClasses) {
                if ($this.is(".next")) {
                    $this.addClass("next-disabled");
                } else if ($this.is(".previous")) {
                    $this.addClass("previous-disabled");
                }
            }
        }).hover(function () {
            $(this).toggleClass("hover");
        });
    };

    function initPagination(env) {
        env.$elts.pagination = $('<div class="center-wrap"><div class="carousel-pagination"><p></p></div></div>')[((env.params.paginationPosition == "outside") ? "insertAfter" : "appendTo")](env.$elts.carousel).find("p");
        env.$elts.paginationBtns = $([]);
        env.$elts.content.find("li").each(function (i) {
            if (i % env.params.dispItems == 0) {
                env.$elts.paginationBtns = env.$elts.paginationBtns.add($('<a role="button"><span>' + env.params.tabLabel(env.$elts.paginationBtns.length + 1) + '</span></a>').data("firstStep", i));
            }
        });
        env.$elts.paginationBtns.each(function () {
            $(this).appendTo(env.$elts.pagination);
        });
        env.$elts.paginationBtns.slice(0, 1).addClass("active");
        env.launchOnLoad.push(function () {
            env.$elts.paginationBtns.click(function (e) {
                goToStep(env, $(this).data("firstStep"));
                stopAutoSlide(env);
            });
        });
    };

    function initAddress(env) {
        if (env.params.useAddress && $.isFunction($.fn.address)) {
            $.address.init(function (e) {
                var pathNames = $.address.pathNames();
                if (pathNames[0] === env.params.adressIdentifier && !! pathNames[1]) {
                    goToStep(env, pathNames[1] - 1);
                } else {
                    $.address.value('/' + env.params.adressIdentifier + '/1');
                }
            }).change(function (e) {
                var pathNames = $.address.pathNames();
                if (pathNames[0] === env.params.adressIdentifier && !! pathNames[1]) {
                    goToStep(env, pathNames[1] - 1);
                }
            });
        } else {
            env.params.useAddress = false;
        }
    };

    function goToStep(env, step) {
        env.params.callback(step);
        transition(env, step);
        env.steps.first = step;
        updateButtonsState(env);
        if (env.params.useAddress) {
            $.address.value('/' + env.params.adressIdentifier + '/' + (step + 1));
        }
    };

    function getRelativeStep(env, position) {
        if (position == "prev") {
            if ((env.steps.first - env.params.dispItems) >= 0) {
                return env.steps.first - env.params.dispItems;
            } else {
                return ((env.params.loop) ? (env.steps.count - env.params.dispItems) : false);
            }
        } else if (position == "next") {
            if ((env.steps.first + env.params.dispItems) < env.steps.count) {
                return env.steps.first + env.params.dispItems;
            } else {
                return ((env.params.loop) ? 0 : false);
            }
        }
    };

    function transition(env, step) {
        switch (env.params.effect) {
        case "no":
            if (env.params.direction == "vertical") {
                env.$elts.content.css("top", -(env.itemHeight * step) + "px");
            } else {
                env.$elts.content.css("left", -(env.itemWidth * step) + "px");
            }
            break;
        case "fade":
            if (env.params.direction == "vertical") {
                env.$elts.content.hide().css("top", -(env.itemHeight * step) + "px").fadeIn(env.params.animSpeed);
            } else {
                env.$elts.content.hide().css("left", -(env.itemWidth * step) + "px").fadeIn(env.params.animSpeed);
            }
            break;
        default:
            if (env.params.direction == "vertical") {
                env.$elts.content.stop().animate({
                    top: -(env.itemHeight * step) + "px"
                }, env.params.animSpeed, env.params.slideEasing);
            } else {
                env.$elts.content.stop().animate({
                    left: -(env.itemWidth * step) + "px"
                }, env.params.animSpeed, env.params.slideEasing);
				
				$('li.active').removeClass("active");
				$('div.carousel.js .carousel-wrap').css('width', 639);

				
					$.ajax({
					   type: "POST",
					   url: "scripts/sessionClear.php",
					   //data: dataString,
					   cache: false,
					   success: function(html){                   
					   //alert("success");
						}
					})
            }
            break;
        }
    };

    function updateButtonsState(env) {
        if (getRelativeStep(env, "prev") !== false) {
            env.$elts.prevBtn.trigger("enable");
        } else {
            env.$elts.prevBtn.trigger("disable");
        }
        if (getRelativeStep(env, "next") !== false) {
            env.$elts.nextBtn.trigger("enable");
        } else {
            env.$elts.nextBtn.trigger("disable");
        }
        if (env.params.pagination) {
            env.$elts.paginationBtns.removeClass("active").filter(function () {
                return ($(this).data("firstStep") == env.steps.first)
            }).addClass("active");
        }
    };

    function stopAutoSlide(env) {
        if ( !! env.autoSlideInterval) {
            window.clearInterval(env.autoSlideInterval);
        }
    };
})(jQuery);
