function MailAPIComplete()
{
	mailru.connect.init("605605", "b5878a9534565f85d90f6e1232cfd5b6");
	mailru.connect.getLoginStatus(MailOnStatus);
}
//
// Статус посетителя: авторизован или нет
// Mail передает в функцию вторым аргументом строку с данными
function MailOnStatus(result)
{
	if (!result || result.is_app_user == null)
		return;
	if (result.is_app_user == "0" && !User.Mail.ignoreappuser/* null или false */)
	{
		// Проверка, действительно ли залогинен (см. инициализацию mailru)
		if (User.Mail.authorized)
			MailLogOut();
		// Если посетитель авторизован в mail, параметр содержит поле sig
		// Открываем окно "добавить приложение"
		else if (result.sig && !User.Mail.denyautoauth)
		{
			MailLogin();
			// Отмена повторного открытия окна
			// Проверить с помощью events.listen невозможно
			var c = new Cookie();
			var val = "";
			var ignore = c.Get(User.DENY_AUTO_AUTH_COOKIE);
			if (ignore)
				val = ignore + "&";
			c.Set(User.DENY_AUTO_AUTH_COOKIE, val + "Mail", (60 * 60 * 24 * 7));
		}
	}
	else if (result.is_app_user == "1" && result.oid)
	{
		// Для получения sig необходимо передать параметры авторизации, которые проверятся
		// вебслужбой по параметру sig
		mailru.common.users.getInfo(function(result_info)
		{
			if (result_info.error && result_info.error.error_code)
			{
				// Если сессия истекла, необходимо сделать запрос на залогинивание
				if (!User.Mail.ignoresession && result_info.error.error_code == 102)
				{
					User.Mail.ignoresession = true;
					// Без таймаута выдает ошибку
					window.setTimeout(function()
					{
						MailLogin();
					}, 500);
				}
				return;
			}
			if (!User.Mail.authorized)
				MailOnUserInfoComplete(result_info, result);
		}, result.oid);
	}
}
//
// Авторизация Mail
function MailLogin()
{
	if (!mailru)
		return;
	User.Mail.ignoreappuser = true;
	mailru.events.listen(mailru.connect.events.login, MailOnStatus);
	mailru.connect.login(["messages", "photos", "guestbook"]);
}
//
// Авторизация прошла успешно
function MailOnUserInfoComplete(result, result_auth)
{
	try
	{
		if (!result || result.error || result.length == 0 || !result_auth.oid)
			return;
		User.Mail.ID = result_auth.oid;
		User.Authorized(User.Mail, true);
		var params = {"first_name":encodeURIComponent(result[0].first_name), "last_name":encodeURIComponent(result[0].last_name), "photo":result[0].pic, "nick":result[0].nick, "js_render_headers":"1"};
		if (User.authParams["get_vote_video"])
			params.get_vote_video = User.authParams["get_vote_video"];
		if (User.authParams["get_favourite"])
			params.get_favourite = User.authParams["get_favourite"];
		for (var name in result_auth)
			params[name] = result_auth[name];
		APPResponse("authorize_mail", params, MailOnAuthComplete, true);
	}
	catch(err) {}
}
//
// Авторизация (передача данных) с помощью веб-служб завершена
function MailOnAuthComplete(response)
{
	ResetParams();
	var response = ParseHeaders(response);
	var authform = document.getElementById("authenticationform");
	if (authform)
		authform.innerHTML = response;
	if (window["authComplete"] && window["authComplete"] == "1")
	{
		AuthorizeCallback();
		if (Redirectable())
			RedirectAfterAuth();
	}
}

function MailLogOut()
{
	if (!mailru || !mailru.connect || !mailru.connect.logout)
		return false;
	mailru.connect.logout();
	User.Mail.authorized = false;
	var authform = document.getElementById("authenticationform");
	if (authform)
	{
		var request = GetRequest();
		if (request)
		{
			request.onreadystatechange = function()
			{
				if (request.readyState == 4 && request.status == 200)
				{
					if (authform)
						authform.innerHTML = request.responseText;
					ClearParams();
					AuthorizeCallback();
				}
			}
		}
		request.open("GET", "webservice.php?m=logout&t=mail&rnd=" + Math.ceil(Math.random() * 100000000));
		request.send(null);
	}
	else
	{
		window.location.href = "register.php?type=authorize";
	}
	return false;
}

function MailAuthorize()
{
	MailLogin();
}

function MailShare()
{
	if (!User.Mail.authorized)
	{
		if (User.IsAuthorized())
			MailLogin(true);
		else
			MailLogin();
		return;
	}
	var l = Share.scurrentlink;
	if (!l && !_Video.id)
		return;
	var vo = (_Video.id) ? null : GetVideoData(l);
	CloseShare();
	var vid = (vo) ? vo.vid : _Video.id;
	var t = (vo) ? vo.title : GetInnerText(document.getElementsByTagName("h1")[0]);
	var img = (vo) ? ("http://" + Config.host + "/loadings/images/" + vid + ".jpg") : ((AddNotesParams && AddNotesParams.image) ? AddNotesParams.image : "");
	var url = "http://" + Config.host + "/comment.php?" + ((parseInt(_Video.id)) ? ('link=' + _Video.id) : ('v=' + _Video.ytid));
	mailru.events.listen(mailru.common.events.streamPublish, MailOnShare);
	mailru.common.stream.post({"title":t, "text":"Самые интересные видео и новости", "img_url":img, "action_links":
	[{"text":"Смотреть видео", "href":url}, {"text":t, "href":url}]});
}

function MailOnShare(e)
{
	//alert(e.status);
}

function MailGuestBook()
{
	if (!User.Mail.authorized)
	{
		if (User.IsAuthorized())
			MailLogin(true);
		else
			MailLogin();
		return;
	}
	var l = Share.scurrentlink;
	if (!l && !_Video.id)
		return;
	var vo = null;
	CloseShare();
	var vid = (vo) ? vo.vid : _Video.id;
	var t = (vo) ? vo.title : GetInnerText(document.getElementsByTagName("h1")[0]);
	var img = (vo) ? ("http://" + Config.host + "/loadings/images/" + vid + ".jpg") : ((AddNotesParams && AddNotesParams.image) ? AddNotesParams.image : "");
	var url = "http://" + Config.host + "/comment.php?" + ((parseInt(_Video.id)) ? ('link=' + _Video.id) : ('v=' + _Video.ytid));
	mailru.events.listen(mailru.common.events.guestbookPublish, function(e){});
	mailru.common.guestbook.post({"title":t, "text":"Самые интересные видео и новости", "img_url":img, "action_links":
	[{"text":"Смотреть видео", "href":url}, {"text":t, "href":url}]});
}

// Функция требуется только когда User.Mail.perms == ""
function MailHasPermission(perm, callback)
{
	if (InArray(User.Mail.perms, perm))
	{
		callback();
		return;
	}
	mailru.common.users.hasAppPermission(function(perms)
	{
		if (perms[perm])
		{
			User.Mail.perms.push(perm);
			callback();
		}
	}, perm);
}

function MailSetWidget()
{
	var l = Share.scurrentlink;
	if (!l && !_Video.id)
		return;
	var vo = null;
	CloseShare();
	var vid = (vo) ? vo.vid : _Video.id;
	var t = (vo) ? vo.title : GetInnerText(document.getElementsByTagName("h1")[0]);
	var img = (vo) ? ("http://" + Config.host + "/loadings/images/" + vid + ".jpg") : ((AddNotesParams && AddNotesParams.image) ? AddNotesParams.image : "");
	var url = "http://" + Config.host + "/comment.php?" + ((parseInt(_Video.id)) ? ('link=' + _Video.id) : ('v=' + _Video.ytid));
	APPResponse("mail_widget_set", {html:encodeURIComponent('<a href="' + url + '" target="_blank"><img src="' + img + '" border="0" /></a><div style="padding-top:5px"><a href="' + url + '" target="_blank">' + t + '</a></div>')}, function(e)
	{
		if (e && e.set && e.set == "1")
		{
			var m = document.getElementById("mailsetwiggetok");
			if (m)
				m.style.display = "block";
		}
	});
	return false;
}

function MailGetFriends()
{
	CloseShare();
	if (document.getElementById("mail_invite"))
		return;
	var cont = document.getElementById("TooltipContainer");
	if (!cont)
		return;
	User.Mail.friends = {};
	window.scrollTo(0, 0);
	c = document.createElement("div");
	c.setAttribute("id", "mail_invite");
	c.style.zIndex = 100;
	c.innerHTML = '<div id="invite_shader" class="opacity50" style="position:absolute; background-color:#000000;"></div>'
+ '<div id="login_form">'
+ '<table cellpadding="0" cellspacing="0" align="left">'
+ '<tr>'
	+ '<td style="position:relative">'
	+ '<div id="invite_shadow" class="opacity20" style="position:absolute; background-color:#000000;">&nbsp;</div>'
	+ '<table cellpadding="0" cellspacing="0" width="450" id="auth_table">'
	+ '<tr>'
		+ '<td align="left" valign="top">'
		+ '<form method="post" action="">'
		+ '<table cellpadding="0" cellspacing="0" width="100%">'
		+ '<tr>'
			+ '<td align="right" style="padding-right:10px; padding-top:5px; cursor:pointer"><img src="img/icon.close.gif" onclick="CloseMailInvite()" title="Закрыть окно" /></td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td align="left" style="padding-left:15px; padding-bottom:12px"><h4>Отправить друзьям</h4></td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td style="padding-left:15px">'
			+ '<table width="98%" cellpadding="0" cellspacing="0" style="display:none; margin-right:10px; margin-bottom:7px; border:1px solid #E5E5E5">'
			+ '<tr>'
				+ '<td style="padding-left:10px; padding-top:5px; padding-right:10px; padding-bottom:5px; color:#F00000" id="auth_error"></td>'
			+ '</tr>'
			+ '</table>'
			+ '</td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td valign="top" style="padding-left:15px">'
			+ '<div id="friends_holder" style="width:430px; height:250px; overflow:auto"></div>'
			+ '</td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td style="height:10px"></td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td style="padding-left:15px"><input type="button" value="Отправить" onclick="MailFriendSend()" /></td>'
		+ '</tr>'
		+ '<tr>'
			+ '<td style="height:14px"></td>'
		+ '</tr>'
		+ '</table>'
		+ '</form>'
		+ '</td>'
	+ '</tr>'
	+ '</table>'
	+ '</td>'
+ '</tr>'
+ '</table>'
+ '</div>';
	cont.appendChild(c);
	SetInvitePos();
	mailru.common.friends.getExtended(function(list)
	{
		var fh = '';
		if (!list || list.length == 0)
		{
			document.getElementById("friends_holder").innerHTML = 'Нет друзей';
			return;
		}
		for (i = 0; i < list.length; i++)
		{
			var f = list[i];
			var l = "";
			if (f.first_name != "")
				l += f.first_name + " ";
			if (f.last_name != "")
				l += f.last_name + " ";
			if (f.nick != "")
				l += "(" + f.nick + ")";
			User.Mail.friends[f.uid] = {name:f.first_name};
			fh += '<table friendid="' + f.uid + '" cellpadding="0" cellspacing="0" title="Выбрать" onclick="MailCheckFriend(this)" class="friend">'
+ '<tr>'
	+ '<td style="padding-left:2px; padding-top:2px; padding-right:2px; padding-bottom:2px;" valign="top">'
    + '<div style="position:relative; cursor:pointer">'
    + '<div style="position:absolute">'
    + '<table cellpadding="0" cellspacing="0">'
    + '<tr>'
    	+ '<td><div style="height:75px; overflow:hidden"><img src="' + f.pic + '" width="74"></div></td>'
    + '</tr>'
    + '<tr>'
    	+ '<td style="padding-top:5px"><div style="height:41px; overflow:hidden">' + l + '</div></td>'
    + '</tr>'
    + '</table>'
    + '</div>'
    + '<div fcheck="1" style="position:absolute; left:5px; top:5px; display:none">'
    + '<div style="position:relative">'
    + '<div style="position:absolute; left:1px; top:2px" class="opacity50"><img src="img/tick3.black.gif"></div>'
    + '<div style="position:absolute; left:0px; top:0px"><img src="img/tick3.gif"></div>'
    + '</div>'
    + '</div>'
    + '</div>'
    + '</td>'
+ '</tr>'
+ '</table>';
		}
		document.getElementById("friends_holder").innerHTML = fh;
	});
	var p = GetPlayer();
	var o = GetOperator();
	if (p)
		p.style.visibility = "hidden";
	if (o)
		o.style.visibility = "hidden";
	return false;
}

function SetInvitePos()
{
	var sh = document.getElementById("invite_shader");
	if (sh)
	{
		sh.style.width = Math.max(GetDocumentWidth(), GetWindowWidth()) + "px";
		sh.style.height = Math.max(GetDocumentHeight(), GetWindowHeight()) + "px";
	}
	var wnd = document.getElementById("login_form");
	var t = document.getElementById("auth_table");
	if (wnd && t)
	{
		wnd.style.left = ((GetClientWidth() - t.offsetWidth) / 2 + GetScrollOffset().left) + "px";
	}
	var she = document.getElementById("invite_shadow");
	if (she && wnd && t)
	{
		she.style.width = (t.offsetWidth + 14) + "px";
		she.style.height = (t.offsetHeight + 14) + "px";
	}
}

function CloseMailInvite()
{
	var c = document.getElementById("mail_invite");
	if (!c)
		return;
	c.parentNode.removeChild(c);
	var p = GetPlayer();
	var o = GetOperator();
	if (p)
		p.style.visibility = "visible";
	if (o)
		o.style.visibility = "visible";
}

function MailCheckFriend(s)
{
	var d = s.getElementsByTagName("div");
	var ch;
	for (i = 0; i < d.length; i++)
	{
		if (!d[i].getAttribute("fcheck"))	
			continue;
		ch = d[i];
		break;
	}
	if (!ch)
		return;
	if (!s.getAttribute("checked") || s.getAttribute("checked") == "0")
	{
		ch.style.display = "block";
		s.setAttribute("checked", "1");
	}
	else
	{
		ch.style.display = "none";
		s.setAttribute("checked", "0");
	}
}

function MailFriendSend()
{
	var wnd = document.getElementById("mail_invite");
	if (!wnd)
		return;
	var tbl = wnd.getElementsByTagName("table");
	var ids = [];
	for (i = 0; i < tbl.length; i++)
	{
		var t = tbl[i];
		if (!t.getAttribute("friendid") || !t.getAttribute("checked") || t.getAttribute("checked") == "0")
			continue;
		var id = t.getAttribute("friendid");
		if (!User.Mail.friends[id])
			continue;
		ids.push(id);
	}
	CloseMailInvite();
	var l = Share.scurrentlink;
	if (!l && !_Video.id)
		return;
	var vo = (_Video.id) ? null : GetVideoData(l);
	CloseShare();
	var vid = (vo) ? vo.vid : _Video.id;
	var t = (vo) ? vo.title : GetInnerText(document.getElementsByTagName("h1")[0]);
	var url = "http://" + Config.host + "/comment.php?" + ((parseInt(_Video.id)) ? ('link=' + _Video.id) : ('v=' + _Video.ytid));
	for (i = 0; i < ids.length; i++)
	{
		var id = ids[i];
		mailru.events.listen(mailru.common.events.message.send, function(e){});
		mailru.common.messages.send({uid:id, text:User.Mail.friends[id].name + ', рекомендую посмотреть: "' + t + '".\r\nСсылка для просмотра: ' + url});
	}
}

function MailOnPage()
{
	var c = document.getElementById("mail_share_btn");
	if (!c)
		return;
	c.getElementsByTagName("a")[0].click();
}
