aladdin 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. data/LICENSE +22 -0
  2. data/README.md +43 -0
  3. data/assets/images/foundation/orbit/bullets.jpg +0 -0
  4. data/assets/images/foundation/orbit/left-arrow-small.png +0 -0
  5. data/assets/images/foundation/orbit/left-arrow.png +0 -0
  6. data/assets/images/foundation/orbit/loading.gif +0 -0
  7. data/assets/images/foundation/orbit/mask-black.png +0 -0
  8. data/assets/images/foundation/orbit/pause-black.png +0 -0
  9. data/assets/images/foundation/orbit/right-arrow-small.png +0 -0
  10. data/assets/images/foundation/orbit/right-arrow.png +0 -0
  11. data/assets/images/foundation/orbit/rotator-black.png +0 -0
  12. data/assets/images/foundation/orbit/timer-black.png +0 -0
  13. data/assets/javascripts/foundation/app.js +38 -0
  14. data/assets/javascripts/foundation/jquery.cookie.js +72 -0
  15. data/assets/javascripts/foundation/jquery.event.move.js +580 -0
  16. data/assets/javascripts/foundation/jquery.event.swipe.js +130 -0
  17. data/assets/javascripts/foundation/jquery.foundation.accordion.js +34 -0
  18. data/assets/javascripts/foundation/jquery.foundation.alerts.js +20 -0
  19. data/assets/javascripts/foundation/jquery.foundation.buttons.js +74 -0
  20. data/assets/javascripts/foundation/jquery.foundation.clearing.js +468 -0
  21. data/assets/javascripts/foundation/jquery.foundation.forms.js +486 -0
  22. data/assets/javascripts/foundation/jquery.foundation.joyride.js +639 -0
  23. data/assets/javascripts/foundation/jquery.foundation.magellan.js +85 -0
  24. data/assets/javascripts/foundation/jquery.foundation.mediaQueryToggle.js +27 -0
  25. data/assets/javascripts/foundation/jquery.foundation.navigation.js +55 -0
  26. data/assets/javascripts/foundation/jquery.foundation.orbit.js +897 -0
  27. data/assets/javascripts/foundation/jquery.foundation.reveal.js +794 -0
  28. data/assets/javascripts/foundation/jquery.foundation.tabs.js +43 -0
  29. data/assets/javascripts/foundation/jquery.foundation.tooltips.js +193 -0
  30. data/assets/javascripts/foundation/jquery.foundation.topbar.js +152 -0
  31. data/assets/javascripts/foundation/jquery.js +9440 -0
  32. data/assets/javascripts/foundation/jquery.offcanvas.js +50 -0
  33. data/assets/javascripts/foundation/jquery.placeholder.js +157 -0
  34. data/assets/javascripts/foundation/modernizr.foundation.js +4 -0
  35. data/bin/aladdin +20 -0
  36. data/lib/aladdin.rb +43 -0
  37. data/lib/aladdin/app.rb +89 -0
  38. data/lib/aladdin/render/markdown.rb +40 -0
  39. data/lib/aladdin/render/sanitize.rb +84 -0
  40. data/lib/aladdin/version.rb +4 -0
  41. data/views/haml/index.haml +43 -0
  42. data/views/haml/layout.haml +51 -0
  43. data/views/scss/_settings.scss +242 -0
  44. data/views/scss/app.scss +47 -0
  45. data/views/scss/github.scss +65 -0
  46. data/views/scss/pygment.scss +12 -0
  47. metadata +307 -0
@@ -0,0 +1,639 @@
1
+ /*
2
+ * jQuery Foundation Joyride Plugin 2.0.1
3
+ * http://foundation.zurb.com
4
+ * Copyright 2012, ZURB
5
+ * Free to use under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ */
8
+
9
+ /*jslint unparam: true, browser: true, indent: 2 */
10
+
11
+ ;(function ($, window, undefined) {
12
+ 'use strict';
13
+
14
+ var defaults = {
15
+ 'version' : '2.0.1',
16
+ 'tipLocation' : 'bottom', // 'top' or 'bottom' in relation to parent
17
+ 'nubPosition' : 'auto', // override on a per tooltip bases
18
+ 'scrollSpeed' : 300, // Page scrolling speed in milliseconds
19
+ 'timer' : 0, // 0 = no timer , all other numbers = timer in milliseconds
20
+ 'startTimerOnClick' : true, // true or false - true requires clicking the first button start the timer
21
+ 'startOffset' : 0, // the index of the tooltip you want to start on (index of the li)
22
+ 'nextButton' : true, // true or false to control whether a next button is used
23
+ 'tipAnimation' : 'fade', // 'pop' or 'fade' in each tip
24
+ 'pauseAfter' : [], // array of indexes where to pause the tour after
25
+ 'tipAnimationFadeSpeed': 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
26
+ 'cookieMonster' : false, // true or false to control whether cookies are used
27
+ 'cookieName' : 'joyride', // Name the cookie you'll use
28
+ 'cookieDomain' : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
29
+ 'tipContainer' : 'body', // Where will the tip be attached
30
+ 'postRideCallback' : $.noop, // A method to call once the tour closes (canceled or complete)
31
+ 'postStepCallback' : $.noop, // A method to call after each step
32
+ 'template' : { // HTML segments for tip layout
33
+ 'link' : '<a href="#close" class="joyride-close-tip">X</a>',
34
+ 'timer' : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
35
+ 'tip' : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
36
+ 'wrapper' : '<div class="joyride-content-wrapper"></div>',
37
+ 'button' : '<a href="#" class="small button joyride-next-tip"></a>'
38
+ }
39
+ },
40
+
41
+ Modernizr = Modernizr || false,
42
+
43
+ settings = {},
44
+
45
+ methods = {
46
+
47
+ init : function (opts) {
48
+ return this.each(function () {
49
+
50
+ if ($.isEmptyObject(settings)) {
51
+ settings = $.extend(defaults, opts);
52
+
53
+ // non configureable settings
54
+ settings.document = window.document;
55
+ settings.$document = $(settings.document);
56
+ settings.$window = $(window);
57
+ settings.$content_el = $(this);
58
+ settings.body_offset = $(settings.tipContainer).position();
59
+ settings.$tip_content = $('li', settings.$content_el);
60
+ settings.paused = false;
61
+ settings.attempts = 0;
62
+
63
+ settings.tipLocationPatterns = {
64
+ top: ['bottom'],
65
+ bottom: [], // bottom should not need to be repositioned
66
+ left: ['right', 'top', 'bottom'],
67
+ right: ['left', 'top', 'bottom']
68
+ };
69
+
70
+ // are we using jQuery 1.7+
71
+ methods.jquery_check();
72
+
73
+ // can we create cookies?
74
+ if (!$.isFunction($.cookie)) {
75
+ settings.cookieMonster = false;
76
+ }
77
+
78
+ // generate the tips and insert into dom.
79
+ if (!settings.cookieMonster || !$.cookie(settings.cookieName)) {
80
+
81
+ settings.$tip_content.each(function (index) {
82
+ methods.create({$li : $(this), index : index});
83
+ });
84
+
85
+ // show first tip
86
+ if (!settings.startTimerOnClick && settings.timer > 0) {
87
+ methods.show('init');
88
+ methods.startTimer();
89
+ } else {
90
+ methods.show('init');
91
+ }
92
+
93
+ }
94
+
95
+ settings.$document.on('click.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
96
+ e.preventDefault();
97
+
98
+ if (settings.$li.next().length < 1) {
99
+ methods.end();
100
+ } else if (settings.timer > 0) {
101
+ clearTimeout(settings.automate);
102
+ methods.hide();
103
+ methods.show();
104
+ methods.startTimer();
105
+ } else {
106
+ methods.hide();
107
+ methods.show();
108
+ }
109
+
110
+ });
111
+
112
+ $('.joyride-close-tip').on('click.joyride', function (e) {
113
+ e.preventDefault();
114
+ methods.end();
115
+ });
116
+
117
+ settings.$window.on('resize.joyride', function (e) {
118
+ if (methods.is_phone()) {
119
+ methods.pos_phone();
120
+ } else {
121
+ methods.pos_default();
122
+ }
123
+ });
124
+ } else {
125
+ methods.restart();
126
+ }
127
+
128
+ });
129
+ },
130
+
131
+ // call this method when you want to resume the tour
132
+ resume : function () {
133
+ methods.set_li();
134
+ methods.show();
135
+ },
136
+
137
+ tip_template : function (opts) {
138
+ var $blank, content;
139
+
140
+ opts.tip_class = opts.tip_class || '';
141
+
142
+ $blank = $(settings.template.tip).addClass(opts.tip_class);
143
+ content = $.trim($(opts.li).html()) +
144
+ methods.button_text(opts.button_text) +
145
+ settings.template.link +
146
+ methods.timer_instance(opts.index);
147
+
148
+ $blank.append($(settings.template.wrapper));
149
+ $blank.first().attr('data-index', opts.index);
150
+ $('.joyride-content-wrapper', $blank).append(content);
151
+
152
+ return $blank[0];
153
+ },
154
+
155
+ timer_instance : function (index) {
156
+ var txt;
157
+
158
+ if ((index === 0 && settings.startTimerOnClick && settings.timer > 0) || settings.timer === 0) {
159
+ txt = '';
160
+ } else {
161
+ txt = methods.outerHTML($(settings.template.timer)[0]);
162
+ }
163
+ return txt;
164
+ },
165
+
166
+ button_text : function (txt) {
167
+ if (settings.nextButton) {
168
+ txt = $.trim(txt) || 'Next';
169
+ txt = methods.outerHTML($(settings.template.button).append(txt)[0]);
170
+ } else {
171
+ txt = '';
172
+ }
173
+ return txt;
174
+ },
175
+
176
+ create : function (opts) {
177
+ // backwards compatability with data-text attribute
178
+ var buttonText = opts.$li.attr('data-button') || opts.$li.attr('data-text'),
179
+ tipClass = opts.$li.attr('class'),
180
+ $tip_content = $(methods.tip_template({
181
+ tip_class : tipClass,
182
+ index : opts.index,
183
+ button_text : buttonText,
184
+ li : opts.$li
185
+ }));
186
+
187
+ $(settings.tipContainer).append($tip_content);
188
+ },
189
+
190
+ show : function (init) {
191
+ var opts = {}, ii, opts_arr = [], opts_len = 0, p,
192
+ $timer = null;
193
+
194
+ // are we paused?
195
+ if (settings.$li === undefined || ($.inArray(settings.$li.index(), settings.pauseAfter) === -1)) {
196
+
197
+ // don't go to the next li if the tour was paused
198
+ if (settings.paused) {
199
+ settings.paused = false;
200
+ } else {
201
+ methods.set_li(init);
202
+ }
203
+
204
+ settings.attempts = 0;
205
+
206
+ if (settings.$li.length && settings.$target.length > 0) {
207
+ opts_arr = (settings.$li.data('options') || ':').split(';');
208
+ opts_len = opts_arr.length;
209
+
210
+ // parse options
211
+ for (ii = opts_len - 1; ii >= 0; ii--) {
212
+ p = opts_arr[ii].split(':');
213
+
214
+ if (p.length === 2) {
215
+ opts[$.trim(p[0])] = $.trim(p[1]);
216
+ }
217
+ }
218
+
219
+ settings.tipSettings = $.extend({}, settings, opts);
220
+
221
+ settings.tipSettings.tipLocationPattern = settings.tipLocationPatterns[settings.tipSettings.tipLocation];
222
+
223
+ // scroll if not modal
224
+ if (!/body/i.test(settings.$target.selector)) {
225
+ methods.scroll_to();
226
+ }
227
+
228
+ if (methods.is_phone()) {
229
+ methods.pos_phone(true);
230
+ } else {
231
+ methods.pos_default(true);
232
+ }
233
+
234
+ $timer = $('.joyride-timer-indicator', settings.$next_tip);
235
+
236
+ if (/pop/i.test(settings.tipAnimation)) {
237
+
238
+ $timer.outerWidth(0);
239
+
240
+ if (settings.timer > 0) {
241
+
242
+ settings.$next_tip.show();
243
+ $timer.animate({
244
+ width: $('.joyride-timer-indicator-wrap', settings.$next_tip).outerWidth()
245
+ }, settings.timer);
246
+
247
+ } else {
248
+
249
+ settings.$next_tip.show();
250
+
251
+ }
252
+
253
+
254
+ } else if (/fade/i.test(settings.tipAnimation)) {
255
+
256
+ $timer.outerWidth(0);
257
+
258
+ if (settings.timer > 0) {
259
+
260
+ settings.$next_tip.fadeIn(settings.tipAnimationFadeSpeed);
261
+
262
+ settings.$next_tip.show();
263
+ $timer.animate({
264
+ width: $('.joyride-timer-indicator-wrap', settings.$next_tip).outerWidth()
265
+ }, settings.timer);
266
+
267
+ } else {
268
+
269
+ settings.$next_tip.fadeIn(settings.tipAnimationFadeSpeed);
270
+
271
+ }
272
+ }
273
+
274
+ settings.$current_tip = settings.$next_tip;
275
+
276
+ // skip non-existant targets
277
+ } else if (settings.$li && settings.$target.length < 1) {
278
+
279
+ methods.show();
280
+
281
+ } else {
282
+
283
+ methods.end();
284
+
285
+ }
286
+ } else {
287
+
288
+ settings.paused = true;
289
+
290
+ }
291
+
292
+ },
293
+
294
+ // detect phones with media queries if supported.
295
+ is_phone : function () {
296
+ if (Modernizr) {
297
+ return Modernizr.mq('only screen and (max-width: 767px)');
298
+ }
299
+
300
+ return (settings.$window.width() < 767) ? true : false;
301
+ },
302
+
303
+ hide : function () {
304
+ settings.postStepCallback(settings.$li.index(), settings.$current_tip);
305
+ $('.joyride-modal-bg').hide();
306
+ settings.$current_tip.hide();
307
+ },
308
+
309
+ set_li : function (init) {
310
+ if (init) {
311
+ settings.$li = settings.$tip_content.eq(settings.startOffset);
312
+ methods.set_next_tip();
313
+ settings.$current_tip = settings.$next_tip;
314
+ } else {
315
+ settings.$li = settings.$li.next();
316
+ methods.set_next_tip();
317
+ }
318
+
319
+ methods.set_target();
320
+ },
321
+
322
+ set_next_tip : function () {
323
+ settings.$next_tip = $('.joyride-tip-guide[data-index=' + settings.$li.index() + ']');
324
+ },
325
+
326
+ set_target : function () {
327
+ var cl = settings.$li.attr('data-class'),
328
+ id = settings.$li.attr('data-id'),
329
+ $sel = function () {
330
+ if (id) {
331
+ return $(settings.document.getElementById(id));
332
+ } else if (cl) {
333
+ return $('.' + cl).first();
334
+ } else {
335
+ return $('body');
336
+ }
337
+ };
338
+
339
+ settings.$target = $sel();
340
+ },
341
+
342
+ scroll_to : function () {
343
+ var window_half, tipOffset;
344
+
345
+ window_half = settings.$window.height() / 2;
346
+ tipOffset = Math.ceil(settings.$target.offset().top - window_half + settings.$next_tip.outerHeight());
347
+
348
+ $("html, body").stop().animate({
349
+ scrollTop: tipOffset
350
+ }, settings.scrollSpeed);
351
+ },
352
+
353
+ paused : function () {
354
+ if (($.inArray((settings.$li.index() + 1), settings.pauseAfter) === -1)) {
355
+ return true;
356
+ }
357
+
358
+ return false;
359
+ },
360
+
361
+ destroy : function () {
362
+ settings.$document.off('.joyride');
363
+ $(window).off('.joyride');
364
+ $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
365
+ $('.joyride-tip-guide, .joyride-modal-bg').remove();
366
+ clearTimeout(settings.automate);
367
+ settings = {};
368
+ },
369
+
370
+ restart : function () {
371
+ methods.hide();
372
+ settings.$li = undefined;
373
+ methods.show('init');
374
+ },
375
+
376
+ pos_default : function (init) {
377
+ var half_fold = Math.ceil(settings.$window.height() / 2),
378
+ tip_position = settings.$next_tip.offset(),
379
+ $nub = $('.joyride-nub', settings.$next_tip),
380
+ nub_height = Math.ceil($nub.outerHeight() / 2),
381
+ toggle = init || false;
382
+
383
+ // tip must not be "display: none" to calculate position
384
+ if (toggle) {
385
+ settings.$next_tip.css('visibility', 'hidden');
386
+ settings.$next_tip.show();
387
+ }
388
+
389
+ if (!/body/i.test(settings.$target.selector)) {
390
+
391
+ if (methods.bottom()) {
392
+ settings.$next_tip.css({
393
+ top: (settings.$target.offset().top + nub_height + settings.$target.outerHeight()),
394
+ left: settings.$target.offset().left});
395
+
396
+ methods.nub_position($nub, settings.tipSettings.nubPosition, 'top');
397
+
398
+ } else if (methods.top()) {
399
+
400
+ settings.$next_tip.css({
401
+ top: (settings.$target.offset().top - settings.$next_tip.outerHeight() - nub_height),
402
+ left: settings.$target.offset().left});
403
+
404
+ methods.nub_position($nub, settings.tipSettings.nubPosition, 'bottom');
405
+
406
+ } else if (methods.right()) {
407
+
408
+ settings.$next_tip.css({
409
+ top: settings.$target.offset().top,
410
+ left: (settings.$target.outerWidth() + settings.$target.offset().left)});
411
+
412
+ methods.nub_position($nub, settings.tipSettings.nubPosition, 'left');
413
+
414
+ } else if (methods.left()) {
415
+
416
+ settings.$next_tip.css({
417
+ top: settings.$target.offset().top,
418
+ left: (settings.$target.offset().left - settings.$next_tip.outerWidth() - nub_height)});
419
+
420
+ methods.nub_position($nub, settings.tipSettings.nubPosition, 'right');
421
+
422
+ }
423
+
424
+ if (!methods.visible(methods.corners(settings.$next_tip)) && settings.attempts < settings.tipSettings.tipLocationPattern.length) {
425
+
426
+ $nub.removeClass('bottom')
427
+ .removeClass('top')
428
+ .removeClass('right')
429
+ .removeClass('left');
430
+
431
+ settings.tipSettings.tipLocation = settings.tipSettings.tipLocationPattern[settings.attempts];
432
+
433
+ settings.attempts++;
434
+
435
+ methods.pos_default(true);
436
+
437
+ }
438
+
439
+ } else if (settings.$li.length) {
440
+
441
+ methods.pos_modal($nub);
442
+
443
+ }
444
+
445
+ if (toggle) {
446
+ settings.$next_tip.hide();
447
+ settings.$next_tip.css('visibility', 'visible');
448
+ }
449
+
450
+ },
451
+
452
+ pos_phone : function (init) {
453
+ var tip_height = settings.$next_tip.outerHeight(),
454
+ tip_offset = settings.$next_tip.offset(),
455
+ target_height = settings.$target.outerHeight(),
456
+ $nub = $('.joyride-nub', settings.$next_tip),
457
+ nub_height = Math.ceil($nub.outerHeight() / 2),
458
+ toggle = init || false;
459
+
460
+ $nub.removeClass('bottom')
461
+ .removeClass('top')
462
+ .removeClass('right')
463
+ .removeClass('left');
464
+
465
+ if (toggle) {
466
+ settings.$next_tip.css('visibility', 'hidden');
467
+ settings.$next_tip.show();
468
+ }
469
+
470
+ if (!/body/i.test(settings.$target.selector)) {
471
+
472
+ if (methods.top()) {
473
+
474
+ settings.$next_tip.offset({top: settings.$target.offset().top - tip_height - nub_height});
475
+ $nub.addClass('bottom');
476
+
477
+ } else {
478
+
479
+ settings.$next_tip.offset({top: settings.$target.offset().top + target_height + nub_height});
480
+ $nub.addClass('top');
481
+
482
+ }
483
+
484
+ } else if (settings.$li.length) {
485
+
486
+ methods.pos_modal($nub);
487
+
488
+ }
489
+
490
+ if (toggle) {
491
+ settings.$next_tip.hide();
492
+ settings.$next_tip.css('visibility', 'visible');
493
+ }
494
+ },
495
+
496
+ pos_modal : function ($nub) {
497
+ methods.center();
498
+ $nub.hide();
499
+
500
+ if ($('.joyride-modal-bg').length < 1) {
501
+ $('body').append('<div class="joyride-modal-bg">').show();
502
+ }
503
+
504
+ if (/pop/i.test(settings.tipAnimation)) {
505
+ $('.joyride-modal-bg').show();
506
+ } else {
507
+ $('.joyride-modal-bg').fadeIn(settings.tipAnimationFadeSpeed);
508
+ }
509
+ },
510
+
511
+ center : function () {
512
+ var $w = settings.$window;
513
+
514
+ settings.$next_tip.css({
515
+ top : ((($w.height() - settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
516
+ left : ((($w.width() - settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
517
+ });
518
+
519
+ return true;
520
+ },
521
+
522
+ bottom : function () {
523
+ return /bottom/i.test(settings.tipSettings.tipLocation);
524
+ },
525
+
526
+ top : function () {
527
+ return /top/i.test(settings.tipSettings.tipLocation);
528
+ },
529
+
530
+ right : function () {
531
+ return /right/i.test(settings.tipSettings.tipLocation);
532
+ },
533
+
534
+ left : function () {
535
+ return /left/i.test(settings.tipSettings.tipLocation);
536
+ },
537
+
538
+ corners : function (el) {
539
+ var w = settings.$window,
540
+ right = w.outerWidth() + w.scrollLeft(),
541
+ bottom = w.outerWidth() + w.scrollTop();
542
+
543
+ return [
544
+ el.offset().top <= w.scrollTop(),
545
+ right <= el.offset().left + el.outerWidth(),
546
+ bottom <= el.offset().top + el.outerHeight(),
547
+ w.scrollLeft() >= el.offset().left
548
+ ];
549
+ },
550
+
551
+ visible : function (hidden_corners) {
552
+ var i = hidden_corners.length;
553
+
554
+ while (i--) {
555
+ if (hidden_corners[i]) return false;
556
+ }
557
+
558
+ return true;
559
+ },
560
+
561
+ nub_position : function (nub, pos, def) {
562
+ if (pos === 'auto') {
563
+ nub.addClass(def);
564
+ } else {
565
+ nub.addClass(pos);
566
+ }
567
+ },
568
+
569
+ startTimer : function () {
570
+ if (settings.$li.length) {
571
+ settings.automate = setTimeout(function () {
572
+ methods.hide();
573
+ methods.show();
574
+ methods.startTimer();
575
+ }, settings.timer);
576
+ } else {
577
+ clearTimeout(settings.automate);
578
+ }
579
+ },
580
+
581
+ end : function () {
582
+ if (settings.cookieMonster) {
583
+ $.cookie(settings.cookieName, 'ridden', { expires: 365, domain: settings.cookieDomain });
584
+ }
585
+
586
+ if (settings.timer > 0) {
587
+ clearTimeout(settings.automate);
588
+ }
589
+
590
+ $('.joyride-modal-bg').hide();
591
+ settings.$current_tip.hide();
592
+ settings.postStepCallback(settings.$li.index(), settings.$current_tip);
593
+ settings.postRideCallback(settings.$li.index(), settings.$current_tip);
594
+ },
595
+
596
+ jquery_check : function () {
597
+ // define on() and off() for older jQuery
598
+ if (!$.isFunction($.fn.on)) {
599
+
600
+ $.fn.on = function(types, sel, fn) {
601
+
602
+ return this.delegate(sel, types, fn);
603
+
604
+ };
605
+
606
+ $.fn.off = function(types, sel, fn) {
607
+
608
+ return this.undelegate(sel, types, fn);
609
+
610
+ };
611
+
612
+ return false;
613
+ }
614
+
615
+ return true;
616
+ },
617
+
618
+ outerHTML : function (el) {
619
+ // support FireFox < 11
620
+ return el.outerHTML || new XMLSerializer().serializeToString(el);
621
+ },
622
+
623
+ version : function () {
624
+ return settings.version;
625
+ }
626
+
627
+ };
628
+
629
+ $.fn.joyride = function (method) {
630
+ if (methods[method]) {
631
+ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
632
+ } else if (typeof method === 'object' || !method) {
633
+ return methods.init.apply(this, arguments);
634
+ } else {
635
+ $.error('Method ' + method + ' does not exist on jQuery.joyride');
636
+ }
637
+ };
638
+
639
+ }(jQuery, this));