﻿function AddEditNode(currentlySelectedDivType, pk, nodeType, parentDiv, displayHtml, nodeFormat, required, displayText, treeId, temp, designQuestion, question, advice, display, help, dataName, h) {
    $('#updater').show();
    if (pk > 0) {
        if (nodeType != currentlySelectedDivType) {
            $('#updater').hide();
            alert("You cannot change a Node Type once it has been created!  Your changes will not be saved.");
            $("#NodeType").val(currentlySelectedDivType);
            return;
        }
    }

    if (nodeType != "Field" && nodeType != "Section") {
        if (dataName.length < 1 && nodeType != "Field") {
            $('#updater').hide();
            alert("You must enter a Data Name! Your changes will not be saved");
            return;
        }
    }

    if (nodeType != 0) {
        $.ajax({
            type: "POST",
            url: "/Home/AddEditNode",
            data: { CurrentSelectedDivType: currentlySelectedDivType, TreeId: treeId, PK: pk, ParentID: parentDiv, NodeType: nodeType, FormatType: nodeFormat, DesignQuestion: designQuestion, Question: question, Display: display, Advice: advice, Help: help, DataName: dataName, Required: required, DisplayHtml: displayHtml },
            dataType: "json",
            error: function () {
                alert('Error loading data 6');
                $('#updater').hide();
            },
            success: function (data) {
                if (data.newId == 0) {
                    alert("You already have a control with that Data Name!");
                    $('#updater').hide();
                    return;
                }

                if ((currentlySelectedDivType != "Tree" && currentlySelectedDivType != "Section") && nodeType == "Section" && h == -1) {
                    $('#updater').hide();
                    alert("You can only add a Section to the tree root, not to a node!");
                    return;
                }

                var GrandParent = $("#" + currentNode).parents('div:eq(0)').parent().attr('id');
                if (pk < 1) {
                    $('#' + parentDiv).append(unescape(data.designHtml));
                    $('#button' + parentDiv).attr('disabled', '');
                }
                else {
                    $('#spanQuestion' + parentDiv).text(unescape(designQuestion));
                    if (nodeType == "Textbox") {
                        $('#spanType' + parentDiv).text("(" + unescape(data.nodeType) + " - " + nodeFormat + ")");
                    }
                    else {
                        $('#spanType' + parentDiv).text("(" + unescape(data.nodeType) + ")");
                    }
                }

                var attachToDiv;
                if (currentlySelectedDivType == "Field") {
                    attachToDiv = "displayDiv" + currentSelectedDiv;
                }
                else {
                    attachToDiv = "displayDiv" + parentDiv;
                }

                if (currentlySelectedDivType == "Loop") {
                    attachToDiv = "hiddenLoopHolderDiv" + currentSelectedDiv;
                }

                //rename controls if dataName was changed
                if (data.dataNames) {
                    if (data.dataNames.oldName != data.dataNames.newName) {
                        $("input[name=" + data.dataNames.oldName + "]").attr('name', data.dataNames.newName);
                        $('#optionsDiv' + data.dataNames.oldName).attr('id', 'optionsDiv' + data.dataNames.newName);
                    }
                }
                //set up options
                var options = "";
                if (required == "True") {
                    if (data.newId < 0) {
                        options = "<label title=" + nodeType + " class=required name=required" + currentSelectedDiv + " id=required" + dataName + ">(required)</label>";
                    }
                    else {
                        options = "<label title=" + nodeType + " class=required name=required" + data.newId + " id=required" + dataName + ">(required)</label>";
                    }
                }
                if (help) {
                    options = options + "<a class=optionsHelp onclick=ShowHelp('" + help + "')><img class=optionsHelp src='../../Content/img/question.gif'/></a>";
                }
                debugger
                switch (nodeType) {
                    case 'Section':
                        if (data.newId < 0) {
                            $('#sectionLabel' + currentSelectedDiv).text(displayText);
                            //                                    $('#adviceDiv').append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        else {
                            $('#displayDiv' + currentSelectedDiv).append($('<fieldset class=sectionDiv id=outerDisplayDiv' + data.newId + '><label class=sectionLabel id=sectionLabel' + data.newId + '>' + unescape(temp) + '</label><div id=displayDiv' + data.newId + '><br /></div></fieldset>'));
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        break;
                    case 'Loop':
                        if (data.newId < 0) {
                            $('#loopLabel' + currentSelectedDiv).text(displayText);
                            $('#loopButton' + currentSelectedDiv).text(displayText);
                        }
                        else {



                            $('#displayDiv' + currentSelectedDiv).append($('<fieldset class=loopDiv id=outerDisplayDiv' + data.newId + '><label class=loopLabel id=loopLabel' + data.newId + '>' + unescape(temp) + '</label><div id=displayDiv' + data.newId + '><br /></div></fieldset>'));

                            $('<div class=loopDiv id=loopDisplayDiv' + data.newId + '><button onclick=CopyLoopDiv(' + data.newId + ') class=loopButton id=loopButton' + data.newId + '>' + unescape(display) + '</button><div id=hiddenLoopHolderDiv' + data.newId + '><label id=hiddenLoopHolderLabel' + data.newId + '>1</label></div></div>').insertAfter($('#outerDisplayDiv' + data.newId));
                            $('#hiddenLoopHolderDiv' + data.newId).hide();
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        break;
                    case 'SingleChoiceDropdown':
                        if (data.newId < 0) {
                            $('#dropdownLabel' + currentSelectedDiv).text(displayText);
                            $('#optionsDiv' + dataName).html(options);
                            //                                    $('#adviceDiv' + parentDiv).html($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        else {
                            $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=dropdownLabel' + data.newId + '>' + displayText + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><div class=displayDiv id=displayDiv' + data.newId + '><select name=' + dataName + ' class=SingleChoiceDropdown id=displaySingleChoiceDropdown' + data.newId + ' onchange=ShowOrHideSelectListChildren(this.id)><option value=-1> - Select - </option></select></div></div>'));
                            $('#optionsDiv' + dataName).html(options);
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        break;
                    case 'SingleChoiceList':
                        if (data.newId < 0) {
                            $('#singlechoiceLabel' + currentSelectedDiv).text(displayText);
                            $('#optionsDiv' + dataName).html(options);
                            //                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        else {
                            $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=singlechoiceLabel' + data.newId + '>' + displayText + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><div class=displayDiv id=displayDiv' + data.newId + '><select name=' + dataName + ' class=SingleChoiceList id=displaySingleChoiceList' + data.newId + ' onchange=ShowOrHideSelectListChildren(this.id)></select></div></div>'));
                            $('#optionsDiv' + dataName).html(options);
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        break;
                    case 'MultipleChoiceList':
                        if (data.newId < 0) {
                            $('#multiplechoiceLabel' + currentSelectedDiv).text(displayText);
                            $('#optionsDiv' + dataName).html(options);
                            //                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                        }
                        else {
                            $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=multiplechoiceLabel' + data.newId + '>' + displayText + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><div class=displayDiv id=displayDiv' + data.newId + '><div name=' + dataName + ' class=MultipleChoiceList id=displayMultipleChoiceList' + data.newId + '></div></div></div>'));
                            $('#optionsDiv' + dataName).html(options);
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));

                        }
                        break;
                    case 'Textbox':
                        if (data.newId < 0) {
                            $('#textBoxLabel' + currentSelectedDiv).html(temp);
                            if ($("#FormatType").val() == "Short") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=TextBox onchange=ShowOrHideTextboxChildren(this) style='width: 200px' name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "Medium") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=TextBox onchange=ShowOrHideTextboxChildren(this) style='width: 400px'  name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "Long") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=TextBox onchange=ShowOrHideTextboxChildren(this) style='width: 800px'  name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "Date") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=Date  onchange=ShowOrHideTextboxChildren(this) style='float: left' name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "PhoneNumber") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=PhoneNumber  onchange=ShowOrHideTextboxChildren(this) style='float: left' name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "Email") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=Email  onchange=ShowOrHideTextboxChildren(this) style='float: left' name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "ZipCode") {
                                $("input[name=" + dataName + "]").replaceWith("<input class=ZipCode  onchange=ShowOrHideTextboxChildren(this) style='float: left' name=" + dataName + " id=" + currentSelectedDiv + " />");
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }
                            if ($("#FormatType").val() == "Paragraph") {
                                $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(question) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><textarea  onchange=ShowOrHideTextboxChildren(this)  rows=7 cols=40 class=TextArea name=' + dataName + ' id=' + currentSelectedDiv + ' ></textarea></div>'));
                                $('#adviceDiv' + pk).html(unescape(data.advice));
                            }

                            $('#optionsDiv' + dataName).html(options);
                        }
                        else {
                            switch ($("#FormatType").val()) {
                                case 'Short':

                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=TextBox onchange=ShowOrHideTextboxChildren(this) style="width: 200px" name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'Medium':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=TextBox onchange=ShowOrHideTextboxChildren(this) style="width: 400px" name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'Long':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=TextBox onchange=ShowOrHideTextboxChildren(this) style="width: 700px" name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'Date':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=Date  onchange=ShowOrHideTextboxChildren(this) name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'PhoneNumber':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=PhoneNumber onchange=ShowOrHideTextboxChildren(this) name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'Email':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=Email onchange=ShowOrHideTextboxChildren(this) name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'ZipCode':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(temp) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><input class=ZipCode onchange=ShowOrHideTextboxChildren(this) name=' + dataName + ' id=' + data.newId + ' /></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                                case 'Paragraph':
                                    $('#' + attachToDiv).append($('<div class=outerDiv id=outerDisplayDiv' + data.newId + '><label class=controlLabel id=textBoxLabel' + data.newId + '>' + unescape(question) + '</label><div class=optionsDiv id=optionsDiv' + dataName + '></div><br /><textarea  onchange=ShowOrHideTextboxChildren(this)  rows=7 cols=40 class=TextArea name=' + dataName + ' id=' + data.newId + ' ></textarea></div>'));
                                    $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                    $('#adviceDiv' + data.newId).hide();
                                    break;
                            }
                            $('#optionsDiv' + dataName).html(options);
                        }
                    case 'Other':
                        if (currentlySelectedDivType == "SingleChoiceDropdown") {
                            $('#displaySingleChoiceDropdown' + parentDiv).append($('<option id=field' + data.newId + ' value=' + data.newId + '>Other </option>'));
                            $('#displayDiv' + parentDiv).append($('<div class=displayDiv id=displayDiv' + data.newId + '><label class=CheckBoxLabel> Other: </label><input type=text  name=' + dataName + ' title=other class=OtherTextBox  id=Other' + data.newId + ' onchange=ShowOrHideTextboxChildren(this) ></input><br /><br /></div>'));
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                            $('#adviceDiv' + data.newId).hide();
                        }
                        if (currentlySelectedDivType == "SingleChoiceList") {
                            var selectBoxLength = ($('#displaySingleChoiceList' + parentDiv).children().size()) + 1;
                            $('#displaySingleChoiceList' + parentDiv).attr({ size: '' + selectBoxLength });
                            $('#displaySingleChoiceList' + parentDiv).append($('<option id=field' + data.newId + ' value=' + data.newId + '>Other </option>'));
                            $('#displayDiv' + parentDiv).append($('<div class=displayDiv id=displayDiv' + data.newId + '><label class=CheckBoxLabel> Other: </label><input type=text  name=' + dataName + ' title=other class=OtherTextBox  id=Other' + data.newId + ' onchange=ShowOrHideTextboxChildren(this) ></input><br /><br /></div>'));
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                            $('#adviceDiv' + data.newId).hide();
                        }
                        if (currentlySelectedDivType == "MultipleChoiceList") {
                            $('#displayMultipleChoiceList' + parentDiv).append($('<div id=outerDisplayDiv' + data.newId + '><input type=checkbox  class=OtherCheckbox name=' + dataName + '  id=' + data.newId + ' title=other onclick=ShowOrHideCheckBoxChildren(this) /><label class=CheckBoxLabel>Other</label><BR></div>'));
                            $('#displayMultipleChoiceList' + parentDiv).append($('<div class=displayDiv id=displayMultipleChoiceList' + data.newId + '>Other: <input type=text  name=' + dataName + ' title=other class=OtherTextBox  id=Other' + data.newId + '><br /><br /></div>'));
                            $('#displayMultipleChoiceList' + data.newId).hide();
                            $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                            $('#adviceDiv' + data.newId).hide();
                        }
                        $('#displayDiv' + data.newId).hide();
                        break;


                    //Field                                                          
                    case 'Field':
                        if (currentlySelectedDivType == "Field") {
                            if (data.newId < 0) {
                                var a = $('#adviceDiv' + currentSelectedDiv).html();
                                var b = unescape(data.dataNames.oldAdvice);
                                var c = unescape(data.advice);
                                var myString = new String();
                                myString = a;
                                var lll = (myString.replace(CleanHtml(b), CleanHtml(c)));
                                $('#adviceDiv' + currentSelectedDiv).empty();
                                $('#adviceDiv' + currentSelectedDiv).html(lll);
                                $('#field' + currentSelectedDiv).text(designQuestion);
                            }
                        }
                        if (currentlySelectedDivType == "SingleChoiceDropdown") {
                            if (data.newId < 0) {
                                //                                        $('#adviceDiv' + pk).html(unescape(data.advice));
                                $('#field' + currentSelectedDiv).text(designQuestion);
                            }
                            else {
                                $('#displaySingleChoiceDropdown' + parentDiv).append($('<option class=field id=field' + data.newId + ' value=' + data.newId + '>' + designQuestion + '</option>'));
                                $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                $('#adviceDiv' + data.newId).append(unescape(data.advice));
                                $('#adviceDiv' + data.newId).hide();
                            }
                        }
                        if (currentlySelectedDivType == "SingleChoiceList") {
                            var selectBoxLength = ($('#displaySingleChoiceList' + parentDiv).children().size()) + 1;
                            $('#displaySingleChoiceList' + parentDiv).attr({ size: '' + selectBoxLength });
                            if (data.newId < 0) {
                                //                                        $('#adviceDiv' + pk).html(unescape(data.advice));
                                $('#field' + currentSelectedDiv).text(designQuestion);
                            }
                            else {
                                $('#displaySingleChoiceList' + parentDiv).append($('<option id=field' + data.newId + ' value=' + data.newId + '>' + designQuestion + '</option>'));
                                $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                $('#adviceDiv' + data.newId).append(unescape(data.advice));
                                $('#adviceDiv' + data.newId).hide();
                            }
                        }
                        if (currentlySelectedDivType == "MultipleChoiceList") {
                            var selectBoxLength = ($('#displayMultipleChoiceList' + parentDiv).children().size()) + 1;
                            $('#displayMultipleChoiceList' + parentDiv).attr({ size: '' + selectBoxLength });
                            if (data.newId < 0) {
                                //                                        $('#adviceDiv' + pk).html(unescape(data.advice));
                                $('#checkBoxLabel' + currentSelectedDiv).text(designQuestion);
                            }
                            else {
                                $('#displayMultipleChoiceList' + parentDiv).append($('<div id=outerDisplayDiv' + data.newId + '><input type="checkbox" class="Checkbox" id="' + data.newId + '" title="field" value="' + designQuestion + '" onclick=ShowOrHideCheckBoxChildren(this) /><label class=CheckBoxLabel id=field' + data.newId + '>' + designQuestion + '</label><br /></div>'));
                                $('#adviceDiv' + parentDiv).append($('<div id=adviceDiv' + data.newId + ' class=adviceDiv></div>'));
                                $('#adviceDiv' + data.newId).append(unescape(data.advice));
                                $('#adviceDiv' + data.newId).hide();
                            }
                        }

                        $('#displayDiv' + parentDiv).append($('<div id=displayDiv' + data.newId + ' class=displayDiv></div>'));
                        $('#displayDiv' + data.newId).hide();
                        break;
                }

                SaveHTML();






                $('#updater').hide();
            }
        });
    }
    else {
        alert("You must select a Node Type first!");
    }

}


