var cols, rows, cells={}, style=0; function show() { cols = parseInt(document.getElementById("cols").value); rows = parseInt(document.getElementById("rows").value); var cards = []; for (var i = 0 ; i < rows * cols ; i++) { cards.push(i + 1); } showStack("tbl1", cards); cards = deal(cards); showStack("tbl2", cards); } function showStack(id, cards) { var tbl = document.getElementById(id); tbl.innerHTML = ""; var n = cards.length; for (var row = 0 ; row < rows ; row++) { var rowDiv = document.createElement("div"); tbl.appendChild(rowDiv); for (var col = 0 ; col < cols ; col++) { rowDiv.appendChild(newCell(id, cards[row + rows * col])); } } } function newCell(id, v) { var div = document.createElement("div"); div.innerHTML = v; cells[id + "." + v] = div; div.style.cursor = "pointer"; div.addEventListener( "mousedown", function(evt) { onClick(evt, id, v); }, false ); div.addEventListener( "mouseup", function(evt) { if (evt.preventDefault) { evt.preventDefault(); evt.stopPropagation(); } }, false ); return div; } function onClick(evt, id, v) { if (evt.preventDefault) { evt.preventDefault(); evt.stopPropagation(); } var cellA = cells["tbl1." + v], cellB = cells["tbl2." + v], cell = cells[id + "." + v]; if (evt.button == 2) { cellA.className = ""; cellB.className = ""; } else { if (cell.className && cell.className.length > 1) { var n = parseInt(cell.className.substr(1)); n = (n + 1) % 5; style = n; } cellA.className = "s" + style; cellB.className = "s" + style; } } function deal(cards) { var out = [], i = 0; for (var col = 0 ; col < cols ; col++) { for (var row = 0 ; row < rows ; row++) { out.push(cards[i]); i = (i + cols) % cards.length; } i = (i + 1) % cards.length; } return out; }