﻿
    //Deletes an entire folder and its sub tree from our free or an individual bookmark
    function DeleteChildren() {
        if (deleteNodeParentID != "") {
            var cell = document.getElementById(deleteNodeParentID);

            //Update the css class
            if (document.getElementById(deleteNodeParentID).className == "folder_open") {
                document.getElementById(deleteNodeParentID).className = "folder_closed";

                //Hide the node
                document.getElementById(deleteNodeParentID + "_content").style.display = "none";
            }

            document.getElementById(deleteNodeParentID).className = "deleted";

            deleteNodeParentID = ""
        }

        clearSelection()
    }

    //Updates a folder or a bookmark
    function UpdateChild() {
        if (deleteNodeParentID != "") {

            if ((document.getElementById(deleteNodeParentID).className == "folder_open") || (document.getElementById(deleteNodeParentID).className == "folder_closed")) {

                //Used to change a folder name
                document.getElementById(deleteNodeParentID + '_title').innerHTML = document.getElementById('<%=txtFolder.ClientID %>').value

            } else {

                //Check Priority
                if ((document.getElementById('<%=ddPriority.ClientID %>').value) == 1) {
                    document.getElementById(deleteNodeParentID).className = "high"
                } else if ((document.getElementById('<%=ddPriority.ClientID %>').value) == 2) {
                    document.getElementById(deleteNodeParentID).className = "medium"
                } else {
                    document.getElementById(deleteNodeParentID).className = "low"
                }

                //Used to change a bookmark name
                document.getElementById(deleteNodeParentID + '_title').innerHTML = "<a href=\"" + document.getElementById('<%=txtHref.ClientID %>').value + "\" target=\"_blank\">" + document.getElementById('<%=txtName.ClientID %>').value + "</a>"
            }
            deleteNodeParentID = ""
        }

        clearSelection()
    }

    function UpdateNewChild() {
        //If type = Folder Then
        if (document.getElementById('<%=ddType.ClientID %>').value == "folder") {
            //Used to change a folder name
            document.getElementById(deleteNodeParentID + '_title').innerHTML = document.getElementById('<%=txtName.ClientID %>').value
            //Set css class
            document.getElementById(deleteNodeParentID).className = "folder_open";
            //Hide the node
            document.getElementById(deleteNodeParentID + "_content").style.display = "none";
            // Else if type = bookmark then
        } else {

            //Check Priority
            if ((document.getElementById('<%=ddPriority.ClientID %>').value) == 1) {
                document.getElementById(deleteNodeParentID).className = "high"
            } else if ((document.getElementById('<%=ddPriority.ClientID %>').value) == 2) {
                document.getElementById(deleteNodeParentID).className = "medium"
            } else {
                document.getElementById(deleteNodeParentID).className = "low"
            }

            //Used to change a bookmark name
            document.getElementById(deleteNodeParentID + '_title').innerHTML = "<a href=\"" + document.getElementById('<%=txtHref.ClientID %>').value + "\" target=\"_blank\">" + document.getElementById('<%=txtName.ClientID %>').value + "</a>"
        }
    }

    function ExpandFolderNode(ID, SourceControlID) {
        sourceControlID = SourceControlID;

        //Clear selection if any
        clearSelection();

        if (document.getElementById(sourceControlID + "_content").style.display == "none") {

            if (document.getElementById(sourceControlID + "_content_sub").innerHTML == "$") {

                //Display loading
                document.getElementById(sourceControlID + "_content_sub").innerHTML = "loading...";
                document.getElementById(sourceControlID + "_content").style.display = "block";

                //Update the css class
                if (document.getElementById(sourceControlID).className == "folder_closed") {
                    document.getElementById(sourceControlID).className = "folder_open";
                }

                //Retrieve node data from server
                Project.BookmarkTree.BookmarkTree.GetSubFolder(ID, SourceControlID + "_content_sub", LoadNodeDataSuccessful, LoadNodeDataError, null);

            }
            else {
                //Update the css class
                if (document.getElementById(sourceControlID).className == "folder_closed") {
                    document.getElementById(sourceControlID).className = "folder_open";
                }

                //Just show the node
                document.getElementById(sourceControlID + "_content").style.display = "block";
            }
        }
        else {
            //Update the css class
            if (document.getElementById(sourceControlID).className == "folder_open") {
                document.getElementById(sourceControlID).className = "folder_closed";
            }

            //Hide the node
            document.getElementById(sourceControlID + "_content").style.display = "none";
        }
    }

    function LoadNodeDataError(error) {
        //Error occurred!

        //Update the css class
        if (document.getElementById(sourceControlID).className == "folder_open") {
            document.getElementById(sourceControlID).className = "folder_closed";
        }

        //Hide the node
        document.getElementById(sourceControlID + "_content").style.display = "none";

        document.getElementById(sourceControlID + "_content_sub").innerHTML = "$";

        alert("Error Loading Sub Concepts!");
    }

    function LoadNodeDataSuccessful(results) {
        document.getElementById(sourceControlID + "_content_sub").innerHTML = results;
        sourceControlID = "";
    }

    var sourceControlID = "";

    //Clears the selection that may occur when the node is clicked
    function clearSelection() {
        var sel;
        if (document.selection && document.selection.empty) {
            document.selection.empty();
        } else if (window.getSelection) {
            sel = window.getSelection();
            if (sel && sel.collapse)
                var body = document.getElementsByTagName("body")[0];
            sel.collapse(body, 0);
        }
    }

    //Show the concept details
    function ShowHrefDetails(ParentID, ParentControlID, ConceptID, SourceControlID) {
        deleteNodeParentID = SourceControlID

        //if selected node is not empty, unhighlight the node
        if (currentlySelectedNodeID != "") {
            document.getElementById(currentlySelectedNodeID + '_title').className = "nodeName";
        }
        //if the name was changed, restore the original node name
        if (originalNodeName != "" && document.getElementById(currentlySelectedNodeID + '_title')) {
            document.getElementById(currentlySelectedNodeID + '_title').innerHTML = originalNodeName;
        }
        originalNodeName = "";
        currentlySelectedNodeID = "";

        if (newNodeID != "") {
            var result = confirm("Are you sure you want to cancel creating the new Node (any details entered will be lost)?");

            if (result == true) {
                //Discard adding the new concept
                DiscardAddNewNode();
                newNodeID = "";
                newNodeParentID = "";
                originalNodeName = "";
            }
        }

        //Set currently selected node
        currentlySelectedNodeID = SourceControlID;
        document.getElementById(SourceControlID + '_title').className = "nodeNameSelected";

        //Update the update panel parameters
        //  ID="hidden_NodeIDSelected"
        document.getElementById('<%=hidden_NodeIDSelected.ClientID %>').value = ConceptID;
        //  ID="hidden_CreateNew"
        document.getElementById('<%=hidden_CreateNew.ClientID %>').value = "false";
        //  ID="hidden_ParentNodeID"
        document.getElementById('<%=hidden_ParentNodeID.ClientID %>').value = ParentID;

        //Simulate click on the client side trigger button
        document.getElementById('<%=btn_ClientSideTrigger.ClientID %>').click();
    }


    function ShowFolderDetails(ParentID, ParentControlID, ConceptID, SourceControlID) {
        deleteNodeParentID = SourceControlID

        //if selected node is not empty, unhighlight the node
        if (currentlySelectedNodeID != "") {
            document.getElementById(currentlySelectedNodeID + '_title').className = "nodeName";
        }
        //if the name was changed, restore the original node name
        if (originalNodeName != "" && document.getElementById(currentlySelectedNodeID + '_title')) {
            document.getElementById(currentlySelectedNodeID + '_title').innerHTML = originalNodeName;
        }
        originalNodeName = "";
        currentlySelectedNodeID = "";

        if (newNodeID != "") {
            var result = confirm("Are you sure you want to cancel creating the new Node (any details entered will be lost)?");

            if (result == true) {
                //Discard adding the new concept
                DiscardAddNewNode();
                newNodeID = "";
                newNodeParentID = "";
                originalNodeName = "";
            }
        }

        //Set currently selected node
        currentlySelectedNodeID = SourceControlID;
        document.getElementById(SourceControlID + '_title').className = "nodeNameSelected";

        //Update the update panel parameters
        //  ID="hidden_NodeIDSelected"
        document.getElementById('<%=hidden_NodeIDSelected.ClientID %>').value = ConceptID;
        //  ID="hidden_CreateNew"
        document.getElementById('<%=hidden_CreateNew.ClientID %>').value = "false";
        //  ID="hidden_ParentNodeID"
        document.getElementById('<%=hidden_ParentNodeID.ClientID %>').value = ParentID;

        //Simulate click on the client side trigger button
        document.getElementById('<%=btn_ClientSideTriggerFolder.ClientID %>').click();
    }

    function AddNewNode(ParentID, SourceControlID, ParentControlID) {
        //if selected node is not empty, unhighlight the node
        if (currentlySelectedNodeID != "") {
            document.getElementById(currentlySelectedNodeID + '_title').className = "nodeName";
        }
        //if the name was changed, restore the original node name
        if (originalNodeName != "") {
            document.getElementById(currentlySelectedNodeID + '_title').innerHTML = originalNodeName;
        }
        originalNodeName = "";
        currentlySelectedNodeID = "";

        //Check whether a new node is already being inserted
        if (newNodeID != "") {
            var res = confirm("Are you sure you want to cancel creating the new Node (any details entered will be lost)?");
            if (res) {
                DiscardAddNewNode();
            }
            else {
                return;
            }
        }

        //Insert the new concept at the specified location
        var div_title = document.createElement('div');
        var span_title = document.createElement('div');
        div_title.setAttribute("id", "new_concept_" + ParentID);
        span_title.setAttribute("id", "new_concept_" + ParentID + "_title");

        //Allows us to update the field later on once saved
        deleteNodeParentID = "new_concept_" + ParentID

        span_title.innerHTML = "New Folder / Bookmark";
        span_title.className = "unsavedNode";
        div_title.className = "unsaved_concept";
        div_title.appendChild(span_title);
        document.getElementById(ParentControlID).insertBefore(div_title, document.getElementById(SourceControlID));

        //Set new node parameters
        newNodeID = div_title.getAttribute("id");
        newNodeParentID = ParentControlID;
        //  ID="hidden_NodeIDSelected"
        document.getElementById('<%=hidden_NodeIDSelected.ClientID %>').value = -1;
        //  ID="hidden_CreateNew"
        document.getElementById('<%=hidden_CreateNew.ClientID %>').value = "false";
        //  ID="hidden_ParentNodeID"
        document.getElementById('<%=hidden_ParentNodeID.ClientID %>').value = ParentID;

        //Simulate click on the client side trigger button
        document.getElementById('<%=btn_ClientSideTriggerNew.ClientID %>').click();
    }

    //Remove add new node unsaved changes
    function DiscardAddNewNode() {
        document.getElementById(newNodeParentID).removeChild(document.getElementById(newNodeID));
    }

    //Show the suggestion details
    function ShowSugggestionDetails(ParentID, ParentControlID, ConceptID, SourceControlID) {
        deleteNodeParentID = SourceControlID

        //if selected node is not empty, unhighlight the node
        if (currentlySelectedNodeID != "") {
            document.getElementById(currentlySelectedNodeID + '_title').className = "nodeName";
        }
        //if the name was changed, restore the original node name
        if (originalNodeName != "" && document.getElementById(currentlySelectedNodeID + '_title')) {
            document.getElementById(currentlySelectedNodeID + '_title').innerHTML = originalNodeName;
        }
        originalNodeName = "";
        currentlySelectedNodeID = "";

        //Set currently selected node
        currentlySelectedNodeID = SourceControlID;
        document.getElementById(SourceControlID + '_title').className = "nodeNameSelected";

        //Update the update panel parameters
        //  ID="hidden_NodeIDSelected"
        document.getElementById('<%=hidden_NodeIDSelected.ClientID %>').value = ConceptID;
        //  ID="hidden_CreateNew"
        document.getElementById('<%=hidden_CreateNew.ClientID %>').value = "false";
        //  ID="hidden_ParentNodeID"
        document.getElementById('<%=hidden_ParentNodeID.ClientID %>').value = ParentID;

        //Simulate click on the client side trigger button
        document.getElementById('<%=btn_ClientSideTriggerSGT.ClientID %>').click();
    }

    function focus() {
        try {
            document.getElementById('<%=txtHack.ClientID %>').focus();
        }
        catch (err) {
            //do nothing
        }
      }

    var currentlySelectedNodeID = "";
    var newNodeID = "";
    var newNodeParentID = "";
    var originalNodeName = "";
    var deleteNodeParentID = "";
