/// <summary>
        /// Renders an item
        /// </summary>
        /// <param name="itemId"></param>
        /// <returns></returns>
        public override string RenderItem(string itemId, bool selectedItem)
        {
            if (string.IsNullOrEmpty(itemId))
            {
                return string.Empty;
            }

            FieldSuiteImageListItem listItem = new FieldSuiteImageListItem();
            Item item = Sitecore.Context.ContentDatabase.GetItem(itemId);
            if (item.IsNull())
            {
                return listItem.RenderItemNotFound(itemId, this.ID);
            }

            //get interface item
            IFieldSuiteImage fieldSuiteImage = FieldSuiteImageFactory.GetFieldSuiteImage(item);
            if (fieldSuiteImage == null)
            {
                return listItem.RenderItemConfigured(itemId, this.ID);
            }

            //set default
            string imageSrc = "/sitecore modules/shell/field suite/images/unknown.png";

            //set to image of the item
            if (!string.IsNullOrEmpty(fieldSuiteImage.ImageUrl))
            {
                //setup image and sitecore click event
                imageSrc = fieldSuiteImage.ImageUrl.ToLower();
            }

            //add thumbnail parameter
            string parameters = "w=125&h=125&thn=true&db=" + MasterDatabase.Name.ToLower();
            if (imageSrc.Contains("?"))
            {
                imageSrc += "&" + parameters;
            }
            else
            {
                imageSrc += "?" + parameters;
            }

            string titleText = string.Format("{0}: {1}", item.Name, item.Paths.FullPath);

            //if the form is readonly
            string onclick = "";
            if (!this.ReadOnly)
            {
                onclick = string.Format("javascript:FieldSuite.Fields.ImagesField.ToggleItem(this, '{0}');", this.ID);
            }

            //setup description
            string description = string.Empty;
            if (!string.IsNullOrEmpty(fieldSuiteImage.Title))
            {
                description = fieldSuiteImage.Title;
                if (description.Length > 13)
                {
                    description = description.Substring(0, 13) + "...";
                }
            }

            listItem.Text = description;
            listItem.HoverText = titleText;
            listItem.ReadOnly = this.ReadOnly;
            listItem.ItemClick = onclick;
            listItem.Parameters = new List<object>();
            listItem.Parameters.Add(string.Format("<img border=\"0\" src=\"{0}\">", imageSrc));

            //for performance reason limit field gutter
            Int32 renderCount = RenderItemCount;
            if (selectedItem)
            {
                renderCount = RenderSelectedItemCount;
            }

            //for performance reason limit field gutter
            bool useFieldGutter = false;
            IFieldGutterProcessor fieldGutterProcessor = FieldGutterProcessorFactory.GetProcessor();
            if (fieldGutterProcessor != null)
            {
                Int32 maxCount = fieldGutterProcessor.MaxCount;
                if (maxCount != 0 && renderCount <= maxCount)
                {
                    useFieldGutter = true;
                }
            }

            //return list item as html
            if (selectedItem)
            {
                RenderSelectedItemCount++;
            }
            else
            {
                RenderItemCount++;
            }

            return listItem.Render(item, item.ID.ToString(), this.ID, useFieldGutter);
        }
        /// <summary>
        /// This method runs the source field builder as a modal
        /// </summary>
        /// <param name="args"></param>
        public void RunAddForm(ClientPipelineArgs args)
        {
            if (!args.IsPostBack)
            {
                //get url for field type selector modal
                UrlString ustr = new UrlString(UIUtil.GetUri("control:FieldSuiteAddForm"));
                ustr.Parameters.Add(args.Parameters);

                //open field type selector
                Context.ClientPage.ClientResponse.ShowModalDialog(ustr.ToString(), "500", "300", "", true);

                //wait for response
                args.WaitForPostBack();
            }
            else
            {
                //verify result
                if (!args.HasResult || string.IsNullOrEmpty(args.Result))
                {
                    return;
                }

                string linkedItemId = args.Result;
                if (!ID.IsID(linkedItemId))
                {
                    return;
                }

                IFieldSuiteListItem listItem = GetListItem(linkedItemId, args.Parameters["fieldid"]);
                if (listItem == null)
                {
                    listItem = new FieldSuiteImageListItem();
                    SheerResponse.Eval("FieldSuite.Fields.ImagesField.AddItemToContent(\"" + args.Parameters["fieldid"] + "\",\"" + HttpUtility.HtmlEncode(listItem.RenderItemNotFound(linkedItemId, args.Parameters["fieldid"])) + "\",\"" + linkedItemId + "\")");
                    return;
                }

                SheerResponse.Eval("FieldSuite.Fields.ImagesField.AddItemToContent(\"" + args.Parameters["fieldid"] + "\",\"" + HttpUtility.HtmlEncode(listItem.Render(linkedItemId, args.Parameters["fieldid"], true)) + "\",\"" + linkedItemId + "\")");
            }
        }