public void InsertLink(string url, string linkText, string title, string rel, bool newWindow, MarkupRange range)
        {
            string html = HtmlGenerationService.GenerateHtmlFromLink(url, linkText, title, rel, newWindow);
            if (range == null)
            {
                range = SelectedMarkupRange;
            }
            IHTMLTxtRange txtRange = range.ToTextRange();
            if (txtRange.text != null)
            {
                int length = txtRange.text.TrimEnd(null).Length;
                txtRange.moveEnd("CHARACTER", length - txtRange.text.Length);
                if (txtRange.text != null)
                {
                    length = txtRange.text.Length;
                    int startLength = txtRange.text.TrimStart(null).Length;
                    txtRange.moveStart("CHARACTER", length - startLength);
                }
                range.MoveToTextRange(txtRange);
            }

            //put the cursor at the end of the link, but outside of it
            range.Start.PushGravity(_POINTER_GRAVITY.POINTER_GRAVITY_Left);
            range.End.PushGravity(_POINTER_GRAVITY.POINTER_GRAVITY_Right);

            try
            {
                InsertHtml(range.Start, range.End, html);
                range.Start.MoveToPointer(range.End);
                range.ToTextRange().select();
            }
            finally
            {
                range.Start.PopGravity();
                range.End.PopGravity();
            }

        }