var shImg = new Image();
shImg.src = "img/sh.gif";
var shImgDown = new Image();
shImgDown.src = "img/sh.down.gif";
var shImgOver = new Image();
shImgOver.src = "img/sh.over.gif";
var shImgDownOver = new Image();
shImgDownOver.src = "img/sh.down.over.gif";

var PAGE_REGISTER = "register.php";
var undefined;
var _cookie = new Cookie();
var VoteForTooltip;

// Функция используется для выполнения действий после загрузки документа.
// Здесь выполняются обработчики окна (window)и другие действия.
function Init()
{
	// Управление поиском
	var sh = document.getElementById("SH");
	if (sh)
	{
		AddListener("click", sh, OnSearchCloseClick);
		AddListener("mouseover", sh, OnSearchCloseOver);
		AddListener("mouseout", sh, OnSearchCloseOut);
	}
	AddListener("load", window, InHeader);
}


//
// Функция обратного вызова загрузки flash-объекта operator.swf
function OnOperatorLoaded()
{
	try
	{
		if (initialCommentsCount != null && initialCommentsCount === 0 && RenderYTComments && _Video && _Video.ytid != "")
			RenderYTComments();
	}
	catch (err) { }
	DispatchEvent(User.OPERATOR_LOADED, document);
}


function OnSearchCloseClick(e)
{
	if (!e)
		e = window.event;
	if (!e)
		return;
	var target = e.srcElement;
	if (!target)
		target = e.target;
	if (!target)
		return;
	var SearchDropDown = document.getElementById("SearchDropDown");
	var SearchContainer = document.getElementById("SearchContainer");
	var Shadow1 = document.getElementById("Shadow1");
	var cookieString = "open";
	if (target.src.indexOf(".down") == -1)
	{
		target.src = "img/sh.down.over.gif";
		target.title = "Развернуть";
		if (SearchDropDown)
			SearchDropDown.style.display = "none";
		if (SearchContainer)
			SearchContainer.className = "tbl_search_down";
		if (Shadow1)
			Shadow1.style.height = (SearchContainer.offsetHeight + 1) + "px";
		cookieString = "close";
	}
	else
	{
		target.src = "img/sh.over.gif";
		target.title = "Свернуть";
		if (SearchDropDown)
			SearchDropDown.style.display = "block";
		if (SearchContainer)
			SearchContainer.className = "tbl_search";
		if (Shadow1)
			Shadow1.style.height = (SearchContainer.offsetHeight + 1) + "px";
	}
	var c = new Cookie();
	c.Set("SearchStatus", cookieString, (60 * 60 * 24 * 7));
}

function OnSearchCloseOver(e)
{
	if (!e)
		e = window.event;
	if (!e)
		return;
	var target = e.srcElement;
	if (!target)
		target = e.target;
	if (!target)
		return;
	if (target.src.indexOf(".down") != -1)
	{
		target.src = "img/sh.down.over.gif";
	}
	else
	{
		target.src = "img/sh.over.gif";
	}
}

function OnSearchCloseOut(e)
{
	if (!e)
		e = window.event;
	if (!e)
		return;
	var target = e.srcElement;
	if (!target)
		target = e.target;
	if (!target)
		return;
	if (target.src.indexOf(".down") != -1)
	{
		target.src = "img/sh.down.gif";
	}
	else
	{
		target.src = "img/sh.gif";
	}
}


function UploadInsufficientVotes()
{
	var block = document.getElementById("BlockVotes");
	if (!block)
		return;
	var blocks = block.getElementsByTagName("div");
	if (!blocks)
		return;
	var firstRowBlockCount = 0;
	var totalBlocks = 0;
	for (var i = 0; i < blocks.length; i++)
	{
		if (blocks[i].className.indexOf("preview") != -1)
		{
			if (blocks[i].offsetTop < 100)
				firstRowBlockCount++;
			totalBlocks++;
		}
	}
}


function AddListener(strEvent/* String */, sender/* Element */, callback/* Function */)
{
	if (!sender)
		return;
	if (sender.addEventListener)
		sender.addEventListener(strEvent, callback, false);
	else if (sender.attachEvent)
		sender.attachEvent("on" + strEvent, callback);
	else
		sender["on" + strEvent] = callback;
}

function RemoveListener(strEvent/* String */, sender/* Element */, callback/* Function */)
{
	if (!sender)
		return;
	if (sender.removeEventListener)
		sender.removeEventListener(strEvent, callback, false);
	else if (sender.detachEvent)
		sender.detachEvent("on" + strEvent, callback);
	else
		sender["on" + strEvent] = null;
}

function DispatchEvent(strevent/* String имена ограничены и не могут быть любого значения (см. руководство) */, sender)
{
	if (document.createEvent)
	{
		var e = document.createEvent("Events");
		e.initEvent(strevent, true, false);
	}
	else if (document.createEventObject)
	{
		var e = document.createEventObject();
	}
	else
		return;
	try
	{
		e.datatype = {};
		e.data = {};
		if (sender.dispatchEvent)
			sender.dispatchEvent(e);
		else if (sender.fireEvent)
			sender.fireEvent("on" + strevent, e);
	}
	catch (e) {	}
}


function GetInnerText(Node)
{
	if (Node.innerText)
		return Node.innerText;
	else if (Node.textContent)
		return Node.textContent;
	else if (Node.text)
		return Node.text;
	else
		return "";
}

function SetInnerText(Node, textdata)
{
	if (Node.innerText != null)
		Node.innerText = textdata;
	else if (Node.textContent != null)
		Node.textContent = textdata;
	else if (Node.text != null)
		Node.text = textdata;
}


function InitRedraw(id)
{
	var block = document.getElementById(id);
	if (!block)
		return;
	var previews = block.getElementsByTagName("div");
	if (!previews || previews.length == 0)
		return;
	var previewcount = 0;
	for (var i = 0; i < previews.length; i++)
	{
		if (previews[i].className && previews[i].className.indexOf("preview") != -1)
			previewcount++;
	}
	if (block.offsetWidth > (previewcount * User.VIDEO_PREVIEW_WIDTH))
	{
		block.style.height = "135px";
	}
}

function InvalidateShadowSize()
{
	var searchcontainer = document.getElementById("SearchContainer");
	var shadow1 = document.getElementById("Shadow1");
	if (!searchcontainer || !shadow1)
		return;
	shadow1.style.height = (searchcontainer.offsetHeight + 1) + "px";
}

function DocumentInit()
{
	try
	{
		var container = document.getElementById("body_container");
		if (container && container.offsetHeight < GetDocumentHeight())
		{
			var table = document.getElementById(MODE.BODY_ID);
			if (table)
				table.style.height = (table.offsetHeight + GetDocumentHeight() - container.offsetHeight) + "px";
		}
	}
	catch (e) { }
}

function SwitchIntoSearch()
{
	// Переключатели
	var radiobuttons = document.getElementsByName("insite");
	// Контейнер настроек поиска
	var SortParametersContainer = document.getElementById("SubSortSearch");
	if (!SortParametersContainer || !radiobuttons || radiobuttons.length < 2)
		return;
	var containercollection = SortParametersContainer.getElementsByTagName("div");
	if (!containercollection)
		return;
	// Режим поиска по YT
	if (radiobuttons[0].checked)
	{
		for (var i = 0; i < containercollection.length; i++)
		{
			if (containercollection[i].id.indexOf("site_search") != -1)
			{
				containercollection[i].style.display = "none";
				SetControlsDisabled(containercollection[i], true);
			}
			else
			{
				containercollection[i].style.display = "block";
				SetControlsDisabled(containercollection[i], false);
			}
		}
	}
	// Режим поиска по сайту
	else
	{
		for (var i = 0; i < containercollection.length; i++)
		{
			if (containercollection[i].id.indexOf("yt_search") != -1)
			{
				containercollection[i].style.display = "none";
				SetControlsDisabled(containercollection[i], true);
			}
			else
			{
				containercollection[i].style.display = "block";
				SetControlsDisabled(containercollection[i], false);
			}
		}
	}
}

function SetControlsDisabled(sender, value)
{
	if (!sender)
		return;
	if (value !== false)
		value = true;
	var inputcollection = sender.getElementsByTagName("input");
	if (inputcollection)
	{
		for (var i = 0; i < inputcollection.length; i++)
		{
			try
			{
				inputcollection[i].disabled = value;
			}
			catch(e) { }
		}
	}
	var selectcollection = sender.getElementsByTagName("select");
	if (selectcollection)
	{
		for (i = 0; i < selectcollection.length; i++)
		{
			try
			{
				selectcollection[i].disabled = value;
			}
			catch(e) { }
		}
	}
}


function WordWrap(strline, len, separator)
{
	if (!separator)
		separator = " ";
	strline = strline.replace("&nbsp;", " ");
	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а-яA-ZА-Я]/ig);
			for (var j = 0; j < otherparts.length; j++)
			{
				if (otherparts[j].length > len)
				{
					otherparts[j] = otherparts[j].replace(new RegExp("([a-zA-Zа-яА-Я0-9]{" + len + "})", "ig"), "$1" + separator);
				}
			}
			if (otherparts.length > 0)
				parts[i] = otherparts.join(separator);
		}
	}
	return parts.join(separator);
}


function LinkPastTime(PastTime)
{
	var now = new Date();
	var seconds = now.getTime() / 1000;
	var post_sec = seconds - PastTime;
	if (post_sec < 0)
		post_sec = 10;
	var minute = 60;
	var hour = 3600;
	var day = 86400;
	var week = 604800;
	var month = 2592000;
	var year = 31536000;
	var dtab = "сек.";
	var dt = 0;
	if (post_sec < 60) 
	{
		dt = Math.floor(post_sec);
	}

	if ((post_sec >= 60) && (post_sec < 3600)) 
	{
		dt = Math.floor(post_sec / minute);
		dtab = "мин.";
	}

	if (post_sec >= 3600 && post_sec < 86400) 
	{
		dt = Math.floor(post_sec / hour);
		if ((dt>=1)&&(dt<2)){ dtab='час'; }
		if ((dt>=2)&&(dt<=5)){ dtab="часа"; }
		if ((dt>=5)&&(dt<=21)){ dtab="часов"; }
		if (dt==21){ dtab="час"; }
		if (dt>21){ dtab="часа"; }
	}

	if ((post_sec >= 86400) && (post_sec < 604800)) 
	{
		dt = Math.floor(post_sec / day);
		dtab = "дн.";
	}

	if ((post_sec >= 604800)&&(post_sec < 2592000)) 
	{
		dt = Math.floor(post_sec / week);
		dtab = "нед.";
	}

	if ((post_sec >= 2592000)&&(post_sec < 31536000)) 
	{
		dt = Math.floor(post_sec / month);
		dtab = "мес.";
	}

	if (post_sec >= 31536000) 
	{
		dt = Math.floor(post_sec / year);
		if (dt < 2)
			dtab = "год";
		else if (dt >= 2 && dt <= 4)
			dtab = "года";
		else
			dtab = "лет";
	}
	return dt + " " + dtab;
}


function EditQueryString(query, parameter, value)
{
	if (query.charAt(0) == "?")
		query = query.substring(1);
	var parameteredited = false;
	var querystring = new Array();
	var parts = query.split("&");
	for (var i = 0; i < parts.length; i++)
	{
		var reg = /([^=]{1,})=([^=]{0,})/i;
		result = parts[i].match(reg);
		if ((result = parts[i].match(reg)))
		{
			if (result[1] == parameter)
			{
				if (!parameteredited)
				{
					querystring.push(result[1] + "=" + value);
					parameteredited = true;
				}
			}
			else
				querystring.push(result[1] + "=" + result[2]);
		}
	}
	if (!parameteredited)
		querystring.push(parameter + "=" + value);
	return querystring.join("&");
}


function InHeader(e)
{
	// Реклама
	var blockids = ["27960", "27957"];
	for (var b = 0; b < blockids.length; b++)
	{
		var block = document.getElementById("Teaser_Block_" + blockids[b]);
		if (block && block.firstChild)
		{
			var links = block.getElementsByTagName("a");
			if (links)
			{
				for (var i = 0; i < links.length; i++)
				{
					links[i].style.color = "";
					links[i].className = "a_teaser";
				}
			}
		}
	}
	var h1Coll = document.getElementsByTagName("h1");
	if (!h1Coll || h1Coll.length == 0)
		return;
	// Необходимо найти div, table и td
	var h1 = h1Coll[0];
	var d = null;
	var t = null;
	var td = null;
	var container = h1;
	while (container.parentNode)
	{
		if (d)
			break;
		if (!d && container.tagName.toLowerCase() == "div")
			d = container;
		if (!t && container.tagName.toLowerCase() == "table")
			t = container;
		if (!td && container.tagName.toLowerCase() == "td")
			td = container;
		container = container.parentNode;
	}
	if (!d || !t || !td)
		return;
	if (h1.offsetHeight > 26)
		td.style.width = "80px";
}


//
// Удаление ненужных тэгов
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]);
		}
	}
}


//
// Функция ищет родительский элемнт по id или class
function FindParent(sender, attributes/* Object {id, class, tagname} */, allowsender/* Boolean */)
{
	if (!sender)
		return;
	if (allowsender == null || allowsender == undefined)
		allowsender = false;
	var target = null;
	var parent = sender;
	while (parent.parentNode)
	{
		if (!allowsender)
			parent = parent.parentNode;
		allowsender = false;
		if (attributes["id"] && parent.id == attributes["id"])
		{
			target = parent;
			break;
		}
		if (attributes["class"] && parent.className)
		{
			var classes = parent.className.split(/[ ]{1,}/g);
			if (classes)
			{
				for (var i = 0; i < classes.length; i++)
					if (classes[i] == attributes["class"])
					{
						target = parent;
						break;
					}
			}
		}
		if (attributes["tagname"] && parent.tagName.toLowerCase() == attributes["tagname"].toLowerCase())
		{
			target = parent;
			break;
		}
		if (attributes["attr"] && parent.getAttribute(attributes["attr"]))
		{
			target = parent;
			break;
		}
	}
	return target;
}

function GetPlayer()
{
	var player = document.getElementById("player");
	if (!player)
		player = document.getElementsByName("player")[0];
	return player;
}

function GetOperator()
{
	var Operator = document.getElementById("Operator");
	if (!Operator)
		Operator = document.getElementsByName("Operator")[0];
	return Operator;
}

function GetAuth()
{
	var Operator = document.getElementById("AuthSwf");
	if (!Operator)
		Operator = document.getElementsByName("AuthSwf")[0];
	return Operator;
}

//
// Удаление всех глобальных переменных (переменных объекта window). Вызывается в VKLogOut
function ClearParams()
{
	window["votedThisVideo"] = -1;
	authComplete = null;
}

function ResetParams()
{
	window["votedThisVideo"] = null;
}

//
// Глобавльная функция обратного вызова
function AuthorizeCallback()
{
	// Изменение всех настроек пользователя
	User.ableAddToChannel = false;
	User.ableCreateChannel = false;
	if (window["authComplete"] && window["authComplete"] == "1")
	{
		if (window["ableAddToChannel"] && window["ableAddToChannel"] == "1")
		   User.ableAddToChannel = true;
		if (window["ableCreateChannel"] && window["ableCreateChannel"] == "1")
			User.ableCreateChannel = true;
		if (window["UserID"])
			User.uid = window["UserID"];
	}
	// Выполнение функции, специфичной для текущей страницы
	for (var pagename in AuthCallback)
	{
		if (AuthCallback[pagename]["callback"])
			AuthCallback[pagename]["callback"]();
	}
	// Выполнение глобальных действий над страницей после авторизации
	var tdColl = document.getElementsByTagName("td");
	for (var i = 0; i < tdColl.length; i++)
	{
		if (tdColl[i].className && tdColl[i].className.indexOf("td_menu") != -1)
		{
			var linkColl = tdColl[i].getElementsByTagName("a");
			if (linkColl && linkColl.length > 0)
				if (linkColl[0].getAttribute("href").indexOf("addlink.php") != -1)
				{
					if (authComplete && authComplete == "1")
					{
						linkColl[0].onclick = function() { }
					}
					else
					{
						linkColl[0].onclick = function()
						{
							window.location.href='/register.php?type=authorize&redirect=' 
								+ encodeURIComponent('addlink.php');
							return false;
						}
					}
					break;
				}
		}
	}
}

//
// Функция обратного вызова при авторизации
function CommentAuthCallback()
{
	var VotesContainer = document.getElementById("VotesContainer");
	if (VotesContainer)
	{
		// Не голосовал
		try
		{
			// Голосование за видео
			// Не голосовал
			if (!window["votedThisVideo"])
			{
				VotesContainer.rows[0].cells[0].innerHTML = '<table cellpadding="0" cellspacing="1" class="tbl_like" title="Видео нравится">'
				+ '<tr>'
					+ '<td class="td_like">'
					+ '<table cellpadding="0" cellspacing="0" hspace="0" vspace="0">'
					+ '<tr>'
						+ '<td><input type="image" src="img/like.jpg" class="like" /></td>'
						+ '<td class="pt7">Нравится</td>'
					+ '</tr>'
					+ '</table>'
					+ '</td>'
				+ '</tr>'
				+ '</table>';
				VotesContainer.rows[0].cells[2].innerHTML = '<table cellpadding="0" cellspacing="1" class="tbl_like" title="Видео не нравится">'
				+ '<tr>'
					+ '<td class="td_like">'
					+ '<input type="image" src="img/dislike.jpg" />'
					+ '</td>'
				+ '</tr>'
				+ '</table>';
			// Инициализация голосования за видео
				var voteNodes = VotesInit(VotesContainer);
				if (!User.VK.authorized || User.vkid == "")
				{
					if (voteNodes && voteNodes.length > 0)
					{
						VoteForTooltip = new Tooltip("VoteForTooltip", voteNodes[0], document.getElementById("TooltipContainer"), 150, 76);
						VoteForTooltip.AddContent(GetVoteForContent(VoteForTooltip));
					}
				}
			}
			// После "выхода"...
			else if (window["votedThisVideo"] == -1)
			{
				VotesContainer.rows[0].cells[0].innerHTML = '<a href="register.php" onclick="window.location.href=\'register.php?redirect=' + encodeURIComponent('comment.php?link=' + User.authParams["get_vote_video"]) + '\'; return false;" class="a_noline">'
				+ '<table cellpadding="0" cellspacing="1" class="tbl_like" title="Видео нравится">'
				+ '<tr>'
					+ '<td class="td_like">'
					+ '<table cellpadding="0" cellspacing="0" hspace="0" vspace="0">'
					+ '<tr>'
						+ '<td><img src="img/like.voted.jpg" class="like" border="0" /></td>'
						+ '<td class="pt7">Нравится</td>'
					+ '</tr>'
					+ '</table>'
					+ '</td>'
				+ '</tr>'
				+ '</table>'
				+ '</a>';
				VotesContainer.rows[0].cells[2].innerHTML = '<a href="register.php" class="a_noline">'
				+ '<table cellpadding="0" cellspacing="1" class="tbl_like" title="Видео не нравится">'
				+ '<tr>'
					+ '<td class="td_like">'
					+ '<img src="img/dislike.voted.jpg" border="0" />'
					+ '</td>'
				+ '</tr>'
				+ '</table>'
				+ '</a>';
			}
			// Уже проголосовал за видео
			else
			{
				VotesContainer.rows[0].cells[0].innerHTML = '<table cellpadding="0" cellspacing="1" class="tbl_like_nop" title="Вы уже голосовали за это видео">'
				+ '<tr>'
					+ '<td class="td_like">'
					+ '<table cellpadding="0" cellspacing="0" hspace="0" vspace="0">'
					+ '<tr>'
						+ '<td><img src="img/like.voted.jpg" class="like" border="0" /></td>'
						+ '<td class="pt7">Нравится</td>'
					+ '</tr>'
					+ '</table>'
					+ '</td>'
				+ '</tr>'
				+ '</table>';
				VotesContainer.rows[0].cells[2].innerHTML = '<table cellpadding="0" cellspacing="1" class="tbl_like" title="Вы уже голосовали за это видео">'
				+ '<tr>'
					+ '<td class="td_like">'
					+ '<img src="img/dislike.voted.jpg" border="0" />'
					+ '</td>'
				+ '</tr>'
				+ '</table>';
			}
		}
		catch (e) { }
	}
	//
	// Смена закладок под видео
	try
	{
		// Удаление из кэша комментариев
		if (BookmarkComment.Bookmarks["Bookmark1"])
		{
			if (BookmarkComment.Bookmarks["Bookmark1"].opened)
				BookmarkComment.Bookmarks["Bookmark1"].opened = false;
			if (BookmarkComment.Bookmarks["Bookmark1"].cache)
				BookmarkComment.Bookmarks["Bookmark1"].cache = null;
			OpenBookmark(document.getElementById("Bookmark1"));
		}
		// Удаление из кэша "Добавить в"
		if (BookmarkComment.Bookmarks["Bookmark4"])
		{
			if (BookmarkComment.Bookmarks["Bookmark4"].cache)
				BookmarkComment.Bookmarks["Bookmark4"].cache = null;
		}
		// Изменение настроек поля для комментария
		var CommentsManager = document.getElementById("CommentsManager");
		if (CommentsManager)
		{
			if (window["authComplete"] && window["authComplete"] == "1")
			{
				CommentsManager.innerHTML = '<table cellpadding="0" cellspacing="0">'
				+ '<tr>'
					+ '<td><input type="button" onclick="AddComments()" value="Добавить" class="btn_comment" /></td>'
					+ '<td class="spacer44" align="center"></td>'
					+ '<td><input type="button" onclick="ClearForm()" value="Очистить" class="btn_comment" /></td>'
				+ '</tr>'
				+ '</table>';
			}
			else
			{
				CommentsManager.innerHTML = '<table cellpadding="0" cellspacing="0">'
				+ '<tr>'
					+ '<td><input type="button" onclick="window.location.href=\'register.php\'" value="Добавить" class="btn_comment" /></td>'
					+ '<td class="spacer44" align="center"></td>'
					+ '<td><input type="button" onclick="window.location.href=\'register.php\'" value="Очистить" class="btn_comment" /></td>'
				+ '</tr>'
				+ '</table>';
			}
		}
	}
	catch(e) { }
	// Социальные блоки
	InitSocial();
}

//
// Вертикальная прокрутка документа
function GetVScroll()
{
	if (window.pageYOffset != null)
		return window.pageYOffset;
	else if (document.documentElement && document.documentElement.scrollTop != null)
		return document.documentElement.scrollTop;
	else 
		return document.body.scrollTop;
}

//
// Горизонтальная прокрутка документа
function GetHScroll()
{
	if (window.pageXOffset != null)
		return window.pageXOffset;
	else if (document.documentElement && document.documentElement.scrollLeft != null)
		return document.documentElement.scrollLeft;
	else 
		return document.body.scrollLeft;
}

//
// Размеры документа
function GetDocumentHeight()
{
	if (window.innerHeight)
		return window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	else if (document.body)
		return document.body.clientHeight;
	return 0;
}

function GetWindowWidth()
{
	if (document.documentElement && document.documentElement.scrollWidth)
		return document.documentElement.scrollWidth;
	else if (document.body.scrollWidth)
		return document.body.scrollWidth;
}

function GetWindowHeight()
{
	if (document.documentElement && document.documentElement.scrollHeight)
		return document.documentElement.scrollHeight;
	else if (document.body.scrollHeight)
		return document.body.scrollHeight;
}

//
// Сохранение настроек аккаунта
function SaveSettings(sender)
{
	if (!sender)
		return;
	sender.disabled = true;
	var table = FindParent(sender, {"tagname":"table"});
	if (!table)
		return;
	var errorContainer = document.getElementById("SettingsError");
	if (!errorContainer)
		return;
	errorContainer.getElementsByTagName("td")[0].innerHTML = "";
	errorContainer.style.display = "none";
	var inputColl = table.getElementsByTagName("input");
	if (!inputColl)
		return;
	for (var i = 0; i < inputColl.length; i++)
	{
		if (!inputColl[i].getAttribute("issettings"))
			continue;
		if (!inputColl[i].id)
			continue;
		if (!User[inputColl[i].id.toUpperCase()])
			continue;
		if (inputColl[i].getAttribute("type") && inputColl[i].getAttribute("type").toLowerCase() == "checkbox")
		{
			if (inputColl[i].checked)
				User.SetSettings(User[inputColl[i].id.toUpperCase()]);
			else
				User.ClearSettings(User[inputColl[i].id.toUpperCase()]);
		}
	}
	if (window["currentSettings"])
		window["currentSettings"] = null;
	APPResponse("setUserSettings", {"settings":User.settings}, OnSettingsSaved);
	function OnSettingsSaved(r)
	{
		sender.disabled = false;
		if (r && r.settings != null)
		{
			errorContainer.style.display = "block";
			errorContainer.getElementsByTagName("td")[0].innerHTML = "Настройки сохранены";
		}
	}
}

//
// Функция разбивает строку и выбирает значения headers
function ParseHeaders(response)
{
	if (response.indexOf("<headers>") != -1)
	{
		var matchresult = response.match(/<headers>([^<>]{1,})<\/headers>/);
		if (matchresult && matchresult.length > 1)
		{
			response = response.replace(matchresult[0], "");
			var headersHTML = matchresult[1].split(/&/g);
			for (var i = 0; i < headersHTML.length; i++)
			{
				var values = headersHTML[i].split("=");
				if (values.length > 1)
					window[values[0]] = values[1];
			}
		}
	}
	return response;
}

//
// Функция вызывается, когда YT-плеер загружен
function onYouTubePlayerReady()
{
	var p = GetPlayer();
	if (!p)
		return;
	p.playVideo();
	p.addEventListener("onStateChange", "OnStateChange");
}

function OnStateChange(e)
{
	var v = _Video;
	if (e == 1 && v.rewindtimer)
		window.clearTimeout(v.rewindtimer);
	// Конец просмотра
	if (e == 0)
		DisplayCoolPanel();
	// Пауза, но не перемотка
	else if (e == 2)
		v.rewindtimer = window.setTimeout(DisplayCoolPanel, 200);
}

function InitLinkLocation()
{
	// Добавляем обработчики нажатия на ссылки с атрибутами directhref
	var linkColl = document.getElementsByTagName("a");
	for (var i = 0; i < linkColl.length; i++)
	{
		if (!linkColl[i].getAttribute("primaryhref"))
			SetLinkLocation(linkColl[i]);
	}
}

function SetLinkLocation(sender)
{
	if (sender.getAttribute("directhref"))
	{
		sender.setAttribute("primaryhref", sender.getAttribute("href"));
		sender.setAttribute("href", sender.getAttribute("directhref"));
		sender.setAttribute("target", "_blank");
	}
}

function GetPageName()
{
	var path = window.location.pathname;
	var pathparts = path.split(/[\/\\]/g);
	if (pathparts && pathparts.length > 0)
		return pathparts[pathparts.length - 1];
	return "";
}

function GetQuery()
{
	var result = {};
	var query = window.location.search;
	if (query.charAt(0) == "?")
		query = query.substring(1);
	var queryparts = query.split("&");
	if (queryparts)
	{
		for (var i = 0; i < queryparts.length; i++)
		{
			var subquery = queryparts[i].split("=");
			if (subquery && subquery.length > 1)
				result[subquery[0]] = subquery[1];
		}
	}
	return result;
}

// Если страница register.php и не авторизация, возвращает false
function Redirectable()
{
	if (User.IsAuthorized())
		return false;
	var authform = document.getElementById("authenticationform");
	var nonauth = true;
	var hiddenfield;
	var collinput = document.getElementsByTagName("input");
	if (collinput)
	{
		for (var i = 0; i < collinput.length; i++)
		{
			if (!collinput[i].getAttribute("name") || !collinput[i].getAttribute("type"))
				continue;
			if (collinput[i].getAttribute("name").toLowerCase() != "type" || collinput[i].getAttribute("type").toLowerCase() != "hidden")
				continue;
			hiddenfield = collinput[i];
			break;
		}
	}
	if (GetPageName() == PAGE_REGISTER && hiddenfield && hiddenfield.value != "authorize")
		nonauth = false;
	if (!authform && nonauth)
		return true;
	return false;
}

function RedrawAccount()
{
	var b = document.getElementsByTagName("div");
	if (!b)
		return;
	var bs = [];
	var maxh = 0;
	for (var i = 0; i < b.length; i++)
	{
		if (!b[i].className || b[i].className.indexOf("account") == -1)
			continue;
		bs.push(b[i]);
		if (b[i].offsetHeight > maxh)
			maxh = b[i].offsetHeight;
	}
	for (i = 0; i < bs.length; i++)
	{
		bs[i].getElementsByTagName("table")[0].style.height = maxh + "px";
		
	}
}

function MarkIt(sender)
{
	if (!sender)
		return;
	var t = document.createElement("table");
	t.setAttribute("cellpadding", "0");
	t.setAttribute("cellspacing", "0");
	t.insertRow(0);
	var cell1 = t.rows[0].insertCell(0);
	var cell2 = t.rows[0].insertCell(1);
	cell2.style.width = "4px";
	cell2 = t.rows[0].insertCell(2);
	sender.parentNode.replaceChild(t, sender);
	cell1.appendChild(sender);
	cell2.innerHTML = '<img src="img/tick1.gif"/>';
}

function GetOffset(s)
{
	if (!s)
		return;
	var o = {"left":0, "top":0};
	while (s.offsetParent)
	{
		o.left += s.offsetLeft;
		o.top += s.offsetTop;
		s = s.offsetParent;
	}
	return o;
}

function RenderEmail(adr)
{
	var h = window.location.host;
	if (h.indexOf("www.") == 0)
		h = h.substring(4);
	var u = adr + "@" + h;
	document.write('<a href="mailto:' + u + '" class="a_video">' + u + '</a>');
}

function InArray(arr, val)
{
	for (var i = 0; i < arr.length; i++)
		if (arr[i] == val)
			return true;
	return false;
}

function FindChild(s, att/* Один или несколько атрибутов, tagname - обязательный {id, cls, tagname, attr} */)
{
	if (!att.tagname || !s)
		return;
	var ch = s.getElementsByTagName(att.tagname);
	for (i = 0; i < ch.length; i++)
	{
		var c = ch[i];
		if (att.id && c.getAttribute("id") != att.id)
			continue;
		if (att.cls && c.className.indexOf(att.cls) == -1)
			continue;
		if (att.attr && !c.getAttribute(att.attr))
			continue;
		return c;
	}
	return null;
}

function GetVideoData(s)
{
	var r = FindParent(s, {attr:"vid"});
	if (!r)
		return null;
	var o = {};
	var a = r.getElementsByTagName("a");
	for (i = 0; i < a.length; i++)
	{
		if (a[i].className != "a_title")
			continue;
		o.title = GetInnerText(a[i]);
	}
	o.vid = parseInt(r.getAttribute("vid"));
	return o;
}

function GetScrollOffset()
{
	var offset = {left:0};
	if (window.pageXOffset != null) 
		offset.left = window.pageXOffset;
	else if (document.documentElement && document.documentElement.scrollLeft != null)
		offset.left = document.documentElement.scrollLeft;
	else if (document.body && document.body.scrollLeft != null)
		offset.left = document.body.scrollLeft;
	return offset;
}

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


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