private string GetClickScript(DatePickerButtonRenderingContext renderingContext, bool hasClientScript)
        {
            string script;

            if (hasClientScript && renderingContext.Control.Enabled)
            {
                const string pickerActionButton = "this";

                string pickerActionContainer = "document.getElementById ('" + renderingContext.Control.ContainerControlID.Replace('$', '_') + "')";
                string pickerActionTarget    = "document.getElementById ('" + renderingContext.Control.TargetControlID.Replace('$', '_') + "')";

                string pickerUrl = "'" + GetDatePickerUrl() + "'";

                Unit   popUpWidth  = PopUpWidth;
                string pickerWidth = "'" + popUpWidth + "'";

                Unit   popUpHeight  = PopUpHeight;
                string pickerHeight = "'" + popUpHeight + "'";

                script = "DatePicker_ShowDatePicker("
                         + pickerActionButton + ", "
                         + pickerActionContainer + ", "
                         + pickerActionTarget + ", "
                         + pickerUrl + ", "
                         + pickerWidth + ", "
                         + pickerHeight + ");"
                         + "return false;";
            }
            else
            {
                script = "return false;";
            }
            return(script);
        }
        protected bool DetermineClientScriptLevel(DatePickerButtonRenderingContext renderingContext)
        {
            if (!renderingContext.Control.EnableClientScript)
            {
                return(false);
            }

            return(_clientScriptBehavior.IsBrowserCapableOfScripting(renderingContext.HttpContext, renderingContext.Control));
        }
        /// <summary>
        /// Renders a click-enabled image that shows a <see cref="DatePickerPage"/> on click, which puts the selected value
        /// into the control specified by <see cref="P:Control.TargetControlID"/>.
        /// </summary>
        public void Render(DatePickerButtonRenderingContext renderingContext)
        {
            ArgumentUtility.CheckNotNull("renderingContext", renderingContext);

            bool hasClientScript = DetermineClientScriptLevel(renderingContext);

            renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Id, renderingContext.Control.ClientID);

            string cssClass = string.IsNullOrEmpty(renderingContext.Control.CssClass) ? CssClassBase : renderingContext.Control.CssClass;

            if (!renderingContext.Control.Enabled)
            {
                cssClass += " " + CssClassDisabled;
            }
            renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass);

            // TODO: hyperLink.ApplyStyle (Control.DatePickerButtonStyle);

            bool canScript = (renderingContext.Control.EnableClientScript && renderingContext.Control.IsDesignMode) || hasClientScript;

            if (canScript)
            {
                string script = GetClickScript(renderingContext, hasClientScript);

                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Onclick, script);
                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Href, "#");
            }
            if (!renderingContext.Control.Enabled)
            {
                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
            }

            renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.A);

            if (canScript)
            {
                string imageUrl = GetResolvedImageUrl();

                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Src, imageUrl);
                renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Alt, renderingContext.Control.AlternateText ?? string.Empty);
                renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Img);
                renderingContext.Writer.RenderEndTag();
            }

            renderingContext.Writer.RenderEndTag();
        }