$(document).ready(function() {
	var initialValues = getPointBreakout();
    UpdateInterface(initialValues);
    
    $('select').change(function() {
        var breakout = getPointBreakout();
        UpdateInterface(breakout);
        $(this).effect("highlight", {}, 1000);
    });
    
    var options = { 
    	target: '#graybox',
    	success:    function() { 
						        $('#graybox').effect("bounce", {times:3, distance:20}, 300);
						        setTimeout(location.replace('judge_page.html'),6000);
						    	} 
	}; 
	   
    $('#graybox input').click(function(){
    	$(this).attr("value","saving....").attr("disabled","disabled");
    	$('#rankings').ajaxSubmit(options); 
    })
});

function UpdateInterface(breakout){
	$('#totalPoints').text(breakout.TotalAvailable);
	$('#pointsRemaining').text(breakout.PointsLeft);
	$('#tally').text(breakout.PointsLeft);
	$('#average').text(breakout.AverageScores);	
	$('#good').text(breakout.GoodScores);	
	$('#excellent').text(breakout.ExcellentScores);	
	$('#graybox').effect("bounce", {times:3, distance:10}, 300);
	$('#tally').effect("highlight", {}, 1000);
}

function getOutstandingPoints() {
    var pointsOutstanding = Math.floor($('select').length * .8);
    $('select').each(function() {
        pointsOutstanding = pointsOutstanding - parseInt(this.value);
    });
    return pointsOutstanding;
}

function getPointBreakout() {

    var unacceptable = 0;
    var average = 0;
    var good = 0;
    var excellent = 0;

    $('select').each(function() {
        switch (this.value) {
        case "1":
            average++;
			$(this).css('background-color', '#e6ffe6');
            break;
        case "2":
            good++;
			$(this).css('background-color', '#e6ffe6');
            break;
        case "3":
            excellent++;
			$(this).css('background-color', '#e6ffe6');
            break;
        default:
            unacceptable++;
			$(this).css('background-color', '#ececec');
        }
    });

    var pointBreakout = {
        TotalAvailable : Math.floor($('select').length * .8) ,
        PointsLeft : getOutstandingPoints(),
        UnacceptableScores : unacceptable,
        AverageScores : average,
        GoodScores : good,
        ExcellentScores : excellent
    }

    return pointBreakout;
}