$(document).ready(function() {

    // Field help

    $('div.value p.hint').each(function() {
        $(this).hide();
        var hint_button = $('<img class="hint-button" src="/images/application/hint.png" />');
        $(this).parents('div.field').children('label').append(' ').append(hint_button);
        var hint = this;
        hint_button.click(function() {
            $(hint).toggle('fast');
        });
    });

    $('form.step2 fieldset:not(#fieldset-fall_2010_group) p.hint').each(function() {
        $(this).hide();
        var hint_button = $('<img class="hint-button" src="/images/application/hint.png" />');
        $(this).parents('fieldset').children('legend').append(' ').append(hint_button);
        var hint = this;
        hint_button.click(function() {
            $(hint).toggle('fast');
        });
    });

    // Mailing address

    function show_or_hide_mailing_address() {
        var has_mailing_address = $('#has_mailing_address');
        if (has_mailing_address.is(':checked')) {
            has_mailing_address.parent().nextAll().show();
        }
        else {
            has_mailing_address.parent().nextAll().hide();
        }
    }
    show_or_hide_mailing_address();
    $('#has_mailing_address').click(show_or_hide_mailing_address);
        
    // Special behavior for step 2
    
    function update_phases() {
        var phases_field = $('#ordered_phases');
        var phases = phases_field.attr('value').split(',');
        $('input[type=checkbox][id^=phase]').removeAttr('checked');
        for (var i = 1; i <= 7; i++) {
            $('div.field').removeClass('number' + i);
        }
        $.each(phases, function(i, phase) {
            $('input#' + phase).attr('checked', 'checked').parents('div.field').addClass('number' + (i + 1));
        });
    }
        
    $('form.step2').each(function() {
        update_phases();
        $(this).find('input[type=checkbox][id^=phase]').click(function(event) {
            var $fall_2010 = $('#fall_2010');
            if ($fall_2010.is(':checked')) {
                var lang = $('html').attr('lang');
                if (lang == 'fr') {
                    var msg = "Tu dois choisir parmi les options d'une seule année-programme.\n\n" + 
                              "Tu as indiqué tes préférences parmi les départs de l'année programme 2009-2010, " +
                              "souhaites-tu continuer avec cette sélection?";
                }
                else {
                    var msg = "You can only choose preferences within one program year.\n\n" +
                              "You have selected your preferences for the 2009-2010 program year, " +
                              "would you like to keep this selection?";
                }
                if (window.confirm(msg)) {
                    $fall_2010.removeAttr('checked');
                }
                else {
                    event.preventDefault();
                    return;
                }
            }
            var $ordered_phases = $('#ordered_phases');
            var phases_string = $ordered_phases.attr('value');
            var phases = phases_string.length > 0 ? phases_string.split(',') : [];
            var selected_phase = $(this).attr('name');
            if ($(this).is(':checked')) {
                phases.push(selected_phase);
            }
            else {
                phases = $.grep(phases, function(phase) {
                    return phase != selected_phase;
                });
            }
            $ordered_phases.attr('value', phases.join(','));
            update_phases();
        });
        $(this).find('input#fall_2010').click(function(event) {
            var $ordered_phases = $('#ordered_phases');
            if ($ordered_phases.attr('value')) {
                var lang = $('html').attr('lang');
                if (lang == 'fr') {
                    var msg = "Tu dois choisir parmi les options d'une seule année-programme.\n\n" + 
                              "Tu as sélectionné le départ d'automne 2010 (année-programme 2010-2011), " +
                              "souhaites-tu continuer avec cette sélection?";
                }
                else {
                    var msg = "You can only choose preferences within one program year.\n\n" +
                              "You have selected the Fall 2010 departure (2010-2011 program year), " +
                              "would you like to keep this selection?";
                }
                if (window.confirm(msg)) {
                    $ordered_phases.attr('value', '');
                    update_phases();
                }
                else {
                    event.preventDefault();
                }
            }
        });
    });

});
