function compute_moyenne() {
    var notes = $(".tf_field_note input").map( 
        function() {  return parseFloat($(this).val());  } 
    ).get();
    var coefs = $(".tf_field_coef input").map( 
        function() {  return parseFloat($(this).val());  } 
    ).get();
    var N = notes.length;
    var dp = 0.;
    var sum_coefs = 0.;
    for (var i=0; i < N; i++) {
        if (!(isNaN(notes[i]) || isNaN(coefs[i]))) {
            dp += notes[i] * coefs[i];
            sum_coefs += coefs[i];
        }
    }
    return dp / sum_coefs;    
}

// Callback select menu (UE code)
function enable_disable_fields_cb() {
    enable_disable_fields(this);
}
function enable_disable_fields(select_elt) {    
    // input fields controled by this menu
    var input_fields = $(select_elt).parent().parent().find('input');
    var disabled = false;
    if ($(select_elt).val() === "None") {
        disabled = true;
    }
    console.log('disabled=', disabled);
    input_fields.each( function () {
        var old_state = this.disabled;
        console.log("old_state=", old_state)
        if (old_state == disabled) {
            return; /* state unchanged */
        }
        var saved_value = $(this).data('saved-value');
        if (typeof saved_value == 'undefined') {
            saved_value = '';
        }
        var cur_value = $(this).val();
        // swap
        $(this).data('saved-value', cur_value);
        $(this).val(saved_value);
    });
    input_fields.prop('disabled', disabled);
}
function setup_text_fields() {
    $(".ueext_valid_select").each(
        function() {
            enable_disable_fields(this);
        }
    );
}

$().ready(function(){
    $(".tf_ext_edit_ue_validations").change(function (){
        $(".ext_sem_moy_val")[0].innerHTML=compute_moyenne();
    });
    $(".ueext_valid_select").change( enable_disable_fields_cb );

    setup_text_fields();
});