1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309 |
- /*
- * jQuery liMarquee v 4.6
- *
- * Copyright 2013, Linnik Yura | LI MASS CODE | http://masscode.ru
- * http://masscode.ru/index.php/k2/item/44-limarquee
- * Free to use
- *
- * Last Update 20.11.2014
- */
- (function ($) {
- var methods = {
- init: function (options) {
- var p = {
- direction: 'left', //Указывает направление движения содержимого контейнера (left | right | up | down)
- loop: -1, //Задает, сколько раз будет прокручиваться содержимое. "-1" для бесконечного воспроизведения движения
- scrolldelay: 0, //Величина задержки в миллисекундах между движениями
- scrollamount: 50, //Скорость движения контента (px/sec)
- circular: true, //Если "true" - строка непрерывная
- drag: true, //Если "true" - включено перетаскивание строки
- runshort: true, //Если "true" - короткая строка тоже "бегает", "false" - стоит на месте
- hoverstop: true, //true - строка останавливается при наведении курсора мыши, false - строка не останавливается
- inverthover: false, //false - стандартное поведение. Если "true" - строка начинает движение только при наведении курсора
- xml: false //Путь к xml файлу с нужным текстом
- };
- if (options) {
- $.extend(p, options);
- }
- return this.each(function () {
- var enterEvent = 'mouseenter';
- var leaveEvent = 'mouseleave';
- if(p.inverthover){
- enterEvent = 'mouseleave';
- leaveEvent = 'mouseenter';
- }
-
-
- var
- loop = p.loop,
- strWrap = $(this).addClass('str_wrap').data({scrollamount:p.scrollamount}),
- fMove = false;
-
-
-
- var strWrapStyle = strWrap.attr('style');
-
- if(strWrapStyle){
- var wrapStyleArr = strWrapStyle.split(';');
- var startHeight = false;
- for(var i=0; i < wrapStyleArr.length; i++){
- var str = $.trim(wrapStyleArr[i]);
- var tested = str.search(/^height/g);
- if(tested != -1){
- startHeight = parseFloat(strWrap.css('height'));
- }
- }
- }
- var code = function () {
-
- strWrap.off('mouseleave');
- strWrap.off('mouseenter');
- strWrap.off('mousemove');
- strWrap.off('mousedown');
- strWrap.off('mouseup');
-
- if(!$('.str_move',strWrap).length){
- strWrap.wrapInner($('<div>').addClass('str_move'));
- }
-
- var
- strMove = $('.str_move', strWrap).addClass('str_origin'),
- strMoveClone = strMove.clone().removeClass('str_origin').addClass('str_move_clone'),
- time = 0;
- if (!p.hoverstop) {
- strWrap.addClass('noStop');
- }
- var circCloneHor = function(){
- strMoveClone.clone().css({
- left:'100%',
- right:'auto',
- width: strMove.width()
- }).appendTo(strMove);
- strMoveClone.css({
- right: '100%',
- left:'auto',
- width: strMove.width()
- }).appendTo(strMove);
- }
-
- var circCloneVert = function(){
- strMoveClone.clone().css({
- top: '100%',
- bottom:'auto',
- height: strMove.height()
- }).appendTo(strMove);
- strMoveClone.css({
- bottom: '100%',
- top:'auto',
- height:strMove.height()
- }).appendTo(strMove);
- }
-
-
-
- if (p.direction == 'left') {
- strWrap.height(strMove.outerHeight())
- if (strMove.width() > strWrap.width()) {
- var leftPos = -strMove.width();
-
- if (p.circular) {
-
- if (!p.xml) {
- circCloneHor()
- leftPos = -(strMove.width() + (strMove.width() - strWrap.width()));
- }
- }
- if (p.xml) {
- strMove.css({
- left:strWrap.width()
- })
- }
- var
- strMoveLeft = strWrap.width(),
- k1 = 0,
- timeFunc1 = function () {
- var
- fullS = Math.abs(leftPos),
- time = (fullS / strWrap.data('scrollamount')) * 1000;
- if (parseFloat(strMove.css('left')) != 0) {
- fullS = (fullS + strWrap.width());
- time = (fullS - (strWrap.width() - parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
- }
- return time;
- },
- moveFuncId1 = false,
- moveFunc1 = function () {
- if (loop != 0) {
- strMove.stop(true).animate({
- left: leftPos
- }, timeFunc1(), 'linear', function () {
- $(this).css({
- left: strWrap.width()
- });
- if (loop == -1) {
- moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
- } else {
- loop--;
- moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
- }
- });
- }
- };
- strWrap.data({
- moveId: moveFuncId1 ,
- moveF : moveFunc1
- })
- if(!p.inverthover){
- moveFunc1();
- }
-
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- clearTimeout(moveFuncId1);
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc1();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
- //drag
- var dragLeft;
- var dir = 1;
- var newX;
- var oldX = e.clientX;
- //drag
-
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
-
-
-
- $(this).on('mousemove', function (e) {
- fMove = true;
-
- //drag
- newX = e.clientX;
- if(newX > oldX){
- dir = 1
- }else{
- dir = -1
- }
- oldX = newX
- dragLeft = k1 + (e.clientX - strWrap.offset().left);
-
- if (!p.circular) {
- if(dragLeft < -strMove.width() && dir < 0){
- dragLeft = strWrap.width();
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- if(dragLeft > strWrap.width() && dir > 0){
- dragLeft = -strMove.width();
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- }else{
- if(dragLeft < -strMove.width() && dir < 0){
- dragLeft = 0;
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- if(dragLeft > 0 && dir > 0){
- dragLeft = -strMove.width();
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
-
- }
-
-
- strMove.stop(true).css({
- left: dragLeft
- });
- //drag
-
-
-
- }).on('mouseup', function () {
- $(this).off('mousemove');
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- setTimeout(function () {
- fMove = false
- }, 50)
-
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- if (p.runshort) {
- strMove.css({
- left: strWrap.width()
- });
- var
- strMoveLeft = strWrap.width(),
- k1 = 0,
- timeFunc = function () {
- time = (strMove.width() + strMove.position().left) / strWrap.data('scrollamount') * 1000;
- return time;
- };
- var moveFunc = function () {
- var leftPos = -strMove.width();
- strMove.animate({
- left: leftPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- left: strWrap.width()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- }
- });
- };
- strWrap.data({
- moveF : moveFunc
- })
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
- //drag
- var dragLeft;
- var dir = 1;
- var newX;
- var oldX = e.clientX;
- //drag
-
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- $(this).on('mousemove', function (e) {
- fMove = true;
-
-
- //drag
- newX = e.clientX;
- if(newX > oldX){
- dir = 1
- }else{
- dir = -1
- }
- oldX = newX
- dragLeft = k1 + (e.clientX - strWrap.offset().left);
-
- if(dragLeft < -strMove.width() && dir < 0){
- dragLeft = strWrap.width();
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- if(dragLeft > strWrap.width() && dir > 0){
- dragLeft = -strMove.width();
- strMoveLeft = strMove.position().left;
- k1 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
-
-
- strMove.stop(true).css({
- left: dragLeft
- });
-
-
-
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- strWrap.addClass('str_static');
- }
- };
- };
- if (p.direction == 'right') {
- strWrap.height(strMove.outerHeight())
- strWrap.addClass('str_right');
- strMove.css({
- left: -strMove.width(),
- right: 'auto'
- })
-
- if (strMove.width() > strWrap.width()) {
- var leftPos = strWrap.width();
- strMove.css({
- left: 0
- })
- if (p.circular) {
- if (!p.xml) {
- circCloneHor()
- //Определяем крайнюю точку
- leftPos = strMove.width();
- }
- }
-
- var
- k2 = 0;
- timeFunc = function () {
- var
- fullS = strWrap.width(), //крайняя точка
- time = (fullS / strWrap.data('scrollamount')) * 1000; //время
- if (parseFloat(strMove.css('left')) != 0) {
- fullS = (strMove.width() + strWrap.width());
- time = (fullS - (strMove.width() + parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
- }
- return time;
- };
- var moveFunc = function () {
- if (loop != 0) {
- strMove.animate({
- left: leftPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- left: -strMove.width()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- };
- });
- };
- };
- strWrap.data({
- moveF : moveFunc
- })
-
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
-
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
-
- //drag
- var dragLeft;
- var dir = 1;
- var newX;
- var oldX = e.clientX;
- //drag
-
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- $(this).on('mousemove', function (e) {
-
- fMove = true;
-
- //drag
- newX = e.clientX;
- if(newX > oldX){
- dir = 1
- }else{
- dir = -1
- }
- oldX = newX
- dragLeft = k2 + (e.clientX - strWrap.offset().left);
- if (!p.circular) {
- if(dragLeft < -strMove.width() && dir < 0){
- dragLeft = strWrap.width();
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- if(dragLeft > strWrap.width() && dir > 0){
- dragLeft = -strMove.width();
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- }else{
- if(dragLeft < -strMove.width() && dir < 0){
- dragLeft = 0;
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- if(dragLeft > 0 && dir > 0){
- dragLeft = -strMove.width();
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
-
- }
-
- strMove.stop(true).css({
- left: dragLeft
- });
-
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
-
- if (p.runshort) {
-
- var k2 = 0;
- var timeFunc = function () {
- time = (strWrap.width() - strMove.position().left) / strWrap.data('scrollamount') * 1000;
- return time;
- };
- var moveFunc = function () {
- var leftPos = strWrap.width();
- strMove.animate({
- left: leftPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- left: -strMove.width()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- };
- });
- };
- strWrap.data({
- moveF : moveFunc
- })
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
- //drag
- var dragLeft;
- var dir = 1;
- var newX;
- var oldX = e.clientX;
- //drag
-
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- $(this).on('mousemove', function (e) {
- fMove = true;
-
-
-
- //drag
- newX = e.clientX;
- if(newX > oldX){
- dir = 1
- }else{
- dir = -1
- }
- oldX = newX
- dragLeft = k2 + (e.clientX - strWrap.offset().left);
-
- if(dragLeft < -strMove.width() && dir < 0){
- dragLeft = strWrap.width();
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- if(dragLeft > strWrap.width() && dir > 0){
- dragLeft = -strMove.width();
- strMoveLeft = strMove.position().left;
- k2 = strMoveLeft - (e.clientX - strWrap.offset().left);
- }
- strMove.stop(true).css({
- left:dragLeft
- });
-
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- strWrap.addClass('str_static');
- }
- };
- };
- if (p.direction == 'up') {
- strWrap.addClass('str_vertical');
-
- if (strMove.height() > strWrap.height()) {
- var topPos = -strMove.height();
- if (p.circular) {
- if (!p.xml) {
- circCloneVert();
- topPos = -(strMove.height() + (strMove.height() - strWrap.height()));
- }
- }
- if (p.xml) {
- strMove.css({
- top:strWrap.height()
- })
- }
- var
- k2 = 0;
- timeFunc = function () {
- var
- fullS = Math.abs(topPos),
- time = (fullS / strWrap.data('scrollamount')) * 1000;
- if (parseFloat(strMove.css('top')) != 0) {
- fullS = (fullS + strWrap.height());
- time = (fullS - (strWrap.height() - parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000;
- }
-
- return time;
- };
- var moveFunc = function () {
- if (loop != 0) {
- strMove.animate({
- top: topPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- top: strWrap.height()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- };
- });
- };
- };
-
- strWrap.data({
- moveF : moveFunc
- })
-
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
- //drag
- var dragTop;
- var dir = 1;
- var newY;
- var oldY = e.clientY;
- //drag
-
-
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- $(this).on('mousemove', function (e) {
-
- fMove = true;
- //drag
- newY = e.clientY;
- if(newY > oldY){
- dir = 1
- }else{
- if(newY < oldY){
- dir = -1
- }
- }
- oldY = newY
- dragTop = k2 + e.clientY - strWrap.offset().top;
- if (!p.circular){
- if(dragTop < -strMove.height() && dir < 0){
- dragTop = strWrap.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- if(dragTop > strWrap.height() && dir > 0){
- dragTop = -strMove.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- }else{
- if(dragTop < -strMove.height() && dir < 0){
- dragTop = 0;
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- if(dragTop > 0 && dir > 0){
- dragTop = -strMove.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- }
- strMove.stop(true).css({
- top: dragTop
- });
- //drag
-
-
-
-
-
-
-
-
-
-
-
-
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- if (p.runshort) {
- strMove.css({
- top: strWrap.height()
- });
- var k2 = 0;
- var timeFunc = function () {
-
- time = (strMove.height() + strMove.position().top) / strWrap.data('scrollamount') * 1000;
-
- return time;
- };
- var moveFunc = function () {
- var topPos = -strMove.height();
- strMove.animate({
- top: topPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- top: strWrap.height()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- };
- });
- };
- strWrap.data({
- moveF : moveFunc
- })
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
- //drag
- var dragTop;
- var dir = 1;
- var newY;
- var oldY = e.clientY;
- //drag
-
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- $(this).on('mousemove', function (e) {
-
-
- fMove = true;
- //drag
- newY = e.clientY;
- if(newY > oldY){
- dir = 1
- }else{
- if(newY < oldY){
- dir = -1
- }
- }
- oldY = newY
- dragTop = k2 + e.clientY - strWrap.offset().top;
-
- if(dragTop < -strMove.height() && dir < 0){
- dragTop = strWrap.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- if(dragTop > strWrap.height() && dir > 0){
- dragTop = -strMove.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- //*drag
-
- strMove.stop(true).css({
- top: dragTop
- });
-
-
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- strWrap.addClass('str_static');
- }
- };
- };
- if (p.direction == 'down') {
- strWrap.addClass('str_vertical').addClass('str_down');
- strMove.css({
- top: -strMove.height(),
- bottom: 'auto'
- })
- if (strMove.height() > strWrap.height()) {
- var topPos = strWrap.height();
- if (p.circular) {
- if (!p.xml) {
- circCloneVert();
- topPos = strMove.height();
- }
- }
- if (p.xml) {
- strMove.css({
- top:-strMove.height()
- })
- }
- var
- k2 = 0;
- timeFunc = function () {
- var
- fullS = strWrap.height(), //крайняя точка
- time = (fullS / strWrap.data('scrollamount')) * 1000; //время
- if (parseFloat(strMove.css('top')) != 0) {
- fullS = (strMove.height() + strWrap.height());
- time = (fullS - (strMove.height() + parseFloat(strMove.css('top')))) / strWrap.data('scrollamount') * 1000;
- }
- return time;
- };
- var moveFunc = function () {
- if (loop != 0) {
- strMove.animate({
- top: topPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- top: -strMove.height()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- };
- });
- };
- };
- strWrap.data({
- moveF : moveFunc
- })
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
- //drag
- var dragTop;
- var dir = 1;
- var newY;
- var oldY = e.clientY;
- //drag
-
-
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- $(this).on('mousemove', function (e) {
-
- fMove = true;
-
- //drag
- newY = e.clientY;
- if(newY > oldY){
- dir = 1
- }else{
- if(newY < oldY){
- dir = -1
- }
- }
- oldY = newY
- dragTop = k2 + e.clientY - strWrap.offset().top;
- if (!p.circular){
- if(dragTop < -strMove.height() && dir < 0){
- dragTop = strWrap.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- if(dragTop > strWrap.height() && dir > 0){
- dragTop = -strMove.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- }else{
- if(dragTop < -strMove.height() && dir < 0){
- dragTop = 0;
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- if(dragTop > 0 && dir > 0){
- dragTop = -strMove.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- }
- strMove.stop(true).css({
- top: dragTop
- });
- //drag
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- });
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- if (p.runshort) {
- var k2 = 0;
- var timeFunc = function () {
- time = (strWrap.height() - strMove.position().top) / strWrap.data('scrollamount') * 1000;
- return time;
- };
- var moveFunc = function () {
- var topPos = strWrap.height();
- strMove.animate({
- top: topPos
- }, timeFunc(), 'linear', function () {
- $(this).css({
- top: -strMove.height()
- });
- if (loop == -1) {
- setTimeout(moveFunc, p.scrolldelay);
- } else {
- loop--;
- setTimeout(moveFunc, p.scrolldelay);
- };
- });
- };
- strWrap.data({
- moveF : moveFunc
- })
- if(!p.inverthover){
- moveFunc();
- }
- if (p.hoverstop) {
- strWrap.on(enterEvent, function () {
- $(this).addClass('str_active');
- strMove.stop(true);
- }).on(leaveEvent, function () {
- $(this).removeClass('str_active');
- $(this).off('mousemove');
- moveFunc();
- });
- if (p.drag) {
- strWrap.on('mousedown', function (e) {
- if(p.inverthover){
- strMove.stop(true);
- }
-
- //drag
- var dragTop;
- var dir = 1;
- var newY;
- var oldY = e.clientY;
- //drag
-
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- $(this).on('mousemove', function (e) {
- fMove = true;
- //drag
- newY = e.clientY;
- if(newY > oldY){
- dir = 1
- }else{
- if(newY < oldY){
- dir = -1
- }
- }
- oldY = newY
- dragTop = k2 + e.clientY - strWrap.offset().top;
-
-
- if(dragTop < -strMove.height() && dir < 0){
- dragTop = strWrap.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- if(dragTop > strWrap.height() && dir > 0){
- dragTop = -strMove.height();
- strMoveTop = strMove.position().top;
- k2 = strMoveTop - (e.clientY - strWrap.offset().top);
- }
- //*drag
-
- strMove.stop(true).css({
- top: dragTop
- });
-
-
-
-
-
-
-
-
- }).on('mouseup', function () {
- if(p.inverthover){
- strMove.trigger('mouseenter')
- }
- $(this).off('mousemove');
- setTimeout(function () {
- fMove = false
- }, 50)
- })
- return false;
- })
- .on('click', function () {
- if (fMove) {
- return false
- }
- });
- } else {
- strWrap.addClass('no_drag');
- };
- }
- } else {
- strWrap.addClass('str_static');
- }
- };
- };
-
-
-
-
- }
- if (p.xml) {
- $.ajax({
- url: p.xml,
- dataType: "xml",
- success: function (xml) {
- var xmlTextEl = $(xml).find('text');
- var xmlTextLength = xmlTextEl.length;
- for(var i = 0; i < xmlTextLength; i++){
- var xmlElActive = xmlTextEl.eq(i);
- var xmlElContent = xmlElActive.text();
- var xmlItemEl = $('<span>').text(xmlElContent).appendTo(strWrap);
-
- if(p.direction == 'left' || p.direction == 'right'){
- xmlItemEl.css({display:'inline-block',textAlign:'right'});
- if(i > 0){
- xmlItemEl.css({width:strWrap.width()+xmlItemEl.width()});
- }
- }
- if(p.direction == 'down' || p.direction == 'up'){
- xmlItemEl.css({display:'block',textAlign:'left'});
- if(i > 0){
- xmlItemEl.css({paddingTop:strWrap.height()});
- }
- }
-
- }
- code();
- }
- });
- } else {
- code();
- }
- strWrap.data({
- ini:code,
- startheight: startHeight
- })
-
-
-
-
- });
- },
- update: function () {
- var el = $(this);
- var str_origin = $('.str_origin',el);
- var str_move_clone = $('.str_move_clone',el);
- str_origin.stop(true);
- str_move_clone.remove();
- el.data('ini')();
- },
- destroy: function () {
-
- var el = $(this);
- var elMove = $('.str_move',el);
- var startHeight = el.data('startheight');
-
- $('.str_move_clone',el).remove();
- el.off('mouseenter');
- el.off('mousedown');
- el.off('mouseup');
- el.off('mouseleave');
- el.off('mousemove');
- el.removeClass('noStop').removeClass('str_vertical').removeClass('str_active').removeClass('no_drag').removeClass('str_static').removeClass('str_right').removeClass('str_down');
-
- var elStyle = el.attr('style');
- if(elStyle){
- var styleArr = elStyle.split(';');
- for(var i=0; i < styleArr.length; i++){
- var str = $.trim(styleArr[i]);
- var tested = str.search(/^height/g);
- if(tested != -1){
- styleArr[i] = '';
- }
- }
- var newArr = styleArr.join(';');
- var newStyle = newArr.replace(/;+/g,';')
-
- if(newStyle == ';'){
- el.removeAttr('style');
- }else{
- el.attr('style',newStyle);
- }
-
- if(startHeight){
- el.css({height:startHeight})
- }
- }
- elMove.stop(true);
- if(elMove.length){
- var context = elMove.html();
- elMove.remove();
- el.html(context);
- }
-
- },
- pause: function(){
- var el = $(this);
- var elMove = $('.str_move',el);
- elMove.stop(true);
- },
- play: function(){
- var el = $(this);
- $(this).off('mousemove');
- el.data('moveF')();
- }
-
- };
- $.fn.liMarquee = function (method) {
- if (methods[method]) {
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
- } else if (typeof method === 'object' || !method) {
- return methods.init.apply(this, arguments);
- } else {
- $.error('Метод ' + method + ' в jQuery.liMarquee не существует');
- }
- };
- })(jQuery);
|