;(function($)
{
	// Стандартные настройки
	var defaults =
	{
		thumbs: '#thumbs',
		selImg: '#selImg'
	}

    var opacityDefaults =
    {
        mouseOutOpacity:  0.67,
        mouseOverOpacity: 1.0,
        fadeSpeed:        250,
        selectedClass:    'selected'
    }

    $.multiSlider = function(settings)
    {
        var galleries = $('[id ^= ' + settings.thumbsPrefix + ']').each(function()
        {
            var postfix = this.id.substring(settings.thumbsPrefix.length);

            var config =
            {
                thumbs:    '#' + settings.thumbsPrefix + postfix,
                selImg:    '#' + settings.selImgPrefix + postfix,
                next:      '#' + settings.nextPrefix + postfix,
                prev:      '#' + settings.prevPrefix + postfix,
	            postfix:   postfix,
                numThumbs: settings.numThumbs
            };

            $(this).slider(config);
        });
    }

	/**
	 * Функция вызывается при инициализации слайдера
	 *
	 * @param settings - объект настроек слайдера
	 */
	$.fn.slider = function(settings)
	{
		// Нод для вставки изображения
		var selImg = $(settings.selImg);

		// Нод с привьюшками картинок
		var thumbs = $(settings.thumbs);

        // Кол-во привьюшек
        var numThumbs = settings.numThumbs;

        // Кнопка вперед
        var next = $(settings.next);

        // Кнопка назад
        var prev = $(settings.prev);

		var postfix = settings.postfix;

        // Массив нодов превьюшек
        var previewNodes = $(thumbs).find('a > img');

		if (previewNodes.size() == 0)
		{
			next.css('visibility', 'hidden');
			prev.css('visibility', 'hidden');
			return false;
		}

        // Выбранно изображение
        var selImage = null;

        // Кол-во страниц с превьюшками
        var previewListNum = Math.ceil(previewNodes.size() / numThumbs);

        // Текущий номер страницы превьюшек
        var previewScreen = 1;

        // Массив объектов нодов изображений
        var images = [];
		//var images = $(thumbs).find('a > img')

        // Событие на клик по кнопке предыдущее
        prev.click(function()
        {
            if (previewScreen > 1)
            {
                previewScreen--;
                thumbs.animate({marginLeft: '+=308'}, 1000);
            }

            if (previewScreen == 1)
                prev.css('visibility', 'hidden');

            next.css('visibility', 'visible');
        });

        // Событие на клик по кнопке следующее
        next.click(function()
        {
            if (previewScreen < previewListNum)
            {
                previewScreen++;
                thumbs.animate({marginLeft: '-=308'}, 1000);
            }

            if (previewScreen == previewListNum)
                next.css('visibility', 'hidden');

            prev.css('visibility', 'visible');
        });

        this.changeImage = function(url, num, arrImages1, selected, thumbId)
        {
			var innerhtml = '';
			arrImages1.each(function(i)
			{
				if (i == selected)
					innerhtml += '<a href="'+ num +'" rel="lightbox[' + thumbId + ']"><img src="'+ url +'"/></a>';
				else
					innerhtml += '<a href="'+ i +'" rel="lightbox[' + thumbId + ']" class="selected" />';
			});
			selImg.html(innerhtml);
        }

        var self = this;
		
		var allImages = '';
		var arrImages = [];
		var a1 = $('li > a', thumbs).each(function(i)
        {
			var bigImgUrl = $(this)[0].rel;
			arrImages.push(bigImgUrl);
        });
		
		var thumbId = thumbs.selector.substring(1, thumbs.selector.length);
		//console.log(thumbs);
        var a = $('li > a', thumbs).each(function(i)
        {
            $(this).click(function(e)
            {
                var img = $(this).find('img');
				var bigImgUrl = $(this)[0].rel;
				
                if (!img.hasClass('selected'))
                {
                    var url = $(this)[0].href;
	                var fullUrl = $(this)[0].rel;
                    self.changeImage(url, fullUrl, arrImages, bigImgUrl, thumbId);

                    selImage.removeClass('selected').animate({opacity: 0.67}, 250)
                    selImage = img.addClass('selected');
                }

                e.preventDefault();
            });
        });
		
		/**/
        prev.css('visibility', 'hidden');

        if (previewListNum == 1)
            next.css('visibility', 'hidden');
		this.changeImage(a[0].href, a[0].rel, arrImages, a[0].rel, thumbId);
        selImage = $(a[0]).find('img').addClass('selected');
        selImage.animate({opacity: 1}, 250);
	}

    $.fn.opacityRoller = function(options)
    {
        var setting = $.extend(opacityDefaults, options);

        var elems = $(this);

        // Установим начальную прозрачность и событие наведения
        elems.css('opacity',  setting.mouseOutOpacity).hover(
            function()
            {
                if (!$(this).hasClass(setting.selectedClass))
                    $(this).stop().animate({opacity: setting.mouseOverOpacity}, setting.fadeSpeed);
            },

            function()
            {
                if (!$(this).hasClass(setting.selectedClass))
                    $(this).stop().animate({opacity: setting.mouseOutOpacity}, setting.fadeSpeed);
            }
        );
    }
})($);
