diff --git a/src/main/webapp/static/plugins/jquery.liMarquee/jquery.liMarquee.js b/src/main/webapp/static/plugins/jquery.liMarquee/jquery.liMarquee.js new file mode 100644 index 00000000..88d46cad --- /dev/null +++ b/src/main/webapp/static/plugins/jquery.liMarquee/jquery.liMarquee.js @@ -0,0 +1,1309 @@ +/* + * 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($('
').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 = $('').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); \ No newline at end of file diff --git a/src/main/webapp/static/plugins/jquery.liMarquee/liMarquee.css b/src/main/webapp/static/plugins/jquery.liMarquee/liMarquee.css new file mode 100644 index 00000000..072463b6 --- /dev/null +++ b/src/main/webapp/static/plugins/jquery.liMarquee/liMarquee.css @@ -0,0 +1,55 @@ +/*Plugin CSS*/ +.str_wrap { + overflow:hidden; + //zoom:1; + width:100%; + font-size:12px; + line-height:16px; + position:relative; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; + background:#f6f6f6; + white-space:nowrap; +} + +.str_wrap.str_active { + background:#f1f1f1; +} +.str_move { + white-space:nowrap; + position:absolute; + top:0; + left:0; + cursor:move; +} +.str_move_clone { + display:inline-block; + //display:inline; + //zoom:1; + vertical-align:top; + position:absolute; + left:100%; + top:0; +} +.str_vertical .str_move_clone { + left:0; + top:100%; +} +.str_down .str_move_clone { + left:0; + bottom:100%; +} +.str_vertical .str_move, +.str_down .str_move { + white-space:normal; + width:100%; +} +.str_static .str_move, +.no_drag .str_move, +.noStop .str_move{ + cursor:inherit; +} +.str_wrap img { + max-width:none !important; +} \ No newline at end of file