﻿(function ($) {
    $.fn.productSlide = function (options) {

        var defaults = {
            slideTime: 100,
            itemWidth: 170,
            menuItemWidth: 20
        };
        var options = $.extend(defaults, options);

        return this.each(function () {
            /* Initialization */

            var slider = this;
            var items = $(slider).find('.slider_items_item');
            var itemCount = $(items).length;

            $(slider).find('.slider_items').width(options.itemWidth * itemCount);
            /*************/

            if (itemCount > 0) {
                $(slider).find('.slider_item_loader').hide();
            }

            if (itemCount > 1) {
                $(slider).find('.slider_items').height($(slider).find('.slider_items_item:eq(0)').height() + 8);
                $(slider).find('.slider_dots ul').css('width', itemCount * options.menuItemWidth).show();
                $(slider).find('.slider_arrow_left a').show();
                $(slider).find('.slider_arrow_right a').show();

                /* Dots menu */
                $(slider).find('.slider_dots a').click(function () {
                    this.blur();

                    if ($(this).hasClass('active')) return false;

                    var id = $(this).attr('class').split(" ")[0];
                    var index = 0;
                    var height = 0;

                    $(slider).find('.slider_items_item').each(function (i) {

                        if ($(this).hasClass(id)) {
                            index = i;
                            height = $(this).height() + 8;
                        }
                    });

                    $(slider).find('.slider_items').animate({ 'margin-left': -(index * options.itemWidth), 'height': height }, (options.slideTime * (index + 1)), function () {
                        var itemArray = $(slider).find('.slider_items_item');
                        for (var i = 0; i < index; i++) {
                            var item = itemArray[i];
                            $(slider).find('.slider_items').append($(item)).css('margin-left', -((index - (i + 1)) * options.itemWidth));

                        }
                    });

                    $(slider).find('.slider_dots ul a.active').removeClass('active');
                    $(slider).find('.slider_dots ul a.' + id).addClass('active');

                    return false;
                });


                /* Right arrowbutton */
                $(slider).find('.slider_arrow_right a').click(function () {
                    this.blur();

                    var firstItem = $(slider).find('.slider_items_item:eq(0)');
                    var secondItem = $(slider).find('.slider_items_item:eq(1)');

                    var height = secondItem.height() + 8;

                    $(slider).find('.slider_items').animate({ 'margin-left': -options.itemWidth, 'height': height }, options.slideTime * 2, function () {
                        $(slider).find('.slider_items').append(firstItem);
                        $(slider).find('.slider_items').css('margin-left', 0);
                    });

                    $(slider).find('.slider_dots ul a.active').removeClass('active');
                    $(slider).find('.slider_dots ul a.' + secondItem.attr("class").split(" ")[1]).addClass('active');

                    return false;
                });

                /* Left arrowbutton */
                $(slider).find('.slider_arrow_left a').click(function () {
                    this.blur();

                    var firstItem = $(slider).find('.slider_items_item:eq(0)');
                    var lastItem = $(slider).find('.slider_items_item:last');

                    var height = lastItem.height() + 8;

                    $(slider).find('.slider_items').css('margin-left', -options.itemWidth);
                    $(slider).find('.slider_items').prepend(lastItem);

                    $(slider).find('.slider_items').animate({ 'margin-left': 0, 'height': height }, options.slideTime * 2);

                    $(slider).find('.slider_dots ul a.active').removeClass('active');
                    $(slider).find('.slider_dots ul a.' + lastItem.attr("class").split(" ")[1]).addClass('active');

                    return false;
                });


            }

        });

    };
})(jQuery);
