var curFilter=0;
var curRoll="reroll_none";
var selections = Array();
var maxDice = 6;

function setFiltersOff(){
    var newimg;
    newimg ="button_filter_none.jpg";
    document.getElementById("filter_none").src=newimg;
    newimg ="button_filter_2up.jpg";
    document.getElementById("filter_two").src=newimg;
    newimg ="button_filter_3up.jpg";
    document.getElementById("filter_three").src=newimg;
    newimg ="button_filter_4up.jpg";
    document.getElementById("filter_four").src=newimg;
    newimg ="button_filter_5up.jpg";
    document.getElementById("filter_five").src=newimg;
    newimg ="button_filter_6up.jpg";
    document.getElementById("filter_six").src=newimg;  
}

function setFilterOn(filter){
    setFiltersOff();
    var newimg;   
    if (filter == "filter_none"){
	newimg ="button_filter_none_lit.jpg";
	curFilter = 0;
	setRollTo("reroll_none");
    }else if (filter == "filter_two"){
	newimg ="button_filter_2up_lit.jpg";
	curFilter = 2;
    }else if (filter == "filter_three"){
	newimg ="button_filter_3up_lit.jpg";
	curFilter = 3;
    }else if (filter == "filter_four"){
	newimg ="button_filter_4up_lit.jpg";
	curFilter = 4;
    }else if (filter == "filter_five"){
	newimg ="button_filter_5up_lit.jpg";
	curFilter = 5;
    }else if (filter == "filter_six"){
	newimg ="button_filter_6up_lit.jpg";
	curFilter = 6;
    }
    document.getElementById(filter).src=newimg;
}

function setRollsOff(){
    var img;
    img = "button_filter_none.jpg";
    document.getElementById("reroll_none").src=img;
    img = "button_reroll_misses.jpg";
    document.getElementById("reroll_misses").src=img;
    img = "button_reroll_hits.jpg";
    document.getElementById("reroll_hits").src=img;
}

function setRollTo(roll){    
    setRollsOff();    
    var img;
    if(curFilter == 0){ roll = "reroll_none"; }
    if (roll == "reroll_none"){
	img = "button_filter_none_lit.jpg";
    }else if (roll == "reroll_misses"){
	img = "button_reroll_misses_lit.jpg";
    }else if (roll == "reroll_hits"){
	img = "button_reroll_hits_lit.jpg";
    }

    document.getElementById(roll).src = img;
    curRoll = roll;
}

function quick(quick){
    if(quick == '1d6'){
	document.getElementById('nDice').value = 1;
	rollDice();
    }else if(quick == '2d6'){
	document.getElementById('nDice').value = 2;
	rollDice();
    }else if(quick == '3d6'){
	document.getElementById('nDice').value = 3;
	rollDice();
    }else if(quick == 'd3'){
	document.getElementById('nDice').value = 1;
	maxDice = 3;
	rollDice();
	maxDice = 6;
    }
}

function usePrev(){
    var total = 0;
    var x = 1;
    for (x; x <= 6; x++){
	if (selections[x] == 1){
	    total += parseInt(document.getElementById("r"+x).innerHTML);
	}
    }
    document.getElementById("nDice").value = total;
}

function deselectResults(res){
    var div = document.getElementById("r"+res);
    div.style.fontSize = "16px";
    div.style.fontWeight = "bold";
    div.style.color = "red";
}

function selectResults(res){
    
    if (selections[res] == 0 || !selections[res]){
	selections[res] = 1;
    }else{
	selections[res] = 0;
	deselectResults(res);
	return;
    }

    var div = document.getElementById("r"+res);        

    div.style.fontSize = "18px";
    div.style.fontWeight = "bold";
    div.style.color = "green";
}

function roll(){
    var num = Math.random();
    return (Math.ceil(num * maxDice));
}

function rollDice(){
    var t = Array();
    var num = parseInt(document.getElementById("nDice").value);
    var x;

    for (x = 1; x <= 6; x++){
	if( x >= curFilter){
	    selections[x] = 0;
	    selectResults(x);
	    selections[x] = 1;
	}else{	    
	    deselectResults(x);
	    selections[x] = 0;
	}
    }

    for (x = 0; x < 7; x++){
	t[x] = 0;
    }
    for (x = 0; x < num; x++){
	var n = roll();
	if (n < curFilter && curRoll == "reroll_misses"){
	    n = roll();
	}
	if (n >= curFilter && curRoll == "reroll_hits"){
	    n = roll();
	}

	t[n]++;
    }
    var total = 0;
    var success = 0;
    var fail = 0;
    for(x = 1; x < 7; x++){
	document.getElementById('r'+x).innerHTML = t[x];
	total += t[x] * x;
	if (x >= curFilter){
	    success += t[x];
	}else{
	    fail += t[x];
	}
    }

    document.getElementById('total').innerHTML 
	= total + " (" + success + " PASS, " + fail + " FAIL)";
}

function initDice(){

    setTimeout(function() { window.scrollTo(0, 1) }, 100); 
    setFilterOn('filter_none');
    setRollTo('reroll_none');
    deselectResults(1);
    deselectResults(2);
    deselectResults(3);
    deselectResults(4);
    deselectResults(5);
    deselectResults(6);
}
