limarquee-rails 1.0.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5cf9c90d35f6c334f41fe7ae40c63b03508a684e
4
+ data.tar.gz: ab69862202e5e5d2f421205d84f3c9f05f2a748b
5
+ SHA512:
6
+ metadata.gz: 37eed70dcab8ce40ca51ee4f401500d7d2aec5cd799e1ca681d23bdf36cba42c29324c14767583b576c00db1d26539394bb83cf896a87494e2cea65ef2089bbb
7
+ data.tar.gz: 47d3f1229b15d0fdfa6aaf1c1de3f8bc469f3143b8a5c87b082f92a7311ca6c9b15e86f163e0d527035231090125db67e04a910fefc316f20ec1e0007620ca4a
data/Dockerfile ADDED
@@ -0,0 +1,35 @@
1
+ # How to use it
2
+ # =============
3
+ #
4
+ # Visit http://blog.zedroot.org/using-docker-to-maintain-a-ruby-gem/
5
+
6
+ # ~~~~ Image base ~~~~
7
+ # Base image with the latest Ruby only
8
+ FROM litaio/ruby:2.2.2
9
+ MAINTAINER Guillaume Hain zedtux@zedroot.org
10
+
11
+
12
+ # ~~~~ Set up the environment ~~~~
13
+ ENV DEBIAN_FRONTEND noninteractive
14
+
15
+ # ~~~~ OS Maintenance ~~~~
16
+ RUN apt-get update && apt-get install -y git
17
+
18
+ # ~~~~ Rails Preparation ~~~~
19
+ # Rubygems and Bundler
20
+ RUN touch ~/.gemrc && \
21
+ echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
22
+ gem install rubygems-update && \
23
+ update_rubygems && \
24
+ gem install bundler && \
25
+ mkdir -p /gem/
26
+
27
+ WORKDIR /gem/
28
+ ADD . /gem/
29
+ RUN bundle install
30
+
31
+ # Import the gem source code
32
+ VOLUME .:/gem/
33
+
34
+ ENTRYPOINT ["bundle", "exec"]
35
+ CMD ["rake", "-T"]
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in bootstrap-slider-rails.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Sammerset
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # Limarquee-Rails
2
+
3
+ This Gem integrates https://github.com/omcg33/jquery.limarquee.
4
+
5
+ It integrates this fork with your Rails project and is versioned to track the fork's version.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'limarquee-rails'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install limarquee-rails
20
+
21
+ ## Usage
22
+
23
+ This gem uses a Rails Engine to make JQuery ticker assets available to you.
24
+
25
+ Require the JavaScript files from your `application.js` or wherever needed using:
26
+
27
+ ```
28
+ //= require limarquee-rails
29
+ ```
30
+
31
+ Require the CSS files from your `application.scss` or wherever needed using:
32
+
33
+ ```
34
+ *= require limarquee-rails
35
+ ```
36
+
37
+ ## Contributing
38
+
39
+ 1. Fork it
40
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
41
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
42
+ 4. Push to the branch (`git push origin my-new-feature`)
43
+ 5. Create new Pull Request
@@ -0,0 +1,5 @@
1
+ module LimarqueeRails
2
+ module Rails
3
+ VERSION = '1.0.0'
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ require 'limarquee-rails/version'
2
+
3
+ module LimarqueeRails
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ # Make assets avaiable
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'limarquee-rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'limarquee-rails'
8
+ spec.version = LimarqueeRails::Rails::VERSION
9
+ spec.authors = ['Sammerset']
10
+ spec.email = ['sammerset@ukr.net']
11
+ spec.description = %q{Make JQuery Limarquee available to Rails}
12
+ spec.summary = %q{This Gem integrates omcg33 fork of JQuery Limarquee
13
+ with Rails, exposing its JavaScript and CSS assets via
14
+ a Rails Engine.}
15
+ spec.homepage = 'http://github.com/sammerset/limarquee-rails'
16
+ spec.license = 'MIT'
17
+
18
+ spec.files = `git ls-files`.split($/)
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_dependency 'railties', '>= 3.2'
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'rake'
25
+ end
@@ -0,0 +1,1309 @@
1
+ /*
2
+ * jQuery liMarquee v 4.6
3
+ *
4
+ * Copyright 2013, Linnik Yura | LI MASS CODE | http://masscode.ru
5
+ * http://masscode.ru/index.php/k2/item/44-limarquee
6
+ * Free to use
7
+ *
8
+ * Last Update 20.11.2014
9
+ */
10
+ (function ($) {
11
+ var methods = {
12
+ init: function (options) {
13
+ var p = {
14
+ direction: 'left', //Указывает направление движения содержимого контейнера (left | right | up | down)
15
+ loop: -1, //Задает, сколько раз будет прокручиваться содержимое. "-1" для бесконечного воспроизведения движения
16
+ scrolldelay: 0, //Величина задержки в миллисекундах между движениями
17
+ scrollamount: 50, //Скорость движения контента (px/sec)
18
+ circular: true, //Если "true" - строка непрерывная
19
+ drag: true, //Если "true" - включено перетаскивание строки
20
+ runshort: true, //Если "true" - короткая строка тоже "бегает", "false" - стоит на месте
21
+ hoverstop: true, //true - строка останавливается при наведении курсора мыши, false - строка не останавливается
22
+ inverthover: false, //false - стандартное поведение. Если "true" - строка начинает движение только при наведении курсора
23
+ xml: false //Путь к xml файлу с нужным текстом
24
+ };
25
+ if (options) {
26
+ $.extend(p, options);
27
+ }
28
+
29
+ return this.each(function () {
30
+ var enterEvent = 'mouseenter';
31
+ var leaveEvent = 'mouseleave';
32
+ if(p.inverthover){
33
+ enterEvent = 'mouseleave';
34
+ leaveEvent = 'mouseenter';
35
+ }
36
+
37
+
38
+ var
39
+ loop = p.loop,
40
+ strWrap = $(this).addClass('str_wrap').data({scrollamount:p.scrollamount}),
41
+ fMove = false;
42
+
43
+
44
+
45
+ var strWrapStyle = strWrap.attr('style');
46
+
47
+ if(strWrapStyle){
48
+ var wrapStyleArr = strWrapStyle.split(';');
49
+ var startHeight = false;
50
+ for(var i=0; i < wrapStyleArr.length; i++){
51
+ var str = $.trim(wrapStyleArr[i]);
52
+ var tested = str.search(/^height/g);
53
+ if(tested != -1){
54
+ startHeight = parseFloat(strWrap.css('height'));
55
+ }
56
+ }
57
+ }
58
+
59
+ var code = function () {
60
+
61
+ strWrap.off('mouseleave');
62
+ strWrap.off('mouseenter');
63
+ strWrap.off('mousemove');
64
+ strWrap.off('mousedown');
65
+ strWrap.off('mouseup');
66
+
67
+
68
+ if(!$('.str_move',strWrap).length){
69
+ strWrap.wrapInner($('<div>').addClass('str_move'));
70
+ }
71
+
72
+ var
73
+ strMove = $('.str_move', strWrap).addClass('str_origin'),
74
+ strMoveClone = strMove.clone().removeClass('str_origin').addClass('str_move_clone'),
75
+ time = 0;
76
+
77
+ if (!p.hoverstop) {
78
+ strWrap.addClass('noStop');
79
+ }
80
+
81
+ var circCloneHor = function(){
82
+ strMoveClone.clone().css({
83
+ left:'100%',
84
+ right:'auto',
85
+ width: strMove.width()
86
+ }).appendTo(strMove);
87
+ strMoveClone.css({
88
+ right: '100%',
89
+ left:'auto',
90
+ width: strMove.width()
91
+ }).appendTo(strMove);
92
+ }
93
+
94
+ var circCloneVert = function(){
95
+ strMoveClone.clone().css({
96
+ top: '100%',
97
+ bottom:'auto',
98
+ height: strMove.height()
99
+ }).appendTo(strMove);
100
+ strMoveClone.css({
101
+ bottom: '100%',
102
+ top:'auto',
103
+ height:strMove.height()
104
+ }).appendTo(strMove);
105
+ }
106
+
107
+
108
+
109
+ if (p.direction == 'left') {
110
+ strWrap.height(strMove.outerHeight())
111
+ if (strMove.width() > strWrap.width()) {
112
+ var leftPos = -strMove.width();
113
+
114
+ if (p.circular) {
115
+
116
+ if (!p.xml) {
117
+ circCloneHor()
118
+ leftPos = -(strMove.width() + (strMove.width() - strWrap.width()));
119
+ }
120
+ }
121
+ if (p.xml) {
122
+ strMove.css({
123
+ left:strWrap.width()
124
+ })
125
+ }
126
+ var
127
+ strMoveLeft = strWrap.width(),
128
+ k1 = 0,
129
+ timeFunc1 = function () {
130
+ var
131
+ fullS = Math.abs(leftPos),
132
+ time = (fullS / strWrap.data('scrollamount')) * 1000;
133
+ if (parseFloat(strMove.css('left')) != 0) {
134
+ fullS = (fullS + strWrap.width());
135
+ time = (fullS - (strWrap.width() - parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
136
+ }
137
+ return time;
138
+ },
139
+ moveFuncId1 = false,
140
+ moveFunc1 = function () {
141
+ if (loop != 0) {
142
+ strMove.stop(true).animate({
143
+ left: leftPos
144
+ }, timeFunc1(), 'linear', function () {
145
+ $(this).css({
146
+ left: strWrap.width()
147
+ });
148
+ if (loop == -1) {
149
+ moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
150
+ } else {
151
+ loop--;
152
+ moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
153
+ }
154
+ });
155
+ }
156
+ };
157
+ strWrap.data({
158
+ moveId: moveFuncId1 ,
159
+ moveF : moveFunc1
160
+ })
161
+ if(!p.inverthover){
162
+ moveFunc1();
163
+ }
164
+
165
+ if (p.hoverstop) {
166
+ strWrap.on(enterEvent, function () {
167
+ $(this).addClass('str_active');
168
+ clearTimeout(moveFuncId1);
169
+ strMove.stop(true);
170
+ }).on(leaveEvent, function () {
171
+ $(this).removeClass('str_active');
172
+ $(this).off('mousemove');
173
+ moveFunc1();
174
+ });
175
+
176
+ if (p.drag) {
177
+ strWrap.on('mousedown', function (e) {
178
+ if(p.inverthover){
179
+ strMove.stop(true);
180
+ }
181
+ //drag
182
+ var dragLeft;
183
+ var dir = 1;
184
+ var newX;
185
+ var oldX = e.clientX;
186
+ //drag
187
+
188
+ strMoveLeft = strMove.position().left;
189
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
190
+
191
+
192
+
193
+ $(this).on('mousemove', function (e) {
194
+ fMove = true;
195
+
196
+ //drag
197
+ newX = e.clientX;
198
+ if(newX > oldX){
199
+ dir = 1
200
+ }else{
201
+ dir = -1
202
+ }
203
+ oldX = newX
204
+ dragLeft = k1 + (e.clientX - strWrap.offset().left);
205
+
206
+ if (!p.circular) {
207
+ if(dragLeft < -strMove.width() && dir < 0){
208
+ dragLeft = strWrap.width();
209
+ strMoveLeft = strMove.position().left;
210
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
211
+ }
212
+ if(dragLeft > strWrap.width() && dir > 0){
213
+ dragLeft = -strMove.width();
214
+ strMoveLeft = strMove.position().left;
215
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
216
+ }
217
+ }else{
218
+ if(dragLeft < -strMove.width() && dir < 0){
219
+ dragLeft = 0;
220
+ strMoveLeft = strMove.position().left;
221
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
222
+ }
223
+ if(dragLeft > 0 && dir > 0){
224
+ dragLeft = -strMove.width();
225
+ strMoveLeft = strMove.position().left;
226
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
227
+ }
228
+
229
+ }
230
+
231
+
232
+ strMove.stop(true).css({
233
+ left: dragLeft
234
+ });
235
+ //drag
236
+
237
+
238
+
239
+ }).on('mouseup', function () {
240
+ $(this).off('mousemove');
241
+ if(p.inverthover){
242
+ strMove.trigger('mouseenter')
243
+ }
244
+ setTimeout(function () {
245
+ fMove = false
246
+ }, 50)
247
+
248
+ });
249
+ return false;
250
+ })
251
+ .on('click', function () {
252
+ if (fMove) {
253
+ return false
254
+ }
255
+ });
256
+ } else {
257
+ strWrap.addClass('no_drag');
258
+ };
259
+ }
260
+ } else {
261
+ if (p.runshort) {
262
+ strMove.css({
263
+ left: strWrap.width()
264
+ });
265
+ var
266
+ strMoveLeft = strWrap.width(),
267
+ k1 = 0,
268
+ timeFunc = function () {
269
+ time = (strMove.width() + strMove.position().left) / strWrap.data('scrollamount') * 1000;
270
+ return time;
271
+ };
272
+ var moveFunc = function () {
273
+ var leftPos = -strMove.width();
274
+ strMove.animate({
275
+ left: leftPos
276
+ }, timeFunc(), 'linear', function () {
277
+ $(this).css({
278
+ left: strWrap.width()
279
+ });
280
+ if (loop == -1) {
281
+ setTimeout(moveFunc, p.scrolldelay);
282
+ } else {
283
+ loop--;
284
+ setTimeout(moveFunc, p.scrolldelay);
285
+ }
286
+ });
287
+ };
288
+ strWrap.data({
289
+ moveF : moveFunc
290
+ })
291
+ if(!p.inverthover){
292
+ moveFunc();
293
+ }
294
+ if (p.hoverstop) {
295
+ strWrap.on(enterEvent, function () {
296
+ $(this).addClass('str_active');
297
+ strMove.stop(true);
298
+ }).on(leaveEvent, function () {
299
+ $(this).removeClass('str_active');
300
+ $(this).off('mousemove');
301
+ moveFunc();
302
+ });
303
+
304
+ if (p.drag) {
305
+ strWrap.on('mousedown', function (e) {
306
+ if(p.inverthover){
307
+ strMove.stop(true);
308
+ }
309
+
310
+ //drag
311
+ var dragLeft;
312
+ var dir = 1;
313
+ var newX;
314
+ var oldX = e.clientX;
315
+ //drag
316
+
317
+ strMoveLeft = strMove.position().left;
318
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
319
+ $(this).on('mousemove', function (e) {
320
+ fMove = true;
321
+
322
+
323
+ //drag
324
+ newX = e.clientX;
325
+ if(newX > oldX){
326
+ dir = 1
327
+ }else{
328
+ dir = -1
329
+ }
330
+ oldX = newX
331
+ dragLeft = k1 + (e.clientX - strWrap.offset().left);
332
+
333
+ if(dragLeft < -strMove.width() && dir < 0){
334
+ dragLeft = strWrap.width();
335
+ strMoveLeft = strMove.position().left;
336
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
337
+ }
338
+ if(dragLeft > strWrap.width() && dir > 0){
339
+ dragLeft = -strMove.width();
340
+ strMoveLeft = strMove.position().left;
341
+ k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
342
+ }
343
+
344
+
345
+ strMove.stop(true).css({
346
+ left: dragLeft
347
+ });
348
+
349
+
350
+
351
+ }).on('mouseup', function () {
352
+ if(p.inverthover){
353
+ strMove.trigger('mouseenter')
354
+ }
355
+ $(this).off('mousemove');
356
+ setTimeout(function () {
357
+ fMove = false
358
+ }, 50)
359
+ });
360
+ return false;
361
+ })
362
+ .on('click', function () {
363
+ if (fMove) {
364
+ return false
365
+ }
366
+ });
367
+ } else {
368
+ strWrap.addClass('no_drag');
369
+ };
370
+ }
371
+ } else {
372
+ strWrap.addClass('str_static');
373
+ }
374
+ };
375
+ };
376
+ if (p.direction == 'right') {
377
+ strWrap.height(strMove.outerHeight())
378
+ strWrap.addClass('str_right');
379
+ strMove.css({
380
+ left: -strMove.width(),
381
+ right: 'auto'
382
+ })
383
+
384
+ if (strMove.width() > strWrap.width()) {
385
+ var leftPos = strWrap.width();
386
+ strMove.css({
387
+ left: 0
388
+ })
389
+ if (p.circular) {
390
+ if (!p.xml) {
391
+ circCloneHor()
392
+ //Определяем крайнюю точку
393
+ leftPos = strMove.width();
394
+ }
395
+ }
396
+
397
+ var
398
+ k2 = 0;
399
+ timeFunc = function () {
400
+ var
401
+ fullS = strWrap.width(), //крайняя точка
402
+ time = (fullS / strWrap.data('scrollamount')) * 1000; //время
403
+ if (parseFloat(strMove.css('left')) != 0) {
404
+ fullS = (strMove.width() + strWrap.width());
405
+ time = (fullS - (strMove.width() + parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
406
+ }
407
+ return time;
408
+ };
409
+ var moveFunc = function () {
410
+
411
+ if (loop != 0) {
412
+ strMove.animate({
413
+ left: leftPos
414
+ }, timeFunc(), 'linear', function () {
415
+ $(this).css({
416
+ left: -strMove.width()
417
+ });
418
+ if (loop == -1) {
419
+ setTimeout(moveFunc, p.scrolldelay);
420
+ } else {
421
+ loop--;
422
+ setTimeout(moveFunc, p.scrolldelay);
423
+ };
424
+ });
425
+ };
426
+ };
427
+ strWrap.data({
428
+ moveF : moveFunc
429
+ })
430
+
431
+ if(!p.inverthover){
432
+ moveFunc();
433
+ }
434
+ if (p.hoverstop) {
435
+ strWrap.on(enterEvent, function () {
436
+ $(this).addClass('str_active');
437
+ strMove.stop(true);
438
+ }).on(leaveEvent, function () {
439
+ $(this).removeClass('str_active');
440
+ $(this).off('mousemove');
441
+ moveFunc();
442
+ });
443
+
444
+ if (p.drag) {
445
+
446
+ strWrap.on('mousedown', function (e) {
447
+ if(p.inverthover){
448
+ strMove.stop(true);
449
+ }
450
+
451
+
452
+ //drag
453
+ var dragLeft;
454
+ var dir = 1;
455
+ var newX;
456
+ var oldX = e.clientX;
457
+ //drag
458
+
459
+ strMoveLeft = strMove.position().left;
460
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
461
+ $(this).on('mousemove', function (e) {
462
+
463
+ fMove = true;
464
+
465
+ //drag
466
+ newX = e.clientX;
467
+ if(newX > oldX){
468
+ dir = 1
469
+ }else{
470
+ dir = -1
471
+ }
472
+ oldX = newX
473
+ dragLeft = k2 + (e.clientX - strWrap.offset().left);
474
+
475
+
476
+ if (!p.circular) {
477
+
478
+ if(dragLeft < -strMove.width() && dir < 0){
479
+ dragLeft = strWrap.width();
480
+ strMoveLeft = strMove.position().left;
481
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
482
+ }
483
+ if(dragLeft > strWrap.width() && dir > 0){
484
+ dragLeft = -strMove.width();
485
+ strMoveLeft = strMove.position().left;
486
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
487
+ }
488
+ }else{
489
+ if(dragLeft < -strMove.width() && dir < 0){
490
+ dragLeft = 0;
491
+ strMoveLeft = strMove.position().left;
492
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
493
+ }
494
+ if(dragLeft > 0 && dir > 0){
495
+ dragLeft = -strMove.width();
496
+ strMoveLeft = strMove.position().left;
497
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
498
+ }
499
+
500
+ }
501
+
502
+ strMove.stop(true).css({
503
+ left: dragLeft
504
+ });
505
+
506
+
507
+ }).on('mouseup', function () {
508
+ if(p.inverthover){
509
+ strMove.trigger('mouseenter')
510
+ }
511
+ $(this).off('mousemove');
512
+ setTimeout(function () {
513
+ fMove = false
514
+ }, 50)
515
+ });
516
+ return false;
517
+ })
518
+ .on('click', function () {
519
+ if (fMove) {
520
+ return false
521
+ }
522
+ });
523
+ } else {
524
+ strWrap.addClass('no_drag');
525
+ };
526
+ }
527
+ } else {
528
+
529
+ if (p.runshort) {
530
+
531
+ var k2 = 0;
532
+ var timeFunc = function () {
533
+ time = (strWrap.width() - strMove.position().left) / strWrap.data('scrollamount') * 1000;
534
+ return time;
535
+ };
536
+ var moveFunc = function () {
537
+ var leftPos = strWrap.width();
538
+ strMove.animate({
539
+ left: leftPos
540
+ }, timeFunc(), 'linear', function () {
541
+ $(this).css({
542
+ left: -strMove.width()
543
+ });
544
+ if (loop == -1) {
545
+ setTimeout(moveFunc, p.scrolldelay);
546
+ } else {
547
+ loop--;
548
+ setTimeout(moveFunc, p.scrolldelay);
549
+ };
550
+ });
551
+ };
552
+
553
+ strWrap.data({
554
+ moveF : moveFunc
555
+ })
556
+
557
+ if(!p.inverthover){
558
+ moveFunc();
559
+ }
560
+ if (p.hoverstop) {
561
+ strWrap.on(enterEvent, function () {
562
+ $(this).addClass('str_active');
563
+ strMove.stop(true);
564
+ }).on(leaveEvent, function () {
565
+ $(this).removeClass('str_active');
566
+ $(this).off('mousemove');
567
+ moveFunc();
568
+ });
569
+
570
+ if (p.drag) {
571
+ strWrap.on('mousedown', function (e) {
572
+ if(p.inverthover){
573
+ strMove.stop(true);
574
+ }
575
+
576
+ //drag
577
+ var dragLeft;
578
+ var dir = 1;
579
+ var newX;
580
+ var oldX = e.clientX;
581
+ //drag
582
+
583
+ strMoveLeft = strMove.position().left;
584
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
585
+ $(this).on('mousemove', function (e) {
586
+ fMove = true;
587
+
588
+
589
+
590
+ //drag
591
+ newX = e.clientX;
592
+ if(newX > oldX){
593
+ dir = 1
594
+ }else{
595
+ dir = -1
596
+ }
597
+ oldX = newX
598
+ dragLeft = k2 + (e.clientX - strWrap.offset().left);
599
+
600
+ if(dragLeft < -strMove.width() && dir < 0){
601
+ dragLeft = strWrap.width();
602
+ strMoveLeft = strMove.position().left;
603
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
604
+ }
605
+ if(dragLeft > strWrap.width() && dir > 0){
606
+ dragLeft = -strMove.width();
607
+ strMoveLeft = strMove.position().left;
608
+ k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
609
+ }
610
+
611
+ strMove.stop(true).css({
612
+ left:dragLeft
613
+ });
614
+
615
+ }).on('mouseup', function () {
616
+ if(p.inverthover){
617
+ strMove.trigger('mouseenter')
618
+ }
619
+ $(this).off('mousemove');
620
+ setTimeout(function () {
621
+ fMove = false
622
+ }, 50)
623
+ });
624
+ return false;
625
+ })
626
+ .on('click', function () {
627
+ if (fMove) {
628
+ return false
629
+ }
630
+ });
631
+ } else {
632
+ strWrap.addClass('no_drag');
633
+ };
634
+ }
635
+ } else {
636
+ strWrap.addClass('str_static');
637
+ }
638
+ };
639
+ };
640
+ if (p.direction == 'up') {
641
+ strWrap.addClass('str_vertical');
642
+
643
+ if (strMove.height() > strWrap.height()) {
644
+ var topPos = -strMove.height();
645
+ if (p.circular) {
646
+ if (!p.xml) {
647
+ circCloneVert();
648
+ topPos = -(strMove.height() + (strMove.height() - strWrap.height()));
649
+ }
650
+ }
651
+ if (p.xml) {
652
+ strMove.css({
653
+ top:strWrap.height()
654
+ })
655
+ }
656
+ var
657
+ k2 = 0;
658
+ timeFunc = function () {
659
+ var
660
+ fullS = Math.abs(topPos),
661
+ time = (fullS / strWrap.data('scrollamount')) * 1000;
662
+ if (parseFloat(strMove.css('top')) != 0) {
663
+ fullS = (fullS + strWrap.height());
664
+ time = (fullS - (strWrap.height() - parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000;
665
+ }
666
+
667
+ return time;
668
+ };
669
+ var moveFunc = function () {
670
+ if (loop != 0) {
671
+ strMove.animate({
672
+ top: topPos
673
+ }, timeFunc(), 'linear', function () {
674
+ $(this).css({
675
+ top: strWrap.height()
676
+ });
677
+ if (loop == -1) {
678
+ setTimeout(moveFunc, p.scrolldelay);
679
+ } else {
680
+ loop--;
681
+ setTimeout(moveFunc, p.scrolldelay);
682
+ };
683
+ });
684
+ };
685
+ };
686
+
687
+ strWrap.data({
688
+ moveF : moveFunc
689
+ })
690
+
691
+ if(!p.inverthover){
692
+ moveFunc();
693
+ }
694
+ if (p.hoverstop) {
695
+ strWrap.on(enterEvent, function () {
696
+ $(this).addClass('str_active');
697
+ strMove.stop(true);
698
+ }).on(leaveEvent, function () {
699
+ $(this).removeClass('str_active');
700
+ $(this).off('mousemove');
701
+ moveFunc();
702
+ });
703
+
704
+ if (p.drag) {
705
+ strWrap.on('mousedown', function (e) {
706
+ if(p.inverthover){
707
+ strMove.stop(true);
708
+ }
709
+
710
+ //drag
711
+ var dragTop;
712
+ var dir = 1;
713
+ var newY;
714
+ var oldY = e.clientY;
715
+ //drag
716
+
717
+
718
+ strMoveTop = strMove.position().top;
719
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
720
+ $(this).on('mousemove', function (e) {
721
+
722
+ fMove = true;
723
+
724
+ //drag
725
+ newY = e.clientY;
726
+ if(newY > oldY){
727
+ dir = 1
728
+ }else{
729
+ if(newY < oldY){
730
+ dir = -1
731
+ }
732
+ }
733
+ oldY = newY
734
+ dragTop = k2 + e.clientY - strWrap.offset().top;
735
+
736
+
737
+ if (!p.circular){
738
+ if(dragTop < -strMove.height() && dir < 0){
739
+ dragTop = strWrap.height();
740
+ strMoveTop = strMove.position().top;
741
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
742
+ }
743
+ if(dragTop > strWrap.height() && dir > 0){
744
+ dragTop = -strMove.height();
745
+ strMoveTop = strMove.position().top;
746
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
747
+ }
748
+ }else{
749
+ if(dragTop < -strMove.height() && dir < 0){
750
+ dragTop = 0;
751
+ strMoveTop = strMove.position().top;
752
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
753
+ }
754
+ if(dragTop > 0 && dir > 0){
755
+ dragTop = -strMove.height();
756
+ strMoveTop = strMove.position().top;
757
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
758
+ }
759
+ }
760
+
761
+
762
+ strMove.stop(true).css({
763
+ top: dragTop
764
+ });
765
+ //drag
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+ }).on('mouseup', function () {
779
+ if(p.inverthover){
780
+ strMove.trigger('mouseenter')
781
+ }
782
+ $(this).off('mousemove');
783
+ setTimeout(function () {
784
+ fMove = false
785
+ }, 50)
786
+ });
787
+ return false;
788
+ })
789
+ .on('click', function () {
790
+ if (fMove) {
791
+ return false
792
+ }
793
+ });
794
+ } else {
795
+ strWrap.addClass('no_drag');
796
+ };
797
+ }
798
+ } else {
799
+ if (p.runshort) {
800
+ strMove.css({
801
+ top: strWrap.height()
802
+ });
803
+ var k2 = 0;
804
+ var timeFunc = function () {
805
+
806
+ time = (strMove.height() + strMove.position().top) / strWrap.data('scrollamount') * 1000;
807
+
808
+ return time;
809
+ };
810
+ var moveFunc = function () {
811
+ var topPos = -strMove.height();
812
+ strMove.animate({
813
+ top: topPos
814
+ }, timeFunc(), 'linear', function () {
815
+ $(this).css({
816
+ top: strWrap.height()
817
+ });
818
+ if (loop == -1) {
819
+ setTimeout(moveFunc, p.scrolldelay);
820
+ } else {
821
+ loop--;
822
+ setTimeout(moveFunc, p.scrolldelay);
823
+ };
824
+ });
825
+ };
826
+ strWrap.data({
827
+ moveF : moveFunc
828
+ })
829
+ if(!p.inverthover){
830
+ moveFunc();
831
+ }
832
+ if (p.hoverstop) {
833
+ strWrap.on(enterEvent, function () {
834
+ $(this).addClass('str_active');
835
+ strMove.stop(true);
836
+ }).on(leaveEvent, function () {
837
+ $(this).removeClass('str_active');
838
+ $(this).off('mousemove');
839
+ moveFunc();
840
+ });
841
+
842
+ if (p.drag) {
843
+ strWrap.on('mousedown', function (e) {
844
+ if(p.inverthover){
845
+ strMove.stop(true);
846
+ }
847
+
848
+ //drag
849
+ var dragTop;
850
+ var dir = 1;
851
+ var newY;
852
+ var oldY = e.clientY;
853
+ //drag
854
+
855
+ strMoveTop = strMove.position().top;
856
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
857
+ $(this).on('mousemove', function (e) {
858
+
859
+
860
+ fMove = true;
861
+
862
+ //drag
863
+ newY = e.clientY;
864
+ if(newY > oldY){
865
+ dir = 1
866
+ }else{
867
+ if(newY < oldY){
868
+ dir = -1
869
+ }
870
+ }
871
+ oldY = newY
872
+ dragTop = k2 + e.clientY - strWrap.offset().top;
873
+
874
+ if(dragTop < -strMove.height() && dir < 0){
875
+ dragTop = strWrap.height();
876
+ strMoveTop = strMove.position().top;
877
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
878
+ }
879
+ if(dragTop > strWrap.height() && dir > 0){
880
+ dragTop = -strMove.height();
881
+ strMoveTop = strMove.position().top;
882
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
883
+ }
884
+ //*drag
885
+
886
+ strMove.stop(true).css({
887
+ top: dragTop
888
+ });
889
+
890
+
891
+ }).on('mouseup', function () {
892
+ if(p.inverthover){
893
+ strMove.trigger('mouseenter')
894
+ }
895
+ $(this).off('mousemove');
896
+ setTimeout(function () {
897
+ fMove = false
898
+ }, 50)
899
+ });
900
+ return false;
901
+ })
902
+ .on('click', function () {
903
+ if (fMove) {
904
+ return false
905
+ }
906
+ });
907
+ } else {
908
+ strWrap.addClass('no_drag');
909
+ };
910
+ }
911
+ } else {
912
+ strWrap.addClass('str_static');
913
+ }
914
+ };
915
+ };
916
+ if (p.direction == 'down') {
917
+
918
+ strWrap.addClass('str_vertical').addClass('str_down');
919
+ strMove.css({
920
+ top: -strMove.height(),
921
+ bottom: 'auto'
922
+ })
923
+ if (strMove.height() > strWrap.height()) {
924
+ var topPos = strWrap.height();
925
+ if (p.circular) {
926
+ if (!p.xml) {
927
+ circCloneVert();
928
+ topPos = strMove.height();
929
+ }
930
+ }
931
+ if (p.xml) {
932
+ strMove.css({
933
+ top:-strMove.height()
934
+ })
935
+ }
936
+ var
937
+ k2 = 0;
938
+ timeFunc = function () {
939
+ var
940
+ fullS = strWrap.height(), //крайняя точка
941
+ time = (fullS / strWrap.data('scrollamount')) * 1000; //время
942
+
943
+ if (parseFloat(strMove.css('top')) != 0) {
944
+ fullS = (strMove.height() + strWrap.height());
945
+ time = (fullS - (strMove.height() + parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000;
946
+ }
947
+ return time;
948
+ };
949
+ var moveFunc = function () {
950
+
951
+ if (loop != 0) {
952
+ strMove.animate({
953
+ top: topPos
954
+ }, timeFunc(), 'linear', function () {
955
+ $(this).css({
956
+ top: -strMove.height()
957
+ });
958
+ if (loop == -1) {
959
+
960
+ setTimeout(moveFunc, p.scrolldelay);
961
+ } else {
962
+ loop--;
963
+ setTimeout(moveFunc, p.scrolldelay);
964
+ };
965
+ });
966
+ };
967
+ };
968
+ strWrap.data({
969
+ moveF : moveFunc
970
+ })
971
+ if(!p.inverthover){
972
+ moveFunc();
973
+ }
974
+ if (p.hoverstop) {
975
+ strWrap.on(enterEvent, function () {
976
+ $(this).addClass('str_active');
977
+ strMove.stop(true);
978
+ }).on(leaveEvent, function () {
979
+ $(this).removeClass('str_active');
980
+ $(this).off('mousemove');
981
+ moveFunc();
982
+ });
983
+
984
+ if (p.drag) {
985
+ strWrap.on('mousedown', function (e) {
986
+ if(p.inverthover){
987
+ strMove.stop(true);
988
+ }
989
+
990
+ //drag
991
+ var dragTop;
992
+ var dir = 1;
993
+ var newY;
994
+ var oldY = e.clientY;
995
+ //drag
996
+
997
+
998
+ strMoveTop = strMove.position().top;
999
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1000
+ $(this).on('mousemove', function (e) {
1001
+
1002
+ fMove = true;
1003
+
1004
+ //drag
1005
+ newY = e.clientY;
1006
+ if(newY > oldY){
1007
+ dir = 1
1008
+ }else{
1009
+ if(newY < oldY){
1010
+ dir = -1
1011
+ }
1012
+ }
1013
+ oldY = newY
1014
+ dragTop = k2 + e.clientY - strWrap.offset().top;
1015
+
1016
+
1017
+ if (!p.circular){
1018
+ if(dragTop < -strMove.height() && dir < 0){
1019
+ dragTop = strWrap.height();
1020
+ strMoveTop = strMove.position().top;
1021
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1022
+ }
1023
+ if(dragTop > strWrap.height() && dir > 0){
1024
+ dragTop = -strMove.height();
1025
+ strMoveTop = strMove.position().top;
1026
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1027
+ }
1028
+ }else{
1029
+ if(dragTop < -strMove.height() && dir < 0){
1030
+ dragTop = 0;
1031
+ strMoveTop = strMove.position().top;
1032
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1033
+ }
1034
+ if(dragTop > 0 && dir > 0){
1035
+ dragTop = -strMove.height();
1036
+ strMoveTop = strMove.position().top;
1037
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1038
+ }
1039
+ }
1040
+
1041
+
1042
+ strMove.stop(true).css({
1043
+ top: dragTop
1044
+ });
1045
+ //drag
1046
+
1047
+
1048
+
1049
+ }).on('mouseup', function () {
1050
+ if(p.inverthover){
1051
+ strMove.trigger('mouseenter')
1052
+ }
1053
+ $(this).off('mousemove');
1054
+ setTimeout(function () {
1055
+ fMove = false
1056
+ }, 50)
1057
+ });
1058
+ return false;
1059
+ })
1060
+ .on('click', function () {
1061
+ if (fMove) {
1062
+ return false
1063
+ }
1064
+ });
1065
+ } else {
1066
+ strWrap.addClass('no_drag');
1067
+ };
1068
+ }
1069
+ } else {
1070
+ if (p.runshort) {
1071
+ var k2 = 0;
1072
+ var timeFunc = function () {
1073
+ time = (strWrap.height() - strMove.position().top) / strWrap.data('scrollamount') * 1000;
1074
+ return time;
1075
+ };
1076
+ var moveFunc = function () {
1077
+ var topPos = strWrap.height();
1078
+ strMove.animate({
1079
+ top: topPos
1080
+ }, timeFunc(), 'linear', function () {
1081
+ $(this).css({
1082
+ top: -strMove.height()
1083
+ });
1084
+ if (loop == -1) {
1085
+ setTimeout(moveFunc, p.scrolldelay);
1086
+ } else {
1087
+ loop--;
1088
+ setTimeout(moveFunc, p.scrolldelay);
1089
+ };
1090
+ });
1091
+ };
1092
+ strWrap.data({
1093
+ moveF : moveFunc
1094
+ })
1095
+ if(!p.inverthover){
1096
+ moveFunc();
1097
+ }
1098
+ if (p.hoverstop) {
1099
+ strWrap.on(enterEvent, function () {
1100
+ $(this).addClass('str_active');
1101
+ strMove.stop(true);
1102
+ }).on(leaveEvent, function () {
1103
+ $(this).removeClass('str_active');
1104
+ $(this).off('mousemove');
1105
+ moveFunc();
1106
+ });
1107
+
1108
+ if (p.drag) {
1109
+ strWrap.on('mousedown', function (e) {
1110
+ if(p.inverthover){
1111
+ strMove.stop(true);
1112
+ }
1113
+
1114
+ //drag
1115
+ var dragTop;
1116
+ var dir = 1;
1117
+ var newY;
1118
+ var oldY = e.clientY;
1119
+ //drag
1120
+
1121
+ strMoveTop = strMove.position().top;
1122
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1123
+ $(this).on('mousemove', function (e) {
1124
+ fMove = true;
1125
+
1126
+ //drag
1127
+ newY = e.clientY;
1128
+ if(newY > oldY){
1129
+ dir = 1
1130
+ }else{
1131
+ if(newY < oldY){
1132
+ dir = -1
1133
+ }
1134
+ }
1135
+ oldY = newY
1136
+ dragTop = k2 + e.clientY - strWrap.offset().top;
1137
+
1138
+
1139
+ if(dragTop < -strMove.height() && dir < 0){
1140
+ dragTop = strWrap.height();
1141
+ strMoveTop = strMove.position().top;
1142
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1143
+ }
1144
+ if(dragTop > strWrap.height() && dir > 0){
1145
+ dragTop = -strMove.height();
1146
+ strMoveTop = strMove.position().top;
1147
+ k2 = strMoveTop - (e.clientY - strWrap.offset().top);
1148
+ }
1149
+ //*drag
1150
+
1151
+ strMove.stop(true).css({
1152
+ top: dragTop
1153
+ });
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+
1162
+ }).on('mouseup', function () {
1163
+ if(p.inverthover){
1164
+ strMove.trigger('mouseenter')
1165
+ }
1166
+ $(this).off('mousemove');
1167
+ setTimeout(function () {
1168
+ fMove = false
1169
+ }, 50)
1170
+ })
1171
+ return false;
1172
+ })
1173
+ .on('click', function () {
1174
+ if (fMove) {
1175
+ return false
1176
+ }
1177
+ });
1178
+ } else {
1179
+ strWrap.addClass('no_drag');
1180
+ };
1181
+ }
1182
+ } else {
1183
+ strWrap.addClass('str_static');
1184
+ }
1185
+ };
1186
+ };
1187
+
1188
+
1189
+
1190
+
1191
+ }
1192
+ if (p.xml) {
1193
+ $.ajax({
1194
+ url: p.xml,
1195
+ dataType: "xml",
1196
+ success: function (xml) {
1197
+ var xmlTextEl = $(xml).find('text');
1198
+ var xmlTextLength = xmlTextEl.length;
1199
+ for(var i = 0; i < xmlTextLength; i++){
1200
+ var xmlElActive = xmlTextEl.eq(i);
1201
+ var xmlElContent = xmlElActive.text();
1202
+ var xmlItemEl = $('<span>').text(xmlElContent).appendTo(strWrap);
1203
+
1204
+ if(p.direction == 'left' || p.direction == 'right'){
1205
+ xmlItemEl.css({display:'inline-block',textAlign:'right'});
1206
+ if(i > 0){
1207
+ xmlItemEl.css({width:strWrap.width()+xmlItemEl.width()});
1208
+ }
1209
+ }
1210
+ if(p.direction == 'down' || p.direction == 'up'){
1211
+ xmlItemEl.css({display:'block',textAlign:'left'});
1212
+ if(i > 0){
1213
+ xmlItemEl.css({paddingTop:strWrap.height()});
1214
+ }
1215
+ }
1216
+
1217
+ }
1218
+ code();
1219
+ }
1220
+ });
1221
+ } else {
1222
+ code();
1223
+ }
1224
+ strWrap.data({
1225
+ ini:code,
1226
+ startheight: startHeight
1227
+ })
1228
+
1229
+
1230
+
1231
+
1232
+ });
1233
+ },
1234
+ update: function () {
1235
+ var el = $(this);
1236
+ var str_origin = $('.str_origin',el);
1237
+ var str_move_clone = $('.str_move_clone',el);
1238
+ str_origin.stop(true);
1239
+ str_move_clone.remove();
1240
+ el.data('ini')();
1241
+ },
1242
+ destroy: function () {
1243
+
1244
+ var el = $(this);
1245
+ var elMove = $('.str_move',el);
1246
+ var startHeight = el.data('startheight');
1247
+
1248
+ $('.str_move_clone',el).remove();
1249
+ el.off('mouseenter');
1250
+ el.off('mousedown');
1251
+ el.off('mouseup');
1252
+ el.off('mouseleave');
1253
+ el.off('mousemove');
1254
+ el.removeClass('noStop').removeClass('str_vertical').removeClass('str_active').removeClass('no_drag').removeClass('str_static').removeClass('str_right').removeClass('str_down');
1255
+
1256
+ var elStyle = el.attr('style');
1257
+ if(elStyle){
1258
+ var styleArr = elStyle.split(';');
1259
+ for(var i=0; i < styleArr.length; i++){
1260
+ var str = $.trim(styleArr[i]);
1261
+ var tested = str.search(/^height/g);
1262
+ if(tested != -1){
1263
+ styleArr[i] = '';
1264
+ }
1265
+ }
1266
+ var newArr = styleArr.join(';');
1267
+ var newStyle = newArr.replace(/;+/g,';')
1268
+
1269
+ if(newStyle == ';'){
1270
+ el.removeAttr('style');
1271
+ }else{
1272
+ el.attr('style',newStyle);
1273
+ }
1274
+
1275
+ if(startHeight){
1276
+ el.css({height:startHeight})
1277
+ }
1278
+ }
1279
+ elMove.stop(true);
1280
+
1281
+ if(elMove.length){
1282
+ var context = elMove.html();
1283
+ elMove.remove();
1284
+ el.html(context);
1285
+ }
1286
+
1287
+ },
1288
+ pause: function(){
1289
+ var el = $(this);
1290
+ var elMove = $('.str_move',el);
1291
+ elMove.stop(true);
1292
+ },
1293
+ play: function(){
1294
+ var el = $(this);
1295
+ $(this).off('mousemove');
1296
+ el.data('moveF')();
1297
+ }
1298
+
1299
+ };
1300
+ $.fn.liMarquee = function (method) {
1301
+ if (methods[method]) {
1302
+ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
1303
+ } else if (typeof method === 'object' || !method) {
1304
+ return methods.init.apply(this, arguments);
1305
+ } else {
1306
+ $.error('Метод ' + method + ' в jQuery.liMarquee не существует');
1307
+ }
1308
+ };
1309
+ })(jQuery);