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