403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/search.title/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/search.title/script.js
function JCTitleSearch(arParams)
{
	var _this = this;

	this.arParams = {
		'AJAX_PAGE': arParams.AJAX_PAGE,
		'CONTAINER_ID': arParams.CONTAINER_ID,
		'INPUT_ID': arParams.INPUT_ID,
		'MIN_QUERY_LEN': parseInt(arParams.MIN_QUERY_LEN, 10),
	};
	if (arParams.WAIT_IMAGE)
	{
		this.arParams.WAIT_IMAGE = arParams.WAIT_IMAGE;
	}

	if (this.arParams.MIN_QUERY_LEN <= 0)
	{
		this.arParams.MIN_QUERY_LEN = 1;
	}

	this.cache = [];
	this.cache_key = null;

	this.startText = '';
	this.running = false;
	this.runningCall = false;
	this.currentRow = -1;
	this.RESULT = null;
	this.CONTAINER = null;
	this.INPUT = null;
	this.WAIT = null;

	this.ShowResult = function(result)
	{
		if (BX.type.isString(result))
		{
			_this.RESULT.innerHTML = result;
		}

		_this.RESULT.style.display = _this.RESULT.innerHTML === '' ? 'none' : 'block';
		var pos = _this.adjustResultNode();

		// adjust left column to be an outline
		var resultPosition = null;
		var th = null;
		var tbl = BX.findChild(_this.RESULT, { 'tag': 'table', 'class': 'title-search-result' }, true);
		if (tbl)
		{
			th = BX.findChild(tbl, { 'tag': 'th' }, true);
		}

		if (th)
		{
			var tablePosition = BX.pos(tbl);
			tablePosition.width = tablePosition.right - tablePosition.left;

			var tableHeaderPosition = BX.pos(th);
			tableHeaderPosition.width = tableHeaderPosition.right - tableHeaderPosition.left;
			th.style.width = tableHeaderPosition.width + 'px';

			_this.RESULT.style.width = (pos.width + tableHeaderPosition.width) + 'px';

			// Move table to left by width of the first column
			_this.RESULT.style.left = (pos.left - tableHeaderPosition.width - 1) + 'px';

			// Shrink table when it's too wide
			if ((tablePosition.width - tableHeaderPosition.width) > pos.width)
			{
				_this.RESULT.style.width = (pos.width + tableHeaderPosition.width - 1) + 'px';
			}

			// Check if table is too wide and shrink result div to it's width
			tablePosition = BX.pos(tbl);
			resultPosition = BX.pos(_this.RESULT);
			if (resultPosition.right > tablePosition.right)
			{
				_this.RESULT.style.width = (tablePosition.right - tablePosition.left) + 'px';
			}
		}

		var fade = false;
		if (tbl)
		{
			fade = BX.findChild(_this.RESULT, { 'class': 'title-search-fader' }, true);
		}

		if (fade && th)
		{
			resultPosition = BX.pos(_this.RESULT);
			fade.style.left = (resultPosition.right - resultPosition.left - 18) + 'px';
			fade.style.width = 18 + 'px';
			fade.style.top = 0 + 'px';
			fade.style.height = (resultPosition.bottom - resultPosition.top) + 'px';
			fade.style.display = 'block';
		}
	};

	this.onKeyPress = function(keyCode)
	{
		var tbl = BX.findChild(_this.RESULT, { 'tag': 'table', 'class': 'title-search-result' }, true);
		if (!tbl)
		{
			return false;
		}

		var i = 0;
		var cnt = tbl.rows.length;

		switch (keyCode)
		{
			case 27: // escape key - close search div
				_this.RESULT.style.display = 'none';
				_this.currentRow = -1;
				_this.UnSelectAll();

				return true;
			case 40: // down key - navigate down on search results
				if (_this.RESULT.style.display == 'none')
				{
					_this.RESULT.style.display = 'block';
				}

				var first = -1;
				for (i = 0; i < cnt; i++)
				{
					if (!BX.findChild(tbl.rows[i], { 'class': 'title-search-separator' }, true))
					{
						if (first == -1)
						{
							first = i;
						}

						if (_this.currentRow < i)
						{
							_this.currentRow = i;
							break;
						}
						else if (tbl.rows[i].className == 'title-search-selected')
						{
							tbl.rows[i].className = '';
						}
					}
				}

				if (i == cnt && _this.currentRow != i)
				{
					_this.currentRow = first;
				}

				tbl.rows[_this.currentRow].className = 'title-search-selected';

				return true;
			case 38: // up key - navigate up on search results
				if (_this.RESULT.style.display == 'none')
				{
					_this.RESULT.style.display = 'block';
				}

				var last = -1;
				for (i = cnt - 1; i >= 0; i--)
				{
					if (!BX.findChild(tbl.rows[i], { 'class': 'title-search-separator' }, true))
					{
						if (last == -1)
						{
							last = i;
						}

						if (_this.currentRow > i)
						{
							_this.currentRow = i;
							break;
						}
						else if (tbl.rows[i].className == 'title-search-selected')
						{
							tbl.rows[i].className = '';
						}
					}
				}

				if (i < 0 && _this.currentRow != i)
				{
					_this.currentRow = last;
				}

				tbl.rows[_this.currentRow].className = 'title-search-selected';

				return true;
			case 13: // enter key - choose current search result
				if (_this.RESULT.style.display == 'block')
				{
					for (i = 0; i < cnt; i++)
					{
						if (
							_this.currentRow == i
							&& !BX.findChild(tbl.rows[i], { 'class': 'title-search-separator' }, true)
						)
						{
							var a = BX.findChild(tbl.rows[i], { 'tag': 'a' }, true);
							if (a)
							{
								window.location = a.href;

								return true;
							}
						}
					}
				}

				return false;
			default:
				break;
		}

		return false;
	};

	this.onTimeout = function()
	{
		_this.onChange(function() {
			setTimeout(_this.onTimeout, 500);
		});
	};

	this.onChange = function(callback)
	{
		if (_this.running)
		{
			_this.runningCall = true;

			return;
		}
		_this.running = true;

		if (_this.INPUT.value != _this.oldValue && _this.INPUT.value != _this.startText)
		{
			_this.oldValue = _this.INPUT.value;
			if (_this.INPUT.value.length >= _this.arParams.MIN_QUERY_LEN)
			{
				_this.cache_key = _this.arParams.INPUT_ID + '|' + _this.INPUT.value;
				if (_this.cache[_this.cache_key] == null)
				{
					if (_this.WAIT)
					{
						var pos = BX.pos(_this.INPUT);
						var height = (pos.bottom - pos.top) - 2;
						_this.WAIT.style.top = (pos.top + 1) + 'px';
						_this.WAIT.style.height = height + 'px';
						_this.WAIT.style.width = height + 'px';
						_this.WAIT.style.left = (pos.right - height + 2) + 'px';
						_this.WAIT.style.display = 'block';
					}

					BX.ajax.post(
						_this.arParams.AJAX_PAGE,
						{
							'ajax_call': 'y',
							'INPUT_ID': _this.arParams.INPUT_ID,
							'q': _this.INPUT.value,
							'l': _this.arParams.MIN_QUERY_LEN,
						},
						function(result)
						{
							_this.cache[_this.cache_key] = result;
							_this.ShowResult(result);
							_this.currentRow = -1;
							_this.EnableMouseEvents();
							if (_this.WAIT)
							{
								_this.WAIT.style.display = 'none';
							}

							if (!!callback)
							{
								callback();
							}

							_this.running = false;
							if (_this.runningCall)
							{
								_this.runningCall = false;
								_this.onChange();
							}
						}
					);

					return;
				}

				_this.ShowResult(_this.cache[_this.cache_key]);
				_this.currentRow = -1;
				_this.EnableMouseEvents();
			}
			else
			{
				_this.RESULT.style.display = 'none';
				_this.currentRow = -1;
				_this.UnSelectAll();
			}
		}

		if (!!callback)
		{
			callback();
		}
		_this.running = false;
	};

	this.onScroll = function ()
	{
		if (BX.type.isElementNode(_this.RESULT)
			&& _this.RESULT.style.display !== 'none'
			&& _this.RESULT.innerHTML !== ''
		)
		{
			_this.adjustResultNode();
		}
	};

	this.UnSelectAll = function()
	{
		var tbl = BX.findChild(_this.RESULT, { 'tag': 'table', 'class': 'title-search-result' }, true);
		if (tbl)
		{
			var cnt = tbl.rows.length;
			for (var i = 0; i < cnt; i++)
			{
				tbl.rows[i].className = '';
			}
		}
	};

	this.EnableMouseEvents = function()
	{
		var tbl = BX.findChild(_this.RESULT, { 'tag': 'table', 'class': 'title-search-result' }, true);
		if (tbl)
		{
			var cnt = tbl.rows.length;
			for (var i = 0; i < cnt; i++)
			{
				if (!BX.findChild(tbl.rows[i], { 'class': 'title-search-separator' }, true))
				{
					tbl.rows[i].id = 'row_' + i;
					tbl.rows[i].onmouseover = function (e) {
						if (_this.currentRow != this.id.substr(4))
						{
							_this.UnSelectAll();
							this.className = 'title-search-selected';
							_this.currentRow = this.id.substr(4);
						}
					};

					tbl.rows[i].onmouseout = function (e) {
						this.className = '';
						_this.currentRow = -1;
					};
				}
			}
		}
	};

	this.onFocusLost = function(hide)
	{
		setTimeout(function() { _this.RESULT.style.display = 'none'; }, 250);
	};

	this.onFocusGain = function()
	{
		if (_this.RESULT.innerHTML.length > 0)
		{
			_this.ShowResult();
		}
	};

	this.onKeyDown = function(e)
	{
		if (!e)
		{
			e = window.event;
		}

		if (_this.RESULT.style.display == 'block' && _this.onKeyPress(e.keyCode))
		{
			return BX.PreventDefault(e);
		}
	};

	this.adjustResultNode = function()
	{
		if (!(BX.type.isElementNode(_this.RESULT)
			&& BX.type.isElementNode(_this.CONTAINER))
		)
		{
			return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 };
		}

		var pos = BX.pos(_this.CONTAINER);

		_this.RESULT.style.position = 'absolute';
		_this.RESULT.style.top = (pos.bottom + 2) + 'px';
		_this.RESULT.style.left = pos.left + 'px';
		_this.RESULT.style.width = pos.width + 'px';

		return pos;
	};

	this.onContainerLayoutChange = function()
	{
		if (BX.type.isElementNode(_this.RESULT)
			&& _this.RESULT.style.display !== 'none'
			&& _this.RESULT.innerHTML !== ''
		)
		{
			_this.adjustResultNode();
		}
	};

	this.Init = function()
	{
		this.CONTAINER = document.getElementById(this.arParams.CONTAINER_ID);
		BX.addCustomEvent(this.CONTAINER, 'OnNodeLayoutChange', this.onContainerLayoutChange);

		this.RESULT = document.body.appendChild(document.createElement("DIV"));
		this.RESULT.className = 'title-search-result';
		this.INPUT = document.getElementById(this.arParams.INPUT_ID);
		this.startText = this.INPUT.value;
		this.oldValue = this.INPUT.value;
		BX.bind(this.INPUT, 'focus', function() { _this.onFocusGain(); });
		BX.bind(this.INPUT, 'blur', function() { _this.onFocusLost(); });
		this.INPUT.onkeydown = this.onKeyDown;

		if (this.arParams.WAIT_IMAGE)
		{
			this.WAIT = document.body.appendChild(document.createElement('DIV'));
			this.WAIT.style.backgroundImage = "url('" + this.arParams.WAIT_IMAGE + "')";
			if (!BX.browser.IsIE())
			{
				this.WAIT.style.backgroundRepeat = 'none';
			}
			this.WAIT.style.display = 'none';
			this.WAIT.style.position = 'absolute';
			this.WAIT.style.zIndex = '1100';
		}

		BX.bind(this.INPUT, 'bxchange', function() {_this.onChange()});

		var fixedParent = BX.findParent(this.CONTAINER, BX.is_fixed);
		if (BX.type.isElementNode(fixedParent))
		{
			BX.bind(window, 'scroll', BX.throttle(this.onScroll, 100, this));
		}
	};

	BX.ready(function() { _this.Init(arParams); });
}

Youez - 2016 - github.com/yon3zu
LinuXploit