﻿(function ($) {
    $.fn.campaingSlide = function (options) {

        var defaults = {
            intervall: 5000,
            autoSlideTime: 800,
            clickSlideTime: 100
        };
        var options = $.extend(defaults, options);

        return this.each(function () {
            /* Variables */

            var campaign = this;

            var imageWidth = $(campaign).width();
            var images = $(campaign).find('.FCD_SlideImage');
            var imagesCount = images.length;
            var menuWidth = $(campaign).find('.FCD_SlideMenu ul').width();
            var slideInterval = 0;

            /*************/

            if (imagesCount > 1) {

                $(campaign).find('.FCD_SlideMenu').css('left', (imageWidth - menuWidth) / 2).css('visibility', 'visible');

                $(campaign).find('.FCD_Slide').width(imageWidth * imagesCount);

                $(campaign).find('.FCD_SlideMenu a').click(function () {
                    this.blur();
                    slideTo(this.className, options.clickSlideTime, campaign, imageWidth);
                    return false;
                });

                if (imagesCount > 1) {
                    var x = Math.round(Math.random() * 5000);
                    slideInterval = setInterval("slideFrame(" + options.autoSlideTime + ", '" + this.id + "', " + imageWidth + ")", options.intervall + x);
                    $(campaign).hover(
                function () {
                    clearInterval(slideInterval)
                },
                function () {
                    slideInterval = setInterval("slideFrame(" + options.autoSlideTime + ", '" + this.id + "', " + imageWidth + ")", options.intervall);
                }
                );
                } else {
                    //
                }

                /* Slides one frame with set speed */
                slideFrame = function (speed, id, width) {
                    var camp = document.getElementById(id);
                    var firstItem = $(camp).find('.FCD_Slide .FCD_SlideImage:eq(0)');
                    var secondID = $(camp).find('.FCD_Slide .FCD_SlideImage:eq(1)').attr("class").split(" ")[1];
                    firstItem.animate({ 'marginLeft': -imageWidth }, speed, function () {
                        $(camp).find('.FCD_Slide').append(firstItem);
                        firstItem.css('margin-left', 0);
                    });

                    $(camp).find('.FCD_SlideMenu a.selected').removeClass('selected');
                    $(camp).find('.FCD_SlideMenu a.' + secondID).addClass('selected');

                };

                /* Slides to a frame with set id based on speed */
                slideTo = function (classes, speed, camp, width) {
                    var id = classes.split(" ")[0];
                    var index = 0;
                    $(camp).find('.FCD_Slide .FCD_SlideImage').each(function (i) {

                        if ($(this).hasClass(id)) index = i;
                    });

                    if ($(camp).find('.FCD_SlideMenu a.' + id).hasClass('selected')) return;

                    $(camp).find('.FCD_Slide').animate({ 'marginLeft': -(index * imageWidth) }, (speed * (index + 1)), function () {
                        var itemArray = $(camp).find('.FCD_Slide .FCD_SlideImage');
                        for (var i = 0; i < index; i++) {
                            var item = itemArray[i];
                            $(camp).find('.FCD_Slide').append($(item)).css('margin-left', -((index - (i + 1)) * imageWidth));

                        }
                    });

                    $(camp).find('.FCD_SlideMenu a.selected').removeClass('selected');
                    $(camp).find('.FCD_SlideMenu a.' + id).addClass('selected');
                }

            } else {
                $(campaign).find('.FCD_SlideMenu').hide();
            }


        });

    };
})(jQuery);
