/// <summary>
        /// Process a tag
        /// </summary>
        /// <param name="context">Context with all html tag information</param>
        public void Process(FormItemAdapterContext context)
        {
            if (string.IsNullOrEmpty(context.Metadata.Description) || context.TagBuilder.Attributes.ContainsKey("title"))
                return;

            context.TagBuilder.MergeAttribute("title", context.Metadata.Description);
        }
        /// <summary>
        /// Process a tag
        /// </summary>
        /// <param name="context">Context with all html tag information</param>
        public void Process(FormItemAdapterContext context)
        {
            if (context.Metadata.PropertyName!= "Age")
                return;

            context.TagBuilder.MergeAttribute("disabled", "disabled");


            var  scriptTag = new NestedTagBuilder("script");
            scriptTag.MergeAttribute("type", "text/javascript");
            scriptTag.InnerHtml =string.Format(
                @"$(function(){{ 
    var $slider = $('<div id=""slider""></div>').insertAfter($('#{0}'));
    $slider.slider({{
        min: 0, 
        max:110, 
        value: {1},
		slide: function( event, ui ) {{
			$('#{0}').val(ui.value);
        }}

    }});
}});", context.TagBuilder.Attributes["id"], context.TagBuilder.Attributes["value"]);

            var div = new NestedTagBuilder("div");
            div.AddChild(context.TagBuilder);
            div.AddChild(scriptTag);
            context.TagBuilder = div;
        }
        /// <summary>
        /// Process a tag
        /// </summary>
        /// <param name="context">Context with all html tag information</param>
        public void Process(FormItemAdapterContext context)
        {
            // there is a "Watermark" metadata but it cannot currently be set.
            // unless you are using a custom metadata provider like the one in the localization demo.
            if (string.IsNullOrEmpty(context.Metadata.Description) || !context.TagBuilder.Attributes.ContainsKey("class") || !context.TagBuilder.Attributes["class"].Contains("watermark"))
                return;

            context.TagBuilder.MergeAttribute("title", "Watermark:" + context.Metadata.Description);
        }
        /// <summary>
        /// Process a tag
        /// </summary>
        /// <param name="context">Context with all html tag information</param>
        public void Process(FormItemAdapterContext context)
        {
            if (!context.TagBuilder.Attributes.ContainsKey("class") 
                || !context.TagBuilder.Attributes["class"].Contains("sortMe")) 
                return;

            // remove the sortMe
            var value = context.TagBuilder.Attributes["class"].Replace("sortMe", "");
            context.TagBuilder.Attributes["class"] = value;

            var ordered = context.TagBuilder.Children.OrderBy(t => t.InnerHtml).ToList();
            context.TagBuilder.RemoveChildren();
            context.TagBuilder.AddChildren(ordered);
        }