/*global document, jQuery, alert */

jQuery(document).ready(function () {
    
    displayDeleteColumn();
    griffinformsSetNames();
    
    jQuery("#griffinforms-add-column").click(function(){
        griffinformsAddColumn();
        displayDeleteColumn();
        griffinformsSetNames();
    });
    
    jQuery(".griffinforms-delete-column").click(function(){
        griffinformsDeleteColumn(this);
        displayDeleteColumn();
        griffinformsSetNames();
    });
    
    jQuery(".griffinforms-add-option").click(function(){
        var column = jQuery(this).parents(".griffinforms-optfield-column");
        griffinformsAddOption(column);
        displayDeleteOption(column);
    });
    
    jQuery(".griffinforms-delete-option").click(function(){
        var column = jQuery(this).parents(".griffinforms-optfield-column");
        griffinformsDeleteOption(this);
        displayDeleteOption(column);
    });
    
    /*----Sorting------*/
    
    jQuery(".griffinforms-optfield").sortable({
        axis: "x",
        cancel: ".griffinforms-option",
        cursor: "move",
        forcePlaceholderSize: true,
        placeholder: ".griffinforms-optfield-group-placeholder",
        update: function(event, ui) {
            griffinformsSetNames();
        }
    });
    
});

function griffinformsAddColumn() {
    var column = jQuery(".griffinforms-optfield-column").get(-1);
    var newColumn = jQuery(column).clone("deep");
    var columnId = jQuery(column).attr("id");
    var newColumnId = parseInt(columnId) + 1;
    jQuery(newColumn).attr("id", newColumnId);
    jQuery(newColumn).find(".griffinforms-option-text").val("");
    jQuery(newColumn).insertAfter(column);
}

function griffinformsDeleteColumn(column) {
    jQuery(column).parents(".griffinforms-optfield-column").remove();
}

function griffinformsAddOption(column) {
    var option = jQuery(column).find(".griffinforms-option").get(-1);
    var newOption = jQuery(option).clone("deep");
    jQuery(newOption).find(".griffinforms-option-text").val("");
    jQuery(newOption).insertAfter(option);
}

function griffinformsDeleteOption(deleteLink) {
    jQuery(deleteLink).parents(".griffinforms-option").remove();
}

function displayDeleteColumn() {
    if (isOnlyColumn()) {
        jQuery(".griffinforms-delete-column").hide();
    } else {
        jQuery(".griffinforms-delete-column").show();
    }
}

function displayDeleteOption(column) {
    if (isOnlyOption(column)) {
        jQuery(column).find(".griffinforms-delete-option").hide();
    } else {
        jQuery(column).find(".griffinforms-delete-option").show();
    }
}

function isOnlyColumn() {
    var count = jQuery(".griffinforms-optfield-column").length;
    if (count > 1) {
        return false;
    } else {
        return true;
    }
}

function isOnlyOption(column) {
    var count = jQuery(column).children(".griffinforms-option").length;
    if (count > 1) {
        return false;
    } else {
        return true;
    }
}

function griffinformsSetNames() {
    var i = 0;
    jQuery(".griffinforms-optfield-column").each(function(){
        var id = "options[" + i + "][]";
        jQuery(this).find("input").each(function(){
            jQuery(this).attr("name", id);
        });
        i++;
    });
}