RadScheduler in Sharepoint 2010 Visual Webpart

2 posts, 0 answers
  1. Nitinkumar
    Nitinkumar avatar
    2 posts
    Member since:
    May 2013

    Posted 07 May 2013 Link to this post

    1) I have created Visual Webpart in sharepoint 2010 and parent User control is named "WPScedulerSharepointWebpartUserControl.ascx"

    2) Added AdvancedForm.ascx in control template of sharepoint and the same I have register in WPScedulerSharepointWebpartUserControl.ascx

    3) I have implemented Radscheduler along with advanceForm.ascx  control . In Visual studio 2010 webpart

    My issues are I am not able to get the public properties values from AdvancedForm.ascx to WPScedulerSharepointWebpartUserControl.ascx and Vice Versa.

    I am attaching the code for each web part user controls and there code behind below

    a) WPScedulerSharepointWebpartUserControl.ascx"

    <%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
    <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
        Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Import Namespace="Microsoft.SharePoint" %>
    <%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages"
        Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WPScedulerSharepointWebpartUserControl.ascx.cs"
        Inherits="OnCallSolution.WPScedulerSharepointWebpart.WPScedulerSharepointWebpartUserControl" %>
    <%@ Register Assembly="Telerik.Web.UI, Version=2013.1.403.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
        Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
    <%@ Register TagPrefix="scheduler" TagName="AdvancedForm" Src="~/_controltemplates/OnCallSolution/AdvancedForm.ascx" %>

    <link rel="Stylesheet" type="text/css" href="/_layouts/OnCallSolution/StyleOnCall.css" />
    <script type="text/javascript"> 
      //<![CDATA[

        // Dictionary containing the advanced template client object
        // for a given RadScheduler instance (the control ID is used as key).
        var schedulerTemplates = {};

        function schedulerFormCreated(scheduler, eventArgs) {
           
            // Create a client-side object only for the advanced templates
            var mode = eventArgs.get_mode();
            if (mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert ||
         mode == Telerik.Web.UI.SchedulerFormMode.AdvancedEdit) {
                // Initialize the client-side object for the advanced form
                var formElement = eventArgs.get_formElement();
                var templateKey = scheduler.get_id() + "_" + mode;
                var advancedTemplate = schedulerTemplates[templateKey];
                if (!advancedTemplate) {
                    // Initialize the template for this RadScheduler instance
                    // and cache it in the schedulerTemplates dictionary
                    var schedulerElement = scheduler.get_element();
                    var isModal = scheduler.get_advancedFormSettings().modal;
                    advancedTemplate = new window.SchedulerAdvancedTemplate(schedulerElement, formElement, isModal);
                    advancedTemplate.initialize();

                    schedulerTemplates[templateKey] = advancedTemplate;

                    // Remove the template object from the dictionary on dispose.
                    scheduler.add_disposing(function () {
                        schedulerTemplates[templateKey] = null;
                    });
                }

                // Are we using Web Service data binding?
                if (!scheduler.get_webServiceSettings().get_isEmpty()) {
                    // Populate the form with the appointment data
                    var apt = eventArgs.get_appointment();
                    var isInsert = mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert;
                    advancedTemplate.populate(apt, isInsert);
                }
            }
        }
       
      //]]>
    </script>
    <style type="text/css">
        div.RadScheduler .rsHorizontalHeaderTable, div.RadScheduler .rsContentTable
        {
            width: /*\**/ 100%\9 !important;
        }
        * + html div.RadScheduler .rsHorizontalHeaderTable, * + html div.RadScheduler .rsContentTable
        {
            width: auto !important;
        }
    </style>
    <script type="text/javascript">
        //    function validationFunctionSubjectContinentsRadComboBox(source, arguments) {
        //        if (arguments.Value.length > 0) {
        //            arguments.IsValid = true;
        //        }
        //        else {
        //            arguments.IsValid = false;
        //        }
        //    }
    </script>
    <script type="text/javascript">

        Sys.Application.add_init(function () {
            (function () {

                var $,
     $T,
     $DateTime,
     timePerMinute = 60000,
     timePerHour = timePerMinute * 60,
     timePerDay = timePerHour * 24,
     maxInt = 2147483647,
     maxDate = new Date("9000/01/01"),
     toolTipZIndex = 10000,
     resourceControlSuffix = "_ResourceValue";

                window.SchedulerAdvancedTemplate = function (schedulerElement, formElement, isModal) {
                    $ = $telerik.$;
                    $T = Telerik.Web.UI;
                    $DateTime = $T.Scheduler.DateTime;

                    this._scheduler = $find(schedulerElement.id);
                    this._schedulerElement = schedulerElement;
                    this._formElement = formElement;
                    this._schedulerElementId = this._schedulerElement.id;
                    this._isModal = isModal;
                    this._eventNamespace = schedulerElement.id;

                    // We need to obtain the ID of the naming container that
                    // contains the advanced template. We can find it from
                    // the ID of a known element hosted in the form,
                    // such as BasicControlsPanel.
                    var basicControlsPanel = $("div.rsAdvBasicControls", formElement);
                    if (basicControlsPanel.length == 0)
                        return;

                    var basicControlsPanelId = basicControlsPanel[0].id;
                    this._templateId = basicControlsPanelId.substring(0, basicControlsPanelId.lastIndexOf("_"));
                };

                window.SchedulerAdvancedTemplate._adjustHeight = function (schedulerElement) {
                    // Stretches the rsAdvOptions div to the available height.
                    var advancedEditDiv = $("div.rsAdvancedEdit:visible", schedulerElement);
                    var contentWrapper = $(".rsAdvContentWrapper", advancedEditDiv);
                    var excludedBorders = advancedEditDiv.outerHeight() - advancedEditDiv.height();
                    excludedBorders += contentWrapper.outerHeight() - contentWrapper.height();

                    var titleHeight = $("div.rsAdvTitle:visible", schedulerElement).outerHeight({ margin: true });

                    var buttonsDiv = $("div.rsAdvancedSubmitArea", advancedEditDiv);
                    var buttonsHeight = buttonsDiv.outerHeight({ margin: true });

                    var targetHeight = $(schedulerElement).height() - titleHeight - buttonsHeight - excludedBorders;
                    $(".rsAdvOptionsScroll", advancedEditDiv).height(targetHeight + "px");

                    // IE fix
                    if (buttonsDiv[0])
                        buttonsDiv[0].style.cssText = buttonsDiv[0].style.cssText;
                };

                window.SchedulerAdvancedTemplate.prototype =
    {
        initialize: function () {
            var scheduler = this._scheduler;
            scheduler.add_disposing(Function.createDelegate(this, this.dispose));

            // Enable the buttons in the advanced form
            $("div.rsAdvancedSubmitArea a", this._formElement).attr("onclick", "");

            if (scheduler.get_overflowBehavior() == 1 && !this._isModal)
                window.SchedulerAdvancedTemplate._adjustHeight(this._schedulerElement);

            this._initializePickers();
            this._initializeAdvancedFormValidators();
            this._initializeAllDayCheckbox();

            var recurrenceSupport = this._getRecurrenceEditor() != null;
            if (recurrenceSupport) {
                this._initializeResetExceptions();
            }

            if ($telerik.isIE) {
                var textarea = this._getSubjectTextBox().get_element();
                textarea.style.cssText = textarea.style.cssText;
            }

            // Exclude the spin button arrows from the tab order
            $('.riUp, .riDown', this._formElement).attr("tabindex", "-1");
        },

        dispose: function () {
            if (!this._formElement)
                return;

            $("*", this._formElement).unbind();
            $(document).unbind("." + this._eventNamespace);

            this._pickers = null;
            this._scheduler = null;
            this._schedulerElement = null;
            this._formElement = null;
        },

        // The populate function is needed only when using Web Service data binding.
        populate: function (apt, isInsert) {
            if (!this._clientMode)
                this._initializeClientMode();

            this._appointment = apt;
            this._isInsert = isInsert;

            var isAllDay =
                $DateTime.getTimeOfDay(apt.get_start()) == 0 &&
                $DateTime.getTimeOfDay(apt.get_end()) == 0;

            var aptEndDate = $DateTime.getDate(apt.get_end());
            if (isAllDay)
                aptEndDate = $DateTime.add(aptEndDate, -timePerDay);

            this._getSubjectTextBox().set_value(apt.get_subject());

            var descrTextBox = this._getDescriptionTextBox();
            if (descrTextBox)
                descrTextBox.set_value(apt.get_description());

            this._pickers.startDate.set_selectedDate($DateTime.getDate(apt.get_start()));
            this._pickers.startTime.set_selectedDate(apt.get_start());
            this._pickers.endDate.set_selectedDate(aptEndDate);
            this._pickers.endTime.set_selectedDate(apt.get_end());

            this._populateResources();
            this._populateAttributes();

            this._initalizeResetExceptionsClientMode();

            var allDayCheckBox = $("#" + this._templateId + "_AllDayEvent");
            if (isAllDay != allDayCheckBox[0].checked) {
                allDayCheckBox[0].checked = isAllDay;
                this._onAllDayCheckBoxClick(isAllDay, false);
            }

            this._populateRecurrence();
            this._populateReminder();
            this._populateTimeZones();
        },

        _initializeClientMode: function () {
            this._clientMode = true;
            var template = this;

            $("a.rsAdvEditSave", this._formElement)
                .click(function (e) {
                    template._saveClicked();
                    $telerik.cancelRawEvent(e);
                })
                .attr("href", "#");

            $("a.rsAdvEditCancel, a.rsAdvEditClose", this._formElement)
                .click(function (e) {
                    template._cancelClicked();
                    $telerik.cancelRawEvent(e);
                })
                .attr("href", "#");
        },

        _initalizeResetExceptionsClientMode: function () {
            var resetExceptions = $("span.rsAdvResetExceptions > a", this._formElement);
            var hasExceptions = this._appointment.get_recurrenceRule().indexOf("EXDATE") != -1;

            resetExceptions.unbind();

            if (hasExceptions) {
                var template = this;
                var localization = this._scheduler.get_localization();
                resetExceptions
                    .attr("href", "#")
                    .text(localization.AdvancedReset)
                    .click(function () {
                        // Display confirmation dialog
                        template._getRemoveExceptionsDialog()
                            .set_onActionConfirm(function () {
                                // The user has confirmed - proceed
                                template._scheduler.removeRecurrenceExceptions(template._appointment);
                                resetExceptions.text(localization.AdvancedDone);
                            })
                            .show();

                        return false;
                    });
            }
            else {
                resetExceptions.text("");
            }
        },

        // Click handler for the "Save" button
        _saveClicked: function () {
            if (typeof (Page_ClientValidate) != "undefined") {
                var validationGroup = this._scheduler.get_validationGroup() + (this._isInsert ? "Insert" : "Edit");
                if (!Page_ClientValidate(validationGroup))
                    return;
            }

            var apt = this._appointment;
            apt.set_subject(this._getSubjectTextBox().get_value());

            //        //By LTI addeded
            //        var apt = this._getContinentsRadComboBox;
            //        apt.set_subject(this._getContinentsRadComboBox.get_value());

            //        var apt = this._getCountriesRadComboBox;
            //        apt.set_subject(this._getCountriesRadComboBox.get_value());
            //        //end LTI

            var descrTextBox = this._getDescriptionTextBox();
            if (descrTextBox)
                apt.set_description(descrTextBox.get_value());

            var isAllDay = $get(this._templateId + "_AllDayEvent").checked;

            var startDate = this._pickers.startDate.get_selectedDate();
            var startTime = $DateTime.getTimeOfDay(this._pickers.startTime.get_selectedDate());
            apt.set_start($DateTime.add(startDate, isAllDay ? 0 : startTime));

            var endDate = this._pickers.endDate.get_selectedDate();
            var endTime = $DateTime.getTimeOfDay(this._pickers.endTime.get_selectedDate());
            apt.set_end($DateTime.add(endDate, isAllDay ? timePerDay : endTime));

            this._saveResources(apt);
            this._saveAttributes(apt);

            this._saveRecurrenceRule(apt);
            this._saveReminder(apt);
            this._saveTimeZone(apt);

            if (this._isInsert)
                this._scheduler.insertAppointment(apt);
            else
                this._scheduler.updateAppointment(apt);

            this._scheduler.hideAdvancedForm();
        },

        _cancelClicked: function () {
            this._scheduler.hideAdvancedForm();
        },

        _saveResources: function (apt) {
            var template = this;
            var schedulerResources = this._scheduler.get_resources();

            this._scheduler.get_resourceTypes().forEach(function (resourceType) {
                var resourceTypeName = resourceType.get_name();
                var baseName = template._templateId + "_Res" + resourceTypeName + resourceControlSuffix;
                var resourcesOfThisType = schedulerResources.getResourcesByType(resourceTypeName);

                if (resourceType.get_allowMultipleValues()) {
                    var checkBoxes = $(String.format("input[id*='{0}']", baseName), this._formElement);

                    if (checkBoxes.length > 0)
                        apt.get_resources().removeResourcesByType(resourceTypeName);

                    for (var i = 0; i < checkBoxes.length; i++) {
                        if (checkBoxes[i].checked && resourcesOfThisType.get_count() >= i)
                            apt.get_resources().add(resourcesOfThisType.getResource(i));
                    };
                }
                else {
                    var dropDown = $find(baseName);
                    if (!dropDown)
                        return;

                    apt.get_resources().removeResourcesByType(resourceTypeName);

                    if (dropDown.get_selectedIndex() == 0)
                        return;

                    var selectedValue = dropDown.get_selectedItem().get_value();
                    var newResource = schedulerResources.findAll(function (res) {
                        return res.get_type() == resourceTypeName &&
                               res._getInternalKey() == selectedValue;
                    }).getResource(0) || null;

                    if (newResource)
                        apt.get_resources().add(newResource);
                }
            });
        },

        _saveAttributes: function (apt) {
            var template = this;
            var aptAttributes = apt.get_attributes();
            $.each(this._scheduler.get_customAttributeNames(), function () {
                var attrName = this.toString();
                var textBox = $find(template._templateId + "_Attr" + attrName);
                if (!textBox)
                    return;

                aptAttributes.removeAttribute(attrName);
                aptAttributes.setAttribute(attrName, textBox.get_value());
            });
        },

        _getResourceIndex: function (res) {
            var resources = this._scheduler.get_resources().getResourcesByType(res.get_type());
            var index, length;

            for (index = 0, length = resources.get_count(); index < length; index++) {
                var filteredRes = resources.getResource(index);
                if (filteredRes.get_type() == res.get_type() && filteredRes.get_key() == res.get_key())
                    return index;
            };

            return -1;
        },

        _populateResources: function () {
            var template = this;
            var resourceTypes = this._scheduler.get_resourceTypes();

            resourceTypes.forEach(function (resType) {
                var baseName = template._templateId + "_Res" + resType.get_name() + resourceControlSuffix;

                if (resType.get_allowMultipleValues()) {
                    // Clear the resource checkboxes
                    $(String.format("input[id*='{0}']", baseName), this._formElement)
                        .each(function () {
                            this.checked = false;
                        });
                }
                else {
                    var dropDown = $find(baseName);
                    if (dropDown)
                        dropDown.get_items().getItem(0).select();
                }
            });

            this._appointment.get_resources().forEach(function (res) {
                var baseName = template._templateId + "_Res" + res.get_type() + resourceControlSuffix;
                var resType = resourceTypes.getResourceTypeByName(res.get_type());
                if (resType && resType.get_allowMultipleValues()) {
                    var resIndex = template._getResourceIndex(res);
                    var checkBox = $get(baseName + "_" + resIndex);

                    if (checkBox)
                        checkBox.checked = true;
                }
                else {
                    var dropDown = $get(baseName);
                    if (dropDown)
                        template._selectDropDownValue(dropDown, res._getInternalKey());
                }
            });
        },

        _populateAttributes: function () {
            var template = this;
            this._appointment.get_attributes().forEach(function (attr, attrValue) {
                var textBox = $find(template._templateId + "_Attr" + attr);
                if (!textBox)
                    return;

                textBox.set_value(attrValue);
            });
        },

        _saveRecurrenceRule: function (apt) {
            var editor = this._getRecurrenceEditor();
            if (!editor) return;

            editor.set_startDate(this._scheduler.displayToUtc(apt.get_start()));
            editor.set_endDate(this._scheduler.displayToUtc(apt.get_end()));
            editor.set_firstDayOfWeek(this._scheduler.get_firstDayOfWeek());

            var rrule = editor.get_recurrenceRule();
            if (!rrule) {
                apt.set_recurrenceRule("");
                return;
            }

            // Restore the original recurrence exceptions if the
            // appointment was already recurring.
            var originalRRule = $T.RecurrenceRule.parse(apt.get_recurrenceRule());
            if (originalRRule)
                Array.addRange(rrule.get_exceptions(), originalRRule.get_exceptions());

            var range = rrule.get_range();
            if (range.get_recursUntil().getTime() != maxDate.getTime()) {
                var recursUntil = this._scheduler.displayToUtc(range.get_recursUntil());

                if (!this._getElement("AllDayEvent").checked)
                    recursUntil = $DateTime.add(recursUntil, timePerDay);

                range.set_recursUntil(recursUntil);
            }

            apt.set_recurrenceRule(rrule.toString());
        },

        _saveTimeZone: function (apt) {
            var timeZonesDropDown = this._getTimeZonesDropDown();
            if (!timeZonesDropDown) return;

            var selectedValue = timeZonesDropDown.get_value();
            if (selectedValue != this._scheduler._timeZoneID)
                apt.set_timeZoneID(selectedValue);

        },

        _saveReminder: function (apt) {
            var reminderDropDown = this._getReminderDropDown();
            if (!reminderDropDown) return;

            var selectedValue = reminderDropDown.get_value();
            var aptReminders = apt.get_reminders();
            if (selectedValue) {
                var reminderMinutes = parseInt(selectedValue, 10);
                if (aptReminders.get_count() > 0) {
                    aptReminders.getReminder(0).set_trigger(reminderMinutes);
                }
                else {
                    var reminder = new $T.Reminder();
                    reminder.set_trigger(reminderMinutes);
                    aptReminders.add(reminder);
                }
            }
            else {
                if (aptReminders.get_count() > 0)
                    aptReminders.removeAt(0);
            }
        },

        _populateRecurrence: function () {
            var editor = this._getRecurrenceEditor();
            if (!editor) return;

            var rrule = $T.RecurrenceRule.parse(this._appointment.get_recurrenceRule());
            if (rrule) {
                var range = rrule.get_range();
                var recursUntil = range.get_recursUntil().getTime();
                if (recursUntil != maxDate.getTime()) {
                    recursUntil = this._scheduler.utcToDisplay(range.get_recursUntil());

                    if (!this._getElement("AllDayEvent").checked)
                        recursUntil = $DateTime.add(recursUntil, -timePerDay);

                    range.set_recursUntil(recursUntil);
                }
            }
            else {
                editor.set_startDate(this._appointment.get_start());
                editor.set_endDate(this._appointment.get_end());
            }

            editor.set_recurrenceRule(rrule);
        },

        _populateTimeZones: function () {
            var timeZonesDropDown = this._getTimeZonesDropDown();
            if (!timeZonesDropDown) return;

            var timeZone = this._appointment.get_timeZoneID();
            if (!timeZone)
                this._selectDropDownValue(timeZonesDropDown.get_element(), this._scheduler._timeZoneId);
            else
                this._selectDropDownValue(timeZonesDropDown.get_element(), timeZone);
        },

        _populateReminder: function () {
            var reminderDropDown = this._getReminderDropDown();
            if (!reminderDropDown) return;

            var reminder = this._appointment.get_reminders().getReminder(0);
            if (!reminder)
                this._selectDropDownValue(reminderDropDown.get_element(), "");
            else
                this._selectDropDownValue(reminderDropDown.get_element(), reminder.get_trigger());
        },

        _selectDropDownValue: function (dropDown, value) {
            var comboBox = $find(dropDown.id);
            if (comboBox && $T.RadComboBox.isInstanceOfType(comboBox)) {
                comboBox.get_items().forEach(function (item) {
                    if (item.get_value() == value)
                        item.select();
                });
            }
            else {
                $.each(dropDown.options, function () {
                    if (this.value == value) {
                        this.selected = true;
                        return false;
                    }
                });
            }
        },

        _getSubjectTextBox: function () {
            return $find(this._templateId + "_SubjectText");
        },

        //    //By LTI Add

        //    _getContinentsRadComboBox: function () {
        //        return this._getControl("ContinentsRadComboBox")
        //    },

        //    _getCountriesRadComboBox: function () {
        //        return this._getControl("CountriesRadComboBox")
        //    },
        //    //end LTI

        _getDescriptionTextBox: function () {
            return $find(this._templateId + "_DescriptionText");
        },

        _getRecurrenceEditor: function () {
            return $find(this._templateId + "_AppointmentRecurrenceEditor");
        },

        _getReminderDropDown: function () {
            return this._getControl("ReminderDropDown")
        },

        _getTimeZonesDropDown: function () {
            return this._getControl("TimeZonesDropDown")
        },

        _getElement: function (id) {
            return $get(this._templateId + "_" + id);
        },

        _getControl: function (id) {
            return $find(this._templateId + "_" + id);
        },

        _initializePickers: function () {
            // Show picker pop-ups when the inputs are focused

            var showPopupDelegate = Function.createDelegate(this, this._showPopup);

            var templateId = this._templateId;
            this._pickers =
      {
          "startDate": $find(templateId + "_StartDate"),
          "endDate": $find(templateId + "_EndDate"),
          "startTime": $find(templateId + "_StartTime"),
          "endTime": $find(templateId + "_EndTime")
      };

            $.each(
       this._pickers,
       function () {
           if (this && this.get_dateInput)
               this.get_dateInput().add_focus(showPopupDelegate);
       });

            var pickerControls = [
         $get(this._pickers.startDate.get_element().id + "_wrapper"),
         $get(this._pickers.startTime.get_element().id + "_wrapper"),
         $get(this._pickers.startTime.get_element().id + "_timeView_wrapper"),
         $get(this._pickers.endDate.get_element().id + "_wrapper"),
         $get(this._pickers.endTime.get_element().id + "_wrapper"),
         $get(this._pickers.endTime.get_element().id + "_timeView_wrapper"),
         $get(this._templateId + "_SharedCalendar")
        ];

            // Hide the pickers when the focus moves to another element in the template
            var advancedTemplate = this;
            var eventName = "focusin";

            $(this._formElement).bind(eventName,
       function (e) {
           var inPickerControls = false;
           for (var i = 0, len = pickerControls.length; i < len; i++) {
               var control = pickerControls[i];
               if ($telerik.isDescendantOrSelf(control, e.target)) {
                   inPickerControls = true;
                   break;
               }
           }

           if (!inPickerControls)
               advancedTemplate._hidePickerPopups();
       });

            // Custom jQuery event fired when the pop-up advanced
            // form has been moved.
            $(this._formElement).bind("formMoving", function () {
                advancedTemplate._hidePickerPopups();
            });

            if (this._isModal)
                $(document).bind("scroll." + this._eventNamespace, function () {
                    advancedTemplate._hidePickerPopups();
                });
        },

        _initializeAdvancedFormValidators: function () {
            var toolTip = this._createValidatorToolTip();

            if (typeof (Page_Validators) == "undefined")
                return;

            for (var validatorIndex in Page_Validators) {
                var validator = Page_Validators[validatorIndex];
                if (this._validatorIsInTemplate(validator)) {
                    var control = $("#" + validator.controltovalidate);
                    if (control.length == 0)
                        break;

                    if (control.parent().is(".rsAdvDatePicker") ||
         control.parent().is(".rsAdvTimePicker")) {
                        $("#" + validator.controltovalidate + "_dateInput")
          .bind("focus", { "toolTip": toolTip }, this._showToolTip)
          .bind("blur", { "toolTip": toolTip }, this._hideToolTip)
          [0].errorMessage = validator.errormessage;
                    }
                    else {
                        control.addClass("rsValidatedInput");
                    }

                    control[0].errorMessage = validator.errormessage;
                    this._updateValidator(validator, control);
                }
            }

            var advancedTemplate = this;
            var originalValidatorUpdateDisplay = ValidatorUpdateDisplay;

            ValidatorUpdateDisplay = function (validator) {
                if (advancedTemplate._validatorIsInTemplate(validator) && validator.controltovalidate) {
                    advancedTemplate._updateValidator(validator);
                }
                else {
                    originalValidatorUpdateDisplay(validator);
                }
            };

            $(".rsValidatedInput", this._formElement)
       .bind("focus", { "toolTip": toolTip }, this._showToolTip)
       .bind("blur", { "toolTip": toolTip }, this._hideToolTip);
        },

        _initializeAllDayCheckbox: function () {
            var allDayCheckbox = $("#" + this._templateId + "_AllDayEvent");
            var controlList = $(allDayCheckbox[0].parentNode.parentNode.parentNode);
            var timePickers = controlList.find('.rsAdvTimePicker');

            // RadDateTimePicker-display-hackedy-hack
            if ($telerik.isIE6 || $telerik.isIE7) {
                $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
       {
           display: "inline",
           zoom: 1,
           width: ""
       });
            }
            else {
                $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
       {
           display: "inline-block",
           width: ""
       });
            }

            var timePickersWidth = $("#" + this._templateId + "_StartTime_dateInput").outerWidth();

            timePickers.width(timePickersWidth);

            var initialPickersWidth = $(".rsTimePick", this._formElement).eq(0).outerWidth();
            var allDayPickersWidth = initialPickersWidth - timePickersWidth;

            var startTimeValidator = $get(this._templateId + "_StartTimeValidator");
            var endTimeValidator = $get(this._templateId + "_StartTimeValidator");

            var advancedTemplate = this;

            // IE fix - the hidden input pushes down the other TimePicker elements during animation
            controlList.find('.rsAdvTimePicker > input').css("display", "none");

            var clickHandler = function (allDay, animate) {
                var showTimePickers = function () {
                    if ($telerik.isSafari || $telerik.isOpera)
                        timePickers.css("display", "inline-block");
                    else
                        timePickers.show();
                };

                if (!allDay)
                    showTimePickers();

                controlList.find('.rsTimePick').each(function () {
                    if (animate) {
                        $(this).stop();

                        if (allDay)
                            $(this).animate({ width: allDayPickersWidth }, "fast",
           "linear", function () { timePickers.hide(); });
                        else
                            $(this).animate({ width: initialPickersWidth }, "fast");
                    }
                    else {
                        if (allDay) {
                            timePickers.hide();
                            $(this).width(allDayPickersWidth);
                        }
                        else {
                            $(this).width(initialPickersWidth);
                        }
                    }
                });

                if (typeof (ValidatorEnable) != "undefined") {
                    ValidatorEnable(startTimeValidator, !allDay);
                    ValidatorEnable(endTimeValidator, !allDay);
                }

                var startTimePicker = advancedTemplate._pickers.startTime;
                startTimePicker.set_enabled(!allDay);

                var endTimePicker = advancedTemplate._pickers.endTime;
                endTimePicker.set_enabled(!allDay);
            };

            this._onAllDayCheckBoxClick = clickHandler;

            clickHandler(allDayCheckbox[0].checked, false);
            allDayCheckbox.click(function () { clickHandler(this.checked, true); });
        },

        _initializeResetExceptions: function () {
            var resetExceptions = $("#" + this._templateId + "_ResetExceptions");
            if (resetExceptions.length == 0)
                return;

            var scheduler = this._scheduler;
            var template = this;
            var localization = scheduler.get_localization();
            var doneMessage = localization.AdvancedDone;
            if (resetExceptions[0].innerHTML.indexOf(doneMessage) > -1) {
                // Hide "Done" after 2 seconds
                resetExceptions.click(function () { return false; });
                window.setTimeout(function () { resetExceptions.fadeOut("slow"); }, 2000);
            }
            else {
                resetExceptions.click(
                    function () {
                        // Display confirmation dialog
                        var dialog = template._getRemoveExceptionsDialog();
                        dialog.set_onActionConfirm(function () {
                            // The user has confirmed - proceed with postback
                            resetExceptions[0].innerHTML = localization.AdvancedWorking;
                            window.location.href = resetExceptions[0].href;

                            dialog.dispose();
                        })
                            .show();

                        return false;
                    });
            }
        },

        _getRemoveExceptionsDialog: function () {
            var localization = this._scheduler.get_localization();
            return $telerik.$.modal(this._formElement)
                .initialize()
                .set_content({
                    title: localization.ConfirmResetExceptionsTitle,
                    content: localization.ConfirmResetExceptionsText,
                    ok: localization.ConfirmOK,
                    cancel: localization.ConfirmCancel
                });
        },

        _updateValidator: function (validator) {
            var control = $("#" + validator.controltovalidate);

            if (control.is(".rsValidatedInput"))
                control = control.parent();

            if (!validator.isvalid)
                control.addClass("rsInvalid");
            else
                control.removeClass("rsInvalid");
        },

        _validatorIsInTemplate: function (validator) {
            return $(validator).parents().is("#" + this._schedulerElementId);
        },

        _createValidatorToolTip: function () {
            return $('<div></div>').hide().appendTo($('.rsAdvancedEdit:visible', $get(this._schedulerElementId)));
        },

        _showToolTip: function (e) {
            var toolTip = e.data.toolTip;
            var _control = $(this);
            var isTextArea = false;
            var controlParent = _control.parent();

            if (_control.is("textarea")) {
                isTextArea = true;
                _control = controlParent;
            }

            var isInvalid = _control.is(".rsInvalid");
            // Date and time pickers are validated against a hidden input located one level up in the DOM
            isInvalid = isInvalid || controlParent.parent().children().is(".rsInvalid");

            if (isInvalid) {
                toolTip
        .css("visibility", "hidden")
        .text(this.errorMessage)
        .addClass("rsValidatorTooltip");

                var positionOrigin = _control;
                if (controlParent.is(".riCell"))
                    positionOrigin = controlParent;

                var pos = positionOrigin.position();
                var toolTipLeft = pos.left + "px";

                if (isTextArea) {
                    toolTipLeft = (pos.left + positionOrigin.outerWidth() - toolTip.outerWidth()) + "px";
                }

                var toolTipTop = (pos.top - toolTip.outerHeight()) + "px";
                toolTip
        .css({
            top: toolTipTop,
            left: toolTipLeft,
            zIndex: toolTipZIndex,
            visibility: "visible"
        })
        .fadeIn("fast");
            }
        },

        _hideToolTip: function (e) {
            var toolTip = e.data.toolTip;
            toolTip.hide();
        },

        _hidePickerPopups: function () {
            if (!this._pickers)
                return;

            for (var pickerId in this._pickers) {
                var picker = this._pickers[pickerId];

                if (!picker)
                    continue;

                if (picker.hideTimePopup)
                    picker.hideTimePopup();
                else
                    picker.hidePopup();
            }
        },

        _showPopup: function (sender) {
            this._hidePickerPopups();

            if (sender.Owner.showTimePopup)
                sender.Owner.showTimePopup();
            else
                sender.Owner.showPopup();
        }
    };
            })();
        });

        var countriesCombo = null;
        function CountriesComboClientLoad(sender) {
            countriesCombo = sender;
        }
        function CountriesLoaded(combo, eventArqs) {
            if (combo.get_items().get_count() > 0) {
                // Pre-select the first country  
                combo.set_text(combo.get_items().getItem(0).get_text());
                combo.get_items().getItem(0).highlight();
            }
            combo.showDropDown();
        }

        function LoadCountries(combo, eventArqs) {
            var item = eventArqs.get_item();

            countriesCombo.set_text("Loading...");

            // Is continent selected?  
            if (item.get_index() > 0) {
                // Request items through the ItemsRequested event of the   
                // countries RadComboBox passing the continentID as a parameter   
                countriesCombo.requestItems(item.get_value(), false);

            }
            else {
                // The "-Select a continent-" item was chosen  
                countriesCombo.set_text(" ");
                countriesCombo.clearItems();
            }
        }

      

    </script>
    <%--<script type="text/javascript">   
    //<![CDATA[

        function schedulerFormCreated(scheduler, eventArgs) {
            var $ = $telerik.$;
            var schedulerElement = scheduler.get_element();
            var formElement = $("div.rsAdvancedEdit", schedulerElement);

            if (formElement.length == 1) {
                // Initialize the client-side object for the advanced form  
                var advancedTemplate = new window.SchedulerAdvancedTemplate(schedulerElement, formElement);
                advancedTemplate.initialize();
            }
        }  
     
    //]]>   
    </script> --%>

         <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
              <AjaxSettings>
                   <telerik:AjaxSetting AjaxControlID="RadScheduler1">
                        <UpdatedControls>
                             <telerik:AjaxUpdatedControl ControlID="RadScheduler1" LoadingPanelID="RadAjaxLoadingPanel1" />
                        </UpdatedControls>
                   </telerik:AjaxSetting>
              </AjaxSettings>
         </telerik:RadAjaxManager>
         <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />

        <table style="width: 100%" cellpadding="3" cellspacing="5" align="center">
            <tr>
                <td align="left" class="wepartFont">
                    <telerik:RadScheduler runat="server" ID="RadScheduler1" OverflowBehavior="Expand"
                        Skin="Windows7" OnAppointmentDelete="RadScheduler1_AppointmentDelete" OnAppointmentUpdate="RadScheduler1_AppointmentUpdate"
                        OnAppointmentInsert="RadScheduler1_AppointmentInsert" SelectedView="MonthView"
                        OnFormCreated="RadScheduler1_FormCreated" DataStartField="Start" DataEndField="End"
                        AdvancedForm-Enabled="true" Localization-AdvancedNewAppointment="New Schedule"
                        StartInsertingInAdvancedForm="True" OnAppointmentCreated="RadScheduler1_AppointmentCreated"
                        OnFormCreating="RadScheduler1_FormCreating" OnAppointmentDataBound="RadScheduler1_AppointmentDataBound"
                        StartEditingInAdvancedForm="true" OnClientFormCreated="schedulerFormCreated"
                        EnableCustomAttributeEditing="true"
                        CustomAttributeNames="Asset_Contact_Tag_ID,Shift_ID,Contact_ID"
                        >
                        <Localization AdvancedNewAppointment="New Schedule" AdvancedEditAppointment="Edit Schedule"
                            AdvancedSubjectRequired="Please provide schedule subject" ConfirmDeleteText="Are you sure you want to delete this schedule?"
                            ConfirmRecurrenceDeleteTitle="Deleting a recurring schedule" ConfirmRecurrenceEditTitle="Editing a recurring schedule"
                            ConfirmRecurrenceMoveTitle="Moving a recurring schedule" ConfirmRecurrenceResizeTitle="Resizing a recurring schedule"
                            ContextMenuAddAppointment="New Schedule" ContextMenuAddRecurringAppointment="New Recurring Schedule">
                        </Localization>
                        <AppointmentContextMenuSettings EnableDefault="true" />
                        <TimeSlotContextMenuSettings EnableDefault="true" />
                        <ExportSettings OpenInNewWindow="True">
                        </ExportSettings>
                        <AdvancedForm Modal="true" EnableTimeZonesEditing="true" />
                        <Reminders Enabled="true" />
                        <AdvancedEditTemplate>
                            <scheduler:AdvancedForm runat="server" ID="AdvancedEditForm1" Mode="Edit" Subject='<%# Bind("Subject") %>'
                                Description='<%# Bind("Description") %>' Start='<%# Bind("Start") %>' End='<%# Bind("End") %>'
                                RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' Reminder='<%# Bind("Reminder") %>'
                                TimeZoneID='<%# Bind("TimeZoneID") %>'  />
                            />
                        </AdvancedEditTemplate>
                        <AdvancedInsertTemplate>
                            <scheduler:AdvancedForm runat="server" ID="AdvancedInsertForm1" Mode="Insert" Subject='<%# Bind("Subject") %>'
                                Start='<%# Bind("Start") %>' End='<%# Bind("End") %>' Description='<%# Bind("Description") %>'
                                RecurrenceRuleText='<%# Bind("RecurrenceRule") %>' Reminder='<%# Bind("Reminder") %>'
                                TimeZoneID='<%# Bind("TimeZoneID") %>'  />
                            />
                        </AdvancedInsertTemplate>
                    </telerik:RadScheduler>
                </td>
            </tr>
        </table>

     

     

    b) WPScedulerSharepointWebpartUserControl.ascx.cs

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using Microsoft.SharePoint;
    using Telerik.Web.UI;
    using System.Data;
    using System.Collections.Generic;
    using OnCallSolution.ControlTemplates.OnCallSolution;
    using System.ComponentModel;
    using Microsoft.SharePoint.WebPartPages;
    using System.Xml.Serialization;//for accessing the public properties from the advanced form

    namespace OnCallSolution.WPScedulerSharepointWebpart
    {
        [ToolboxItemAttribute(false)]
        [XmlRoot(Namespace = "OnCallSolution.WPScedulerSharepointWebpart")]
        public partial class WPScedulerSharepointWebpartUserControl : UserControl
        {
            // Fields
            protected RadScheduler RadScheduler1;
            public DataTable dtResult;
            UserInfoManupulator ui = new UserInfoManupulator();
                  

            public virtual Object RecurrenceParentID
            {
                get;
                set;
            }

            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
                RadScheduler1.Localization.AdvancedNewAppointment = "New Schedule";
                RadScheduler1.AdvancedForm.Enabled = true;
                RadScheduler1.SelectedDate = System.DateTime.UtcNow.ToLocalTime(); //this date is called as per UTC time line
            }

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!this.Page.IsPostBack)
                {
                    this.LoadSchedulerData();
                    //// this.LoadContactPerson();

                    //// Session.Remove(AppointmentsKey);
                    //RadScheduler1.DataKeyField = "ID";
                    //RadScheduler1.DataStartField = "Start";
                    //RadScheduler1.DataEndField = "End";
                    //RadScheduler1.DataSubjectField = "Subject";
                    //RadScheduler1.DataRecurrenceField = "RecurrenceRule";
                    //RadScheduler1.DataRecurrenceParentKeyField = "RecurrenceParentID";
                }

                RadScheduler1.DataSource = Appointments;

            }
            // Methods
            private void LoadSchedulerData()
            {
                try
                {
                    OC_Scheduler_Appointment sc = new OC_Scheduler_Appointment();
                    DataTable dt = new DataTable();
                    dt = null;
                    dt = sc.getData();

                    RadScheduler1.DataSource = dt;
                    RadScheduler1.DataSubjectField = "Subject";
                    RadScheduler1.DataStartField = "Start";
                    RadScheduler1.DataEndField = "End";
                    RadScheduler1.DataKeyField = "ID";
                    RadScheduler1.DataRecurrenceField = "RecurrenceRule";
                    RadScheduler1.DataRecurrenceParentKeyField = "RecurrenceParentID";
                    RadScheduler1.DataBind();

                }
                catch (Exception ex)
                {
                }
            }

            private void LoadContactPerson()
            {
                try
                {

                    OC_Scheduler_Appointment app = new OC_Scheduler_Appointment();
                    dtResult = app.getContactforCalendar();
                    if (dtResult != null)
                    {
                        ResourceType rt = new ResourceType("Contact");
                        rt.ForeignKeyField = "Contact_ID";
                        rt.KeyField = "Contact_ID";
                        rt.TextField = "Name";
                        rt.DataSource = dtResult;

                        for (int i = 0; i < dtResult.Rows.Count; i++)
                        {
                            RadScheduler1.Resources.Add(new Resource("Contact", dtResult.Rows[i]["Contact_ID"].ToString(), dtResult.Rows[i]["Name"].ToString()));
                        }
                        RadScheduler1.ResourceTypes.Add(rt);
                    }
                }
                catch (Exception ex)
                {
                }
            }

            private void LoadAssociatedTag()
            {
                // throw new NotImplementedException();
            }

            protected void RadScheduler1_AppointmentDelete(object sender, SchedulerCancelEventArgs e)
            {
                OC_Scheduler_Appointment appointmentDelete = new OC_Scheduler_Appointment();

                try
                {
                    appointmentDelete.deleteAppointmentByID((int)e.Appointment.ID);
                    LoadSchedulerData();
                }
                catch (Exception ex)
                {
                }
                LoadSchedulerData();
            }

            protected void RadScheduler1_AppointmentInsert(object sender, SchedulerCancelEventArgs e)
            {
                #region CommentedCode

                //OC_Scheduler_Appointment appointmentAdd = new OC_Scheduler_Appointment();
                //AdvancedForm o = new AdvancedForm();//for accesing the public proerties from the advanced from

                //try
                //{

               
                //    appointmentAdd.Subject = e.Appointment.Subject.ToString();
                //    appointmentAdd.Start = e.Appointment.Start;
                //    appointmentAdd.End = e.Appointment.End;
                //    appointmentAdd.Description = e.Appointment.Description;// e.Appointment.Description;
                //    appointmentAdd.RecurrenceRule = e.Appointment.RecurrenceRule;// e.Appointment.RecurrenceRule.ToString();
                //    appointmentAdd.TimeZone = o.TimeZoneID;// e.Appointment.TimeZoneID;// .Appointment.TimeZoneID;
                //    appointmentAdd.Asset_Contact_Tag_ID = o.Asset_Contact_Tag_ID;// Asset_Contact_Tag_ID;// ContactID;// o._ContactIDofPerson;
                //    appointmentAdd.Shift_ID = 1;//temporary hard coaded values here 1 or 2
                //    appointmentAdd.Reminder = e.Appointment.Reminders.ToString();// e.Appointment.Reminders.ToString();
                //    appointmentAdd.Annotations = "";
                //    appointmentAdd.Updated_By = ui.GetCurrentUserLoginName();
                //    appointmentAdd.Update_Time = System.DateTime.UtcNow;

                //    DataTable dt = null;
                //    dt = appointmentAdd.getAsset_Contact_Tag_ID(o._Asset_Contact_Tag_ID, o._ContactID);

                //    if (dt != null)
                //    {
                //        appointmentAdd.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
                //    }

                //    dt = null;

                //    dt = appointmentAdd.get_Shift_ID(appointmentAdd.Shift_ID);

                //    if (dt != null)
                //    {
                //        appointmentAdd.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
                //    }

                //    //if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
                //    if (appointmentAdd.RecurrenceParentID == 0)
                //    {
                //        //Insert all values along with the recurentceParentID NULL if not recurrence done
                //        //int? tempRPID = sys.null;
                //        //appointmentAdd.RecurrenceParentID = tempRPID;
                //        int saveOrNot = appointmentAdd.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
                //    }
                //    else
                //    {

                //        //Insert all values along with the recurentceParentID
                //        // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
                //        int saveOrNot = appointmentAdd.saveApointmentData(appointmentAdd);

                //    }

     

                //}
                //catch (Exception ex)
                //{
                //}

                #endregion
                RadScheduler1.Rebind();
                // LoadSchedulerData();
                string wer = e.Appointment.Attributes["Continent"];

                          
            }
           
            protected void RadScheduler1_AppointmentUpdate(object sender, AppointmentUpdateEventArgs e)
            {
               
                //OC_Scheduler_Appointment appointmentUpdate = new OC_Scheduler_Appointment();

                //try
                //{
                //    RecurrenceRule rrule;
                //    if (RecurrenceRule.TryParse(e.ModifiedAppointment.RecurrenceRule, out rrule))
                //    {
                //        rrule.Range.Start = e.ModifiedAppointment.Start;
                //        rrule.Range.EventDuration = e.ModifiedAppointment.End - e.ModifiedAppointment.Start;
                //        TimeSpan startTimeChange = e.ModifiedAppointment.Start - e.Appointment.Start;
                //        for (int i = 0; i < rrule.Exceptions.Count; i++)
                //        {
                //            rrule.Exceptions[i] = rrule.Exceptions[i].Add(startTimeChange);
                //        }

                //        e.ModifiedAppointment.RecurrenceRule = rrule.ToString();
                //    }

                //    appointmentUpdate.Subject = e.ModifiedAppointment.Subject.ToString();
                //    appointmentUpdate.Start = e.ModifiedAppointment.Start;
                //    appointmentUpdate.End = e.ModifiedAppointment.End;
                //    appointmentUpdate.Description =  e.ModifiedAppointment.Description;
                //   // appointmentUpdate.RecurrenceRule = e.ModifiedAppointment.RecurrenceRule;// RecurrenceRuleText;// e.Appointment.RecurrenceRule.ToString();
                //    appointmentUpdate.TimeZone = e.ModifiedAppointment.TimeZoneID; // .Appointment.TimeZoneID;
                //    //appointmentUpdate.Asset_Contact_Tag_ID = Asset_Contact_Tag_ID;// ContactID;// o._ContactIDofPerson;
                //    //appointmentUpdate.Shift_ID = 1;//temporary hard coaded values here 1 or 2
                //    //appointmentUpdate.Reminder = Reminder;// e.Appointment.Reminders.ToString();
                //    //appointmentUpdate.Annotations = "";
                //    //appointmentUpdate.Updated_By = ui.GetCurrentUserLoginName();
                //    //appointmentUpdate.Update_Time = System.DateTime.UtcNow;

                //    //DataTable dt = null;
                //    //dt = appointmentUpdate.getAsset_Contact_Tag_ID(Asset_Contact_Tag_ID, ContactID);

                //    //if (dt != null)
                //    //{
                //    //    appointmentUpdate.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
                //    //}

                //    //dt = null;

                //    //dt = appointmentUpdate.get_Shift_ID(appointmentAdd.Shift_ID);

                //    //if (dt != null)
                //    //{
                //    //    appointmentUpdate.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
                //    //}

                //    ////if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
                //    //if (appointmentUpdate.RecurrenceParentID == 0)
                //    //{
                //    //    //Insert all values along with the recurentceParentID NULL if not recurrence done
                //    //    //int? tempRPID = sys.null;
                //    //    //appointmentAdd.RecurrenceParentID = tempRPID;
                //    //    int saveOrNot = appointmentUpdate.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
                //    //}
                //    //else
                //    //{

                //    //    //Insert all values along with the recurentceParentID
                //    //    // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
                //    //    int saveOrNot = appointmentUpdate.saveApointmentData(appointmentAdd);

                //    //    //get latest insterted record
                //    //    //SELECT ID FROM Appointments WHERE id=(SELECT max(id) FROM Appointments)

     

                //    //}

     

                //}
                //catch (Exception ex)
                //{
                //}

     

     

                //RecurrenceRule rrule;
                //if (RecurrenceRule.TryParse(e.ModifiedAppointment.RecurrenceRule, out rrule))
                //{
                //    rrule.Range.Start = e.ModifiedAppointment.Start;
                //    rrule.Range.EventDuration = e.ModifiedAppointment.End - e.ModifiedAppointment.Start;
                //    TimeSpan startTimeChange = e.ModifiedAppointment.Start - e.Appointment.Start;
                //    for (int i = 0; i < rrule.Exceptions.Count; i++)
                //    {
                //        rrule.Exceptions[i] = rrule.Exceptions[i].Add(startTimeChange);
                //    }

                //    e.ModifiedAppointment.RecurrenceRule = rrule.ToString();
                //    e.ModifiedAppointment.Subject=

                //}

                LoadSchedulerData();
            }

            protected void RadScheduler1_FormCreated(object sender, SchedulerFormCreatedEventArgs e)
            {
                if ((e.Container.Mode == SchedulerFormMode.AdvancedEdit) || (e.Container.Mode == SchedulerFormMode.AdvancedInsert))
                {
                   
                    if (e.Appointment.ID != null)//if this numm then new appoinement inserting and if its has value then Edit Appoitment will work aarangement done here
                    {

                        ////Start this part will store the appointment ID in hiddent text fields which I will required to update the data from Advanced form
                        //RadTextBox txtGetAppHiddentID = (RadTextBox)e.Container.Controls[1].Controls[1].FindControl("RadTextHiddenAppID");
                        //txtGetAppHiddentID.Text = e.Appointment.ID.ToString();
                        //_AppID = Convert.ToInt32(e.Appointment.ID);
                        ////end

                        //get Asset_Contact_Tag_ID by Appoitment ment ID from the Edit appointment
                        // getAsset_Contact_Tag_IDByAppointmentID (Method)

                        OC_Scheduler_Appointment getAsset_Contact_Tag = new OC_Scheduler_Appointment();
                        dtResult = getAsset_Contact_Tag.getAsset_Contact_Tag_IDByAppointmentID((int)e.Appointment.ID);

                        int assetID = Convert.ToInt32(dtResult.Rows[0]["Asset_Contact_Tag_ID"]);

                        //Select person and tag on Edit the existing appointment
                        //get people
                        //Select distinct Contact_ID, Name from OC_Contact where Contact_ID=(Select Contact_ID from OC_Asset_Contact_Tag where Asset_Contact_Tag_ID=151)

                        OC_Scheduler_Appointment getPersonAndContactID = new OC_Scheduler_Appointment();

                        RadComboBox rcb_PersonName = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("ContinentsRadComboBox");

                        dtResult = getPersonAndContactID.getPersonNameForFirstComboBoxInEditAppointment();
                        //rcb_PersonName.ClearSelection();
                        //rcb_PersonName.DataSource = dtResult;
                        //rcb_PersonName.DataTextField = "Name";
                        //rcb_PersonName.DataValueField = "Contact_ID";
                        //rcb_PersonName.DataBind();

                        dtResult = getPersonAndContactID.getPersonAndContactIDOnEditAppointmentByAsset_Contact_Tag_ID(assetID);
                        int contactid = Convert.ToInt32(dtResult.Rows[0]["Contact_ID"]);

                        rcb_PersonName.SelectedItem.Text = dtResult.Rows[0]["Name"].ToString();
                        string compare = dtResult.Rows[0]["Name"].ToString();

                        //for Selected the person name whille in Edit appointment mode
                        if (compare == dtResult.Rows[0]["Name"].ToString())
                        {
                            rcb_PersonName.SelectedItem.Text = dtResult.Rows[0]["Name"].ToString();
                        }

                        dtResult = getPersonAndContactID.getTagNameByPersonNameOnEditAppointment(rcb_PersonName.SelectedItem.Text);
                        RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");
                        rcb_Tag.DataSource = dtResult;
                        rcb_Tag.DataTextField = "Tag_Name";
                        rcb_Tag.DataValueField = "Asset_Tags_Master_ID";
                        rcb_Tag.DataBind();
                        rcb_Tag.SelectedItem.Text = dtResult.Rows[0]["Tag_Name"].ToString();

     

                        // Select distinct T.Asset_Tags_Master_ID,t.Tag_Name  from OC_Asset_Contact_Tag CT inner join  OC_Asset_Tag_Master T  on t.Asset_Tags_Master_ID=ct.Asset_Tags_Master_ID inner join OC_Contact C on c.Contact_ID=  ct.Contact_ID where C.Name='Penkar, Shafaque' and ct.Status=1

     

                        // int currentValueOfPersonAfterRuntimeSelectedPersonName = Convert.ToInt32(rcb_PersonName.SelectedValue);

                        //create run time selected index before filling data of tags name as its should be populated before personame dropdown . So runtime we are selecting index of first dropdown and then willselect text from the below methods
                        // rcb_PersonName.SelectedItem.Text = Convert.ToInt32(dtResult.Rows[0]["Contact_ID"]);

                        //get Tag
                        //select Asset_Tags_Master_ID,Tag_Name from  OC_Asset_Tag_Master where Asset_Tags_Master_ID =(select Asset_Tags_Master_ID from OC_Asset_Contact_Tag where Contact_ID=13 and Asset_Contact_Tag_ID=138) 

     

     

                        ////select TagName on edit of existing appointment and get id's from above function
                        //OC_Scheduler_Appointment getTagNameAndTagID = new OC_Scheduler_Appointment();
                        //dtResult = getTagNameAndTagID.getTagNameAndAsset_Contact_Tag_IDOnEditAppointmentByContactIDAndAppointmentID(contactid, assetID);
                        //RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");
                        ////rcb_Tag.SelectedIndex = Convert.ToInt32(dtResult.Rows[0]["Asset_Tags_Master_ID"]);
                        //rcb_Tag.SelectedItem.Text = dtResult.Rows[0]["Tag_Name"].ToString();

     

                    }
                    else
                    {
                        //for validation of person and Tag name combobox
                        //RadComboBox rcb_PersonName = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("ContinentsRadComboBox");
                        //RequiredFieldValidator rfv= new RequiredFieldValidator();
                        //rfv.ID="rcb_PersonName";
                        //rfv.ControlToValidate="";
                        //rfv.ErrorMessage="*";
                        //rfv.CssClass="errormesg";
                        //rfv.Display=ValidatorDisplay.Dynamic;

                        //if (rcb_PersonName.SelectedIndex==-1)
                        //{

                        //}
                        //else
                        //{

                        //}

     

                        //RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");

                                                          

                      
                    }
                }
            }

            void rcb_PersonName_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
            {
                //throw new NotImplementedException();
                AdvancedForm ad = new AdvancedForm();
                ad.LoadCountries(e.Text);
            }

            void rcb_PersonName_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
            {
                //throw new NotImplementedException();

                // DropDownList ddl1 = (DropDownList)sender;
                //  Label1.Text += ddl1.SelectedItem.Text + " ";

                // RadComboBox rcbSelectedRunTime = (RadComboBox)sender;

                AdvancedForm ad = new AdvancedForm();
                ad.LoadCountries(e.Text);
            }

            class AppointmentInfo
            {
                private string id;
                private string subject;
                private DateTime start;
                private DateTime end;
                private string recurParentID;
                private string recurData;
                private int contact_id;

                public string ID
                {
                    get { return id; }
                    set { id = value; }
                }
                public string Subject
                {
                    get { return subject; }
                    set { subject = value; }
                }
                public DateTime Start
                {
                    get { return start; }
                    set { start = value; }
                }
                public DateTime End
                {
                    get { return end; }
                    set { end = value; }
                }
                public string RecurrenceRule
                {
                    get { return recurData; }
                    set { recurData = value; }
                }
                public string RecurrenceParentID
                {
                    get { return recurParentID; }
                    set { recurParentID = value; }
                }
                public int Contact_ID
                {
                    get { return contact_id; }
                    set { contact_id = value; }
                }
                private AppointmentInfo()
                {
                    this.id = Guid.NewGuid().ToString();
                }
                public AppointmentInfo(string subject, DateTime start, DateTime end)
                    : this()
                {
                    this.subject = subject;
                    this.start = start;
                    this.end = end;
                }
                public AppointmentInfo(Appointment source)
                    : this()
                {
                    CopyInfo(source);
                }
                public void CopyInfo(Appointment source)
                {
                    subject = source.Subject;
                    start = source.Start;
                    end = source.End;
                    recurData = source.RecurrenceRule;
                    if (source.RecurrenceParentID != null)
                        recurParentID = source.RecurrenceParentID.ToString();
                    Resource r = source.Resources.GetResourceByType("ContactInfoHere");
                    if (r != null)
                        contact_id = (int)r.Key;
                }
            }
            class ContactInfo
            {
                private int id;
                private string name;

                public int Contact_ID
                {
                    get { return id; }
                }
                public string Name
                {
                    get { return name; }
                }
                public ContactInfo(int id, string name)
                {
                    this.id = id;
                    this.name = name;
                }
            }

            private List<AppointmentInfo> Appointments
            {
                get
                {
                    List<AppointmentInfo> sessApts = Session["sdfsdfsdf"] as List<AppointmentInfo>;
                    //          Session[AppointmentsKey] as List<AppointmentInfo>;
                    //if (sessApts == null)
                    //{
                    //    sessApts = new List<AppointmentInfo>();
                    //    Session[AppointmentsKey] = sessApts;
                    //}
                    return sessApts;
                }
            }
            private List<ContactInfo> contact
            {
                get
                {
                    List<ContactInfo> roomList = new List<ContactInfo>();
                    roomList.Add(new ContactInfo(1, "Margaret Morrison Main Room"));
                    roomList.Add(new ContactInfo(2, "Black Auditorium"));
                    roomList.Add(new ContactInfo(3, "Doherty Auditorium"));
                    return roomList;
                }
            }

            protected void RadScheduler1_FormCreating(object sender, SchedulerFormCreatingEventArgs e)
            {
                //while appointment creating check wether its valid to save or not time span matching or now
            }

            protected void RadScheduler1_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
            {
                //Check what to to do on when appoiment ment created ///Like enable disable Subject panel
            }

            protected void RadScheduler1_AppointmentDataBound(object sender, SchedulerEventArgs e)
            {

            }
        }
    }

     

    c) AdvanceForm.ascx
     <%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
    <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Import Namespace="Microsoft.SharePoint" %>
    <%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AdvancedForm.ascx.cs" Inherits="OnCallSolution.ControlTemplates.OnCallSolution.AdvancedForm" %>

    <%@ Register Assembly="Telerik.Web.UI, Version=2013.1.403.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
        Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
    <link rel="Stylesheet" type="text/css" href="/_layouts/OnCallSolution/StyleOnCall.css" />

    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">  
    <script language="javascript" type="text/javascript">
        Sys.Application.add_init(function () {
            (function () {

                var $,
         $T,
         $DateTime,
         timePerMinute = 60000,
         timePerHour = timePerMinute * 60,
         timePerDay = timePerHour * 24,
         maxInt = 2147483647,
         maxDate = new Date("9000/01/01"),
         toolTipZIndex = 10000,
         resourceControlSuffix = "_ResourceValue";

                window.SchedulerAdvancedTemplate = function (schedulerElement, formElement, isModal) {
                    $ = $telerik.$;
                    $T = Telerik.Web.UI;
                    $DateTime = $T.Scheduler.DateTime;

                    this._scheduler = $find(schedulerElement.id);
                    this._schedulerElement = schedulerElement;
                    this._formElement = formElement;
                    this._schedulerElementId = this._schedulerElement.id;
                    this._isModal = isModal;
                    this._eventNamespace = schedulerElement.id;

                    // We need to obtain the ID of the naming container that
                    // contains the advanced template. We can find it from
                    // the ID of a known element hosted in the form,
                    // such as BasicControlsPanel.
                    var basicControlsPanel = $("div.rsAdvBasicControls", formElement);
                    if (basicControlsPanel.length == 0)
                        return;

                    var basicControlsPanelId = basicControlsPanel[0].id;
                    this._templateId = basicControlsPanelId.substring(0, basicControlsPanelId.lastIndexOf("_"));
                };

                window.SchedulerAdvancedTemplate._adjustHeight = function (schedulerElement) {
                    // Stretches the rsAdvOptions div to the available height.
                    var advancedEditDiv = $("div.rsAdvancedEdit:visible", schedulerElement);
                    var contentWrapper = $(".rsAdvContentWrapper", advancedEditDiv);
                    var excludedBorders = advancedEditDiv.outerHeight() - advancedEditDiv.height();
                    excludedBorders += contentWrapper.outerHeight() - contentWrapper.height();

                    var titleHeight = $("div.rsAdvTitle:visible", schedulerElement).outerHeight({ margin: true });

                    var buttonsDiv = $("div.rsAdvancedSubmitArea", advancedEditDiv);
                    var buttonsHeight = buttonsDiv.outerHeight({ margin: true });

                    var targetHeight = $(schedulerElement).height() - titleHeight - buttonsHeight - excludedBorders;
                    $(".rsAdvOptionsScroll", advancedEditDiv).height(targetHeight + "px");

                    // IE fix
                    if (buttonsDiv[0])
                        buttonsDiv[0].style.cssText = buttonsDiv[0].style.cssText;
                };

                window.SchedulerAdvancedTemplate.prototype =
    {
        initialize: function () {
            var scheduler = this._scheduler;
            scheduler.add_disposing(Function.createDelegate(this, this.dispose));

            // Enable the buttons in the advanced form
            $("div.rsAdvancedSubmitArea a", this._formElement).attr("onclick", "");

            if (scheduler.get_overflowBehavior() == 1 && !this._isModal)
                window.SchedulerAdvancedTemplate._adjustHeight(this._schedulerElement);

            this._initializePickers();
            this._initializeAdvancedFormValidators();
            this._initializeAllDayCheckbox();

            var recurrenceSupport = this._getRecurrenceEditor() != null;
            if (recurrenceSupport) {
                this._initializeResetExceptions();
            }

            if ($telerik.isIE) {
                var textarea = this._getSubjectTextBox().get_element();
                textarea.style.cssText = textarea.style.cssText;
            }

            // Exclude the spin button arrows from the tab order
            $('.riUp, .riDown', this._formElement).attr("tabindex", "-1");
        },

        dispose: function () {
            if (!this._formElement)
                return;

            $("*", this._formElement).unbind();
            $(document).unbind("." + this._eventNamespace);

            this._pickers = null;
            this._scheduler = null;
            this._schedulerElement = null;
            this._formElement = null;
        },

        // The populate function is needed only when using Web Service data binding.
        populate: function (apt, isInsert) {
            if (!this._clientMode)
                this._initializeClientMode();

            this._appointment = apt;
            this._isInsert = isInsert;

            var isAllDay =
                $DateTime.getTimeOfDay(apt.get_start()) == 0 &&
                $DateTime.getTimeOfDay(apt.get_end()) == 0;

            var aptEndDate = $DateTime.getDate(apt.get_end());
            if (isAllDay)
                aptEndDate = $DateTime.add(aptEndDate, -timePerDay);

            this._getSubjectTextBox().set_value(apt.get_subject());

            var descrTextBox = this._getDescriptionTextBox();
            if (descrTextBox)
                descrTextBox.set_value(apt.get_description());

            this._pickers.startDate.set_selectedDate($DateTime.getDate(apt.get_start()));
            this._pickers.startTime.set_selectedDate(apt.get_start());
            this._pickers.endDate.set_selectedDate(aptEndDate);
            this._pickers.endTime.set_selectedDate(apt.get_end());

            this._populateResources();
            this._populateAttributes();

            this._initalizeResetExceptionsClientMode();

            var allDayCheckBox = $("#" + this._templateId + "_AllDayEvent");
            if (isAllDay != allDayCheckBox[0].checked) {
                allDayCheckBox[0].checked = isAllDay;
                this._onAllDayCheckBoxClick(isAllDay, false);
            }

            this._populateRecurrence();
            this._populateReminder();
            this._populateTimeZones();
        },

        _initializeClientMode: function () {
            this._clientMode = true;
            var template = this;

            $("a.rsAdvEditSave", this._formElement)
                .click(function (e) {
                    template._saveClicked();
                    $telerik.cancelRawEvent(e);
                })
                .attr("href", "#");

            $("a.rsAdvEditCancel, a.rsAdvEditClose", this._formElement)
                .click(function (e) {
                    template._cancelClicked();
                    $telerik.cancelRawEvent(e);
                })
                .attr("href", "#");
        },

        _initalizeResetExceptionsClientMode: function () {
            var resetExceptions = $("span.rsAdvResetExceptions > a", this._formElement);
            var hasExceptions = this._appointment.get_recurrenceRule().indexOf("EXDATE") != -1;

            resetExceptions.unbind();

            if (hasExceptions) {
                var template = this;
                var localization = this._scheduler.get_localization();
                resetExceptions
                    .attr("href", "#")
                    .text(localization.AdvancedReset)
                    .click(function () {
                        // Display confirmation dialog
                        template._getRemoveExceptionsDialog()
                            .set_onActionConfirm(function () {
                                // The user has confirmed - proceed
                                template._scheduler.removeRecurrenceExceptions(template._appointment);
                                resetExceptions.text(localization.AdvancedDone);
                            })
                            .show();

                        return false;
                    });
            }
            else {
                resetExceptions.text("");
            }
        },

        // Click handler for the "Save" button
        _saveClicked: function () {
            if (typeof (Page_ClientValidate) != "undefined") {
                var validationGroup = this._scheduler.get_validationGroup() + (this._isInsert ? "Insert" : "Edit");
                if (!Page_ClientValidate(validationGroup))
                    return;
            }

            var apt = this._appointment;
            apt.set_subject(this._getSubjectTextBox().get_value());

            var descrTextBox = this._getDescriptionTextBox();
            if (descrTextBox)
                apt.set_description(descrTextBox.get_value());

            var isAllDay = $get(this._templateId + "_AllDayEvent").checked;

            var startDate = this._pickers.startDate.get_selectedDate();
            var startTime = $DateTime.getTimeOfDay(this._pickers.startTime.get_selectedDate());
            apt.set_start($DateTime.add(startDate, isAllDay ? 0 : startTime));

            var endDate = this._pickers.endDate.get_selectedDate();
            var endTime = $DateTime.getTimeOfDay(this._pickers.endTime.get_selectedDate());
            apt.set_end($DateTime.add(endDate, isAllDay ? timePerDay : endTime));

            this._saveResources(apt);
            this._saveAttributes(apt);

            this._saveRecurrenceRule(apt);
            this._saveReminder(apt);
            this._saveTimeZone(apt);

            if (this._isInsert)
                this._scheduler.insertAppointment(apt);
            else
                this._scheduler.updateAppointment(apt);

            this._scheduler.hideAdvancedForm();
        },

        _cancelClicked: function () {
            this._scheduler.hideAdvancedForm();
        },

        _saveResources: function (apt) {
            var template = this;
            var schedulerResources = this._scheduler.get_resources();

            this._scheduler.get_resourceTypes().forEach(function (resourceType) {
                var resourceTypeName = resourceType.get_name();
                var baseName = template._templateId + "_Res" + resourceTypeName + resourceControlSuffix;
                var resourcesOfThisType = schedulerResources.getResourcesByType(resourceTypeName);

                if (resourceType.get_allowMultipleValues()) {
                    var checkBoxes = $(String.format("input[id*='{0}']", baseName), this._formElement);

                    if (checkBoxes.length > 0)
                        apt.get_resources().removeResourcesByType(resourceTypeName);

                    for (var i = 0; i < checkBoxes.length; i++) {
                        if (checkBoxes[i].checked && resourcesOfThisType.get_count() >= i)
                            apt.get_resources().add(resourcesOfThisType.getResource(i));
                    };
                }
                else {
                    var dropDown = $find(baseName);
                    if (!dropDown)
                        return;

                    apt.get_resources().removeResourcesByType(resourceTypeName);

                    if (dropDown.get_selectedIndex() == 0)
                        return;

                    var selectedValue = dropDown.get_selectedItem().get_value();
                    var newResource = schedulerResources.findAll(function (res) {
                        return res.get_type() == resourceTypeName &&
                               res._getInternalKey() == selectedValue;
                    }).getResource(0) || null;

                    if (newResource)
                        apt.get_resources().add(newResource);
                }
            });
        },

        _saveAttributes: function (apt) {
            var template = this;
            var aptAttributes = apt.get_attributes();
            $.each(this._scheduler.get_customAttributeNames(), function () {
                var attrName = this.toString();
                var textBox = $find(template._templateId + "_Attr" + attrName);
                if (!textBox)
                    return;

                aptAttributes.removeAttribute(attrName);
                aptAttributes.setAttribute(attrName, textBox.get_value());
            });
        },

        _getResourceIndex: function (res) {
            var resources = this._scheduler.get_resources().getResourcesByType(res.get_type());
            var index, length;

            for (index = 0, length = resources.get_count(); index < length; index++) {
                var filteredRes = resources.getResource(index);
                if (filteredRes.get_type() == res.get_type() && filteredRes.get_key() == res.get_key())
                    return index;
            };

            return -1;
        },

        _populateResources: function () {
            var template = this;
            var resourceTypes = this._scheduler.get_resourceTypes();

            resourceTypes.forEach(function (resType) {
                var baseName = template._templateId + "_Res" + resType.get_name() + resourceControlSuffix;

                if (resType.get_allowMultipleValues()) {
                    // Clear the resource checkboxes
                    $(String.format("input[id*='{0}']", baseName), this._formElement)
                        .each(function () {
                            this.checked = false;
                        });
                }
                else {
                    var dropDown = $find(baseName);
                    if (dropDown)
                        dropDown.get_items().getItem(0).select();
                }
            });

            this._appointment.get_resources().forEach(function (res) {
                var baseName = template._templateId + "_Res" + res.get_type() + resourceControlSuffix;
                var resType = resourceTypes.getResourceTypeByName(res.get_type());
                if (resType && resType.get_allowMultipleValues()) {
                    var resIndex = template._getResourceIndex(res);
                    var checkBox = $get(baseName + "_" + resIndex);

                    if (checkBox)
                        checkBox.checked = true;
                }
                else {
                    var dropDown = $get(baseName);
                    if (dropDown)
                        template._selectDropDownValue(dropDown, res._getInternalKey());
                }
            });
        },

        _populateAttributes: function () {
            var template = this;
            this._appointment.get_attributes().forEach(function (attr, attrValue) {
                var textBox = $find(template._templateId + "_Attr" + attr);
                if (!textBox)
                    return;

                textBox.set_value(attrValue);
            });
        },

        _saveRecurrenceRule: function (apt) {
            var editor = this._getRecurrenceEditor();
            if (!editor) return;

            editor.set_startDate(this._scheduler.displayToUtc(apt.get_start()));
            editor.set_endDate(this._scheduler.displayToUtc(apt.get_end()));
            editor.set_firstDayOfWeek(this._scheduler.get_firstDayOfWeek());

            var rrule = editor.get_recurrenceRule();
            if (!rrule) {
                apt.set_recurrenceRule("");
                return;
            }

            // Restore the original recurrence exceptions if the
            // appointment was already recurring.
            var originalRRule = $T.RecurrenceRule.parse(apt.get_recurrenceRule());
            if (originalRRule)
                Array.addRange(rrule.get_exceptions(), originalRRule.get_exceptions());

            var range = rrule.get_range();
            if (range.get_recursUntil().getTime() != maxDate.getTime()) {
                var recursUntil = this._scheduler.displayToUtc(range.get_recursUntil());

                if (!this._getElement("AllDayEvent").checked)
                    recursUntil = $DateTime.add(recursUntil, timePerDay);

                range.set_recursUntil(recursUntil);
            }

            apt.set_recurrenceRule(rrule.toString());
        },

        _saveTimeZone: function (apt) {
            var timeZonesDropDown = this._getTimeZonesDropDown();
            if (!timeZonesDropDown) return;

            var selectedValue = timeZonesDropDown.get_value();
            if (selectedValue != this._scheduler._timeZoneID)
                apt.set_timeZoneID(selectedValue);

        },

        _saveReminder: function (apt) {
            var reminderDropDown = this._getReminderDropDown();
            if (!reminderDropDown) return;

            var selectedValue = reminderDropDown.get_value();
            var aptReminders = apt.get_reminders();
            if (selectedValue) {
                var reminderMinutes = parseInt(selectedValue, 10);
                if (aptReminders.get_count() > 0) {
                    aptReminders.getReminder(0).set_trigger(reminderMinutes);
                }
                else {
                    var reminder = new $T.Reminder();
                    reminder.set_trigger(reminderMinutes);
                    aptReminders.add(reminder);
                }
            }
            else {
                if (aptReminders.get_count() > 0)
                    aptReminders.removeAt(0);
            }
        },

        _populateRecurrence: function () {
            var editor = this._getRecurrenceEditor();
            if (!editor) return;

            var rrule = $T.RecurrenceRule.parse(this._appointment.get_recurrenceRule());
            if (rrule) {
                var range = rrule.get_range();
                var recursUntil = range.get_recursUntil().getTime();
                if (recursUntil != maxDate.getTime()) {
                    recursUntil = this._scheduler.utcToDisplay(range.get_recursUntil());

                    if (!this._getElement("AllDayEvent").checked)
                        recursUntil = $DateTime.add(recursUntil, -timePerDay);

                    range.set_recursUntil(recursUntil);
                }
            }
            else {
                editor.set_startDate(this._appointment.get_start());
                editor.set_endDate(this._appointment.get_end());
            }

            editor.set_recurrenceRule(rrule);
        },

        _populateTimeZones: function () {
            var timeZonesDropDown = this._getTimeZonesDropDown();
            if (!timeZonesDropDown) return;

            var timeZone = this._appointment.get_timeZoneID();
            if (!timeZone)
                this._selectDropDownValue(timeZonesDropDown.get_element(), this._scheduler._timeZoneId);
            else
                this._selectDropDownValue(timeZonesDropDown.get_element(), timeZone);
        },

        _populateReminder: function () {
            var reminderDropDown = this._getReminderDropDown();
            if (!reminderDropDown) return;

            var reminder = this._appointment.get_reminders().getReminder(0);
            if (!reminder)
                this._selectDropDownValue(reminderDropDown.get_element(), "");
            else
                this._selectDropDownValue(reminderDropDown.get_element(), reminder.get_trigger());
        },

        _selectDropDownValue: function (dropDown, value) {
            var comboBox = $find(dropDown.id);
            if (comboBox && $T.RadComboBox.isInstanceOfType(comboBox)) {
                comboBox.get_items().forEach(function (item) {
                    if (item.get_value() == value)
                        item.select();
                });
            }
            else {
                $.each(dropDown.options, function () {
                    if (this.value == value) {
                        this.selected = true;
                        return false;
                    }
                });
            }
        },

        _getSubjectTextBox: function () {
            return $find(this._templateId + "_SubjectText");
        },

        _getDescriptionTextBox: function () {
            return $find(this._templateId + "_DescriptionText");
        },

        _getRecurrenceEditor: function () {
            return $find(this._templateId + "_AppointmentRecurrenceEditor");
        },

        _getReminderDropDown: function () {
            return this._getControl("ReminderDropDown")
        },

        _getTimeZonesDropDown: function () {
            return this._getControl("TimeZonesDropDown")
        },

        _getElement: function (id) {
            return $get(this._templateId + "_" + id);
        },

        _getControl: function (id) {
            return $find(this._templateId + "_" + id);
        },

        _initializePickers: function () {
            // Show picker pop-ups when the inputs are focused

            var showPopupDelegate = Function.createDelegate(this, this._showPopup);

            var templateId = this._templateId;
            this._pickers =
              {
                  "startDate": $find(templateId + "_StartDate"),
                  "endDate": $find(templateId + "_EndDate"),
                  "startTime": $find(templateId + "_StartTime"),
                  "endTime": $find(templateId + "_EndTime")
              };

            $.each(
                   this._pickers,
                   function () {
                       if (this && this.get_dateInput)
                           this.get_dateInput().add_focus(showPopupDelegate);
                   });

            var pickerControls = [
                             $get(this._pickers.startDate.get_element().id + "_wrapper"),
                             $get(this._pickers.startTime.get_element().id + "_wrapper"),
                             $get(this._pickers.startTime.get_element().id + "_timeView_wrapper"),
                             $get(this._pickers.endDate.get_element().id + "_wrapper"),
                             $get(this._pickers.endTime.get_element().id + "_wrapper"),
                             $get(this._pickers.endTime.get_element().id + "_timeView_wrapper"),
                             $get(this._templateId + "_SharedCalendar")
                        ];

            // Hide the pickers when the focus moves to another element in the template
            var advancedTemplate = this;
            var eventName = "focusin";

            $(this._formElement).bind(eventName,
                   function (e) {
                       var inPickerControls = false;
                       for (var i = 0, len = pickerControls.length; i < len; i++) {
                           var control = pickerControls[i];
                           if ($telerik.isDescendantOrSelf(control, e.target)) {
                               inPickerControls = true;
                               break;
                           }
                       }

                       if (!inPickerControls)
                           advancedTemplate._hidePickerPopups();
                   });

            // Custom jQuery event fired when the pop-up advanced
            // form has been moved.
            $(this._formElement).bind("formMoving", function () {
                advancedTemplate._hidePickerPopups();
            });

            if (this._isModal)
                $(document).bind("scroll." + this._eventNamespace, function () {
                    advancedTemplate._hidePickerPopups();
                });
        },

        _initializeAdvancedFormValidators: function () {
            var toolTip = this._createValidatorToolTip();

            if (typeof (Page_Validators) == "undefined")
                return;

            for (var validatorIndex in Page_Validators) {
                var validator = Page_Validators[validatorIndex];
                if (this._validatorIsInTemplate(validator)) {
                    var control = $("#" + validator.controltovalidate);
                    if (control.length == 0)
                        break;

                    if (control.parent().is(".rsAdvDatePicker") ||
                             control.parent().is(".rsAdvTimePicker")) {
                        $("#" + validator.controltovalidate + "_dateInput")
                                  .bind("focus", { "toolTip": toolTip }, this._showToolTip)
                                  .bind("blur", { "toolTip": toolTip }, this._hideToolTip)
                                  [0].errorMessage = validator.errormessage;
                    }
                    else {
                        control.addClass("rsValidatedInput");
                    }

                    control[0].errorMessage = validator.errormessage;
                    this._updateValidator(validator, control);
                }
            }

            var advancedTemplate = this;
            var originalValidatorUpdateDisplay = ValidatorUpdateDisplay;

            ValidatorUpdateDisplay = function (validator) {
                if (advancedTemplate._validatorIsInTemplate(validator) && validator.controltovalidate) {
                    advancedTemplate._updateValidator(validator);
                }
                else {
                    originalValidatorUpdateDisplay(validator);
                }
            };

            $(".rsValidatedInput", this._formElement)
                   .bind("focus", { "toolTip": toolTip }, this._showToolTip)
                   .bind("blur", { "toolTip": toolTip }, this._hideToolTip);
        },

        _initializeAllDayCheckbox: function () {
            var allDayCheckbox = $("#" + this._templateId + "_AllDayEvent");
            var controlList = $(allDayCheckbox[0].parentNode.parentNode.parentNode);
            var timePickers = controlList.find('.rsAdvTimePicker');

            // RadDateTimePicker-display-hackedy-hack
            if ($telerik.isIE6 || $telerik.isIE7) {
                $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
                   {
                       display: "inline",
                       zoom: 1,
                       width: ""
                   });
            }
            else {
                $('.rsAdvTimePicker, .rsAdvDatePicker', this._formElement).css(
                   {
                       display: "inline-block",
                       width: ""
                   });
            }

            var timePickersWidth = $("#" + this._templateId + "_StartTime_dateInput").outerWidth();

            timePickers.width(timePickersWidth);

            var initialPickersWidth = $(".rsTimePick", this._formElement).eq(0).outerWidth();
            var allDayPickersWidth = initialPickersWidth - timePickersWidth;

            var startTimeValidator = $get(this._templateId + "_StartTimeValidator");
            var endTimeValidator = $get(this._templateId + "_StartTimeValidator");

            var advancedTemplate = this;

            // IE fix - the hidden input pushes down the other TimePicker elements during animation
            controlList.find('.rsAdvTimePicker > input').css("display", "none");

            var clickHandler = function (allDay, animate) {
                var showTimePickers = function () {
                    if ($telerik.isSafari || $telerik.isOpera)
                        timePickers.css("display", "inline-block");
                    else
                        timePickers.show();
                };

                if (!allDay)
                    showTimePickers();

                controlList.find('.rsTimePick').each(function () {
                    if (animate) {
                        $(this).stop();

                        if (allDay)
                            $(this).animate({ width: allDayPickersWidth }, "fast",
                                       "linear", function () { timePickers.hide(); });
                        else
                            $(this).animate({ width: initialPickersWidth }, "fast");
                    }
                    else {
                        if (allDay) {
                            timePickers.hide();
                            $(this).width(allDayPickersWidth);
                        }
                        else {
                            $(this).width(initialPickersWidth);
                        }
                    }
                });

                if (typeof (ValidatorEnable) != "undefined") {
                    ValidatorEnable(startTimeValidator, !allDay);
                    ValidatorEnable(endTimeValidator, !allDay);
                }

                var startTimePicker = advancedTemplate._pickers.startTime;
                startTimePicker.set_enabled(!allDay);

                var endTimePicker = advancedTemplate._pickers.endTime;
                endTimePicker.set_enabled(!allDay);
            };

            this._onAllDayCheckBoxClick = clickHandler;

            clickHandler(allDayCheckbox[0].checked, false);
            allDayCheckbox.click(function () { clickHandler(this.checked, true); });
        },

        _initializeResetExceptions: function () {
            var resetExceptions = $("#" + this._templateId + "_ResetExceptions");
            if (resetExceptions.length == 0)
                return;

            var scheduler = this._scheduler;
            var template = this;
            var localization = scheduler.get_localization();
            var doneMessage = localization.AdvancedDone;
            if (resetExceptions[0].innerHTML.indexOf(doneMessage) > -1) {
                // Hide "Done" after 2 seconds
                resetExceptions.click(function () { return false; });
                window.setTimeout(function () { resetExceptions.fadeOut("slow"); }, 2000);
            }
            else {
                resetExceptions.click(
                    function () {
                        // Display confirmation dialog
                        var dialog = template._getRemoveExceptionsDialog();
                        dialog.set_onActionConfirm(function () {
                            // The user has confirmed - proceed with postback
                            resetExceptions[0].innerHTML = localization.AdvancedWorking;
                            window.location.href = resetExceptions[0].href;

                            dialog.dispose();
                        })
                            .show();

                        return false;
                    });
            }
        },

        _getRemoveExceptionsDialog: function () {
            var localization = this._scheduler.get_localization();
            return $telerik.$.modal(this._formElement)
                .initialize()
                .set_content({
                    title: localization.ConfirmResetExceptionsTitle,
                    content: localization.ConfirmResetExceptionsText,
                    ok: localization.ConfirmOK,
                    cancel: localization.ConfirmCancel
                });
        },

        _updateValidator: function (validator) {
            var control = $("#" + validator.controltovalidate);

            if (control.is(".rsValidatedInput"))
                control = control.parent();

            if (!validator.isvalid)
                control.addClass("rsInvalid");
            else
                control.removeClass("rsInvalid");
        },

        _validatorIsInTemplate: function (validator) {
            return $(validator).parents().is("#" + this._schedulerElementId);
        },

        _createValidatorToolTip: function () {
            return $('<div></div>').hide().appendTo($('.rsAdvancedEdit:visible', $get(this._schedulerElementId)));
        },

        _showToolTip: function (e) {
            var toolTip = e.data.toolTip;
            var _control = $(this);
            var isTextArea = false;
            var controlParent = _control.parent();

            if (_control.is("textarea")) {
                isTextArea = true;
                _control = controlParent;
            }

            var isInvalid = _control.is(".rsInvalid");
            // Date and time pickers are validated against a hidden input located one level up in the DOM
            isInvalid = isInvalid || controlParent.parent().children().is(".rsInvalid");

            if (isInvalid) {
                toolTip
                        .css("visibility", "hidden")
                        .text(this.errorMessage)
                        .addClass("rsValidatorTooltip");

                var positionOrigin = _control;
                if (controlParent.is(".riCell"))
                    positionOrigin = controlParent;

                var pos = positionOrigin.position();
                var toolTipLeft = pos.left + "px";

                if (isTextArea) {
                    toolTipLeft = (pos.left + positionOrigin.outerWidth() - toolTip.outerWidth()) + "px";
                }

                var toolTipTop = (pos.top - toolTip.outerHeight()) + "px";
                toolTip
                        .css({
                            top: toolTipTop,
                            left: toolTipLeft,
                            zIndex: toolTipZIndex,
                            visibility: "visible"
                        })
                        .fadeIn("fast");
            }
        },

        _hideToolTip: function (e) {
            var toolTip = e.data.toolTip;
            toolTip.hide();
        },

        _hidePickerPopups: function () {
            if (!this._pickers)
                return;

            for (var pickerId in this._pickers) {
                var picker = this._pickers[pickerId];

                if (!picker)
                    continue;

                if (picker.hideTimePopup)
                    picker.hideTimePopup();
                else
                    picker.hidePopup();
            }
        },

        _showPopup: function (sender) {
            this._hidePickerPopups();

            if (sender.Owner.showTimePopup)
                sender.Owner.showTimePopup();
            else
                sender.Owner.showPopup();
        }
    };
            })();
        });

     
     
    </script> 
    </telerik:RadCodeBlock>

     

    <div class="rsAdvancedEdit rsAdvancedModal" style="position: relative">
        <div class="rsModalBgTopLeft">
        </div>
        <div class="rsModalBgTopRight">
        </div>
        <div class="rsModalBgBottomLeft">
        </div>
        <div class="rsModalBgBottomRight">
        </div>
        <%-- Title bar. --%>
        <div class="rsAdvTitle">
            <%-- The rsAdvInnerTitle element is used as a drag handle when the form is modal. --%>
            <h1 class="rsAdvInnerTitle">
                <%= (this.Mode.ToString() == "Edit") ? Owner.Localization.AdvancedEditAppointment : Owner.Localization.AdvancedNewAppointment %></h1>
            <asp:linkbutton runat="server" id="AdvancedEditCloseButton" cssclass="rsAdvEditClose"
                commandname="Cancel" causesvalidation="false" tooltip='<%# Owner.Localization.AdvancedClose %>'>
                <%= Owner.Localization.AdvancedClose %>
            </asp:linkbutton>
        </div>
        <div class="rsAdvContentWrapper">
            <%-- Scroll container - when the form height exceeds MaximumHeight scrollbars will appear on this element--%>
            <div class="rsAdvOptionsScroll">
                <asp:panel runat="server" id="AdvancedEditOptionsPanel" cssclass="rsAdvOptions">
                    <asp:panel runat="server" id="BasicControlsPanel" cssclass="rsAdvBasicControls" ondatabinding="BasicControlsPanel_DataBinding">
                        <telerik:RadTextBox runat="server" ID="SubjectText" Width="586px" Label='<%# Owner.Localization.AdvancedSubject + ":" %>'
                            EnableSingleInputRendering="false" Height="50px" />
                            <telerik:RadTextBox runat="server" ID="RadTextHiddenAppID"  Visible="false" />
                        <asp:requiredfieldvalidator runat="server" id="SubjectValidator" controltovalidate="SubjectText"
                            enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                        <ul class="rsTimePickers">
                            <li class="rsTimePick" style="width: 244px;">
                                <label for='<%= StartDate.ClientID %>_dateInput_text'>
                                    <%= Owner.Localization.AdvancedFrom %></label><%--
               Leaving a newline here will affect the layout, so we use a comment instead.
                                    --%><telerik:RadDatePicker runat="server" ID="StartDate" CssClass="rsAdvDatePicker"
                                        Width="85px" SharedCalendarID="SharedCalendar"
                                    Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'
                                        MinDate="1900-01-01">
                                        <DatePopupButton Visible="false" />
                                        <DateInput ID="DateInput2" runat="server" DateFormat='<%# Owner.AdvancedForm.DateFormat %>'
                                            EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false" />
                                    </telerik:RadDatePicker>
                                <%--
           
                                --%>
                                <telerik:RadTimePicker runat="server" ID="StartTime" CssClass="rsAdvTimePicker"
                                    Width="65px" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'>
                                    <DateInput ID="DateInput3" runat="server" EmptyMessageStyle-CssClass="riError" EmptyMessage=" "
                                        EnableSingleInputRendering="false" />
                                    <TimePopupButton Visible="false" />
                                    <TimeView ID="TimeView1" runat="server" Columns="2" ShowHeader="false" StartTime="08:00"
                                        EndTime="18:00" Interval="00:30" />
                                </telerik:RadTimePicker>
                            </li>
                            <li class="rsTimeZonesWrapper">
                                <telerik:RadComboBox runat="server" Visible="true" ID="TimeZonesDropDown" Width="230"
                                    Label="<%# Owner.Localization.AdvancedTimeZone %>" Skin='<%# Owner.Skin %>'>
                                </telerik:RadComboBox>
                            </li>
                            <li class="rsAllDayWrapper">
                                <asp:checkbox runat="server" id="AllDayEvent" cssclass="rsAdvChkWrap" checked="false" />
                            </li>
                            <li class="rsTimePick rsEndTimePick" style="width: 244px;">
                                <label for='<%= EndDate.ClientID %>_dateInput_text'>
                                    <%= Owner.Localization.AdvancedTo%></label><%--
           
                                    --%><telerik:RadDatePicker runat="server" ID="EndDate" CssClass="rsAdvDatePicker"
                                        Width="85px" SharedCalendarID="SharedCalendar"
                                    Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'
                                        MinDate="1900-01-01">
                                        <DatePopupButton Visible="false" />
                                        <DateInput ID="DateInput4" runat="server" DateFormat='<%# Owner.AdvancedForm.DateFormat %>'
                                            EmptyMessageStyle-CssClass="riError" EmptyMessage=" " EnableSingleInputRendering="false" />
                                    </telerik:RadDatePicker>
                                <%--
           
                                --%>
                                <telerik:RadTimePicker runat="server" ID="EndTime" CssClass="rsAdvTimePicker"
                                    Width="65px" Skin='<%# Owner.Skin %>' Culture='<%# Owner.Culture %>'>
                                    <DateInput ID="DateInput5" runat="server" EmptyMessageStyle-CssClass="riError" EmptyMessage=" "
                                        EnableSingleInputRendering="false" />
                                    <TimePopupButton Visible="false" />
                                    <TimeView ID="TimeView2" runat="server" Columns="2" ShowHeader="false" StartTime="08:00"
                                        EndTime="18:00" Interval="00:30" />
                                </telerik:RadTimePicker>
                            </li>
                        </ul>
                        <div class="rsReminderWrapper" style="display:none;">
                            <telerik:RadComboBox runat="server" ID="ReminderDropDown" Width="120px" Skin='<%# Owner.Skin %>'
                                Label="<%# Owner.Localization.Reminder %>">
                                <Items>
                                    <telerik:RadComboBoxItem Text='<%# Owner.Localization.ReminderNone %>' Value="" />
                                    <telerik:RadComboBoxItem Text='<%# "0 " + Owner.Localization.ReminderMinutes %>'
                                        Value="0" />
                                    <telerik:RadComboBoxItem Text='<%# "5 " + Owner.Localization.ReminderMinutes %>'
                                        Value="5" />
                                    <telerik:RadComboBoxItem Text='<%# "10 " + Owner.Localization.ReminderMinutes %>'
                                        Value="10" />
                                    <telerik:RadComboBoxItem Text='<%# "15 " + Owner.Localization.ReminderMinutes %>'
                                        Value="15" />
                                    <telerik:RadComboBoxItem Text='<%# "30 " + Owner.Localization.ReminderMinutes %>'
                                        Value="30" />
                                    <telerik:RadComboBoxItem Text='<%# "1 " + Owner.Localization.ReminderHour %>' Value="60" />
                                    <telerik:RadComboBoxItem Text='<%# "2 " + Owner.Localization.ReminderHours %>' Value="120" />
                                    <telerik:RadComboBoxItem Text='<%# "3 " + Owner.Localization.ReminderHours %>' Value="180" />
                                    <telerik:RadComboBoxItem Text='<%# "4 " + Owner.Localization.ReminderHours %>' Value="240" />
                                    <telerik:RadComboBoxItem Text='<%# "5 " + Owner.Localization.ReminderHours %>' Value="300" />
                                    <telerik:RadComboBoxItem Text='<%# "6 " + Owner.Localization.ReminderHours %>' Value="360" />
                                    <telerik:RadComboBoxItem Text='<%# "7 " + Owner.Localization.ReminderHours %>' Value="420" />
                                    <telerik:RadComboBoxItem Text='<%# "8 " + Owner.Localization.ReminderHours %>' Value="480" />
                                    <telerik:RadComboBoxItem Text='<%# "9 " + Owner.Localization.ReminderHours %>' Value="540" />
                                    <telerik:RadComboBoxItem Text='<%# "10 " + Owner.Localization.ReminderHours %>' Value="600" />
                                    <telerik:RadComboBoxItem Text='<%# "11 " + Owner.Localization.ReminderHours %>' Value="660" />
                                    <telerik:RadComboBoxItem Text='<%# "12 " + Owner.Localization.ReminderHours %>' Value="720" />
                                    <telerik:RadComboBoxItem Text='<%# "18 " + Owner.Localization.ReminderHours %>' Value="1080" />
                                    <telerik:RadComboBoxItem Text='<%# "1 " + Owner.Localization.ReminderDays %>' Value="1440" />
                                    <telerik:RadComboBoxItem Text='<%# "2 " + Owner.Localization.ReminderDays %>' Value="2880" />
                                    <telerik:RadComboBoxItem Text='<%# "3 " + Owner.Localization.ReminderDays %>' Value="4320" />
                                    <telerik:RadComboBoxItem Text='<%# "4 " + Owner.Localization.ReminderDays %>' Value="5760" />
                                    <telerik:RadComboBoxItem Text='<%# "1 " + Owner.Localization.ReminderWeek %>' Value="10080" />
                                    <telerik:RadComboBoxItem Text='<%# "2 " + Owner.Localization.ReminderWeeks %>' Value="20160" />
                                </Items>
                            </telerik:RadComboBox>
                        </div>
                        <asp:requiredfieldvalidator runat="server" id="StartDateValidator" controltovalidate="StartDate"
                            enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                        <asp:requiredfieldvalidator runat="server" id="StartTimeValidator" controltovalidate="StartTime"
                            enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                        <asp:requiredfieldvalidator runat="server" id="EndDateValidator" controltovalidate="EndDate"
                            enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                        <asp:requiredfieldvalidator runat="server" id="EndTimeValidator" controltovalidate="EndTime"
                            enableclientscript="true" display="None" cssclass="rsValidatorMsg" />
                        <asp:customvalidator runat="server" id="DurationValidator" controltovalidate="StartDate"
                            enableclientscript="false" display="Dynamic" cssclass="rsValidatorMsg rsInvalid"
                            onservervalidate="DurationValidator_OnServerValidate" />
                    </asp:panel>
                    <asp:panel runat="server" id="AdvancedControlsPanel" cssclass="rsAdvMoreControls">
                        <telerik:RadComboBox ID="ContinentsRadComboBox" runat="server" Width="186px" Label="Select Person:"
                            OnClientSelectedIndexChanged="LoadCountries" />
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"  ControlToValidate="ContinentsRadComboBox" enableclientscript="true" display="None" cssclass="rsValidatorMsg" >
                            </asp:RequiredFieldValidator>
                        <telerik:RadComboBox ID="CountriesRadComboBox" runat="server" Label="Select Tag:" Width="186px"
                            OnItemsRequested="CountriesRadComboBox_ItemsRequested" OnClientItemsRequested="CountriesLoaded"
                            OnClientLoad="CountriesComboClientLoad" EnableViewState="false" />
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"  ControlToValidate="CountriesRadComboBox" enableclientscript="true" display="None" cssclass="rsValidatorMsg" >
                            </asp:RequiredFieldValidator>
                    </asp:panel>
                   
                    <telerik:RadTextBox runat="server" ID="DescriptionText" TextMode="SingleLine" Columns="1"
                        Rows="5" Width="586px" Label='<%# Owner.Localization.AdvancedDescription + ":" %>'
                        Text='<%# Eval("Description") %>' EnableSingleInputRendering="false" Visible="false" />
                    <span class="rsAdvResetExceptions">
                        <asp:linkbutton runat="server" id="ResetExceptions" onclick="ResetExceptions_OnClick" />
                    </span>
                    <telerik:RadSchedulerRecurrenceEditor runat="server" ID="AppointmentRecurrenceEditor" />
                    <asp:hiddenfield runat="server" id="OriginalRecurrenceRule" />
                    <telerik:RadCalendar runat="server" ID="SharedCalendar" Skin='<%# Owner.Skin %>'
                        CultureInfo='<%# Owner.Culture %>' ShowRowHeaders="false" RangeMinDate="1900-01-01" />
                </asp:panel>
            </div>
            <asp:panel runat="server" id="ButtonsPanel" cssclass="rsAdvancedSubmitArea">
                <div class="rsAdvButtonWrapper">
                    <asp:linkbutton runat="server" id="UpdateButton" cssclass="rsAdvEditSave" >
                        <span>
                            <%= Owner.Localization.Save %></span>
                    </asp:linkbutton>
                    <asp:linkbutton runat="server" id="CancelButton" cssclass="rsAdvEditCancel" commandname="Cancel"
                        causesvalidation="false">
                        <span>
                            <%= Owner.Localization.Cancel %></span>
                    </asp:linkbutton>
                </div>
            </asp:panel>
        </div>
    </div>

     

    d) AdvanceForm.ascx.cs
    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.ComponentModel;

    using System.Drawing;
    using Telerik.Web.UI;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Data;
    using OnCallSolution.WPScedulerSharepointWebpart;

     

    /// <summary>
    /// Specifies the advanced form mode.
    /// </summary>
    public enum AdvancedFormMode
    {
        Insert,
        Edit
    }

    namespace OnCallSolution.ControlTemplates.OnCallSolution
    {
        public partial class AdvancedForm : UserControl
        {
            #region Private members

            private string _selectedCountry;

            public int _ContactID;
            public string _TagName;
            public string _PersonName;
            public string _Tag;

            public int _ContactIDofPerson;
            public int _Asset_Contact_Tag_ID;

          

            private bool FormInitialized
            {
                get
                {
                    return (bool)(ViewState["FormInitialized"] ?? false);
                }

                set
                {
                    ViewState["FormInitialized"] = value;
                }
            }

            private AdvancedFormMode mode = AdvancedFormMode.Insert;

            #endregion

            #region Protected properties

            protected RadScheduler Owner
            {
                get
                {
                    return Appointment.Owner;
                }
            }

            protected Appointment Appointment
            {
                get
                {
                    SchedulerFormContainer container = (SchedulerFormContainer)BindingContainer;
                    return container.Appointment;
                }
            }

            #endregion

            #region Attributes and resources

            //Continent, Coutry  
            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string Continent
            {
                get
                {
                    return ContinentsRadComboBox.SelectedValue;
                    //insert the first item
                }

                set
                {
                    ContinentsRadComboBox.SelectedValue = value;
                  
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string Country
            {
                get
                {
                    return CountriesRadComboBox.SelectedValue;
                }

                set
                {
                    // Store the selected country ID until we obtain the continent ID  
                    _selectedCountry = value;
                }
            }

            ////values set for custom things for person and Tag combobox
            //[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            //public string ContinentPersonName
            //{
            //    get
            //    {
            //        return ContinentsRadComboBox.SelectedItem.Text.ToString();
            //        //insert the first item
            //    }

            //    set
            //    {
            //        _PersonName = value;
            //    }
            //}

            //[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            //public string CountryTagName
            //{
            //    get
            //    {
            //        return CountriesRadComboBox.SelectedItem.Text.ToString();
            //    }

            //    set
            //    {
            //        // Store the selected country ID until we obtain the continent ID  
            //        _Tag = value;
            //    }
            //}

          

            protected void LoadContinents()
            {
                SqlConnection connection = new SqlConnection(
                ConfigurationManager.ConnectionStrings["OnCallConnectionString"].ConnectionString);

                string query = @"select  distinct AC.Contact_ID, C.Name from  OC_Asset_Contact_Tag AC join
                                OC_Asset_Tag_Master T on AC.Asset_Tags_Master_ID=T.Asset_Tags_Master_ID
                                join dbo.OC_Contact C on C.Contact_ID=AC.Contact_ID
                                where AC.Status=1
                                and C.Status=1
                                order by c.Name";

                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                DataTable dt = new DataTable();
                adapter.Fill(dt);
                ContinentsRadComboBox.Items.Clear();
                ContinentsRadComboBox.Items.Insert(0, new RadComboBoxItem("- Select a Contact -"));
                ContinentsRadComboBox.AppendDataBoundItems = true;
                ContinentsRadComboBox.DataTextField = "Name";
                ContinentsRadComboBox.DataValueField = "Contact_ID";
                ContinentsRadComboBox.DataSource = dt;
                ContinentsRadComboBox.DataBind();
                ContinentsRadComboBox.DataSource = null;
              

            }

            public void LoadCountries(string ContactID)//previous working method was private  public void LoadCountries(string ContactID)
            {
                SqlConnection connection = new SqlConnection(
                ConfigurationManager.ConnectionStrings["OnCallConnectionString"].ConnectionString);

                //select a country based on the continentID
                string query = @" Select distinct T.Asset_Tags_Master_ID,t.Tag_Name  from OC_Asset_Contact_Tag CT
                                inner join  OC_Asset_Tag_Master T 
                                on t.Asset_Tags_Master_ID=ct.Asset_Tags_Master_ID
                                inner join OC_Contact C on c.Contact_ID=  ct.Contact_ID
                                where C.Contact_ID=@Contact_ID
                                and ct.Status=1";
                SqlDataAdapter adapter = new SqlDataAdapter(query, connection);
                adapter.SelectCommand.Parameters.AddWithValue("@Contact_ID", ContactID);

                DataTable dt = new DataTable();
                adapter.Fill(dt);

                CountriesRadComboBox.DataTextField = "Tag_Name";
                CountriesRadComboBox.DataValueField = "Asset_Tags_Master_ID";
                CountriesRadComboBox.DataSource = dt;
                CountriesRadComboBox.DataBind();
            }

            protected void CountriesRadComboBox_ItemsRequested(object o, RadComboBoxItemsRequestedEventArgs e)
            {
                // e.Text is the first parameter of the requestItems method   
                // invoked in LoadCountries method   
                LoadCountries(e.Text);

                //RadComboBox rcb_PersonName = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("ContinentsRadComboBox");

                //RadComboBox rcb_Tag = (RadComboBox)e.Container.Controls[1].Controls[1].FindControl("CountriesRadComboBox");
               

            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string Description
            {
                get
                {
                    return DescriptionText.Text;
                }

                set
                {
                    DescriptionText.Text = value;
                }
            }

     

            #endregion

            #region Public properties

            public AdvancedFormMode Mode
            {
                get
                {
                    return mode;
                }
                set
                {
                    mode = value;
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string Subject
            {
                get
                {
                    return SubjectText.Text;
                }

                set
                {
                    SubjectText.Text = value;
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public DateTime Start
            {
                get
                {
                    DateTime result = StartDate.SelectedDate.Value.Date;

                    if (AllDayEvent.Checked)
                    {
                        result = result.Date;
                    }
                    else
                    {
                        TimeSpan time = StartTime.SelectedDate.Value.TimeOfDay;
                        result = result.Add(time);
                    }

                    return Owner.DisplayToUtc(result);
                }

                set
                {
                    StartDate.SelectedDate = Owner.UtcToDisplay(value);
                    StartTime.SelectedDate = Owner.UtcToDisplay(value);
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public DateTime End
            {
                get
                {
                    DateTime result = EndDate.SelectedDate.Value.Date;

                    if (AllDayEvent.Checked)
                    {
                        result = result.Date.AddDays(1);
                    }
                    else
                    {
                        TimeSpan time = EndTime.SelectedDate.Value.TimeOfDay;
                        result = result.Add(time);
                    }

                    return Owner.DisplayToUtc(result);
                }

                set
                {
                    EndDate.SelectedDate = Owner.UtcToDisplay(value);
                    EndTime.SelectedDate = Owner.UtcToDisplay(value);
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string RecurrenceRuleText
            {
                get
                {
                    if (Owner.RecurrenceSupport)
                    {
                        bool dateSpecified = StartDate.SelectedDate.HasValue && EndDate.SelectedDate.HasValue;
                        bool timeSpecified = StartTime.SelectedDate.HasValue && EndTime.SelectedDate.HasValue;

                        if ((AllDayEvent.Checked && !dateSpecified) ||
                            (!AllDayEvent.Checked && !(dateSpecified && timeSpecified)))
                        {
                            return string.Empty;
                        }

                        AppointmentRecurrenceEditor.StartDate = Start;
                        AppointmentRecurrenceEditor.EndDate = End;

                        RecurrenceRule rrule = AppointmentRecurrenceEditor.RecurrenceRule;

                        if (rrule == null)
                        {
                            return string.Empty;
                        }

                        RecurrenceRule originalRule;
                        if (RecurrenceRule.TryParse(OriginalRecurrenceRule.Value, out originalRule))
                        {
                            rrule.Exceptions = originalRule.Exceptions;
                        }

                        if (rrule.Range.RecursUntil != DateTime.MaxValue)
                        {
                            rrule.Range.RecursUntil = Owner.DisplayToUtc(rrule.Range.RecursUntil);

                            if (!AllDayEvent.Checked)
                            {
                                rrule.Range.RecursUntil = rrule.Range.RecursUntil.AddDays(1);
                            }
                        }

                        return rrule.ToString();
                    }

                    return string.Empty;
                }

                set
                {
                    RecurrenceRule rrule;
                    RecurrenceRule.TryParse(value, out rrule);

                    if (rrule != null)
                    {
                        if (rrule.Range.RecursUntil != DateTime.MaxValue)
                        {
                            DateTime recursUntil = Owner.UtcToDisplay(rrule.Range.RecursUntil);

                            if (!IsAllDayAppointment(Appointment))
                            {
                                recursUntil = recursUntil.AddDays(-1);
                            }

                            rrule.Range.RecursUntil = recursUntil;
                        }

                        AppointmentRecurrenceEditor.RecurrenceRule = rrule;

                        OriginalRecurrenceRule.Value = value;
                    }
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string Reminder
            {
                get
                {
                    if (Owner.RemindersSupport && ReminderDropDown.SelectedValue != string.Empty)
                    {
                        return ReminderDropDown.SelectedValue;
                    }

                    return string.Empty;
                }

                set
                {
                    RadComboBoxItem item = ReminderDropDown.Items.FindItemByValue(value);
                    if (item != null)
                    {
                        item.Selected = true;
                    }
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string TimeZoneID
            {
                get
                {
                    return TimeZonesDropDown.SelectedValue;
                }

                set
                {

                    RadComboBoxItem item = TimeZonesDropDown.Items.FindItemByValue(value);
                    if (item != null)
                    {
                        item.Selected = true;
                    }
                }
            }

           // object RecurrenceParentID;

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public int Asset_Contact_Tag_ID
            {
                get
                {
                    return Convert.ToInt32(ContinentsRadComboBox.SelectedValue);
                }

                set
                {
                    // Store the selected country ID until we obtain the continent ID  
                    _Asset_Contact_Tag_ID = value;
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public int ContactID
            {
                get
                {
                    return Convert.ToInt32(CountriesRadComboBox.SelectedValue);
                }

                set
                {
                    // Store the selected country ID until we obtain the continent ID  
                    _ContactIDofPerson = value;
                }
            }

            //values set for custom things for person and Tag combobox
            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string ContinentPersonName
            {
                get
                {
                    return ContinentsRadComboBox.SelectedItem.Text.ToString();
                  
                }

                set
                {
                    _PersonName = value;
                }
            }

            [Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
            public string CountryTagName
            {
                get
                {
                    return CountriesRadComboBox.SelectedItem.Text.ToString();
                }

                set
                {
                    // Store the selected country ID until we obtain the continent ID  
                    _Tag = value;
                }
            }

     

     

            #endregion

            /// <summary>
            /// Page load method for loading the appointments
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Page_Load(object sender, EventArgs e)
            {
                if (ContinentsRadComboBox.Items.Count == 0)
                {
                   
                    // Fill the continents combo  
                    LoadContinents();
                }

                UpdateButton.ValidationGroup = Owner.ValidationGroup;
                UpdateButton.CommandName = Mode == AdvancedFormMode.Edit ? "Update" : "Insert";

                //create Save button event when in run time to save the Appointment
                UpdateButton.Command += new System.Web.UI.WebControls.CommandEventHandler(UpdateButton_Command);

                if (Owner.AdvancedForm.EnableTimeZonesEditing)
                    PopulateTimeZonesDropDown();
                else
                    TimeZonesDropDown.Visible = false;

                if (!Owner.Reminders.Enabled)
                    ReminderDropDown.Visible = false;

                InitializeStrings();
                InitializeRecurrenceEditor();

                if (!FormInitialized)
                {
                    UpdateResetExceptionsVisibility();
                }
            }

            /// <summary>
            /// On Pre lender method for to set localzation
            /// </summary>
            /// <param name="e"></param>
            protected override void OnPreRender(EventArgs e)
            {
                base.OnPreRender(e);
               
                if (!string.IsNullOrEmpty(_selectedCountry))
                {
                    // Fill the countries combo.  
                    // Note that Continent value is available in PreRender  
                    LoadCountries(Continent);
                    CountriesRadComboBox.SelectedValue = _selectedCountry;
                }

                if (!FormInitialized)
                {
                    if (IsAllDayAppointment(Appointment))
                    {
                        EndDate.SelectedDate = EndDate.SelectedDate.Value.AddDays(-1);
                    }

                    FormInitialized = true;
                }

                if (String.IsNullOrEmpty(Appointment.TimeZoneID))
                    TimeZoneID = Owner.TimeZonesProvider.OperationTimeZone.TimeZoneId;
                else
                    TimeZoneID = Appointment.TimeZoneID;

                //if (!string.IsNullOrEmpty(_PersonName) && !string.IsNullOrEmpty(_Tag))
                //{
                //    // Fill the countries combo.  
                //    // Note that Continent value is available in PreRender  
                //    //fill the Person name and Tag Name while selected it from the downdown and put it in subject
                //    Subject += "  "+_PersonName;
                //    Subject += _Tag;

                   
                //}

            }

            /// <summary>
            /// Populating the AllZones
            /// </summary>
            private void PopulateTimeZonesDropDown()
            {
                TimeZonesDropDown.DataSource = Owner.TimeZonesProvider.GetAllTimeZones();
                TimeZonesDropDown.DataTextField = "DisplayName";
                TimeZonesDropDown.DataValueField = "Id";
            }

            protected void BasicControlsPanel_DataBinding(object sender, EventArgs e)
            {
                AllDayEvent.Checked = IsAllDayAppointment(Appointment);
            }

            protected void DurationValidator_OnServerValidate(object source, ServerValidateEventArgs args)
            {
                args.IsValid = (End - Start) > TimeSpan.Zero;
            }

            protected void ResetExceptions_OnClick(object sender, EventArgs e)
            {
                Owner.RemoveRecurrenceExceptions(Appointment);
                OriginalRecurrenceRule.Value = Appointment.RecurrenceRule;
                ResetExceptions.Text = Owner.Localization.AdvancedDone;
            }

            #region Private methods

            private void InitializeStrings()
            {
                SubjectValidator.ErrorMessage = Owner.Localization.AdvancedSubjectRequired;
                SubjectValidator.ValidationGroup = Owner.ValidationGroup;

                AllDayEvent.Text = Owner.Localization.AdvancedAllDayEvent;

                StartDateValidator.ErrorMessage = Owner.Localization.AdvancedStartDateRequired;
                StartDateValidator.ValidationGroup = Owner.ValidationGroup;

                StartTimeValidator.ErrorMessage = Owner.Localization.AdvancedStartTimeRequired;
                StartTimeValidator.ValidationGroup = Owner.ValidationGroup;

                EndDateValidator.ErrorMessage = Owner.Localization.AdvancedEndDateRequired;
                EndDateValidator.ValidationGroup = Owner.ValidationGroup;

                EndTimeValidator.ErrorMessage = Owner.Localization.AdvancedEndTimeRequired;
                EndTimeValidator.ValidationGroup = Owner.ValidationGroup;

                DurationValidator.ErrorMessage = Owner.Localization.AdvancedStartTimeBeforeEndTime;
                DurationValidator.ValidationGroup = Owner.ValidationGroup;

                ResetExceptions.Text = Owner.Localization.AdvancedReset;

                SharedCalendar.FastNavigationSettings.OkButtonCaption = Owner.Localization.AdvancedCalendarOK;
                SharedCalendar.FastNavigationSettings.CancelButtonCaption = Owner.Localization.AdvancedCalendarCancel;
                SharedCalendar.FastNavigationSettings.TodayButtonCaption = Owner.Localization.AdvancedCalendarToday;

            }

            private void InitializeRecurrenceEditor()
            {
                AppointmentRecurrenceEditor.SharedCalendar = SharedCalendar;
                AppointmentRecurrenceEditor.Culture = Owner.Culture;
                AppointmentRecurrenceEditor.StartDate = Appointment.Start;
                AppointmentRecurrenceEditor.EndDate = Appointment.End;
            }

            private void UpdateResetExceptionsVisibility()
            {
                // Render the reset exceptions checkbox when using web service binding
                if (string.IsNullOrEmpty(Owner.WebServiceSettings.Path))
                {
                    ResetExceptions.Visible = false;
                    RecurrenceRule rrule;
                    if (RecurrenceRule.TryParse(Appointment.RecurrenceRule, out rrule))
                    {
                        ResetExceptions.Visible = rrule.Exceptions.Count > 0;
                    }
                }
            }

            private bool IsAllDayAppointment(Appointment appointment)
            {
                DateTime displayStart = Owner.UtcToDisplay(appointment.Start);
                DateTime displayEnd = Owner.UtcToDisplay(appointment.End);
                return displayStart.CompareTo(displayStart.Date) == 0 && displayEnd.CompareTo(displayEnd.Date) == 0;
            }

            #region Events

            UserInfoManupulator ui = new UserInfoManupulator();
            void UpdateButton_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
            {

                #region Insert Command

                if (e.CommandName == "Insert")
                {
                    OC_Scheduler_Appointment appointmentAdd = new OC_Scheduler_Appointment();
                    // AdvancedForm o = new AdvancedForm();//for accesing the public proerties from the advanced from
                    try
                    {
                        appointmentAdd.Subject = Subject;// e.Appointment.Subject.ToString();
                        appointmentAdd.Start = Start;// e.Appointment.Start;
                        appointmentAdd.End = End;// e.Appointment.End;
                        appointmentAdd.Description = Description;// e.Appointment.Description;
                        appointmentAdd.RecurrenceRule = RecurrenceRuleText;// e.Appointment.RecurrenceRule.ToString();
                        appointmentAdd.TimeZone = TimeZoneID;// .Appointment.TimeZoneID;
                        appointmentAdd.Asset_Contact_Tag_ID = Asset_Contact_Tag_ID;// ContactID;// o._ContactIDofPerson;
                        appointmentAdd.Shift_ID = 1;//temporary hard coaded values here 1 or 2
                        appointmentAdd.Reminder = Reminder;// e.Appointment.Reminders.ToString();
                        appointmentAdd.Annotations = "";
                        appointmentAdd.Updated_By = ui.GetCurrentUserLoginName();
                        appointmentAdd.Update_Time = System.DateTime.UtcNow;

                        DataTable dt = null;
                        dt = appointmentAdd.getAsset_Contact_Tag_ID(Asset_Contact_Tag_ID, ContactID);

                        if (dt != null)
                        {
                            appointmentAdd.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
                        }

                        dt = null;

                        dt = appointmentAdd.get_Shift_ID(appointmentAdd.Shift_ID);

                        if (dt != null)
                        {
                            appointmentAdd.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
                        }

                        //if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
                        if (appointmentAdd.RecurrenceParentID == 0)
                        {
                            //Insert all values along with the recurentceParentID NULL if not recurrence done
                            //int? tempRPID = sys.null;
                            //appointmentAdd.RecurrenceParentID = tempRPID;
                            int saveOrNot = appointmentAdd.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
                        }
                        else
                        {

                            //Insert all values along with the recurentceParentID
                            // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
                            int saveOrNot = appointmentAdd.saveApointmentData(appointmentAdd);

                            //get latest insterted record
                            //SELECT ID FROM Appointments WHERE id=(SELECT max(id) FROM Appointments)

     

                        }

     

                    }
                    catch (Exception ex)
                    {
                    }

                }
                #endregion

                #region Update Command

                if (e.CommandName == "Update")
                {

                    OC_Scheduler_Appointment appointmentUpdate = new OC_Scheduler_Appointment();
                    try
                    {
                        appointmentUpdate.Subject = Subject;
                        appointmentUpdate.Start = Start;
                        appointmentUpdate.End = End;
                        appointmentUpdate.Description = Description;
                        appointmentUpdate.RecurrenceRule = RecurrenceRuleText;
                        appointmentUpdate.TimeZone = TimeZoneID;
                        appointmentUpdate.Asset_Contact_Tag_ID = Asset_Contact_Tag_ID;
                        appointmentUpdate.Shift_ID = 1;
                        appointmentUpdate.Reminder = Reminder;
                        appointmentUpdate.Annotations = "";
                        appointmentUpdate.Updated_By = ui.GetCurrentUserLoginName();
                        appointmentUpdate.Update_Time = System.DateTime.UtcNow;

                       
                       

                        //DataTable dt = null;
                        //dt = appointmentAdd.getAsset_Contact_Tag_ID(Asset_Contact_Tag_ID, ContactID);

                        //if (dt != null)
                        //{
                        //    appointmentAdd.Asset_Contact_Tag_ID = Convert.ToInt32(dt.Rows[0]["Asset_Contact_Tag_ID"]);
                        //}

                        //dt = null;

                        //dt = appointmentAdd.get_Shift_ID(appointmentAdd.Shift_ID);

                        //if (dt != null)
                        //{
                        //    appointmentAdd.Shift_ID = Convert.ToInt32(dt.Rows[0]["Shift_ID"]);
                        //}

                        ////if Recurrent not done then RecurrenceParentID is 0 so send  value null to the database
                        //if (appointmentAdd.RecurrenceParentID == 0)
                        //{
                        //    //Insert all values along with the recurentceParentID NULL if not recurrence done
                        //    //int? tempRPID = sys.null;
                        //    //appointmentAdd.RecurrenceParentID = tempRPID;
                        //    int saveOrNot = appointmentAdd.saveApointmentDataWithRecureenceParentIDNull(appointmentAdd);
                        //}
                        //else
                        //{

                        //    //Insert all values along with the recurentceParentID
                        //    // appointmentAdd.RecurrenceParentID = (int?)RecurrenceParentID;
                        //    int saveOrNot = appointmentAdd.saveApointmentData(appointmentAdd);

                        //    //get latest insterted record
                        //    //SELECT ID FROM Appointments WHERE id=(SELECT max(id) FROM Appointments)
                        //}

     

                    }
                    catch (Exception ex)
                    {
                    }
                }
               
                #endregion
            }

            #endregion

            #endregion
        }
    }

    My issues are I am not able to get the public properties values from AdvancedForm.ascx to WPScedulerSharepointWebpartUserControl.ascx and Vice Versa.

     

  2. Plamen
    Admin
    Plamen avatar
    2730 posts

    Posted 15 May 2013 Link to this post

    Hello,

    I am attaching a sample Web Part where similar issue have been implemented with RadScheduler that is bounds to a dummy list of appointments and has custom advanced template form.

    Hope this will be helpful.

    Regards,
    Plamen
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.

Back to Top