(function() {

    $.fn.slider = function(callerSettings) {

    	if(!this.length) { return false; }

     	var me = this;

        var settings = $.extend({
        	interval: false,
            fadeTime: 500,
            onslide: false
        }, callerSettings||{});

       	var navPanel = me.find(".nav");
       	var imgElement = me.find('img.main');
       	var imgWidth = imgElement.width();
       	var imgHeight = imgElement.height();
       	var infoBlock = $("<div/>").addClass('slider-info').hide().appendTo("body");
       	var navLinks = navPanel.find("a").filter(":not(.slide-left)").filter(":not(.slide-right)");
       	var objCount = navLinks.length;
       	var selectedNum = 0;
	var objects = new Array();
	var timeoutId = false;

		function getIndex(element) {
			var index = -1;
			$.each(objects, function(i, obj) {
				if (index != -1) { return false; }
				if(element == obj.link) {
					index = i;
				}
			});
			return index;
		}

       	me.slideTo = function(index) {
       		if (index > (objCount-1)) { return false; }
       		navLinks.removeClass('selected');
         	$(objects[index].link).addClass('selected');
       		selectedNum = index;

         	imgElement.fadeOut(settings.fadeTime, function() {
         		imgElement.get(0).src = objects[index].img.src;
         		imgElement.fadeIn(settings.fadeTime);
         	});

         	if($.isFunction(settings.onslide)) {
         		settings.onslide.call(objects[index], index);
         	}

         	if(objects[index].relatedBlock.length) {
         		infoBlock.html(objects[index].relatedBlock.html())
         		         .css('left', me.offset().left)
         		         .css('top', me.offset().top)
         		         .show();
				infoBlock.find('input.hidden-buy').click(mainSliderBuy);
         	}
         	else
         	{
         		infoBlock.hide();
         	}

         	if(settings.interval) {
         		if(timeoutId) {
         			clearTimeout(timeoutId);
         		}
         		timeoutId = setTimeout(function() {
         			me.slideRight();
         		}, settings.interval);
         	}
       	};

		me.slideLeft = function() {
			selectedNum--;
			if(selectedNum < 0) {
				selectedNum = objCount - 1;
			}
			me.slideTo(selectedNum);
		};

		me.slideRight = function() {
			selectedNum++;
			if(selectedNum >= objCount) {
				selectedNum = 0;
			}
			me.slideTo(selectedNum);
		};

       	navLinks.each(function(i) {
       		$(this).sliderIndex = i;
       		if($(this).hasClass('selected')) {
       			selectedNum = (i+1);
       		}
       		var cachedImg = new Image(imgWidth, imgHeight);
       		cachedImg.src = $(this).attr('href');
       		objects[i] = {
       			link: this,
       			relatedBlock: $("#"+$(this).attr('rel')),
       			img: cachedImg
       		};
       	}).click(function() {
       		me.slideTo(getIndex(this));
       		return false;
       	});

       	me.find(".slide-left").click(function() {
       		me.slideLeft();
       		return false;
       	});

       	me.find(".slide-right").click(function() {
       		me.slideRight();
       		return false;
       	});


       	return me;


    }
})(jQuery);
