//init variables
var canvasSize; // REFACTOR: Canvas class / getCanvasSize method
var zoom = 7; // REFACTOR: EditorState class/IIFE?
var lastMouseClickPos = [0,0]; // REFACTOR: Input IIFE via getter?
var documentCreated = false; // REFACTOR: EditorState

//common elements
// REFACTOR: put brush and eyedropper preview in the respective tool implementations
var brushPreview = document.getElementById("brush-preview");
var eyedropperPreview = document.getElementById("eyedropper-preview");

// REFACTOR: File class?
var canvasView = document.getElementById("canvas-view");
// REFACTOR: find some way to put these in ColorModule?
var colors = document.getElementsByClassName("color-button");
var colorsMenu = document.getElementById("colors-menu");

// main canvas
// REFACTOR: carefully check if it's possible to remove this one
var canvas = document.getElementById('pixel-canvas');
// REFACTOR: find some way to put these in ColorModule?
var currentGlobalColor;

// Layers
// REFACTOR: File class / IIFE?
var layers = [];
// REFACTOR: EditorState / File class?
var currentLayer;

// VFX layer used to draw previews of the selection and things like that
// REFACTOR: File class
var VFXLayer;
// VFX canvas
var VFXCanvas = document.getElementById('vfx-canvas');

// TMP layer
// REFACTOR: File class
var TMPLayer;
// TMP canvas
var TMPCanvas = document.getElementById('tmp-canvas');

// Pixel grid layer
// REFACTOR: File class
var pixelGrid;
// Pixel grid canvas
var pixelGridCanvas;

// REFACTOR: I was thinking that the special layers (pixel grid, checkerboard ecc) could be an extension
// or a variatin of the standard Layer class? I wonder if we can use inheritance or something to
// recycle stuff

// Index of the first layer the user can use in the layers array
// REFACTOR: Consts?
var firstUserLayerIndex = 2;
// Number of layers that are only used by the editor
// REFACTOR: Consts?
var nAppLayers = 3;