//ユーザーデータ表示
localStorage.removeItem("history");
//コード受信
if (location.search) {
	var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
	var mode = m[1];
	var codex = m[2];
	if (mode == "user") {
		udgEx(codex, 'main');
	}
}
function udgEx(user, acct_id) {
	if (user == "selector") {
		user = $("#his-acct").attr('fullname');
	}
	if (acct_id == "selector") {
		acct_id = $("#user-acct-sel").val();
	}
	if (acct_id == "main") {
		acct_id = localStorage.getItem("main");
	}
	console.log("Get user data of " + user);
	var domain = localStorage.getItem("domain_" + acct_id);
	if (localStorage.getItem("mode_" + domain) == "misskey") { return false; }
	var at = localStorage.getItem("acct_" + acct_id + "_at");
	var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + user
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json',
			'Authorization': 'Bearer ' + at
		}
	}).then(function (response) {
		return response.json();
	}).catch(function (error) {
		todo(error);
		console.error(error);
	}).then(function (json) {
		if (json.accounts[0]) {
			var id = json.accounts[0].id;
			udg(id, acct_id);
		} else {
			postMessage(["openUrl", user], "*")
		}
	});
	return true;
}
function udg(user, acct_id) {
	reset();
	if (!user) {
		user = localStorage.getItem("user-id_" + acct_id);
	}
	todo("User Data Loading...");
	var domain = localStorage.getItem("domain_" + acct_id);
	if (localStorage.getItem("mode_" + domain) == "misskey") {
		misskeyUdg(user, acct_id)
		return;
	}
	var at = localStorage.getItem("acct_" + acct_id + "_at");
	var start = "https://" + domain + "/api/v1/accounts/" + user;
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json',
			'Authorization': 'Bearer ' + at
		},
	}).then(function (response) {
		return response.json();
	}).catch(function (error) {
		todo(error);
		console.error(error);
	}).then(function (json) {
		//一つ前のユーザーデータ
		if (!localStorage.getItem("history")) {
			$("#his-history-btn").prop("disabled", true);
		} else {
			$("#his-history-btn").prop("disabled", false);
			$('#his-data').attr("history", localStorage.getItem("history"));
		}
		//moved設定時
		if (json.moved) {
			M.toast({
				html: lang.lang_showontl_movetxt + '<button class="btn-flat toast-action" onclick="udg(\'' +
					json.moved.id + '\',\'' + acct_id + '\')">' + lang.lang_showontl_movebtn + '</button>', displayLength: 4000
			})
		}
		$('#his-data').modal('open');
		$('#his-data').attr("user-id", user);
		$('#his-data').attr("use-acct", acct_id);
		if (json.username != json.acct) {
			//Remote
			$('#his-data').attr("remote", "true");
			var fullname = json.acct;
		} else {
			$('#his-data').attr("remote", "false");
			var fullname = json.acct + "@" + domain;
		}
		utl(json.id, '', acct_id);
		flw(json.id, '', acct_id);
		fer(json.id, '', acct_id);
		var dis_name = escapeHTML(json.display_name);
		dis_name = twemoji.parse(dis_name);

		var note = json.note;
		if (json.emojis) {
			var actemojick = json.emojis[0];
		} else {
			var actemojick = false;
		}
		//絵文字があれば
		if (actemojick) {
			Object.keys(json.emojis).forEach(function (key5) {
				var emoji = json.emojis[key5];
				var shortcode = emoji.shortcode;
				var emoji_url = '<img src="' + emoji.url +
					'" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">';
				var regExp = new RegExp(":" + shortcode + ":", "g");
				dis_name = dis_name.replace(regExp, emoji_url);
				note = note.replace(regExp, emoji_url);
			});
		}
		//noteの解析
		//var tags =  '<a onclick="tl(\'tag\',\'$1\',' + acct_id +',\'add\')" class="pointer parsed">#$1</a>';
		//var mens =  '<a onclick="udgEx(\'$1\',' + acct_id +')" class="pointer parsed">@$1</a>';
		//note=note.replace(/#(\S+)/gi, tags)
		//note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens)
		$("#his-name").html(dis_name);
		$("#his-acct").text(json.acct);
		$("#his-acct").attr("fullname", fullname);
		$("#his-prof").attr("src", json.avatar);
		$('#his-data').css('background-image', 'url(' + json.header + ')');
		$("#his-sta").text(json.statuses_count);
		$("#his-follow").text(json.following_count);
		var flerc = json.followers_count;
		if (flerc < 0) {
			flerc = "-";
		}
		$("#his-follower").text(flerc);
		$("#his-since").text(crat(json.created_at));
		$("#his-openin").attr("data-href", json.url);
		if (json.fields) {
			if (json.fields.length > 0) {
				note = note + '<table id="his-field">'
				for (var i = 0; i < json.fields.length; i++) {
					var fname = json.fields[i].name;
					var fval = json.fields[i].value;
					if (json.fields[i].verified_at) {
						var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at);
						var color = "rgba(121,189,154,.25);"
					} else {
						var when = "";
						var color = "inherit"
					}
					note = note + '<tr><td class="his-field-title">' + twemoji.parse(escapeHTML(fname)) + '</td><td class="his-field-content" title="' + when + '" style="background-color:' + color + '">' + twemoji.parse(fval) + '</td></tr>';
				}
				note = note + '</table>'
				$("#his-des").html(twemoji.parse(note));
			} else {
				$("#his-des").html(twemoji.parse(note));
			}
		} else {
			$("#his-des").html(twemoji.parse(note));
		}
		if (json.bot) {
			$("#his-bot").html(lang.lang_showontl_botacct);
		}
		$("#his-des").attr("data-acct", acct_id);
		$('#his-data').css('background-size', 'cover');
		$("#his-float-timeline").css("height", $("#his-data-show").height() + "px")
		localStorage.setItem("history", user);
		//自分の時
		if (json.acct == localStorage.getItem("user_" + acct_id)) {
			showFav('', acct_id);
			showBlo('', acct_id);
			showMut('', acct_id);
			showDom('', acct_id);
			showReq('', acct_id);
			showFrl('', acct_id);
			$("#his-name-val").val(json.display_name);
			if (json.fields.length > 0) {
				if (json.fields[0]) { $("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value)); }
				if (json.fields[1]) { $("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value)); }
				if (json.fields[2]) { $("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value)); }
				if (json.fields[3]) { $("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value)); }
			}
			var des = json.note;
			des = des.replace(/<br \/>/g, "\n")
			des = $.strip_tags(des);
			$("#his-des-val").val(des);
			$("#his-follow-btn").hide();
			$("#his-block-btn").hide();
			$("#his-mute-btn").hide();
			$("#his-notf-btn").hide();
			$("#his-domain-btn").hide();
			$("#his-emp-btn").hide();
			$(".only-my-data").show();
			$(".only-his-data").hide();
			if (localStorage.getItem("main") == acct_id) {
				$("#his-main-acct").hide();
			}
		} else {
			relations(user, acct_id);
			$(".only-my-data").hide();
			$(".only-his-data").show();
		}
		todc();
		//外部データ取得(死かもしれないので)
		udAdd(acct_id, user, json.url);
	});
}
function misskeyUdg(user, acct_id) {
	reset();
	if (!user) {
		user = localStorage.getItem("user-id_" + acct_id);
	}
	todo("User Data Loading...");
	var domain = localStorage.getItem("domain_" + acct_id);
	if (localStorage.getItem("mode_" + domain) != "misskey") {
		udg(user, acct_id)
		return;
	}
	var at = localStorage.getItem("acct_" + acct_id + "_at");
	var start = "https://" + domain + "/api/users/show";
	fetch(start, {
		method: 'POST',
		headers: {
			'content-type': 'application/json',
		},
		body: JSON.stringify({
			i: at,
			userId: user
		})
	}).then(function (response) {
		return response.json();
	}).catch(function (error) {
		todo(error);
		console.error(error);
	}).then(function (json) {
		//一つ前のユーザーデータ
		if (!localStorage.getItem("history")) {
			$("#his-history-btn").prop("disabled", true);
		} else {
			$("#his-history-btn").prop("disabled", false);
			$('#his-data').attr("history", localStorage.getItem("history"));
		}
		$('#his-data').modal('open');
		$('#his-data').attr("user-id", user);
		$('#his-data').attr("use-acct", acct_id);
		if (json.host) {
			//Remote
			$('#his-data').attr("remote", "false");
			var fullname = json.username + "@" + json.host;
		} else {
			$('#his-data').attr("remote", "false");
			var fullname = json.acct + "@" + domain;
		}
		utl(json.id, '', acct_id);
		flw(json.id, '', acct_id);
		fer(json.id, '', acct_id);
		if (json.name) {
			var dis_name = escapeHTML(json.name);
			dis_name = twemoji.parse(dis_name);
		} else {
			var dis_name = json.name
		}
		$("#his-name").html(dis_name);
		$("#his-acct").text(json.username);
		$("#his-acct").attr("fullname", fullname);
		$("#his-prof").attr("src", json.avatarUrl);
		$('#his-data').css('background-image', 'url(' + json.bannerUrl + ')');
		$("#his-sta").text(json.notesCount);
		$("#his-follow").text(json.followingCount);
		$("#his-follower").text(json.followersCount);
		$("#his-since").text(crat(json.createdAt));
		var note = escapeHTML(json.description);
		$("#his-des").html(twemoji.parse(note));
		if (json.isCat) {
			$("#his-bot").html("Cat" + twemoji.parse("😺"));
		}
		$('#his-data').css('background-size', 'cover');
		localStorage.setItem("history", user);
		//自分の時
		if (json.username == localStorage.getItem("user_" + acct_id) && !json.host) {
			//showFav('', acct_id);
			//showMut('', acct_id);
			//showReq('', acct_id);
			showFrl('', acct_id);
			$("#his-name-val").val(json.name);
			var des = json.note;
			des = nl2br(des)
			des = $.strip_tags(des);
			$("#his-des-val").val(des);
			$("#his-follow-btn").hide();
			$("#his-block-btn").hide();
			$("#his-mute-btn").hide();
			$("#his-notf-btn").hide();
			$("#his-domain-btn").hide();
			$("#his-emp-btn").hide();
			$(".only-my-data").show();
			$(".only-his-data").hide();
			if (localStorage.getItem("main") == acct_id) {
				$("#his-main-acct").hide();
			}
		} else {
			if (json.isFollowing) {
				//自分がフォローしている
				$("#his-data").addClass("following");
				$("#his-follow-btn").text(lang.lang_status_unfollow);
				hisList(user, acct_id);
			} else {
				$("#his-follow-btn").text(lang.lang_status_follow);
			}
			if (json.isFollowed) {
				//フォローされてる
				$("#his-relation").text(lang.lang_showontl_followed);
			}
			$("#his-block-btn").hide();
			if (json.isMuted) {
				$("#his-data").addClass("muting");
				$("#his-mute-btn").text(lang.lang_status_unmute);
			} else {
				$("#his-mute-btn").text(lang.lang_status_mute);
			}
			$(".only-my-data").hide();
			$(".only-his-data").show();
		}
		todc();
	});
}
//一つ前のユーザーデータ表示
function historyShow() {
	var acct_id = $('#his-data').attr("use-acct");
	var user = $('#his-data').attr("history");
	udg(user, acct_id, "true")
}
//選択アカウントのプロフ
function profShow() {
	var acct_id = $("#post-acct-sel").val();
	var user = localStorage.getItem("user-id_" + acct_id);
	udg(user, acct_id)
	hide();
}

//FF関係取得
function relations(user, acct_id) {
	var domain = localStorage.getItem("domain_" + acct_id);
	var at = localStorage.getItem("acct_" + acct_id + "_at");
	var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user;
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json',
			'Authorization': 'Bearer ' + at
		},
	}).then(function (response) {
		return response.json();
	}).catch(function (error) {
		todo(error);
		console.error(error);
	}).then(function (json) {
		var json = json[0];
		if (json.following) {
			//自分がフォローしている
			$("#his-data").addClass("following");
			$("#his-follow-btn").text(lang.lang_status_unfollow);
			hisList(user, acct_id);
		} else {
			$("#his-follow-btn").text(lang.lang_status_follow);
		}
		if (json.followed_by) {
			//フォローされてる
			$("#his-relation").text(lang.lang_showontl_followed);
		}
		if (json.blocking) {
			$("#his-data").addClass("blocking");
			$("#his-block-btn").text(lang.lang_status_unblock);
		} else {
			$("#his-block-btn").text(lang.lang_status_block);
		}
		if (json.muting) {
			$("#his-data").addClass("muting");
			$("#his-mute-btn").text(lang.lang_status_unmute);
		} else {
			$("#his-mute-btn").text(lang.lang_status_mute);
		}
		if (json.muting_notifications) {
			$("#his-data").addClass("mutingNotf");
			$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_unmute);
		} else {
			$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute);
		}
		if (json.domain_blocking) {
			$("#his-data").addClass("blockingDom");
			$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_unblock);
		} else {
			$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block);
		}
		//Endorsed
		if (json.endorsed) {
			$("#his-end-btn").addClass("endorsed");
			$("#his-end-btn").text(lang.lang_status_unendorse)
		} else {
			$("#his-end-btn").removeClass("endorsed");
			$("#his-end-btn").text(lang.lang_status_endorse)
		}
		//Blocked
		if (json.blocked_by) {
			$("#my-data-nav .btn").addClass("disabled")
			$(".his-var-content").hide();
			$("#his-float-blocked").show()
			$("#his-follow-btn").hide()
		}

	});
}
function profbrws() {
	var url = $("#his-openin").attr("data-href")
	postMessage(["openUrl", url], "*")
}
function setMain() {
	var acct_id = $("#his-data").attr("use-acct")
	localStorage.setItem("main", acct_id);
	multiSelector(true)
	M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
}
//オールリセット
function hisclose() {
	$('#his-data').modal('close');
	reset();
	$('#his-data').attr("history", "");
	localStorage.removeItem("history");
}
function reset() {
	$(".his-var-content:eq(0)").show();
	$(".his-var-content:gt(0)").hide();
	$("#my-data-nav .btn").removeClass("disabled")
	$(".active-back").removeClass("active-back");
	$(".column-first").addClass("active-back");
	$("#his-name").text("Loading");
	$("#his-acct").text("");
	$("#his-prof").attr("src", "../../img/loading.svg");
	$('#his-data').css('background-image', 'url(../../img/loading.svg)');
	$("#his-sta").text("");
	$("#his-follow").text("");
	$("#his-follower").text("");
	$("#his-des").html("");
	$('#his-data').css('background-size', 'cover');
	$("#his-since").text("");
	$("#his-data").removeClass("following");
	$("#his-data").removeClass("muting");
	$("#his-data").removeClass("blocking");
	$("#his-data").removeClass("mutingNotf");
	$("#his-data").removeClass("blockingDom");
	$("#his-end-btn").removeClass("endorsed");
	$("#his-bot").html("");
	$("#his-follow-btn").show();
	$("#his-block-btn").show();
	$("#his-mute-btn").show();
	$("#his-notf-btn").show();
	$("#his-domain-btn").show();
	$("#his-emp-btn").show();
	$("#his-follow-btn").text(lang.lang_status_follow);
	$("#his-mute-btn").text(lang.lang_status_mute);
	$("#his-block-btn").text(lang.lang_status_block);
	$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute);
	$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block);
	$("#his-relation").text("");
	$(".cont-series").html("");
	$("#domainblock").val("");
	$("#his-lists-a").html(lang.lang_showontl_listwarn);
	$("#his-lists-b").html('');
	$("#his-name-val").val("");
	$("#his-des-val").val("");
	$("#his-f1-name").val(""); $("#his-f1-val").val("");
	$("#his-f2-name").val(""); $("#his-f2-val").val("");
	$("#his-f3-name").val(""); $("#his-f3-val").val("");
	$("#his-f4-name").val(""); $("#his-f4-val").val("");
	$("#his-endorse").html("");
	$("#his-openin").attr("data-href", "");
	$("#his-float-timeline").show();
	$("#his-float-blocked").hide();
	$("#his-main-acct").show();
	$("#his-proof-prof").html("")
}
$('#my-data-nav .anc-link').on('click', function () {
	var target = $(this).attr("go");
	if (target) {
		$("#my-data-nav .anc-link").removeClass("active-back");
		$(this).addClass("active-back");
		$(target).show();
		$(".his-var-content:not(" + target + ")").hide();
	}

});