//左下のメッセージ
var todcTrigger=null;
function todo(mes){
	clearInterval(todcTrigger);
	$('#message').text(mes);
	$('#message').fadeIn();
	todcTrigger=setTimeout(todc, 4000);
}
function todc(){
	$('#message').fadeOut();
}
//reverse
function bottomReverse(){
	$("#bottom").toggleClass("reverse");
	$(".leftside").toggleClass("reverse");
	if($("#bottom").hasClass("reverse")){
		localStorage.removeItem("reverse")
	}else{
		localStorage.setItem("reverse","true")
	}
}
function tips(mode){
	var electron = require("electron");
	var ipc = electron.ipcRenderer;
	ipc.send('endmem', "");
	clearInterval(clockint);
	clearInterval(spotStart);
	if(mode=="ver"){
		tipsToggle()
		$("#tips-text").html('<img src="../../img/desk.png" width="20" onclick="todo(\'!TheDesk! It\\\'s a nice client!\')"><span style="font-size:20px">TheDesk</span> '+localStorage.getItem("ver")+'[<i class="material-icons" style="font-size:1.2rem;top: 3px;position: relative;">supervisor_account</i><span id="persons">1+</span>]')
		localStorage.setItem("tips","ver")
	}else if(mode=="clock"){
		tipsToggle()
		localStorage.setItem("tips","clock")
		clock()
	}else if(mode=="memory"){
		tipsToggle()
		localStorage.setItem("tips","memory")
		startmem();
	}else if(mode=="trend"){
		tipsToggle()
		localStorage.setItem("tips","trend")
		trendTagonTip()
	}else if(mode=="spotify"){
		tipsToggle()
		localStorage.setItem("tips","spotify")
		var json=nowplaying("spotifytips")
		spotifytips(json)
	}
}
//メモリ
function startmem(){
	var electron = require("electron");
	var ipc = electron.ipcRenderer;
	ipc.send('startmem', "");
	ipc.on('memory', function (event, arg) {
		var use=arg[0];
		var cpu=arg[1];
		var total=arg[2]
		$("#tips-text").html(cpu+"<br>Memory:"+Math.floor(use/1024/1024/102.4)/10+"/"+Math.floor(total/1024/1024/102.4)/10+"GB("+Math.floor(use/total*100)+"%)")
	})
}
//トレンドタグ
function trendTagonTip(){
    $(".trendtag").remove();
    var domain="imastodon.net"
    var at = localStorage.getItem("acct_"+ acct_id + "_at");
    var start = "https://" + domain + "/api/v1/trend_tags"
	console.log(start)
	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) {
            var tags="";
            json=json.score;
            Object.keys(json).forEach(function(tag) {
                tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
             });
             $("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags+'</div>');
             trendTagonTipInterval()
        }else{
            $("#tips-text").html("");
        }
    });
    
}
//Spotify
function spotifytips(){
	var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh");
    var at = localStorage.getItem("spotify");
    if(at){
    fetch(start, {
    		method: 'GET',
    		headers: {
        	'content-type': 'application/json'
        }
        }).then(function(response) {
            return response.json();
        }).catch(function(error) {
            todo(error);
            console.error(error);
        }).then(function(json) {
            console.log(json);
            var ms=json.progress_ms;
			var last=1000-ms%1000;
			var item=json.item;
			var img=item.album.images[0].url;
			var artisttxt="";
			for(i=0;i<item.artists.length;i++){
				if(i>0){
					artisttxt=artisttxt+","+item.artists[i].name;
				}else{
					artisttxt=item.artists[0].name;
				}
			}
			artisttxt=escapeHTML(artisttxt);
			sleep(last);
			var tms=item.duration_ms;
			var per=ms/item.duration_ms*100;
			ms=ms/1000;
			tms=tms/1000;
			var s=Math.round(ms)%60;
			if(s<10){
				s="0"+s;
			}
			var m=(Math.round(ms)-Math.round(ms)%60)/60;
			var ts=Math.round(tms)%60;
			if(ts<10){
				ts="0"+ts;
			}
			var tm=(Math.round(tms)-Math.round(tms)%60)/60;
			$("#tips-text").html('<div id="spot-box"><i class="material-icons pointer" onclick="spotifytips()" style="font-size:12px">refresh</i><img src="'+img+'" width="20" id="spot-img">'+escapeHTML(item.name)+'<span class="gray sml" id="spot-art">'+artisttxt+'</span><span id="spot-m">'+m+'</span>:<span id="spot-s">'+s+'</span>/'+tm+":"+ts+'</span></div><div class="progress grey"><div class="determinate spotify-prog grey lighten-2" style="width: '+per+'%" data-s="'+Math.round(ms)+'" data-total="'+item.duration_ms+'"></div></div>');
			spotint=setInterval(spotStart, 1000);
        });
        }else{
            alert(lang.lang_spotify_acct);
        }
}
function spotStart(){
	var total=$(".spotify-prog").attr("data-total");
	var s=$(".spotify-prog").attr("data-s");
	var news=s*1+1;
	var per=news*100000/total;
	var ns=news%60;
	var nm=(news-ns)/60;
	if(ns<10){
		ns="0"+ns;
	}
	if(per>=100){
		clearInterval(spotStart);
		spotifytips()
	}else{
		$("#spot-m").text(nm);
		$("#spot-s").text(ns);
	}	
	$(".spotify-prog").attr("data-s",news);
	$(".spotify-prog").css("width",per+"%");
}


function trendTagonTipInterval(){
    setTimeout(trendTagonTip, 6000000);
}
//時計
var clockint;
function clock(){
	var now=new Date();
	var last=1000-now.getTime()%1000;
	sleep(last);
	clockint=setInterval(clockStart, 1000);
}
function clockStart(){
	var nowTime = new Date(); //  現在日時を得る
	var nowHour = nowTime.getHours(); // 時を抜き出す
	if(nowHour<10){nowHour="0"+nowHour }
	var nowMin  = nowTime.getMinutes(); // 分を抜き出す
	if(nowMin<10){nowMin="0"+nowMin }
	var nowSec  = nowTime.getSeconds(); // 秒を抜き出す
	if(nowSec<10){nowSec="0"+nowSec }
	var msg =  nowTime.getFullYear()+"/"+(nowTime.getMonth()+1)+"/"+nowTime.getDate()+'<span style="font-size:20px; font-family:Open Sans">'+nowHour + ":" + nowMin + ":" + nowSec+"</span>";
	$("#tips-text").html(msg);
}
function sleep(waitMsec) {
	var startMsec = new Date();
	while (new Date() - startMsec < waitMsec);
}
function tipsToggle(){
	$("#tips").toggleClass("hide");
	$("#tips-menu").toggleClass("hide");
}
if(localStorage.getItem("tips")){
	tips(localStorage.getItem("tips"));
}