    function Slider(identifier, offset, delay){
    
        this.getIdentifier = function getIdentifier(){
            return identifier;
        }
        
        
        { // Slider: beginning of getMoverWidth()
            var slider = document.getElementById(identifier);
            if (slider == null) 
                return new Object();
            
            var slides = slider.getElementsByTagName("li");
            var minSlidesNumber = 4;
            if (slides.length < minSlidesNumber) 
                return new Object();
            
            var moverWidth = slides[0].offsetWidth;
            
            this.getMoverWidth = function getMoverWidth(){
                return moverWidth;
            }
            
        } // Slider: end of getMoverWidth()
        { // Slider: beginning of getMaxShiftOffset(), getMinShiftOffset(), getShiftOffset()
            var minShiftOffset = 1;
            var maxShiftOffset = 100;
            var shiftOffset = 12;
            
            if (offset >= minShiftOffset && offset <= maxShiftOffset) 
                shiftOffset = offset;
            if (offset <= shiftOffset) 
                return new Object();
            
            this.getMaxShiftOffset = function getMaxShiftOffset(){
                return maxShiftOffset;
            };
            this.getMinShiftOffset = function getMinShiftOffset(){
                return minShiftOffset;
            };
            this.getShiftOffset = function getShiftOffset(){
                return shiftOffset;
            }
            
        } // Slider: end of getMaxShiftOffset(), getMinShiftOffset(), getShiftOffset()
        { // Slider: beginning of getMaxShiftDelay(), getMinShiftDelay(), getShiftDelay()
            var minShiftDelay = 5;
            var maxShiftDelay = 250;
            var shiftDelay = 25;
            
            if (delay >= minShiftDelay && delay <= maxShiftDelay) 
                shiftDelay = delay;
            
            this.getMaxShiftDelay = function getMaxShiftDelay(){
                return maxShiftDelay;
            };
            this.getMinShiftDelay = function getMinShiftDelay(){
                return minShiftDelay;
            };
            this.getShiftDelay = function getShiftDelay(){
                return shiftDelay;
            }
            
        } // Slider: end of getMaxShiftDelay(), getMinShiftDelay(), getShiftDelay()
    } // end of Slider(identifier)
    Slider.prototype.slideLeft = function slideLeft(){
    
        var slides = document.getElementById(this.getIdentifier()).getElementsByTagName("li");
        
        var slidesContainer = slides[0].parentNode;
        var mover = slides[0];
        var firstRegularSlide = slides[1];
        
        if (mover.offsetWidth == this.getMoverWidth()) {
        
            var lastRegularSlide = slides[slides.length - 1];
            
            mover.style.width = "0px";
            slidesContainer.insertBefore(lastRegularSlide, firstRegularSlide);
        }
        
        var moverWidth = mover.offsetWidth;
        
        if (this.getMoverWidth() - moverWidth > this.getShiftOffset()) 
            moverWidth += this.getShiftOffset();
        else 
            moverWidth = this.getMoverWidth();
        
        mover.style.width = moverWidth + "px";
        
        if (moverWidth < this.getMoverWidth()) {
        
            var self = this;
            setTimeout(function(){
                self.slideLeft();
            }, this.getShiftDelay());
        }
        
    } // Slider.prototype: end of slideLeft()
    Slider.prototype.slideRight = function slideRight(){
    
        var slides = document.getElementById(this.getIdentifier()).getElementsByTagName("li");
        
        var slidesContainer = slides[0].parentNode;
        var mover = slides[0];
        var firstRegularSlide = slides[1];
        
        var moverWidth = mover.offsetWidth;
        
        if (moverWidth > this.getShiftOffset()) 
            moverWidth -= this.getShiftOffset();
        else 
            moverWidth = 0;
        
        mover.style.width = moverWidth + "px";
        
        if (moverWidth > 0) {
        
            var self = this;
            setTimeout(function(){
                self.slideRight();
            }, this.getShiftDelay());
        }
        else {
        
            slidesContainer.insertBefore(firstRegularSlide, null);
            mover.style.width = this.getMoverWidth() + "px";
        }
        
    } // Slider.prototype: end of slideRight()
    
    var sampleSlider = new Slider('horizonSlider', 122, 5);