﻿/*
* 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, // hyz ayary
            '$fadeDuration': 1000,
            '$slideType': 'slide', // slide or fade
            '$easing': 'easeOutBounce', // easing kullanylmayacaksa linear se�ilmeli
            '$pagination': true, // paging istenmiyorsa false isteniyorsa true se�ilmeli
            '$thumbDirectory': 'Assets/images/thumb/', // pagination i�in thumbnaillerin tutuldu?u klas�r
            '$thumbType': '.jpg', //thumbnail dosya tipi
            '$paginate': '.pagination', // pagination i�in etki synyfy
            '$paginateStyle': 'thumb',
            '$autoPlay': true,
            '$time': 3000 // 0'dan b�y�k bir deger girdiginizde otomatik olarak slide yapar
        };
        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 div").animate({ "bottom": "-" + captionHeight + "px" })
                    $(options.$slideElement, object).find("> div div").css("z-index", "0");
                    $(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);

                    $(".control", object).hover(function () {
                        $("ul", options.$paginate, object).fadeIn("fast")
                    }, function () { $("ul", $(options.$paginate, object)).fadeOut("fast") });
                }

                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() + "'></a></li>";
                        }
                        else if ((i - 1) < $currentindex) {
                            normalPaginateRepeater += "<li><a rel='" + (i - 1).toString() + "'></a></li>";
                        }
                        else {
                            if ((control == null) || control == "R") {
                                normalPaginateRepeater += "<li><a  class='selected' rel='" + (i - 1).toString() + "'></a></li>";
                            }
                            else {
                                normalPaginateRepeater += "<li><a  class='selected' rel='" + (i - 1).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);
            if (options.$time > 0) { autoPlay = setInterval(function () { next(); }, options.$time); }

            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();
                clearInterval(autoPlay)
            });
            $(".next", object).click(function () {
                next();
                clearInterval(autoPlay)
            });


            function paginationClick() {
                if (isBusy == true)
                { return; }
                isBusy = true;
                $currentindex = parseInt($(this).attr("rel"));
                Render("R");
                clearInterval(autoPlay)
            }
            var firstThumb = $(".rightPaginate a#r1", object)
            firstThumb.addClass("selected", object)
            $(".leftPaginate li a", object).css("display", "none");
        });
    };

})(jQuery);


