- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 14 Sep 2009 07:12:57 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/WebContent/scripts In directory hutz:/tmp/cvs-serv1467/WebContent/scripts Modified Files: mootools-1.2.3.1-more.js Log Message: added FX.SmoothScroll Index: mootools-1.2.3.1-more.js =================================================================== RCS file: /sources/public/2006/unicorn/WebContent/scripts/mootools-1.2.3.1-more.js,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- mootools-1.2.3.1-more.js 10 Sep 2009 08:31:56 -0000 1.3 +++ mootools-1.2.3.1-more.js 14 Sep 2009 07:12:55 -0000 1.4 @@ -123,6 +123,57 @@ }; /* +Script: Chain.Wait.js + Adds a method to inject pauses between chained events. + + License: + MIT-style license. + + Authors: + Aaron Newton +*/ + +(function(){ + + var wait = { + wait: function(duration){ + return this.chain(function(){ + this.callChain.delay($pick(duration, 500), this); + }.bind(this)); + } + }; + + Chain.implement(wait); + + if (window.Fx){ + Fx.implement(wait); + ['Css', 'Tween', 'Elements'].each(function(cls){ + if (Fx[cls]) Fx[cls].implement(wait); + }); + } + + try { + Element.implement({ + chains: function(effects){ + $splat($pick(effects, ['tween', 'morph', 'reveal'])).each(function(effect){ + effect = this.get(effect); + if (!effect) return; + effect.setOptions({ + link:'chain' + }); + }, this); + return this; + }, + pauseFx: function(duration, effect){ + this.chains(effect).get($pick(effect, 'tween')).wait(duration); + return this; + } + }); + } catch(e){} + +})(); + +/* Script: Date.js Extends the Date native object to include methods useful in managing dates. @@ -1184,6 +1235,117 @@ }); /* +Script: Fx.Scroll.js + Effect to smoothly scroll any element, including the window. + + License: + MIT-style license. + + Authors: + Valerio Proietti +*/ + +Fx.Scroll = new Class({ + + Extends: Fx, + + options: { + offset: {x: 0, y: 0}, + wheelStops: true + }, + + initialize: function(element, options){ + this.element = this.subject = document.id(element); + this.parent(options); + var cancel = this.cancel.bind(this, false); + + if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body); + + var stopper = this.element; + + if (this.options.wheelStops){ + this.addEvent('start', function(){ + stopper.addEvent('mousewheel', cancel); + }, true); + this.addEvent('complete', function(){ + stopper.removeEvent('mousewheel', cancel); + }, true); + } + }, + + set: function(){ + var now = Array.flatten(arguments); + this.element.scrollTo(now[0], now[1]); + }, + + compute: function(from, to, delta){ + return [0, 1].map(function(i){ + return Fx.compute(from[i], to[i], delta); + }); + }, + + start: function(x, y){ + if (!this.check(x, y)) return this; + var offsetSize = this.element.getSize(), scrollSize = this.element.getScrollSize(); + var scroll = this.element.getScroll(), values = {x: x, y: y}; + for (var z in values){ + var max = scrollSize[z] - offsetSize[z]; + if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z].limit(0, max) : max; + else values[z] = scroll[z]; + values[z] += this.options.offset[z]; + } + return this.parent([scroll.x, scroll.y], [values.x, values.y]); + }, + + toTop: function(){ + return this.start(false, 0); + }, + + toLeft: function(){ + return this.start(0, false); + }, + + toRight: function(){ + return this.start('right', false); + }, + + toBottom: function(){ + return this.start(false, 'bottom'); + }, + + toElement: function(el){ + var position = document.id(el).getPosition(this.element); + return this.start(position.x, position.y); + }, + + scrollIntoView: function(el, axes, offset){ + axes = axes ? $splat(axes) : ['x','y']; + var to = {}; + el = document.id(el); + var pos = el.getPosition(this.element); + var size = el.getSize(); + var scroll = this.element.getScroll(); + var containerSize = this.element.getSize(); + var edge = { + x: pos.x + size.x, + y: pos.y + size.y + }; + ['x','y'].each(function(axis) { + if (axes.contains(axis)) { + if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis]; + if (pos[axis] < scroll[axis]) to[axis] = pos[axis]; + } + if (to[axis] == null) to[axis] = scroll[axis]; + if (offset && offset[axis]) to[axis] = to[axis] + offset[axis]; + }, this); + if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y); + return this; + } + +}); + + +/* Script: Fx.Slide.js Effect to slide an element in and out of view. @@ -1326,6 +1488,55 @@ /* +Script: Fx.SmoothScroll.js + Class for creating a smooth scrolling effect to all internal links on the page. + + License: + MIT-style license. + + Authors: + Valerio Proietti +*/ + +var SmoothScroll = Fx.SmoothScroll = new Class({ + + Extends: Fx.Scroll, + + initialize: function(options, context){ + context = context || document; + this.doc = context.getDocument(); + var win = context.getWindow(); + this.parent(this.doc, options); + this.links = this.options.links ? $$(this.options.links) : $$(this.doc.links); + var location = win.location.href.match(/^[^#]*/)[0] + '#'; + this.links.each(function(link){ + if (link.href.indexOf(location) != 0) {return;} + var anchor = link.href.substr(location.length); + if (anchor) this.useLink(link, anchor); + }, this); + if (!Browser.Engine.webkit419) { + this.addEvent('complete', function(){ + win.location.hash = this.anchor; + }, true); + } + }, + + useLink: function(link, anchor){ + var el; + link.addEvent('click', function(event){ + if (el !== false && !el) el = document.id(anchor) || this.doc.getElement('a[name=' + anchor + ']'); + if (el) { + event.preventDefault(); + this.anchor = anchor; + this.toElement(el); + link.blur(); + } + }.bind(this)); + } + +}); + +/* Script: Date.English.US.js Date messages for US English.
Received on Monday, 14 September 2009 07:13:07 UTC