/// <summary>
        /// Gets a ResponseBuffer by HistoryTreeNode.
        /// </summary>
        /// <param name="node"> A HistoryTreeNode to lookup.</param>
        /// <returns> A ResponseBuffer type.</returns>
        //        public ResponseBuffer GetHttpSiteData(HistoryTreeNode node)
        //        {
        //            string uriAndPort = string.Empty;
        //
        //            if ( node.Url.Port == 80 )
        //            {
        //                uriAndPort = node.Url.Authority + ":" + node.Url.Port;
        //            }
        //            else
        //            {
        //                uriAndPort = node.Url.Authority;
        //            }
        //
        //            if ( _useCache )
        //            {
        //                HistoryDiskInfo diskInfo = (HistoryDiskInfo)sitesIndex[uriAndPort + node.Url.AbsolutePath];
        //                return this.OpenResponseBuffer(diskInfo.Path);
        //            }
        //            else
        //            {
        //                return node.HttpSiteData;
        //            }
        //        }
        /// <summary>
        /// Loads the tree.
        /// </summary>
        /// <param name="sitesIdx"> The sites index list to load.</param>
        private void LoadTree(SortedList sitesIdx)
        {
            // Root nodes are simple like
            // asp.net, msdn.microsoft.com, www.mysite.com
            // they don't include /
            // add node to tree
            HistoryTreeNode rootNode=null;
            int i = 0;

            while ( i < sitesIndex.Count )
            {
                string key = (string)sitesIndex.GetKey(i);
                HistoryDiskInfo hdi = (HistoryDiskInfo)sitesIndex[key];

                if ( hdi.Type == HistoryDiskInfo.NodeType.Parent )
                {
                    // is a root node
                    rootNode = new HistoryTreeNode(key,new Uri("http://" + key),null);
                    rootNode.ImageIndex = this.IconSiteIndex;
                    rootNode.SelectedImageIndex = this.IconSiteIndex;
                    this.Nodes.Add(rootNode);

                    foreach ( HistoryDiskInfo item in hdi.HistoryDiskInfoList )
                    {
                        // is a child node
                        Uri u = new Uri("http://" + item.Url);
                        HistoryTreeNode newNode = new HistoryTreeNode(u.AbsolutePath,u,null);
                        newNode.ImageIndex = this.IconNodeIndex;
                        newNode.SelectedImageIndex = this.IconNodeIndex;
                        rootNode.Nodes.Add(newNode);
                    }
                }

                i++;
            }
        }
        /// <summary>
        /// Adds a HistoryDiskInfo.
        /// </summary>
        /// <param name="siteUri"> The site uri.</param>
        /// <param name="siteData"> The ResponseBuffer data.</param>
        public void AddHistoryNodeDisk(Uri siteUri, ResponseBuffer siteData)
        {
            this.SuspendLayout();

            //string folderName = string.Empty;
            string uriAndPort = string.Empty;

            if ( siteUri.Port == 80 )
            {
                //folderName = siteUri.Authority + siteUri.Port;
                uriAndPort = siteUri.Authority + ":" + siteUri.Port;
            }
            else
            {
                //folderName = siteUri.Authority.Replace(":","");
                uriAndPort = siteUri.Authority;
            }
            //			string dir = recentSitesDir + @"\" + folderName;
            //
            //			if ( !Directory.Exists(dir) )
            //			{
            //				Directory.CreateDirectory(dir);
            //			}

            // search index data for site root existence
            HistoryDiskInfo diskInfo = (HistoryDiskInfo)sitesIndex[uriAndPort];
            int index = sitesIndex.IndexOfKey(uriAndPort);

            // add new to disk
            if ( diskInfo != null )
            {
                HistoryTreeNode node = (HistoryTreeNode)this.Nodes[index];

                // add node to tree
                HistoryTreeNode tn = new HistoryTreeNode(siteUri.AbsolutePath,siteUri,null);
                tn.ImageIndex = this.IconNodeIndex;
                tn.SelectedImageIndex = this.IconNodeIndex;

                //int i = node.Nodes.IndexOf(tn);
                HistoryDiskInfo hdi = new HistoryDiskInfo();
                hdi.Url = uriAndPort + siteUri.AbsolutePath;

                if ( !diskInfo.ContainsNodeKey(hdi.Url) )
                {
                    node.Nodes.Add(tn);
                    diskInfo.AddHistoryDiskInfo(hdi.Url, hdi);
                }
            }
            else
            {
                // add as root node
                HistoryTreeNode tn = new HistoryTreeNode(uriAndPort,siteUri,null);
                tn.ImageIndex = this.IconSiteIndex;
                tn.SelectedImageIndex = this.IconSiteIndex;

                // add file to disk
                //string filePath = UpdateRecentSite(dir,siteUri.AbsolutePath,siteData);

                // add node to tree
                HistoryTreeNode newNode = new HistoryTreeNode(siteUri.AbsolutePath,siteUri,null);
                newNode.ImageIndex = this.IconNodeIndex;
                newNode.SelectedImageIndex = this.IconNodeIndex;

                tn.Nodes.Add(newNode);

                int i = tn.Nodes.IndexOf(newNode);
                HistoryDiskInfo child = new HistoryDiskInfo();
                child.Url = uriAndPort + siteUri.AbsolutePath;

                // add reference to Index data
                //sitesIndex.Add(uriAndPort + siteUri.AbsolutePath,hdi);

                this.Nodes.Add(tn);

                // add root reference to Index data
                HistoryDiskInfo parent = new HistoryDiskInfo();
                parent.Url = uriAndPort;
                parent.Type = HistoryDiskInfo.NodeType.Parent;
                parent.AddHistoryDiskInfo(child.Url, child);
                sitesIndex.Add(uriAndPort, parent);
            }

            UpdateIndexData();
            this.ResumeLayout();
        }