﻿var ReminderId = 1;

function BuildMyCalendars() {
    $.getJSON("/Calendar/GetMyCalendars/?t=" + new Date(), {},
    function(result) {
        if (result != null) {
            var myCalendarId = "";
            var myCalendars = "";
            for (i in result) {
                var c = result[i];
                myCalendarId = result[0].CalendarId;
                myCalendars += '<a class="calName" href="javascript:MainCalendar(' + c.CalendarId + ');">' + c.CalendarName + '</a><div class="clear" />';
            }
            $('#MyCalendars').html(myCalendars);
            //Call the Calendar Function

            //var myCalendarId = '<%= Session[PinkUnit.Web.Utilities.SessionItemKey.CalendarId] %>';
            MainCalendar(myCalendarId);
        }
    });
}
function CalendarSettings() {
    $('#lblMessage').html('');
    $('#CalendarContent').hide();
    BuildCalendarSettings();
    $('#CalSettingContent').show();
}

function MainCalendar(myCalendarId) {
    $('#lblMessage').html('');

    //add the Calendar Id to the jquery session to handle for add/edit events
    $.session("CalendarId", myCalendarId);

    //clear the grid before populating
    $('#calendar').html('');

    //Show hide contents
    $('#CalendarContent').show();
    $('#CalSettingContent').hide();

    //Populate and Show Calendar
    $('#calendar').fullCalendar({
        theme: true,
        editable: true,
        disableDragging: true,
        disableResizing: true,
        defaultView: 'agendaDay',
        header: {
            left: 'prevYear,prev, today, next,nextYear',
            center: 'title',
            right: 'month,agendaWeek,agendaDay,agenda'
        },
        events: function(start, end, callback) {
            // do some asynchronous ajax
            contentType: "application/json; charset=utf-8",
            $.getJSON("/Calendar/GetEvents/?t=" + new Date(),
                    {
                        start: dateFormat(start.getTime()),
                        end: dateFormat(end.getTime()),
                        calendarId: myCalendarId
                    },
                    function(result) {
                        if (result != null) {
                            for (i in result) {
                                var calEvent = result[i];
                                calEvent.date = dateFormat(calEvent.date, "yyyy-mm-dd'T'HH:MM:ss");
                                calEvent.start = dateFormat(calEvent.start, "yyyy-mm-dd'T'HH:MM:ss");
                                calEvent.end = dateFormat(calEvent.end, "yyyy-mm-dd'T'HH:MM:ss");
                            }
                        }

                        var calevents = result;
                        // then, pass the CalEvent array to the callback
                        callback(calevents);
                    });

        },
        dayClick: function(dayDate, allDay, jsEvent, view) {
            addEventShow(dayDate, allDay, jsEvent, view);
        },
        eventClick: function(event) {
            editEventShow(event);
        },
        eventMouseover: function(event, e) {
            ShowEventDetails(event, e);
        },
        eventMouseout: function(event, e) {
            HideEventDetails(event, e);
        }
    });

    //dialog box for Add event div
    $('#addEvent').dialog({
        bgiframe: true,
        autoOpen: false,
        open: function(event, ui) {
            $(ui).find('#add_when_start_date').datepicker().click(function() {
                $(this).datepicker('show');
            });
            $(ui).find('#add_when_end_date').datepicker().click(function() {
                $(this).datepicker('show');
            });
        },
        close: function(event, ui) {
            $('#add_when_start_date').datepicker('hide');
            $('#add_when_end_date').datepicker('hide');
            $('#ptTimeSelectCntr').hide();
        },
        height: 500,
        width: 550,
        modal: true
    });

    //dialog box for Edit event div
    $('#editEvent').dialog({
        bgiframe: true,
        autoOpen: false,
        open: function(event, ui) {
            $(ui).find('#edit_when_start_date').datepicker().click(function() {
                $(this).datepicker('show');
            });
            $(ui).find('#edit_when_end_date').datepicker().click(function() {
                $(this).datepicker('show');
            });
        },
        close: function(event, ui) {
            $('#edit_when_start_date').datepicker('hide');
            $('#edit_when_end_date').datepicker('hide');
            $('#ptTimeSelectCntr').hide();
        },
        height: 500,
        width: 550,
        modal: true
    });

    //Get the Users list for autocomplete
    $.getJSON("/Calendar/GetAllUsers/?t=" + new Date(), {},
        function(data) {
            if (data != null) {
                $("#AddEventPerson").autocomplete(data, { max: 50, multiple: true, multipleSeparator: ", ",
                    formatItem: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.SubDomain + "]";
                    },
                    formatResult: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.SubDomain + "]";
                    }
                });
                $("#EditEventPerson").autocomplete(data, { max: 50,
                    formatItem: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.SubDomain + "]";
                    },
                    formatResult: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.SubDomain + "]";
                    }
                });
            }
        });
}

//Show Add Event Popup
function addEventShow(dayDate, allDay, jsEvent, view) {
    //set time picker for the Time Controls
    $('#add_when_start_time').ptTimeSelect();
    $('#add_when_end_time').ptTimeSelect();
    $('#lbl_add_Result').hide();
    $('#add_what').val('');
    $('#add_when_start_date').val(dateFormat(dayDate, "mm/dd/yyyy"));
    $('#add_when_end_date').val(dateFormat(dayDate, "mm/dd/yyyy"));
    $('#add_when_start_time').val('');
    $('#add_when_end_time').val('');
    $('#add_desc').val('');
    $('#AddEventPerson').val('');
    $('#AddEventPermissionSet option:selected').val('VIEW');
    $('#add_all_day').attr('checked', allDay);
    $('#add_available').attr('checked', true);
    $('#add_private').attr('checked', true);
    //call the all day event function
    AllDayEvent();

    //Initialize the Reminder Value;
    ReminderId = 1;

    //Clear the Details
    $('#lblAddReminderType > div').remove();
    $('#lblAddReminderTime > div').remove();
    $('#lblAddReminderScale > div').remove();
    $('#lblAddRemoveReminder > div').remove();

    //Build dummy Calendar Reminders
    $('#lblAddReminderType').append('<div id="lblAddReminderType' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<select name="AddReminderType" id="AddReminderType' + ReminderId + '"><option value="POPUP" selected="true">Pop-up</option><option value="EMAIL">Email</option></select>');
    $('#lblAddReminderTime').append('<div id="lblAddReminderTime' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<input type="text" name="AddReminderTime" id="AddReminderTime' + ReminderId + '" value="10" />');
    $('#lblAddReminderScale').append('<div id="lblAddReminderScale' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<select name="AddReminderScale" id="AddReminderScale' + ReminderId + '"><option value="MINUTES" selected="true">Minutes</option><option value="HOURS">Hours</option><option value="DAYS">Days</option><option value="WEEKS">Weeks</option></select>');
    $('#lblAddRemoveReminder').append('<div id="lblAddRemoveReminder' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<img  class="RemoveEventReminder" src="../../Content/Images/delete_icon.gif" onclick=RemoveEventReminder("' + ReminderId + '"); title="Remove" id="iRemove' + ReminderId + '"></img>');
    ReminderId += 1;
    $('#addEvent').dialog('open');

    //Click Event for Add
    $('#AddReminder').unbind('click');
    $('#AddReminder').click(function(e) {
        $('#lblAddReminderType').append('<div id="lblAddReminderType' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<select name="AddReminderType" id="AddReminderType' + ReminderId + '"><option value="POPUP" selected="true">Pop-up</option><option value="EMAIL">Email</option></select>');
        $('#lblAddReminderTime').append('<div id="lblAddReminderTime' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<input type="text" name="AddReminderTime" id="AddReminderTime' + ReminderId + '" value="10" />');
        $('#lblAddReminderScale').append('<div id="lblAddReminderScale' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<select name="AddReminderScale" id="AddReminderScale' + ReminderId + '"><option value="MINUTES" selected="true">Minutes</option><option value="HOURS">Hours</option><option value="DAYS">Days</option><option value="WEEKS">Weeks</option></select>');
        $('#lblAddRemoveReminder').append('<div id="lblAddRemoveReminder' + ReminderId + '" style="height:20px;padding-left:10px;">' + '<img  class="RemoveEventReminder" src="../../Content/Images/delete_icon.gif" onclick=RemoveEventReminder("' + ReminderId + '"); title="Remove" id="remRemove' + ReminderId + '"></img>');
        ReminderId += 1;
    });

    //Click Event for Add
    $('#btn_add_event').unbind('click');
    $('#btn_add_event').click(function(e) {
        var a_add_what = $('#add_what').val();
        var a_add_when_start_date = $('#add_when_start_date').val();
        var a_add_when_end_date = $('#add_when_end_date').val();
        var a_add_when_start_time = $('#add_when_start_time').val();
        var a_add_when_end_time = $('#add_when_end_time').val();
        var a_add_all_day = $('#add_all_day:checked').val();
        var a_add_desc = $('#add_desc').val();
        var a_add_showmeas = $('input:radio[name=add_showmeas]:checked').val(); //$('#add_showmeas:checked').val();
        var a_add_pri_pub = $('input:radio[name=add_pri_pub]:checked').val();
        var a_add_event_public = $('#add_event_public:checked').val();
        var a_AddEventPerson = $('#AddEventPerson').val();
        var a_AddEventPermissionSet = $('#AddEventPermissionSet option:selected').val();

        var a_AddReminderType = $.map($('select[name="AddReminderType"]'), function(e) {
            return $('option:selected', e).val();
        });

        var a_AddReminderScale = $.map($('select[name="AddReminderScale"]'), function(e) {
            return $('option:selected', e).val();
        });

        var a_AddReminderTime = $.map($('input:text[name="AddReminderTime"]'), function(e) {
            return $(e).val();
        });

        $('#lbl_add_Result').hide();
        $('#lbl_add_Result').val('');
        e.preventDefault();
        if ($('#add_what').val() != '') {
            $.getJSON("/Calendar/AddCalendarEvent/?t=" + new Date(), { w: a_add_what, sd: a_add_when_start_date, ed: a_add_when_end_date, st: a_add_when_start_time, et: a_add_when_end_time, all: a_add_all_day, desc: a_add_desc, cid: $.session("CalendarId"), sma: a_add_showmeas, vis: a_add_pri_pub, pub: a_add_event_public, ep: a_AddEventPerson, eps: a_AddEventPermissionSet, rty: a_AddReminderType, rti: a_AddReminderTime, rsc: a_AddReminderScale },
                function(data) {
                    if (data != null) {
                        if (data == true) {
                            $('#lblMessage').html("Your event was created.");
                            $('#calendar').fullCalendar('refetchEvents');
                            $('#addEvent').dialog('close');
                            $('#addEvent').datepicker('hide');
                        }
                    }
                });
        }
        else {
            $('#lbl_add_Result').show();
            $('#lbl_add_Result').html("<b>Please enter the Event.</b>");
        }
    });
}

//Show Edit Event Popup
function editEventShow(event) {
    //set time picker for the Time Controls
    $('#edit_when_start_time').ptTimeSelect();
    $('#edit_when_end_time').ptTimeSelect();
    $('#lbl_edit_Result').hide();
    $('#editEvent').dialog('open');
    $('#edit_event_id').val(event.id);
    $('#editEvent').dialog('option', 'title', event.title);
    $('#edit_what').val(event.title);
    $('#edit_desc').val(event.Description);
    $('#edit_when_start_date').val(dateFormat(event.start, "mm/dd/yyyy"));
    if (event.end == null) {
        $('#edit_when_end_date').val(dateFormat(event.start, "mm/dd/yyyy"));
    }
    else {
        $('#edit_when_end_date').val(dateFormat(event.end, "mm/dd/yyyy"));
    }
    $('#edit_all_day').attr('checked', event.allDay);
    if (event.allDay) {
        $('#edit_when_start_time').val('');
        $('#edit_when_end_time').val('');
    }
    else {
        $('#edit_when_start_time').val(dateFormat(event.start, "h:MM TT"));
        $('#edit_when_end_time').val(dateFormat(event.end, "h:MM TT"));
    }
    var eventAccesstype = event.EventAccess;
    if (eventAccesstype == "0") {
        $('#edit_event_public').attr('checked', false);
        $('#edit_private').attr('checked', true);
        $('#edit_public').attr('checked', false);
    }
    else if (eventAccesstype == "1") {
        $('#edit_event_public').attr('checked', true);
        $('#edit_private').attr('checked', false);
        $('#edit_public').attr('checked', true);
    }

    var eventOption = event.EventOption;
    if (eventOption == "0") {
        $('#edit_available').attr('checked', true);
        $('#edit_busy').attr('checked', false);
    }
    else if (eventOption == "1") {
        $('#edit_available').attr('checked', false);
        $('#edit_busy').attr('checked', true);
    }
    var a_add_showmeas = $('input:radio[name=add_showmeas]:checked').val();

    //Event Reminders
    //Initialize the Reminder Value;
    ReminderId = 1;
    //Clear the Details
    $('#lblEditReminderType > div').remove();
    $('#lblEditReminderTime > div').remove();
    $('#lblEditReminderScale > div').remove();
    $('#lblEditRemoveReminder > div').remove();

    $.getJSON("/Calendar/GetAllCalEventReminder/?t=" + new Date(), { eid: event.id },
        function(data) {
            if (data != null) {
                for (i in data) {
                    var calEventReminder = data[i];
                    if (calEventReminder.ReminderType == '0') {
                        $('#lblEditReminderType').append('<div id="lblEditReminderType' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderType" id="EditReminderType' + ReminderId + '"><option value="POPUP" selected="true">Pop-up</option><option value="EMAIL">Email</option></select>');
                    }
                    else if (calEventReminder.ReminderType == '1') {
                        $('#lblEditReminderType').append('<div id="lblEditReminderType' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderType" id="EditReminderType' + ReminderId + '"><option value="POPUP">Pop-up</option><option value="EMAIL" selected="true">Email</option></select>');
                    }

                    $('#lblEditReminderTime').append('<div id="lblEditReminderTime' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<input type="text" name="EditReminderTime" id="EditReminderTime' + ReminderId + '" value="' + calEventReminder.ReminderTime + '" />');
                    if (calEventReminder.ReminderScale == '0') {
                        $('#lblEditReminderScale').append('<div id="lblEditReminderScale' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderScale" id="EditReminderScale' + ReminderId + '"><option value="MINUTES" selected="true">Minutes</option><option value="HOURS">Hours</option><option value="DAYS">Days</option><option value="WEEKS">Weeks</option></select>');
                    }
                    else if (calEventReminder.ReminderScale == '1') {
                        $('#lblEditReminderScale').append('<div id="lblEditReminderScale' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderScale" id="EditReminderScale' + ReminderId + '"><option value="MINUTES">Minutes</option><option value="HOURS" selected="true">Hours</option><option value="DAYS">Days</option><option value="WEEKS">Weeks</option></select>');
                    }
                    else if (calEventReminder.ReminderScale == '2') {
                        $('#lblEditReminderScale').append('<div id="lblEditReminderScale' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderScale" id="EditReminderScale' + ReminderId + '"><option value="MINUTES">Minutes</option><option value="HOURS">Hours</option><option value="DAYS" selected="true">Days</option><option value="WEEKS">Weeks</option></select>');
                    }
                    else if (calEventReminder.ReminderScale == '3') {
                        $('#lblEditReminderScale').append('<div id="lblEditReminderScale' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderScale" id="EditReminderScale' + ReminderId + '"><option value="MINUTES">Minutes</option><option value="HOURS">Hours</option><option value="DAYS">Days</option><option value="WEEKS" selected="true">Weeks</option></select>');
                    }

                    $('#lblEditRemoveReminder').append('<div id="lblEditRemoveReminder' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<img  class="RemoveEventReminder" src="../../Content/Images/delete_icon.gif" onclick=RemoveEditEventReminder("' + ReminderId + '"); title="Remove" id="iRemove' + ReminderId + '"></img>');
                    ReminderId += 1;
                }
            }
        });

    //Event Access
    //Clear the Details -- Commented
    //    $('#lblEditEventPerson > div').remove();
    //    $('#lblEditEventPermissionSet > div').remove();
    //    $('#lblEditEventRemovePermission > div').remove();
    //    
    //    $.getJSON("/Calendar/GetAllCalEventAccess/?t=" + new Date(), {eid:event.id},
    //        function(data) {
    //            if (data != null) {
    //                for (i in data) {
    //                    var calEventAccess = data[i];
    //                    $('#lblEditEventPerson').append('<div id="lblEditEventPerson'+ calEventAccess.EventAccessId +'" style="height:20px;padding-left:10px;">' + calEventAccess.UserDetails.FirstName + " " + calEventAccess.UserDetails.LastName + " [" + calEventAccess.UserDetails.SubDomain + "]");
    //                    if(calEventAccess.PermissionSet == '0')
    //                    {
    //                        $('#lblEditEventPermissionSet').append('<div id="lblEditEventPermissionSet'+ calEventAccess.EventAccessId +'" style="height:20px;padding-left:10px;">' + 'VIEW');
    //                    }
    //                    else if(calEventAccess.PermissionSet == '1')
    //                    {
    //                        $('#lblEditEventPermissionSet').append('<div id="lblEditEventPermissionSet'+ calEventAccess.EventAccessId +'" style="height:20px;padding-left:10px;">' + 'MODIFY');
    //                    }
    //                    $('#lblEditEventRemovePermission').append('<div id="lblEditEventRemovePermission'+ calEventAccess.EventAccessId +'" style="height:20px;padding-left:10px;">' + '<img  class="RemoveEventAccess" src="../../Content/Images/delete_icon.gif" onclick=RemoveEditEventAccess("'+calEventAccess.EventAccessId +'"); title="Remove" id="iRemove' + calEventAccess.EventAccessId + '"></img>');
    //                }
    //            }
    //    });

    //call the all day event function
    AllDayEvent();

    //Click Event for Add Reminder in Edit
    $('#AddEditReminder').unbind('click');
    $('#AddEditReminder').click(function(e) {
        $('#lblEditReminderType').append('<div id="lblEditReminderType' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderType" id="EditReminderType' + ReminderId + '"><option value="POPUP" selected="true">Pop-up</option><option value="EMAIL">Email</option></select>');
        $('#lblEditReminderTime').append('<div id="lblEditReminderTime' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<input type="text" name="EditReminderTime" id="EditReminderTime' + ReminderId + '" value="10" />');
        $('#lblEditReminderScale').append('<div id="lblEditReminderScale' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<select name="EditReminderScale" id="EditReminderScale' + ReminderId + '"><option value="MINUTES" selected="true">Minutes</option><option value="HOURS">Hours</option><option value="DAYS">Days</option><option value="WEEKS">Weeks</option></select>');
        $('#lblEditRemoveReminder').append('<div id="lblEditRemoveReminder' + ReminderId + '" style="height:20px;pEditing-left:10px;">' + '<img  class="RemoveEventReminder" src="../../Content/Images/delete_icon.gif" onclick=RemoveEditEventReminder("' + ReminderId + '"); title="Remove" id="remRemove' + ReminderId + '"></img>');
        ReminderId += 1;
    });

    //Add Person Script
    $('#btn_edit_event_add_person').unbind('click');
    $('#btn_edit_event_add_person').click(function(e) {
        var a_share_permission = $('#EditEventPermissionSet option:selected').val();
        var a_person = $('#EditEventPerson').val();
        var a_edit_event_id = $('#edit_event_id').val();

        $('#lbl_edit_Result').hide();
        $('#lbl_edit_Result').val('');
        e.preventDefault();
        if ($('#EditEventPerson').val() != '') {
            $.getJSON("/Calendar/AddCalEventAccess/?t=" + new Date(), { sp: a_share_permission, p: a_person, cid: $.session("CalendarId"), eid: a_edit_event_id },
                function(data) {
                    if (data != null) {
                        if (data.OperationStatus == '0') {
                            //$('#lblMessage').html("Your event was updated.");
                            $('#lblEditEventPerson').append('<div id="lblEditEventPerson' + data.EventAccessId + '" style="height:20px;padding-left:10px;">' + $('#EditEventPerson').val());
                            if (data.PermissionSet == '0') {
                                $('#lblEditEventPermissionSet').append('<div id="lblEditEventPermissionSet' + data.EventAccessId + '" style="height:20px;padding-left:10px;">' + 'VIEW');
                            }
                            else if (data.PermissionSet == '1') {
                                $('#lblEditEventPermissionSet').append('<div id="lblEditEventPermissionSet' + data.EventAccessId + '" style="height:20px;padding-left:10px;">' + 'MODIFY');
                            }
                            $('#lblEditEventRemovePermission').append('<div id="lblEditEventRemovePermission' + data.EventAccessId + '" style="height:20px;padding-left:10px;">' + '<img  class="RemoveCalAccess" src="../../Content/Images/delete_icon.gif" onclick=RemoveEditEventAccess("' + data.EventAccessId + '"); title="Remove" id="iRemove' + data.EventAccessId + '"></img>');
                            $('#share_user_id').val('');
                            $('#EditEventPermissionSet option:selected').val('VIEW');
                            $('#EditEventPerson').val('');
                        }
                    }
                });
        }
        else {
            $('#lbl_edit_Result').show();
            $('#lbl_edit_Result').html("<b>Please enter the Person.</b>");
        }
    });

    //Click Event for Edit
    $('#btn_edit_event').unbind('click');
    $('#btn_edit_event').click(function(e) {
        var a_edit_event_id = $('#edit_event_id').val();
        var a_edit_what = $('#edit_what').val();
        var a_edit_when_start_date = $('#edit_when_start_date').val();
        var a_edit_when_end_date = $('#edit_when_end_date').val();
        var a_edit_when_start_time = $('#edit_when_start_time').val();
        var a_edit_when_end_time = $('#edit_when_end_time').val();

        var a_edit_all_day = $('#edit_all_day:checked').val();
        var a_edit_desc = $('#edit_desc').val();
        var a_edit_pri_pub = $('input:radio[name=edit_pri_pub]:checked').val();
        var a_edit_showmeas = $('input:radio[name=edit_showmeas]:checked').val(); //$('#add_showmeas:checked').val();
        var a_edit_event_public = $('#edit_event_public:checked').val();

        var a_EditReminderType = $.map($('select[name="EditReminderType"]'), function(e) {
            return $('option:selected', e).val();
        });

        var a_EditReminderScale = $.map($('select[name="EditReminderScale"]'), function(e) {
            return $('option:selected', e).val();
        });

        var a_EditReminderTime = $.map($('input:text[name="EditReminderTime"]'), function(e) {
            return $(e).val();
        });

        $('#lbl_edit_Result').hide();
        $('#lbl_edit_Result').val('');
        e.preventDefault();
        if ($('#edit_what').val() != '') {
            $.getJSON("/Calendar/UpdateCalendarEvent/?t=" + new Date(), { eid: a_edit_event_id, w: a_edit_what, sd: a_edit_when_start_date, ed: a_edit_when_end_date, st: a_edit_when_start_time, et: a_edit_when_end_time, all: a_edit_all_day, desc: a_edit_desc, cid: $.session("CalendarId"), sma: a_edit_showmeas, vis: a_edit_pri_pub, pub: a_edit_event_public, rty: a_EditReminderType, rti: a_EditReminderTime, rsc: a_EditReminderScale },
                function(data) {
                    if (data != null) {
                        if (data == true) {
                            $('#lblMessage').html("Your event was updated.");
                            $('#calendar').fullCalendar('refetchEvents');
                            $('#editEvent').dialog('close');
                        }
                    }
                });
        }
        else {
            $('#lbl_edit_Result').show();
            $('#lbl_edit_Result').html("<b>Please enter the Event.</b>");
        }
    });

    //dialog box for Delete event div
    $('#btn_delete_event').unbind('click');
    $('#btn_delete_event').click(function(e) {
        var a_delete_event_id = $('#edit_event_id').val();

        $('#lbl_edit_Result').hide();
        $('#lbl_edit_Result').val('');
        e.preventDefault();
        $.getJSON("/Calendar/DeleteCalendarEvent/?t=" + new Date(), { eid: a_delete_event_id },
            function(data) {
                if (data != null) {
                    if (data == true) {
                        $('#lblMessage').html("Your event was deleted.");
                        $('#calendar').fullCalendar('removeEvents', a_delete_event_id);
                        $('#editEvent').dialog('close');
                    }
                }
            });
    });
}

//Show Event Details Popup
function ShowEventDetails(event, e) {
    var windowWidth = screen.width;
    var windowHeight = screen.height;
    var pTop = e.pageY || e.clientY;
    var pLeft = e.pageX || e.clientX;
    if (pLeft > windowWidth - 450) {
        pLeft = pLeft - 240;
    }
    if (pTop > windowHeight - 90) {
        pTop = pTop - 100;
    }
    var v_view_time = "";
    if (event.allDay) {
        if (event.end == null) {
            v_view_time = dateFormat(event.start, "ddd, mmm d, yyyy") + " - " + dateFormat(event.start, "ddd, mmm d, yyyy");
        }
        else {
            v_view_time = dateFormat(event.start, "ddd, mmm d, yyyy") + " - " + dateFormat(event.end, "ddd, mmm d, yyyy");
        }

    }
    else {
        if (event.end == null) {
            v_view_time = dateFormat(event.start, "ddd, mmm d, yyyy") + ", " + dateFormat(event.start, "h:MM TT") + " - " + dateFormat(event.start, "ddd, mmm d, yyyy") + ", " + dateFormat(event.start, "h:MM TT");
        }
        else {
            v_view_time = dateFormat(event.start, "ddd, mmm d, yyyy") + ", " + dateFormat(event.start, "h:MM TT") + " - " + dateFormat(event.end, "ddd, mmm d, yyyy") + ", " + dateFormat(event.end, "h:MM TT");
        }
    }
    $('#view_what').html(event.title);
    $('#view_time').html(v_view_time);
    $('#view_desc').html(event.desc);
    $('#event_details').css({ left: pLeft, top: pTop }).show().fadeIn();
}

//Hide Event Details Popup
function HideEventDetails(event, e) {
    $('#event_details').hide();
}

//Show/Hide time selction based on All Day checkbox
function AllDayEvent() {
    if ($('#add_all_day') != null && $('#add_all_day:checked').val() != undefined) {
        $('#add_when_start_time').hide();
        $('#add_when_end_time').hide();
    }
    else if ($('#add_all_day') != null && $('#add_all_day:checked').val() == undefined) {
        $('#add_when_start_time').show();
        $('#add_when_end_time').show();
    }
    if ($('#edit_all_day') != null && $('#edit_all_day:checked').val() != undefined) {
        $('#edit_when_start_time').hide();
        $('#edit_when_end_time').hide();
    }
    else if ($('#edit_all_day') != null && $('#edit_all_day:checked').val() == undefined) {
        $('#edit_when_start_time').show();
        $('#edit_when_end_time').show();
    }
}

function RemoveAddEventAccess(ei) {
    //$('#lblMessage').html("Access to the User removed.");
    $('#lblAddEventPerson' + ei).remove();
    $('#lblAddEventPermissionSet' + ei).remove();
    $('#lblAddEventRemovePermission' + ei).remove();
}

function RemoveEventReminder(ri) {
    ReminderId -= 1;
    $('#lblAddReminderType' + ri).remove();
    $('#lblAddReminderTime' + ri).remove();
    $('#lblAddReminderScale' + ri).remove();
    $('#lblAddRemoveReminder' + ri).remove();
}

function RemoveEditEventReminder(ri) {
    ReminderId -= 1;
    $('#lblEditReminderType' + ri).remove();
    $('#lblEditReminderTime' + ri).remove();
    $('#lblEditReminderScale' + ri).remove();
    $('#lblEditRemoveReminder' + ri).remove();
}

function RemoveEditEventAccess(eai) {
    $.getJSON("/Calendar/DeleteCalEventAccess/?t=" + new Date(), { eai: eai },
        function(data) {
            if (data != null) {
                if (data == true) {
                    //$('#lblMessage').html("Access to the User removed.");
                    $('#lblEditEventPerson' + eai).remove();
                    $('#lblEditEventPermissionSet' + eai).remove();
                    $('#lblEditEventRemovePermission' + eai).remove();
                }
            }
        });
}

function BuildCalendarSettings() {
    //Generate the Tabs
    $("#calsettingstabs").tabs();

    //Get the Calendar Settings
    $.getJSON("/Calendar/GetCalendarSettings/?t=" + new Date(),
    {
        calendarId: $.session("CalendarId")
    },
        function(result) {
            if (result != null) {
                $('#CalendarName').val(result.CalendarName);
                $('#CalendarOwner').html(result.CalendarOwner);
                $('#CalendarDesc').val(result.CalendarDesc);
                $('#TimeZone').html(result.TimeZone);
                //                //Fill TimeZone
                //var calTimeZone = result.TimeZone;
                //                 $.getJSON("/Calendar/GetAllTimeZones/?t=" + new Date(), {},
                //                    function(data) {
                //                        if (data != null) {
                //                            var options = '';
                //                            for (var i = 0; i < data.length; i++) {
                //                                if(calTimeZone == data[i].TimeZoneValue)
                //                                {
                //                                    options += '<option value="' + data[i].TimeZoneValue + '" selected="true">' + data[i].TimeZoneText + '</option>';
                //                                }
                //                                else
                //                                {
                //                                    options += '<option value="' + data[i].TimeZoneValue + '">' + data[i].TimeZoneText + '</option>';
                //                                }
                //                            }
                //                            $("select#TimeZone").html(options);
                //                        }
                //                });

                //Calendar Access/share details
                var calAccesstype = result.CalendarAccessType;
                if (calAccesstype == "0") {
                    $('#cal_public').attr('checked', false);
                }
                else if (calAccesstype == "1") {
                    $('#cal_public').attr('checked', true);
                }
                //Populate the Access to the other Users List

                //Clear the Details
                $('#lblPerson > div').remove();
                $('#lblPermissionSet > div').remove();
                $('#lblRemovePermission > div').remove();

                //Populate the Owner Details
                $('#lblPerson').append('<div style="height:20px;padding-left:10px;">' + result.CalendarOwner);
                $('#lblPermissionSet').append('<div style="height:20px;padding-left:10px;">' + 'MODIFY');
                $('#lblRemovePermission').append('<div style="height:20px;padding-left:10px;">' + '');

                if (result.CalendarAccessList != null) {
                    for (i in result.CalendarAccessList) {
                        var calAccess = result.CalendarAccessList[i];
                        $('#lblPerson').append('<div id="lblPerson' + calAccess.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + calAccess.UserDetails.FirstName + " " + calAccess.UserDetails.LastName + " [" + calAccess.UserDetails.SubDomain + "]");
                        if (calAccess.PermissionSet == '0') {
                            $('#lblPermissionSet').append('<div id="lblPermissionSet' + calAccess.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + 'VIEW');
                        }
                        else if (calAccess.PermissionSet == '1') {
                            $('#lblPermissionSet').append('<div id="lblPermissionSet' + calAccess.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + 'MODIFY');
                        }
                        $('#lblRemovePermission').append('<div id="lblRemovePermission' + calAccess.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + '<img  class="RemoveCalAccess" src="../../Content/Images/delete_icon.gif" onclick=RemoveCalAccess("' + calAccess.CalendarAccessId + '"); title="Remove" id="iRemove' + calAccess.CalendarAccessId + '"></img>');
                    }
                }
            }
        });

    //Get the Users list for autocomplete
    $.getJSON("/Calendar/GetAllUsers/?t=" + new Date(), {},
        function(data) {
            if (data != null) {
                $("#Person").autocomplete(data, { max: 50,
                    formatItem: function(row) {
                        return row.FirstName + " " + row.LastName + " [" + row.SubDomain + "]";
                    },
                    formatResult: function(row) {
                        $('#share_user_id').val(row.UserId);
                        return row.FirstName + " " + row.LastName + " [" + row.SubDomain + "]";
                    }
                });
            }
        });

    //Add Person Script
    $('#btn_add_person').unbind('click');
    $('#btn_add_person').click(function(e) {
        var a_share_user_id = $('#share_user_id').val();
        var a_share_permission = $('#PermissionSet option:selected').val();
        var a_person = $('#Person').val();

        $('#lbl_share_result').hide();
        $('#lbl_share_result').val('');
        e.preventDefault();
        if ($('#Person').val() != '') {
            $.getJSON("/Calendar/AddCalendarAccess/?t=" + new Date(), { uid: a_share_user_id, sp: a_share_permission, p: a_person, cid: $.session("CalendarId") },
                function(data) {
                    if (data != null) {
                        if (data.OperationStatus == '0') {
                            //$('#lblMessage').html("Your event was updated.");
                            $('#lblPerson').append('<div id="lblPerson' + data.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + $('#Person').val());
                            if (data.PermissionSet == '0') {
                                $('#lblPermissionSet').append('<div id="lblPermissionSet' + data.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + 'VIEW');
                            }
                            else if (data.PermissionSet == '1') {
                                $('#lblPermissionSet').append('<div id="lblPermissionSet' + data.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + 'MODIFY');
                            }
                            //$('#lblPermissionSet').append('<div id="lblPermissionSet'+ data.CalendarAccessId +'" style="height:20px;padding-left:10px;">' + data.PermissionSet);
                            $('#lblRemovePermission').append('<div id="lblRemovePermission' + data.CalendarAccessId + '" style="height:20px;padding-left:10px;">' + '<img  class="RemoveCalAccess" src="../../Content/Images/delete_icon.gif" onclick=RemoveCalAccess("' + data.CalendarAccessId + '"); title="Remove" id="iRemove' + data.CalendarAccessId + '"></img>');
                            $('#share_user_id').val('');
                            $('#PermissionSet option:selected').val('VIEW');
                            $('#Person').val('');
                        }
                    }
                });
        }
        else {
            $('#lbl_share_result').show();
            $('#lbl_share_result').html("<b>Please enter the Person.</b>");
        }
    });

    //Save Calendar Settings
    $('#btn_save_cal_set').unbind('click');
    $('#btn_save_cal_set').click(function(e) {
        var a_cal_name = $('#CalendarName').val();
        var a_cal_desc = $('#CalendarDesc').val();
        var a_TimeZone = $('#TimeZone option:selected').val();

        $('#lbl_CalSetDetails_Result').hide();
        $('#lbl_CalSetDetails_Result').val('');
        e.preventDefault();
        if ($('#CalendarName').val() != '') {
            $.getJSON("/Calendar/UpdateCalendarDetails/?t=" + new Date(), { cn: a_cal_name, cd: a_cal_desc, tz: a_TimeZone, cid: $.session("CalendarId") },
                function(data) {
                    if (data != null) {
                        if (data.OperationStatus == '0') {
                            $('#lblMessage').html("Calendar settings updated.");
                        }
                    }
                });
        }
        else {
            $('#lbl_CalSetDetails_Result').show();
            $('#lbl_CalSetDetails_Result').html("<b>Please enter the Event.</b>");
        }
    });

    //Update Calendar Access Settings
    $('#btn_cal_share_save').unbind('click');
    $('#btn_cal_share_save').click(function(e) {
        var a_cal_public = $('#cal_public:checked').val();

        e.preventDefault();
        $.getJSON("/Calendar/UpdateCalendarAccessType/?t=" + new Date(), { pub: a_cal_public, cid: $.session("CalendarId") },
            function(data) {
                if (data != null) {
                    if (data.OperationStatus == '0') {
                        $('#lblMessage').html("Calendar settings updated.");
                    }
                }
            });
    });
}

function RemoveCalAccess(cai) {
    $.getJSON("/Calendar/DeleteCalAccess/?t=" + new Date(), { cai: cai },
        function(data) {
            if (data != null) {
                if (data == true) {
                    //$('#lblMessage').html("Access to the User removed.");
                    $('#lblPerson' + cai).remove();
                    $('#lblPermissionSet' + cai).remove();
                    $('#lblRemovePermission' + cai).remove();
                }
            }
        });
}

function UserCalendar() {
    var d = new Date();
    var y = d.getFullYear();
    var m = d.getMonth();
    //Populate and Show Calendar
    $('#calendar').fullCalendar({
        theme: true,
        editable: false,
        disableDragging: true,
        disableResizing: true,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        events: function(start, end, callback) {
            // do some asynchronous ajax
            contentType: "application/json; charset=utf-8",
            $.getJSON("/User/GetEvents/?t=" + new Date(),
                    {
                        start: dateFormat(start.getTime()),
                        end: dateFormat(end.getTime())
                    },
                    function(result) {
                        if (result != null) {
                            for (i in result) {
                                var calEvent = result[i];
                                calEvent.date = dateFormat(calEvent.date, "yyyy-mm-dd'T'HH:MM:ss");
                                calEvent.start = dateFormat(calEvent.start, "yyyy-mm-dd'T'HH:MM:ss");
                                calEvent.end = dateFormat(calEvent.end, "yyyy-mm-dd'T'HH:MM:ss");
                                //calEvent.date = new Date(parseInt(calEvent.date.replace("/Date(", "").replace(")/", ""), 10));
                                //calEvent.start = new Date(parseInt(calEvent.start.replace("/Date(", "").replace(")/", ""), 10));
                                //calEvent.end = new Date(parseInt(calEvent.end.replace("/Date(", "").replace(")/", ""), 10));
                            }
                        }

                        var calevents = result;
                        // then, pass the CalEvent array to the callback
                        callback(calevents);

                    });

        },
        eventMouseover: function(event, e) {
            ShowEventDetails(event, e);
        },
        eventMouseout: function(event, e) {
            HideEventDetails(event, e);
        }
    });

    //Show Event Details Popup
    function ShowEventDetails(event, e) {
        var windowWidth = screen.width;
        var windowHeight = screen.height;
        var pTop = e.pageY || e.clientY;
        var pLeft = e.pageX || e.clientX;
        if (pLeft > windowWidth - 450) {
            pLeft = pLeft - 240;
        }
        if (pTop > windowHeight - 90) {
            pTop = pTop - 100;
        }
        var v_view_time = "";
        if (event.allDay) {
            v_view_time = dateFormat(event.start, "ddd, mmm d, yyyy") + " - " + dateFormat(event.end, "ddd, mmm d, yyyy");
        }
        else {
            v_view_time = dateFormat(event.start, "ddd, mmm d, yyyy") + ", " + dateFormat(event.start, "h:MM TT") + " - " + dateFormat(event.end, "ddd, mmm d, yyyy") + ", " + dateFormat(event.end, "h:MM TT");
        }
        $('#view_what').html(event.title);
        $('#view_time').html(v_view_time);
        $('#view_desc').html(event.desc);
        $('#event_details').css({ left: pLeft, top: pTop }).show().fadeIn();
    }
    //Hide Event Details Popup
    function HideEventDetails(event, e) {
        $('#event_details').hide();
    }
}
