class VideoMeta {
	name: string|null
	thumbnail: string|null

	constructor(raw: any) {
		this.name = raw['name']
		this.thumbnail = raw['thumbnail']
	}

	title_link() : HTMLHeadingElement {
		let container = document.createElement('h2')

		let link = document.createElement('a')
		if(this.name) {
			link.href = `/clip/${this.name}`
			link.text = this.name.replace('.', ' ').replace('-', ' ')
		} else  {
			link.href = '#'
			link.text = this.name + 'ft. No thumbnail'
		}

		container.appendChild(link)


		return container
	}

	thumbnail_div() : HTMLImageElement {
		let nail = document.createElement('img')
		nail.className = 'pure-img'

		// Modern browser's should be able to cache this request
		if(!(this.thumbnail == null || this.thumbnail.length == 0)) {
			nail.setAttribute('src', this.thumbnail)
		} else{
			nail.setAttribute('src', '/cantfindshit.gif')
		}

		return nail
	}

	public as_div() {
		let container = document.createElement('div')
		container.className = 'video-block'

		let title = this.title_link()
		let thumbnail = this.thumbnail_div()

		container.appendChild(title)
		container.appendChild(thumbnail)

		// Dump gallery onto the main page
		document.getElementById('main-container').appendChild(container)

		return container
	}
}

function category_ready_handler(e?: Event) : Event {
	if(document.readyState != 'complete') { return e }

	let xml = new XMLHttpRequest()
	const endpoint = window.location.origin + '/api' + window.location.pathname
	xml.open('GET', endpoint, false)
	xml.send()

	if(xml.getResponseHeader('Content-Type') == 'application/json') {
		let raw = JSON.parse(xml.responseText)
		console.log(raw)
		for(const cat_raw of raw) {
			let cat = new VideoMeta(cat_raw)
			cat.as_div()
			console.log(cat)
		}
	} else {
		console.log(xml.getResponseHeader('Content-Type'))
	}


	return e
}
document.addEventListener('readystatechange', category_ready_handler)

