// settingvalues_custom.js

function GenerateFormTextElements(textValue) {
    var textElement = "<input name='textValue' class='InputTextValue' value='" + textValue + "' size='30'>";
    var btnDefault = "<a href='#' class='BtnSetDefaultValue'>Default</a>";
    var btnUpdate = "<a href='#' class='BtnUpdateTextValue'>Update</a>";
    var btnRemove = "<a href='#' class='BtnRemoveTextValue'>Remove</a>";

    return textElement + " " + btnDefault + " " + btnUpdate + " " + btnRemove;
}

function GenerateFormBooleanElements(booleanValue) {
    var checked1 = "";
    var checked2 = "";
    if (booleanValue.toLowerCase() == "true") {
        checked1 = " checked='checked'";
    }
    else if (booleanValue.toLowerCase() == "false") {
        checked2 = " checked='checked'";
    }

    var booleanElement1 = "<input type='radio' name='booleanValue' class='booleanValue' value='true'" + checked1 + ">True";
    var booleanElement2 = "<input type='radio' name='booleanValue' class='booleanValue' value='false'" + checked2 + ">False";

    return booleanElement1 + " " + booleanElement2;
}

function SortTextValues(initValue, reverse) {
    if (initValue != "") {
        var valueSplit = initValue.split(";");
        valueSplit.sort();
        if (reverse == true) {
            valueSplit.reverse();
        }

        var returnValue = "";
        for (k = 0; k < valueSplit.length; k++) {
            returnValue += valueSplit[k] + ";";
        }

        if (returnValue != "") {
            returnValue = returnValue.substring(0, returnValue.length - 1);
        }

        return returnValue;
    }
}

function AddTextValue() {
    $(".addTextValue").after("<tr class='textValue'><td class='ms-formlabel' noWrap='' vAlign='top'>&nbsp;</td><td class='ms-formbody' vAlign='top'>" + GenerateFormTextElements("") + "</td></tr>");
    $(".InputTextValue").blur(function () {
        UpdateTextValues();
    });

    $(".BtnSetDefaultValue").click(function () {
        SetDefaultValue($(this));
    });

    $(".BtnUpdateTextValue").click(function () {
        UpdateTextValues();
    });

    $(".BtnRemoveTextValue").click(function () {
        RemoveTextValue($(this));
    });
}

function UpdateTextValues() {
    var insertValue = "";
    $(".textValue").each(function (index) {
        var textValue = $(this).find("input[name='textValue']").val()
        insertValue += textValue + ";";
    });

    if (insertValue != "") {
        insertValue = insertValue.substring(0, insertValue.length - 1);
        insertValue = SortTextValues(insertValue, false);
    }

    $("textarea[title='Value']").val(insertValue);
    $("#tmpValueText").remove();
    $("textarea[title='Value']").after("<span id='tmpValueText'>" + $("textarea[title='Value']").val() + "</span>");
}

function RemoveTextValue(element) {
    $(element).closest("tr").remove();
    UpdateTextValues();
}

function SetDefaultValue(element) {
    var defaultValue = $(element).closest("td").find("input[name='textValue']").val();
    $("textarea[title='Default']").val(defaultValue);
    $("#tmpDefaultText").remove();
    $("textarea[title='Default']").after("<span id='tmpDefaultText'>" + $("textarea[title='Default']").val() + "</span>");
}

function SetBooleanValue(element) {
    var booleanValue = $(element).val();
    $("textarea[title='Default']").val(booleanValue);
}

function initTextValues() {
    var initValue = $("textarea[title='Value']").val();
    if (initValue != "") {
        initValue = SortTextValues(initValue, true);
        var valueSplit = initValue.split(";");
        for (j = 0; j < valueSplit.length; j++) {
            var tmpValue = valueSplit[j];
            $("select[title*='Type']").closest('tr').after("<tr class='textValue'><td class='ms-formlabel' noWrap='' vAlign='top'>&nbsp;</td><td class='ms-formbody' vAlign='top'>" + GenerateFormTextElements(tmpValue) + "</td></tr>");
        }
    }
    else {
        $("select[title*='Type']").closest('tr').after("<tr class='textValue'><td class='ms-formlabel' noWrap='' vAlign='top'>&nbsp;</td><td class='ms-formbody' vAlign='top'>" + GenerateFormTextElements("") + "</td></tr>");
    }

    var btnAdd = "<a href='#' id='BtnAddTextValue'>Add</a>";
    $("select[title*='Type']").closest('tr').after("<tr class='addTextValue'><td class='ms-formlabel' noWrap='' vAlign='top'>&nbsp;</td><td class='ms-formbody' vAlign='top'>" + btnAdd + "</td></tr>");
    $("#BtnAddTextValue").click(function () {
        AddTextValue();
    });

    $(".InputTextValue").blur(function () {
        UpdateTextValues();
    });

    $(".BtnSetDefaultValue").click(function () {
        SetDefaultValue($(this));
    });

    $(".BtnUpdateTextValue").click(function () {
        UpdateTextValues();
    });

    $(".BtnRemoveTextValue").click(function () {
        RemoveTextValue($(this));
    });
}

function initBooleanValue() {
    var initValue = $("textarea[title='Default']").val();
    $("select[title*='Type']").closest('tr').after("<tr class='textValue'><td class='ms-formlabel' noWrap='' vAlign='top'>Default</td><td class='ms-formbody' vAlign='top'>" + GenerateFormBooleanElements(initValue) + "</td></tr>");
}

$(document).ready(function () {
    $("textarea[title='Value']").closest("tr").hide();
    $(".textValue").remove();
    $(".addTextValue").remove();
    $("textarea[title='Default']").closest("tr").hide();
    $("textarea[title='Description']").closest("tr").hide();
    $("select[title='Scope']").closest("tr").hide();
    $("input[title='SettingGroup']").closest("tr").hide();
    $("input[title='ReadOnly']").closest("tr").hide();
    $("input[title='Active']").closest("tr").hide();
    $("textarea[title='Value']").css("display", "");
    $("textarea[title='Default']").css("display", "");
    $("#tmpValueText").remove();
    $("#tmpDefaultText").remove();
    var selectedType = $("select[title*='Type']").val();
    if (selectedType != "") {
        if (selectedType == "Dropdown") {
            $("textarea[title='Value']").closest("tr").show();
            $("textarea[title='Default']").closest("tr").show();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
            $("textarea[title='Value']").css("display", "none");
            $("textarea[title='Default']").css("display", "none");
            $("textarea[title='Value']").after("<span id='tmpValueText'>" + $("textarea[title='Value']").val() + "</span>");
            $("textarea[title='Default']").after("<span id='tmpDefaultText'>" + $("textarea[title='Default']").val() + "</span>");
            initTextValues();
        }
        else if (selectedType == "Boolean") {
            initBooleanValue();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
        else if (selectedType == "RegEx") {
            $("textarea[title='Value']").prop("disabled", false);
            $("textarea[title='Value']").closest("tr").show();
            $("textarea[title='Default']").closest("tr").show();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
        else if (selectedType == "MultiLine") {
            $("textarea[title='Default']").closest("tr").show();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
        else if (selectedType == "Playlist") {
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
    }

    $("select[title*='Type']").change(function () {
        $("textarea[title='Value']").closest("tr").hide();
        $(".textValue").remove();
        $(".addTextValue").remove();
        $("textarea[title='Default']").closest("tr").hide();
        $("textarea[title='Description']").closest("tr").hide();
        $("select[title='Scope']").closest("tr").hide();
        $("input[title='SettingGroup']").closest("tr").hide();
        $("input[title='ReadOnly']").closest("tr").hide();
        $("input[title='Active']").closest("tr").hide();
        $("textarea[title='Value']").css("display", "");
        $("textarea[title='Default']").css("display", "");
        $("#tmpValueText").remove();
        $("#tmpDefaultText").remove();
        if ($(this).val() == "Dropdown") {
            $("textarea[title='Value']").closest("tr").show();
            $("textarea[title='Default']").closest("tr").show();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
            $("textarea[title='Value']").css("display", "none");
            $("textarea[title='Default']").css("display", "none");
            $("textarea[title='Value']").after("<span id='tmpValueText'>" + $("textarea[title='Value']").val() + "</span>");
            $("textarea[title='Default']").after("<span id='tmpDefaultText'>" + $("textarea[title='Default']").val() + "</span>");
            initTextValues();
        }
        else if ($(this).val() == "Boolean") {
            initBooleanValue();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
        else if ($(this).val() == "RegEx") {
            $("textarea[title='Value']").prop("disabled", false);
            $("textarea[title='Value']").closest("tr").show();
            $("textarea[title='Default']").closest("tr").show();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
        else if ($(this).val() == "MultiLine") {
            $("textarea[title='Default']").closest("tr").show();
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
        else if ($(this).val() == "Playlist") {
            $("textarea[title='Description']").closest("tr").show();
            $("select[title='Scope']").closest("tr").show();
            $("input[title='SettingGroup']").closest("tr").show();
            $("input[title='ReadOnly']").closest("tr").show();
            $("input[title='Active']").closest("tr").show();
        }
    });
});