Sorry for this, but i'm very noob in mootools and javascript

I've a page where i implement a mootools slider script to change the
text font size, and a mooscroller to have a "box" to show the content.
Now the question is, when i change the text size, the scroll knob
doesn't update automatic. The mooscroller have an update property to
make this happen, but how can i use it with the slider to automatic
change scrool knob?

the slider script is this:

"window.addEvent('domready', function(){
        // First Example
        var el = $('myElement'),
                font = $('content');

        // Create the new slider instance
        new Slider(el, el.getElement('.knob'), {
                steps: 35,      // There are 35 steps
                range: [8],     // Minimum value is 8
                onChange: function(value){
                        // Everytime the value changes, we change the font of 
an element
                        font.setStyle('font-size', value);
                }
        }).set(font.getStyle('font-size').toInt());


});"


and the Mooscroller is this:
"/*     Script: MooScroller.js
                Basically recreates the standard scrollbar behavior for elements
with overflow but using DOM elements so that the scroll bar elements
are completely styleable by css.

                Author:
                Aaron Newton <aaron [dot] newton [at] cnet [dot] com>

                Dependencies:
                Mootools 1.1 - <Core.js>, <Class.js>, <Class.Extras.js>,
<Function.js>, <Number.js>, <String.js>, <Element.js>,
<Element.Dimensions.js>, <Element.Event.js>, <Element.Selectors.js>

                Arguments:
                content - (DOM element or id) element that contains the 
overflown
content
                knob - (DOM element or id) element that acts as the scroll bar
                options - (object) a key/value set of options

                Options:
                mode - (string) 'vertical' or 'horizontal'; defaults to 
'vertical'
                scrollSteps - (integer) how many steps to move when the user 
moves
their mouse wheel or clicks the up/down scroll buttons
                wheel - (boolean) true (default) will enable mouse wheel 
scrolling
                scrollLinks - object with elements for up and down scrolling
                maxThumbSize - (integer) the maximum size to allow the scroll 
knob
to be; defaults to the height of the container it is in.

                Options.scrollLinks:
                forward - (DOM element or id) element that, when clicked, will
scroll the area forward
                                                        (right in horizontal 
mode, down in vertical mode); defaults to $
('scrollForward');
                                                        (if not found, nothing 
bad happens)
                back - (DOM element or id) element that, when clicked, will 
scroll
the area back
                                                        (left in horizontal 
mode, up in vertical mode); defaults to $
('scrollBack');

                Events:
                onScroll - (function) callback for when the user scrolls
                onPage - (function) callback for when the user paginates up or 
down;
passed a boolean - true if paging forward.


Example:
(start code)
<div id="scroller">
        <div id="content">
                <ol id="scrollerOL">
                        <li>one</li>
                        <li>two</li>
                        <li>three</li>
                        <li>four</li>
                        <li>five</li>
                        <li>six</li>
                        <li>seven</li>
                        <li>eight</li>
                        <li>nine</li>
                        <li>ten</li>
                </ol>
                <p>a paragraph</p>
                <ol>
                        <li>blah</li>
                        <li>blah</li>
                </ol>
        </div>
        <div id="scrollarea">
                <div id="scrollBack"></div>
                <div id="scrollBarContainer">
                        <div id="scrollKnob"></div>
                </div>
                <div id="scrollForward"></div>
        </div>
</div>
<script>
        new MooScroller('content', 'scrollKnob');
</script>
(end)
        */
var MooScroller = new Class({

                options: {
                        maxThumbSize: 10,
                        mode: 'vertical',
                        width: 0, //required only for mode: horizontal
                        scrollSteps: 10,
                        wheel: true,
                        scrollLinks: {
                                forward: 'scrollForward',
                                back: 'scrollBack'
                        },
                        onScroll: Class.empty,
                        onPage: Class.empty
                },

                initialize: function(content, knob, options){
                        this.setOptions(options);
                        this.horz = (this.options.mode == "horizontal");

                        this.content = $(content).setStyle('overflow', 
'hidden');
                        this.knob = $(knob);
                        this.track = this.knob.getParent();
                        this.setPositions();

                        if(this.horz && this.options.width) {
                                this.wrapper = new Element('div');
                                this.content.getChildren().each(function(child){
                                        this.wrapper.adopt(child);
                                });
                                
this.wrapper.injectInside(this.content).setStyle('width',
this.options.width);
                        }


                        this.bound = {
                                'start': this.start.bind(this),
                                'end': this.end.bind(this),
                                'drag': this.drag.bind(this),
                                'wheel': this.wheel.bind(this),
                                'page': this.page.bind(this)
                        };

                        this.position = {};
                        this.mouse = {};
                        this.update();
                        this.attach();

                        var clearScroll = function (){
                                $clear(this.scrolling);
                        }.bind(this);
                        ['forward','back'].each(function(direction) {
                                var lnk = 
$(this.options.scrollLinks[direction]);
                                if(lnk) {
                                        lnk.addEvents({
                                                mousedown: function() {
                                                        this.scrolling = 
this[direction].periodical(50, this);
                                                }.bind(this),
                                                mouseup: clearScroll.bind(this),
                                                click: clearScroll.bind(this)
                                        });
                                }
                        }, this);
                        this.knob.addEvent('click', clearScroll.bind(this));
                        window.addEvent('domready', function(){
                                try {
                                        $(document.body).addEvent('mouseup', 
clearScroll.bind(this));
                                }catch(e){}
                        }.bind(this));
                },
                setPositions: function(){
                        [this.track, this.knob].each(function(el){
                                if (el.getStyle('position') == 'static')
el.setStyle('position','relative');
                        });

                },
/*      Property: update
                Updates the size of the scroll knob; execute this method when 
the
content changes or the container's size is altered.
        */
                update: function(){
                        var plain = this.horz?'Width':'Height';
                        this.contentSize = this.content['offset'+plain];
                        this.contentScrollSize = this.content['scroll'+plain];
                        this.trackSize = this.track['offset'+plain];

                        this.contentRatio = this.contentSize / 
this.contentScrollSize;

                        this.knobSize = (this.trackSize *
this.contentRatio).limit(this.options.maxThumbSize, this.trackSize);

                        this.scrollRatio = this.contentScrollSize / 
this.trackSize;
                        this.knob.setStyle(plain.toLowerCase(), 
this.knobSize+'px');

                        this.updateThumbFromContentScroll();
                        this.updateContentFromThumbPosition();
                },

                updateContentFromThumbPosition: function(){
                        this.content[this.horz?'scrollLeft':'scrollTop'] =
this.position.now * this.scrollRatio;
                },

                updateThumbFromContentScroll: function(){
                        /*this.position.now =
(this.content[this.horz?'scrollLeft':'scrollTop'] /
this.scrollRatio).limit(0, (this.trackSize - this.knobSize));*/
                        this.position.now =
(this.content[this.horz?'scrollLeft':'scrollTop'] /
this.scrollRatio).limit(0, (this.trackSize - (this.knobSize + 2))); /*
modified by mavrickdesign.com.au - 13/12/2007 - (css display issue) */
                        this.knob.setStyle(this.horz?'left':'top', 
this.position.now+'px');
                },

                attach: function(){
                        this.knob.addEvent('mousedown', this.bound.start);
                        if (this.options.scrollSteps) 
this.content.addEvent('mousewheel',
this.bound.wheel);
                        this.track.addEvent('mouseup', this.bound.page);
                },

                wheel: function(event){
                        event = new Event(event);
                        this.scroll(-(event.wheel * this.options.scrollSteps));
                        this.updateThumbFromContentScroll();
                        event.stop();
                },

                scroll: function(steps){
                        steps = steps||this.options.scrollSteps;
                        this.content[this.horz?'scrollLeft':'scrollTop'] += 
steps;
                        this.updateThumbFromContentScroll();
                },
                forward: function(steps){
                        this.scroll(steps);
                },
                back: function(steps){
                        steps = steps||this.options.scrollSteps;
                        this.scroll(-steps);
                },

                page: function(event){
                        var axis = this.horz?'x':'y';
                        event = new Event(event);
                        var forward = (event.page[axis] > 
this.knob.getPosition()[axis]);
                        this.scroll((forward?1:-1)*this.content['offset'+
(this.horz?'Width':'Height')]);
                        this.updateThumbFromContentScroll();
                        this.fireEvent('onPage', forward);
                        event.stop();
                },


                start: function(event){
                        event = new Event(event);
                        var axis = this.horz?'x':'y';
                        this.mouse.start = event.page[axis];
                        this.position.start =
this.knob.getStyle(this.horz?'left':'top').toInt();
                        document.addEvent('mousemove', this.bound.drag);
                        document.addEvent('mouseup', this.bound.end);
                        this.knob.addEvent('mouseup', this.bound.end);
                        event.stop();
                },

                end: function(event){
                        event = new Event(event);
                        document.removeEvent('mousemove', this.bound.drag);
                        document.removeEvent('mouseup', this.bound.end);
                        this.knob.removeEvent('mouseup', this.bound.end);
                        event.stop();
                },

                drag: function(event){
                        event = new Event(event);
                        var axis = this.horz?'x':'y';
                        this.mouse.now = event.page[axis];
                        this.position.now = (this.position.start + 
(this.mouse.now -
this.mouse.start)).limit(0, (this.trackSize - this.knobSize));
                        this.updateContentFromThumbPosition();
                        this.updateThumbFromContentScroll();
                        event.stop();
                }

        });
        MooScroller.implement(new Events);
        MooScroller.implement(new Options);
/* do not edit below this line */
/* Section: Change Log

$Source: /cvs/main/flatfile/html/rb/js/global/cnet.global.framework/
common/layout.widgets/MooScroller.js,v $
$Log: MooScroller.js,v $
Revision 1.8  2007/09/24 20:55:49  newtona
new file: StickyWin.Ajax - adds ajax support to all stickywin classes
(creates new classes, just append .Ajax to any of the existing ones)
updated redball common full to include StickyWin.Ajax
date.picker, product.picker - updated syntax to use Element.empty
form.validator - now passes along the event object to the
onFormValidate event so that the form submit event can be stopped if
you like
popupdetails - added html response support; you can now return the
html you wish to display rather than a json object; only applies to
ajax. Also added a cache so that multiple requests are not made for
the same url.
stickyWinHTML - ractored so that options are now, you know, *optional*
MooScroller - added support for width option for horizontal scrolling

Revision 1.7  2007/09/13 23:21:22  newtona
slight docs tweak

Revision 1.6  2007/09/13 23:18:54  newtona
removing a dbug line

Revision 1.5  2007/09/13 23:15:37  newtona
woops. didn't actually check in my mooscroller changes...

Revision 1.1  2007/08/25 00:52:06  newtona
got lazy with my semi-colons...


*/"


Thank's

Reldes456

Reply via email to