//検索
//検索ボックストグル
function searchMenu() {
	$('#src-contents').html('')
	trend()
	$('#left-menu a').removeClass('active')
	$('#searchMenu').addClass('active')
	$('.menu-content').addClass('hide')
	$('#src-box').removeClass('hide')
	//$('ul.tabs').tabs('select_tab', 'src-sta');
}

//検索取得
function src(mode, offset) {
	if (!offset) {
		$('#src-contents').html('')
		var add = ''
	} else {
		var add = '&type=accounts&offset=' + $('#src-accts .cvo').length
	}

	var q = $('#src').val()
	var acct_id = $('#src-acct-sel').val()
	if (acct_id == 'tootsearch') {
		tsAdd(q)
		return false
	}
	localStorage.setItem('last-use', acct_id)
	var domain = localStorage.getItem('domain_' + acct_id)
	var at = localStorage.getItem('acct_' + acct_id + '_at')
	var m = q.match(/^#(.+)$/)
	if (m) {
		q = m[1]
	}
	if (user == '--now') {
		var user = $('#his-data').attr('user-id')
	}
	if (!mode) {
		var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(q) + add
	} else {
		var start = 'https://' + domain + '/api/v1/search?q=' + q
	}
	console.log('Try to search at ' + start)
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json',
			Authorization: 'Bearer ' + at
		}
	})
		.then(function(response) {
			if (!response.ok) {
				response.text().then(function(text) {
					setLog(response.url, response.status, text)
				})
			}
			return response.json()
		})
		.catch(function(error) {
			src('v1')
			return false
		})
		.then(function(json) {
			console.log(['Search', json])
			//ハッシュタグ
			if (json.hashtags[0]) {
				var tags = ''
				Object.keys(json.hashtags).forEach(function(key4) {
					var tag = json.hashtags[key4]
					if (mode) {
						tags =
							tags +
							`<a onclick="tl('tag','${tag}','${acct_id}','add')" class="pointer">
								#${escapeHTML(tag)}
							</a>
							<br> `
					} else {
						tags = tags + graphDraw(tag, acct_id)
					}
				})
				$('#src-contents').append('Tags<br>' + tags)
			}
			//トゥート
			if (json.statuses[0]) {
				var templete = parse(json.statuses, '', acct_id)
				$('#src-contents').append('<br>Mentions<br>' + templete)
			}
			//アカウント
			if (json.accounts[0]) {
				var templete = userparse(json.accounts, '', acct_id)
				if (!offset) {
					$('#src-contents').append(
						`<br>Accounts<div id="src-accts">
							${templete}
							</div><a onclick="src(false,'more')" class="pointer">more...</a>`
					)
				} else {
					$('#src-accts').append(templete)
				}
			}
			jQuery('time.timeago').timeago()
		})
}
function tsAdd(q) {
	var add = {
		domain: acct_id,
		type: 'tootsearch',
		data: q
	}
	var multi = localStorage.getItem('column')
	var obj = JSON.parse(multi)
	localStorage.setItem('card_' + obj.length, 'true')
	obj.push(add)
	var json = JSON.stringify(obj)
	localStorage.setItem('column', json)
	parseColumn('add')
}
function tootsearch(tlid, q) {
	if(!q || q=='undefined') {
		return false
	}
	var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q
	console.log('Toot search at ' + start)
	$('#notice_' + tlid).text('tootsearch(' + q + ')')
	$('#notice_icon_' + tlid).text('search')
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json'
		}
	})
		.then(function(response) {
			if (!response.ok) {
				response.text().then(function(text) {
					setLog(response.url, response.status, text)
				})
			}
			return response.json()
		})
		.catch(function(error) {
			todo(error)
			setLog(start, 'JSON', error)
			console.error(error)
		})
		.then(function(raw) {
			var templete = ''
			var json = raw.hits.hits
			var max_id = raw['hits'].length
			for (var i = 0; i < json.length; i++) {
				var toot = json[i]['_source']
				if (lastid != toot.uri) {
					if (toot && toot.account) {
						templete = templete + parse([toot], 'noauth', null, tlid, 0, [], 'tootsearch')
					}
				}
				var lastid = toot.uri
			}
			if (!templete) {
				templete = lang.lang_details_nodata
			} else {
				templete = templete + `<div class="hide ts-marker" data-maxid="${max_id}"></div>`
			}
			$('#timeline_' + tlid).html(templete)

			jQuery('time.timeago').timeago()
		})
}
function moreTs(tlid, q) {
	var sid = $('#timeline_' + tlid + ' .ts-marker')
		.last()
		.attr('data-maxid')
	moreloading = true
	var start =
		'https://tootsearch.chotto.moe/api/v1/search?from=' + sid + '&sort=created_at%3Adesc&q=' + q
	$('#notice_' + tlid).text('tootsearch(' + q + ')')
	$('#notice_icon_' + tlid).text('search')
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json'
		}
	})
		.then(function(response) {
			if (!response.ok) {
				response.text().then(function(text) {
					setLog(response.url, response.status, text)
				})
			}
			return response.json()
		})
		.catch(function(error) {
			todo(error)
			setLog(start, 'JSON', error)
			console.error(error)
		})
		.then(function(raw) {
			var templete = ''
			var json = raw.hits.hits
			var max_id = raw['hits'].length
			for (var i = 0; i < json.length; i++) {
				var toot = json[i]['_source']
				if (lastid != toot.uri) {
					if (toot && toot.account) {
						templete = templete + parse([toot], 'noauth', null, tlid, 0, [], 'tootsearch')
					}
				}
				var lastid = toot.uri
			}
			if (!templete) {
				templete = lang.lang_details_nodata
			} else {
				templete = templete + `<div class="hide ts-marker" data-maxid="${max_id}"></div>`
			}
			$('#timeline_' + tlid).append(templete)

			jQuery('time.timeago').timeago()
		})
}
function graphDraw(tag, acct_id) {
	var tags = ''
	var his = tag.history
	return graphDrawCore(his, tag)
}
function graphDrawCore(his, tag) {
	var max = Math.max.apply(null, [
		his[0].uses,
		his[1].uses,
		his[2].uses,
		his[3].uses,
		his[4].uses,
		his[5].uses,
		his[6].uses
	])
	var six = 50 - (his[6].uses / max) * 50
	var five = 50 - (his[5].uses / max) * 50
	var four = 50 - (his[4].uses / max) * 50
	var three = 50 - (his[3].uses / max) * 50
	var two = 50 - (his[2].uses / max) * 50
	var one = 50 - (his[1].uses / max) * 50
	var zero = 50 - (his[0].uses / max) * 50
	return `<div class="tagComp">
				<div class="tagCompSvg">
					<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
						<g>
							<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero} 61,61 0,61" 
							style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
								</path>
						</g>
					</svg>
				</div>
				<div class="tagCompToot">
					<span style="font-size:200%">${his[0].uses}</span>
				</div>
				<div class="tagCompToots">
					toot
				</div>
				<div class="tagCompTag">
					<a onclick="tl('tag','${escapeHTML(
						tag.name
					)}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}">
						#${escapeHTML(tag.name)}
					</a>
				</div>
				<div class="tagCompUser">
					${his[0].accounts}
					${lang.lang_src_people}
				</div>
				</div>`
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
	<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
function trend() {
	console.log('get trend')
	$('#src-contents').html('')
	var acct_id = $('#src-acct-sel').val()
	if (acct_id == 'tootsearch') {
		return false
	}
	var domain = localStorage.getItem('domain_' + acct_id)
	var at = localStorage.getItem('acct_' + acct_id + '_at')
	var start = 'https://' + domain + '/api/v1/trends'
	console.log(start)
	fetch(start, {
		method: 'GET',
		headers: {
			'content-type': 'application/json',
			Authorization: 'Bearer ' + at
		}
	})
		.then(function(response) {
			if (!response.ok) {
				response.text().then(function(text) {
					setLog(response.url, response.status, text)
				})
			}
			return response.json()
		})
		.catch(function(error) {
			setLog(start, 'JSON', error)
			console.error(error)
		})
		.then(function(json) {
			var tags = ''
			Object.keys(json).forEach(function(keye) {
				var tag = json[keye]
				var his = tag.history
				tags = graphDrawCore(his, tag)

				$('#src-contents').append(tags)
			})
		})
}
function srcBox(mode) {
	var selectedText = window.getSelection().toString()
	if (mode == 'open') {
		$('#pageSrc').removeClass('hide')
	} else if (mode == 'close') {
		if(!selectedText) {
			$('#pageSrc').addClass('hide')
			$('#pageSrc').removeClass('keep')
		}
	} else {
		$('#pageSrc').toggleClass('hide')
	}
	if(!$('#pageSrc').hasClass('keep')) {
		$('#pageSrcInput').val(selectedText)
	}
}
$('#pageSrcInput').click(function() {
	$('#pageSrc').addClass('keep')
})
$('#pageSrcInput').on('input', function(evt) {
	if(!$('#pageSrcInput').val()) {
		$('#pageSrc').removeClass('keep')
	}
})
document.addEventListener('selectionchange', function() {
	var selectedText = window.getSelection().toString()
	if (selectedText && !$('input').is(':focus') && !$('textarea').is(':focus')) {
		srcBox('open')
	}
})
function doSrc(type) {
	$('#pageSrc').addClass('hide')
	$('#pageSrc').removeClass('keep')
	var q = $('#pageSrcInput').val()
	if(type == 'web') {
		var start = localStorage.getItem('srcUrl')
		if(!start) {
			start = 'https://google.com/search?q={q}'
		}
		start = start.replace(/{q}/, q)
		postMessage(["openUrl", start], "*")
	} else if(type == 'ts') {
		tsAdd(q)
	}
}