/// <summary>
        /// Renders the recaptcha HTML in an MVC view. It is an extension method to the <see cref="System.Web.Mvc.HtmlHelper"/> class.
        /// </summary>
        /// <param name="htmlHelper">The <see cref="System.Web.Mvc.HtmlHelper"/> object to which the extension is added.</param>
        /// <param name="publicKey">Sets the public key of recaptcha.</param>
        /// <param name="theme">Sets the theme of recaptcha.</param>
        /// <param name="language">Sets the language of recaptcha. If no language is specified, the language of the current UI culture will be used.</param>
        /// <param name="tabIndex">Sets the tab index of recaptcha.</param>
        /// <param name="dataType">Sets the data type of recaptcha.</param>
        /// <param name="dataSize">Sets the size of recaptcha.</param>
        /// <param name="useSsl">Sets the value to the UseSsl property.</param>
        /// <param name="apiVersion">Determines the version of the reCAPTCHA API.</param>
        /// <returns>Returns an instance of the IHtmlString type.</returns>
        public static IHtmlString Recaptcha(
            this HtmlHelper htmlHelper,
            string publicKey = "{recaptchaPublicKey}",
            RecaptchaTheme theme = RecaptchaTheme.Red,
            string language = null,
            int tabIndex = 0,
            RecaptchaDataType? dataType = null,
            RecaptchaDataSize? dataSize = null,
            SslBehavior useSsl = SslBehavior.SameAsRequestUrl,
            string apiVersion = "{recaptchaApiVersion}")
        {
            IRecaptchaHtmlHelper rHtmlHelper = null;

            string version = RecaptchaKeyHelper.ParseKey(apiVersion);

            if (version != "2")
            {
                rHtmlHelper = new RecaptchaHtmlHelper(publicKey, theme, language, tabIndex, useSsl);
            }
            else
            {
                rHtmlHelper = new Recaptcha2HtmlHelper(publicKey, theme, language, tabIndex, dataType, dataSize, useSsl);
            }

            var writer = new HtmlTextWriter(new StringWriter());
            writer.Write(rHtmlHelper.ToString());

            return htmlHelper.Raw(writer.InnerWriter.ToString());
        }
 /// <summary>
 /// Creates an instance of the <see cref="Recaptcha2HtmlHelper"/> class.
 /// </summary>
 /// <param name="publicKey">Sets the public key of the recaptcha HTML.</param>
 /// <param name="theme">Sets the theme of the recaptcha HTML.</param>
 /// <param name="language">Sets the language of the recaptcha HTML.</param>
 /// <param name="tabIndex">Sets the tab index of the recaptcha HTML.</param>    
 /// <param name="dataType">Sets the type of the recaptcha HTML.</param>
 /// <param name="dataSize">Sets the size for the recpatcha HTML.</param>
 /// <param name="useSsl">Determines whether to use SSL in reCAPTCHA API URLs.</param>
 public Recaptcha2HtmlHelper(string publicKey, RecaptchaTheme theme, string language, int tabIndex, RecaptchaDataType? dataType, RecaptchaDataSize? dataSize, SslBehavior useSsl)
     : base(publicKey, theme, language, tabIndex, useSsl)
 {
     DataType = dataType;
     DataSize = dataSize;
 }