var undefined;

function LogIn(request)
{
	var requestparams = [];
	window.scrollTo(0, 0);
	if (request)
		for (var param in request)
			requestparams.push(param + ":'" + request[param] + "'");
	var AuthContainer = document.getElementById("AuthContainer");
	if (!AuthContainer)
	{
		AuthContainer = document.createElement("div");
		AuthContainer.setAttribute("id", "AuthContainer");
		AuthContainer.innerHTML = 
  '<div id="AuthShader" class="translucent35"></div>'
+ '<div id="BlockEnter">'
+ '<table cellpadding="0" cellspacing="0" align="left">'
+ '<tr>'
	+ '<td style="position:relative">'
	+ '<div id="BlockEnterShadow" class="translucent">&nbsp;</div>'
	+ '<table id="BlockEnterLoginContents" cellpadding="0" cellspacing="0" width="450" class="auth1">'
	+ '<tr>'
		+ '<td align="left" valign="top">'
		+ '<form method="post" action="" name="login_form" onsubmit="return AuthorizeSite({' + requestparams.join(", ") + '})">'
		+ '<table cellpadding="0" cellspacing="0" width="100%">'
		+ '<tr>'
			+ '<td align="right" class="pr10"><img class="pointer" src="img/icon.close.gif" onclick="CloseAuthWnd()" title="Закрыть окно" /></td>'
		+ '</tr>'
		+ '<tr><td class="divider13"></td></tr>'
		+ '<tr><td class="line1"></td></tr>'
		+ '<tr>'
			+ '<td align="left" class="pl30 auth2"><h4>Авторизация</h4></td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td class="pl30 auth3">'
			+ '<table cellpadding="0" cellspacing="1" class="block_error" style="display:none">'
			+ '<tr>'
				+ '<td class="error_msg"></td>'
			+ '</tr>'
			+ '</table>'
			+ '</td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td valign="top" class="pl30 auth3">'
			+ '<table cellpadding="0" cellspacing="0" width="100%" class="auth2">'
			+ '<tr>'
				+ '<td class="login">E-mail или логин</td>'
				+ '<td class="spacer15"></td>'
				+ '<td><input type="text" id="login" name="login" class="main" maxlength="250" style="width:190px"></td>'
			+ '</tr>'
			+ '<tr><td colspan="2" class="divider8"></td></tr>'
			+ '<tr>'
				+ '<td class="login">Пароль</td>'
				+ '<td></td>'
				+ '<td><input type="password" id="pw" name="pw" class="main" maxlength="250" style="width:190px"></td>'
			+ '</tr>'
			+ '<tr><td colspan="2" class="divider8"></td></tr>'
			+ '<tr>'
				+ '<td></td>'
				+ '<td></td>'
				+ '<td>'
				+ '<table cellpadding="0" cellspacing="0">'
				+ '<tr>'
					+ '<td class="pr5"><input type="checkbox" class="check" name="remember" id="remember"></td>'
					+ '<td><label for="remember" class="login lbl">Запомнить меня</label></td>'
				+ '</tr>'
				+ '</table>'
				+ '</td>'
			+ '</tr>'
			+ '<tr><td class="divider8"></td></tr>'
			+ '</table>'
			+ '</td>'
		+ '</tr>'
		+ '<tr><td class="line1"></td></tr>'
		+ '<tr><td class="divider13"></td></tr>'
		+ '<tr>'
			+ '<td align="left" class="pl30">'
			+ '<table cellpadding="0" cellspacing="0">'
			+ '<tr>'
				+ '<td class="spacer100"><input type="submit" value="Войти" class="sbm_enter" /></td>'
				+ '<td><img id="AuthLoading" style="display:none" src="img/loading.gray.gif" width="26" height="26" /></td>'
			+ '</tr>'
			+ '</table>'
			+ '</td>'
		+ '</tr>'
		+ '</table>'
		+ '</form>'
		+ '</td>'
	+ '</tr>'
	+ '</table>'
	+ '</td>'
+ '</tr>'
+ '</table>'
+ '</div>';
		if (!document.body)
			return;
		document.body.appendChild(AuthContainer);
	}
	if (!AuthContainer)
		return;
	var inputcoll = AuthContainer.getElementsByTagName("input");
	if (inputcoll)
	{
		for (var i = 0; i < inputcoll.length; i++)
		{
			if (inputcoll[i].name)
			{
				if (inputcoll[i].name == "login" || inputcoll[i].name == "pw")
					inputcoll[i].value = "";
				else if (inputcoll[i].name == "remember" && inputcoll[i].type && inputcoll[i].type.toLowerCase() == "checkbox")
					inputcoll[i].checked = false;
			}
		}
	}
	// Скрываем плеер
	var player = GetPlayer();
	if (player)
		player.style.display = "none";
	AuthContainer.style.display = "block";
	var AuthShader = document.getElementById("AuthShader");
	if (!AuthShader)
		return;
	AuthShader.style.width = Math.max(GetDocumentWidth(), GetWindowWidth()) + "px";
	AuthShader.style.height = Math.max(GetDocumentHeight(), GetWindowHeight()) + "px";
	var WndAuth = document.getElementById("BlockEnter");
	if (!WndAuth)
		return;
	WndAuth.style.left = ((GetClientWidth() - 450) / 2 + GetScrollOffset().left) + "px";
	WndAuth.style.top = "0px";
	// Установка фокуса ввода на поле "Логин"
	try
	{
		document.getElementById("login").focus();
	}
	catch (e) { }
}


function CloseAuthWnd()
{
	// Отображаем плеер
	var player = GetPlayer();
	if (player)
		player.style.display = "block";
	var AuthContainer = document.getElementById("AuthContainer");
	if (AuthContainer)
		AuthContainer.style.display = "none";
}


function AuthorizeSite(request)
{
	try
	{
		var AuthLoading = document.getElementById("AuthLoading");
		if (AuthLoading)
			AuthLoading.style.display = "block";
		var errorContainer;
		var errorTable;
		var BlockEnterLoginContents = document.getElementById("BlockEnterLoginContents");
		if (BlockEnterLoginContents)
		{
			var tdColl = BlockEnterLoginContents.getElementsByTagName("td");
			if (tdColl)
				for (var i = 0; i < tdColl.length; i++)
					if (tdColl[i].className && tdColl[i].className.indexOf("error_msg") != -1)
					{
						errorContainer = tdColl[i];
						break;
					}
		}
		if (errorContainer)
			errorTable = FindParent(errorContainer, {"tagname":"table"});
		if (errorTable)
			errorTable.style.display = "none";
		var login = document.getElementById("login");
		var pw = document.getElementById("pw");
		var remember = document.getElementById("remember");
		if (!login || !pw || !remember)
			return;
		var logintext = login.value;
		var pwtext = pw.value;
		var params = ["login=" + logintext, "pw=" + pwtext];
		if (remember.checked)
			params.push("remember=1");
		var _unite = false;
		if (request && request.unite)
		{
			params.push("unite=1");
			_unite = true;
		}
		var request = GetRequest();
		if (request)
		{
			request.onreadystatechange = function()
			{
				if (request.readyState == 4 && request.status == 200)
				{
					var authform = document.getElementById("authenticationform");
					if (authform || _unite)
					{
						ResetParams();
						window["authWSError"] = 0;
						var response = ParseHeaders(request.responseText);
						var AuthLoading = document.getElementById("AuthLoading");
						if (AuthLoading)
							AuthLoading.style.display = "none";
						if (window["authWSError"] && window["authWSError"] != User.AUTH_OK)
						{
							if (errorTable)
								errorTable.style.display = "block";
							if (errorContainer && window["authWSError"] == User.AUTH_ERR_LOGIN_OR_PW)
								errorContainer.innerHTML = "Неверный логин (или e-mail) или пароль";
							var pw = document.getElementById("pw");
							if (pw)
								pw.value = "";
						}
						else if (window["authComplete"] && window["authComplete"] == "1")
						{
							CloseAuthWnd();
							AuthorizeCallback();
							if (authform)
								authform.innerHTML = response;
							var unite_message = document.getElementById("unite_message");
							if (unite_message)
								unite_message.style.display = "none";
						}
					}
				}
			}
		}
		var url = "webservice.php?m=authorizeSite&js_render_headers=1";
		if (User.authParams["get_vote_video"])
			url += "&get_vote_video=" + User.authParams["get_vote_video"];
		if (User.authParams["get_favourite"])
			url += "&get_favourite=" + User.authParams["get_favourite"];
		url += "&rnd=" + Math.ceil(Math.random() * 100000000) + "&" + params.join("&");
		request.open("GET", url);
		request.send(null);
	}
	catch (e) { }
	return false;
}


function SiteLogOut()
{
	var request = GetRequest();
	User.Site.authorized = false;
	if (request)
	{
		request.onreadystatechange = function()
		{
			if (request.readyState == 4 && request.status == 200)
			{
				var authform = document.getElementById("authenticationform");
				if (authform)
					authform.innerHTML = request.responseText;
				ClearParams();
				AuthorizeCallback();
			}
		}
	}
	request.open("GET", "webservice.php?m=logout&site=1&rnd=" + Math.ceil(Math.random() * 100000000));
	request.send(null);
	return false;
}


//
// Функции для работы с окном представления

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


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 GetDocumentWidth()
{
	if (document.documentElement.scrollWidth)
		return document.documentElement.scrollWidth;
	else if (document.body.scrollWidth)
		return document.body.scrollWidth;
	return 0;
}


function GetDocumentHeight()
{
	if (document.documentElement.scrollHeight)
		return document.documentElement.scrollHeight;
	else if (document.body.scrollHeight)
		return document.body.scrollHeight;
	return 0;
}


function SwitchButtonView()
{
	try
	{
		var novk = document.getElementById("novk");
		if (novk.checked)
		{
			document.getElementById("auth_by_social").style.display = "none";
			document.getElementById("auth_by_site").style.display = "block";
		}
		else
		{
			document.getElementById("auth_by_social").style.display = "block";
			document.getElementById("auth_by_site").style.display = "none";
		}
	}
	catch(e) {}
}

function DeleteAvatar(ButtonNode)
{
	if (!ButtonNode)
		return;
	if (!window.confirm("Вы действительно хотите удалить аватар?"))
		return;
	var request = GetRequest();
	if (!request)
		return;
	request.onreadystatechange = function()
	{
		if (request.readyState == 4 && request.status == 200)
		{
			var response = request.responseText;
			// Заголовок ответа
			if (response.indexOf("<headers>") != -1)
			{
				var matchresult = response.match(/<headers>([^<>]{1,})<\/headers>/);
				if (matchresult && matchresult.length > 1)
				{
					response = response.replace(matchresult[0], "");
					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];
					}
					if (window["avatarDeleted"] != null && window["avatarDeleted"] == "1")
					{
						var parent = FindParent(ButtonNode, {"tagname":"div"});
						if (parent)
						{
							parent.innerHTML = "";
							parent.className = "";
						}
					}
				}
			}
		}
	}
	request.open("GET", "webservice.php?m=deleteAvatar&rnd=" + Math.ceil(Math.random() * 100000000));
	request.send(null);
}

function APPCall(method/* String */, params/* Object */)
{
	var request = GetRequest();
	if (!request)
		return;
	var parameters = [];
	for (var name in params)
		parameters.push(name + "=" + params[name]);
	var querystring = (parameters.length > 0) ? "&" : "";
	querystring += parameters.join("&");
	request.open("GET", "webservice.php?m=" + method + querystring + "&rnd=" + Math.ceil(Math.random() * 10000000));
	request.send(null);
}

function APPResponse(method/* String */, params/* Object */, callback/* Function */, textformat/* Boolean, необязательный параметр */)
{
	var request = GetRequest();
	if (!request)
		return;
	var parameters = [];
	for (var name in params)
		parameters.push(name + "=" + params[name]);
	var querystring = (parameters.length > 0) ? "&" : "";
	querystring += parameters.join("&");
	request.onreadystatechange = function()
	{
		if (request.readyState == 4 && request.status == 200)
		{
			try
			{
				var response;
				if (!textformat)
					response = JSON.parse(request.responseText);
				else
					response = request.responseText;
				if (callback)
					callback(response);
			}
			catch (err) { }
		}
	}
	request.open("GET", "webservice.php?m=" + method + querystring + "&rnd=" + Math.ceil(Math.random() * 10000000));
	request.send(null);
}

function APPPostResponse(method/* String */, params/* Object */, callback/* Function */)
{
	var request = GetRequest();
	if (!request)
		return;
	var parameters = [];
	for (var name in params)
		parameters.push(encodeURIComponent(name).replace(/%20/g, "+") + "=" + encodeURIComponent(params[name]).replace(/%20/g, "+"));
	request.onreadystatechange = function()
	{
		if (request.readyState == 4 && request.status == 200)
		{
			try
			{
				var response = JSON.parse(request.responseText);
				if (callback)
					callback(response);
			}
			catch (err) { }
		}
	}
	request.open("POST", "webservice.php?m=" + method + "&rnd=" + Math.ceil(Math.random() * 10000000));
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(parameters.join("&"));
}

function RedirectAfterAuth()
{
	var redirectToIndex = true;
	if (window.location.search)
	{
		var query = window.location.search;
		if (query.indexOf("?") == 0)
			query = query.substring(1);
		var queryparts = query.split("&");
		for (var i = 0; i < queryparts.length; i++)
		{
			var subparts = queryparts[i].split("=");
			if (subparts.length > 1 && subparts[0].toLowerCase() == "redirect")
			{
				try
				{
					window.location.href = decodeURIComponent(subparts[1]);
					redirectToIndex = false;
				}
				catch (e) { }
				break;
			}
		}
	}
	if (redirectToIndex)
		window.location.href = "/";
}

// Функция вызывается после загрузки auth.swf
function OnAuthManagerInit()
{
	User.authSWF.ready = true;
	VKGetStatusBySwf();
}

function InitSocial()
{
	var g = document.getElementById("vk_group");
	// TO DO
}

function CoolVid(i)
{
	if (!User.VK.authorized && !User.FB.authorized && !User.Mail.authorized && !User.Odkl.authorized)
	{
		Authorize();
	}
	if (!coolvideo[i])
		return;
	var hold = document.getElementById("coolholder");
	var vid = coolvideo[i].id;
	var t = coolvideo[i].title;
	var ytid = coolvideo[i].ytid;
	var img = "http://" + Config.host + "/loadings/images/" + vid + ".jpg";
	var url = "http://" + Config.host + "/comment.php?link=" + vid;
	if (User.VK.authorized)
	{
		VK.Api.call("photos.getWallUploadServer", {}, function(r)
		{
			if (!r.response || !r.response.upload_url)
				return;
			APPResponse("wallPost", {"upload_url":encodeURIComponent(r.response.upload_url), "linkid":vid, "v":ytid}, function(o)
			{
				if (!o)
					return;
				CallMethod("photos.saveWallPhoto", {"server":o.server, "photo":o.photo, "hash":o.hash}, function(r2)
				{
					var title = t.replace(/([\[\]\|\'\"])/ig, '') + ' http://www.drakoff.ru/comment.php?link=' + vid;
					if (hold)
						hold.style.display = "none";
					CallMethod("wall.post", {"owner_id":r2.response[0]["owner_id"], "attachment":r2.response[0]["id"], "message":title, "post_id":vid}, function(re1)																																				 					{
						if (hold)
							hold.style.display = "block";
						// В заметки (отключены соцсетью)
						var text = '[[' + r2.response[0]["owner_id"] + '|noborder;95px;|http://www.drakoff.ru/comment.php?link=' + vid + ']]' + '[http://www.drakoff.ru/comment.php?link=' + vid + '|' + t.replace(/([\[\]\|\'\"])/ig, '') + ']';
						CallMethod("notes.add", {title:t, text:text}, function(re2) {});
					});
				});
			});
		});
	}
	if (User.FB.authorized)
	{
		FB.api("/me/feed", "post", {message:t, picture:img, link:url, name:"Смотреть видео", caption:t}, FBOnShare);
	}
	if (User.Mail.authorized)
	{
		mailru.events.listen(mailru.common.events.streamPublish, function(){});
		mailru.common.stream.post({"title":t, "text":"Самые интересные драки", "img_url":img, "action_links":
		[{"text":"Смотреть видео", "href":url}, {"text":t, "href":url}]});
	}
	APPResponse("cool_vote", {type:"index", vid:vid, vote:"yes", marks:2, ytid:ytid}, function(e){});
}
