$(document).ready(function()
{   

    /* UPDATE CATEGORY LIST AND PARTNERS WHEN TYPE CHANGES */
    
    $("#role-field").change(function() {
        
        /* Empty select box to start over */
        $("#category-field").children().remove();
        
        var categoryType = "";
        
        switch ($(this).attr("value")) {
            case "solacc": {
                categoryType = "solo";
                $("#player-instructions").fadeIn()
                                         .html("<p>Trage nun hier deine(n) <strong>jugendlichen Begleitpartner</strong> ein:</p>");
                $("#players").fadeIn()
                             .find(".add-player").fadeIn();
                break;
            }
            case "sol": {
                categoryType = "solo";
                $("#player-instructions").fadeOut(function() { $(this).html(""); });
                $("#players").fadeOut();
                break;
            }
            case "acc": {
                categoryType = "solo";
                $("#player-instructions").fadeIn()
                                         .html("<p>Trage nun hier <strong>den von dir begleiteten Solisten</strong> ein:</p>");
                $(".player:not(:first)").each(function() {
                    $(this).fadeOut(function() { $(this).remove(); })
                });     
                $("#players").fadeIn();
                $("#players .add-player").fadeOut();
                break;
            }
            case "ens": {
                categoryType = "ensemble";
                $("#player-instructions").fadeIn()
                                         .html("<p>Trage nun hier <strong>deine(n) Ensemblepartner</strong> ein:</p>");
                $("#players").fadeIn().find(".add-player").fadeIn();
                break;
            }
            default: {
                /* If no type selected, ask user to do so */
                $("#category-field").append('<option value="0">(Bitte oben auswählen)</option>');
                $("#player-instructions, #players").fadeOut();
                break;
            }
        }
        
        if (categoryType != "") {    
            /* Add dummy option */
            $("#category-field").append('<option value="0">Bitte wählen</option>');
            
            /* Load and add categories for selected type */
            $.post("logic/populate_select.php", { type: categoryType, ajax: 'true' }, function(xml) {
                
                $('option', xml).each(function(i) {
                    var id = $(this).find("id").text();
                    var name = $(this).find("name").text();
                    $("#category-field").append('<option value="' + id + '">' + name + '</option>');
                });
            });
        }
    });
    
    
    /* UPDATE PIECE FORM WHEN PIECE PROVIDER CHANGES */
    
    $("#provider-field").change(function() {
        
        switch($(this).attr("value")) {
            
            case "responsible":
                $("#responsible").fadeOut(function() {
                    $("#pieces").fadeIn();
                });
                break;
                
            case "lazy":
                $("#pieces").fadeOut(function() {
                    $("#responsible").fadeIn();
                });
                break;
            
            default:
                $("#responsible, #pieces").fadeOut();
                break;
        }
    });
    
    
    /* ADDING NEW PLAYERS */
    
    $(".add-player").click(function() {
        
        /* Clone player box */
        var player = $(this).closest(".player");
        var clone = player.clone(true).fadeIn().insertAfter(player);
        
        /* Empty input fields */
        clone.find(":input[type=text]").each(function() {
            $(this).attr("value", "");
        });
        
        /* Remove 'invalid' marking from labels */
        clone.find("label").removeClass("invalid");
        
        /* Make remove (minus) button visible on new box */
        clone.find(".remove-player").show();
    });
    
    
    /* REMOVING PLAYERS */
    
    $(".remove-player").click(function() {
        /* Remove player box associated with the button */
        $(this).closest(".player").fadeOut(function() {
            $(this).remove();
        });
    });
    
    
    /* ADDING NEW PIECES */
    
    $(".add-piece").click(function() {
        
        /* Clone piece box */
        var piece = $(this).closest(".piece");
        var clone = piece.clone(true).fadeIn().insertAfter(piece);
        
        /* Empty input fields */
        clone.find(":input[type=text]").each(function() {
            $(this).attr("value", "");
        });
        
        /* Remove 'invalid' marking from labels */
        clone.find("label").removeClass("invalid");
        
        /* Make remove (minus) button visible on new box */
        clone.find(".remove-piece").show();
    });
    
    
    /* REMOVING PIECES */
    
    $(".remove-piece").click(function() {
        /* Remove piece box associated with the button */
        $(this).closest(".piece").fadeOut(function() {
            $(this).remove();
        });
    });
    
    
    /* TRIGGER UPDATES ON PAGE RELOAD */
    
    $("#role-field").change();
    $("#provider-field").change();
    
    
    /* ADD SUBMIT BUTTON */
    
    $("#submit").append('<input id="submit-button" type="submit" name="submit" value="Anmeldung absenden" />');
});



