$(document).ready(function(){
			var slideInProgress = false;
          
			var rebuild = function(slider, direction)
			{

                    switch(direction)
                    {
                        case 'left':
                            if (options.loopType == "carousel")
                            {
                                var item = null;
                                for (i = 0; i < options.slideBy; i++)
                                {
                                    item = slider.find(options.slideSelector).last().get(0);
                                    slider.position = slider.position - options.width;
                                    slider.prepend(item);
                                    slider.css({left: slider.position+'px'});
                                    
                                }
                                break;
                            }
                        case 'right':
                            if (options.loopType == "carousel")
                            {
                                var item = null;
                                for (i = 0; i < options.slideBy; i++)
                                {
                                    item = slider.find(options.slideSelector).first().get(0);
                                    slider.position = slider.position + options.width;
                                    slider.append(item);
                                    slider.css({left: slider.position+'px'});
                                }
                            }
                    }
				return slider;
			}
			
			var slideLeft = function(el){
            
                var overall = el.find(options.slideSelector).length;
                var lastSlide = false;
                
                if (overall <= 4)
                {
                    return false;
                }
                
				if( el.hasClass('slideInProgress') )
				{
					return false;
				}
				el.position = parseInt(el.css('left'));
                
				if(el.position == 0)
				{
					if(options.loop)
					{
						el = rebuild(el,'left');
                        el.position = parseInt(el.css('left'));
					}
					else
					{
						return false;
					}
				}
                
                if ((options.width * options.slideBy) > (-el.position))
                {
                    var positionDelta = -el.position;
                    lastSlide = true;
                }
                else
                {
                    var positionDelta = options.width * options.slideBy;
                }

				el.addClass('slideInProgress');
				el.position = el.position + positionDelta;
				el.animate({
					left: el.position
				  }, options.speed, function(){
					el.removeClass('slideInProgress');
                    var right = el.parent().parent().find(options.slideRightSelector);
                    var left = el.parent().parent().find(options.slideLeftSelector);
                    
                    if ((lastSlide || el.position == 0) && !options.loop)
                    {
                        left.addClass('gray_out');
                    }
                    
                    if (right.hasClass('gray_out'))
                    {
                        right.removeClass('gray_out');
                    }                    
				});	
			}
			
			var slideRight = function(el){

				if( el.hasClass('slideInProgress') )
				{
					return false;
				}
				el.position = parseInt(el.css('left'));
                
                var overall = el.find(options.slideSelector).length;
                var lastSlide = false;
                
           
                if (overall > 4)
                {
                    var slider_lenght = options.visible * options.width;
                    var container_lenght = overall * options.width;
                    
                    if(el.position == (slider_lenght - container_lenght))
                    {
                        if(options.loop)
                        {
                            el = rebuild(el,'right');
                            el.position = parseInt(el.css('left'));
                        }
                        else
                        {
                            return false;
                        }
                    }
                    
                    if ((container_lenght - (-el.position)) < ((options.width * options.slideBy) + slider_lenght))
                    {
                        var positionDelta = (container_lenght - (-el.position + slider_lenght));
                        lastSlide = true;
                    }
                    else
                    {
                        var positionDelta = options.width * options.slideBy;
                    }
                }
                else
                {
                    return false;
                }

				el.addClass('slideInProgress');
				el.position = el.position - positionDelta;
                
				el.animate({
					left: el.position
				  }, options.speed, function(){
					el.removeClass('slideInProgress');
                    var right = el.parent().parent().find(options.slideRightSelector);
                    var left = el.parent().parent().find(options.slideLeftSelector);
                    
                    if ((lastSlide || (el.position == (slider_lenght - container_lenght))) && !options.loop)
                    {
                        right.addClass('gray_out');
                    }
                    
                    if (left.hasClass('gray_out'))
                    {
                        left.removeClass('gray_out');
                    }
				});	
			}
            if (typeof(options) != 'undefined')
            {
                //set left scroll event
                $(options.slideLeftSelector).live('click', function(){
                    slider = $(this).parent().find(options.sliderSelector);
                    slideLeft(slider);
                });
                
                //set right scroll event
                $(options.slideRightSelector).live('click', function(){
                    slider = $(this).parent().find(options.sliderSelector);
                    slideRight(slider);
                });
                
                if (!options.loop)
                {
                    $(options.slideLeftSelector).addClass('gray_out');
                }
            }
});
