function constructSpecialTable(targetTableID) { var currentElement = $('#'+targetTableID); var parentHeight = currentElement.parent().height(); var convertHeader = false; var convertFooter = false; if (currentElement.find('thead').length) convertHeader = true; if (currentElement.find('tfoot').length) convertFooter = true; currentElement.addClass('spt_table'); if (convertHeader) { var currentHeaderClone = currentElement.clone(); currentHeaderClone.find('tbody').remove(); currentHeaderClone.find('tfoot').remove(); } if (convertFooter) { var currentFooterClone = currentElement.clone(); currentFooterClone.find('tbody').remove(); currentFooterClone.find('thead').remove(); } currentContainer = $('
'); currentElement.before(currentContainer); currentElement.detach().appendTo(currentContainer.find('.spt_table_container_2')); if (convertHeader) { currentElement.find('thead th, thead td').each(function(index, element) { var currentChild = $(element); currentHeaderClone.find('thead th, thead td').eq(index).css('width', currentChild.width()); }); currentHeaderClone.addClass('spt_table_header'); currentHeaderClone.width(currentElement.width()); currentHeaderClone.removeAttr('id'); currentContainer.prepend(currentHeaderClone); currentElement.find('thead').css('visibility', 'hidden'); currentElement.find('thead input, thead select').attr('disabled', true); } if (convertFooter) { currentElement.find('tfoot th, tfoot td').each(function(index, element) { var currentChild = $(element); currentFooterClone.find('tfoot th, tfoot td').eq(index).css('width', currentChild.width()); }); currentFooterClone.addClass('spt_table_footer'); currentFooterClone.width(currentElement.width()); currentFooterClone.removeAttr('id'); currentContainer.append(currentFooterClone); currentElement.find('tfoot').css('visibility', 'hidden'); currentElement.find('tfoot input, tfoot select').attr('disabled', true); } } function updateSpecialTable(targetTableID) { var currentElement = $('#'+targetTableID); var convertHeader = false; var convertFooter = false; if (currentElement.find('thead').length) convertHeader = true; if (currentElement.find('tfoot').length) convertFooter = true; var currentContainer = currentElement.parentsUntil('.spt_table_container_0').parent(); var parentHeight = currentContainer.parent().height(); var currentHeaderClone = currentContainer.find('.spt_table_header'); var currentFooterClone = currentContainer.find('.spt_table_footer'); if (convertHeader) { currentElement.find('thead th, thead td').each(function(index, element) { var currentChild = $(element); currentHeaderClone.find('thead th, thead td').eq(index).css('width', currentChild.width()); }); currentHeaderClone.width(currentElement.width()); } if (convertFooter) { currentElement.find('tfoot th, tfoot td').each(function(index, element) { var currentChild = $(element); currentFooterClone.find('tfoot th, tfoot td').eq(index).css('width', currentChild.width()); }); currentFooterClone.width(currentElement.width()); } currentElement.parentsUntil('.spt_table_container_1').parent().css('height', parentHeight+'px'); } var blockInterfaceCount = 0; function blockInterface() { blockInterfaceCount++; if (blockInterfaceCount == 1) $('.blockui_overlay').show(); } function unblockInterface() { blockInterfaceCount--; if (blockInterfaceCount == 0) $('.blockui_overlay').hide(); } function displayModal(currentTitle, currentMessage) { var messageContainer = $('#user_message_container'); messageContainer.html(currentMessage); messageContainer.dialog({ closeOnEscape: true, modal: true, height: 'auto', width: 500, minWidth: 0, minHeight: 0, title: currentTitle, buttons: { 'Close': function() { $(this).dialog("close"); } } }); } function displayMessageError(currentContainer, currentMessage) { $('#'+currentContainer).html('
'+currentMessage+'
'); $(window).scrollTop($('#'+currentContainer).offset().top); } function displayMessageSuccess(currentContainer, currentMessage) { $('#'+currentContainer).html('
'+currentMessage+'
'); $(window).scrollTop($('#'+currentContainer).offset().top); } function constructModalAlert(currentTitle, currentMessage) { $('#document_modal').html(currentMessage); $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': { 'Close': function() { $(this).dialog("close"); } }, 'open': function() { $('.ui-dialog-titlebar-close').hide(); }, 'closeOnEscape': false, 'title': currentTitle }); } function constructModalConfirm(currentTitle, currentMessage, buttonConfirm, buttonCancel, callbackFunctionConfirm, callbackFunctionCancel) { $('#document_modal').html(currentMessage); var buttonObject = {}; buttonObject[buttonConfirm] = function() { if (typeof callbackFunctionConfirm != 'undefined') callbackFunctionConfirm(); $(this).dialog("close"); } buttonObject[buttonCancel] = function() { if (typeof callbackFunctionCancel != 'undefined') callbackFunctionCancel(); $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); }, 'closeOnEscape': false, 'title': currentTitle }); } function generateClockRequestSingle(clockUserID, clockRequest, clockUserManagement) { if (clockRequest == 'start') var clockRequestType = 'Clock In'; else var clockRequestType = 'Clock Out'; $('#document_modal').html('\
\
\ \ \ '+clockRequestType+' Type\
\ \
\ \ '+clockRequestType+' Comment\
\ \
\
\ '); $('#clock_user_date').datetimepicker({ dateFormat: 'yy-mm-dd' }); var buttonObject = {}; buttonObject[clockRequestType] = function() { var requestData = $('#clock_request_form').serialize(); $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=store_clock_request_single', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').dialog('close'); displayModal(clockRequestType, 'Operation completed successfully.'); if (clockUserManagement == false) { var triggerElement = $('#clock_request_trigger'); if (triggerElement.length) { triggerElement.unbind('click'); if (clockRequest == 'start') { triggerElement.val('Clock Out'); triggerElement.click(function() { generateClockRequestSingle(clockUserID, 'stop', false); }); } else { triggerElement.val('Clock In'); triggerElement.click(function() { generateClockRequestSingle(clockUserID, 'start', false); }); } } } else generateUserManagement(); } else displayMessageError('um_clock_message', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } buttonObject['Close'] = function() { $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); }, 'closeOnEscape': false, 'title': clockRequestType }); } function toggleClockUserDate(clockType) { if (clockType == 'late') $('#clock_user_date_container').show(); else $('#clock_user_date_container').hide(); } var clockFilterComplete = false; var clockFilterDateStart = false; var clockFilterDateStop = false; function generateClockManagement(userID) { clockFilterComplete = false; $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=generate_clock_management', data: { id_user: userID }, beforeSend: function() { $('#um_user_edit_container').fadeOut(500); blockInterface(); }, success: function(ajaxData) { unblockInterface(); $('#um_user_edit_container').html(ajaxData); $('#um_user_edit_container').fadeIn(500); }, dataType: 'html' }); } function generateClockManagementTable() { var requestData = $('#clock_filter_form').serialize(); $('#um_user_message').html(''); $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=generate_clock_management_table', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { unblockInterface(); if (ajaxData.request_success) { clockFilterComplete = true; clockFilterDateStart = $('#clock_filter_date_start').val(); clockFilterDateStop = $('#clock_filter_date_stop').val(); $('#clock_management_container').html(ajaxData.response_html); } else displayMessageError('um_user_message', ajaxData.request_response.join('
')); }, dataType: 'json' }); } function refreshClockManagementTable() { if (clockFilterComplete) { $('#clock_filter_date_start').val(clockFilterDateStart); $('#clock_filter_date_stop').val(clockFilterDateStop); generateClockManagementTable(); } } function generateClockRequestComplete(clockUserID) { $('#document_modal').html('\
\
\ \ Clock In Date\
\ \
\ Clock Out Date\
\ \
\ Clock In Comment\
\ \
\ Clock Out Comment\
\ \
\
\ '); $('#clock_user_date_start').datetimepicker({ dateFormat: 'yy-mm-dd' }); $('#clock_user_date_stop').datetimepicker({ dateFormat: 'yy-mm-dd' }); var buttonObject = {}; buttonObject['Store Session'] = function() { var requestData = $('#clock_request_form').serialize(); $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=store_clock_request_complete', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').dialog('close'); refreshClockManagementTable(); displayModal('Add Clock Segment', 'Operation completed successfully.'); } else displayMessageError('um_clock_message', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } buttonObject['Close'] = function() { $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); }, 'closeOnEscape': false, 'title': 'Add Clock Segment' }); } function generateClockEdit(clockID) { $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=generate_clock_edit', data: { 'id_clock': clockID }, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').html('\
\
\ \ Clock In Date\
\ \
\ Clock Out Date\
\ \
\ Clock In Comment\
\ \
\ Clock Out Comment\
\ \
\
\ '); var buttonObject = {}; buttonObject['Save Changes'] = function() { var requestData = $('#clock_request_form').serialize(); $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=edit_clock_request', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').dialog('close'); refreshClockManagementTable(); displayModal('Edit Clock Segment', 'Operation completed successfully.'); } else displayMessageError('um_clock_message', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } buttonObject['Close'] = function() { $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); $('#clock_user_date_start').datetimepicker({ dateFormat: 'yy-mm-dd' }); $('#clock_user_date_stop').datetimepicker({ dateFormat: 'yy-mm-dd' }); }, 'closeOnEscape': false, 'title': 'Edit Clock Segment' }); } else constructModalAlert('Error', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } function generateClockRemove(clockID) { constructModalConfirm( 'Delete Clock Session', 'Are you sure you want to delete this session?', 'Ok', 'Cancel', function() { $.ajax({ type: 'post', url: 'kb_request/kb_clock_management.php?request_action=remove_clock_request', data: { 'id_clock': clockID }, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { unblockInterface(); if (ajaxData.request_success) { refreshClockManagementTable(); constructModalAlert('Success', 'Clock session removed successfully!'); } else constructModalAlert('Error', ajaxData.request_response.join('
')); }, dataType: 'json' }); }, function() {} ); } function generateUserTimetable(timetableUserID) { $('#document_modal').html('\
\
\ \ Timetable Month\
\ \
\ Timetable Type\
\ \
\
\ '); var buttonObject = {}; buttonObject['Display Timetable'] = function() { var requestData = $('#timetable_request_form').serialize(); $.ajax({ type: 'post', url: 'kb_request/kb_timetable.php?request_action=construct_user_timetable', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#um_user_edit_container').html(ajaxData.response_html); $('#um_user_edit_container').fadeIn(500); $('#document_modal').dialog('close'); } else displayMessageError('um_timetable_message', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } buttonObject['Close'] = function() { $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); $('#timetable_month').monthpicker({ pattern: 'yyyy-mm' }); }, 'closeOnEscape': false, 'title': 'Display User Timetable' }); } var leaveFilterComplete = false; var leaveFilterYear = false; function generateLeaveManagement(userID) { $.ajax({ type: 'post', url: 'kb_request/kb_leave_management.php?request_action=generate_leave_management', data: { id_user: userID }, beforeSend: function() { $('#um_user_edit_container').fadeOut(500); blockInterface(); }, success: function(ajaxData) { unblockInterface(); $('#um_user_edit_container').html(ajaxData); $('#um_user_edit_container').fadeIn(500); }, dataType: 'html' }); } function generateLeaveManagementTable() { var requestData = $('#leave_filter_form').serialize(); $('#um_user_message').html(''); $.ajax({ type: 'post', url: 'kb_request/kb_leave_management.php?request_action=generate_leave_management_table', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { unblockInterface(); if (ajaxData.request_success) { leaveFilterComplete = true; leaveFilterYear = $('#leave_filter_year').val(); $('#leave_management_container').html(ajaxData.response_html); } else displayMessageError('um_user_message', ajaxData.request_response.join('
')); }, dataType: 'json' }); } function refreshLeaveManagementTable() { if (leaveFilterComplete) { $('#leave_filter_year').val(leaveFilterYear); generateLeaveManagementTable(); } } function generateLeaveRequest(leaveUserID) { $('#document_modal').html('\
\
\ \ From\
\ \
\ Until\
\ \
\ Leave Type\
\ \
\ Comment\
\ \
\
\ '); var buttonObject = {}; buttonObject['Store Leave'] = function() { var requestData = $('#leave_request_form').serialize(); $.ajax({ type: 'post', url: 'kb_request/kb_leave_management.php?request_action=store_leave_request', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').dialog('close'); refreshLeaveManagementTable(); displayModal('Add Leave', 'Operation completed successfully.'); } else displayMessageError('um_leave_message', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } buttonObject['Close'] = function() { $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); $('#leave_date_start').datepicker({ dateFormat: 'yy-mm-dd' }); $('#leave_date_stop').datepicker({ dateFormat: 'yy-mm-dd' }); }, 'closeOnEscape': false, 'title': 'Add Leave' }); } function generateLeaveEdit(userLeaveID) { $.ajax({ type: 'post', url: 'kb_request/kb_leave_management.php?request_action=generate_leave_edit', data: { 'id_user_leave': userLeaveID }, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').html('\
\
\ \ From\
\ \
\ Until\
\ \
\ Leave Type\
\ \
\ Comment\
\ \
\
\ '); $('#id_leave').val(ajaxData.id_leave); var buttonObject = {}; buttonObject['Save Changes'] = function() { var requestData = $('#leave_request_form').serialize(); $.ajax({ type: 'post', url: 'kb_request/kb_leave_management.php?request_action=edit_leave_request', data: requestData, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { if (ajaxData.request_success) { $('#document_modal').dialog('close'); refreshLeaveManagementTable(); displayModal('Edit Leave', 'Operation completed successfully.'); } else displayMessageError('um_leave_message', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } buttonObject['Close'] = function() { $(this).dialog("close"); } $('#document_modal').dialog({ 'modal': true, 'minWidth': 0, 'minHeight': 0, 'buttons': buttonObject, 'open': function() { $('.ui-dialog-titlebar-close').hide(); $('#leave_date_start').datepicker({ dateFormat: 'yy-mm-dd' }); $('#leave_date_stop').datepicker({ dateFormat: 'yy-mm-dd' }); }, 'closeOnEscape': false, 'title': 'Add Leave' }); } else constructModalAlert('Error', ajaxData.request_response.join('
')); unblockInterface(); }, dataType: 'json' }); } function generateLeaveRemove(userLeaveID) { constructModalConfirm( 'Delete Leave', 'Are you sure you want to delete this?', 'Ok', 'Cancel', function() { $.ajax({ type: 'post', url: 'kb_request/kb_leave_management.php?request_action=remove_leave_request', data: { 'id_user_leave': userLeaveID }, beforeSend: function() { blockInterface(); }, success: function(ajaxData) { unblockInterface(); if (ajaxData.request_success) { refreshLeaveManagementTable(); constructModalAlert('Success', 'Leave removed successfully!'); } else constructModalAlert('Error', ajaxData.request_response.join('
')); }, dataType: 'json' }); }, function() {} ); }