const windowPositions = {
	"lyrics": {
		width: window.innerWidth / 2,
		height: window.innerHeight,
		top: 0,
		left: 0
	},
	"credits": {
		width: window.innerWidth / 2,
		height: window.innerHeight / 2,
		top: 0,
		left: window.innerWidth / 2
	},
	"art": {
		width: window.innerWidth / 2,
		height: window.innerHeight / 2,
		top: window.innerHeight / 2,
		left: window.innerWidth / 2
	}
}

export default class PlayerWindow {
	constructor(name,manifest = null) {
		this.features = {
			menubar: false,
			location: false,
			resizable: false,
			scrollbar: false,
			status: false
		}
		this.name = name;
		this.window = null;

		this.url = new URL(window.location.href + "player");
		this.url.hash = name;

		if(manifest) this.url.searchParams.append("manifest",manifest);

		// Copy window size rect into windowFeatures
		Object.assign(this.features,windowPositions[this.url.hash]);
	}

	// Convert windowFeatures object into a CSV DOMString
	getWindowFeatures() {
		let output = [];
		for(let [key,value] of Object.entries(this.features)) {
			if(typeof key === "boolean") {
				value = value ? "yes" : "no";
			}
			output.push(`${key}=${value}`);
		}
		return output.join(",");
	}

	// Compile windowFeatures and open the window
	open() {
		const features = this.getWindowFeatures();
		this.window = window.open(this.url.toString(),this.name,features);

		// Will return null if window failed to open (usually due to popup blocking)
		return this.window;
	}
}
