private void SelectEntity(EntityReference entity)
        {
            string key = GetID(entity.Id.ToString());

            D3.Select("#" + key).SelectAll(".entityImage").Attr("filter", "url(#selected-glow)");
            D3.Select("#" + key).SelectAll(".entityImage").Transition().Attr("transform", "scale(0.6)").Transition().Attr("transform", "scale(2)");
        }
        public NetworkView2()
        {
            force = D3.Layout.Force()
                    .Size(new int[] { width, height })
                    .On("tick", Tick);

            //        var force = d3.layout.force()
            //.size([width, height])
            //.on("tick", tick);

            svg = D3.Select("body").Append("svg")
                  .Attr("width", width)
                  .Attr("height", height);

            //var svg = d3.select("body").append("svg")
            //    .attr("width", width)
            //    .attr("height", height);

            link = svg.SelectAll(".link");
            node = svg.SelectAll(".node");

            //var link = svg.selectAll(".link"),
            //    node = svg.selectAll(".node");

            //root = new ForceNode("Test", 100);
            //Update();

            D3.Json("../js/json_data.js", delegate(object state, object json) {
                root = (EntityNode)json;
                Update();
            });
        }
        private void UnSelectEntity(EntityReference entity)
        {
            string     key  = GetID(entity.Id.ToString());
            EntityNode node = vm.idIndex[key];

            D3.Select("#" + key).SelectAll(".entityImage").Attr("filter", "url(#no-glow)");
            D3.Select("#" + key).SelectAll(".entityImage").Transition().Attr("transform", "scale(1)");
        }
        public NetworkView(NetworkViewModel viewModel)
        {
            height = jQuery.Window.GetHeight();
            width  = jQuery.Window.GetWidth();

            vm = viewModel;

            force = D3.Layout.Force()
                    .Size(new int[] { width, height })
                    .LinkDistance(150)
                    .Friction(0.7)
                    .Charge(-700)
                    .On("tick", Tick);

            zoom = D3.Behavior
                   .Zoom()
                   .ScaleExtent(new Number[] { minZoom, maxZoom })
                   .Center2(new Number[] { width / 2, height / 2 })
                   .On("zoom", zoomed);

            svg = D3.Select("#networksvg")
                  .Attr("width", width)
                  .Attr("height", height)
                  .Call(zoom)
                  .Append("g");

            dragBehavior = force.OnDrag()
                           .On("dragstart", dragstart);

            // Add InfoBox
            SVGexactTip = D3.Select("#infoBox").Style("opacity", 0);

            nodeData = (Stack <EntityNode>)(object) force.Nodes();
            linkData = (Stack <EntityLink>)(object) force.Links();
            link     = svg.SelectAll(".link");
            node     = svg.SelectAll(".node");

            Update();

            ViewBase.RegisterViewModel(vm);

            // Create event listeners for MVVM
            vm.OnNewNodes             += OnNodesChange;
            vm.OnSelectedNodesAdded   += vm_OnSelectedNodesAdded;
            vm.OnSelectedNodesCleared += vm_OnSelectedNodesCleared;
            vm.OnSelectedLinksAdded   += vm_OnSelectedLinksAdded;
            vm.OnInfoBoxClose         += vm_OnInfoBoxClose;
            vm.OnZoom += vm_OnZoom;
            jQuery.Window.Resize(OnResize);
            jQuery.OnDocumentReady(delegate()
            {
                Window.SetTimeout(delegate()
                {
                    vm.ProcessQueue();
                }, 10);
            });
        }
        private void OnResize(jQueryEvent e)
        {
            int sheight = jQuery.Window.GetHeight();
            int swidth  = jQuery.Window.GetWidth();

            D3.Select("#networksvg")
            .Attr <int>("width", swidth)
            .Attr <int>("height", sheight);;
        }
        private static void UnHighlightLink(string key)
        {
            D3Element link = D3.Select("#" + key);

            if (link != null)
            {
                link.Attr <string>("filter", null);
                link.Attr("class", "link");
            }
        }
        private static void HighlightLink(string key)
        {
            D3Element link = D3.Select("#" + key);

            if (link != null)
            {
                link.Attr("filter", "url(#selected-glow)");
                link.Attr("class", "link link-selected");;
            }
        }