| 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);
 |