diff --git a/src/html5/include/close.png b/src/html5/include/close.png
new file mode 100644
index 0000000000..3c29292d4d
Binary files /dev/null and b/src/html5/include/close.png differ
diff --git a/src/html5/include/maximize.png b/src/html5/include/maximize.png
new file mode 100644
index 0000000000..e487352ba9
Binary files /dev/null and b/src/html5/include/maximize.png differ
diff --git a/src/html5/include/minimize.png b/src/html5/include/minimize.png
new file mode 100644
index 0000000000..608a633dab
Binary files /dev/null and b/src/html5/include/minimize.png differ
diff --git a/src/html5/include/window.js b/src/html5/include/window.js
index 228527b95d..ddc32c4e3c 100644
--- a/src/html5/include/window.js
+++ b/src/html5/include/window.js
@@ -7,10 +7,31 @@
* Based on shape.js
*/
+var window_icons = {};
+//load the window icons
+var image_names = ["maximize", "minimize", "close"];
+function load_icon(name) {
+ console.log("loading "+name);
+ var tmp_canvas = document.createElement('canvas');
+ var tmp_context = tmp_canvas.getContext('2d');
+ var image = new Image();
+ image.onload = function() {
+ show(""+name+"="+image);
+ tmp_context.drawImage(image, 0, 0);
+ var image_data = tmp_context.getImageData(0, 0, image.width, image.height);
+ window_icons[name] = image_data;
+ };
+ image.src = '/include/'+name+'.png';
+}
+
+for (var i in image_names) {
+ load_icon(image_names[i]);
+}
+
/**
* A simple button we use to decorate the window.
*/
-function Button(canvas_state, name, x, y, w, h, fill, click_callback) {
+function Button(canvas_state, name, x, y, w, h, fill, icon_name, click_callback) {
"use strict";
this.state = canvas_state;
this.name = name;
@@ -18,13 +39,22 @@ function Button(canvas_state, name, x, y, w, h, fill, click_callback) {
this.y = y || 0;
this.w = w || 1;
this.h = h || 1;
- this.fill = fill || '#AAAAAA';
+ var ctx = canvas_state.canvas.getContext('2d');
+ this.image = ctx.createImageData(w, h);
+ //var data = this.image.data;
+ for (var i=0; i