$(document).ready(function () { // Live Search $.fn.liveSearch = function (option) { return this.each(function () { this.timer = null; this.items = new Array(); $.extend(this, option); $(this).attr('autocomplete', 'off'); // Blur $(this).on('blur', function () { setTimeout(function (object) { object.hide(); }, 200, this); }); // Keydown $(this).on('input', function (event) { this.request(); }); // Show this.show = function () { var pos = $('#live-search').position(); $(this).parent().parent().siblings('ul.dropdown-menu').css({ top : pos.top + $('#live-search').height(), width: $('#live-search').width(), left: pos.left }); $(this).parent().parent().siblings('ul.dropdown-menu').show(); }; // Hide this.hide = function () { $(this).parent().parent().siblings('ul.dropdown-menu').hide(); }; // Request this.request = function () { clearTimeout(this.timer); this.timer = setTimeout(function (object) { object.source($(object).val(), $.proxy(object.response, object)); }, 200, this); }; // Response this.response = function (json) { html = ''; if (json.length) { for (i = 0; i < json.length; i++) { this.items[json[i]['id']] = json[i]; } var count = json.length; for (i = 0; i < count; i++) { html += '<li data-value="' + json[i]['type'] + '-' + json[i]['id'] + '">'; html += ' <a href="' + json[i]['href'] + '">'; html += ' <div class="live-search">'; html += ' <div class="row">'; html += ' <div class="name" style="color: ' + json[i]['color'] + ';">' + json[i]['name'] + '</div>'; html += ' <span class="type">' + json[i]['type'] + '</span>'; html += ' </div>'; html += ' </div>'; html += ' </a>'; html += '</li>'; } } if (html) { this.show(); } else { this.hide(); } $(this).parent().parent().siblings('ul.dropdown-menu').html(html); }; $(this).parent().parent().after('<ul class="dropdown-menu" id="result-search" style="padding:2px 2px 2px 2px;"></ul>'); $(this).parent().parent().siblings('ul.dropdown-menu').delegate('a', 'click', $.proxy(this.click, this)); }); }; $('#live-search input[name=\'live-search\']').liveSearch({ 'source': function (request, response) { if (request != '' && request.length > 2) { $.ajax({ url : url_search, type : 'GET', dataType: 'JSON', data : 'keyword=' + $(this).val(), success : function (json) { response($.map(json, function (item) { return { id : item.id, name : item.name, type : item.type, color: item.color, href : item.href } })); } }); } else { $('#live-search > .dropdown-menu').hide(); } } }); last_radio = ''; $('input:radio').each(function () { if ($(this).parent().parent().hasClass('radio-inline')) { input_name = $(this).attr("name"); input_value = $(this).attr("value"); input_text = $(this).text(); input_checked = $(this).is(':checked'); enable_class = 'btn-default'; disable_class = 'btn-default'; if (last_radio == input_name) { return; } last_radio = input_name; if ($(':radio[name="' + input_name + '"]').length != 2) { return; } if ((input_value != 0) && (input_value != 1)) { return; } if ((input_text.localeCompare(text_yes) == 1) && (input_text.localeCompare(text_no) == 1)) { return; } if (input_value == 1 && input_checked == true) { enable_class = 'btn-success active'; } else { disable_class = 'btn-danger active'; } $('#' + input_name + '_1').removeClass('btn-default').addClass(enable_class); $('#' + input_name + '_0').removeClass('btn-default').addClass(disable_class); } }); $(document).on('click', '.btn-group label:not(.active)', function (e) { disable_label = $(this); disable_input = $('#' + disable_label.attr('id') + ' :input'); if (disable_input.attr('type') != 'radio') { return; } if (!disable_input.is(':checked')) { enable_input = $('input[name="' + disable_input.attr('name') + '"]:checked'); enable_label = enable_input.parent(); enable_label.removeClass('btn-success active'); enable_label.removeClass('btn-danger active'); enable_input.removeAttr('checked'); enable_label.addClass('btn btn-default'); disable_label.removeClass('btn-default'); if (disable_input.val() == 0) { disable_label.addClass('btn-danger active'); } else { disable_label.addClass('btn-success active'); } disable_input.attr('checked', 'checked'); enable_input.trigger('change'); disable_input.trigger('change'); } }); if (document.getElementById('recurring_frequency')) { $('.input-group-recurring #recurring_frequency').select2(); $('.input-group-recurring #recurring_frequency').trigger('change'); } $('.form-loading-button').submit(function( event ) { $('.button-submit').button('loading'); return true; }); if (document.getElementsByClassName('input-group-invoice-text').length) { $('.input-group-invoice-text select').select2(); } }); $(document).on('click', '.popup', function(e) { e.preventDefault(); $('#modal-popup').remove(); var element = this; $.ajax({ url: $(element).attr('href'), type: 'get', dataType: 'html', success: function(data) { html = '<div class="modal" id="modal-popup">'; html += ' <div class="modal-dialog">'; html += ' <div class="modal-content">'; html += ' <div class="modal-header">'; html += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>'; html += ' <h4 class="modal-title">' + $(element).text() + '</h4>'; html += ' </div>'; html += ' <div class="modal-body">' + data + '</div>'; html += ' </div'; html += ' </div>'; html += '</div>'; $('body').append(html); $('#modal-popup').modal('show'); } }); }); $(document).on('change', '.input-group-recurring #recurring_frequency', function (e) { var value = $(this).val(); var recurring_frequency = $('#recurring_frequency').parent().parent(); var recurring_interval = $('#recurring_interval').parent(); var recurring_custom_frequency = $('#recurring_custom_frequency').parent(); var recurring_count = $('#recurring_count').parent(); if (value == 'custom') { recurring_frequency.removeClass('col-md-12').removeClass('col-md-12').addClass('col-md-4'); recurring_interval.removeClass('hidden'); recurring_custom_frequency.removeClass('hidden'); recurring_count.removeClass('hidden'); $('#recurring_custom_frequency').select2(); } else if (value == 'no' || value == '') { recurring_frequency.removeClass('col-md-10').removeClass('col-md-4').addClass('col-md-12'); recurring_interval.addClass('hidden'); recurring_custom_frequency.addClass('hidden'); recurring_count.addClass('hidden'); } else { recurring_frequency.removeClass('col-md-12').removeClass('col-md-4').addClass('col-md-10'); recurring_interval.addClass('hidden'); recurring_custom_frequency.addClass('hidden'); recurring_count.removeClass('hidden'); } }); $(document).on('change', '.input-group-invoice-text select', function () { var invoice_text_custom = $(this).parent().parent().parent().find('input'); if ($(this).val() == 'custom') { $(this).parent().parent().removeClass('col-md-12').addClass('col-md-6'); invoice_text_custom.parent().removeClass('hidden'); $(this).select2(); } else { $(this).parent().parent().removeClass('col-md-6').addClass('col-md-12'); invoice_text_custom.parent().addClass('hidden'); } }); function confirmDelete(form_id, title, message, button_cancel, button_delete) { $('#confirm-modal').remove(); var html = ''; html += '<div class="modal fade" id="confirm-modal" tabindex="-1" role="dialog" aria-labelledby="confirmModalLabel" aria-hidden="true">'; html += ' <div class="modal-dialog">'; html += ' <div class="modal-content">'; html += ' <div class="modal-header">'; html += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>'; html += ' <h4 class="modal-title" id="confirmModalLabel">' + title + '</h4>'; html += ' </div>'; html += ' <div class="modal-body">'; html += ' <p>' + message + '</p>'; html += ' <p></p>'; html += ' </div>'; html += ' <div class="modal-footer">'; html += ' <div class="pull-left">'; html += ' <button type="button" class="btn btn-danger" onclick="$(\'' + form_id + '\').submit();">' + button_delete + '</button>'; html += ' <button type="button" class="btn btn-default" data-dismiss="modal">' + button_cancel + '</button>'; html += ' </div>'; html += ' </div>'; html += ' </div>'; html += ' </div>'; html += '</div>'; $('body').append(html); $('#confirm-modal').modal('show'); } function convertDateFormat(date, split_character) { var result = []; var formats = { 'd': 'DD', 'M': 'MMM', 'Y': 'YYYY', 'F': 'MMMM', 'm': 'MM' }; dates = date.split(split_character); dates.forEach(function(value) { result.push(formats[value]); }); return result.join(split_character); } function itemTableResize() { colspan = $('#items.table.table-bordered thead tr th').length - 1; $('#items.table.table-bordered tbody #addItem .text-right').attr('colspan', colspan); $('#items.table.table-bordered tbody #tr-subtotal .text-right:first').attr('colspan', colspan); $('#items.table.table-bordered tbody #tr-discount .text-right:first').attr('colspan', colspan); $('#items.table.table-bordered tbody #tr-tax .text-right:first').attr('colspan', colspan); $('#items.table.table-bordered tbody #tr-total .text-right:first').attr('colspan', colspan); } function notificationHide(path, id, token) { $.ajax({ url: app_url + '/common/notifications/disable', type: 'POST', dataType: 'JSON', data: {path: path, id: id}, headers: { 'X-CSRF-TOKEN': token }, success: function(json) { if (json['success']) { $('#notification-' + id).remove(); } } }); }