﻿/*
* Panpa Multi Slider V1.8
* Author:  Mustafa BEL / Erdem KARA
* Date: 17.03.2011
* Version: 1.8
*/
(function ($) {
    $.fn.panpaMultiSlider = function (options) {
        var settings = {
            '$slideElement': '.slider', //
            '$speed': 2000, // hız ayarı
            '$fadeDuration': 1000,
            '$slideType': 'slide', // slide or fade
            '$easing': 'easeOutBounce', // easing kullanılmayacaksa linear seçilmeli
            '$pagination': false, // paging istenmiyorsa false isteniyorsa true seçilmeli
            '$thumbDirectory': 'images/thumb/', // pagination için thumbnaillerin tutulduğu klasör
            '$thumbType': '.jpg', //thumbnail dosya tipi
            '$paginate': '.pagination', // pagination için etki sınıfı
            '$paginateStyle': 'thumb',
            '$autoPlay': true
        };
        var options = $.extend(settings, options);

        return this.each(function () {
            var object = $(this);
            var $currentindex = 0;
            var $size = $(options.$slideElement, object).find("> div").size();
            var $index = $(options.$slideElement, object).find("> div").index();
            var $width = $(options.$slideElement, object).find("> div").outerWidth()
            var isBusy = false;

            function Render(control) {
                if ($currentindex < 0) {
                    $currentindex = $size - 1;
                }
                else if ($currentindex > ($size - 1)) {
                    $currentindex = 0;
                }
                var calcStep = -1 * $width * $currentindex;

                if (options.$slideType == "slide") {
                    $(options.$slideElement, object).css("width", $size * $width)
                    $(options.$slideElement, object).animate({ "left": calcStep }, options.$speed, options.$easing, function () { isBusy = false; });
                }
                if (options.$slideType == "fade") {
                    $(options.$slideElement, object).find("> div").css("position", "absolute")
                    var currentFade = $(options.$slideElement, object).find("> div").eq($currentindex);
                    var captionHeight = $(options.$slideElement, object).find("> div div").outerHeight();
                    $(options.$slideElement, object).find("> div").animate({ "opacity": 0 });
                    $(options.$slideElement, object).find("> div").css("z-index", "0");
                    $(options.$slideElement, object).find("> div div").animate({ "bottom": "-" + captionHeight + "px" });
                    
                    $(currentFade).css("z-index", "20");
                    $(currentFade).animate({ "opacity": 1 }, options.$fadeDuration, function () { isBusy = false; $(currentFade).find("div").animate({ "bottom": "0" }) });
                    $(".pagination").css("z-index", "22");
                }
                if (options.$pagination == true && options.$paginateStyle == "thumb") {
                    var repeaterLeft = "";
                    var repeaterRight = "";
                    for (i = 1; i <= $size; i++) {
                        if ((i - 1) > $currentindex) {
                            repeaterRight += "<li><a rel='" + (i - 1).toString() + "'><img src='" + options.$thumbDirectory + i + options.$thumbType + "'/></a></li>"
                        }
                        else if ((i - 1) < $currentindex) {
                            repeaterLeft += "<li><a rel='" + (i - 1).toString() + "'><img src='" + options.$thumbDirectory + i + options.$thumbType + "'/></a></li>"
                        }
                        else {
                            if ((control == null) || control == "R") {
                                repeaterRight += "<li><a class='selected' rel='" + (i - 1).toString() + "'><img src='" + options.$thumbDirectory + i + options.$thumbType + "'/></a></li>"
                            }
                            else {
                                repeaterLeft += "<li><a class='selected' rel='" + (i - 1).toString() + "'><img src='" + options.$thumbDirectory + i + options.$thumbType + "'/></a></li>"
                            }
                        }
                    }
                    var leftPaginate = "<ul class='leftPaginate'>" + repeaterLeft + "</ul>";
                    var rightPaginate = "<ul class='rightPaginate'>" + repeaterRight + "</ul>";
                    $(options.$paginate, object).html(leftPaginate + rightPaginate);
                    $(options.$paginate, object).find("a").click(paginationClick);
                }
                if (options.$pagination == true && options.$paginateStyle == "normal") {
                    var normalPaginateRepeater = "";
                    for (i = 1; i <= $size; i++) {
                        if ((i - 1) > $currentindex) {
                            normalPaginateRepeater += "<li><a rel='" + (i - 1).toString() + "'>" + (i).toString() + "</a></li>"
                        }
                        else if ((i - 1) < $currentindex) {
                            normalPaginateRepeater += "<li><a rel='" + (i - 1).toString() + "'>" + (i).toString() + "</a></li>"
                        }
                        else {

                            if ((control == null) || control == "R") {
                                normalPaginateRepeater += "<li><a class='selected' rel='" + (i - 1).toString() + "'>" + (i).toString() + "</a></li>"
                            }

                        }

                    }
                    var normalPaginate = "<ul class='normal'>" + normalPaginateRepeater + "</ul>";
                    $(options.$paginate, object).html(normalPaginate)
                    $(options.$paginate, object).find("a").click(paginationClick);
                }
            }
            $currentindex = 0;
            Render(null);
            function next() {
                if (isBusy == true)
                { return; }
                isBusy = true;
                $currentindex++;
                Render("R");
            };
            function previous() {
                if (isBusy == true)
                { return; }
                isBusy = true;
                $currentindex--;
                Render("L");
            };

            $(".previous", object).click(function () {
                previous();
            });
            $(".next", object).click(function () {
                next();
            });
            function paginationClick() {
                if (isBusy == true)
                { return; }
                isBusy = true;
                $currentindex = parseInt($(this).attr("rel"));
                Render("R");
            }
        });
    };
})(jQuery);

