
var m_Timers = new Array();


function ChangeSelectStyle(Node)
{
	Node.className = "main";
	if (Node.name)
	{
		if (Node.name.toLowerCase() == "cat")
		{
			Node.options[0].text = "Все категории";
		}
		else if (Node.name.toLowerCase() == "sort")
		{
			if (Node.options[0].value == -1)
				Node.removeChild(Node.options[0]);
		}
	}
}


function DisplayCategories()
{
	var CategoriesContainer = document.getElementById('BlockCategories');
	(CategoriesContainer.style.display == 'none') 
		? CategoriesContainer.style.display = "block"
		: CategoriesContainer.style.display = "none";
}


function ValidateDocumentWidth()
{
	if (!screen.width)
		return;
		
	for (i = 1; i < 20; i++)
	{
		var	Node = document.getElementById("BodyTable" + i.toString());
		if (Node)
		{
			if (screen.width > 1280)
				Node.width = "1280";
		}
		else
		{
			break;	
		}
	}
}

// Инициализация формы для быстрого "входа" пользователя //
function InitEnter()
{
	try
	{
		if ((nWidth = GetWindowWidth()) && (nHeight = GetWindowWidth()))
		{
			var EnterNode = document.getElementById("BlockEnter");
			if (EnterNode)
			{
				EnterNode.style.display = "block";
				EnterNode.style.position = "absolute";
				EnterNode.style.left = ((GetWindowWidth() - 450) / 2) + "px";
				EnterNode.style.top = "0px";
				
				// Устанавливаем фокус на поле Логин //
				document.getElementById("login").focus();
				
				// В ранних версиях IE высота задается без учета рамки, что приводит
				// к неверному отображению элементов, и, как следствие, поле становится 
				// равным по высоте 302 пкс вместо 300 пкс.
				
				var tblContents = document.getElementById("BlockEnterLoginContents");
				divShadow = document.getElementById("BlockEnterShadow");
				
				if (tblContents && tblContents.offsetHeight && tblContents.offsetHeight > 300)
				{
					divShadow.style.top = "104px";
					divShadow.style.height = "301px";
				}
				if (tblContents && tblContents.offsetWidth && tblContents.offsetWidth > 450)
				{
					divShadow.style.left = "4px";
					divShadow.style.width = "451px";
				}
				
				return;
			}
		}
	}
	catch (e) 
	{
		window.location = strOldLinkEnterText;
	}
	
	window.location	= "register.php?type=authorize";
}

function CloseEnter()
{
	try
	{
		var EnterNode = document.getElementById("BlockEnter");
		if (EnterNode)
		{
			EnterNode.style.position = "absolute";
			EnterNode.style.display = "none";
		}
	}
	catch (e) { }
}

function GetWindowWidth()
{
	if (self.innerWidth) 
		return self.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth)
		return document.documentElement.clientWidth;
	else if (document.body)
		return document.body.clientWidth;
		
	return 0;
}

function GetWindowHeight()
{
	if (self.innerHeight) 
		return self.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	else if (document.body)
		return document.body.clientHeight;
		
	return 0;
}

var nIndex = 0;

function DisplayLicense()
{
	var BlockLicense = document.getElementById("BlockLicense");
	if (BlockLicense)
	{
		nIndex = 0;
		if (BlockLicense.style.display == "none")
		{
			BlockLicense.style.display = "block";
			m_Timers[0] = setInterval("AnimateBlock(BlockLicense, 10, 0)", 10);
		}
		else
		{
			m_Timers[0] = setInterval("AnimateBlock(BlockLicense, -10, 0)", 10);
		}
	}
}

var bIgnoreScroll = true;

function DisplayComment()
{
	bIgnoreScroll = false;
	if (m_Timers[0])
		clearInterval(m_Timers[0]);
	
	var BlockComment = document.getElementById("BlockComment");
	if (BlockComment)
	{
		nIndex = 0;
		if (BlockComment.style.display == "none")
		{
			BlockComment.style.display = "block";
			m_Timers[0] = setInterval("AnimateBlock('" + BlockComment.id + "', 10, 0)", 10);
		}
		else
		{
			m_Timers[0] = setInterval("AnimateBlock('" + BlockComment.id + "', -10, 0)", 10);
		}
	}
}

///////////////////////////////////////////////////////////////////////
// Анимация блока													 //
///////////////////////////////////////////////////////////////////////
function AnimateBlock(BlockElementOrID, nHeight, nTimer)
{
	var Block = null;
	var bOpening = true;
	
	if (typeof(BlockElementOrID) == typeof("string"))
		Block = document.getElementById(BlockElementOrID);
	else
		Block = BlockElementOrID;
	
	if (Block && nHeight != 0)
	{
		// Если задан параметр bIgnoreScroll - изменение размеров слоя в зависимости	//
		// от его высоты и наличия прокрутки											//
		try
		{
			if (nHeight > 0 && !bIgnoreScroll)
			{
				Block.scrollTop = 1;
				if (Block.scrollTop == 0)
				{
					nHeight = 0;
				}
				else
				{
					Block.scrollTop = 0;
				}
			}
			
			nIndex++;
			var nBlockHeight = parseInt(Block.style.height);
			if (nHeight > 0)
			{
				if (!bIgnoreScroll || (nBlockHeight < 250 && nIndex < 100))
				{
					Block.style.height = nBlockHeight + nHeight + "px";
					return;
				}
			}
			else if (nHeight < 0)
			{
				if (nBlockHeight > (-1 * nHeight) && nIndex < 100)
				{
					Block.style.height = nBlockHeight + nHeight + "px";
					return;
				}
				else
				{
					Block.style.height = "0px";
					Block.style.display = "none";
					if (Block.style.overflow != "scroll")
						Block.style.overflow = "hidden";
					bOpening = false;
				}
			}
		}
		catch (e) 
		{ 
			// TO DO
		}
		
		if (m_Timers[nTimer])
			clearInterval(m_Timers[nTimer]);

		if (bOpening)
		{
			var regex = /\D+/;
			AnimationUserCallback(BlockElementOrID.replace(regex, ""));
		}
		
		bIgnoreScroll = true;
	}
}

/////////////////////////////////////////
// Работа с информацией о пользователе //
/////////////////////////////////////////
var nOldID = 0;
var bResult = false;

// Список открытых (считанных с сервера) блоков с информацией //
var m_UserBlocksOpened = new Array();

function DoUserRequest(strURL, nID) 
{
	bIgnoreScroll = false;
	nIndex = 0;
	
	var UserRequest = GetRequest();
	bResult = false;
	
	// Конкатенируемый ответ от сервера //
	var strResponseText = "";
	
	try
	{
		var BlockHolder = document.getElementById("UserInfoHolder" + nID);
		var LoadingImg = document.getElementById("Loading" + nID);
		var BlockHolderOld = document.getElementById("UserInfoHolder" + nOldID);
		var LoadingImgOld = document.getElementById("Loading" + nOldID);
		clearInterval(m_Timers[nID]);
		clearInterval(m_Timers[nOldID]);
		
		///////////////////////////////////////////////
		// Если блок открыт, то просто закрываем его //
		///////////////////////////////////////////////
		if (BlockHolderOld)
		{
			m_Timers[nOldID] = setInterval("AnimateBlock('" + BlockHolderOld.id + "', -20, " + nOldID + ")", 10);
			
			if (LoadingImgOld)
			{
				LoadingImgOld.className = "img_loaded";
			}
			
			// Скрытие маски //
			var MaskNode = document.getElementById("MaskPlaceHolder" + nOldID);
			if (MaskNode)
				MaskNode.style.display = "none";
			var MovieNode = document.getElementById("MoviePlaceHolder" + nOldID);
			if (MovieNode)
				MovieNode.style.display = "none";
			
			if (nOldID == nID)
				nOldID = -1;
		}

		///////////////////////////////////////////////
		// Открытие нового блока - делаем веб-запрос //
		///////////////////////////////////////////////
		if (UserRequest != null && nOldID != -1)
		{
			nOldID = nID;
			
			////////////////////////////////////////////////////////
			// Если блок был открыт ранее, то не делаем веб-запрос//
			////////////////////////////////////////////////////////
			if (m_UserBlocksOpened[nID])
			{
				BlockHolder.style.display = "block";
				m_Timers[nID] = setInterval("AnimateBlock('" + BlockHolder.id + "', 10, " + nID + ")", 10);	
			}
			
			////////////////////////////////////////
			// GET-запрос (открытие нового блока) //
			////////////////////////////////////////
			else
			{
				// Отображаем иконку загрузки информации //
				if (LoadingImg)
				{
					LoadingImg.className = "img_loading";
				}
				
				UserRequest.open("GET", strURL, true);
				UserRequest.onreadystatechange = 
				function ()
				{
					// В FireFox при первом ответе получается пустой ответ, 	//
					// не содержащий HTML, поэтому производим проверку 			//
					// на наличие текста в ответе								//
					// UserRequest.readyState == 4 (Complete)					//
					
					if (UserRequest.readyState == 4)
					{
						if (UserRequest.status == 200 && !bResult)
						{
							strResponseText += UserRequest.responseText;
							
							if (strResponseText.indexOf(m_strPostBackTag) != -1)
							{
								bResult = true;
	
								// Открытие блока //
								if (BlockHolder)
								{
									BlockHolder.innerHTML = UserRequest.responseText;
									
									if (LoadingImg)
									{
										LoadingImg.className = "img_loaded";
									}
									
									BlockHolder.style.display = "block";
									m_UserBlocksOpened[nID] = true;
									
									m_Timers[nID] = setInterval("AnimateBlock('" + BlockHolder.id + "', 10, " + nID + ")", 10);
									
								}
							}
							
						}
					}
				}
				UserRequest.setRequestHeader("Content-Type", "text/html; charset=windows-1251");
				UserRequest.send(null);
			}
			
		}
		
	}
	catch (e)
	{
		// TO DO
	}
	finally
	{
		if (nOldID == -1)
			nOldID = 0;
	}
}

///////////////////////////////////////////////////////////////////////
// Событие, вызываемое при успешном завершении анимации AnimateBlock //
///////////////////////////////////////////////////////////////////////
function AnimationUserCallback(nID)
{
	// Открытие маски //
	var MaskNode = document.getElementById("MaskPlaceHolder" + nID);
	if (MaskNode)
		MaskNode.style.display = "block";
	var MovieNode = document.getElementById("MoviePlaceHolder" + nID);
	if (MovieNode)
		MovieNode.style.display = "block";
}

/////////////////////////////
// Удаление ненужных тэгов //
/////////////////////////////
function ClearRutubeTags()
{
	var Root = document.getElementById("PlayerPlaceHolder");
	
	if (Root)
	{
		var coll = Root.getElementsByTagName("table");
		if (coll.length > 0)
		{
			Root.removeChild(coll[0]);
		}
		var coll = Root.getElementsByTagName("h2");
		if (coll.length > 0)
		{
			Root.removeChild(coll[0]);
		}
	}
}

//////////////////////////////////////////////////////////
// Переключение между видами поиска						//
//////////////////////////////////////////////////////////

// Список значений текста ссылки поиска //
var m_LinkNodeTextArray = new Array();

// Значения свойства title ссылки //
var m_LinkNodeTitleArray = new Array();

// Статус текущего поиска //
var m_nCurrentSearchState = 0;

function SwitchSearchMode()
{
	var LinkNode = document.getElementById("SearchLinkNode");
	var strLinkText = LinkNode.innerHTML;
	var SearchTextField = document.getElementById("SearchTextField");
	var SearchHelpSite = document.getElementById("SearchHelpSite");
	var SearchHelpStandart = document.getElementById("SearchHelpStandart");
	var SearchModeHolderSite = document.getElementById("SearchModeHolderSite");

	var SearchModeHolder = document.getElementById("SearchModeHolderStandard");
	
	if (SearchModeHolder && LinkNode && SearchTextField && SearchModeHolderSite)
	{
		var nOldState = m_nCurrentSearchState;

		if (m_LinkNodeTitleArray[nOldState] == "")
			m_LinkNodeTitleArray[nOldState] = LinkNode.title;
		if (m_LinkNodeTextArray[nOldState] == "")
			m_LinkNodeTextArray[nOldState] = LinkNode.innerHTML;
		
		m_nCurrentSearchState = (m_nCurrentSearchState < (m_LinkNodeTitleArray.length - 1)) ? (m_nCurrentSearchState + 1) : 0;
			
		// Свойство title ссылки //
		if (m_LinkNodeTitleArray[m_nCurrentSearchState] && m_LinkNodeTextArray[m_nCurrentSearchState])
		{
			LinkNode.title = m_LinkNodeTitleArray[m_nCurrentSearchState];
			LinkNode.innerHTML = m_LinkNodeTextArray[m_nCurrentSearchState];
		}
		
		// Переключаемся в режим поиска Яндекс //
		if (SearchModeHolder.style.display != "none")
		{
			SearchModeHolder.style.display = "none";
			SearchHelpStandart.style.display = "block";
			SearchModeHolderSite.style.display = "block";
			SearchHelpSite.style.display = "none";
			SearchTextField.name = "query";
		}
		
		// Переключаемся в стандартный режим поиска //
		else
		{
			SearchModeHolder.style.display = "block";
			SearchHelpStandart.style.display = "none";
			SearchModeHolderSite.style.display = "none";
			SearchHelpSite.style.display = "block";
			SearchTextField.name = "s";		
		}
	}
}

//////////////////////////////////////////////////////////
// перерисовка блоки с поиском по тексту				//
//////////////////////////////////////////////////////////
var SearchBlockOpens = 0;
var SearchBlockTimer = null;

function RedrawSiteSearch(strBlockId)
{
	var SearchBlock = document.getElementById(strBlockId);
	if (SearchBlock)
	{
		if (SearchBlockTimer)
			clearInterval(SearchBlockTimer);
			
		SearchBlockOpens++;
			
		if (false/*SearchBlock.firstChild.contentWindow.document*/)
		{
			var strHTML = SearchBlock.firstChild.contentWindow.document.innerHTML.toLowerCase();
			
			
			if (strHTML.indexOf("</html>") != -1)
			{
				SearchBlockOpens = 1000;
				
				// Вырезаем ненужные тэги //
				var gerex = new RegExp("<\/?html>", "gi");
				strHTML = strHTML.replace(regex, "");
			}
		}
		
		if (SearchBlockOpens < 7)
		{		
			SearchBlockTimer = setInterval("RedrawSiteSearch('" + strBlockId + "')", 300);
		}
		
		else
		{
			//alert(SearchBlock.firstChild.contentWindow.document);
		}
		
	}
}

//////////////////////////////////////////////////////////////////////////////////////
// Отображение кода ссылки (видео)													//
//////////////////////////////////////////////////////////////////////////////////////
function DisplayLinkCode()
{
	var LinkHolder = document.getElementById("LinkCodePlaceHolder");
	if (LinkHolder)
	{
		if (LinkHolder.style.display.toLowerCase() == "none")
		{
			LinkHolder.style.display = "block";
		}
		else
		{
			LinkHolder.style.display = "none";
		}
	}
}

//////////////////////////////////////////////////////////////////////////////////////
// Функция используется для получения GET-параметра "v"								//
// при просмотре и добавлении видео 												//
//////////////////////////////////////////////////////////////////////////////////////
function GetRutubeIdFromTrack()
{
	var strMovieV = "";
	
	if (track && track.playerLink)
	{
		var LinkData = track.playerLink.split("/");
		if (LinkData.length > 0)
			strMovieV = LinkData[LinkData.length - 1];
		else
			strMovieV = track.playerLink;
		
		// Действия над строкой, связанные с возможными ошибками и символами 			//
		// Избавляемся от формата наподобие 1e9b268ae038e89f9d9b0b56368afcdf?api=true 	//
		if (strMovieV.match(/\W/))
		{
			var regex = new RegExp("\\w{20,}", "ig");
			var strTestId = strMovieV.match(regex);
			
			regex = new RegExp("\\W.+", "ig");
			strMovieV = strMovieV.replace(regex, "");
			
			if (strTestId != strMovieV)
				strMovieV = strTestId;
		}
	}
	
	return strMovieV;
}

//////////////////////////////////////////////////////////////////////////////////////
// Функция заполняет значение поискового параметра в поле поиска, и устанавливает	//
// курсор в нужное место для ввода текста 											//
//////////////////////////////////////////////////////////////////////////////////////
function SetSearchParam(strParam)
{
	var inputSearch = document.getElementById("SearchTextField");
	if (inputSearch)
	{
		inputSearch.value = "[" + strParam + "]=[]";
		
		// Пока просто передвигаем курсор в конец поля //
		inputSearch.focus();		
		inputSearch.value += "";
	
		// Пытаемся переместить курсор в позицию для заполнения значения параметра //
		try
		{
			inputSearch.select();
			var sel = document.selection.createRange(); 
			sel.moveEnd('character', -1);
			sel.moveStart('character', sel.text.length);
			sel.select();
		}
		catch (e) { }
	}
}


function WordWrap(strline, len, separator)
{
	var parts = strline.split(/\s/g);
	for (var i = 0; i < parts.length; i++)
	{
		if (parts[i].length > len)
		{
			var otherparts = parts[i].split(/[^a-z0-9а-я]/ig);
			for (var j = 0; j < otherparts.length; j++)
			{
				if (otherparts[j].length > len)
				{
					otherparts[j] = otherparts[j].replace(new RegExp("(\\w{" + len + "})", "ig"), "$1 ");
				}
			}
			if (otherparts.length > 0)
				parts[i] = otherparts.join(" ");
		}
	}
	return parts.join(" ");
}