
function dieroll_mathrnd() {
    return 1 + Math.floor(6 * Math.random());
}

function rolldice() {
    var rndpool = document.getElementById('rnd').value;
    var dice_per_set = parseInt(document.getElementById('dperset').value);
    var set_count    = parseInt(document.getElementById('dsets').value);

    var sha1_rolls = new Array();
    var vals = "";
    document.getElementById('ans').value = "";

    for ( var set=0 ; set<set_count ; set++ ) {
        for ( var die=0 ; die<dice_per_set ; die++ ) {
            var roll = dieroll_mathrnd();
            while ( sha1_rolls.length == 0 ) {
                var rnd = hex_sha1(
                            Math.random()
                    + ":" + rndpool
                    + ":" + Math.random()
                    + ":" + (new Date()).toGMTString()
                    + ":" + Math.random()
                );

                for ( var i=0 ; i<20 ; i++ ) {
                    rnd = rnd.replace('0','1');
                    rnd = rnd.replace('7','2');
                    rnd = rnd.replace('8','3');
                    rnd = rnd.replace('9','4');
                    rnd = rnd.replace('a','5');
                    rnd = rnd.replace('b','6');
                    rnd = rnd.replace('c','');
                    rnd = rnd.replace('d','');
                    rnd = rnd.replace('e','');
                    rnd = rnd.replace('f','');
                }

                for ( var i=0 ; i<rnd.length ; i++ ) {
                    sha1_rolls[i] = parseInt(rnd.charAt(i));
                }
            }
            roll += sha1_rolls.pop();
            if (roll > 6) {
                roll -= 6;
            }
            vals += roll + " ";
        }
        if (set < set_count-1) {
            vals += "\n";
        }
    }

    document.getElementById('ans').value = vals;
}



