Euromilhões

HTML

<label for="numero_de_tickets">Numero de Tickets</label><input type="text" name="numero_de_tickets" value="1" id="numero_de_tickets"><br />
<button id="empregado_do_balcao">Comprar ao empregado do balcão</button><br />
<button id="boazona_do_sorteio">Ver a boazona do Sorteio</button>

CSS

.aposta{
    overflow: hidden;
    width: 100%;
    margin: 10px;
    background-color: pink;
}

.numero,
.estrela,
.escolhido,
.sorte{
    display: block;
    width: 25px;
    margin: 5px;
    float: left;
    cursor: pointer;
    text-align: center;
    font-family: Helvetica, Arial, sans-serif;
}

.numero{background-color: blue;}
.estrela{background-color: yellow;}
.escolhido{background-color: red;}
.sorte{background-color: green;}

JavaScript

var EuroMilhoes = function() {
    var that = this,
        d = document;

    this.opcoes = {
        numeros: 50,
        estrelas: 9,
        limiteNumerosEscolhidos: 5,
        limiteEstrelasEscolhidas: 2
    };

    this.apostasRealizadas = [];
    this.sorteioNumeros = [];
    this.sorteioEstrelas = [];
/*
        Visto que o objectivo e usar arrays... vou usar dois porque é uma tanga fazer arrays multi-dimensionais, em vez de objectos...
        Já está aí um multidimensional para quem quiser!
    */
    this.sorteNumeros = [];
    this.sorteEstrelas = [];

    this.geraSorteio = function() {

        if (!that.sorteioNumeros.length && !that.sorteioEstrelas.length) {
            for (var i = that.opcoes.limiteNumerosEscolhidos; i--;) {
                that.sorteioNumeros.push(Math.ceil(Math.random() * that.opcoes.numeros));
            }

            for (var n = that.opcoes.limiteEstrelasEscolhidas; n--;) {
                that.sorteioEstrelas.push(Math.ceil(Math.random() * that.opcoes.estrelas));
            }

            that._verificaSorteio();
        } else {
            alert("Espera ate a proxima semana!\n Ou entao compra mais!");
        }
    };

    this.numeroDeApostas = function(NrApostas) {
        for (var i = NrApostas; i--;) {
            that.apostasRealizadas[i] = [];
            that.apostasRealizadas[i].numeros = "";
            that.apostasRealizadas[i].estrelas = "";
            that._criaNumeros(i);
            that._criaEstrelas(i);
        }
    };

    this.escolhidosPeloUser = function(event) {
        var elemento = event.target,
            findNumber = /[0-9]/,
            aposta = elemento.parentNode.className.match(findNumber),
            numero = elemento.innerHTML;
/*
            Descobrir se é um numero ou uma estrela.    
        */

        if (elemento.className.indexOf('numero') > -1) {
            //é um numero
            var limitNumeros = that.apostasRealizadas[aposta].numeros.split(',');
            if...