(function () {
    
    /**
     * Бегунок масштаба
     *
     * @param root

     * @field root      root
     *
     * @event zoom
     *
     */
    PICSA.Slider = function (root) {
        var me = this;
        Observable(me);

        var slideTimer = new Timer();

        $('<div class="zoom-slider"><div></div><label>100%</label></div>').appendTo(root);
        root.find(".zoom-slider div").slider({
                min: 0.2,
                max: 1.8,
                step: 0.05,
                value: 1,
                slide: function (e, ui) {
                    slideTimer.later(100, function (zoomLevel) {
                        root.find(".zoom-slider label").html(parseInt(100 * zoomLevel) + "%");
                        me.notify("zoom", zoomLevel);
                    }, [ui.value]);
                },
                change: function (e, ui) {
                    root.find(".zoom-slider label").html(parseInt(100 * ui.value) + "%");
                }
        });

        me.setValue = function(val){
            root.find(".zoom-slider div").slider("value", val);
        };
    }

})();
