From 2a1c8c643c25db4c4c6c2ded728650071a911b9f Mon Sep 17 00:00:00 2001 From: rekado Date: Sun, 31 Mar 2013 22:38:16 +0800 Subject: materials --- .../moo.js" | 133 +++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 "assignment1/materials/Environmental Impact Assessment Course Module \302\273 1-7 Summary_files/moo.js" (limited to 'assignment1/materials/Environmental Impact Assessment Course Module ยป 1-7 Summary_files/moo.js') diff --git "a/assignment1/materials/Environmental Impact Assessment Course Module \302\273 1-7 Summary_files/moo.js" "b/assignment1/materials/Environmental Impact Assessment Course Module \302\273 1-7 Summary_files/moo.js" new file mode 100644 index 0000000..d70a1e4 --- /dev/null +++ "b/assignment1/materials/Environmental Impact Assessment Course Module \302\273 1-7 Summary_files/moo.js" @@ -0,0 +1,133 @@ +/* +moo.fx, simple effects library built with prototype.js (http://prototype.conio.net). +by Valerio Proietti (http://mad4milk.net) MIT-style LICENSE. +for more info (http://moofx.mad4milk.net). +Sunday, March 05, 2006 +v 1.2.3 +*/ + +var fx = new Object(); +//base +fx.Base = function(){}; +fx.Base.prototype = { + setOptions: function(options) { + this.options = { + duration: 500, + onComplete: '', + transition: fx.sinoidal + } + Object.extend(this.options, options || {}); + }, + + step: function() { + var time = (new Date).getTime(); + if (time >= this.options.duration+this.startTime) { + this.now = this.to; + clearInterval (this.timer); + this.timer = null; + if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10); + } + else { + var Tpos = (time - this.startTime) / (this.options.duration); + this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from; + } + this.increase(); + }, + + custom: function(from, to) { + if (this.timer != null) return; + this.from = from; + this.to = to; + this.startTime = (new Date).getTime(); + this.timer = setInterval (this.step.bind(this), 13); + }, + + hide: function() { + this.now = 0; + this.increase(); + }, + + clearTimer: function() { + clearInterval(this.timer); + this.timer = null; + } +} + +//stretchers +fx.Layout = Class.create(); +fx.Layout.prototype = Object.extend(new fx.Base(), { + initialize: function(el, options) { + this.el = $(el); + this.el.style.overflow = "hidden"; + this.iniWidth = this.el.offsetWidth; + this.iniHeight = this.el.offsetHeight; + this.setOptions(options); + } +}); + +fx.Height = Class.create(); +Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), { + increase: function() { + this.el.style.height = this.now + "px"; + }, + + toggle: function() { + if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0); + else this.custom(0, this.el.scrollHeight); + } +}); + +fx.Width = Class.create(); +Object.extend(Object.extend(fx.Width.prototype, fx.Layout.prototype), { + increase: function() { + this.el.style.width = this.now + "px"; + }, + + toggle: function(){ + if (this.el.offsetWidth > 0) this.custom(this.el.offsetWidth, 0); + else this.custom(0, this.iniWidth); + } +}); + +//fader +fx.Opacity = Class.create(); +fx.Opacity.prototype = Object.extend(new fx.Base(), { + initialize: function(el, options) { + this.el = $(el); + this.now = 1; + this.increase(); + this.setOptions(options); + }, + + increase: function() { + if (this.now == 1 && (/Firefox/.test(navigator.userAgent))) this.now = 0.9999; + this.setOpacity(this.now); + }, + + setOpacity: function(opacity) { + if (opacity == 0 && this.el.style.visibility != "hidden") this.el.style.visibility = "hidden"; + else if (this.el.style.visibility != "visible") this.el.style.visibility = "visible"; + if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + opacity*100 + ")"; + this.el.style.opacity = opacity; + }, + + toggle: function() { + if (this.now > 0) this.custom(1, 0); + else this.custom(0, 1); + } +}); + +//transitions +fx.sinoidal = function(pos){ + return ((-Math.cos(pos*Math.PI)/2) + 0.5); + //this transition is from script.aculo.us +} +fx.linear = function(pos){ + return pos; +} +fx.cubic = function(pos){ + return Math.pow(pos, 3); +} +fx.circ = function(pos){ + return Math.sqrt(pos); +} \ No newline at end of file -- cgit v1.2.3