﻿jQuery.fn.slideGallery = function (options) {

    // Default options
    var opt = $.extend({
        animTimer: 1200,
        easing: "easeOutQuint"
    }, options);

    //for each gallery passed (for multiple galleries per page)
    return this.each(function () {
        var items = null;
        var maxposition = 0;
        var currentposition = 0;
        var dots = null;
        maxposition = $(this).find('.item').size() - 1; // amount of item divs
        items = $(this).find('.item');
        var gallery;

        dots = draw_dots($(this), items);

        //hide each .item
        //        items.each(function () {
        //            //$(this).css('display', 'none');
        //        });
        gallery = $(this).find('.slidegallery');
        slide(gallery, currentposition);
        update_dots($(this).find('ul.dots'), currentposition);
        hide_arrow();

        dots.find('li').click(function () {
            currentposition = $(this).index();
            update_dots(dots, currentposition);
            //alert(currentposition);
            hide_arrow();
            slide(gallery, currentposition);
            return false;
        });

        $(this).find('a.left').click(function () {
            currentposition -= 1;
            if (currentposition < 0) { currentposition = 0; return false; }
            update_dots(dots, currentposition);
            hide_arrow();
            slide($(this).siblings('.slidegallery'), currentposition);
            return false;
        });

        $(this).find('a.right').click(function () {
            currentposition += 1;
            if (currentposition > maxposition) { currentposition = maxposition; return false; }
            update_dots(dots, currentposition);
            hide_arrow();
            slide($(this).siblings('.slidegallery'), currentposition);
            return false;
        });

        function hide_arrow() {
            $('a.left').css('display', 'block');
            $('a.right').css('display', 'block');
            if (currentposition == maxposition) {
                $('a.right').css('display', 'none');
            }
            if (currentposition == 0) {
                $('a.left').css('display', 'none');
            }
        }

    });



    function draw_dots(container, items) {
        var out = "";
        var i = 1;
        out += '<ul class="dots">';
        items.each(function () {
            out += "<li>" + i + "</li>";
            i++;
        });
        out += '</ul>';
        container.append(out);
        return container.find('ul.dots');
    }

    function update_dots(dots, currentposition) {
        dots.find('li').css({ backgroundPosition: 'left bottom' });
        dots.find('li:eq(' + currentposition + ')').css({ backgroundPosition: 'left top' });
    }

    //    function fade(items, container, currentposition) {

    //        slide(container, currentposition);
    //        //$(items).css({display: 'none'});
    //        //$(items[currentposition]).css({ display: 'block' });
    //        //$(items).stop().animate({ opacity: 0 }, 250, function () {
    //        //    $(items[currentposition]).stop().css({ display: 'block' }).animate({ opacity: 1 }, 250);
    //        //});

    //    }

    function slide(container, currentposition) {

        goto = container.find('.item:eq(' + currentposition + ')');
        container.stop().scrollTo(goto, opt.animTimer, { easing: opt.easing });

    }


}
