apphunk 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,593 @@
1
+ /*
2
+ * jQuery UI Effects 1.6rc6
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://ui.jquery.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Effects/
9
+ */
10
+ ;(function($) {
11
+
12
+ $.effects = $.effects || {}; //Add the 'effects' scope
13
+
14
+ $.extend($.effects, {
15
+ version: "1.6rc6",
16
+
17
+ // Saves a set of properties in a data storage
18
+ save: function(element, set) {
19
+ for(var i=0; i < set.length; i++) {
20
+ if(set[i] !== null) element.data("ec.storage."+set[i], element[0].style[set[i]]);
21
+ }
22
+ },
23
+
24
+ // Restores a set of previously saved properties from a data storage
25
+ restore: function(element, set) {
26
+ for(var i=0; i < set.length; i++) {
27
+ if(set[i] !== null) element.css(set[i], element.data("ec.storage."+set[i]));
28
+ }
29
+ },
30
+
31
+ setMode: function(el, mode) {
32
+ if (mode == 'toggle') mode = el.is(':hidden') ? 'show' : 'hide'; // Set for toggle
33
+ return mode;
34
+ },
35
+
36
+ getBaseline: function(origin, original) { // Translates a [top,left] array into a baseline value
37
+ // this should be a little more flexible in the future to handle a string & hash
38
+ var y, x;
39
+ switch (origin[0]) {
40
+ case 'top': y = 0; break;
41
+ case 'middle': y = 0.5; break;
42
+ case 'bottom': y = 1; break;
43
+ default: y = origin[0] / original.height;
44
+ };
45
+ switch (origin[1]) {
46
+ case 'left': x = 0; break;
47
+ case 'center': x = 0.5; break;
48
+ case 'right': x = 1; break;
49
+ default: x = origin[1] / original.width;
50
+ };
51
+ return {x: x, y: y};
52
+ },
53
+
54
+ // Wraps the element around a wrapper that copies position properties
55
+ createWrapper: function(element) {
56
+
57
+ //if the element is already wrapped, return it
58
+ if (element.parent().is('.ui-effects-wrapper'))
59
+ return element.parent();
60
+
61
+ //Cache width,height and float properties of the element, and create a wrapper around it
62
+ var props = { width: element.outerWidth(true), height: element.outerHeight(true), 'float': element.css('float') };
63
+ element.wrap('<div class="ui-effects-wrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');
64
+ var wrapper = element.parent();
65
+
66
+ //Transfer the positioning of the element to the wrapper
67
+ if (element.css('position') == 'static') {
68
+ wrapper.css({ position: 'relative' });
69
+ element.css({ position: 'relative'} );
70
+ } else {
71
+ var top = element.css('top'); if(isNaN(parseInt(top,10))) top = 'auto';
72
+ var left = element.css('left'); if(isNaN(parseInt(left,10))) left = 'auto';
73
+ wrapper.css({ position: element.css('position'), top: top, left: left, zIndex: element.css('z-index') }).show();
74
+ element.css({position: 'relative', top: 0, left: 0 });
75
+ }
76
+
77
+ wrapper.css(props);
78
+ return wrapper;
79
+ },
80
+
81
+ removeWrapper: function(element) {
82
+ if (element.parent().is('.ui-effects-wrapper'))
83
+ return element.parent().replaceWith(element);
84
+ return element;
85
+ },
86
+
87
+ setTransition: function(element, list, factor, value) {
88
+ value = value || {};
89
+ $.each(list, function(i, x){
90
+ unit = element.cssUnit(x);
91
+ if (unit[0] > 0) value[x] = unit[0] * factor + unit[1];
92
+ });
93
+ return value;
94
+ },
95
+
96
+ //Base function to animate from one class to another in a seamless transition
97
+ animateClass: function(value, duration, easing, callback) {
98
+
99
+ var cb = (typeof easing == "function" ? easing : (callback ? callback : null));
100
+ var ea = (typeof easing == "string" ? easing : null);
101
+
102
+ return this.each(function() {
103
+
104
+ var offset = {}; var that = $(this); var oldStyleAttr = that.attr("style") || '';
105
+ if(typeof oldStyleAttr == 'object') oldStyleAttr = oldStyleAttr["cssText"]; /* Stupidly in IE, style is a object.. */
106
+ if(value.toggle) { that.hasClass(value.toggle) ? value.remove = value.toggle : value.add = value.toggle; }
107
+
108
+ //Let's get a style offset
109
+ var oldStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this,null) : this.currentStyle));
110
+ if(value.add) that.addClass(value.add); if(value.remove) that.removeClass(value.remove);
111
+ var newStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this,null) : this.currentStyle));
112
+ if(value.add) that.removeClass(value.add); if(value.remove) that.addClass(value.remove);
113
+
114
+ // The main function to form the object for animation
115
+ for(var n in newStyle) {
116
+ if( typeof newStyle[n] != "function" && newStyle[n] /* No functions and null properties */
117
+ && n.indexOf("Moz") == -1 && n.indexOf("length") == -1 /* No mozilla spezific render properties. */
118
+ && newStyle[n] != oldStyle[n] /* Only values that have changed are used for the animation */
119
+ && (n.match(/color/i) || (!n.match(/color/i) && !isNaN(parseInt(newStyle[n],10)))) /* Only things that can be parsed to integers or colors */
120
+ && (oldStyle.position != "static" || (oldStyle.position == "static" && !n.match(/left|top|bottom|right/))) /* No need for positions when dealing with static positions */
121
+ ) offset[n] = newStyle[n];
122
+ }
123
+
124
+ that.animate(offset, duration, ea, function() { // Animate the newly constructed offset object
125
+ // Change style attribute back to original. For stupid IE, we need to clear the damn object.
126
+ if(typeof $(this).attr("style") == 'object') { $(this).attr("style")["cssText"] = ""; $(this).attr("style")["cssText"] = oldStyleAttr; } else $(this).attr("style", oldStyleAttr);
127
+ if(value.add) $(this).addClass(value.add); if(value.remove) $(this).removeClass(value.remove);
128
+ if(cb) cb.apply(this, arguments);
129
+ });
130
+
131
+ });
132
+ }
133
+ });
134
+
135
+
136
+ function _normalizeArguments(a, m) {
137
+
138
+ var o = a[1] && a[1].constructor == Object ? a[1] : {}; if(m) o.mode = m;
139
+ var speed = a[1] && a[1].constructor != Object ? a[1] : o.duration; //either comes from options.duration or the second argument
140
+ speed = $.fx.off ? 0 : typeof speed === "number" ? speed : $.fx.speeds[speed] || $.fx.speeds._default;
141
+ var callback = o.callback || ( $.isFunction(a[2]) && a[2] ) || ( $.isFunction(a[3]) && a[3] );
142
+
143
+ return [a[0], o, speed, callback];
144
+
145
+ }
146
+
147
+ //Extend the methods of jQuery
148
+ $.fn.extend({
149
+
150
+ //Save old methods
151
+ _show: $.fn.show,
152
+ _hide: $.fn.hide,
153
+ __toggle: $.fn.toggle,
154
+ _addClass: $.fn.addClass,
155
+ _removeClass: $.fn.removeClass,
156
+ _toggleClass: $.fn.toggleClass,
157
+
158
+ // New effect methods
159
+ effect: function(fx, options, speed, callback) {
160
+ return $.effects[fx] ? $.effects[fx].call(this, {method: fx, options: options || {}, duration: speed, callback: callback }) : null;
161
+ },
162
+
163
+ show: function() {
164
+ if(!arguments[0] || (arguments[0].constructor == Number || (/(slow|normal|fast)/).test(arguments[0])))
165
+ return this._show.apply(this, arguments);
166
+ else {
167
+ return this.effect.apply(this, _normalizeArguments(arguments, 'show'));
168
+ }
169
+ },
170
+
171
+ hide: function() {
172
+ if(!arguments[0] || (arguments[0].constructor == Number || (/(slow|normal|fast)/).test(arguments[0])))
173
+ return this._hide.apply(this, arguments);
174
+ else {
175
+ return this.effect.apply(this, _normalizeArguments(arguments, 'hide'));
176
+ }
177
+ },
178
+
179
+ toggle: function(){
180
+ if(!arguments[0] || (arguments[0].constructor == Number || (/(slow|normal|fast)/).test(arguments[0])) || (arguments[0].constructor == Function))
181
+ return this.__toggle.apply(this, arguments);
182
+ else {
183
+ return this.effect.apply(this, _normalizeArguments(arguments, 'toggle'));
184
+ }
185
+ },
186
+
187
+ addClass: function(classNames, speed, easing, callback) {
188
+ return speed ? $.effects.animateClass.apply(this, [{ add: classNames },speed,easing,callback]) : this._addClass(classNames);
189
+ },
190
+ removeClass: function(classNames,speed,easing,callback) {
191
+ return speed ? $.effects.animateClass.apply(this, [{ remove: classNames },speed,easing,callback]) : this._removeClass(classNames);
192
+ },
193
+ toggleClass: function(classNames,speed,easing,callback) {
194
+ return ( (typeof speed !== "boolean") && speed ) ? $.effects.animateClass.apply(this, [{ toggle: classNames },speed,easing,callback]) : this._toggleClass(classNames, speed);
195
+ },
196
+ morph: function(remove,add,speed,easing,callback) {
197
+ return $.effects.animateClass.apply(this, [{ add: add, remove: remove },speed,easing,callback]);
198
+ },
199
+ switchClass: function() {
200
+ return this.morph.apply(this, arguments);
201
+ },
202
+
203
+ // helper functions
204
+ cssUnit: function(key) {
205
+ var style = this.css(key), val = [];
206
+ $.each( ['em','px','%','pt'], function(i, unit){
207
+ if(style.indexOf(unit) > 0)
208
+ val = [parseFloat(style), unit];
209
+ });
210
+ return val;
211
+ }
212
+ });
213
+
214
+ /*
215
+ * jQuery Color Animations
216
+ * Copyright 2007 John Resig
217
+ * Released under the MIT and GPL licenses.
218
+ */
219
+
220
+ // We override the animation for all of these color styles
221
+ $.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
222
+ $.fx.step[attr] = function(fx) {
223
+ if ( fx.state == 0 ) {
224
+ fx.start = getColor( fx.elem, attr );
225
+ fx.end = getRGB( fx.end );
226
+ }
227
+
228
+ fx.elem.style[attr] = "rgb(" + [
229
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0],10), 255), 0),
230
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1],10), 255), 0),
231
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2],10), 255), 0)
232
+ ].join(",") + ")";
233
+ };
234
+ });
235
+
236
+ // Color Conversion functions from highlightFade
237
+ // By Blair Mitchelmore
238
+ // http://jquery.offput.ca/highlightFade/
239
+
240
+ // Parse strings looking for color tuples [255,255,255]
241
+ function getRGB(color) {
242
+ var result;
243
+
244
+ // Check if we're already dealing with an array of colors
245
+ if ( color && color.constructor == Array && color.length == 3 )
246
+ return color;
247
+
248
+ // Look for rgb(num,num,num)
249
+ if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
250
+ return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)];
251
+
252
+ // Look for rgb(num%,num%,num%)
253
+ if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
254
+ return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
255
+
256
+ // Look for #a0b1c2
257
+ if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
258
+ return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
259
+
260
+ // Look for #fff
261
+ if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
262
+ return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
263
+
264
+ // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
265
+ if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
266
+ return colors['transparent'];
267
+
268
+ // Otherwise, we're most likely dealing with a named color
269
+ return colors[$.trim(color).toLowerCase()];
270
+ }
271
+
272
+ function getColor(elem, attr) {
273
+ var color;
274
+
275
+ do {
276
+ color = $.curCSS(elem, attr);
277
+
278
+ // Keep going until we find an element that has color, or we hit the body
279
+ if ( color != '' && color != 'transparent' || $.nodeName(elem, "body") )
280
+ break;
281
+
282
+ attr = "backgroundColor";
283
+ } while ( elem = elem.parentNode );
284
+
285
+ return getRGB(color);
286
+ };
287
+
288
+ // Some named colors to work with
289
+ // From Interface by Stefan Petre
290
+ // http://interface.eyecon.ro/
291
+
292
+ var colors = {
293
+ aqua:[0,255,255],
294
+ azure:[240,255,255],
295
+ beige:[245,245,220],
296
+ black:[0,0,0],
297
+ blue:[0,0,255],
298
+ brown:[165,42,42],
299
+ cyan:[0,255,255],
300
+ darkblue:[0,0,139],
301
+ darkcyan:[0,139,139],
302
+ darkgrey:[169,169,169],
303
+ darkgreen:[0,100,0],
304
+ darkkhaki:[189,183,107],
305
+ darkmagenta:[139,0,139],
306
+ darkolivegreen:[85,107,47],
307
+ darkorange:[255,140,0],
308
+ darkorchid:[153,50,204],
309
+ darkred:[139,0,0],
310
+ darksalmon:[233,150,122],
311
+ darkviolet:[148,0,211],
312
+ fuchsia:[255,0,255],
313
+ gold:[255,215,0],
314
+ green:[0,128,0],
315
+ indigo:[75,0,130],
316
+ khaki:[240,230,140],
317
+ lightblue:[173,216,230],
318
+ lightcyan:[224,255,255],
319
+ lightgreen:[144,238,144],
320
+ lightgrey:[211,211,211],
321
+ lightpink:[255,182,193],
322
+ lightyellow:[255,255,224],
323
+ lime:[0,255,0],
324
+ magenta:[255,0,255],
325
+ maroon:[128,0,0],
326
+ navy:[0,0,128],
327
+ olive:[128,128,0],
328
+ orange:[255,165,0],
329
+ pink:[255,192,203],
330
+ purple:[128,0,128],
331
+ violet:[128,0,128],
332
+ red:[255,0,0],
333
+ silver:[192,192,192],
334
+ white:[255,255,255],
335
+ yellow:[255,255,0],
336
+ transparent: [255,255,255]
337
+ };
338
+
339
+ /*
340
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
341
+ *
342
+ * Uses the built in easing capabilities added In jQuery 1.1
343
+ * to offer multiple easing options
344
+ *
345
+ * TERMS OF USE - jQuery Easing
346
+ *
347
+ * Open source under the BSD License.
348
+ *
349
+ * Copyright 2008 George McGinley Smith
350
+ * All rights reserved.
351
+ *
352
+ * Redistribution and use in source and binary forms, with or without modification,
353
+ * are permitted provided that the following conditions are met:
354
+ *
355
+ * Redistributions of source code must retain the above copyright notice, this list of
356
+ * conditions and the following disclaimer.
357
+ * Redistributions in binary form must reproduce the above copyright notice, this list
358
+ * of conditions and the following disclaimer in the documentation and/or other materials
359
+ * provided with the distribution.
360
+ *
361
+ * Neither the name of the author nor the names of contributors may be used to endorse
362
+ * or promote products derived from this software without specific prior written permission.
363
+ *
364
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
365
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
366
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
367
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
368
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
369
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
370
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
371
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
372
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
373
+ *
374
+ */
375
+
376
+ // t: current time, b: begInnIng value, c: change In value, d: duration
377
+ $.easing.jswing = $.easing.swing;
378
+
379
+ $.extend($.easing,
380
+ {
381
+ def: 'easeOutQuad',
382
+ swing: function (x, t, b, c, d) {
383
+ //alert($.easing.default);
384
+ return $.easing[$.easing.def](x, t, b, c, d);
385
+ },
386
+ easeInQuad: function (x, t, b, c, d) {
387
+ return c*(t/=d)*t + b;
388
+ },
389
+ easeOutQuad: function (x, t, b, c, d) {
390
+ return -c *(t/=d)*(t-2) + b;
391
+ },
392
+ easeInOutQuad: function (x, t, b, c, d) {
393
+ if ((t/=d/2) < 1) return c/2*t*t + b;
394
+ return -c/2 * ((--t)*(t-2) - 1) + b;
395
+ },
396
+ easeInCubic: function (x, t, b, c, d) {
397
+ return c*(t/=d)*t*t + b;
398
+ },
399
+ easeOutCubic: function (x, t, b, c, d) {
400
+ return c*((t=t/d-1)*t*t + 1) + b;
401
+ },
402
+ easeInOutCubic: function (x, t, b, c, d) {
403
+ if ((t/=d/2) < 1) return c/2*t*t*t + b;
404
+ return c/2*((t-=2)*t*t + 2) + b;
405
+ },
406
+ easeInQuart: function (x, t, b, c, d) {
407
+ return c*(t/=d)*t*t*t + b;
408
+ },
409
+ easeOutQuart: function (x, t, b, c, d) {
410
+ return -c * ((t=t/d-1)*t*t*t - 1) + b;
411
+ },
412
+ easeInOutQuart: function (x, t, b, c, d) {
413
+ if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
414
+ return -c/2 * ((t-=2)*t*t*t - 2) + b;
415
+ },
416
+ easeInQuint: function (x, t, b, c, d) {
417
+ return c*(t/=d)*t*t*t*t + b;
418
+ },
419
+ easeOutQuint: function (x, t, b, c, d) {
420
+ return c*((t=t/d-1)*t*t*t*t + 1) + b;
421
+ },
422
+ easeInOutQuint: function (x, t, b, c, d) {
423
+ if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
424
+ return c/2*((t-=2)*t*t*t*t + 2) + b;
425
+ },
426
+ easeInSine: function (x, t, b, c, d) {
427
+ return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
428
+ },
429
+ easeOutSine: function (x, t, b, c, d) {
430
+ return c * Math.sin(t/d * (Math.PI/2)) + b;
431
+ },
432
+ easeInOutSine: function (x, t, b, c, d) {
433
+ return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
434
+ },
435
+ easeInExpo: function (x, t, b, c, d) {
436
+ return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
437
+ },
438
+ easeOutExpo: function (x, t, b, c, d) {
439
+ return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
440
+ },
441
+ easeInOutExpo: function (x, t, b, c, d) {
442
+ if (t==0) return b;
443
+ if (t==d) return b+c;
444
+ if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
445
+ return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
446
+ },
447
+ easeInCirc: function (x, t, b, c, d) {
448
+ return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
449
+ },
450
+ easeOutCirc: function (x, t, b, c, d) {
451
+ return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
452
+ },
453
+ easeInOutCirc: function (x, t, b, c, d) {
454
+ if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
455
+ return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
456
+ },
457
+ easeInElastic: function (x, t, b, c, d) {
458
+ var s=1.70158;var p=0;var a=c;
459
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
460
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
461
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
462
+ return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
463
+ },
464
+ easeOutElastic: function (x, t, b, c, d) {
465
+ var s=1.70158;var p=0;var a=c;
466
+ if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3;
467
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
468
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
469
+ return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
470
+ },
471
+ easeInOutElastic: function (x, t, b, c, d) {
472
+ var s=1.70158;var p=0;var a=c;
473
+ if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5);
474
+ if (a < Math.abs(c)) { a=c; var s=p/4; }
475
+ else var s = p/(2*Math.PI) * Math.asin (c/a);
476
+ if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
477
+ return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
478
+ },
479
+ easeInBack: function (x, t, b, c, d, s) {
480
+ if (s == undefined) s = 1.70158;
481
+ return c*(t/=d)*t*((s+1)*t - s) + b;
482
+ },
483
+ easeOutBack: function (x, t, b, c, d, s) {
484
+ if (s == undefined) s = 1.70158;
485
+ return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
486
+ },
487
+ easeInOutBack: function (x, t, b, c, d, s) {
488
+ if (s == undefined) s = 1.70158;
489
+ if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
490
+ return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
491
+ },
492
+ easeInBounce: function (x, t, b, c, d) {
493
+ return c - $.easing.easeOutBounce (x, d-t, 0, c, d) + b;
494
+ },
495
+ easeOutBounce: function (x, t, b, c, d) {
496
+ if ((t/=d) < (1/2.75)) {
497
+ return c*(7.5625*t*t) + b;
498
+ } else if (t < (2/2.75)) {
499
+ return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
500
+ } else if (t < (2.5/2.75)) {
501
+ return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
502
+ } else {
503
+ return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
504
+ }
505
+ },
506
+ easeInOutBounce: function (x, t, b, c, d) {
507
+ if (t < d/2) return $.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
508
+ return $.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
509
+ }
510
+ });
511
+ /*
512
+ *
513
+ * TERMS OF USE - EASING EQUATIONS
514
+ *
515
+ * Open source under the BSD License.
516
+ *
517
+ * Copyright 2001 Robert Penner
518
+ * All rights reserved.
519
+ *
520
+ * Redistribution and use in source and binary forms, with or without modification,
521
+ * are permitted provided that the following conditions are met:
522
+ *
523
+ * Redistributions of source code must retain the above copyright notice, this list of
524
+ * conditions and the following disclaimer.
525
+ * Redistributions in binary form must reproduce the above copyright notice, this list
526
+ * of conditions and the following disclaimer in the documentation and/or other materials
527
+ * provided with the distribution.
528
+ *
529
+ * Neither the name of the author nor the names of contributors may be used to endorse
530
+ * or promote products derived from this software without specific prior written permission.
531
+ *
532
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
533
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
534
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
535
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
536
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
537
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
538
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
539
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
540
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
541
+ *
542
+ */
543
+
544
+ })(jQuery);
545
+
546
+ /*
547
+ * jQuery UI Effects Highlight 1.6rc6
548
+ *
549
+ * Copyright (c) 2009 AUTHORS.txt (http://ui.jquery.com/about)
550
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
551
+ * and GPL (GPL-LICENSE.txt) licenses.
552
+ *
553
+ * http://docs.jquery.com/UI/Effects/Highlight
554
+ *
555
+ * Depends:
556
+ * effects.core.js
557
+ */
558
+ (function($) {
559
+
560
+ $.effects.highlight = function(o) {
561
+
562
+ return this.queue(function() {
563
+
564
+ // Create element
565
+ var el = $(this), props = ['backgroundImage','backgroundColor','opacity'];
566
+
567
+ // Set options
568
+ var mode = $.effects.setMode(el, o.options.mode || 'show'); // Set Mode
569
+ var color = o.options.color || "#ffff99"; // Default highlight color
570
+ var oldColor = el.css("backgroundColor");
571
+
572
+ // Adjust
573
+ $.effects.save(el, props); el.show(); // Save & Show
574
+ el.css({backgroundImage: 'none', backgroundColor: color}); // Shift
575
+
576
+ // Animation
577
+ var animation = {backgroundColor: oldColor };
578
+ if (mode == "hide") animation['opacity'] = 0;
579
+
580
+ // Animate
581
+ el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
582
+ if(mode == "hide") el.hide();
583
+ $.effects.restore(el, props);
584
+ if (mode == "show" && $.browser.msie) this.style.removeAttribute('filter');
585
+ if(o.callback) o.callback.apply(this, arguments);
586
+ el.dequeue();
587
+ }});
588
+
589
+ });
590
+
591
+ };
592
+
593
+ })(jQuery);
data/doc/js/main.js ADDED
@@ -0,0 +1,22 @@
1
+ function toggleSource( id )
2
+ {
3
+ var $src = $('#' + id).toggle();
4
+ $('#l_' + id).html($src.css('display') == 'none' ? 'show' : 'hide');
5
+ }
6
+
7
+ function openCode( url )
8
+ {
9
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
10
+ }
11
+
12
+
13
+ window.highlight = function(url) {
14
+ var hash = url.match(/#([^#]+)$/)
15
+ if(hash) {
16
+ $('a[name=' + hash[1] + ']').parent().effect('highlight', {}, 'slow')
17
+ }
18
+ }
19
+
20
+ $(function() {
21
+ highlight('#' + location.hash);
22
+ });