Thursday, September 18, 2014

JS Area and prototype

; WSP = window.WSP || {};
(function (WSP, $) {

    WSP.WspSharedUser = [];

    WSP.wspLoadScheduler = function () {
        this.frame;
        this.windowNo;
        this.height;
        var SchedWindowNo = null;
        var $mscheduler = null;

        var $divscalendar = null;
        var $scalendar = null;
        var $divSharedContact = null;

        var $rdoMyCal = null;
        var $rdoSharedCal = null;
        var $imgMyCal = null;
        var $imgSharedCal = null;
        var isShredDeleted = false;
        var selectedUser = '';
        var $CustomSchedTemplate = null;

        var $btnLoadScheduler = null;
        var $btnAddcontact = null;
        var $btnDeletecontact = null;
        var $root = $("<div>");
        var $busyDiv = null;
        var self = this;
        var autoLoadSharedUser = false;
        var sharedData = null;
        var sharedContact = null;
        var isShared = false;
        var arrUsr = [], arrAptUsr = [], arrAptCat = [];
        var lusrid = null;
        var lusrname = null;
        var s_startDate = "";
        var sUserID = [];
        var sUserName = [];

        //Load Scheduler  
        this.LoadScheduler = function () {
            SchedWindowNo = self.windowNo;
            $root.height(self.height);
            $root.css("overflow-x", "auto");
            // debugger;
            $(($root.parent()).parent().children()[1]).show();
            var divaptbusy = $("<div id='divAptBusy' class='wsp-busy-indicater'></div>");
            $("body").append(divaptbusy);
            //$busyDiv = ($root.parent()).parent().children()[1];
            //  $busyDiv.show();
            $.ajax({
                url: VIS.Application.contextUrl + "WSP/Scheduler/ReadJsonSchedData",
                dataType: "json",
                success: function (result) {
                    for (var s in result.lstCategories) {
                        arrAptCat.push({ text: result.lstCategories[s].CatName, value: result.lstCategories[s].ID });
                    }
                    for (var s in result.lstUsrInfo) {
                        arrAptUsr.push({ text: result.lstUsrInfo[s].Name, value: result.lstUsrInfo[s].ID });
                    }
                    Loadshed();
                }
            });

            //Load scheduler
            function Loadshed() {
                $root.load(VIS.Application.contextUrl + 'WSP/Scheduler/Scheduler?windowNo=' + SchedWindowNo, function () {
                    //  $busyDiv.hide();
                    $(".wsp-home-scheduler").height(self.height);
                    $(".wsp-home-left").height(self.height);
                    $(".wsp-home-right").height(self.height);
                    $(".wsp-scheduler").height(self.height);
                    $(".wsp-home-left-calendar").height(self.height / 2);
                    $(".wsp-home-left-btm").height(self.height / 2);

                    //$divscalendar.height((self.height / 2) - 5);
                    //$scalendar.height((self.height / 2) - 5);
                    //$(".home-left-calendar").height(self.height / 2 - 1);

                    lusrid = VIS.context.getAD_User_ID();
                    lusrname = VIS.context.getContext("##AD_User_Name");
                    arrUsr = [{ text: lusrname, value: lusrid }];

                    $mscheduler = $("#mscheduler_" + SchedWindowNo);
                    $divscalendar = $("#divcalendar_" + SchedWindowNo);
                    $scalendar = $("#scalendar_" + SchedWindowNo);

                    $rdoMyCal = $("#mycalendar_" + SchedWindowNo);
                    $rdoSharedCal = $("#sharedcalendar_" + SchedWindowNo);
                    $imgMyCal = $("#imgMyCal_" + SchedWindowNo);
                    $imgSharedCal = $("#imgSharedCal_" + SchedWindowNo);
                    $CustomSchedTemplate = $("#CustomSchedTemplate_" + SchedWindowNo);
                    $divSharedContact = $("#scontct_" + SchedWindowNo);

                    $btnLoadScheduler = $("#btnLoadScheduler_" + SchedWindowNo);
                    $btnAddcontact = $("#btnAddcontact_" + SchedWindowNo);
                    $btnDeletecontact = $("#btnDeletecontact_" + SchedWindowNo);

                    //By default disable Button
                    $divSharedContact.find("input[type='checkbox']").attr("disabled", true);
                    $btnLoadScheduler.attr("disabled", true);

                    if (autoLoadSharedUser == true) {
                        $divSharedContact.height("57%")
                        $btnLoadScheduler.hide();
                    }
                    else {
                        $btnLoadScheduler.show();
                    }
                    if (VIS.context.getContext("##WSP_Start_Date") != "") {
                        s_startDate = VIS.context.getContext("##WSP_Start_Date");

                        VIS.context.setContext("##WSP_Start_Date", "")
                    }
                    else {
                        s_startDate = new Date();
                    }

                    //Remove Busy indicater
                    divaptbusy.remove();

                    //######### start to initilize shceduler in div #########################//                

                    $mscheduler.kendoScheduler({
                        //date: new Date("2014/6/10"),
                        // max: new Date("2014/7/10"),
                        date: s_startDate,
                        // startTime: new Date("2014/6/10 11:00 AM"),
                        // endTime: new Date("2014/6/10 12:00 AM"),
                        startTime: new Date(new Date().setHours(0, 0, 0, 0)),
                        selectable: true,

                        allDaySlot: true,
                        showWorkHours: true,
                        workDayStart: new Date(new Date().setHours(9, 0, 0, 0)),
                        workDayEnd: new Date(new Date().setHours(19, 0, 0, 0)),

                        views: [
                         { type: "day", name: "day", selected: true },
                           "week",
                           "month",
                           "agenda"
                        ],
                        messages: {
                            views: {
                                day: VIS.Msg.getMsg("Day")
                            },
                            views: {
                                week: VIS.Msg.getMsg("Week")
                            },
                            views: {
                                month: VIS.Msg.getMsg("Month")
                            },
                            views: {
                                agenda: VIS.Msg.getMsg("Agenda")
                            },
                            editor: {
                                editorTitle: VIS.Msg.getMsg("Appointments")
                            }
                        },

                        group: {
                            resources: ["userID"],
                            orientation: "vertical"
                        },
                        resources: [
                            {
                                field: "statusID",
                                title: "Status",
                                dataSource: [
                                    { text: "Free", value: 1, color: "#E4E4E4" },
                                    { text: "Busy", value: 3, color: "#48ADDB" },
                                    { text: "Busy", value: 4, color: "#93e1b3" }
                                ]
                            },
                            {
                                field: "contacts",
                                name: "contacts",
                                multiple: true,
                                dataSource: arrAptUsr
                            },
                            {
                                field: "userID",
                                name: "userID",
                                //multiple: true,
                                dataSource: arrUsr
                            }

                        ],
                        editable: {
                            //set the template
                            template: kendo.template($CustomSchedTemplate.html()),
                            create: true,
                            update: true,
                        },
                        change: function (e) {
                            var calendar = $scalendar.data("kendoCalendar");
                            if (e.sender.calendar.value() != null && e.sender.calendar.value() != "" && e.sender.calendar.value() !== undefined) {
                                calendar.value(e.sender.calendar.value());
                            }
                            else {
                                var start = (e.start.getMonth() + 1) + "/" + e.start.getDate() + "/" + e.start.getFullYear();
                                calendar.value(e.sender.calendar.value());
                            }

                        },
                        edit: function (e) {
                            //To Accept the appointments
                            if (e.event.start.getHours() == 0) {
                                $("#isAllDay_" + SchedWindowNo).attr("checked", true);

                            }

                            if (e.event.statusID == 1 && e.event.ID > 0) {
                                $("#divIsAccept_" + SchedWindowNo).show();
                                $("#title_" + SchedWindowNo).attr("disabled", true);
                                $("#location_" + SchedWindowNo).attr("disabled", true);

                                var ddlCategories = $("#categories_" + SchedWindowNo).data("kendoDropDownList");
                                ddlCategories.enable(false);

                                var startDateTimePicker = $("#startDateTime_" + SchedWindowNo).data("kendoDateTimePicker");
                                startDateTimePicker.enable(false);

                                $("#isAllDay_" + SchedWindowNo).attr("disabled", true);

                                var endDateTimePicker = $("#endDatetime_" + SchedWindowNo).data("kendoDateTimePicker");
                                endDateTimePicker.enable(false);


                                //var ddlRecurrenceRule = $("#recurrenceRule_" + SchedWindowNo);
                                //ddlRecurrenceRule.find('input, span, ul,li, select').attr('disabled', 'disabled');

                                var ddlNotRecurrenceRule = $("#NotRecurrenceRule_" + SchedWindowNo);
                                ddlNotRecurrenceRule.show();

                                //e.container.find("[for=recurrenceRule]").parent().hide();
                                //e.container.find("[data-container-for=recurrenceRule]").hide();

                                $("#isPrivate_" + SchedWindowNo).attr("disabled", true);
                                $("#description_" + SchedWindowNo).attr("disabled", true);
                                var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
                                $txtTaskAutocomplete.attr("readonly", true);
                                $txtTaskAutocomplete.css("background-color", "#fff");

                                var span = $("<span>").text(VIS.Msg.getMsg("Me")),
                                    a = $("<a  data-index='" + lusrid + "' id='spanRemove" + lusrid + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + VIS.Msg.getMsg("Me") }).text("x").appendTo(span);
                                //add friend to friend div
                                span.insertBefore($txtTaskAutocomplete);

                                //var contactMultiSelect_ = $("#selectContact_" + SchedWindowNo).data("kendoMultiSelect");
                                //contactMultiSelect_.enable(false);
                            }
                                //To see Accepted Appointemnts
                            else if (e.event.statusID == 4 && e.event.ID > 0) {

                                $("#divIsAccept_" + SchedWindowNo).hide();
                                $("#title_" + SchedWindowNo).attr("disabled", true);
                                $("#location_" + SchedWindowNo).attr("disabled", true);

                                var ddlCategories = $("#categories_" + SchedWindowNo).data("kendoDropDownList");
                                ddlCategories.enable(false);

                                var startDateTimePicker = $("#startDateTime_" + SchedWindowNo).data("kendoDateTimePicker");
                                startDateTimePicker.enable(false);

                                $("#isAllDay_" + SchedWindowNo).attr("disabled", true);

                                var endDateTimePicker = $("#endDatetime_" + SchedWindowNo).data("kendoDateTimePicker");
                                endDateTimePicker.enable(false);

                                var ddlRecurrenceRule = $("#recurrenceRule_" + SchedWindowNo);
                                ddlRecurrenceRule.find('span').off("clcik");
                                var ddlNotRecurrenceRule = $("#NotRecurrenceRule_" + SchedWindowNo);
                                $(".wsp-Recurrence-disable").show();
                                //e.container.find("[for=recurrenceRule]").parent().hide();
                                //e.container.find("[data-container-for=recurrenceRule]").hide();

                                $("#isPrivate_" + SchedWindowNo).attr("disabled", true);
                                $("#description_" + SchedWindowNo).attr("disabled", true);

                                var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
                                $txtTaskAutocomplete.attr("readonly", true);
                                $txtTaskAutocomplete.css("background-color", "#fff");

                                var span = $("<span>").text(VIS.Msg.getMsg("Me")),
                                    a = $("<a  data-index='" + lusrid + "' id='spanRemove" + lusrid + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + VIS.Msg.getMsg("Me") }).text("x").appendTo(span);
                                //add friend to friend div
                                span.insertBefore($txtTaskAutocomplete);
                                WSP.WspSharedUser = [];

                            }
                            else {
                                $("#divIsAccept_" + SchedWindowNo).hide();
                                WSP.WspSharedUser = [];
                                var $txtTaskAutocomplete = $("#txtSchedContacts_" + SchedWindowNo);
                                var txtContacts_ = $("#txtContacts_" + SchedWindowNo)
                                //ddlContacts_.enable(false);
                                var d_contact = [];
                                if (e.event.contactsInfo != null) {
                                    d_contact = e.event.contactsInfo;
                                }
                                if (d_contact.length > 0) {
                                    for (var c = 0; c < d_contact.length; c++) {
                                        var span = $("<span>").text(d_contact[c].Name),
                                        a = $("<a  data-index='" + d_contact[c].ID + "' id='spanRemove" + d_contact[c].ID + "'>").addClass("remove").attr({ href: "javascript:", title: "Remove " + d_contact[c].Name }).text("x").appendTo(span);
                                        //add friend to friend div
                                        span.insertBefore($txtTaskAutocomplete);
                                        WSP.WspSharedUser.push({ ID: d_contact[c].ID, Name: d_contact[c].Name });

                                    }
                                    // ddlContacts_.dataSource = WSP.WspSharedUser;
                                    var $divSharedContacts = $txtTaskAutocomplete.parent();
                                }
                            }
                            $("#title_" + SchedWindowNo).focus();
                        },
                        //dataBinding: function (e) {
                        //    debugger;
                        //},
                        //dataBound: function (e) {
                        //    debugger;

                        //},
                        //add: function (e) {
                        //    debugger;
                        //},
                        //cancel: function (e) {

                        //},
                        resizeStart: function (e) {
                            if (e.event.statusID == 1 || e.event.statusID == 4) {
                                e.preventDefault();
                            }
                        },
                        resize: function (e) {
                            if (e.event.statusID == 1 || e.event.statusID == 4) {
                                e.preventDefault();
                            }
                        },
                        resizeEnd: function (e) {
                            if (e.event.statusID == 1 || e.event.statusID == 4) {
                                e.preventDefault();
                            }
                        },
                        moveStart: function (e) {
                            if (e.event.statusID == 1 || e.event.statusID == 4) {
                                e.preventDefault();
                            }
                        },
                        move: function (e) {
                            if (e.event.statusID == 1 || e.event.statusID == 4) {
                                e.preventDefault();
                            }
                        },
                        moveEnd: function (e) {
                            if (e.event.statusID == 1 || e.event.statusID == 4) {
                                e.preventDefault();
                            }
                        },
                        //add: function (e) {
                        //    if (!checkAvailability(e.event.start, e.event.end, e.event)) {
                        //        e.preventDefault();
                        //    }
                        //},
                        save: function (e) {
                            e.event.contacts = [];
                            e.event.contactsInfo = [];
                            if (WSP.WspSharedUser.length > 0) {
                                for (var s in WSP.WspSharedUser) {
                                    e.event.contacts.push(WSP.WspSharedUser[s].ID);
                                    e.event.contactsInfo.push({ ID: WSP.WspSharedUser[s].ID, Name: WSP.WspSharedUser[s].Name });
                                }
                            }
                            // var mscheduler_ = $mscheduler.data("kendoScheduler");
                            //  mscheduler_.dataSource.transport.update(e);
                        },
                        dataSource: {
                            batch: true,
                            //autoSync: true,
                            transport: {
                                read: function (e) {
                                    //ajax getting JSON data from server
                                    var arrData = [];
                                    $.ajax({
                                        url: VIS.Application.contextUrl + "WSP/Scheduler/ReadJson_Appointments",
                                        dataType: "json",
                                        data: { isShared: isShared, sharedContact: sharedContact, autoLoadSharedUser: autoLoadSharedUser },
                                        success: function (result) {
                                            data = JSON.parse(result);
                                            if (isShared == false) {
                                                for (var s in data) {
                                                    arrData.push({
                                                        AppointmentID: data[s].AppointmentID,
                                                        Title: data[s].Title,
                                                        UserName: data[s].UserName,
                                                        UserID: data[s].UserID,
                                                        CreatedBy: data[s].CreatedBy,
                                                        Start: new Date(data[s].Start),
                                                        End: new Date(data[s].End),
                                                        StartTimezone: data[s].StartTimezone,
                                                        EndTimezone: data[s].EndTimezone,
                                                        Description: data[s].Description,
                                                        RecurrenceID: data[s].RecurrenceID,
                                                        RecurrenceRule: data[s].RecurrenceRule,
                                                        RecurrenceException: data[s].RecurrenceException,
                                                        Location: data[s].Location,
                                                        IsPrivate: data[s].IsPrivate,
                                                        IsAllDay: data[s].IsAllDay,
                                                        IsAccept: data[s].IsAccept,
                                                        StatusID: data[s].StatusID,
                                                        Categories: data[s].Categories,
                                                        Contacts: data[s].Contacts,
                                                        ContactsText: data[s].ContactsText,
                                                        ContactsID: data[s].ContactsID,
                                                        ContactsInfo: data[s].ContactsInfo

                                                    });
                                                }
                                            }
                                            else {
                                                if (autoLoadSharedUser == true) {
                                                    sharedData = data;
                                                    arrData = [];
                                                }
                                                else {
                                                    for (var s in data) {
                                                        arrData.push({
                                                            AppointmentID: data[s].AppointmentID,
                                                            Title: data[s].Title,
                                                            CreatedBy: data[s].CreatedBy,
                                                            UserID: data[s].UserID,
                                                            UserName: data[s].UserName,
                                                            Start: new Date(data[s].Start),
                                                            End: new Date(data[s].End),
                                                            StartTimezone: data[s].StartTimezone,
                                                            EndTimezone: data[s].EndTimezone,
                                                            Description: data[s].Description,
                                                            RecurrenceID: data[s].RecurrenceID,
                                                            RecurrenceRule: data[s].RecurrenceRule,
                                                            RecurrenceException: data[s].RecurrenceException,
                                                            Location: data[s].Location,
                                                            IsPrivate: data[s].IsPrivate,
                                                            IsAccept: data[s].IsAccept,
                                                            IsAllDay: data[s].IsAllDay,
                                                            StatusID: data[s].StatusID,
                                                            Categories: data[s].Categories,
                                                            Contacts: data[s].Contacts,
                                                            ContactsText: data[s].ContactsText,
                                                            ContactsID: data[s].ContactsID,
                                                            ContactsInfo: data[s].ContactsInfo
                                                        });
                                                    }
                                                }
                                            }

                                            e.success(arrData);
                                        }
                                    });

                                },
                                create: function (e) {
                                    $.ajax({
                                        url: VIS.Application.contextUrl + "WSP/Scheduler/CreateJson_Appointments",
                                        type: "POST",
                                        datatype: "JSON",
                                        contentType: "application/json; charset=utf-8",
                                        async: true,
                                        data: JSON.stringify({ models: e.data.models }),
                                        success: function (result) {
                                            var AID = JSON.parse(result);
                                            e.data.models[0].AppointmentID = AID;
                                            e.data.models[0].ContactsInfo = WSP.WspSharedUser;
                                            e.data.models[0].UserID = parseInt(lusrid);
                                            e.data.models[0].CreatedBy = 3;
                                            e.success(e.data.models);
                                            WSP.WspSharedUser = null;
                                            WSP.WspSharedUser = [];
                                        }
                                    });
                                    //e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);

                                },
                                update: function (e) {
                                    $.ajax({
                                        url: VIS.Application.contextUrl + "WSP/Scheduler/UpdateJson_Appointments",
                                        type: "POST",
                                        datatype: "JSON",
                                        contentType: "application/json; charset=utf-8",
                                        async: true,
                                        data: JSON.stringify({ models: e.data.models }),
                                        success: function (result) {

                                            var AID = JSON.parse(result);
                                            e.data.models[0].AppointmentID = AID;
                                            e.data.models[0].ContactsInfo = WSP.WspSharedUser;
                                            e.data.models[0].UserID = parseInt(lusrid);
                                            //  e.data.models[0].CreatedBy = 3;
                                            e.success(e.data.models);
                                            WSP.WspSharedUser = null;
                                            WSP.WspSharedUser = [];
                                        }
                                    });
                                    //e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);

                                },
                                destroy: function (e) {
                                    $.ajax({
                                        url: VIS.Application.contextUrl + "WSP/Scheduler/DeleteJson_Appointments",
                                        type: "POST",
                                        datatype: "JSON",
                                        contentType: "application/json; charset=utf-8",
                                        async: true,
                                        data: JSON.stringify({ models: e.data.models }),
                                        success: function (result) {
                                            WSP.WspSharedUser = null;
                                            WSP.WspSharedUser = [];
                                            //e.data.models[0].AppointmentID = result;
                                            e.success(e.data.models);
                                        }
                                    });
                                    //e.data.models[0].AppointmentID = Math.ceil(Math.random() * 100000);

                                },
                                parameterMap: function (options, operation) {

                                    if (operation !== "read" && options.models) {
                                        return { models: kendo.stringify(options.models) };
                                    }
                                }
                            },
                            schema: {
                                model: {
                                    id: "ID",
                                    fields: {
                                        ID: { from: "AppointmentID", type: "number" },
                                        title: { from: "Title", validation: { required: true } },
                                        start: { from: "Start", type: "date" },
                                        end: { from: "End", type: "date" },
                                        userName: { from: "UserName" },
                                        userID: { from: "UserID" },
                                        createdBy: { from: "CreatedBy" },
                                        startTimezone: { from: "StartTimezone" },
                                        endTimezone: { from: "EndTimezone" },
                                        description: { from: "Description" },
                                        recurrenceId: { from: "RecurrenceID" },
                                        recurrenceRule: { from: "RecurrenceRule" },
                                        recurrenceException: { from: "RecurrenceException" },
                                        isAllDay: { from: "IsAllDay", type: "boolean" },
                                        isAccept: { from: "IsAccept", type: "boolean" },
                                        isPrivate: { from: "IsPrivate", type: "boolean" },
                                        location: { from: "Location" },
                                        categories: { from: "Categories" },
                                        statusID: { from: "StatusID" },
                                        contacts: { from: "Contacts" },
                                        contactsID: { from: "ContactsID" },
                                        contactsText: { from: "ContactsText" },
                                        contactsInfo: { from: "ContactsInfo" }

                                    }
                                }
                            }
                        }
                    });

                    $('html').css("overflow-x", "scroll");
                    //To initilize scheduler
                    var myscheduler = $mscheduler.data("kendoScheduler");
                    /* to start bind single click event for my scheduler when new appointments will be created*/
                    myscheduler.wrapper.on("click", "td.k-state-selected", function (e) {
                        if (myscheduler.options.editable != false) {
                            var slot = myscheduler.slotByElement(e.currentTarget);
                            myscheduler.addEvent({
                                start: slot.startDate,
                                end: slot.endDate
                            });
                            //$("#contacts").kendoMultiSelect().data("kendoMultiSelect").source = "";
                            //$("#contacts").kendoMultiSelect().data("kendoMultiSelect").source = arrAptUsr;
                        }
                    });
                    /* to end bind single click event for my scheduler when new appointments will be created*/

                    /* to start bind single click event for my scheduler in edit mode*/
                    myscheduler.wrapper.on("div.k-event k-event-inverse k-state-selected").click(function (e) {
                        if (myscheduler.options.editable != false) {
                            if (e.target.className == "k-event-template") {
                                var uid = $(e.target.parentNode.parentNode).data("uid");
                                var event = myscheduler.occurrenceByUid(uid);
                                myscheduler.editEvent(event);

                                //if (event.isPrivate != true) {
                                // myscheduler.editEvent(event);
                                // }
                                // else {
                                //if (event.createdBy == lusrid) {
                                //    myscheduler.editEvent(event);
                                //}
                                //else {
                                //    return;
                                //}
                                // }
                            }
                            else if (e.target.className === "k-event-template k-event-time") {
                                var uid = $(e.target.parentNode.parentNode).data("uid");
                                var event = myscheduler.occurrenceByUid(uid);
                                myscheduler.editEvent(event);

                                //if (event.isPrivate != true) {
                                // myscheduler.editEvent(event);
                                // }
                                // else {
                                //if (event.createdBy == lusrid) {
                                //    myscheduler.editEvent(event);
                                //}
                                //else {
                                //    return;
                                //}
                                // }
                            }
                            else if (e.target.className === "k-event k-event-inverse k-state-selected") {
                                var uid = $(e.target).data("uid");
                                var event = myscheduler.occurrenceByUid(uid);
                                myscheduler.editEvent(event);

                                //if (event.isPrivate != true) {
                                // myscheduler.editEvent(event);
                                // }
                                // else {
                                //if (event.createdBy == lusrid) {
                                //    myscheduler.editEvent(event);
                                //}
                                //else {
                                //    return;
                                //}
                                // }
                            }
                        }
                    });
                    /* to end bind single click event for my scheduler in edit mode*/

                    /* to start filter aapointments by date using calenar in myscheduler*/
                    $scalendar.kendoCalendar({
                        value: new Date(),
                        change: function () {
                            myscheduler.date(this.value());
                        }
                    });
                    /* to end filter aapointments by date using calenar in myscheduler*/

                    //Add Contacts for shared Calendar
                    $btnAddcontact.on("click", function (evnt) {
                        if (isShared == true) {
                            isShredDeleted = false;//Test
                            var susr = VIS.context.getAD_User_ID()
                            for (var s in arrAptUsr) {
                                susr += "," + arrAptUsr[s].value;
                            }

                            var sqlwhere = " AD_User.AD_User_ID IN (Select Distinct AD_User_ID from C_Bpartner JOIN AD_User on C_BPartner.C_BPartner_ID=AD_User.C_BPartner_ID "
                                              + "Where c_bpartner.isemployee='Y') AND AD_User.AD_User_ID NOT IN (" + susr + ")";

                            var info = new VIS.infoGeneral(true, VIS.Env.getWindowNo(), "", "AD_User", "AD_User_ID", true, sqlwhere, null);

                            info.onClose = function () {
                                var s_Suser = info.getSelectedValues();
                                for (var s in s_Suser) {
                                    selectedUser += s_Suser[s] + ",";
                                }
                                selectedUser = selectedUser.substr(0, selectedUser.length - 1);
                                if (selectedUser != "") {
                                    $.ajax({
                                        url: VIS.Application.contextUrl + "WSP/Scheduler/AddDeleteGetJson_sharedUser",
                                        type: "POST",
                                        datatype: "JSON",
                                        contentType: "application/json; charset=utf-8",
                                        async: true,
                                        data: JSON.stringify({ selectedUser: selectedUser, isShredDeleted: isShredDeleted }),
                                        success: function (data) {
                                            arrAptUsr = [];
                                            var result = JSON.parse(data);
                                            for (var s in result) {
                                                arrAptUsr.push({ text: result[s].Name, value: result[s].ID });
                                            }
                                            selectedUser = "";
                                            BindSharedContacts();
                                        }
                                    });
                                }
                            };
                            info.show();
                        }
                        else {
                            return;
                        }
                    });
                    //Delete Contacts for shared Calendar
                    $btnDeletecontact.on("click", function (evnt) {
                        if (isShared == true) {
                            isShredDeleted = true;
                            var selectedUser = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
                            if (selectedUser != "") {
                                $.ajax({
                                    url: VIS.Application.contextUrl + "WSP/Scheduler/AddDeleteGetJson_sharedUser",
                                    type: "POST",
                                    datatype: "JSON",
                                    contentType: "application/json; charset=utf-8",
                                    async: true,
                                    data: JSON.stringify({ selectedUser: selectedUser, isShredDeleted: isShredDeleted }),
                                    success: function (data) {
                                        arrAptUsr = [];
                                        var result = JSON.parse(data);
                                        for (var s in result) {
                                            arrAptUsr.push({ text: result[s].Name, value: result[s].ID });
                                        }
                                        BindSharedContacts();
                                    }
                                });
                            }

                        }
                        else {
                            return;
                        }
                    });
                    //bind click event of my calendar radio button
                    $rdoMyCal.on("click", function (evnt) {
                        isShared = false;
                        sharedData = null;
                        sharedContact = null;
                        $('input[name=chkSContcts]').attr('checked', false);
                        $divSharedContact.find("input[type='checkbox']").attr("disabled", true);
                        $btnLoadScheduler.attr("disabled", true);

                        $divscalendar.addClass("div-home-left-calendar1");
                        $divscalendar.removeClass("wsp-div-home-left-calendar");

                        $btnLoadScheduler.css('background-color', 'none');
                        $btnAddcontact.css("background-color", "none");
                        $btnDeletecontact.css("background-color", "none");

                        $btnLoadScheduler.css('background-color', '#A7D8FE');
                        $btnAddcontact.css("background-color", "#A7D8FE");
                        $btnDeletecontact.css("background-color", "#A7D8FE");

                        $btnLoadScheduler.attr("disabled", true);

                        arrUsr = [];
                        arrUsr = [{ text: lusrname, value: lusrid }];
                        //myscheduler editable true
                        myscheduler.options.editable = true;
                        //referesh resource of data and scheduler of data for shared

                        myscheduler.resources[1].dataSource.data("");
                        myscheduler.resources[1].dataSource.data(arrAptUsr);


                        myscheduler.resources[2].dataSource.data("");
                        myscheduler.resources[2].dataSource.data(arrUsr);
                        myscheduler.dataSource.read();
                        myscheduler.view(myscheduler.view().name);

                    });
                    //bind click event of shared calendar radio button
                    $rdoSharedCal.on("click", function (evnt) {
                        isShared = true;
                        $divSharedContact.find("input[type='checkbox']").attr("disabled", false);

                        $divscalendar.removeClass("div-home-left-calendar1");
                        $divscalendar.addClass("wsp-div-home-left-calendar");

                        //VIS.Application.contextUrl
                        $btnLoadScheduler.css('background-color', 'none');
                        $btnAddcontact.css("background-color", "none");
                        $btnDeletecontact.css("background-color", "none");

                        $btnLoadScheduler.css('background-color', '#1aa0ed');
                        $btnAddcontact.css('background-color', '#1aa0ed');
                        $btnDeletecontact.css('background-color', '#1aa0ed');
                        $btnLoadScheduler.attr("disabled", false);

                        //Bind Shared Contact
                        BindSharedContacts();
                        //myscheduler editable false
                        myscheduler.options.editable = false;
                        //referesh resource of data and scheduler of data for shared
                        myscheduler.dataSource.read();
                        myscheduler.view(myscheduler.view().name);
                    });
                    //fielter the shared user data on check box when autoShared user True
                    $("#scontct_" + SchedWindowNo + " :checkbox").change(function (e) {
                        if (autoLoadSharedUser == true) {
                            //var checked = $.map($("#scontct_" + SchedWindowNo + ":checked"), function (checkbox) {
                            //    return parseInt($(checkbox).val());
                            //});
                            console.log("In chk" + sharedData);
                            var chekdCntct = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get();
                            var myscheduler = $mscheduler.data("kendoScheduler");

                            myscheduler.dataSource.data("");
                            var arrVals = [];
                            for (var s in sharedData) {
                                //var arrdata = sharedData[s];
                                for (var j in chekdCntct) {
                                    if (sharedData[s].UserID == chekdCntct[j]) {
                                        arrVals.push(sharedData[s]);
                                        myscheduler.dataSource.add({
                                            ID: sharedData[s].AppointmentID,
                                            userID: sharedData[s].UserID,
                                            title: sharedData[s].Title,
                                            start: new Date(sharedData[s].Start),
                                            end: new Date(sharedData[s].End),
                                            description: sharedData[s].Description
                                        });
                                    }
                                }
                            }

                            //for (var i = 0; typeof (sharedData[i].UserID) != 'undefined'; vals.push(sharedData[i++].getAttribute('value')));
                            //var myscheduler = $mscheduler.data("kendoScheduler");
                            //myscheduler.dataSource.filter({
                            //    operator: function (task) {
                            //        return $.inArray(task.userID, chekdCntct) >= 0;
                            //    }
                            //});

                            //sharedContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
                            //var myscheduler = $mscheduler.data("kendoScheduler");
                            ////referesh data for shared
                            //myscheduler.dataSource.read();
                            //myscheduler.view(myscheduler.view().name);
                        }
                        else {
                            return;
                        }
                    });
                    //fielter the shared user data on check box when autoShared user false
                    $btnLoadScheduler.on("click", function (evnt) {
                        if (isShared == true) {
                            sharedContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get().join(",");
                            var arrContact = $("input[name=chkSContcts]:checked").map(function () { return this.value; }).get();
                            //  if (arrContact.length > 0) {
                            arrUsr = [];
                            for (var s in arrAptUsr) {
                                for (var j in arrContact) {
                                    if (arrAptUsr[s].value == arrContact[j]) {
                                        arrUsr.push(arrAptUsr[s]);
                                    }
                                }
                            }

                            if (arrUsr.length > 0) {
                                myscheduler.resources[1].dataSource.data("");
                                myscheduler.resources[1].dataSource.data(arrAptUsr);

                                myscheduler.resources[2].dataSource.data("");
                                myscheduler.resources[2].dataSource.data(arrUsr);


                                myscheduler.dataSource.read();
                                myscheduler.view(myscheduler.view().name);
                            }
                            //}
                            //else {

                            //}
                        } else {
                            return;
                        }
                    });
                    //referesh scheduler data for my calender
                    $imgMyCal.on("click", function (evnt) {
                        if (isShared == false) {
                            $(".wsp-left-viewtype-left").animate({ "opacity": "0.5" });
                            myscheduler.dataSource.read();
                            myscheduler.view(myscheduler.view().name);
                            $(".wsp-left-viewtype-left").animate({ "opacity": "1" });
                        }
                        else {
                            return;
                        }
                        //debugger;

                        //var s_sched = $CustomSchedTemplate.html();
                        //var contacts_ = $("#contacts").kendoMultiSelect().data("kendoMultiSelect");

                    });
                    //referesh  scheduler data for shared calender
                    $imgSharedCal.on("click", function (e) {
                        if (isShared == true) {
                            $(".wsp-left-viewtype-right").animate({ "opacity": "0.5" });
                            //Bind Shared Contact
                            //  BindSharedContacts();
                            myscheduler.dataSource.read();
                            myscheduler.view(myscheduler.view().name);
                            //$mscheduler.data("kendoGrid").dataSource.read();
                            // $mschedulerdata("kendoScheduler").refresh();
                            $(".wsp-left-viewtype-right").animate({ "opacity": "1" });
                        }
                        else {
                            return;
                        }
                    });
                    /* ############## end  to initilize  shceduler in div ##################### */
                    /*######### Start Bind Shared contact ############ */

                    function BindSharedContacts() {
                        if (arrAptUsr.length > 0) {
                            var str = "";
                            $divSharedContact.html("");
                            for (var s in arrAptUsr) {
                                str += "<div class='wsp-home-left-contacts-inner'>"
                                    + "<input id='scntct_" + arrAptUsr[s].value + SchedWindowNo + "'  type='checkbox' name='chkSContcts' value=" + arrAptUsr[s].value + ">"
                                    + "<label style='font-weight:100;' for='scntct_" + arrAptUsr[s].value + SchedWindowNo + "'>" + arrAptUsr[s].text + "</label>"
                                    + "</div>"
                            }
                            $divSharedContact.html(str);
                        }
                        else {
                            $divSharedContact.html("No Contacts for Share");
                        }
                    }
                    //BindSharedContacts();
                    /*######### End Bind Shared contact ############ */

                });
            }
        }
        //Get Root frame
        this.getRoot = function () {
            return $root;
        };
        //dispose variable
        this.disposeComponent = function () {

            SchedWindowNo = null;
            // $mscheduler.empty();
            // $mscheduler = null;
            $divscalendar.empty();
            $divscalendar = null;
            $scalendar.empty();
            $scalendar = null;
            $divSharedContact.empty();
            $divSharedContact = null;
            $rdoMyCal.off("click");
            $rdoMyCal = null;
            $rdoSharedCal.off("click");
            $rdoSharedCal = null;
            $imgMyCal.off("click");
            $imgMyCal = null;
            $imgSharedCal.off("click");
            $imgSharedCal = null;
            isShredDeleted = null;
            selectedUser = null;
            $btnLoadScheduler.off("click");
            $btnLoadScheduler = null;
            $btnAddcontact.off("click");
            $btnAddcontact = null;
            $btnDeletecontact.off("click");
            $btnDeletecontact = null;
            $root.empty();
            $root = null;
            self = null;
            autoLoadSharedUser = null;
            sharedData = null;
            sharedContact = null;
            isShared = null;
            arrUsr = null, arrAptUsr = null, arrAptCat = null;
            lusrid = null;
            lusrname = null;
            s_startDate = null;
        }
    }

    //Must Implement with same parameter
    WSP.wspLoadScheduler.prototype.init = function (windowNo, frame) {
        //Assign to this Varable
        this.frame = frame;
        this.windowNo = windowNo;
        this.frame.getContentGrid().append(this.getRoot());
        this.height = this.frame.getContentGrid().height();
        //to load scheduler
        this.LoadScheduler();
    };

    //Must implement dispose
    WSP.wspLoadScheduler.prototype.dispose = function () {
        /*CleanUp Code */
        //dispose this component
        this.disposeComponent();

        //call frame dispose function
        if (this.frame)
            this.frame.dispose();
        this.frame = null;
    };

})(WSP, jQuery);

No comments:

Post a Comment