<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Minesweeper</title>
    <style>
        td {
            border: 1px solid darkgray;
            padding: 2px;
            width: 25px;
            height: 25px;
            text-align: center;
            vertical-align: middle;
            font-weight: bolder;
            text-shadow: 1px 0 #888888;
            background-color: gray;
        }

        td.x3 {
            color: red;
        }

        td.x2 {
            color: green;
        }

        td.x1 {
            color: blue;
        }

        table {
            border-spacing: 0;
            border-collapse: collapse;
        }
    </style>
</head>

<body>
    <h1>Minesweeper</h1>
    <table id="matrix"></table>
    <script>
        var matrixModel;
        var matrxiView = document.getElementById('matrix');
        var totalNumberOfBombs = 7;
        var size = 16;
        var matrixModel;

        init(size);
        placeBombs();
        calculateNearByBombs();
        showMatrix();

        matrix.rows[0].cells[0].isBomb = true;
        matrix.rows[0].cells[0].isOpen = true;
        matrix.rows[0].cells[1].bombsNearby = 9;
        matrix.rows[0].cells[1].isOpen = true;
        matrix.rows[0].cells[2].isOpen = true;

        function init(size) {
            var matrixModel = {};
            matrixModel.rows = [];
            for (var rowCounter = 0; rowCounter < size; rowCounter++) {
                var newRow = {};
                newRow.cells = [];
                for (var cellCounter = 0; cellCounter < size; cellCounter++) {
                    var newCell = {};
                    newCell.isBomb = false;
                    newCell.isOpen = false;
                    newCell.bombsNearby = 0;
                    newRow.cells.push(newCell);
                }
                matrixModel.rows.push(newRow);
            }
        }
        function showMatrix() {
            matrxiView.innerHTML = '';
            for (var rowCounter = 0; rowCounter < size; rowCounter++) {
                var viewRow = matrxiView.insertRow();
                var modelRow = matrixModel.rows[rowCounter];
                for (var cellCounter = 0; cellCounter < modelRow.cells.lenght; cellCounter++) {
                    var viewCell = viewRow.insertCell();
                    var modelCell = modelRow.cells[cellCounter];
                    if (modelCell.isOpen) {
                        viewCell.style.backgroundcolor = 'lightcyan';
                        if (modelCell.isBomb) {
                            viewCell.innerHTML = '💣';
                        } else if (modelCell.bombsNearby > 0) {
                            viewCell.innerHTML = modelCell.bombsNearby;
                            viewCell.classList.add('x' + modelCell.bombsNearby)
                        }
                    }
                }
            }
        }


        function placeBombs() {

        }

        function calculateNearByBombs() {

        }


    </script>
</body>

</html>