/**utilities**/
//=include lib/cookies.js
//=include _jscolor.js
//=include _variables.js
//=include lib/sortable.js
//=include Util.js
//=include Events.js
//=include Color.js
//=include Dialogue.js
//=include History.js

//=include ColorModule.js
//=include _drawLine.js

//=include Tool.js

//=include tools/ResizableTool.js
//=include tools/SelectionTool.js

//=include tools/BrushTool.js
//=include tools/EraserTool.js
//=include tools/LineTool.js
//=include tools/RectangleTool.js
//=include tools/FillTool.js
//=include tools/EyedropperTool.js
//=include tools/PanTool.js
//=include tools/ZoomTool.js
//=include tools/RectangularSelectionTool.js
//=include tools/MoveSelectionTool.js

/**init**/
//=include _consts.js
//=include Settings.js
//=include LayerList.js
//=include Layer.js
//=include Startup.js
//=include _pixelGrid.js
//=include EditorState.js
//=include ToolManager.js

/**dropdown formatting**/
//=include PresetModule.js
//=include _palettes.js

/**functions**/
//=include _checkerboard.js
//=include _copyPaste.js
//=include _resizeCanvas.js
//=include _resizeSprite.js
//=include _colorPicker.js
//=include _paletteBlock.js
//=include SplashPage.js

/**buttons**/
//=include FileManager.js
//=include TopMenuModule.js
//=include _ellipse.js

/**event listeners**/
//=include Input.js

/**feature toggles**/
//=include _featureToggles.js

// Controls execution of this preset module
PresetModule.instrumentPresetMenu();

//when the page is done loading, you can get ready to start
window.onload = function () {
    featureToggles.onLoad();

    ToolManager.currentTool().updateCursor();
	
	//check if there are any url parameters
	if (window.location.pathname.replace('/pixel-editor/','').length <= 1)  {
		//show splash screen
		Dialogue.showDialogue('splash', false);
	}
	//url parameters were specified
	else {
		let args = window.location.pathname.split('/');
		let paletteSlug = args[2];
		let dimentions = args[3];

		//fetch palette via lospec palette API
		fetch('https://lospec.com/palette-list/'+paletteSlug+'.json')
			.then(response => response.json())
			.then(data => {
				//palette loaded successfully
				palettes[paletteSlug] = data;
				palettes[paletteSlug].specified = true;

				//refresh list of palettes
				document.getElementById('palette-menu-splash').refresh();

				//if the dimentions were specified
				if (dimentions && dimentions.length >= 3 && dimentions.includes('x')) {
					let width = dimentions.split('x')[0];
					let height = dimentions.split('x')[1];
					
					//create new document
					Startup.newPixel(width, height);
				}
				//dimentions were not specified -- show splash screen with palette preselected
				else {
					//show splash
					Dialogue.showDialogue('new-pixel', false);
				}
			})
			//error fetching url (either palette doesn't exist, or lospec is down)
			.catch((error) => {
				console.warn('failed to load palette "'+paletteSlug+'"', error);
				//proceed to splash screen
				Dialogue.showDialogue('splash', false);
			});
	} 
};

//prevent user from leaving page with unsaved data
window.onbeforeunload = function() {
    if (documentCreated)
        return 'You will lose your pixel if it\'s not saved!';

    else return;
};