buildSampler = function() {

    window.sampler = $('sampler');
        sampler.lenta = sampler.getElementsByTagName('UL')[0];
        sampler.lenta.items = sampler.lenta.getElementsByTagName('LI');

        sampler.lenta.selected = null;
        sampler.lenta.select = function(i) {
            if (this.selected)
                this.selected.className = '';

            this.items[i].className = 'active';
            this.selected = this.items[i];

            var off = -1 * (this.items[i].offsetLeft - ((sampler.offsetWidth / 2) - (this.items[i].offsetWidth / 2)));
            this.style.left = off + 'px';

            clearSelection();
        }

        sampler.lenta.fill = function(items) {

            var li, img;
            for (var i = 0; i < items.length; i++) {
                 li = document.createElement('LI');
                 li.info = {
                     URI:   items[i].URI,
                     image: items[i].image,
                     name:  items[i].name,
                     descr: items[i].descr
                 }

                 img = li.appendChild(document.createElement('IMG'));
                 img.src = items[i].src;

                 this.appendChild(li);
            }

            scrollbar.scroller.steps = Math.ceil(scrollbar.offsetWidth / this.items.length);
        }

    window.scrollbar = $('scrollbar');
        scrollbar.scroller = scrollbar.getElementsByTagName('DIV')[0];
        scrollbar.scroller.tooltip  = scrollbar.getElementsByTagName('SPAN')[0];

    scrollbar.scroller.onmousedown = function(e) {
        e = e || window.event;

        sampler.lenta.style.visibility = 'visible';

        this.tooltip.style.display = 'none';
        var x = getXOffset(scrollbar);
        this.curX = e.clientX - x - this.offsetLeft;

        document.onmousemove = function(e) {
            e  = e || window.event;

            try {
                 scrollbar.setCapture(true);
            } catch(err) {
                 e.preventDefault();
            }

            var k = Math.min(725, Math.max(0, (e.clientX - x - scrollbar.scroller.curX + 17)));
            var i = Math.floor(k / scrollbar.scroller.steps);

            sampler.lenta.select(i);
            scrollbar.scroller.style.left = k + 'px';
        }

        document.onmouseup = function() {
            document.onmousemove = null;

            try {
                 scrollbar.releaseCapture();
            } catch(err) {}

            scrollbar.scroller.tooltip.style.left = scrollbar.scroller.offsetLeft + 19 + 'px';
            scrollbar.scroller.tooltip.style.display = 'block';
            sampler.lenta.style.visibility = 'hidden';

            if (sampler.lenta.selected) {
                $('-sampler-name').innerHTML  = sampler.lenta.selected.info.name;
                $('-sampler-descr').innerHTML = sampler.lenta.selected.info.descr;
                $('-sampler-link').href       = sampler.lenta.selected.info.URI;
                $('-sampler-image').src       = sampler.lenta.selected.info.image;
            }
        }
    }
}