--===================================================================================================================================
--[[ Глобальные переменные ]]--
--===================================================================================================================================
HORIZONTAL = 0;				-- горизонтальная ориентация
VERTICAL = 1;				-- вертикальная ориентация
_cSliderElementsList = nil;	-- список элементов слайдеров на текущей странице
_cSliderAliasList = nil;	-- список Alias's слайдеров на текущей странице
_cActiveSliderName = nil;	-- имя активного слайдера
_lEnter = false;			-- флаг наезда на объект
_cEnterName=nil;			-- имя объекта на который наехали
_lClickSliderBtn = false;	-- флаг клика на SliderBtn
_nMouseOffset = 0;			-- смещение мышки относитально позиции SliderBtn
--===================================================================================================================================
--[[ Вспомогательные функции ]]--
--===================================================================================================================================
-- Ф-ция проверяет существование элемента слайдера в списке элементов слайдера
local function _SliderElementExist(cName)
	lExist = false;								-- флаг наличия имени элемента слайдера в списке элементов слайдера
	if (_cSliderElementsList and cName) then	-- если список элементов слайдера не пустой и есть имя
		if (String.Find(_cSliderElementsList, cName..",", 1, false) ~= -1) then	lExist = true; end	-- если имя присутствует в списке
	end
	return lExist								-- возвращаем результат поиска
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция проверяет существование Alias слайдера в списке Alias's слайдера
local function _SliderAliasExist(cName)
	lExist = false;							-- флаг наличия Alias слайдера в списке Alias's слайдера
	if (_cSliderAliasList and cName) then	-- если список Alias's слайдера не пустой и есть имя
		if (String.Find(_cSliderAliasList, cName..",", 1, false) ~= -1) then lExist = true; end		-- если имя присутствует в списке
	end
	return lExist							-- возвращаем результат поиска
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция создает списки элементов и Alias's слайдеров текущей странице и сохраняет в глобадьные переменные
function _SliderList()
	_cSliderElementsList = "";														-- список элементов слайдеров на текущей странице
	_cSliderAliasList = "";															-- список Alias's слайдеров на текущей странице
	local tObjects = Page.EnumerateObjects();										-- таблица всех объектов текущей страницы	
	if (tObjects) then																-- есть объекты на текущей странице	
		for n, cObjectName in tObjects do											-- получаем имя текущего объекта страницы
			local lSliderElement = true;											-- объект является элементом слайдера
			if (String.Left(cObjectName, 10) == "Slider_Bar" and Page.GetObjectType(cObjectName) == OBJECT_BUTTON) then	-- если элемент слайдера
				_cSliderElementsList = _cSliderElementsList..cObjectName..",";		-- заполняем список элементами слайдера
			elseif (String.Left(cObjectName, 10) == "Slider_Btn" and Page.GetObjectType(cObjectName) == OBJECT_BUTTON) then	-- если элемент слайдера
				_cSliderElementsList = _cSliderElementsList..cObjectName..",";		-- заполняем список элементами слайдера
			elseif (String.Left(cObjectName, 10) == "Slider_Prg" and Page.GetObjectType(cObjectName) == OBJECT_IMAGE) then	-- если элемент слайдера
				_cSliderElementsList = _cSliderElementsList..cObjectName..",";		-- заполняем список элементами слайдера
			elseif (String.Left(cObjectName, 10) == "Slider_Lin" and Page.GetObjectType(cObjectName) == OBJECT_IMAGE) then	-- если элемент слайдера
				_cSliderElementsList = _cSliderElementsList..cObjectName..",";		-- заполняем список элементами слайдера
			else																	-- объект не является элементом слайдера
				lSliderElement = false;												-- объект не является элементом слайдера
			end
			if (lSliderElement) then												-- если объект является элементом слайдера
				local cAlias = String.Left(cObjectName, 6)..String.Right(cObjectName, String.Length(cObjectName) - 10);	-- Alias
				if (not _SliderAliasExist(cAlias)) then								-- если Alias отсутствует в списке Alias's
					_cSliderAliasList = _cSliderAliasList..cAlias..",";				-- заполняем список Alias's
				end
			end
		end
		if (_cSliderElementsList == "") then _cSliderElementsList = nil; end		-- список элементов слайдеров пуст
		if (_cSliderAliasList == "") then _cSliderAliasList = nil; end				-- список Alias's пуст
	else																			-- нет объектов на текущей странице	
		_cSliderElementsList = nil;													-- список элементов слайдеров пуст
		_cSliderAliasList = nil;													-- список Alias's пуст
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает таблицу положения мышки над элементами слайдера
local function MouseOnSlider(cSliderName)
	tMouseOnSlider = {Bar = nil, Btn = nil};						-- таблица положения мышки над элементами слайдера
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;					-- имя SliderBtn
		local tPosSliderBtn = Button.GetPos(cSliderBtnName);		-- позиция SliderBtn	
		local tSizeSliderBtn = Button.GetSize(cSliderBtnName);		-- размер SliderBtn	
		local tPosSliderBar = Button.GetPos(cSliderBarName);		-- позиция SliderBar	
		local tSizeSliderBar = Button.GetSize(cSliderBarName);		-- размер SliderBar	
		local nXBar0 = tPosSliderBar.X;								-- левая граница SliderBtn	
		local nXBar1 = tPosSliderBar.X + tSizeSliderBar.Width;		-- правая граница SliderBtn	
		local nYBar0 = tPosSliderBar.Y;								-- верхняя граница SliderBtn	
		local nYBar1 = tPosSliderBar.Y + tSizeSliderBar.Height;		-- нижняя граница SliderBtn	
		local nXBtn0 = tPosSliderBtn.X;								-- левая граница SliderBtn	
		local nXBtn1 = tPosSliderBtn.X + tSizeSliderBtn.Width;		-- правая граница SliderBtn	
		local nYBtn0 = tPosSliderBtn.Y;								-- верхняя граница SliderBtn	
		local nYBtn1 = tPosSliderBtn.Y + tSizeSliderBtn.Height;		-- нижняя граница SliderBtn	
		local m_pos = System.GetMousePosition(true);				-- текущая позиция мышки
		if (m_pos.X >= nXBtn0 and m_pos.X <= nXBtn1 and m_pos.Y >= nYBtn0 and m_pos.Y <= nYBtn1) then	-- если мышка над SliderBtn	
			tMouseOnSlider.Bar = false;								-- мышка не над SliderBar	
			tMouseOnSlider.Btn = true;								-- мышка над SliderBtn	
		else
			if (m_pos.X >= nXBar0 and m_pos.X <= nXBar1 and m_pos.Y >= nYBar0 and m_pos.Y <= nYBar1) then	-- если мышка над SliderBar			
				tMouseOnSlider.Bar = true;							-- мышка над SliderBar	
				tMouseOnSlider.Btn = false;							-- мышка не над SliderBtn	
			end
		end
	end
	return tMouseOnSlider											-- возвращаем таблицу положения мышки над элементами слайдера
end
--===================================================================================================================================
--[[ Actions функции ]]--
--===================================================================================================================================
-- Ф-ция возвращает Alias активного слайдера, в виде строки. Если произошла ошибка, то будет возвращена пустая строка "".
-- (string)
local function SliderGetActiveAlias()
	cActiveAlias = "";						-- Alias активного слайдера
	if (_cActiveSliderName) then			-- если есть Alias активного слайдера
		cActiveAlias = _cActiveSliderName;	-- Alias активного слайдера
	end
	return cActiveAlias						-- возвращаем Alias активного слайдера
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает Alias слайдера, в виде строки. Если произошла ошибка, то будет возвращена пустая строка "".
-- (string)
local function SliderGetAlias(cElementName)
	cAlias = "";												-- Alias слайдера
	if (_SliderAliasExist(cElementName)) then					-- если cElementName принадлежит списку Alias's
		cAlias = cElementName;									-- Alias слайдера
	else														-- если cElementName не принадлежит списку Alias's
		if (_SliderElementExist(cElementName)) then				-- если cElementName принадлежит списку элементов слайдера
			cAlias = String.Left(cElementName, 6)..String.Right(cElementName, String.Length(cElementName) - 10);	-- Alias
		else													-- если cElementName не принадлежит списку элементов слайдера
			cAlias = "";										-- Alias слайдера
		end
	end
	return cAlias												-- возвращаем Alias слайдера
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает имена элементов слайдера, в виде таблицы. Если произошла ошибка, то будет возвращено значение nil.
-- (table)
local function SliderGetElementsName(cAlias)
	tElenents = {Bar = "", Btn = "", Prg = "", Lin = ""};				-- таблица, содержащая имена элементов слайдера
	local cElementName = "";											-- имя элемента слайдера
	if (_SliderElementExist(cAlias)) then								-- если cAlias принадлежит списку элементов слайдера
		cAlias = String.Left(cAlias, 6)..String.Right(cAlias, String.Length(cAlias) - 10);	-- получаем Alias
	end
	if (_SliderAliasExist(cAlias)) then									-- если cAlias принадлежит списку Alias's
		local cPre = String.Left(cAlias, 6);							-- префикс Alias ("Slider")	
		local cSuf = String.Right(cAlias, String.Length(cAlias)-6);		-- суфикс cAlias (пользовательское окончание)		
		cElementName = cPre.."_Bar"..cSuf;								-- имя элемента слайдера
		if (not _SliderElementExist(cElementName)) then					-- если cElementName не принадлежит списку элементов слайдера
			tElenents = nil;											-- таблица, содержащая имена элементов слайдера
		else															-- если cElementName принадлежит списку элементов слайдера
			tElenents.Bar = cElementName;								-- заполняем таблицу имен элементов слайдера	
			cElementName = cPre.."_Btn"..cSuf;							-- имя элемента слайдера
			if (not _SliderElementExist(cElementName)) then				-- если cElementName не принадлежит списку элементов слайдера
				tElenents = nil;										-- таблица, содержащая имена элементов слайдера
			else														-- если cElementName принадлежит списку элементов слайдера
				tElenents.Btn = cElementName;							-- заполняем таблицу имен элементов слайдера	
				cElementName = cPre.."_Prg"..cSuf;						-- имя элемента слайдера
				if (not _SliderElementExist(cElementName)) then			-- если cElementName не принадлежит списку элементов слайдера
					tElenents.Prg = "";									-- заполняем таблицу имен элементов слайдера	
				else													-- если cElementName принадлежит списку элементов слайдера
					tElenents.Prg = cElementName;						-- заполняем таблицу имен элементов слайдера	
					cElementName = cPre.."_Lin"..cSuf;					-- имя элемента слайдера
					if (not _SliderElementExist(cElementName)) then		-- если cElementName не принадлежит списку элементов слайдера
						tElenents.Lin = "";								-- заполняем таблицу имен элементов слайдера	
					else												-- если cElementName принадлежит списку элементов слайдера
						tElenents.Lin = cElementName;					-- заполняем таблицу имен элементов слайдера	
					end
				end
			end
		end
	else																-- если cAlias не принадлежит списку Alias's
		tElenents = nil;												-- таблица, содержащая имена элементов слайдера
	end
	return tElenents													-- возвращает таблицу, содержащую имена элементов слайдера
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает длину SliderBar. Если произошла ошибка, то возвращает - nil.
-- (number)
local function SliderGetLength(cSliderName)
	nLength = nil;													-- длина SliderBar
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		local tSizeSliderBar = Button.GetSize(cSliderBarName);		-- размер SliderBar	
		local nOrientation = SliderEx.GetOrientation(cSliderName);	-- вертикальная/горизонтальная ориентация SliderBar		
		if (nOrientation == HORIZONTAL) then						-- горизонтальное положение SliderBar	
			nLength = tSizeSliderBar.Width;							-- длина SliderBar в пикселях
		else														-- вертикальное положение SliderBar
			nLength = tSizeSliderBar.Height;						-- длина SliderBar в пикселях
		end
	else															-- если таблица элементов пустая
		nLength = nil;												-- длина SliderBar
	end
	return nLength													-- возвращает длину SliderBar в пикселях
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает позицию SliderBar, в виде таблицы. Если произошла ошибка, то возвращает - nil.
-- (table)
local function SliderGetPos(cSliderName)
	tPos = nil;														-- позиция SliderBar
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		tPos = Button.GetPos(cSliderBarName);						-- позиция SliderBar	
	else															-- если таблица элементов пустая
		tPos = nil;													-- позиция SliderBar
	end
	return tPos														-- возвращает позицию SliderBar
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает диапазон SliderBar, в виде таблицы. Если произошла ошибка, то возвращает - nil.
-- (table)
local function SliderGetRange(cSliderName)
	tRange = {Start = 0, End = 0}										-- диапазон слайдера
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		local tProp = Button.GetProperties(cSliderBarName);			-- св-ва SliderBar
		local nOrientation = SliderEx.GetOrientation(cSliderName);	-- вертикальная/горизонтальная ориентация SliderBar		
		if (nOrientation == HORIZONTAL) then						-- горизонтальное положение SliderBar	
			tRange.Start = tProp.XOffset;								-- начальная граница диапазона
			tRange.End = tProp.YOffset;								-- конечная граница диапазона 
		else														-- вертикальное положение SliderBar
			tRange.Start = tProp.YOffset;								-- начальная граница диапазона
			tRange.End = tProp.XOffset;								-- конечная граница диапазона  
		end
		if (tRange.Start ==  tRange.End) then				-- если диапазон не установлен	
			tRange.Start = 0;										-- начальная граница диапазона по умолчанию
			tRange.End = 100;										-- конечная граница диапазона  по умолчанию
		end
	else															-- если таблица элементов пустая
		tRange = nil;												-- диапазон слайдера
	end
	return tRange													-- возвращает диапазон слайдера
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает позицию SliderBtn относительно диапазона. Если произошла ошибка, то возвращает - nil.
-- (number)
local function SliderGetSliderPos(cSliderName)
	nSliderPos = nil;															-- позиция SliderBtn относительно диапазона
	local tElementsName = SliderEx.GetElementsName(cSliderName);				-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then														-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;								-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;								-- имя SliderBtn
		local tPosSliderBar = Button.GetPos(cSliderBarName);					-- позиция SliderBar	
		local tPosSliderBtn = Button.GetPos(cSliderBtnName);					-- позиция SliderBtn	
		local tSizeSliderBar = Button.GetSize(cSliderBarName);					-- размер SliderBar	
		local tSizeSliderBtn = Button.GetSize(cSliderBtnName);					-- размер SliderBtn	
		local tRange = SliderEx.GetRange(cSliderName);							-- диапазон слайдера
		local nOrientation = SliderEx.GetOrientation(cSliderName);				-- горизонтальное/вертикальное положение SliderBar
		if (nOrientation == HORIZONTAL) then									-- горизонтальное положение SliderBar	
			local nOffset = tPosSliderBtn.X - tPosSliderBar.X;					-- смещение SliderBtn относительно SliderBar (в пикселях) 							
			nOffsetRange = nOffset * (tRange.End - tRange.Start) / (tSizeSliderBar.Width - tSizeSliderBtn.Width);	-- новая позиция
		else																	-- вертикальное положение SliderBar
			local nOffset = tPosSliderBar.Y + tSizeSliderBar.Height - tPosSliderBtn.Y - tSizeSliderBtn.Height;	-- смещение SliderBtn относительно SliderBar (в пикселях) 							
			nOffsetRange = nOffset * (tRange.End - tRange.Start) / (tSizeSliderBar.Height - tSizeSliderBtn.Height);	-- новая позиция
		end
		nSliderPos = tRange.Start + nOffsetRange;									-- позиция SliderBtn относительно диапазона	
	else																		-- если таблица элементов пустая
		nSliderPos = nil;														-- позиция SliderBtn относительно диапазона
	end
	return nSliderPos															-- возвращает позицию SliderBtn относительно диапазона
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает размер SliderBar, в виде таблицы. Если произошла ошибка, то возвращает - nil.
-- (table)
local function SliderGetSize(cSliderName)
	tSize = nil;													-- размер SliderBar
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		tSize = Button.GetSize(cSliderBarName);						-- размер SliderBar
	else															-- если таблица элементов пустая
		tSize = nil;												-- размер SliderBar
	end	
	return tSize													-- возвращает размер SliderBar
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает вертикальную/горизонтальную ориентацию SliderBar. Если произошла ошибка, то возвращает - nil.
-- (number)
local function SliderGetOrientation(cSliderName)
	nOrientation = nil;								-- горизонтальная ориентация SliderBar по умолчанию
	local tSize = SliderEx.GetSize(cSliderName);	-- размер SliderBar, в виде таблицы			
	if (tSize) then									-- если таблица не пустая
		if (tSize.Width >= tSize.Height) then			-- ширина больше или равна высоте
			nOrientation = HORIZONTAL;					-- горизонтальное положение SliderBar
		else											-- высота больше ширины
			nOrientation = VERTICAL;					-- вертикальное положение SliderBar
		end
	end
	return nOrientation								-- возвращает вертикальную/горизонтальную ориентацию SliderBar
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает активное/неактивное состояние слайдера. Если произошла ошибка, то возвращает - false.
-- (boolean)
local function SliderIsEnabled(cSliderName)
	lEnabled = false;												-- неактивное состояние слайдера по умолчанию
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;					-- имя SliderBtn
		local lEnabledBar = Button.IsEnabled(cSliderBarName);		-- активное/неактивное состояние SliderBar
		local lEnabledBtn = Button.IsEnabled(cSliderBtnName);		-- активное/неактивное состояние SliderBtn
		if (lEnabledBar and lEnabledBtn) then						-- если активны SliderBar и SliderBtn
			lEnabled = true;										-- активное состояние слайдера 	
		else														-- если не активны SliderBar или SliderBtn
			lEnabled = false;										-- неактивное состояние слайдера 
		end
	else															-- если таблица элементов пустая
		lEnabled = false;											-- неактивное состояние слайдера 
	end
	return lEnabled													-- возвращает активное/неактивное состояние слайдера 
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция возвращает видимость слайдера. Если произошла ошибка, то возвращает - false.
-- (boolean)
local function SliderIsVisible(cSliderName)
	lVisible = false;											-- скрытое состояние слайдера по умолчанию
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then										-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;				-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;				-- имя SliderBtn
		local lVisibleBar = Button.IsVisible(cSliderBarName);		-- состояние видимости SliderBar
		local lVisibleBtn = Button.IsVisible(cSliderBtnName);		-- состояние видимости SliderBtn
		if (lVisibleBar and lVisibleBtn) then						-- если отображены SliderBar и SliderBtn
			lVisible = true;										-- слайдер отображен
		else														-- если скрыты SliderBar или SliderBtn
			lVisible = false;									-- слайдер скрыт
		end
	else															-- если таблица элементов пустая
		lVisible = false;										-- слайдер скрыт 
	end
	return lVisible												-- возвращает состояние видимости слайдера 
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция устанавливает активное/неактивное состояние слайдера.
local function SliderSetEnabled(cSliderName, Enabled)
	if (Enabled == nil) then												-- если нет параметра Enabled
		Enabled = true;												-- значение по умолчанию - true
	end
	local tElementsName = SliderEx.GetElementsName(cSliderName);		-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;					-- имя SliderBtn
		Button.SetEnabled(cSliderBarName, Enabled);					-- активное/неактивное состояние SliderBar
		Button.SetEnabled(cSliderBtnName, Enabled);					-- активное/неактивное состояние SliderBtn
		Page.ClickObject(cSliderBtnName);							-- выполняем скрипт пользователя	
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция устанавливает позицию SliderBar и относительную позицию SliderBtn и SliderPrg.
local function SliderSetPos(cSliderName, X, Y)
	local tElementsName = SliderEx.GetElementsName(cSliderName);				-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then														-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;								-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;								-- имя SliderBtn
		local cSliderPrgName = tElementsName.Prg;								-- имя SliderPrg
		local cSliderLinName = tElementsName.Lin;								-- имя SliderLin
		local tPos = Button.GetPos(cSliderBarName);								-- позиция SliderBar	
		local nXOffset = X - tPos.X;											-- значение смещения по горизонтали	
		local nYOffset = Y - tPos.Y;											-- значение смещения по вертикали
		tPos = Button.GetPos(cSliderBtnName);									-- позиция SliderBtn	
		Button.SetPos(cSliderBarName, X, Y);									-- новая позиция SliderBar
		Button.SetPos(cSliderBtnName, tPos.X + nXOffset, tPos.Y + nYOffset);	-- новая позиция SliderBtn
		if (cSliderPrgName ~= "") then											-- есть полоса прогресса
			tPos = Image.GetPos(cSliderPrgName);								-- позиция SliderBtn	
			Image.SetPos(cSliderPrgName, tPos.X + nXOffset, tPos.Y + nYOffset);	-- новая позиция SliderPrg
		end
		if (cSliderLinName ~= "") then											-- есть линия
			tPos = Image.GetPos(cSliderLinName);								-- позиция SliderLin	
			Image.SetPos(cSliderLinName, tPos.X + nXOffset, tPos.Y + nYOffset);	-- новая позиция SliderLin
		end
		Page.ClickObject(cSliderBtnName);										-- выполняем скрипт пользователя	
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция устанавливает диапазон слайдера.
local function SliderSetRange(cSliderName, Start, End)
	local tElementsName = SliderEx.GetElementsName(cSliderName);	-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then											-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;					-- имя SliderBtn
		local nOrientation = SliderEx.GetOrientation(cSliderName);	-- горизонтальное/вертикальное положение SliderBar
		if (Start ==  End) then				-- если диапазон не установлен	
			Start = 0;										-- начальная граница диапазона по умолчанию
			End = 100;										-- конечная граница диапазона по умолчанию
		end
		if (nOrientation == HORIZONTAL) then						-- горизонтальное положение SliderBar	
			tProp = {XOffset = Start, YOffset = End}					-- таблица значений диапазона
		else														-- вертикальное положение SliderBar
			tProp = {XOffset = End, YOffset = Start}					-- таблица значений диапазона
		end
		Button.SetProperties(cSliderBarName, tProp);				-- устанавливаем диапазон SliderBar
		Page.ClickObject(cSliderBtnName);							-- выполняем скрипт пользователя	
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция устанавливает позицию SliderBtn относительно диапазона.
local function SliderSetSliderPos(cSliderName, Position)
	local tElementsName = SliderEx.GetElementsName(cSliderName);			-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then													-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;							-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;							-- имя SliderBtn
		local tRange = SliderEx.GetRange(cSliderName);						-- диапазон SliderBar		
		local tPosSliderBar = Button.GetPos(cSliderBarName);				-- позиция SliderBar	
		local tPosSliderBtn = Button.GetPos(cSliderBtnName);				-- позиция SliderBtn	
		local tSizeSliderBar = Button.GetSize(cSliderBarName);				-- размер SliderBar	
		local tSizeSliderBtn = Button.GetSize(cSliderBtnName);				-- размер SliderBtn	
		local nOrientation = SliderEx.GetOrientation(cSliderName);			-- горизонтальное/вертикальное положение SliderBar
		if (tRange.Start == tRange.End) then									-- если Start = End
			if (tRange.End == 0) then										-- если Start = End = 0
				SliderEx.SetRange(cSliderName, 0, 100);						-- установить диапазон по умолчанию (0-100)
			else															-- если Start = End ~= 0
				SliderEx.SetRange(cSliderName, 0, tRange.End);				-- установить диапазон (0-End)
			end
			tRange = SliderEx.GetRange(cSliderName);						-- диапазон SliderBar		
		end
		if (tRange.Start < tRange.End) then									-- если Start < End		
			if (Position < tRange.Start) then Position = tRange.Start; end		-- если Position < Start, то Position = Start
			if (Position > tRange.End) then Position = tRange.End; end		-- если Position > End, то Position = End
		elseif (tRange.Start > tRange.End) then								-- если Start > End
			if (Position > tRange.Start) then Position = tRange.Start; end		-- если Position > Start, то Position = Start
			if (Position < tRange.End) then Position = tRange.End; end		-- если Position < End, то Position = End
		end
		local nOffsetRange = Position - tRange.Start;							-- смещение SliderBtn относительно SliderBar (в еденицах диапазона)
		if (nOrientation == HORIZONTAL) then								-- горизонтальное положение SliderBar	
			if (tSizeSliderBar.Width > tSizeSliderBtn.Width) then			-- если ширина SliderBar больше ширины SliderBtn
				local nX = tPosSliderBar.X + (nOffsetRange * (tSizeSliderBar.Width - tSizeSliderBtn.Width) / (tRange.End - tRange.Start));	-- новая позиция
				Button.SetPos(cSliderBtnName, Math.Round(nX, 0), tPosSliderBtn.Y);	-- устанавливаем SliderBtn в новую позицию
			end
		else																-- вертикальное положение SliderBar
			if (tSizeSliderBar.Height > tSizeSliderBtn.Height) then			-- если высота SliderBar больше высоты SliderBtn
				local nY = tPosSliderBar.Y + tSizeSliderBar.Height - tSizeSliderBtn.Height - ((nOffsetRange * (tSizeSliderBar.Height - tSizeSliderBtn.Height) / (tRange.End - tRange.Start)));	-- новая позиция
				Button.SetPos(cSliderBtnName, tPosSliderBtn.X, Math.Round(nY, 0));	-- устанавливаем SliderBtn в новую позицию
			end
		end
		Page.ClickObject(cSliderBtnName);									-- выполняем скрипт пользователя	
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция устанавливает длину SliderBar и относительную позицию SliderBtn и SliderLin
local function SliderSetLength(cSliderName, Length)
	local tElementsName = SliderEx.GetElementsName(cSliderName);			-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then													-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;							-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;							-- имя SliderBtn
		local cSliderLinName = tElementsName.Lin;							-- имя SliderLin
		local tPosSliderBar = Button.GetPos(cSliderBarName);				-- позиция SliderBar	
		local tPosSliderBtn = Button.GetPos(cSliderBtnName);				-- позиция SliderBtn	
		local tSizeSliderBar = Button.GetSize(cSliderBarName);				-- размер SliderBar	
		local tSizeSliderBtn = Button.GetSize(cSliderBtnName);				-- размер SliderBtn	
		local tSizeSliderLin = Image.GetSize(cSliderLinName);				-- размер SliderLin	
		local nOrientation = SliderEx.GetOrientation(cSliderName);			-- вертикальная/горизонтальная ориентация SliderBar		
		if (nOrientation == HORIZONTAL) then								-- горизонтальное положение SliderBar	
			if (Length < tSizeSliderBtn.Width) then						-- если длина SliderBar меньше ширины SliderBtn
				Length = tSizeSliderBtn.Width;							-- выравниваем длину SliderBar по ширине SliderBtn
			end
			local nOffsetX = tPosSliderBtn.X - tPosSliderBar.X;				-- горизонтальное смещение SliderBtn в пикселях	
			nPosX = Math.Round(tPosSliderBar.X + ((Length - tSizeSliderBtn.Width) * nOffsetX / (tSizeSliderBar.Width - tSizeSliderBtn.Width)), 0);	-- новая X позиция SliderBtn
			nPosY = tPosSliderBtn.Y;										-- Y позиция SliderBtn 		
			Button.SetSize(cSliderBarName, Length, tSizeSliderBar.Height);	-- устанавливаем новый размер SliderBar	
		else																-- вертикальное положение SliderBar
			if (Length < tSizeSliderBtn.Height) then						-- если длина SliderBar меньше высоты SliderBtn
				Length = tSizeSliderBtn.Height;							-- выравниваем длину SliderBar по высоте SliderBtn
			end
			local nOffsetY = tPosSliderBtn.Y - tPosSliderBar.Y;				-- вертикальное смещение SliderBtn в пикселях	
			nPosX = tPosSliderBtn.X;										-- X позиция SliderBtn 		
			nPosY = Math.Round(tPosSliderBar.Y + ((Length - tSizeSliderBtn.Height) * nOffsetY / (tSizeSliderBar.Height - tSizeSliderBtn.Height)), 0);	-- новая Y позиция SliderBtn
			if (cSliderLinName ~= "") then										-- есть SliderLin
				Image.SetSize(cSliderLinName, tSizeSliderLin.Width, Length - (tSizeSliderBar.Height - tSizeSliderLin.Height));	-- устанавливаем SliderLin в новую позицию
			end
			Button.SetSize(cSliderBarName, tSizeSliderBar.Width, Length);	-- устанавливаем новый размер SliderBar	
		end
		Button.SetPos(cSliderBtnName, nPosX, nPosY);						-- устанавливаем SliderBtn в новую позицию
		Page.ClickObject(cSliderBtnName);									-- выполняем скрипт пользователя	
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция устанавливает видимость слайдера
local function SliderSetVisible(cSliderName, Visible)
	if (Visible == nil) then												-- если нет параметра Enabled
		Visible = true;												-- значение по умолчанию - true
	end
	local tElementsName = SliderEx.GetElementsName(cSliderName);			-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then													-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;							-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;							-- имя SliderBtn
		local cSliderLinName = tElementsName.Lin;							-- имя SliderLin
		local cSliderPrgName = tElementsName.Prg;							-- имя SliderPrg
		Button.SetVisible(cSliderBarName, Visible);							-- отобразить/скрыть SliderBar
		Button.SetVisible(cSliderBtnName, Visible);							-- отобразить/скрыть SliderBtn
		if (cSliderLinName ~= "") then										-- есть SliderLin
			Image.SetVisible(cSliderLinName, Visible);						-- отобразить/скрыть SliderLin
		end		
		if (cSliderPrgName ~= "") then										-- есть SliderPrg
			Image.SetVisible(cSliderPrgName, Visible);						-- отобразить/скрыть SliderPrg
		end		
		Page.ClickObject(cSliderBtnName);									-- выполняем скрипт пользователя	
	end
end
--===================================================================================================================================
--[[ Actions ]]--
--===================================================================================================================================
SliderEx = {
	GetActiveAlias	= SliderGetActiveAlias,
	GetAlias		= SliderGetAlias,
	GetElementsName	= SliderGetElementsName,
	GetLength		= SliderGetLength,
	GetOrientation	= SliderGetOrientation,
	GetPos			= SliderGetPos,
	GetRange		= SliderGetRange,
	GetSliderPos	= SliderGetSliderPos,
	GetSize			= SliderGetSize,
	IsEnabled		= SliderIsEnabled,
	IsVisible		= SliderIsVisible,
	SetEnabled		= SliderSetEnabled,
	SetLength		= SliderSetLength,
	SetPos			= SliderSetPos,
	SetRange		= SliderSetRange,
	SetSliderPos	= SliderSetSliderPos,
	SetVisible		= SliderSetVisible
}
--===================================================================================================================================
-- Событие On Mouse Button
function MouseButton(m_Type, m_X, m_Y)
	if (System.IsKeyDown(1) and not _cActiveSliderName) then				-- нажали кнопку мышки когда слайдер не активный
		if (_lEnter and _cEnterName) then									-- если был наезд мышки на слайдер
			local tElementsName = SliderEx.GetElementsName(_cEnterName);	-- таблица, содержащая имена элементов слайдера		
			if (tElementsName) then											-- если таблица элементов не пустая
				local cSliderBarName = tElementsName.Bar;					-- имя SliderBar
				local cSliderBtnName = tElementsName.Btn;					-- имя SliderBtn			
				local tPosSliderBtn = Button.GetPos(cSliderBtnName);		-- позиция SliderBtn	
				local tSizeSliderBtn = Button.GetSize(cSliderBtnName);		-- размер SliderBtn	
				local tPosSliderBar = Button.GetPos(cSliderBarName);		-- позиция SliderBar	
				local tSizeSliderBar = Button.GetSize(cSliderBarName);		-- размер SliderBar	
				local m_pos = System.GetMousePosition(true);				-- текущая позиция мышки
				local tMouseOnSlider = MouseOnSlider(_cEnterName);			-- таблица положения мышки над элементами слайдера
				if (tMouseOnSlider.Btn) then								-- если мышка над SliderBtn
   	    			_lClickSliderBtn = true;								-- установка флага клика на SliderBtn
   	    			_cActiveSliderName = _cEnterName;						-- получаем имя активного слайдера
					local nOrientation = SliderEx.GetOrientation(_cActiveSliderName);	-- определяем ориентацию слайдера
					if (nOrientation == HORIZONTAL) then					-- горизонтальная ориентация слайдера
						_nMouseOffset = m_X - tPosSliderBtn.X;				-- получаем смещение мышки относительно позиции SliderBtn	
					else													-- вертикальная ориентация слайдера
						_nMouseOffset = m_Y - tPosSliderBtn.Y;				-- получаем смещение мышки относительно позиции SliderBtn	
					end
					Page.ClickObject(cSliderBtnName);						-- выполняем скрипт пользователя	
				elseif (tMouseOnSlider.Bar) then							-- нажали кнопку мышки на SliderBar	
			   	    _cActiveSliderName = _cEnterName;						-- получаем имя активного слайдера
					local nOrientation = SliderEx.GetOrientation(_cActiveSliderName);	-- определяем ориентацию слайдера
					if (nOrientation == HORIZONTAL) then					-- горизонтальная ориентация слайдера
						if (tSizeSliderBar.Width > tSizeSliderBtn.Width) then		-- если ширина SliderBar больше ширины SliderBtn
							local nX = m_pos.X - tSizeSliderBtn.Width / 2;		-- новая позиция SliderBtn
							if (nX < tPosSliderBar.X) then 						-- позиция за пределами диапазона
								nX = tPosSliderBar.X; 							-- корректировка позиции
							elseif (nX > tPosSliderBar.X + tSizeSliderBar.Width - tSizeSliderBtn.Width) then	-- позиция за пределами диапазона
								nX = tPosSliderBar.X + tSizeSliderBar.Width - tSizeSliderBtn.Width;				-- корректировка позиции
							end	
							Button.SetPos(cSliderBtnName, nX, tPosSliderBtn.Y);	-- устанавливаем слайдер в новую позицию
						end
					else													-- вертикальная ориентация слайдера
						if (tSizeSliderBar.Height > tSizeSliderBtn.Height) then	-- если высота SliderBar больше высоты SliderBtn
							local nY = m_pos.Y - tSizeSliderBtn.Height / 2;		-- новая позиция SliderBtn
							if (nY < tPosSliderBar.Y) then 						-- позиция за пределами диапазона
								nY = tPosSliderBar.Y; 							-- корректировка позиции
							elseif (nY > tPosSliderBar.Y + tSizeSliderBar.Height - tSizeSliderBtn.Height) then	-- позиция за пределами диапазона
								nY = tPosSliderBar.Y + tSizeSliderBar.Height - tSizeSliderBtn.Height;			-- корректировка позиции
							end	
							Button.SetPos(cSliderBtnName, tPosSliderBtn.X, nY);	-- устанавливаем слайдер в новую позицию
						end
					end
					Page.ClickObject(cSliderBtnName);						-- выполняем скрипт пользователя	
				end
			end
		end
	else
        _lClickSliderBtn = false;											-- сброс флага клика на SliderBtn
        _cActiveSliderName = nil;											-- сбрасываем имя активного слайдера
	end
end
--===================================================================================================================================
-- Событие On Mouse Move
function MouseMove(m_X, m_Y)
	if _lClickSliderBtn and _cActiveSliderName and System.IsKeyDown(1) then				-- если был клик на SliderBtn
		local tElementsName = SliderEx.GetElementsName(_cActiveSliderName);				-- таблица, содержащая имена элементов слайдера		
		if (tElementsName) then															-- если таблица элементов не пустая
			local cSliderBtnName = tElementsName.Btn;									-- имя SliderBtn			
			local cSliderBarName = tElementsName.Bar;									-- имя SliderBar			
			local tPos = SliderEx.GetPos(_cActiveSliderName);							-- позиция SliderBar
			local tPosSliderBtn = Button.GetPos(cSliderBtnName);						-- позиция SliderBtn	
			local tSizeSliderBtn = Button.GetSize(cSliderBtnName);						-- размер SliderBtn	
			local tSizeSliderBar = Button.GetSize(cSliderBarName);					-- размер SliderBar	
			local nLen = SliderEx.GetLength(_cActiveSliderName);						-- длина SliderBar
			local nOrientation = SliderEx.GetOrientation(_cActiveSliderName);			-- определяем ориентацию слайдера
			if (nOrientation == HORIZONTAL) then										-- горизонтальная ориентация слайдера
				if (tSizeSliderBar.Width > tSizeSliderBtn.Width) then		-- если ширина SliderBar больше ширины SliderBtn
					local nStart = tPos.X;													-- левая граница диапазона слайдера в пикселях
					local nEnd = tPos.X + nLen - tSizeSliderBtn.Width;						-- правая граница диапазона слайдера в пикселях
					if (m_X - _nMouseOffset <= nStart) then									-- если мышка за левой границей диапазона
						Button.SetPos(cSliderBtnName, nStart , tPosSliderBtn.Y);				-- устанавливаем слайдер на левую границу диапазона
					elseif (m_X - _nMouseOffset >= nEnd) then								-- если мышка за правой границей диапазона
						Button.SetPos(cSliderBtnName, nEnd , tPosSliderBtn.Y);				-- устанавливаем слайдер на правую границу диапазона
					else																	-- если мышка в пределах границ диапазона 
						Button.SetPos(cSliderBtnName, m_X - _nMouseOffset, tPosSliderBtn.Y);	-- перемещаем SliderBtn в позицию мышки
					end	
				end
			else																		-- вертикальная ориентация слайдера
				if (tSizeSliderBar.Height > tSizeSliderBtn.Height) then	-- если высота SliderBar больше высоты SliderBtn
					local nStart = tPos.Y;													-- верхняя граница диапазона слайдера в пикселях	
					local nEnd = tPos.Y + nLen - tSizeSliderBtn.Height;						-- нижняя граница диапазона слайдера в пикселях	
					if (m_Y - _nMouseOffset <= nStart) then									-- если мышка за верхней границей диапазона
						Button.SetPos(cSliderBtnName, tPosSliderBtn.X, nStart);				-- устанавливаем слайдер на верхнюю границу диапазона
					elseif (m_Y - _nMouseOffset >= nEnd) then								-- если мышка за нижней границей диапазона
						Button.SetPos(cSliderBtnName, tPosSliderBtn.X, nEnd);				-- устанавливаем слайдер на нижнюю границу диапазона
					else 																	-- если мышка в пределах границ диапазона
						Button.SetPos(cSliderBtnName, tPosSliderBtn.X, m_Y - _nMouseOffset);	-- перемещаем SliderBtn в позицию мышки
					end	
				end
			end
			Page.ClickObject(cSliderBtnName);											-- выполняем скрипт пользователя	
		end
	else
		_lClickSliderBtn = false;													-- сброс флага клика на SliderBtn
       	_cActiveSliderName = nil;													-- сбрасываем имя активного слайдера
	end
end
--===================================================================================================================================
-- Ф-ция событие OnEnter
function OnEnter(cSliderName)
	_lEnter = true;											-- флаг наезда мышки на слайдер
	_cEnterName=SliderEx.GetAlias(cSliderName);				-- имя слайдера на который наехали
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция событие OnLeave
function OnLeave(cSliderName)
	local tMouseOnSlider = MouseOnSlider(_cEnterName);		-- таблица положения мышки над элементами слайдера
	if (tMouseOnSlider.Bar or tMouseOnSlider.Btn) then		-- если мышка над SliderBar или SliderBtn
		_lEnter = true;										-- флаг наезда мышки на слайдер
		_cEnterName = SliderEx.GetAlias(cSliderName);		-- имя слайдера на который наехали
	else
		_lEnter = false;									-- сброс флага наезда мышки на слайдер
		_cEnterName = nil;									-- сброс имени слайдера на который наехали
	end
end
-------------------------------------------------------------------------------------------------------------------------------------
-- Ф-ция событие OnClick
function OnClick(cSliderName)
	local tElementsName = SliderEx.GetElementsName(cSliderName);		-- таблица, содержащая имена элементов слайдера		
	if (tElementsName) then												-- если таблица элементов не пустая
		local cSliderBarName = tElementsName.Bar;						-- имя SliderBar
		local cSliderBtnName = tElementsName.Btn;						-- имя SliderBtn
		local cSliderPrgName = tElementsName.Prg;						-- имя SliderPrg
		if (cSliderPrgName ~= "") then									-- если есть полоса прогресса
			local tImgPos = Image.GetPos(cSliderPrgName);				-- получаем позицию полосы прогресса
			local tImgSize = Image.GetSize(cSliderPrgName);				-- получаем размер полосы прогресса
			local tBtnPos = Button.GetPos(cSliderBtnName);				-- получаем позицию SliderBtn в пикселях
			local tBtnSize = Button.GetSize(cSliderBtnName);			-- получаем размер SliderBtn в пикселях
			local tBarPos = Button.GetPos(cSliderBarName);				-- получаем позицию SliderBar в пикселях
			local tBarSize = Button.GetSize(cSliderBarName);			-- получаем размер SliderBar в пикселях
			local nOrientation = SliderEx.GetOrientation(cSliderName);	-- определяем ориентацию слайдера
			if (nOrientation == HORIZONTAL) then						-- горизонтальная ориентация слайдера
				Image.SetSize(cSliderPrgName, tBtnPos.X - tImgPos.X + tBtnSize.Width/2, tImgSize.Height);	-- устанавливаем новый размер полосы прогресса
			else														-- вертикальная ориентация слайдера
				Image.SetSize(cSliderPrgName, tImgSize.Width, tBtnPos.Y - tImgPos.Y + tBtnSize.Height/2);	-- устанавливаем новый размер полосы прогресса
			end
		end
	end		
	e_Pos = SliderEx.GetSliderPos(cSliderName);
	return e_Pos
end
--===================================================================================================================================
-- Ф-ция скриптов событий слайдера
function SliderEvents()
	local tObjects = Page.EnumerateObjects();										-- таблица объектов
	if (tObjects) then																-- если есть объекты	
		for n, cObjectName in tObjects do											-- получаем имена объектов	
			if (String.Left(cObjectName, 10) == "Slider_Btn") then					-- если нужное имя
				if (Page.GetObjectType(cObjectName) == OBJECT_BUTTON) then			-- если объект является элементом слайдера
					local Script = Page.GetObjectScript(cObjectName, "On Enter");	-- получаем пользовательский скрипт из "On Enter"
					Script = "OnEnter(this);\r\n"..Script;							-- новый скрипт для "On Enter"
					Page.SetObjectScript(cObjectName, "On Enter", Script);			-- копируем новый скрипт в "On Enter"
					
					local Script = Page.GetObjectScript(cObjectName, "On Leave");	-- получаем пользовательский скрипт из "On Enter"
					Script = "OnLeave(this);\r\n"..Script;							-- новый скрипт для "On Leave"
					Page.SetObjectScript(cObjectName, "On Leave", Script);			-- копируем новый скрипт в "On Enter"

					local Script = Page.GetObjectScript(cObjectName, "On Click");	-- получаем пользовательский скрипт из "On Click"
					Script = "OnClick(this);\r\n"..Script;							-- новый скрипт для "On Click"
					Page.SetObjectScript(cObjectName, "On Click", Script);			-- копируем новый скрипт в "On click"
				end	
			elseif (String.Left(cObjectName, 10) == "Slider_Bar") then				-- если нужное имя
				if (Page.GetObjectType(cObjectName) == OBJECT_BUTTON) then			-- если объект является элементом слайдера
					local Script = Page.GetObjectScript(cObjectName, "On Enter");	-- получаем пользовательский скрипт из "On Enter"
					Script = "OnEnter(this);\r\n"..Script;							-- новый скрипт для "On Enter"
					Page.SetObjectScript(cObjectName, "On Enter", Script);			-- копируем новый скрипт в "On Enter"
					
					local Script = Page.GetObjectScript(cObjectName, "On Leave");	-- получаем пользовательский скрипт из "On Enter"
					Script = "OnLeave(this);\r\n"..Script;							-- новый скрипт для "On Leave"
					Page.SetObjectScript(cObjectName, "On Leave", Script);			-- копируем новый скрипт в "On Enter"
					
					local Script = Page.GetObjectScript(cObjectName, "On Click");	-- получаем пользовательский скрипт из "On Click"
					Script = "OnClick(this);\r\n"..Script;							-- новый скрипт для "On Click"
					Page.SetObjectScript(cObjectName, "On Click", Script);			-- копируем новый скрипт в "On click"
				end	
			end
		end
	end
end
--===================================================================================================================================
-- Ф-ция скриптов событий страниц
function PageEvents()
	tPagesName = Application.GetPages();									-- список имен страниц проекта	
	for n, cPageName in tPagesName do										-- получаем имя каждой страницы
		local Script = Application.GetPageScript(cPageName, "On Preload");	-- получаем пользовательский скрипт из "On Mouse Button"
		Script = "SliderEvents();\r\n_SliderList();\r\n"..Script;			-- новый скрипт для "On Mouse Button"
		Application.SetPageScript(cPageName, "On Preload", Script);			-- копируем новый скрипт в "On Mouse Button"
		Script = Application.GetPageScript(cPageName, "On Mouse Button");	-- получаем пользовательский скрипт из "On Mouse Button"
		Script = "MouseButton(e_Type, e_X, e_Y);\r\n"..Script;				-- новый скрипт для "On Mouse Button"
		Application.SetPageScript(cPageName, "On Mouse Button", Script);	-- копируем новый скрипт в "On Mouse Button"
		Script = Application.GetPageScript(cPageName, "On Mouse Move");		-- получаем пользовательский скрипт из "On Mouse Move"
		Script = "MouseMove(e_X, e_Y);\r\n"..Script;						-- новый скрипт для "On Mouse Move"
		Application.SetPageScript(cPageName, "On Mouse Move", Script);		-- копируем новый скрипт в "On Mouse Move"
	end
end
--===================================================================================================================================
PageEvents();	-- заполняем события страниц
