var selectedNode;

function closeOrgdiv(){jQuery("#orgdiv").toggle();}

function setupOrgTree(orgServiceUrl, TARTID, baseUrl, moduleId) {
    //retrieve tree data for network ID and set links
    var tree = jQuery("#orgdiv");
    tree.bind("loaded.jstree", function () {
        tree.jstree('close_all', -1);
        setDefaultSelectedOrg(tree);
        tree.prepend("<div id='close'><a onclick='closeOrgdiv()' href='javascript:void(0)'>Close</a></div>");
        jQuery('#orgdiv a[accessable="false"]').addClass('disabled');
    });

    jQuery("#closeorgdiv").click(function () {
        tree.toggle(tree.css('display') == 'none');
        return false;
    });

    jQuery("#orgdivToggle").bind('click', function () {
        tree.toggle(tree.css('display') == 'none');
        tree.jstree('select_node', selectedNode);
        return false;
    });

    jQuery.ajax({
        type: "POST",
        url: orgServiceUrl + "LoadOrganizationTreeByUser",
        data: '{ "moduleId":' + moduleId + '}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("x-tl-authtoken", TARTID.toString());
        },
        success: function (response) {
            if (response != undefined && response != "") {
                tree.jstree({
                    json_data: {
                        data: response.d,
                        ajax: {
                            type: "POST",
                            url: orgServiceUrl + "LoadChildrenOrganizations",
                            data: function (n) {
                                return '{"orgID":"' + (n.attr ? n.find("a:first").attr("id") : 0) + '", "moduleId":"' + moduleId + '"}';
                            },
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            beforeSend: function (xhr) {
                                xhr.setRequestHeader("x-tl-authtoken", TARTID.toString());
                            },
                            success: function (response) {
                                if (response != undefined && response != "") {
                                    return response.d;
                                }
                            }
                        }
                    },
                    ui: {
                        "select_limit": 1,
                        "selected_parent_close": "false"
                    },
                    plugins: ["themes", "json_data", "ui"],
                    themes: {
                        "icons": false,
                        "dots": false
                    }
                })
                .bind("select_node.jstree", function (e, data) {
                    if (typeof selectedNode === "undefined" || selectedNode === null || selectedNode.get(0) !== data.rslt.obj.get(0)) {
                        var nodeLink = data.rslt.obj.find("a:first");
                        var accessable = nodeLink.attr ? nodeLink.attr("accessable") : "false";
                        if (accessable == "true") {
                            var siteID = nodeLink.attr ? nodeLink.attr("id") : 0;
                            var siteName = nodeLink.text();

                            var url = baseUrl;
                            url = url.split("&")[0] + "&orgId=" + siteID + "&RequestTicket=" + TARTID;
                            ShowLink(url);
                            jQuery("#orgdivToggle").html(siteName);

                            tree.css('display', 'none');
                            // set hidden fields
                            jQuery("#hdn_siteID").val(siteID);
                            jQuery("#hdn_siteName").val(siteName);

                            nodeLink.addClass("jstree-clicked jstree-selected");
                            if (typeof selectedNode !== "undefined" && selectedNode !== null)
                                selectedNode.find("a:first").removeClass("jstree-clicked jstree-selected");
                            selectedNode = data.rslt.obj;
                            return true;
                        }
                        else {
                            nodeLink.removeClass("jstree-clicked jstree-selected");
                            selectedNode.find("a:first").addClass("jstree-clicked jstree-selected");
                            return false;
                        }
                    }
                })
                .bind("open_node.jstree", function (event, data) {
                    jQuery('#orgdiv a[accessable="false"]').addClass('disabled');
                });

                tree.jstree("loaded");

                if (response.d != null) {
                    if (response.d[0].data.attr.accessable == false) {
                        if (jQuery("#orgdivToggle").html() == "") {
                            jQuery("#orgdivToggle").html(response.d[0].data.title);
                        }
                    }
                }
            }
        }
    });    
}

function setDefaultSelectedOrg(tree) {
    // select first accessable node as default
    tree.jstree('select_node', jQuery('#orgdiv li a[accessable="true"]').first());
}

function activateMenu() {
    jQuery('li.dropheader').hoverIntent({
        sensitivity: 5,
        interval: 0,
        over: showMenu,
        timeout: 200,
        out: hideMenu
    });
}

function showMenu() {
    jQuery(this).css('background', '#44484c');
    jQuery('.subcontainer', this).css('display', 'block');
}

function hideMenu() {
    jQuery(this).css('background', 'none');
    jQuery('.subcontainer', this).css('display', 'none');
}

function hideSubMenu() {
    jQuery('.subcontainer').css('display', 'none');
}
