/*イメージビューワー*/
//postのimg.jsとは異なります。
function imgv(id, key, acct_id) {
	$('#imgprog').text(0)
	$('#imgsec').text(0)
	$('#imgmodal').hide()
	rotate(true)
	$('#imgmodal').attr('src', '../../img/loading.svg')
	var murl = $('#' + id + '-image-' + key).attr('data-url')
	var ourl = $('#' + id + '-image-' + key).attr('data-original')
	if (!ourl || ourl == 'null') {
		ourl = murl
	}
	var type = $('#' + id + '-image-' + key).attr('data-type')
	$('#imagemodal').attr('data-id', id)
	$('#imagemodal').attr('data-acct', acct_id)
	$('#imagemodal').attr('data-original', ourl)
	$('#imagemodal').attr('data-image', murl)
	//表示はリモートを使うか(どちらにしろコピーはオリジナル)
	var remote_img = localStorage.getItem('remote_img')
	if (remote_img == 'yes') {
		murl = ourl
	}
	$(document).ready(function () {
		if (type == 'image') {
			$('#imagemodal').modal('open')
			imageXhr(id, key, murl)
			$('#imagewrap').dragScroll() // ドラッグスクロール設定
			$('#imgmodal').show()
			$('#imagemodal').attr('data-key', key)
			$('#imagemodal').attr('data-id', id)
		} else if (type == 'video' || type == 'gifv') {
			$('#video').attr('src', murl)
			$('#videomodal').modal('open')
			$('#imgmodal').show()
		}
	})
}
//イメージビューワーの送り
function imgCont(type) {
	var key = $('#imagemodal').attr('data-key')
	var id = $('#imagemodal').attr('data-id')
	if (type == 'next') {
		key++
	} else if (type == 'prev') {
		key = key * 1 - 1
	}
	var murl = $('#' + id + '-image-' + key).attr('data-url')
	var ourl = $('#' + id + '-image-' + key).attr('data-original')
	var type = $('#' + id + '-image-' + key).attr('data-type')
	$('#imagemodal').attr('data-id', id)
	$('#imagemodal').attr('data-acct', acct_id)
	$('#imagemodal').attr('data-original', ourl)
	$('#imagemodal').attr('data-image', murl)
	//表示はリモートを使うか(どちらにしろコピーはオリジナル)
	var remote_img = localStorage.getItem('remote_img')
	if (remote_img == 'yes' && ourl != 'null') {
		murl = ourl
	}
	if (murl) {
		$('#imgprog').text(0)
		$('#imgsec').text(0)
		$('#imgmodal').attr('src', '../../img/loading.svg')
		var type = $('#' + id + '-image-' + key).attr('data-type')
		$(document).ready(function () {
			if (type == 'image') {
				imageXhr(id, key, murl)
				$('#imagewrap').dragScroll() // ドラッグスクロール設定
				$('#imagemodal').attr('data-key', key)
				$('#imagemodal').attr('data-id', id)
			} else if (type == 'video' || type == 'gifv') {
				$('#video').attr('src', murl)
				$('#videomodal').modal('open')
			}
		})
	}
}
function imageXhr(id, key, murl) {
	let time = 0
	var startTime = new Date()
	const timer = setInterval(function() {
		time = time + 1
		$('#imgsec').text(time)
	}, 10)
	$('#imgmodal-progress div').removeClass('determinate')
	$('#imgmodal-progress div').addClass('indeterminate')
	$('#imgmodal-progress').removeClass('hide')
	xhr = new XMLHttpRequest()
	xhr.open('GET', murl, true)
	xhr.responseType = 'arraybuffer'
	xhr.addEventListener(
		'progress',
		function (event) {
			if (event.lengthComputable) {
				var total = event.total
				var now = event.loaded
				$('#imgbyte').text(`${Math.floor(now / 1024)}KB/${Math.floor(total / 1024)}`)
				var per = (now / total) * 100
				$('#imgmodal-progress div').removeClass('indeterminate')
				$('#imgmodal-progress div').addClass('determinate')
				$('#imgmodal-progress div').css('width', `${per}%`)
				$('#imgprog').text(Math.floor(per))
			}
		},
		false
	)
	xhr.addEventListener(
		'loadend',
		function (event) {
			var total = event.total
			$('#imgbyte').text(Math.floor(total / 1024))
			var now = event.loaded
			var per = (now / total) * 100
			$('#imgprog').text(Math.floor(per))
			$('#imgmodal-progress').addClass('hide')
			$('#imgmodal-progress div').css('width', '0%')
			$('#imgmodal-progress div').removeClass('determinate')
			$('#imgmodal-progress div').addClass('indeterminate')
		},
		false
	)
	xhr.addEventListener(
		'error',
		function (event) {
			$('#imgmodal').attr('src', murl)
		},
		false
	)
	xhr.onreadystatechange = function () {
		if (this.readyState == 4 && this.status == 200) {
			r = new FileReader()
			r.readAsDataURL(this.response)
			r.onload = function () {
				var b64 = r.result
				var element = new Image()
				var width
				element.onload = function () {
					var width = element.naturalWidth
					var height = element.naturalHeight
					calcNiceAspect(width, height)
					$('#imagemodal').attr('data-naturalWidth', width)
					$('#imagemodal').attr('data-naturalHeight', height)
				}
				if ($('#' + id + '-image-' + (key * 1 + 1)).length == 0) {
					$('#image-next').prop('disabled', true)
				} else {
					$('#image-next').prop('disabled', false)
				}
				if ($('#' + id + '-image-' + (key * 1 - 1)).length == 0) {
					$('#image-prev').prop('disabled', true)
				} else {
					$('#image-prev').prop('disabled', false)
				}
				element.src = b64
				var endTime = new Date()
				clearInterval(timer)
				var proctime = endTime.getTime() - startTime.getTime()
				$('#imgsec').text(proctime)
				$('#imgmodal').attr('src', b64)
			}
		}
	}
	xhr.responseType = 'blob'
	xhr.send()
}
function calcNiceAspect(width, height) {
	if (width < 650) {
		width = 650
	}
	var windowH = $(window).height()
	var windowW = $(window).width()
	$('#imagemodal').css('bottom', '0')
	$('#imagemodal img').css('width', 'auto')
	if (height < windowH) {
		$('#imagemodal').css('height', height + 100 + 'px')
		$('#imagemodal img').css('height', height + 'px')
		if (width > windowW * 0.8) {
			$('#imagemodal').css('width', '80vw')
			$('#imagemodal img').css('width', 'auto')
			var heightS = ((windowW * 0.8) / width) * height
			$('#imagemodal').css('height', heightS + 100 + 'px')
		} else {
			$('#imagemodal').css('width', width + 'px')
		}
	} else {
		$('#imagemodal img').css('width', 'auto')
		var widthS = (windowH / height) * width
		if (widthS < windowW) {
			$('#imagemodal').css('width', widthS + 'px')
		} else {
			$('#imagemodal').css('width', '100vw')
		}

		$('#imagemodal').css('height', '100vh')
		$('#imagemodal img').css('height', 'calc(100vh - 60px)')
	}
}
//ズームボタン(z:倍率)
function zoom(z) {
	var wdth = $('#imagewrap img').width()
	var wdth = wdth * z
	$('#imagewrap img').css('width', wdth + 'px')
	var hgt = $('#imagewrap img').height()
	var hgt = hgt * z
	$('#imagewrap img').css('height', hgt + 'px')
}
//スマホ対応ドラッグ移動システム
(function () {
	$.fn.dragScroll = function () {
		var target = this
		$(this)
			.mousedown(function (event) {
				$(this)
					.data('down', true)
					.data('x', event.clientX)
					.data('y', event.clientY)
					.data('scrollLeft', this.scrollLeft)
					.data('scrollTop', this.scrollTop)
				return false
			})
			.css({
				overflow: 'hidden', // スクロールバー非表示
				cursor: 'move'
			})
		// ウィンドウから外れてもイベント実行
		$(document)
			.mousemove(function (event) {
				if ($(target).data('down') == true) {
					// スクロール
					target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - event.clientX)
					target.scrollTop($(target).data('scrollTop') + $(target).data('y') - event.clientY)
					return false // 文字列選択を抑止
				}
			})
			.mouseup(function (event) {
				$(target).data('down', false)
			})
		$(this)
			.on('touchstart', function (event) {
				$(this)
					.data('down', true)
					.data('x', getX(event))
					.data('y', getY(event))
					.data('scrollLeft', this.scrollLeft)
					.data('scrollTop', this.scrollTop)
				return false
			})
			.css({
				overflow: 'hidden', // スクロールバー非表示
				cursor: 'move'
			}) //指が触れたか検知
		$(this).on('touchmove', function (event) {
			if ($(target).data('down') === true) {
				// スクロール
				target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - getX(event))
				target.scrollTop($(target).data('scrollTop') + $(target).data('y') - getY(event))
				return false // 文字列選択を抑止
			} else {
			}
		}) //指が動いたか検知
		$(this).on('touchend', function (event) {
			$(target).data('down', false)
		})

		return this
	}
})(jQuery)

function getX(event) {
	return event.originalEvent.touches[0].pageX
}

function getY(event) {
	return event.originalEvent.touches[0].pageY
}
//マウスホイールで拡大
var element = document.getElementById('imagemodal')
element.onmousewheel = function (e) {
	var delta = e.wheelDelta
	if (delta > 0) {
		zoom(1.1)
	} else {
		zoom(0.9)
	}
}
function rotate(reset) {
	if (reset) {
		$('#imagewrap img').removeClass('rotate-90')
		$('#imagewrap img').removeClass('rotate-180')
		$('#imagewrap img').removeClass('rotate-270')
		$('#imagemodal').attr('data-naturalWidth', null)
		$('#imagemodal').attr('data-naturalWidth', null)
		return true
	}
	var width = $('#imagemodal').attr('data-naturalWidth')
	var height = $('#imagemodal').attr('data-naturalHeight')
	if ($('#imagewrap img').hasClass('rotate-90')) {
		$('#imagewrap img').removeClass('rotate-90')
		$('#imagewrap img').addClass('rotate-180')
		calcNiceAspect(width, height)
	} else if ($('#imagewrap img').hasClass('rotate-180')) {
		$('#imagewrap img').removeClass('rotate-180')
		$('#imagewrap img').addClass('rotate-270')
		calcNiceAspect(height, width)
	} else if ($('#imagewrap img').hasClass('rotate-270')) {
		$('#imagewrap img').removeClass('rotate-270')
		calcNiceAspect(width, height)
	} else {
		$('#imagewrap img').addClass('rotate-90')
		calcNiceAspect(height, width)
	}
}

//当該トゥート
function detFromImg() {
	var id = $('#imagemodal').attr('data-id')
	var acct_id = $('#imagemodal').attr('data-acct')
	$('#imagemodal').modal('close')
	details(id, acct_id)
}
//画像保存
function dlImg() {
	var ourl = $('#imagemodal').attr('data-original')
	var murl = $('#imagemodal').attr('data-image')
	var remote_img = localStorage.getItem('remote_img')
	if (remote_img == 'yes') {
		murl = ourl
	}
	var save = localStorage.getItem('savefolder')
	if (!save || save == 'null') {
		var save = ''
	}
	postMessage(['generalDL', [murl, save, false]], '*')
}
function openFinder(dir) {
	postMessage(['openFinder', dir], '*')
}
function stopVideo() {
	document.getElementById('video').pause()
}
function copyImgUrl() {
	var murl = $('#imagemodal').attr('data-original')
	execCopy(murl)
	M.toast({ html: lang.lang_img_copyDone, displayLength: 1500 })
}