/// <summary>
        /// Render a "Back to" link
        /// </summary>
        /// <param name="pageToGoBackTo"></param>
        /// <param name="lang"></param>
        /// <param name="fileData"></param>
        /// <returns></returns>
        protected string renderBackLinks(CmsPage pageToGoBackTo, CmsLanguage lang, FileLibraryDetailsData fileData)
        {
            StringBuilder html = new StringBuilder();
            string link = "<p><a class=\"backToPrev\" href=\"{0}\">{1} {2} {3}</a></p>" + EOL;
            string backTo = getBackToText(lang);
            string tab = getTabText(lang);

            string backUrl = pageToGoBackTo.getUrl(lang);
            html.Append(String.Format(link, new string[] { backUrl, backTo, getOverviewText(lang), tab }));

            Dictionary<string, string> linkParams = new Dictionary<string,string>();
            linkParams.Add("catId", fileData.CategoryId.ToString());
            backUrl = pageToGoBackTo.getUrl(linkParams, lang);
            html.Append(String.Format(link, new string[] { backUrl, backTo, fileData.getCategoryName(categoryList), tab }));

            return html.ToString();
        }
        /// <summary>
        /// Render right hand side of the file details page (all details)
        /// </summary>
        /// <param name="detailsPage"></param>
        /// <param name="identifier"></param>
        /// <param name="lang"></param>
        /// <param name="fileData"></param>
        /// <returns></returns>
        protected string renderRightPane(CmsPage detailsPage, int identifier, CmsLanguage lang, FileLibraryDetailsData fileData, CmsUrlFormat fileUrlFormat)
        {
            string        fName = fileData.FileName;
            StringBuilder html  = new StringBuilder();

            html.Append("<div style=\"float: left;\" class=\"listing\">" + EOL);

            html.Append(renderDiv(getFileText(lang), FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, fileUrlFormat)));
            html.Append(renderDiv(getCategoryText(lang), fileData.getCategoryName(categoryList)));

            html.Append(renderDiv(getAuthorText(lang), fileData.Author));
            html.Append(renderDiv(getDocumentAbstractText(lang), StringUtils.nl2br(fileData.Description)));

            if (getFileTypeName(fileData).EndsWith("graphic", StringComparison.CurrentCultureIgnoreCase))
            {
                string imgPreviewUrl = CmsContext.UserInterface.ShowThumbnailPage.getThumbDisplayUrl(FileLibraryDetailsData.getDownloadUrl(detailsPage, identifier, lang, fName, fileUrlFormat), 200, -1);
                string imgTag        = "<img border=\"0\" src=\"" + imgPreviewUrl + "\"></a>";
                html.Append(renderDiv(getImagePreviewText(lang), FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, imgTag, "_blank", "", fileUrlFormat)));
            }

            bool eventRequired = FileLibraryCategoryData.isEventRequired(categoryList, fileData.CategoryId);

            if (eventRequired)
            {
                string eventHtml = "(n/a)";
                if (fileData.EventPageId > -1)
                {
                    CmsPage eventPage = CmsContext.getPageById(fileData.EventPageId);
                    eventHtml = "<a href=\"" + eventPage.getUrl(lang) + "\">" + eventPage.getTitle(lang) + "</a>" + EOL;
                }
                html.Append(renderDiv(getAttachedEventText(lang), eventHtml));
            }

            WebPortalUser u = WebPortalUser.FetchUser(fileData.CreatedBy, CmsPortalApplication.GetInstance());
            string        uploadPersonName = (u == null) ? fileData.CreatedBy : u.FullName;

            html.Append(renderDiv(getUploadedByText(lang), uploadPersonName));

            html.Append(renderDiv(getLastUpdatedText(lang), detailsPage.LastUpdatedDateTime.ToString("MMMM d yyyy h:mm tt")));

            html.Append("</div>" + EOL);
            return(html.ToString());
        }