(function() { var ui_class = { saveScrollTop: function() { this._scroll_top = $(document).scrollTop(); }, restoreScrollTop: function() { if (typeof(this._scroll_top) == 'undefined') return; $(document).scrollTop(this._scroll_top); delete this._scroll_top; }, loading: function(enable) { var win = $(window); var body = $('body'); var state = this._loading || (this._loading = { modal: $('
') .css('z-index', 2000) .addClass('modal fade') .append($('
') .addClass('modal-dialog') .append($('
') .addClass('modal-content luci2-modal-loader') .append($('
') .addClass('modal-body') .text(L.tr('Loading data…'))))) .appendTo(body) .modal({ backdrop: 'static', keyboard: false }) }); state.modal.modal(enable ? 'show' : 'hide'); }, dialog: function(title, content, options) { var win = $(window); var body = $('body'); var self = this; var state = this._dialog || (this._dialog = { dialog: $('
') .addClass('modal fade') .append($('
') .addClass('modal-dialog') .append($('
') .addClass('modal-content') .append($('
') .addClass('modal-header') .append('

') .addClass('modal-title')) .append($('
') .addClass('modal-body')) .append($('
') .addClass('modal-footer') .append(self.button(L.tr('Close'), 'primary') .click(function() { $(this).parents('div.modal').modal('hide'); }))))) .appendTo(body) }); if (typeof(options) != 'object') options = { }; if (title === false) { state.dialog.modal('hide'); return state.dialog; } var cnt = state.dialog.children().children().children('div.modal-body'); var ftr = state.dialog.children().children().children('div.modal-footer'); ftr.empty().show(); if (options.style == 'confirm') { ftr.append(L.ui.button(L.tr('Ok'), 'primary') .click(options.confirm || function() { L.ui.dialog(false) })); ftr.append(L.ui.button(L.tr('Cancel'), 'default') .click(options.cancel || function() { L.ui.dialog(false) })); } else if (options.style == 'close') { ftr.append(L.ui.button(L.tr('Close'), 'primary') .click(options.close || function() { L.ui.dialog(false) })); } else if (options.style == 'wait') { ftr.append(L.ui.button(L.tr('Close'), 'primary') .attr('disabled', true)); } if (options.wide) { state.dialog.addClass('wide'); } else { state.dialog.removeClass('wide'); } state.dialog.find('h4:first').text(title); state.dialog.modal('show'); cnt.empty().append(content); return state.dialog; }, upload: function(title, content, options) { var state = L.ui._upload || (L.ui._upload = { form: $('
') .attr('method', 'post') .attr('action', '/cgi-bin/luci-upload') .attr('enctype', 'multipart/form-data') .attr('target', 'cbi-fileupload-frame') .append($('

')) .append($('') .attr('type', 'hidden') .attr('name', 'sessionid')) .append($('') .attr('type', 'hidden') .attr('name', 'filename')) .append($('') .attr('type', 'file') .attr('name', 'filedata') .addClass('cbi-input-file')) .append($('

') .css('width', '100%') .addClass('progress progress-striped active') .append($('
') .addClass('progress-bar') .css('width', '100%'))) .append($('