//
// canvas.js - a toy program to scribble using closures
//
// Copyright (C) 2005 Satoru Takabayashi <satoru@namazu.org> 
//     All rights reserved.
//     This is free software with ABSOLUTELY NO WARRANTY.
//
// You can redistribute it and/or modify it under the terms of 
// the GNU General Public License version 2.
//

function makeHandler(element) {
    var depth = 2;
    var closure = function() {
        if (depth <= 16) {
            var c = (16 - depth).toString(16);
            element.style.backgroundColor = "#" + c + c + c;
            depth++;
        }
    }
    return closure;
}

function makeTile(size) {
    var table = document.createElement("table");
    var tbody = document.createElement("tbody");
    for (var i = 0; i < size; ++i) {
        var tr = document.createElement("tr");
        for (var j = 0; j < size; ++j) {
            var td = document.createElement("td");
            td.onmouseover = makeHandler(td);
            tr.appendChild(td);
        }
        tbody.appendChild(tr);
    }
    table.appendChild(tbody);
    return table;
}

function makeCanvas() {
    var canvas = document.getElementById("canvas");
    if (canvas) {
        var tile = makeTile(32);
        canvas.appendChild(tile);
    }
}

function addOnLoadEvent(func) {
  if (window.addEventListener) {
    window.addEventListener("load", func, false);
  } else if (window.attachEvent) {  // for IE
    window.attachEvent("onload", func);
  } else  {
    window.onload = func;
  }
}

addOnLoadEvent(makeCanvas);
