(function () {
	'use strict';

	var cfg = window.tilfyGaleri || {};
	var modalBaglandi = false;

	function qs(sel, root) {
		return (root || document).querySelector(sel);
	}

	function qsa(sel, root) {
		return Array.prototype.slice.call((root || document).querySelectorAll(sel));
	}

	function normalize(str) {
		return (str || '').toLowerCase().replace(/\s+/g, ' ').trim();
	}

	function modalElemanlari() {
		var modal = document.getElementById('tilfy-galeri-modal');
		if (!modal) {
			return null;
		}
		return {
			modal: modal,
			kapakWrap: qs('.tilfy-galeri-modal__kapak-wrap', modal),
			kapak: qs('.tilfy-galeri-modal__kapak', modal),
			baslik: qs('.tilfy-galeri-modal__baslik', modal),
			meta: qs('.tilfy-galeri-modal__meta', modal),
			aciklama: qs('.tilfy-galeri-modal__aciklama', modal),
			istatistik: qs('.tilfy-galeri-modal__istatistik', modal),
			durum: qs('.tilfy-galeri-modal__durum', modal),
			kaynak: qs('.tilfy-galeri-modal__kaynak', modal),
			kapat: qs('.tilfy-galeri-modal__kapat', modal),
			arka: qs('.tilfy-galeri-modal__arka', modal),
		};
	}

	function modalSifirla(el) {
		if (el.kapakWrap) {
			el.kapakWrap.hidden = true;
		}
		if (el.kapak) {
			el.kapak.removeAttribute('src');
		}
		if (el.baslik) {
			el.baslik.textContent = '';
		}
		if (el.meta) {
			el.meta.textContent = '';
		}
		if (el.aciklama) {
			el.aciklama.hidden = true;
			el.aciklama.textContent = '';
		}
		if (el.istatistik) {
			el.istatistik.hidden = true;
			el.istatistik.textContent = '';
		}
		if (el.durum) {
			el.durum.hidden = true;
			el.durum.textContent = '';
		}
		if (el.kaynak) {
			el.kaynak.classList.add('tilfy-galeri-modal__kaynak--gizli');
			el.kaynak.setAttribute('href', '#');
		}
	}

	function modalGoster(el, veri) {
		if (el.baslik) {
			el.baslik.textContent = veri.baslik || '';
		}
		var meta = [];
		if (veri.platform_etiket) {
			meta.push(veri.platform_etiket);
		}
		if (veri.tarih) {
			meta.push(veri.tarih);
		}
		if (veri.medya_etiket) {
			meta.push(veri.medya_etiket);
		}
		if (el.meta) {
			el.meta.textContent = meta.join(' · ');
		}

		if (veri.kapak && el.kapak && el.kapakWrap) {
			el.kapak.src = veri.kapak;
			el.kapakWrap.hidden = false;
		}

		if (veri.aciklama && el.aciklama) {
			el.aciklama.textContent = veri.aciklama;
			el.aciklama.hidden = false;
		}

		if (veri.istatistik && el.istatistik) {
			var s = cfg.strings || {};
			el.istatistik.textContent =
				veri.istatistik.goruntulenme +
				' ' + (s.views || 'views') +
				' · ' +
				veri.istatistik.begeni +
				' ' + (s.likes || 'likes') +
				' · ' +
				veri.istatistik.yorum +
				' ' + (s.comments || 'comments');
			el.istatistik.hidden = false;
		}

		if (veri.kaynak_url && el.kaynak) {
			el.kaynak.href = veri.kaynak_url;
			if (veri.buton_metni) {
				el.kaynak.textContent = veri.buton_metni;
			}
			el.kaynak.classList.remove('tilfy-galeri-modal__kaynak--gizli');
		}
	}

	function modalAcKapat(ac) {
		var el = modalElemanlari();
		if (!el || !el.modal) {
			return;
		}
		if (ac) {
			el.modal.removeAttribute('hidden');
			el.modal.classList.add('is-acik');
			el.modal.setAttribute('aria-hidden', 'false');
			document.body.classList.add('tilfy-galeri-modal-acik');
			if (el.kapat) {
				el.kapat.focus();
			}
		} else {
			el.modal.setAttribute('hidden', '');
			el.modal.classList.remove('is-acik');
			el.modal.setAttribute('aria-hidden', 'true');
			document.body.classList.remove('tilfy-galeri-modal-acik');
		}
	}

	function modalAc(oge) {
		var el = modalElemanlari();
		if (!el) {
			return;
		}
		initModal();
		modalSifirla(el);
		modalAcKapat(true);

		var id = oge.getAttribute('data-id');
		var token = oge.getAttribute('data-token');
		var lazy = cfg.lazyModal === '1' || cfg.lazyModal === 1 || cfg.lazyModal === true;

		if (!lazy) {
			var raw = oge.getAttribute('data-modal');
			if (raw) {
				try {
					modalGoster(el, JSON.parse(raw));
				} catch (err) {
					if (el.durum) {
						el.durum.hidden = false;
						el.durum.textContent = cfg.strings && cfg.strings.hata ? cfg.strings.hata : 'İçerik yüklenemedi.';
					}
				}
				return;
			}
		}

		if (lazy && cfg.restUrl && id && token) {
			if (el.durum) {
				el.durum.hidden = false;
				el.durum.textContent = cfg.strings && cfg.strings.yuklen ? cfg.strings.yuklen : 'Yükleniyor…';
			}
			var url = cfg.restUrl.replace(/\/$/, '') + '/' + encodeURIComponent(id) + '?token=' + encodeURIComponent(token);
			fetch(url, { credentials: 'same-origin' })
				.then(function (res) {
					return res.json();
				})
				.then(function (json) {
					if (el.durum) {
						el.durum.hidden = true;
					}
					if (!json || !json.ok || !json.data) {
						throw new Error('bad');
					}
					modalGoster(el, json.data);
				})
				.catch(function () {
					if (el.durum) {
						el.durum.hidden = false;
						el.durum.textContent = cfg.strings && cfg.strings.hata ? cfg.strings.hata : 'İçerik yüklenemedi.';
					}
				});
			return;
		}

		if (el.durum) {
			el.durum.hidden = false;
			el.durum.textContent = cfg.strings && cfg.strings.hata ? cfg.strings.hata : 'İçerik yüklenemedi.';
		}
	}

	function initModal() {
		if (modalBaglandi) {
			return;
		}
		var el = modalElemanlari();
		if (!el || !el.kapat || !el.arka) {
			return;
		}
		modalBaglandi = true;
		el.kapat.addEventListener('click', function () {
			modalAcKapat(false);
		});
		el.arka.addEventListener('click', function () {
			modalAcKapat(false);
		});
		document.addEventListener('keydown', function (e) {
			if (e.key === 'Escape' && el.modal && el.modal.classList.contains('is-acik')) {
				modalAcKapat(false);
			}
		});
	}

	function initGaleri(root) {
		var liste = qs('.tilfy-galeri__liste', root);
		if (!liste) {
			return;
		}
		var ogeler = qsa('.tilfy-galeri__oge', liste);
		var bos = qs('.tilfy-galeri__bos', root);
		var arama = qs('.tilfy-galeri__arama', root);
		var tarih = qs('.tilfy-galeri__tarih', root);
		var medya = qs('.tilfy-galeri__medya', root);
		var sira = qs('.tilfy-galeri__sira', root);
		var varsayilanSira = root.getAttribute('data-varsayilan-sira') || 'yeni';

		function filtrele() {
			var q = arama ? normalize(arama.value) : '';
			var gun = tarih ? tarih.value : '';
			var medyaVal = medya ? medya.value : '';
			var gorunen = [];

			ogeler.forEach(function (oge) {
				var aramaMetin = oge.getAttribute('data-arama') || '';
				var eslesme =
					(!q || aramaMetin.indexOf(q) !== -1) &&
					(!gun || oge.getAttribute('data-tarih-gun') === gun) &&
					(!medyaVal || oge.getAttribute('data-medya') === medyaVal);
				oge.classList.toggle('is-gizli', !eslesme);
				if (eslesme) {
					gorunen.push(oge);
				}
			});

			var siraVal = sira ? sira.value : varsayilanSira;
			gorunen.sort(function (a, b) {
				var ta = parseInt(a.getAttribute('data-tarih') || '0', 10);
				var tb = parseInt(b.getAttribute('data-tarih') || '0', 10);
				return siraVal === 'eski' ? ta - tb : tb - ta;
			});
			gorunen.forEach(function (oge) {
				liste.appendChild(oge);
			});

			if (bos) {
				bos.hidden = gorunen.length > 0;
			}
		}

		if (arama) {
			arama.addEventListener('input', filtrele);
		}
		if (tarih) {
			tarih.addEventListener('change', filtrele);
		}
		if (medya) {
			medya.addEventListener('change', filtrele);
		}
		if (sira) {
			sira.addEventListener('change', filtrele);
		}

		filtrele();

		root.addEventListener('click', function (e) {
			var tetik = e.target.closest('.tilfy-galeri__oge-tetik');
			if (!tetik) {
				return;
			}
			var oge = tetik.closest('.tilfy-galeri__oge');
			if (!oge || oge.classList.contains('is-gizli')) {
				return;
			}
			e.preventDefault();
			modalAc(oge);
		});
	}

	function init() {
		qsa('.tilfy-galeri').forEach(initGaleri);
		initModal();
	}

	if (document.readyState === 'loading') {
		document.addEventListener('DOMContentLoaded', init);
	} else {
		init();
	}
})();
