private string JQueryUIAutocompleteDataInitRenderer(JqGridCompatibilityModes compatibilityMode, string gridSelector, string dataUrl)
        {
            StringBuilder dataInitBuilder = new StringBuilder(100 + DataUrl.Length);

            dataInitBuilder.AppendFormat("function(element) {{ setTimeout(function() {{ $(element).autocomplete({{ source: '{0}', ", dataUrl);

            if (AutoFocus)
            {
                dataInitBuilder.Append("autoFocus: true, ");
            }

            if (Delay != 300)
            {
                dataInitBuilder.AppendFormat("delay: {0}, ", Delay);
            }

            if (MinLength != 1)
            {
                dataInitBuilder.AppendFormat("minLength: {0}, ", MinLength);
            }

            dataInitBuilder.Remove(dataInitBuilder.Length - 2, 2);
            dataInitBuilder.Append(" }); }, 0); }");

            return(dataInitBuilder.ToString());
        }
        private string JQueryUISpinnerDataInitRenderer(JqGridCompatibilityModes compatibilityMode, string gridSelector)
        {
            StringBuilder dataInitBuilder = new StringBuilder(80);

            dataInitBuilder.Append("function(element) { setTimeout(function() { $(element).spinner({ ");

            if (!String.IsNullOrEmpty(Culture))
            {
                dataInitBuilder.AppendFormat("culture: '{0}', ", Culture);
            }

            if (SpinnerDownIcon != JQueryUIWidgetsDefaults.SpinnerDownIcon || SpinnerUpIcon != JQueryUIWidgetsDefaults.SpinnerUpIcon)
            {
                dataInitBuilder.Append("icons: { ");

                if (SpinnerDownIcon != JQueryUIWidgetsDefaults.SpinnerDownIcon)
                {
                    dataInitBuilder.AppendFormat("down: '{0}', ", SpinnerDownIcon);
                }

                if (SpinnerUpIcon != JQueryUIWidgetsDefaults.SpinnerUpIcon)
                {
                    dataInitBuilder.AppendFormat("up: '{0}', ", SpinnerUpIcon);
                }

                dataInitBuilder.Remove(dataInitBuilder.Length - 2, 2);
                dataInitBuilder.Append(" }, ");
            }

            if (!Incremental)
            {
                dataInitBuilder.Append("incremental: false, ");
            }

            if (Max.HasValue)
            {
                dataInitBuilder.AppendFormat("max: {0}, ", Max.Value);
            }

            if (Min.HasValue)
            {
                dataInitBuilder.AppendFormat("min: {0}, ", Min.Value);
            }

            if (!String.IsNullOrEmpty(NumberFormat))
            {
                dataInitBuilder.AppendFormat("numberFormat: '{0}', ", NumberFormat);
            }

            if (Page != 10)
            {
                dataInitBuilder.AppendFormat("page: {0}, ", Page);
            }

            if (Step != 1)
            {
                dataInitBuilder.AppendFormat("step: {0}, ", Step);
            }

            dataInitBuilder.Remove(dataInitBuilder.Length - 2, 2);
            if (dataInitBuilder[dataInitBuilder.Length - 1] == '(')
            {
                dataInitBuilder.Append("); }, 0); }");
            }
            else
            {
                dataInitBuilder.Append(" }); }, 0); }");
            }

            return(dataInitBuilder.ToString());
        }
        private string JQueryUIDatepickerDataInitRenderer(JqGridCompatibilityModes compatibilityMode, string gridSelector, ModelMetadata propertyMetadata)
        {
            StringBuilder dataInitBuilder = new StringBuilder(80);

            dataInitBuilder.Append("function(element) { setTimeout(function() { $(element).datepicker({ ");

            if (!String.IsNullOrEmpty(AppendText))
            {
                dataInitBuilder.AppendFormat("appendText: '{0}', ", AppendText);
            }

            if (AutoSize)
            {
                dataInitBuilder.Append("autoSize: true, ");
            }

            if (ChangeMonth)
            {
                dataInitBuilder.Append("changeMonth: true, ");
            }

            if (ChangeYear)
            {
                dataInitBuilder.Append("changeYear: true, ");
            }

            if (!ConstrainInput)
            {
                dataInitBuilder.Append("constrainInput: true, ");
            }

            if (DatePickerDateFormat == JQueryUIWidgetsDefaults.DatepickerDateFormat)
            {
                IEnumerable <object>           customAttributes   = propertyMetadata.ContainerType.GetProperty(propertyMetadata.PropertyName).GetCustomAttributes(true).AsEnumerable();
                JqGridColumnFormatterAttribute formatterAttribute = customAttributes.OfType <JqGridColumnFormatterAttribute>().FirstOrDefault();

                if (formatterAttribute != null && formatterAttribute.Formatter == JqGridColumnPredefinedFormatters.Date && formatterAttribute.OutputFormat != JqGridOptionsDefaults.FormatterOutputFormat && formatterAttribute.OutputFormat.IndexOfAny(_invalidDateFormatTokens) == -1)
                {
                    DatePickerDateFormat = Regex.Replace(formatterAttribute.OutputFormat, _ignoredDateFormatTokensRegexExpression, String.Empty);
                    DatePickerDateFormat = _dateFormatTokensRegex.Replace(DatePickerDateFormat, match => { return(_dateFormatTokensReplecements[match.Value]); });
                }
            }
            dataInitBuilder.AppendFormat("dateFormat: '{0}', ", DatePickerDateFormat);
            dataInitBuilder.AppendFormat(_jqueryUIDatepickerDaysNamesLocalizationOptions[compatibilityMode], gridSelector);

            if (FirstDay != 0)
            {
                dataInitBuilder.AppendFormat("firstDay: {0}, ", FirstDay);
            }

            if (GotoCurrent)
            {
                dataInitBuilder.Append("gotoCurrent: true, ");
            }

            if (!String.IsNullOrEmpty(MaxDate))
            {
                dataInitBuilder.AppendFormat("maxDate: '{0}', ", MaxDate);
            }

            if (!String.IsNullOrEmpty(MinDate))
            {
                dataInitBuilder.AppendFormat("minDate: '{0}', ", MinDate);
            }

            dataInitBuilder.AppendFormat(_jqueryUIDatepickerMonthsNamesLocalizationOptions[compatibilityMode], gridSelector);

            if (NumberOfMonths != 1)
            {
                dataInitBuilder.AppendFormat("numberOfMonths: {0}, ", NumberOfMonths);
            }

            if (SelectOtherMonths)
            {
                dataInitBuilder.Append("selectOtherMonths: true, ");
            }

            if (ShortYearCutoff != JQueryUIWidgetsDefaults.DatepickerShortYearCutoff)
            {
                dataInitBuilder.AppendFormat("shortYearCutoff: '{0}', ", ShortYearCutoff);
            }

            if (ShowCurrentAtPos != 0)
            {
                dataInitBuilder.AppendFormat("showCurrentAtPos: {0}, ", ShowCurrentAtPos);
            }

            if (ShowMonthAfterYear)
            {
                dataInitBuilder.Append("showMonthAfterYear: true, ");
            }

            if (ShowOtherMonths)
            {
                dataInitBuilder.Append("showOtherMonths: true, ");
            }

            if (ShowWeek)
            {
                dataInitBuilder.Append("showWeek: true, ");
            }

            if (StepMonths != 1)
            {
                dataInitBuilder.AppendFormat("stepMonths: {0}, ", StepMonths);
            }

            if (YearRange != JQueryUIWidgetsDefaults.DatepickerYearRange)
            {
                dataInitBuilder.AppendFormat("yearRange: '{0}', ", YearRange);
            }

            if (!String.IsNullOrEmpty(YearSuffix))
            {
                dataInitBuilder.AppendFormat("yearSuffix: '{0}', ", YearSuffix);
            }

            dataInitBuilder.Remove(dataInitBuilder.Length - 2, 2);
            dataInitBuilder.Append(" }); }, 0); }");

            return(dataInitBuilder.ToString());
        }