From 6db418d6d04274b9d9589266438928e253ee33fa Mon Sep 17 00:00:00 2001 From: Catouse Date: Fri, 18 May 2018 10:36:17 +0800 Subject: [PATCH] * update zui files. --- www/js/zui/min.js | 15973 +----------------------------------- www/theme/zui/css/min.css | 2 +- 2 files changed, 15 insertions(+), 15960 deletions(-) diff --git a/www/js/zui/min.js b/www/js/zui/min.js index 9f04714c30..b301905579 100644 --- a/www/js/zui/min.js +++ b/www/js/zui/min.js @@ -4,11023 +4,34 @@ * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2018 cnezsoft.com; Licensed MIT */ - -/* ======================================================================== - * ZUI: jquery.extensions.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($, window, undefined) { - 'use strict'; - - /* Check jquery */ - if(typeof($) === 'undefined') throw new Error('ZUI requires jQuery'); - - // ZUI shared object - if(!$.zui) $.zui = function(obj) { - if($.isPlainObject(obj)) { - $.extend($.zui, obj); - } - }; - - var MOUSE_BUTTON_CODES = { - all: -1, - left: 0, - middle: 1, - right: 2 - }; - - var lastUuidAmend = 0; - $.zui({ - uuid: function(asNumber) { - var uuidNumber = (new Date()).getTime() * 1000 + (lastUuidAmend++) % 1000; - return asNumber ? uuidNumber : uuidNumber.toString(36); - }, - - callEvent: function(func, event, proxy) { - if($.isFunction(func)) { - if(proxy !== undefined) { - func = $.proxy(func, proxy); - } - var result = func(event); - if(event) event.result = result; - return !(result !== undefined && (!result)); - } - return 1; - }, - - clientLang: function() { - var lang; - var config = window.config; - if(typeof(config) != 'undefined' && config.clientLang) { - lang = config.clientLang; - } - if(!lang) { - var hl = $('html').attr('lang'); - lang = hl ? hl : (navigator.userLanguage || navigator.userLanguage || 'zh_cn'); - } - return lang.replace('-', '_').toLowerCase(); - }, - - strCode: function(str) { - var code = 0; - if(str && str.length) { - for(var i = 0; i < str.length; ++i) { - code += i * str.charCodeAt(i); - } - } - return code; - }, - - getMouseButtonCode: function(mouseButton) { - if(typeof mouseButton !== 'number') { - mouseButton = MOUSE_BUTTON_CODES[mouseButton]; - } - if(mouseButton === undefined || mouseButton === null) mouseButton = -1; - return mouseButton; - } - }); - - $.fn.callEvent = function(name, event, model) { - var $this = $(this); - var dotIndex = name.indexOf('.zui.'); - var shortName = dotIndex < 0 ? name : name.substring(0, dotIndex); - var e = $.Event(shortName, event); - - if((model === undefined) && dotIndex > 0) { - model = $this.data(name.substring(dotIndex + 1)); - } - - if(model && model.options) { - var func = model.options[shortName]; - if($.isFunction(func)) { - e.result = $.zui.callEvent(func, e, model); - } - } - $this.trigger(e); - return e; - }; - - $.fn.callComEvent = function(component, eventName, params) { - if (params !== undefined && !$.isArray(params)) { - params = [params]; - } - var $this = this; - var result = $this.triggerHandler(eventName, params); - - var eventCallback = component.options[eventName]; - if (eventCallback) { - result = eventCallback.apply(component, params); - } - return result; - }; -}(jQuery, window, undefined)); - - -/* ======================================================================== - * ZUI: typography.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($) { - 'use strict'; - - $.fn.fixOlPd = function(pd) { - pd = pd || 10; - return this.each(function() { - var $ol = $(this); - $ol.css('paddingLeft', Math.ceil(Math.log10($ol.children().length)) * pd + 10); - }); - }; - - $(function() { - $('.ol-pd-fix,.article ol').fixOlPd(); - }); -}(jQuery)); - - -/* ======================================================================== - * Bootstrap: alert.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#alerts - * ======================================================================== - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * Bootsrap version in the future. - * http://zui.sexy - * ======================================================================== */ - - -+ function($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var zuiname = 'zui.alert'; - - var Alert = function(el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function(e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if(!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if(e) e.preventDefault() - - if(!$parent.length) { - $parent = $this.hasClass('alert') ? $this : $this.parent() - } - - $parent.trigger(e = $.Event('close.' + zuiname)) - - if(e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent.trigger('closed.' + zuiname).remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one($.support.transition.end, removeElement) - .emulateTransitionEnd(150) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - var old = $.fn.alert - - $.fn.alert = function(option) { - return this.each(function() { - var $this = $(this) - var data = $this.data(zuiname) - - if(!data) $this.data(zuiname, (data = new Alert(this))) - if(typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function() { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.' + zuiname + '.data-api', dismiss, Alert.prototype.close) - -}(window.jQuery); - -/* ======================================================================== - * ZUI: pager.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2017-2018 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($, undefined) { - 'use strict'; - - var NAME = 'zui.pager'; // model name - - var DEFAULT_PAGER = { - page: 1, // current page index - recTotal: 0, // records total count - recPerPage: 10, // records count per page - }; - - var LANG = { - zh_cn: { - prev: '上一页', - next: '下一页', - first: '第一页', - last: '最后一页', - goto: '跳转', - pageOf: '第 {page} 页', - totalPage: '共 {totalPage} 页', - totalCount: '共 {recTotal} 项', - pageSize: '每页 {recPerPage} 项', - itemsRange: '第 {start} ~ {end} 项', - pageOfTotal: '第 {page}/{totalPage} 页' - }, - zh_tw: { - prev: '上一頁', - next: '下一頁', - first: '第一頁', - last: '最後一頁', - goto: '跳轉', - pageOf: '第 {page} 頁', - totalPage: '共 {totalPage} 頁', - totalCount: '共 {recTotal} 項', - pageSize: '每頁 {recPerPage} 項', - itemsRange: '第 {start} ~ {end} 項', - pageOfTotal: '第 {page}/{totalPage} 頁' - }, - en: { - prev: 'Prev', - next: 'Next', - first: 'First', - last: 'Last', - goto: 'Goto', - pageOf: 'Page {page}', - totalPage: '{totalPage} pages', - totalCount: '{recTotal} items', - pageSize: '{recPerPage} items per page', - itemsRange: 'From {start} to {end}', - pageOfTotal: 'Page {page} of {totalPage}' - } - }; - - // The pager model class - var Pager = function(element, options) { - var that = this; - that.name = NAME; - that.$ = $(element); - - options = that.options = $.extend({}, Pager.DEFAULTS, this.$.data(), options); - - var lang = options.lang || 'zh_cn'; - that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; - - that.state = {}; - - that.set(options.page, options.recTotal, options.recPerPage, true); - - that.$.on('click', '.pager-goto-btn', function() { - var $goto = $(this).closest('.pager-goto'); - var page = parseInt($goto.find('.pager-goto-input').val()); - if (page !== NaN) { - that.set(page); - } - }).on('click', '.pager-item', function() { - var page = $(this).data('page'); - if (typeof page === 'number' && page > 0) { - that.set(page); - } - }).on('click', '.pager-size-menu [data-size]', function() { - var size = $(this).data('size'); - if (typeof size === 'number' && size > 0) { - that.set(-1, -1, size); - } - }); - }; - - Pager.prototype.set = function(page, recTotal, recPerPage, notTiggerChange) { - var that = this; - if (typeof page === 'object' && page !== null) { - recPerPage = page.recPerPage; - recTotal = page.recTotal; - page = page.page; - } - var state = that.state; - if (!state) { - state = $.extend({}, DEFAULT_PAGER); - } - var oldState = $.extend({}, state); - if (typeof recPerPage === 'number' && recPerPage > 0) { - state.recPerPage = recPerPage; - } - if (typeof recTotal === 'number' && recTotal >= 0) { - state.recTotal = recTotal; - } - if (typeof page === 'number' && page >= 0) { - state.page = page; - } - state.totalPage = (state.recTotal && state.recPerPage) ? (Math.ceil(state.recTotal / state.recPerPage)) : 1; - state.page = Math.max(0, Math.min(state.page, state.totalPage)); - // stateRecCount is items count in current page - state.pageRecCount = state.recTotal; - if (state.page && state.recTotal) { - if (state.page < state.totalPage) { - state.pageRecCount = state.recPerPage; - } else if (state.page > 1) { - state.pageRecCount = state.recTotal - (state.recPerPage * (state.page - 1)); - } - } - state.skip = state.page > 1 ? ((state.page - 1) * state.recPerPage) : 0; - state.start = state.skip + 1; - state.end = state.skip + state.pageRecCount; - state.prev = state.page > 1 ? (state.page - 1) : 0; - state.next = state.page < state.totalPage ? (state.page + 1) : 0; - that.state = state; - if (!notTiggerChange && (oldState.page !== state.page || oldState.recTotal !== state.recTotal || oldState.recPerPage !== state.recPerPage)) { - that.$.callComEvent(that, 'onPageChange', [state, oldState]); - } - return that.render(); - }; - - Pager.prototype.createLinkItem = function(page, text, asAElement) { - var that = this; - if (text === undefined) { - text = page; - } - var $ele = $('').attr('href', page ? that.createLink(page, that.state) : '###').html(text); - if (!asAElement) { - $ele = $('
  • ').append($ele).toggleClass('active', page === that.state.page).toggleClass('disabled', !page); - } - return $ele; - }; - - Pager.prototype.createNavItems = function(maxCount) { - var that = this; - var $nav = that.$; - var pager = that.state; - var totalPage = pager.totalPage; - var page = pager.page; - var appendItem = function(p, to) { - if(p === false) { - $nav.append(that.createLinkItem(0, to || that.options.navEllipsisItem)); - return; - } - if(to === undefined) to = p; - for(var i = p; i <= to; ++i) { - $nav.append(that.createLinkItem(i)); - } - }; - if (maxCount === undefined) { - maxCount = that.options.maxNavCount || 10; - } - appendItem(1); - if(totalPage > 1) { - if(totalPage <= maxCount) { - appendItem(2, totalPage); - } - else if(page < (maxCount - 2)) { - appendItem(2, maxCount - 2); - appendItem(false); - appendItem(totalPage); - } - else if(page > (totalPage - maxCount + 2)) { - appendItem(false); - appendItem((totalPage - maxCount + 2), totalPage); - } - else { - appendItem(false); - appendItem(page - Math.ceil((maxCount-4)/2), page + Math.floor((maxCount-4)/2)); - appendItem(false); - appendItem(totalPage); - } - } - }; - - Pager.prototype.createGoto = function() { - var that = this; - var pager = this.state; - var $goto = $('
    '); - return $goto; - }; - - Pager.prototype.createSizeMenu = function() { - var that = this; - var pager = this.state; - var $menu = $(''); - var options = that.options.pageSizeOptions; - if (typeof options === 'string') { - options = options.split(','); - } - for (var i = 0; i < options.length; ++i) { - var size = options[i]; - if (typeof size === 'string') { - size = parseInt(size); - } - var $li = $('
  • ' + size + '
  • ').toggleClass('active', size === pager.recPerPage); - $menu.append($li); - } - return $('
    ').addClass(that.options.menuDirection).append($menu); - }; - - Pager.prototype.createElement = function(element, $pager, pager) { - var that = this; - var createLinkItem= $.proxy(that.createLinkItem, that); - var lang = that.lang; - switch (element) { - case 'prev': - return createLinkItem(pager.prev, lang.prev); - case 'prev_icon': - return createLinkItem(pager.prev, ''); - case 'next': - return createLinkItem(pager.next, lang.next); - case 'next_icon': - return createLinkItem(pager.next, ''); - case 'first': - return createLinkItem(1, lang.first, true); - case 'first_icon': - return createLinkItem(1, '', true); - case 'last': - return createLinkItem(pager.totalPage, lang.last, true); - case 'last_icon': - return createLinkItem(pager.totalPage, '', true); - case 'space': - case '|': - return $('
  • '); - case 'nav': - case 'pages': - that.createNavItems(); - return; - case 'total_text': - return $(('
    ' + lang.totalCount + '
    ').format(pager)); - case 'page_text': - return $(('
    ' + lang.pageOf + '
    ').format(pager)); - case 'total_page_text': - return $(('
    ' + lang.totalPage + '
    ').format(pager)); - case 'page_of_total_text': - return $(('
    ' + lang.pageOfTotal + '
    ').format(pager)); - case 'page_size_text': - return $(('
    ' + lang.pageSize + '
    ').format(pager)); - case 'items_range_text': - return $(('
    ' + lang.itemsRange + '
    ').format(pager)); - case 'goto': - return that.createGoto(); - case 'size_menu': - return that.createSizeMenu(); - default: - return $('
  • ').html(element); - } - }; - - Pager.prototype.createLink = function(page, pager) { - if (page === undefined) { - page = this.state.page; - } - if (pager === undefined) { - pager = this.state; - } - var linkCreator = this.options.linkCreator; - if (typeof linkCreator === 'string') { - return linkCreator.format($.extend({}, pager, {page: page})); - } else if ($.isFunction(linkCreator)) { - return linkCreator(page, pager); - } - return '#page=' + page; - }; - - Pager.prototype.render = function(elements) { - var that = this; - var state = that.state; - var createElement = that.options.elementCreator || that.createElement; - var isMapperCreator = $.isPlainObject(createElement); - - elements = elements || that.elements || that.options.elements; - if (typeof elements == 'string') { - elements = elements.split(','); - } - that.elements = elements; - - that.$.empty(); - - for(var i = 0; i < elements.length; ++i) { - var element = $.trim(elements[i]); - var creator = isMapperCreator ? (createElement[element] || createElement) : createElement; - var $element = creator.call(that, element, that.$, state); - if ($element === false) { - $element = that.createElement(element, that.$, state); - } - if ($element instanceof $) { - if ($element[0].tagName !== 'LI') { - $element = $('
  • ').append($element); - } - that.$.append($element); - } - } - - // Fix page item border - var $lastItem = null; - that.$.children('li').each(function() { - var $li = $(this); - var isItem = !!$li.children('.pager-item').length; - if ($lastItem) { - $lastItem.toggleClass('pager-item-right', !isItem); - } else { - if (isItem) { - $li.addClass('pager-item-left'); - } - } - $lastItem = isItem ? $li : null; - }); - if ($lastItem) { - $lastItem.addClass('pager-item-right'); - } - - that.$.callComEvent(that, 'onRender', [state]); - return that; - }; - - // default options - Pager.DEFAULTS = $.extend({ - elements: ['first_icon', 'prev_icon', 'pages', 'next_icon', 'last_icon', 'page_of_total_text', 'items_range_text', 'total_text'], - prevIcon: 'icon-double-angle-left', - nextIcon: 'icon-double-angle-right', - firstIcon: 'icon-step-backward', - lastIcon: 'icon-step-forward', - navEllipsisItem: '', - maxNavCount: 10, - menuDirection: 'dropdown', // or dropup - pageSizeOptions: [10, 20, 30, 50, 100], - // onPageChange: null - }, DEFAULT_PAGER); - - // Extense jquery element - $.fn.pager = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new Pager(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - Pager.NAME = NAME; - - $.fn.pager.Constructor = Pager; - - // Auto call pager after document load complete - $(function() { - $('[data-ride="pager"]').pager(); - }); -}(jQuery, undefined)); - - -/* ======================================================================== - * Bootstrap: tab.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#tabs - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * Bootsrap version in the future. - * http://zui.sexy - * ======================================================================== - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ======================================================================== */ - - -+ function($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var zuiname = 'zui.tab' - var Tab = function(element) { - this.element = $(element) - } - - Tab.prototype.show = function() { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.attr('data-target') || $this.attr('data-tab') - - if(!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } - - if($this.parent('li').hasClass('active')) return - - var previous = $ul.find('.active:last a')[0] - var e = $.Event('show.' + zuiname, { - relatedTarget: previous - }) - - $this.trigger(e) - - if(e.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.parent('li'), $ul) - this.activate($target, $target.parent(), function() { - $this.trigger({ - type: 'shown.' + zuiname, - relatedTarget: previous - }) - }) - } - - Tab.prototype.activate = function(element, container, callback) { - var $active = container.find('> .active') - var transition = callback && $.support.transition && $active.hasClass('fade') - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - - element.addClass('active') - - if(transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if(element.parent('.dropdown-menu')) { - element.closest('li.dropdown').addClass('active') - } - - callback && callback() - } - - transition ? - $active - .one($.support.transition.end, next) - .emulateTransitionEnd(150) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - var old = $.fn.tab - - $.fn.tab = function(option) { - return this.each(function() { - var $this = $(this) - var data = $this.data(zuiname) - - if(!data) $this.data(zuiname, (data = new Tab(this))) - if(typeof option == 'string') data[option]() - }) - } - - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function() { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - $(document).on('click.zui.tab.data-api', '[data-toggle="tab"], [data-tab]', function(e) { - e.preventDefault() - $(this).tab('show') - }) - -}(window.jQuery); - - -/* ======================================================================== - * Bootstrap: transition.js v3.2.0 - * http://getbootstrap.com/javascript/#transitions - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * Bootsrap version in the future. - * http://zui.sexy - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+ function($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition: 'webkitTransitionEnd', - MozTransition: 'transitionend', - OTransition: 'oTransitionEnd otransitionend', - transition: 'transitionend' - } - - for(var name in transEndEventNames) { - if(el.style[name] !== undefined) { - return { - end: transEndEventNames[name] - } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function(duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function() { - called = true - }) - var callback = function() { - if(!called) $($el).trigger($.support.transition.end) - } - setTimeout(callback, duration) - return this - } - - $(function() { - $.support.transition = transitionEnd() - - if(!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function(e) { - if($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - - -/* ======================================================================== - * Bootstrap: collapse.js v3.0.0 - * http://twbs.github.com/bootstrap/javascript.html#collapse - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * Bootsrap version in the future. - * http://zui.sexy - * ======================================================================== - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ======================================================================== */ - - -+ function($) { - 'use strict'; - - var zuiname = 'zui.collapse' - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function(element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.transitioning = null - - if(this.options.parent) this.$parent = $(this.options.parent) - if(this.options.toggle) this.toggle() - } - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function() { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function() { - if(this.transitioning || this.$element.hasClass('in')) return - - var startEvent = $.Event('show.' + zuiname) - this.$element.trigger(startEvent) - if(startEvent.isDefaultPrevented()) return - - var actives = this.$parent && this.$parent.find('.in') - - if(actives && actives.length) { - var hasData = actives.data(zuiname) - if(hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data(zuiname, null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - - this.transitioning = 1 - - var complete = function() { - this.$element - .removeClass('collapsing') - .addClass('in')[dimension]('auto') - this.transitioning = 0 - this.$element.trigger('shown.' + zuiname) - } - - if(!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function() { - if(this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.' + zuiname) - this.$element.trigger(startEvent) - if(startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse') - .removeClass('in') - - this.transitioning = 1 - - var complete = function() { - this.transitioning = 0 - this.$element - .trigger('hidden.' + zuiname) - .removeClass('collapsing') - .addClass('collapse') - } - - if(!$.support.transition) return complete.call(this) - - this.$element[dimension](0) - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - } - - Collapse.prototype.toggle = function() { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - var old = $.fn.collapse - - $.fn.collapse = function(option) { - return this.each(function() { - var $this = $(this) - var data = $this.data(zuiname) - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if(!data) $this.data(zuiname, (data = new Collapse(this, options))) - if(typeof option == 'string') data[option]() - }) - } - - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function() { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.' + zuiname + '.data-api', '[data-toggle=collapse]', function(e) { - var $this = $(this), - href - var target = $this.attr('data-target') || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $target = $(target) - var data = $target.data(zuiname) - var option = data ? 'toggle' : $this.data() - var parent = $this.attr('data-parent') - var $parent = parent && $(parent) - - if(!data || !data.transitioning) { - if($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - } - - $target.collapse(option) - }) - -}(window.jQuery); - - -/* ======================================================================== - * ZUI: device.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function(window, $) { - 'use strict'; - var desktopLg = 1200, - desktop = 992, - tablet = 768; - - var $window = $(window); - - var resetCssClass = function() { - var width = $window.width(); - $('html').toggleClass('screen-desktop', width >= desktop && width < desktopLg) - .toggleClass('screen-desktop-wide', width >= desktopLg) - .toggleClass('screen-tablet', width >= tablet && width < desktop) - .toggleClass('screen-phone', width < tablet) - .toggleClass('device-mobile', width < desktop) - .toggleClass('device-desktop', width >= desktop); - }; - - var classNames = ''; - var userAgent = navigator.userAgent; - if (userAgent.match(/(iPad|iPhone|iPod)/i)) { - classNames += ' os-ios'; - } else if (userAgent.match(/android/i)) { - classNames += ' os-android'; - } else if (userAgent.match(/Win/i)) { - classNames += ' os-windows'; - } else if (userAgent.match(/Mac/i)) { - classNames += ' os-mac'; - } else if (userAgent.match(/Linux/i)) { - classNames += ' os-linux'; - } else if (userAgent.match(/X11/i)) { - classNames += ' os-unix'; - } - if ('ontouchstart' in document.documentElement) { - classNames += ' is-touchable'; - } - $('html').addClass(classNames); - - $window.resize(resetCssClass); - resetCssClass(); -}(window, jQuery)); - - -/* ======================================================================== - * ZUI: browser.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($) { - 'use strict'; - - var browseHappyTip = { - 'zh_cn': '您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...', - 'zh_tw': '您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...', - 'en': 'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...' - }; - - // The browser modal class - var Browser = function() { - var ie = this.isIE() || this.isIE10() || false; - if(ie) { - for(var i = 10; i > 5; i--) { - if(this.isIE(i)) { - ie = i; - break; - } - } - } - - this.ie = ie; - - this.cssHelper(); - }; - - // Append CSS class to html tag - Browser.prototype.cssHelper = function() { - var ie = this.ie, - $html = $('html'); - $html.toggleClass('ie', ie) - .removeClass('ie-6 ie-7 ie-8 ie-9 ie-10'); - if(ie) { - $html.addClass('ie-' + ie) - .toggleClass('gt-ie-7 gte-ie-8 support-ie', ie >= 8) - .toggleClass('lte-ie-7 lt-ie-8 outdated-ie', ie < 8) - .toggleClass('gt-ie-8 gte-ie-9', ie >= 9) - .toggleClass('lte-ie-8 lt-ie-9', ie < 9) - .toggleClass('gt-ie-9 gte-ie-10', ie >= 10) - .toggleClass('lte-ie-9 lt-ie-10', ie < 10); - } - }; - - // Show browse happy tip - Browser.prototype.tip = function(showCoontent) { - var $browseHappy = $('#browseHappyTip'); - if(!$browseHappy.length) { - $browseHappy = $('
    '); - $browseHappy.prependTo('body'); - } - - $browseHappy.find('.content').html(showCoontent || this.browseHappyTip || browseHappyTip[$.zui.clientLang() || 'zh_cn']); - }; - - // Detect it is IE, can given a version - Browser.prototype.isIE = function(version) { - if(version === 10) return this.isIE10(); - var b = document.createElement('b'); - b.innerHTML = ''; - return b.getElementsByTagName('i').length === 1; - }; - - // Detect ie 10 with hack - Browser.prototype.isIE10 = function() { - return (/*@cc_on!@*/false); - }; - - $.zui({ - browser: new Browser() - }); - - $(function() { - if(!$('body').hasClass('disabled-browser-tip')) { - if($.zui.browser.ie && $.zui.browser.ie < 8) { - $.zui.browser.tip(); - } - } - }); -}(jQuery)); - - -/* ======================================================================== - * ZUI: date.js - * Date polyfills - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function() { - 'use strict'; - - /** - * Ticks of a whole day - * @type {number} - */ - Date.ONEDAY_TICKS = 24 * 3600 * 1000; - - /** - * Format date to a string - * - * @param string format - * @return string - */ - if(!Date.prototype.format) { - Date.prototype.format = function(format) { - var date = { - 'M+': this.getMonth() + 1, - 'd+': this.getDate(), - 'h+': this.getHours(), - 'm+': this.getMinutes(), - 's+': this.getSeconds(), - 'q+': Math.floor((this.getMonth() + 3) / 3), - 'S+': this.getMilliseconds() - }; - if(/(y+)/i.test(format)) { - format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); - } - for(var k in date) { - if(new RegExp('(' + k + ')').test(format)) { - format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ('00' + date[k]).substr(('' + date[k]).length)); - } - } - return format; - }; - } - - /** - * Add milliseconds to the date - * @param {number} value - */ - if(!Date.prototype.addMilliseconds) { - Date.prototype.addMilliseconds = function(value) { - this.setTime(this.getTime() + value); - return this; - }; - } - - - /** - * Add days to the date - * @param {number} days - */ - if(!Date.prototype.addDays) { - Date.prototype.addDays = function(days) { - this.addMilliseconds(days * Date.ONEDAY_TICKS); - return this; - }; - } - - - /** - * Clone a new date instane from the date - * @return {Date} - */ - if(!Date.prototype.clone) { - Date.prototype.clone = function() { - var date = new Date(); - date.setTime(this.getTime()); - return date; - }; - } - - - /** - * Judge the year is in a leap year - * @param {integer} year - * @return {Boolean} - */ - if(!Date.isLeapYear) { - Date.isLeapYear = function(year) { - return(((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)); - }; - } - - if(!Date.getDaysInMonth) { - /** - * Get days number of the date - * @param {integer} year - * @param {integer} month - * @return {integer} - */ - Date.getDaysInMonth = function(year, month) { - return [31, (Date.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; - }; - } - - - /** - * Judge the date is in a leap year - * @return {Boolean} - */ - if(!Date.prototype.isLeapYear) { - Date.prototype.isLeapYear = function() { - return Date.isLeapYear(this.getFullYear()); - }; - } - - - /** - * Clear time part of the date - * @return {date} - */ - if(!Date.prototype.clearTime) { - Date.prototype.clearTime = function() { - this.setHours(0); - this.setMinutes(0); - this.setSeconds(0); - this.setMilliseconds(0); - return this; - }; - } - - - /** - * Get days of this month of the date - * @return {integer} - */ - if(!Date.prototype.getDaysInMonth) { - Date.prototype.getDaysInMonth = function() { - return Date.getDaysInMonth(this.getFullYear(), this.getMonth()); - }; - } - - - /** - * Add months to the date - * @param {date} value - */ - if(!Date.prototype.addMonths) { - Date.prototype.addMonths = function(value) { - var n = this.getDate(); - this.setDate(1); - this.setMonth(this.getMonth() + value); - this.setDate(Math.min(n, this.getDaysInMonth())); - return this; - }; - } - - - /** - * Get last week day of the date - * @param {integer} day - * @return {date} - */ - if(!Date.prototype.getLastWeekday) { - Date.prototype.getLastWeekday = function(day) { - day = day || 1; - - var d = this.clone(); - while(d.getDay() != day) { - d.addDays(-1); - } - d.clearTime(); - return d; - }; - } - - - /** - * Judge the date is same day as another date - * @param {date} date - * @return {Boolean} - */ - if(!Date.prototype.isSameDay) { - Date.prototype.isSameDay = function(date) { - return date.toDateString() === this.toDateString(); - }; - } - - - /** - * Judge the date is in same week as another date - * @param {date} date - * @return {Boolean} - */ - if(!Date.prototype.isSameWeek) { - Date.prototype.isSameWeek = function(date) { - var weekStart = this.getLastWeekday(); - var weekEnd = weekStart.clone().addDays(7); - return date >= weekStart && date < weekEnd; - }; - } - - - /** - * Judge the date is in same year as another date - * @param {date} date - * @return {Boolean} - */ - if(!Date.prototype.isSameYear) { - Date.prototype.isSameYear = function(date) { - return this.getFullYear() === date.getFullYear(); - }; - } - - /** - * Create an date instance with string, timestamp or date instance - * @param {Date|String|Number} date - * @return {Date} - */ - if (!Date.create) { - Date.create = function(date) { - if (!(date instanceof Date)) { - if (typeof date === 'number' && date < 10000000000) { - date *= 1000; - } - date = new Date(date); - } - return date; - }; - } - - if (!Date.timestamp) { - Date.timestamp = function(date) { - if (typeof date === 'number') { - if (date < 10000000000) { - date *= 1000; - } - } else { - date = Date.create(date).getTime(); - } - return date; - }; - } -}()); - - -/* ======================================================================== - * ZUI: string.js - * String Polyfill. - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function() { - 'use strict'; - - /** - * Format string with argument list or object - * @param {object | arguments} args - * @return {String} - */ - if(!String.prototype.format) { - String.prototype.format = function(args) { - var result = this; - if(arguments.length > 0) { - var reg; - if(arguments.length <= 2 && typeof(args) == 'object') { - for(var key in args) { - if(args[key] !== undefined) { - reg = new RegExp('(' + (arguments[1] ? arguments[1].replace('0', key) : '{' + key + '}') + ')', 'g'); - result = result.replace(reg, args[key]); - } - } - } else { - for(var i = 0; i < arguments.length; i++) { - if(arguments[i] !== undefined) { - reg = new RegExp('({[' + i + ']})', 'g'); - result = result.replace(reg, arguments[i]); - } - } - } - } - return result; - }; - } - - /** - * Judge the string is a integer number - * - * @access public - * @return bool - */ - if(!String.prototype.isNum) { - String.prototype.isNum = function(s) { - if(s !== null) { - var r, re; - re = /\d*/i; - r = s.match(re); - return(r == s) ? true : false; - } - return false; - }; - } - - if(!String.prototype.endsWith) { - String.prototype.endsWith = function(searchString, position) { - var subjectString = this.toString(); - if(position === undefined || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - - if(!String.prototype.startsWith) { - String.prototype.startsWith = function(searchString, position) { - position = position || 0; - return this.lastIndexOf(searchString, position) === position; - }; - } - - if(!String.prototype.includes) { - String.prototype.includes = function() { - return String.prototype.indexOf.apply(this, arguments) !== -1; - }; - } - -})(); - - -/* ======================================================================== - * Resize: resize.js [Version: 1.1] - * http://benalman.com/projects/jquery-resize-plugin/ - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * official version in the future. - * http://zui.sexy - * ======================================================================== - * opyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - * ======================================================================== */ - - -/*! +if(function(t,e,i){"use strict";if("undefined"==typeof t)throw new Error("ZUI requires jQuery");t.zui||(t.zui=function(e){t.isPlainObject(e)&&t.extend(t.zui,e)});var n={all:-1,left:0,middle:1,right:2},s=0;t.zui({uuid:function(t){var e=1e3*(new Date).getTime()+s++%1e3;return t?e:e.toString(36)},callEvent:function(e,n,s){if(t.isFunction(e)){s!==i&&(e=t.proxy(e,s));var o=e(n);return n&&(n.result=o),!(o!==i&&!o)}return 1},clientLang:function(){var i,n=e.config;if("undefined"!=typeof n&&n.clientLang&&(i=n.clientLang),!i){var s=t("html").attr("lang");i=s?s:navigator.userLanguage||navigator.userLanguage||"zh_cn"}return i.replace("-","_").toLowerCase()},strCode:function(t){var e=0;if(t&&t.length)for(var i=0;i0&&(s=o.data(e.substring(a+1))),s&&s.options){var h=s.options[r];t.isFunction(h)&&(l.result=t.zui.callEvent(h,l,s))}return o.trigger(l),l},t.fn.callComEvent=function(e,n,s){s===i||t.isArray(s)||(s=[s]);var o=this,a=o.triggerHandler(n,s),r=e.options[n];return r&&(a=r.apply(e,s)),a}}(jQuery,window,void 0),function(t){"use strict";t.fn.fixOlPd=function(e){return e=e||10,this.each(function(){var i=t(this);i.css("paddingLeft",Math.ceil(Math.log10(i.children().length))*e+10)})},t(function(){t(".ol-pd-fix,.article ol").fixOlPd()})}(jQuery),+function(t){"use strict";var e='[data-dismiss="alert"]',i="zui.alert",n=function(i){t(i).on("click",e,this.close)};n.prototype.close=function(e){function n(){a.trigger("closed."+i).remove()}var s=t(this),o=s.attr("data-target");o||(o=s.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t(o);e&&e.preventDefault(),a.length||(a=s.hasClass("alert")?s:s.parent()),a.trigger(e=t.Event("close."+i)),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one(t.support.transition.end,n).emulateTransitionEnd(150):n())};var s=t.fn.alert;t.fn.alert=function(e){return this.each(function(){var s=t(this),o=s.data(i);o||s.data(i,o=new n(this)),"string"==typeof e&&o[e].call(s)})},t.fn.alert.Constructor=n,t.fn.alert.noConflict=function(){return t.fn.alert=s,this},t(document).on("click."+i+".data-api",e,n.prototype.close)}(window.jQuery),function(t,e){"use strict";var i="zui.pager",n={page:1,recTotal:0,recPerPage:10},s={zh_cn:{prev:"上一页",next:"下一页",first:"第一页",last:"最后一页","goto":"跳转",pageOf:"第 {page} 页",totalPage:"共 {totalPage} 页",totalCount:"共 {recTotal} 项",pageSize:"每页 {recPerPage} 项",itemsRange:"第 {start} ~ {end} 项",pageOfTotal:"第 {page}/{totalPage} 页"},zh_tw:{prev:"上一頁",next:"下一頁",first:"第一頁",last:"最後一頁","goto":"跳轉",pageOf:"第 {page} 頁",totalPage:"共 {totalPage} 頁",totalCount:"共 {recTotal} 項",pageSize:"每頁 {recPerPage} 項",itemsRange:"第 {start} ~ {end} 項",pageOfTotal:"第 {page}/{totalPage} 頁"},en:{prev:"Prev",next:"Next",first:"First",last:"Last","goto":"Goto",pageOf:"Page {page}",totalPage:"{totalPage} pages",totalCount:"{recTotal} items",pageSize:"{recPerPage} items per page",itemsRange:"From {start} to {end}",pageOfTotal:"Page {page} of {totalPage}"}},o=function(e,n){var a=this;a.name=i,a.$=t(e),n=a.options=t.extend({},o.DEFAULTS,this.$.data(),n);var r=n.lang||"zh_cn";a.lang=t.isPlainObject(r)?t.extend(!0,{},s[r.lang||t.zui.clientLang()],r):s[r],a.state={},a.set(n.page,n.recTotal,n.recPerPage,!0),a.$.on("click",".pager-goto-btn",function(){var e=t(this).closest(".pager-goto"),i=parseInt(e.find(".pager-goto-input").val());NaN!==i&&a.set(i)}).on("click",".pager-item",function(){var e=t(this).data("page");"number"==typeof e&&e>0&&a.set(e)}).on("click",".pager-size-menu [data-size]",function(){var e=t(this).data("size");"number"==typeof e&&e>0&&a.set(-1,-1,e)})};o.prototype.set=function(e,i,s,o){var a=this;"object"==typeof e&&null!==e&&(s=e.recPerPage,i=e.recTotal,e=e.page);var r=a.state;r||(r=t.extend({},n));var l=t.extend({},r);return"number"==typeof s&&s>0&&(r.recPerPage=s),"number"==typeof i&&i>=0&&(r.recTotal=i),"number"==typeof e&&e>=0&&(r.page=e),r.totalPage=r.recTotal&&r.recPerPage?Math.ceil(r.recTotal/r.recPerPage):1,r.page=Math.max(0,Math.min(r.page,r.totalPage)),r.pageRecCount=r.recTotal,r.page&&r.recTotal&&(r.page1&&(r.pageRecCount=r.recTotal-r.recPerPage*(r.page-1))),r.skip=r.page>1?(r.page-1)*r.recPerPage:0,r.start=r.skip+1,r.end=r.skip+r.pageRecCount,r.prev=r.page>1?r.page-1:0,r.next=r.page').attr("href",i?o.createLink(i,o.state):"###").html(n);return s||(a=t("
  • ").append(a).toggleClass("active",i===o.state.page).toggleClass("disabled",!i)),a},o.prototype.createNavItems=function(t){var i=this,n=i.$,s=i.state,o=s.totalPage,a=s.page,r=function(t,s){if(t===!1)return void n.append(i.createLinkItem(0,s||i.options.navEllipsisItem));s===e&&(s=t);for(var o=t;o<=s;++o)n.append(i.createLinkItem(o))};t===e&&(t=i.options.maxNavCount||10),r(1),o>1&&(o<=t?r(2,o):ao-t+2?(r(!1),r(o-t+2,o)):(r(!1),r(a-Math.ceil((t-4)/2),a+Math.floor((t-4)/2)),r(!1),r(o)))},o.prototype.createGoto=function(){var e=this,i=this.state,n=t('
    ");return n},o.prototype.createSizeMenu=function(){var e=this,i=this.state,n=t(''),s=e.options.pageSizeOptions;"string"==typeof s&&(s=s.split(","));for(var o=0;o'+a+"
  • ").toggleClass("active",a===i.recPerPage);n.append(r)}return t('
    ').addClass(e.options.menuDirection).append(n)},o.prototype.createElement=function(e,i,n){var s=this,o=t.proxy(s.createLinkItem,s),a=s.lang;switch(e){case"prev":return o(n.prev,a.prev);case"prev_icon":return o(n.prev,'');case"next":return o(n.next,a.next);case"next_icon":return o(n.next,'');case"first":return o(1,a.first,!0);case"first_icon":return o(1,'',!0);case"last":return o(n.totalPage,a.last,!0);case"last_icon":return o(n.totalPage,'',!0);case"space":case"|":return t('
  • ');case"nav":case"pages":return void s.createNavItems();case"total_text":return t(('
    '+a.totalCount+"
    ").format(n));case"page_text":return t(('
    '+a.pageOf+"
    ").format(n));case"total_page_text":return t(('
    '+a.totalPage+"
    ").format(n));case"page_of_total_text":return t(('
    '+a.pageOfTotal+"
    ").format(n));case"page_size_text":return t(('
    '+a.pageSize+"
    ").format(n));case"items_range_text":return t(('
    '+a.itemsRange+"
    ").format(n));case"goto":return s.createGoto();case"size_menu":return s.createSizeMenu();default:return t("
  • ").html(e)}},o.prototype.createLink=function(i,n){i===e&&(i=this.state.page),n===e&&(n=this.state);var s=this.options.linkCreator;return"string"==typeof s?s.format(t.extend({},n,{page:i})):t.isFunction(s)?s(i,n):"#page="+i},o.prototype.render=function(e){var i=this,n=i.state,s=i.options.elementCreator||i.createElement,o=t.isPlainObject(s);e=e||i.elements||i.options.elements,"string"==typeof e&&(e=e.split(",")),i.elements=e,i.$.empty();for(var a=0;a").append(h)),i.$.append(h))}var c=null;return i.$.children("li").each(function(){var e=t(this),i=!!e.children(".pager-item").length;c?c.toggleClass("pager-item-right",!i):i&&e.addClass("pager-item-left"),c=i?e:null}),c&&c.addClass("pager-item-right"),i.$.callComEvent(i,"onRender",[n]),i},o.DEFAULTS=t.extend({elements:["first_icon","prev_icon","pages","next_icon","last_icon","page_of_total_text","items_range_text","total_text"],prevIcon:"icon-double-angle-left",nextIcon:"icon-double-angle-right",firstIcon:"icon-step-backward",lastIcon:"icon-step-forward",navEllipsisItem:'',maxNavCount:10,menuDirection:"dropdown",pageSizeOptions:[10,20,30,50,100]},n),t.fn.pager=function(e){return this.each(function(){var n=t(this),s=n.data(i),a="object"==typeof e&&e;s||n.data(i,s=new o(this,a)),"string"==typeof e&&s[e]()})},o.NAME=i,t.fn.pager.Constructor=o,t(function(){t('[data-ride="pager"]').pager()})}(jQuery,void 0),+function(t){"use strict";var e="zui.tab",i=function(e){this.element=t(e)};i.prototype.show=function(){var i=this.element,n=i.closest("ul:not(.dropdown-menu)"),s=i.attr("data-target")||i.attr("data-tab");if(s||(s=i.attr("href"),s=s&&s.replace(/.*(?=#[^\s]*$)/,"")),!i.parent("li").hasClass("active")){var o=n.find(".active:last a")[0],a=t.Event("show."+e,{relatedTarget:o});if(i.trigger(a),!a.isDefaultPrevented()){var r=t(s);this.activate(i.parent("li"),n),this.activate(r,r.parent(),function(){i.trigger({type:"shown."+e,relatedTarget:o})})}}},i.prototype.activate=function(e,i,n){function s(){o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),e.addClass("active"),a?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu")&&e.closest("li.dropdown").addClass("active"),n&&n()}var o=i.find("> .active"),a=n&&t.support.transition&&o.hasClass("fade");a?o.one(t.support.transition.end,s).emulateTransitionEnd(150):s(),o.removeClass("in")};var n=t.fn.tab;t.fn.tab=function(n){return this.each(function(){var s=t(this),o=s.data(e);o||s.data(e,o=new i(this)),"string"==typeof n&&o[n]()})},t.fn.tab.Constructor=i,t.fn.tab.noConflict=function(){return t.fn.tab=n,this},t(document).on("click.zui.tab.data-api",'[data-toggle="tab"], [data-tab]',function(e){e.preventDefault(),t(this).tab("show")})}(window.jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,n=this;t(this).one("bsTransitionEnd",function(){i=!0});var s=function(){i||t(n).trigger(t.support.transition.end)};return setTimeout(s,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";var e="zui.collapse",i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.transitioning=null,this.options.parent&&(this.$parent=t(this.options.parent)),this.options.toggle&&this.toggle()};i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var i=t.Event("show."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.$parent&&this.$parent.find(".in");if(n&&n.length){var s=n.data(e);if(s&&s.transitioning)return;n.collapse("hide"),s||n.data(e,null)}var o=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[o](0),this.transitioning=1;var a=function(){this.$element.removeClass("collapsing").addClass("in")[o]("auto"),this.transitioning=0,this.$element.trigger("shown."+e)};if(!t.support.transition)return a.call(this);var r=t.camelCase(["scroll",o].join("-"));this.$element.one(t.support.transition.end,t.proxy(a,this)).emulateTransitionEnd(350)[o](this.$element[0][r])}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var i=t.Event("hide."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var s=function(){this.transitioning=0,this.$element.trigger("hidden."+e).removeClass("collapsing").addClass("collapse")};return t.support.transition?void this.$element[n](0).one(t.support.transition.end,t.proxy(s,this)).emulateTransitionEnd(350):s.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var n=t.fn.collapse;t.fn.collapse=function(n){return this.each(function(){var s=t(this),o=s.data(e),a=t.extend({},i.DEFAULTS,s.data(),"object"==typeof n&&n);o||s.data(e,o=new i(this,a)),"string"==typeof n&&o[n]()})},t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=n,this},t(document).on("click."+e+".data-api","[data-toggle=collapse]",function(i){var n,s=t(this),o=s.attr("data-target")||i.preventDefault()||(n=s.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,""),a=t(o),r=a.data(e),l=r?"toggle":s.data(),h=s.attr("data-parent"),c=h&&t(h);r&&r.transitioning||(c&&c.find('[data-toggle=collapse][data-parent="'+h+'"]').not(s).addClass("collapsed"),s[a.hasClass("in")?"addClass":"removeClass"]("collapsed")),a.collapse(l)})}(window.jQuery),function(t,e){"use strict";var i=1200,n=992,s=768,o=e(t),a=function(){var t=o.width();e("html").toggleClass("screen-desktop",t>=n&&t=i).toggleClass("screen-tablet",t>=s&&t=n)},r="",l=navigator.userAgent;l.match(/(iPad|iPhone|iPod)/i)?r+=" os-ios":l.match(/android/i)?r+=" os-android":l.match(/Win/i)?r+=" os-windows":l.match(/Mac/i)?r+=" os-mac":l.match(/Linux/i)?r+=" os-linux":l.match(/X11/i)&&(r+=" os-unix"),"ontouchstart"in document.documentElement&&(r+=" is-touchable"),e("html").addClass(r),o.resize(a),a()}(window,jQuery),function(t){"use strict";var e={zh_cn:'您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...',zh_tw:'您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...',en:'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...'},i=function(){var t=this.isIE()||this.isIE10()||!1;if(t)for(var e=10;e>5;e--)if(this.isIE(e)){t=e;break}this.ie=t,this.cssHelper()};i.prototype.cssHelper=function(){var e=this.ie,i=t("html");i.toggleClass("ie",e).removeClass("ie-6 ie-7 ie-8 ie-9 ie-10"),e&&i.addClass("ie-"+e).toggleClass("gt-ie-7 gte-ie-8 support-ie",e>=8).toggleClass("lte-ie-7 lt-ie-8 outdated-ie",e<8).toggleClass("gt-ie-8 gte-ie-9",e>=9).toggleClass("lte-ie-8 lt-ie-9",e<9).toggleClass("gt-ie-9 gte-ie-10",e>=10).toggleClass("lte-ie-9 lt-ie-10",e<10)},i.prototype.tip=function(i){var n=t("#browseHappyTip");n.length||(n=t('
    '),n.prependTo("body")),n.find(".content").html(i||this.browseHappyTip||e[t.zui.clientLang()||"zh_cn"])},i.prototype.isIE=function(t){if(10===t)return this.isIE10();var e=document.createElement("b");return e.innerHTML="",1===e.getElementsByTagName("i").length},i.prototype.isIE10=function(){return!1},t.zui({browser:new i}),t(function(){t("body").hasClass("disabled-browser-tip")||t.zui.browser.ie&&t.zui.browser.ie<8&&t.zui.browser.tip()})}(jQuery),function(){"use strict";Date.ONEDAY_TICKS=864e5,Date.prototype.format||(Date.prototype.format=function(t){var e={"M+":this.getMonth()+1,"d+":this.getDate(),"h+":this.getHours(),"m+":this.getMinutes(),"s+":this.getSeconds(),"q+":Math.floor((this.getMonth()+3)/3),"S+":this.getMilliseconds()};/(y+)/i.test(t)&&(t=t.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length)));for(var i in e)new RegExp("("+i+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[i]:("00"+e[i]).substr((""+e[i]).length)));return t}),Date.prototype.addMilliseconds||(Date.prototype.addMilliseconds=function(t){return this.setTime(this.getTime()+t),this}),Date.prototype.addDays||(Date.prototype.addDays=function(t){return this.addMilliseconds(t*Date.ONEDAY_TICKS),this}),Date.prototype.clone||(Date.prototype.clone=function(){var t=new Date;return t.setTime(this.getTime()),t}),Date.isLeapYear||(Date.isLeapYear=function(t){return t%4===0&&t%100!==0||t%400===0}),Date.getDaysInMonth||(Date.getDaysInMonth=function(t,e){return[31,Date.isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]}),Date.prototype.isLeapYear||(Date.prototype.isLeapYear=function(){return Date.isLeapYear(this.getFullYear())}),Date.prototype.clearTime||(Date.prototype.clearTime=function(){return this.setHours(0),this.setMinutes(0),this.setSeconds(0),this.setMilliseconds(0),this}),Date.prototype.getDaysInMonth||(Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth())}),Date.prototype.addMonths||(Date.prototype.addMonths=function(t){var e=this.getDate();return this.setDate(1),this.setMonth(this.getMonth()+t),this.setDate(Math.min(e,this.getDaysInMonth())),this}),Date.prototype.getLastWeekday||(Date.prototype.getLastWeekday=function(t){t=t||1;for(var e=this.clone();e.getDay()!=t;)e.addDays(-1);return e.clearTime(),e}),Date.prototype.isSameDay||(Date.prototype.isSameDay=function(t){return t.toDateString()===this.toDateString()}),Date.prototype.isSameWeek||(Date.prototype.isSameWeek=function(t){var e=this.getLastWeekday(),i=e.clone().addDays(7);return t>=e&&t0){var i;if(arguments.length<=2&&"object"==typeof t)for(var n in t)void 0!==t[n]&&(i=new RegExp("("+(arguments[1]?arguments[1].replace("0",n):"{"+n+"}")+")","g"),e=e.replace(i,t[n]));else for(var s=0;si.length)&&(e=i.length),e-=t.length;var n=i.indexOf(t,e);return n!==-1&&n===e}),String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.lastIndexOf(t,e)===e}),String.prototype.includes||(String.prototype.includes=function(){return String.prototype.indexOf.apply(this,arguments)!==-1})}(),/*! * jQuery resize event - v1.1 * http://benalman.com/projects/jquery-resize-plugin/ * Copyright (c) 2010 "Cowboy" Ben Alman * MIT & GPL http://benalman.com/about/license/ */ - -// Script: jQuery resize event -// -// *Version: 1.1, Last updated: 3/14/2010* -// -// Project Home - http://benalman.com/projects/jquery-resize-plugin/ -// GitHub - http://github.com/cowboy/jquery-resize/ -// Source - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.js -// (Minified) - http://github.com/cowboy/jquery-resize/raw/master/jquery.ba-resize.min.js (1.0kb) -// -// About: License -// -// Copyright (c) 2010 "Cowboy" Ben Alman, -// Dual licensed under the MIT and GPL licenses. -// http://benalman.com/about/license/ -// -// About: Examples -// -// This working example, complete with fully commented code, illustrates a few -// ways in which this plugin can be used. -// -// resize event - http://benalman.com/code/projects/jquery-resize/examples/resize/ -// -// About: Support and Testing -// -// Information about what version or versions of jQuery this plugin has been -// tested with, what browsers it has been tested in, and where the unit tests -// reside (so you can test it yourself). -// -// jQuery Versions - 1.3.2, 1.4.1, 1.4.2 -// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1. -// Unit Tests - http://benalman.com/code/projects/jquery-resize/unit/ -// -// About: Release History -// -// 1.1 - (3/14/2010) Fixed a minor bug that was causing the event to trigger -// immediately after bind in some circumstances. Also changed $.fn.data -// to $.data to improve performance. -// 1.0 - (2/10/2010) Initial release - -(function($, window, undefined) { - '$:nomunge'; // Used by YUI compressor. - - // A jQuery object containing all non-window elements to which the resize - // event is bound. - var elems = $([]), - - // Extend $.resize if it already exists, otherwise create it. - jq_resize = $.resize = $.extend($.resize, {}), - - timeout_id, - - // Reused strings. - str_setTimeout = 'setTimeout', - str_resize = 'resize', - str_data = str_resize + '-special-event', - str_delay = 'delay', - str_throttle = 'throttleWindow'; - - // Property: jQuery.resize.delay - // - // The numeric interval (in milliseconds) at which the resize event polling - // loop executes. Defaults to 250. - - jq_resize[str_delay] = 250; - - // Property: jQuery.resize.throttleWindow - // - // Throttle the native window object resize event to fire no more than once - // every milliseconds. Defaults to true. - // - // Because the window object has its own resize event, it doesn't need to be - // provided by this plugin, and its execution can be left entirely up to the - // browser. However, since certain browsers fire the resize event continuously - // while others do not, enabling this will throttle the window resize event, - // making event behavior consistent across all elements in all browsers. - // - // While setting this property to false will disable window object resize - // event throttling, please note that this property must be changed before any - // window object resize event callbacks are bound. - - jq_resize[str_throttle] = true; - - // Event: resize event - // - // Fired when an element's width or height changes. Because browsers only - // provide this event for the window element, for other elements a polling - // loop is initialized, running every milliseconds - // to see if elements' dimensions have changed. You may bind with either - // .resize( fn ) or .bind( "resize", fn ), and unbind with .unbind( "resize" ). - // - // Usage: - // - // > jQuery('selector').bind( 'resize', function(e) { - // > // element's width or height has changed! - // > ... - // > }); - // - // Additional Notes: - // - // * The polling loop is not created until at least one callback is actually - // bound to the 'resize' event, and this single polling loop is shared - // across all elements. - // - // Double firing issue in jQuery 1.3.2: - // - // While this plugin works in jQuery 1.3.2, if an element's event callbacks - // are manually triggered via .trigger( 'resize' ) or .resize() those - // callbacks may double-fire, due to limitations in the jQuery 1.3.2 special - // events system. This is not an issue when using jQuery 1.4+. - // - // > // While this works in jQuery 1.4+ - // > $(elem).css({ width: new_w, height: new_h }).resize(); - // > - // > // In jQuery 1.3.2, you need to do this: - // > var elem = $(elem); - // > elem.css({ width: new_w, height: new_h }); - // > elem.data( 'resize-special-event', { width: elem.width(), height: elem.height() } ); - // > elem.resize(); - - $.event.special[str_resize] = { - - // Called only when the first 'resize' event callback is bound per element. - setup: function() { - // Since window has its own native 'resize' event, return false so that - // jQuery will bind the event using DOM methods. Since only 'window' - // objects have a .setTimeout method, this should be a sufficient test. - // Unless, of course, we're throttling the 'resize' event for window. - if(!jq_resize[str_throttle] && this[str_setTimeout]) { - return false; - } - - var elem = $(this); - - // Add this element to the list of internal elements to monitor. - elems = elems.add(elem); - - // Initialize data store on the element. - $.data(this, str_data, { - w: elem.width(), - h: elem.height() - }); - - // If this is the first element added, start the polling loop. - if(elems.length === 1) { - loopy(); - } - }, - - // Called only when the last 'resize' event callback is unbound per element. - teardown: function() { - // Since window has its own native 'resize' event, return false so that - // jQuery will unbind the event using DOM methods. Since only 'window' - // objects have a .setTimeout method, this should be a sufficient test. - // Unless, of course, we're throttling the 'resize' event for window. - if(!jq_resize[str_throttle] && this[str_setTimeout]) { - return false; - } - - var elem = $(this); - - // Remove this element from the list of internal elements to monitor. - elems = elems.not(elem); - - // Remove any data stored on the element. - elem.removeData(str_data); - - // If this is the last element removed, stop the polling loop. - if(!elems.length) { - clearTimeout(timeout_id); - } - }, - - // Called every time a 'resize' event callback is bound per element (new in - // jQuery 1.4). - add: function(handleObj) { - // Since window has its own native 'resize' event, return false so that - // jQuery doesn't modify the event object. Unless, of course, we're - // throttling the 'resize' event for window. - if(!jq_resize[str_throttle] && this[str_setTimeout]) { - return false; - } - - var old_handler; - - // The new_handler function is executed every time the event is triggered. - // This is used to update the internal element data store with the width - // and height when the event is triggered manually, to avoid double-firing - // of the event callback. See the "Double firing issue in jQuery 1.3.2" - // comments above for more information. - - function new_handler(e, w, h) { - var elem = $(this), - data = $.data(this, str_data) || {}; - - // If called from the polling loop, w and h will be passed in as - // arguments. If called manually, via .trigger( 'resize' ) or .resize(), - // those values will need to be computed. - data.w = w !== undefined ? w : elem.width(); - data.h = h !== undefined ? h : elem.height(); - - old_handler.apply(this, arguments); - }; - - // This may seem a little complicated, but it normalizes the special event - // .add method between jQuery 1.4/1.4.1 and 1.4.2+ - if($.isFunction(handleObj)) { - // 1.4, 1.4.1 - old_handler = handleObj; - return new_handler; - } else { - // 1.4.2+ - old_handler = handleObj.handler; - handleObj.handler = new_handler; - } - } - - }; - - function loopy() { - - // Start the polling loop, asynchronously. - timeout_id = window[str_setTimeout](function() { - - // Iterate over all elements to which the 'resize' event is bound. - elems.each(function() { - var elem = $(this), - width = elem.width(), - height = elem.height(), - data = $.data(this, str_data); - - // If element size has changed since the last time, update the element - // data store and trigger the 'resize' event. - if(width !== data.w || height !== data.h) { - elem.trigger(str_resize, [data.w = width, data.h = height]); - } - - }); - - // Loop. - loopy(); - - }, jq_resize[str_delay]); - - }; - -})(jQuery, this); - - -/* ======================================================================== - * jQuery Cookie Plugin v1.4.1 - * https://github.com/carhartl/jquery-cookie - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * official version in the future. - * http://zui.sexy - * ======================================================================== - * Copyright 2013 Klaus Hartl - * Released under the MIT license - * ======================================================================== */ - - -/*! +function(t,e,i){"$:nomunge";function n(){s=e[r](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),s=t.data(this,h);i===s.w&&n===s.h||e.trigger(l,[s.w=i,s.h=n])}),n()},a[c])}var s,o=t([]),a=t.resize=t.extend(t.resize,{}),r="setTimeout",l="resize",h=l+"-special-event",c="delay",d="throttleWindow";a[c]=250,a[d]=!0,t.event.special[l]={setup:function(){if(!a[d]&&this[r])return!1;var e=t(this);o=o.add(e),t.data(this,h,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!a[d]&&this[r])return!1;var e=t(this);o=o.not(e),e.removeData(h),o.length||clearTimeout(s)},add:function(e){function n(e,n,o){var a=t(this),r=t.data(this,h)||{};r.w=n!==i?n:a.width(),r.h=o!==i?o:a.height(),s.apply(this,arguments)}if(!a[d]&&this[r])return!1;var s;return t.isFunction(e)?(s=e,n):(s=e.handler,void(e.handler=n))}}}(jQuery,this),/*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * Copyright 2006, 2014 Klaus Hartl * Released under the MIT license */ - -(function(factory) { - if(typeof define === 'function' && define.amd) { - // AMD - define(['jquery'], factory); - } else if(typeof exports === 'object') { - // CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function($) { - - var pluses = /\+/g; - - function encode(s) { - return config.raw ? s : encodeURIComponent(s); - } - - function decode(s) { - return config.raw ? s : decodeURIComponent(s); - } - - function stringifyCookieValue(value) { - return encode(config.json ? JSON.stringify(value) : String(value)); - } - - function parseCookieValue(s) { - if(s.indexOf('"') === 0) { - // This is a quoted cookie as according to RFC2068, unescape... - s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); - } - - try { - // Replace server-side written pluses with spaces. - // If we can't decode the cookie, ignore it, it's unusable. - // If we can't parse the cookie, ignore it, it's unusable. - s = decodeURIComponent(s.replace(pluses, ' ')); - return config.json ? JSON.parse(s) : s; - } catch(e) {} - } - - function read(s, converter) { - var value = config.raw ? s : parseCookieValue(s); - return $.isFunction(converter) ? converter(value) : value; - } - - var config = $.cookie = function(key, value, options) { - - // Write - - if(value !== undefined && !$.isFunction(value)) { - options = $.extend({}, config.defaults, options); - - if(typeof options.expires === 'number') { - var days = options.expires, - t = options.expires = new Date(); - t.setTime(+t + days * 864e+5); - } - - return(document.cookie = [ - encode(key), '=', stringifyCookieValue(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } - - // Read - - var result = key ? undefined : {}; - - // To prevent the for loop in the first place assign an empty array - // in case there are no cookies at all. Also prevents odd result when - // calling $.cookie(). - var cookies = document.cookie ? document.cookie.split('; ') : []; - - for(var i = 0, l = cookies.length; i < l; i++) { - var parts = cookies[i].split('='); - var name = decode(parts.shift()); - var cookie = parts.join('='); - - if(key && key === name) { - // If second argument (value) is a function it's a converter... - result = read(cookie, value); - break; - } - - // Prevent storing a cookie that we couldn't decode. - if(!key && (cookie = read(cookie)) !== undefined) { - result[name] = cookie; - } - } - - return result; - }; - - config.defaults = {}; - - $.removeCookie = function(key, options) { - if($.cookie(key) === undefined) { - return false; - } - - // Must not alter options, thus extending a fresh object... - $.cookie(key, '', $.extend({}, options, { - expires: -1 - })); - return !$.cookie(key); - }; -})); - -/* ======================================================================== - * ZUI: storeb.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function(window, $) { - 'use strict'; - - var lsName = 'localStorage'; - var storage, - dataset, - pageName = 'page_' + window.location.pathname + window.location.search; - - /* The Store object */ - var Store = function() { - this.slience = true; - try { - if((lsName in window) && window[lsName] && window[lsName].setItem) { - this.enable = true; - storage = window[lsName]; - } - } catch(e){} - if(!this.enable) { - dataset = {}; - storage = { - getLength: function() { - var length = 0; - $.each(dataset, function() { - length++; - }); - return length; - }, - key: function(index) { - var key, i = 0; - $.each(dataset, function(k) { - if(i === index) { - key = k; - return false; - } - i++; - }); - return key; - }, - removeItem: function(key) { - delete dataset[key]; - }, - getItem: function(key) { - return dataset[key]; - }, - setItem: function(key, val) { - dataset[key] = val; - }, - clear: function() { - dataset = {}; - } - }; - } - this.storage = storage; - this.page = this.get(pageName, {}); - }; - - /* Save page data */ - Store.prototype.pageSave = function() { - if($.isEmptyObject(this.page)) { - this.remove(pageName); - } else { - var forDeletes = [], - i; - for(i in this.page) { - var val = this.page[i]; - if(val === null) - forDeletes.push(i); - } - for(i = forDeletes.length - 1; i >= 0; i--) { - delete this.page[forDeletes[i]]; - } - this.set(pageName, this.page); - } - }; - - /* Remove page data item */ - Store.prototype.pageRemove = function(key) { - if(typeof this.page[key] != 'undefined') { - this.page[key] = null; - this.pageSave(); - } - }; - - /* Clear page data */ - Store.prototype.pageClear = function() { - this.page = {}; - this.pageSave(); - }; - - /* Get page data */ - Store.prototype.pageGet = function(key, defaultValue) { - var val = this.page[key]; - return(defaultValue !== undefined && (val === null || val === undefined)) ? defaultValue : val; - }; - - /* Set page data */ - Store.prototype.pageSet = function(objOrKey, val) { - if($.isPlainObject(objOrKey)) { - $.extend(true, this.page, objOrKey); - } else { - this.page[this.serialize(objOrKey)] = val; - } - this.pageSave(); - }; - - /* Check enable status */ - Store.prototype.check = function() { - if(!this.enable) { - if(!this.slience) throw new Error('Browser not support localStorage or enable status been set true.'); - } - return this.enable; - }; - - /* Get length */ - Store.prototype.length = function() { - if(this.check()) { - return storage.getLength ? storage.getLength() : storage.length; - } - return 0; - }; - - /* Remove item with browser localstorage native method */ - Store.prototype.removeItem = function(key) { - storage.removeItem(key); - return this; - }; - - /* Remove item with browser localstorage native method, same as removeItem */ - Store.prototype.remove = function(key) { - return this.removeItem(key); - }; - - /* Get item value with browser localstorage native method, and without deserialize */ - Store.prototype.getItem = function(key) { - return storage.getItem(key); - }; - - /* Get item value and deserialize it, if value is null and defaultValue been given then return defaultValue */ - Store.prototype.get = function(key, defaultValue) { - var val = this.deserialize(this.getItem(key)); - if(typeof val === 'undefined' || val === null) { - if(typeof defaultValue !== 'undefined') { - return defaultValue; - } - } - return val; - }; - - /* Get item key by index and deserialize it */ - Store.prototype.key = function(index) { - return storage.key(index); - }; - - /* Set item value with browser localstorage native method, and without serialize filter */ - Store.prototype.setItem = function(key, val) { - storage.setItem(key, val); - return this; - }; - - /* Set item value, serialize it if the given value is not an string */ - Store.prototype.set = function(key, val) { - if(val === undefined) return this.remove(key); - this.setItem(key, this.serialize(val)); - return this; - }; - - /* Clear all items with browser localstorage native method */ - Store.prototype.clear = function() { - storage.clear(); - return this; - }; - - /* Iterate all items with callback */ - Store.prototype.forEach = function(callback) { - var length = this.length(); - for(var i = length - 1; i >= 0; i--) { - var key = storage.key(i); - callback(key, this.get(key)); - } - return this; - }; - - /* Get all items and set value in an object. */ - Store.prototype.getAll = function() { - var all = {}; - this.forEach(function(key, val) { - all[key] = val; - }); - - return all; - }; - - /* Serialize value with JSON.stringify */ - Store.prototype.serialize = function(value) { - if(typeof value === 'string') return value; - return JSON.stringify(value); - }; - - /* Deserialize value, with JSON.parse if the given value is not a string */ - Store.prototype.deserialize = function(value) { - if(typeof value !== 'string') return undefined; - try { - return JSON.parse(value); - } catch(e) { - return value || undefined; - } - }; - - $.zui({ - store: new Store() - }); -}(window, jQuery)); - - -/* ======================================================================== - * ZUI: searchbox.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($) { - 'use strict'; - - var NAME = 'zui.searchBox'; // modal name - - // The searchbox modal class - var SearchBox = function(element, options) { - var that = this; - that.name = name; - that.$ = $(element); - - that.options = options = $.extend({}, SearchBox.DEFAULTS, that.$.data(), options); - - // Initialize here - var $input = that.$.is(options.inputSelector) ? that.$ : that.$.find(options.inputSelector); - if ($input.length) { - var clearChangeTimer = function() { - if (that.changeTimer) { - clearTimeout(that.changeTimer); - that.changeTimer = null; - } - }; - - var handleChange = function() { - clearChangeTimer(); - var value = that.getSearch(); - if (value !== that.lastValue) { - var isEmpty = value === ''; - $input.toggleClass('empty', isEmpty); - that.$.callComEvent(that, 'onSearchChange', [value, isEmpty]); - that.lastValue = value; - } - }; - - that.$input = $input = $input.first(); - - $input.on(options.listenEvent, function(params) { - that.changeTimer = setTimeout(function() { - handleChange(); - }, options.changeDelay); - }).on('focus', function(e) { - $input.addClass('focus'); - that.$.callComEvent(that, 'onFocus', [e]); - }).on('blur', function(e) { - $input.removeClass('focus'); - that.$.callComEvent(that, 'onBlur', [e]); - }).on('keydown', function(e) { - var handled = 0; - var keyCode = e.which; - if (keyCode === 27 && options.escToClear) { // esc - this.setSearch('', true); - handleChange(); - handled = 1; - } else if (keyCode === 13 && options.onPressEnter) { - handleChange(); - that.$.callComEvent(that, 'onPressEnter', [e]); - } - var onKeyDownResult = that.$.callComEvent(that, 'onKeyDown', [e]); - if (onKeyDownResult === false) { - handled = 1; - } - if (handled) { - e.preventDefault(); - } - }); - - that.$.on('click', '.search-clear-btn', function(e) { - that.setSearch('', true); - handleChange(); - that.focus(); - e.preventDefault(); - }); - - handleChange(); - } else { - console.error('ZUI: search box init error, cannot find search box input element.'); - } - }; - - // default options - SearchBox.DEFAULTS = { - inputSelector: 'input[type="search"],input[type="text"]', - listenEvent: 'change input paste', - changeDelay: 500, - - // onKeyDown: null, - // onFocus: null, - // onBlur: null, - // onSearchChange: null, - // onPressEnter: null, - // escToClear: true - }; - - // Get current search string - SearchBox.prototype.getSearch = function() { - return this.$input && $.trim(this.$input.val()); - }; - - // Set current search string - SearchBox.prototype.setSearch = function(value, notTriggerChange) { - var $input = this.$input; - if ($input) { - $input.val(value); - if (!notTriggerChange) { - $input.trigger('change'); - } - } - }; - - // Focus input element - SearchBox.prototype.focus = function() { - this.$input && this.$input.focus(); - }; - - // Extense jquery element - $.fn.searchBox = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new SearchBox(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - SearchBox.NAME = NAME; - - $.fn.searchBox.Constructor = SearchBox; -}(jQuery)); - - -/* ======================================================================== - * ZUI: draggable.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($, document) { - 'use strict'; - - var NAME = 'zui.draggable', - DEFAULTS = { - // selector: '', - container: 'body', - move: true - // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle - }; - var idIncrementer = 0; - - var Draggable = function(element, options) { - var that = this; - that.$ = $(element); - that.id = idIncrementer++; - that.options = $.extend({}, DEFAULTS, that.$.data(), options); - that.init(); - }; - - Draggable.DEFAULTS = DEFAULTS; - Draggable.NAME = NAME; - - Draggable.prototype.init = function() { - var that = this, - $root = that.$, - BEFORE = 'before', - DRAG = 'drag', - FINISH = 'finish', - eventSuffix = '.' + NAME + '.' + that.id, - mouseDownEvent = 'mousedown' + eventSuffix, - mouseUpEvent = 'mouseup' + eventSuffix, - mouseMoveEvent = 'mousemove' + eventSuffix, - setting = that.options, - selector = setting.selector, - handle = setting.handle, - $ele = $root, - isMoveFunc = $.isFunction(setting.move), - startPos, - cPos, - startOffset, - mousePos, - moved; - - var mouseMove = function(event) { - var mX = event.pageX, - mY = event.pageY; - moved = true; - var dragPos = { - left: mX - startOffset.x, - top: mY - startOffset.y - }; - - $ele.removeClass('drag-ready').addClass('dragging'); - if(setting.move) { - if (isMoveFunc) { - setting.move(dragPos, $ele); - } else { - $ele.css(dragPos); - } - } - - setting[DRAG] && setting[DRAG]({ - event: event, - element: $ele, - startOffset: startOffset, - pos: dragPos, - offset: { - x: mX - startPos.x, - y: mY - startPos.y - }, - smallOffset: { - x: mX - mousePos.x, - y: mY - mousePos.y - } - }); - mousePos.x = mX; - mousePos.y = mY; - - if(setting.stopPropagation) { - event.stopPropagation(); - } - }; - - var mouseUp = function(event) { - $(document).off(eventSuffix); - if(!moved) { - $ele.removeClass('drag-ready'); - return; - } - var endPos = { - left: event.pageX - startOffset.x, - top: event.pageY - startOffset.y - }; - $ele.removeClass('drag-ready dragging'); - if(setting.move) { - if (isMoveFunc) { - setting.move(endPos, $ele); - } else { - $ele.css(endPos); - } - } - - setting[FINISH] && setting[FINISH]({ - event: event, - element: $ele, - startOffset: startOffset, - pos: endPos, - offset: { - x: event.pageX - startPos.x, - y: event.pageY - startPos.y - }, - smallOffset: { - x: event.pageX - mousePos.x, - y: event.pageY - mousePos.y - } - }); - event.preventDefault(); - if(setting.stopPropagation) { - event.stopPropagation(); - } - }; - - var mouseDown = function(event) { - var mouseButton = $.zui.getMouseButtonCode(setting.mouseButton); - if(mouseButton > -1 && event.button !== mouseButton) { - return; - } - - var $mouseDownEle = $(this); - if(selector) { - $ele = handle ? $mouseDownEle.closest(selector) : $mouseDownEle; - } - - if(setting[BEFORE]) { - var isSure = setting[BEFORE]({ - event: event, - element: $ele - }); - if(isSure === false) return; - } - - var $container = $(setting.container), - pos = $ele.offset(); - cPos = $container.offset(); - startPos = { - x: event.pageX, - y: event.pageY - }; - startOffset = { - x: event.pageX - pos.left + cPos.left, - y: event.pageY - pos.top + cPos.top - }; - mousePos = $.extend({}, startPos); - moved = false; - - $ele.addClass('drag-ready'); - event.preventDefault(); - - if(setting.stopPropagation) { - event.stopPropagation(); - } - - $(document).on(mouseMoveEvent, mouseMove).on(mouseUpEvent, mouseUp); - }; - - if(handle) { - $root.on(mouseDownEvent, handle, mouseDown); - } else if(selector) { - $root.on(mouseDownEvent, selector, mouseDown); - } else { - $root.on(mouseDownEvent, mouseDown); - } - }; - - Draggable.prototype.destroy = function() { - var eventSuffix = '.' + NAME + '.' + this.id; - this.$.off(eventSuffix); - $(document).off(eventSuffix); - this.$.data(NAME, null); - }; - - $.fn.draggable = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new Draggable(this, options))); - if(typeof option == 'string') data[option](); - }); - }; - - $.fn.draggable.Constructor = Draggable; -}(jQuery, document)); - - -/* ======================================================================== - * ZUI: droppable.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($, document, Math) { - 'use strict'; - - var NAME = 'zui.droppable', - DEFAULTS = { - // container: '', - // selector: '', - // handle: '', - // flex: false, - // nested: false, - target: '.droppable-target', - deviation: 5, - sensorOffsetX: 0, - sensorOffsetY: 0, - // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle - }; - var idIncrementer = 0; - - var Droppable = function(element, options) { - var that = this; - that.id = idIncrementer++; - that.$ = $(element); - that.options = $.extend({}, DEFAULTS, that.$.data(), options); - that.init(); - }; - - Droppable.DEFAULTS = DEFAULTS; - Droppable.NAME = NAME; - - Droppable.prototype.trigger = function(name, params) { - return $.zui.callEvent(this.options[name], params, this); - }; - - Droppable.prototype.init = function() { - var that = this, - $root = that.$, - setting = that.options, - deviation = setting.deviation, - eventSuffix = '.' + NAME + '.' + that.id, - mouseDownEvent = 'mousedown' + eventSuffix, - mouseUpEvent = 'mouseup' + eventSuffix, - mouseMoveEvent = 'mousemove' + eventSuffix, - selector = setting.selector, - handle = setting.handle, - flex = setting.flex, - container = setting.container, - canMoveHere = setting.canMoveHere, - $ele = $root, - isMouseDown = false, - $container = container ? $(setting.container).first() : (selector ? $root : $('body')), - $targets, - $target, - $shadow, - isIn, - isSelf, - oldCssPosition, - startOffset, - startMouseOffset, - containerOffset, - clickOffset, - mouseOffset, - lastMouseOffset, - mouseDownBackEventCall; - - var mouseMove = function(event) { - if(!isMouseDown) return; - - mouseOffset = {left: event.pageX, top: event.pageY}; - - // ignore small move - if(Math.abs(mouseOffset.left - startMouseOffset.left) < deviation && Math.abs(mouseOffset.top - startMouseOffset.top) < deviation) return; - - if($shadow === null) // create shadow - { - var cssPosition = $container.css('position'); - if(cssPosition != 'absolute' && cssPosition != 'relative' && cssPosition != 'fixed') { - oldCssPosition = cssPosition; - $container.css('position', 'relative'); - } - - $shadow = $ele.clone().removeClass('drag-from').addClass('drag-shadow').css({ - position: 'absolute', - width: $ele.outerWidth(), - transition: 'none' - }).appendTo($container); - $ele.addClass('dragging'); - - that.trigger('start', { - event: event, - element: $ele, - targets: $targets - }); - } - - var offset = { - left: mouseOffset.left - clickOffset.left, - top: mouseOffset.top - clickOffset.top - }; - var position = { - left: offset.left - containerOffset.left, - top: offset.top - containerOffset.top - }; - $shadow.css(position); - $.extend(lastMouseOffset, mouseOffset); - - var isNew = false; - isIn = false; - - if(!flex) { - $targets.removeClass('drop-to'); - } - - var $newTarget = null; - $targets.each(function() { - var t = $(this), - tPos = t.offset(), - tW = t.outerWidth(), - tH = t.outerHeight(), - tX = tPos.left + setting.sensorOffsetX, - tY = tPos.top + setting.sensorOffsetY; - - if(mouseOffset.left > tX && mouseOffset.top > tY && mouseOffset.left < (tX + tW) && mouseOffset.top < (tY + tH)) { - if($newTarget) $newTarget.removeClass('drop-to'); - $newTarget = t; - if(!setting.nested) return false; - } - }); - - if($newTarget) { - isIn = true; - var id = $newTarget.data('id'); - if($ele.data('id') != id) isSelf = false; - if($target === null || ($target.data('id') !== id && (!isSelf))) isNew = true; - $target = $newTarget; - if(flex) { - $targets.removeClass('drop-to'); - } - $target.addClass('drop-to'); - } - - - if(!flex) { - $ele.toggleClass('drop-in', isIn); - $shadow.toggleClass('drop-in', isIn); - } else if($target !== null && $target.length) { - isIn = true; - } - - if(!canMoveHere || canMoveHere($ele, $target) !== false) { - that.trigger('drag', { - event: event, - isIn: isIn, - target: $target, - element: $ele, - isNew: isNew, - selfTarget: isSelf, - clickOffset: clickOffset, - offset: offset, - position: { - left: offset.left - containerOffset.left, - top: offset.top - containerOffset.top - }, - mouseOffset: mouseOffset - }); - } - - event.preventDefault(); - }; - - var mouseUp = function(event) { - $(document).off(eventSuffix); - clearTimeout(mouseDownBackEventCall); - if(!isMouseDown) return; - - isMouseDown = false; - - if(oldCssPosition) { - $container.css('position', oldCssPosition); - } - - if($shadow === null) { - $ele.removeClass('drag-from'); - that.trigger('always', { - event: event, - cancel: true - }); - return; - } - - if(!isIn) $target = null; - var isSure = true; - mouseOffset = event ? { - left: event.pageX, - top: event.pageY - } : lastMouseOffset; - var offset = { - left: mouseOffset.left - clickOffset.left, - top: mouseOffset.top - clickOffset.top - }; - var moveOffset = { - left: mouseOffset.left - lastMouseOffset.left, - top: mouseOffset.top - lastMouseOffset.top - }; - lastMouseOffset.left = mouseOffset.left; - lastMouseOffset.top = mouseOffset.top; - var eventOptions = { - event: event, - isIn: isIn, - target: $target, - element: $ele, - isNew: (!isSelf) && $target !== null, - selfTarget: isSelf, - offset: offset, - mouseOffset: mouseOffset, - position: { - left: offset.left - containerOffset.left, - top: offset.top - containerOffset.top - }, - lastMouseOffset: lastMouseOffset, - moveOffset: moveOffset - }; - - isSure = that.trigger('beforeDrop', eventOptions); - - if(isSure && isIn) { - that.trigger('drop', eventOptions); - } - - $targets.removeClass('drop-to'); - $ele.removeClass('dragging').removeClass('drag-from'); - $shadow.remove(); - $shadow = null; - - that.trigger('finish', eventOptions); - that.trigger('always', eventOptions); - - if(event) event.preventDefault(); - }; - - var mouseDown = function(event) { - var mouseButton = $.zui.getMouseButtonCode(setting.mouseButton); - if(mouseButton > -1 && event.button !== mouseButton) { - return; - } - - var $mouseDownEle = $(this); - if(selector) { - $ele = handle ? $mouseDownEle.closest(selector) : $mouseDownEle; - } - - if($ele.hasClass('drag-shadow')) { - return; - } - - if(setting['before']) { - if(setting['before']({ - event: event, - element: $ele - }) === false) return; - } - - isMouseDown = true; - $targets = $.isFunction(setting.target) ? setting.target($ele, $root) : $container.find(setting.target), - $target = null, - $shadow = null, - isIn = false, - isSelf = true, - oldCssPosition = null, - startOffset = $ele.offset(), - containerOffset = $container.offset(); - startMouseOffset = {left: event.pageX, top: event.pageY}; - lastMouseOffset = $.extend({}, startMouseOffset); - clickOffset = { - left: startMouseOffset.left - startOffset.left, - top: startMouseOffset.top - startOffset.top - }; - - $ele.addClass('drag-from'); - $(document).on(mouseMoveEvent, mouseMove).on(mouseUpEvent, mouseUp); - mouseDownBackEventCall = setTimeout(function() { - $(document).on(mouseDownEvent, mouseUp); - }, 10); - event.preventDefault(); - }; - - if(handle) { - $root.on(mouseDownEvent, handle, mouseDown); - } else if(selector) { - $root.on(mouseDownEvent, selector, mouseDown); - } else { - $root.on(mouseDownEvent, mouseDown); - } - }; - - Droppable.prototype.destroy = function() { - var eventSuffix = '.' + NAME + '.' + this.id; - this.$.off(eventSuffix); - $(document).off(eventSuffix); - this.$.data(NAME, null); - }; - - Droppable.prototype.reset = function() { - this.destroy(); - this.init(); - }; - - $.fn.droppable = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new Droppable(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - $.fn.droppable.Constructor = Droppable; -}(jQuery, document, Math)); - -/* ======================================================================== - * Bootstrap: modal.js v3.2.0 - * http://getbootstrap.com/javascript/#modals - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * Bootsrap version in the future. - * http://zui.sexy - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== - * Updates in ZUI: - * 1. changed event namespace to *.zui.modal - * 2. added position option to ajust poisition of modal - * 3. added event 'escaping.zui.modal' with an param 'esc' to judge the esc - * key down - * 4. get moveable options value from '.modal-moveable' on '.modal-dialog' - * 5. add setMoveable method to make modal dialog moveable - * ======================================================================== */ - -+ function($, undefined) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var zuiname = 'zui.modal' - var Modal = function(element, options) { - var that = this; - that.options = options - that.$body = $(document.body) - that.$element = $(element) - that.$backdrop = - that.isShown = null - that.scrollbarWidth = 0 - - if(options.moveable === undefined) { - that.options.moveable = that.$element.hasClass('modal-moveable'); - } - - if(options.remote) { - that.$element - .find('.modal-content') - .load(options.remote, function() { - that.$element.trigger('loaded.' + zuiname) - }) - } - } - - Modal.VERSION = '3.2.0' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true, - // rememberPos: false, - // moveable: false, - position: 'fit' // 'center' or '40px' or '10%', - }; - - var setDialogPos = function($dialog, pos) { - var $window = $(window); - pos.left = Math.max(0, Math.min(pos.left, $window.width() - $dialog.outerWidth())); - pos.top = Math.max(0, Math.min(pos.top, $window.height() - $dialog.outerHeight())); - $dialog.css(pos); - }; - - Modal.prototype.toggle = function(_relatedTarget, position) { - return this.isShown ? this.hide() : this.show(_relatedTarget, position) - } - - Modal.prototype.ajustPosition = function(position) { - var that = this; - var options = that.options; - if(position === undefined) position = options.position; - if(position === undefined) return; - if ($.isFunction(position)) { - position = position(that); - } - var $dialog = that.$element.find('.modal-dialog'); - - var half = Math.max(0, ($(window).height() - $dialog.outerHeight()) / 2); - if (position === 'fit') { - position = {top: Math.floor(half * 2 / 3)}; - } else if (position === 'center') { - position = {top: half}; - } else if (!$.isPlainObject(position)) { - position = {top: position}; - } - if($dialog.hasClass('modal-moveable')) { - var pos = null; - var rememberPos = options.rememberPos; - if(rememberPos) { - if(rememberPos === true) { - pos = that.$element.data('modal-pos'); - } else if($.zui.store) { - pos = $.zui.store.pageGet(zuiname + '.rememberPos.' + rememberPos); - } - } - position = $.extend(position, {left: Math.max(0, ($(window).width() - $dialog.outerWidth()) / 2)}, pos); - if (options.moveable === 'inside') { - setDialogPos($dialog, position); - } else { - $dialog.css(position); - } - } else { - $dialog.css(position); - } - } - - Modal.prototype.setMoveale = function() { - if(!$.fn.draggable) console.error('Moveable modal requires draggable.js.'); - var that = this; - var options = that.options; - var $dialog = that.$element.find('.modal-dialog').removeClass('modal-dragged'); - $dialog.toggleClass('modal-moveable', !!options.moveable); - - if(!that.$element.data('modal-moveable-setup')) { - $dialog.draggable({ - container: that.$element, - handle: '.modal-header', - before: function() { - var marginTop = $dialog.css('margin-top'); - if (marginTop && marginTop !== '0px') { - $dialog.css('top', marginTop).css('margin-top', '').addClass('modal-dragged'); - } - }, - finish: function(e) { - var rememberPos = options.rememberPos; - if(rememberPos) { - that.$element.data('modal-pos', e.pos); - if($.zui.store && rememberPos !== true) { - $.zui.store.pageSet(zuiname + '.rememberPos.' + rememberPos, e.pos); - } - } - }, - move: options.moveable === 'inside' ? function (dragPos) { - setDialogPos($dialog, dragPos); - } : true - }); - } - } - - Modal.prototype.show = function(_relatedTarget, position) { - var that = this - var e = $.Event('show.' + zuiname, { - relatedTarget: _relatedTarget - }) - - that.$element.trigger(e) - - if(that.isShown || e.isDefaultPrevented()) return - - that.isShown = true - - if(that.options.moveable) that.setMoveale(); - - that.checkScrollbar() - if (that.options.backdrop !== false) { - that.$body.addClass('modal-open') - that.setScrollbar() - } - - that.escape() - - that.$element.on('click.dismiss.' + zuiname, '[data-dismiss="modal"]',function(e) { - that.hide(); - e.stopPropagation(); - }) - - that.backdrop(function() { - var transition = $.support.transition && that.$element.hasClass('fade') - - if(!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - if(transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('in') - .attr('aria-hidden', false) - - that.ajustPosition(position); - - that.enforceFocus() - - var e = $.Event('shown.' + zuiname, { - relatedTarget: _relatedTarget - }) - - transition ? - that.$element.find('.modal-dialog') // wait for modal to slide in - .one('bsTransitionEnd', function() { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function(e) { - if(e) e.preventDefault() - - var that = this; - - e = $.Event('hide.' + zuiname) - - that.$element.trigger(e) - - if(!that.isShown || e.isDefaultPrevented()) return - - that.isShown = false - - if (that.options.backdrop !== false) { - that.$body.removeClass('modal-open') - that.resetScrollbar() - } - - that.escape() - - $(document).off('focusin.' + zuiname) - - that.$element - .removeClass('in') - .attr('aria-hidden', true) - .off('click.dismiss.' + zuiname) - - $.support.transition && that.$element.hasClass('fade') ? - that.$element - .one('bsTransitionEnd', $.proxy(that.hideModal, that)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.hideModal() - } - - Modal.prototype.enforceFocus = function() { - $(document) - .off('focusin.' + zuiname) // guard against infinite focus loop - .on('focusin.' + zuiname, $.proxy(function(e) { - if(this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function() { - if(this.isShown && this.options.keyboard) { - $(document).on('keydown.dismiss.' + zuiname, $.proxy(function(e) { - if(e.which == 27) { - var et = $.Event('escaping.' + zuiname) - var result = this.$element.triggerHandler(et, 'esc') - if(result != undefined && (!result)) return - this.hide() - } - }, this)) - } else if(!this.isShown) { - $(document).off('keydown.dismiss.' + zuiname) - } - } - - Modal.prototype.hideModal = function() { - var that = this - this.$element.hide() - this.backdrop(function() { - that.$element.trigger('hidden.' + zuiname) - }) - } - - Modal.prototype.removeBackdrop = function() { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function(callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if(this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $('').appendTo("body").data(n,r);var d=function(e,n){var s=i[e];t.isFunction(s)&&c.on(n+o,s)};d("onShow","show"),d("shown","shown"),d("onHide","hide"),d("hidden","hidden"),d("loaded","loaded"),c.on("shown"+o,function(){r.isShown=!0}).on("hidden"+o,function(){r.isShown=!1}),this.$modal=c,this.$dialog=c.find(".modal-dialog"),i.mergeOptions&&(this.options=i)},r.prototype.show=function(i){var o=t.extend({},this.options,{url:this.$trigger?this.$trigger.attr("href")||this.$trigger.attr("data-url")||this.$trigger.data("url"):this.options.url},i);this.init(o);var r=this,l=this.$modal,h=this.$dialog,c=o.custom,d=h.find(".modal-body").css("padding",""),u=h.find(".modal-header"),p=h.find(".modal-content");l.toggleClass("fade",o.fade).addClass(o.className).toggleClass("modal-loading",!this.isShown),h.toggleClass("modal-md","md"===o.size).toggleClass("modal-sm","sm"===o.size).toggleClass("modal-lg","lg"===o.size).toggleClass("modal-fullscreen","fullscreen"===o.size),u.toggle(o.showHeader),u.find(".modal-icon").attr("class","modal-icon icon-"+o.icon),u.find(".modal-title-name").text(o.title||""),o.size&&"fullscreen"===o.size&&(o.width="",o.height="");var f=function(){clearTimeout(this.resizeTask),this.resizeTask=setTimeout(function(){r.ajustPosition(o.position)},100)},g=function(t,e){return"undefined"==typeof t&&(t=o.delay),setTimeout(function(){h=l.find(".modal-dialog"),o.width&&"auto"!=o.width&&h.css("width",o.width),o.height&&"auto"!=o.height&&(h.css("height",o.height),"iframe"===o.type&&d.css("height",h.height()-u.outerHeight())),r.ajustPosition(o.position),l.removeClass("modal-loading"),"iframe"!=o.type&&h.off("resize."+n).on("resize."+n,f),e&&e()},t)};if("custom"===o.type&&c)if(t.isFunction(c)){var m=c({modal:l,options:o,modalTrigger:r,ready:g});typeof m===a&&(d.html(m),g())}else c instanceof t?(d.html(t("
    ").append(c.clone()).html()),g()):(d.html(c),g());else if(o.url){var v=function(){var t=l.callComEvent(r,"broken");t&&(d.html(t),g())};if(l.attr("ref",o.url),"iframe"===o.type){l.addClass("modal-iframe"),this.firstLoad=!0;var y="iframe-"+o.name;u.detach(),d.detach(),p.empty().append(u).append(d),d.css("padding",0).html(''),o.waittime>0&&(r.waitTimeout=g(o.waittime,v));var b=document.getElementById(y);b.onload=b.onreadystatechange=function(){if(console.log("frame loaded",o),r.firstLoad&&l.addClass("modal-loading"),!this.readyState||"complete"==this.readyState){r.firstLoad=!1,o.waittime>0&&clearTimeout(r.waitTimeout);try{l.attr("ref",b.contentWindow.location.href);var t=e.frames[y].$;if(t&&"auto"===o.height&&"fullscreen"!=o.size){var i=t("body").addClass("body-modal");o.iframeBodyClass&&i.addClass(o.iframeBodyClass);var s=function(t){l.removeClass("fade");var e=i.outerHeight();t===!0&&o.onlyIncreaseHeight&&(e=Math.max(e,d.data("minModalHeight")||0),d.data("minModalHeight",e)),d.css("height",e),o.fade&&l.addClass("fade"),g()};l.callComEvent(r,"loaded",{modalType:"iframe",jQuery:t}),setTimeout(s,100),i.off("resize."+n).on("resize."+n,f)}else g()}catch(a){g()}}}}else t.ajax(t.extend({url:o.url,success:function(i){try{var n=t(i);n.filter(".modal-dialog").length?h.replaceWith(n):n.filter(".modal-content").length?h.find(".modal-content").replaceWith(n):d.wrapInner(n)}catch(o){e.console&&e.console.warn&&console.warn("ZUI: Cannot recogernize remote content.",{error:o,data:i}),l.html(i)}l.callComEvent(r,"loaded",{modalType:s}),g()},error:v},o.ajaxOptions))}l.modal({show:"show",backdrop:o.backdrop,moveable:o.moveable,rememberPos:o.rememberPos,keyboard:o.keyboard})},r.prototype.close=function(i,n){var s=this;(i||n)&&s.$modal.on("hidden"+o,function(){t.isFunction(i)&&i(),typeof n!==a||s.$modal.data("cancel-reload")||("this"===n?e.location.reload():e.location=n)}),s.$modal.modal("hide")},r.prototype.toggle=function(t){this.isShown?this.close():this.show(t)},r.prototype.ajustPosition=function(e){e=e===i?this.options.position:e,t.isFunction(e)&&(e=e(this)),this.$modal.modal("ajustPosition",e)},t.zui({ModalTrigger:r,modalTrigger:new r}),t.fn.modalTrigger=function(e,i){return t(this).each(function(){var s=t(this),o=s.data(n),l=t.extend({title:s.attr("title")||s.text(),url:s.attr("href"),type:s.hasClass("iframe")?"iframe":""},s.data(),t.isPlainObject(e)&&e);o||s.data(n,o=new r(l,s)),typeof e==a?o[e](i):l.show&&o.show(i),s.on((l.trigger||"click")+".toggle."+n,function(t){o.toggle(l),s.is("a")&&t.preventDefault()})})};var l=t.fn.modal;t.fn.modal=function(e,i){return t(this).each(function(){var n=t(this);n.hasClass("modal")?l.call(n,e,i):n.modalTrigger(e,i)})};var h=function(e){return e=t(e?e:".modal.modal-trigger"),e&&e instanceof t?e:null},c=function(i,s,o){var a=i;if(t.isFunction(i)){var r=o;o=s,s=i,i=r}i=h(i),i&&i.length?i.each(function(){t(this).data(n).close(s,o)}):t("body").hasClass("modal-open")||t(".modal.in").length||t("body").hasClass("body-modal")&&e.parent.$.zui.closeModal(a,s,o)},d=function(t,e){e=h(e),e&&e.length&&e.modal("ajustPosition",t)};t.zui({closeModal:c,ajustModalPosition:d}),t(document).on("click."+n+".data-api",'[data-toggle="modal"]',function(e){var i=t(this),s=i.attr("href"),o=null;try{o=t(i.attr("data-target")||s&&s.replace(/.*(?=#[^\s]+$)/,""))}catch(a){}o&&o.length||(i.data(n)?i.trigger(".toggle."+n):i.modalTrigger({show:!0})),i.is("a")&&e.preventDefault()}).on("click."+n+".data-api",'[data-dismiss="modal"]',function(){t.zui.closeModal()})}(window.jQuery,window,void 0),+function(t){"use strict";var e=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",t,e)};e.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},e.prototype.init=function(e,i,n){this.enabled=!0,this.type=e,this.$element=t(i),this.options=this.getOptions(n);for(var s=this.options.trigger.split(" "),o=s.length;o--;){var a=s[o];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var r="hover"==a?"mouseenter":"focus",l="hover"==a?"mouseleave":"blur";this.$element.on(r+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},e.prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},e.prototype.getDelegateOptions=function(){var e={},i=this.getDefaults();return this._options&&t.each(this._options,function(t,n){i[t]!=n&&(e[t]=n)}),e},e.prototype.enter=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget)[this.type](this.getDelegateOptions()).data("zui."+this.type);return clearTimeout(i.timeout),i.hoverState="in",i.options.delay&&i.options.delay.show?void(i.timeout=setTimeout(function(){"in"==i.hoverState&&i.show()},i.options.delay.show)):i.show()},e.prototype.leave=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget)[this.type](this.getDelegateOptions()).data("zui."+this.type);return clearTimeout(i.timeout),i.hoverState="out",i.options.delay&&i.options.delay.hide?void(i.timeout=setTimeout(function(){"out"==i.hoverState&&i.hide()},i.options.delay.hide)):i.hide()},e.prototype.show=function(e){var i=t.Event("show.zui."+this.type);if((e||this.hasContent())&&this.enabled){var n=this;if(n.$element.trigger(i),i.isDefaultPrevented())return;var s=n.tip();n.setContent(e),n.options.animation&&s.addClass("fade");var o="function"==typeof n.options.placement?n.options.placement.call(n,s[0],n.$element[0]):n.options.placement,a=/\s?auto?\s?/i,r=a.test(o);r&&(o=o.replace(a,"")||"top"),s.detach().css({top:0,left:0,display:"block"}).addClass(o),n.options.container?s.appendTo(n.options.container):s.insertAfter(n.$element);var l=n.getPosition(),h=s[0].offsetWidth,c=s[0].offsetHeight;if(r){var d=n.$element.parent(),u=o,p=document.documentElement.scrollTop||document.body.scrollTop,f="body"==n.options.container?window.innerWidth:d.outerWidth(),g="body"==n.options.container?window.innerHeight:d.outerHeight(),m="body"==n.options.container?0:d.offset().left;o="bottom"==o&&l.top+l.height+c-p>g?"top":"top"==o&&l.top-p-c<0?"bottom":"right"==o&&l.right+h>f?"left":"left"==o&&l.left-h

    '}),e.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),e.prototype.constructor=e,e.prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.setContent=function(){var t=this.tip(),e=this.getTarget();if(e)return e.find(".arrow").length<1&&t.addClass("no-arrow"),void t.html(e.html());var i=this.getTitle(),n=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](i),t.find(".popover-content")[this.options.html?"html":"text"](n),t.removeClass("fade top bottom left right in"),this.options.tipId&&t.attr("id",this.options.tipId),this.options.tipClass&&t.addClass(this.options.tipClass),t.find(".popover-title").html()||t.find(".popover-title").hide()},e.prototype.hasContent=function(){return this.getTarget()||this.getTitle()||this.getContent(); +},e.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},e.prototype.getTarget=function(){var e=this.$element,i=this.options,n=e.attr("data-target")||("function"==typeof i.target?i.target.call(e[0]):i.target);return!!n&&("$next"==n?e.next(".popover"):t(n))},e.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},e.prototype.tip=function(){return this.$tip||(this.$tip=t(this.options.template)),this.$tip};var i=t.fn.popover;t.fn.popover=function(i){return this.each(function(){var n=t(this),s=n.data("zui.popover"),o="object"==typeof i&&i;s||n.data("zui.popover",s=new e(this,o)),"string"==typeof i&&s[i]()})},t.fn.popover.Constructor=e,t.fn.popover.noConflict=function(){return t.fn.popover=i,this}}(window.jQuery),+function(t){"use strict";function e(){t(s).remove(),t(o).each(function(e){var s=i(t(this));s.hasClass("open")&&(s.trigger(e=t.Event("hide."+n)),e.isDefaultPrevented()||s.removeClass("open").trigger("hidden."+n))})}function i(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,""));var n;try{n=i&&t(i)}catch(s){}return n&&n.length?n:e.parent()}var n="zui.dropdown",s=".dropdown-backdrop",o="[data-toggle=dropdown]",a=function(e){t(e).on("click."+n,this.toggle)};a.prototype.toggle=function(s){var o=t(this);if(!o.is(".disabled, :disabled")){var a=i(o),r=a.hasClass("open");if(e(),!r){if("ontouchstart"in document.documentElement&&!a.closest(".navbar-nav").length&&t('',o={type:"default",placement:"top",time:4e3,parent:"body",icon:null,close:!0,fade:!0,scale:!0},a={},r=function(e,r){t.isPlainObject(e)&&(r=e,e=r.message);var l=this;r=l.options=t.extend({},o,r),l.id=r.id||n++;var h=a[l.id];h&&h.destroy(),a[l.id]=l,l.message=(r.icon?' ':"")+e,l.$=t(s.format(r)).toggleClass("fade",r.fade).toggleClass("scale",r.scale).attr("id","messager-"+l.id),r.cssClass&&l.$.addClass(r.cssClass);var c=!1,d=l.$.find(".messager-actions"),u=function(e){var n=t('", - form: "
    ", - inputs: { - text: "", - textarea: "", - email: "", - select: "", - checkbox: "
    ", - date: "", - time: "", - number: "", - password: "" - } - }; - - var defaults = { - // default language - locale: $.zui && $.zui.clientLang ? $.zui.clientLang() : 'zh_cn', - // show backdrop or not. Default to static so user has to interact with dialog - backdrop: "static", - // animate the modal in/out - animate: true, - // additional class string applied to the top level dialog - className: null, - // whether or not to include a close button - closeButton: true, - // show the dialog immediately by default - show: true, - // dialog container - container: "body" - }; - - // our public object; augmented after our private API - var exports = {}; - - /** - * @private - */ - function _t(key) { - var locale = locales[defaults.locale]; - return locale ? locale[key] : locales.en[key]; - } - - function processCallback(e, dialog, callback) { - e.stopPropagation(); - e.preventDefault(); - - // by default we assume a callback will get rid of the dialog, - // although it is given the opportunity to override this - - // so, if the callback can be invoked and it *explicitly returns false* - // then we'll set a flag to keep the dialog active... - var preserveDialog = $.isFunction(callback) && callback.call(dialog, e) === false; - - // ... otherwise we'll bin it - if(!preserveDialog) { - dialog.modal("hide"); - } - } - - function getKeyLength(obj) { - // @TODO defer to Object.keys(x).length if available? - var k, t = 0; - for(k in obj) { - t++; - } - return t; - } - - function each(collection, iterator) { - var index = 0; - $.each(collection, function(key, value) { - iterator(key, value, index++); - }); - } - - function sanitize(options) { - var buttons; - var total; - - if(typeof options !== "object") { - throw new Error("Please supply an object of options"); - } - - if(!options.message) { - throw new Error("Please specify a message"); - } - - // make sure any supplied options take precedence over defaults - options = $.extend({}, defaults, options); - - if(!options.buttons) { - options.buttons = {}; - } - - buttons = options.buttons; - - total = getKeyLength(buttons); - - each(buttons, function(key, button, index) { - - if($.isFunction(button)) { - // short form, assume value is our callback. Since button - // isn't an object it isn't a reference either so re-assign it - button = buttons[key] = { - callback: button - }; - } - - // before any further checks make sure by now button is the correct type - if($.type(button) !== "object") { - throw new Error("button with key " + key + " must be an object"); - } - - if(!button.label) { - // the lack of an explicit label means we'll assume the key is good enough - button.label = key; - } - - if(!button.className) { - if((total === 2 && (key === 'ok' || key === 'confirm')) || total === 1) { - // always add a primary to the main option in a two-button dialog - button.className = "btn-primary"; - } else { - button.className = "btn-default"; - } - } - }); - - return options; - } - - /** - * map a flexible set of arguments into a single returned object - * if args.length is already one just return it, otherwise - * use the properties argument to map the unnamed args to - * object properties - * so in the latter case: - * mapArguments(["foo", $.noop], ["message", "callback"]) - * -> { message: "foo", callback: $.noop } - */ - function mapArguments(args, properties) { - var argn = args.length; - var options = {}; - - if(argn < 1 || argn > 2) { - throw new Error("Invalid argument length"); - } - - if(argn === 2 || typeof args[0] === "string") { - options[properties[0]] = args[0]; - options[properties[1]] = args[1]; - } else { - options = args[0]; - } - - return options; - } - - /** - * merge a set of default dialog options with user supplied arguments - */ - function mergeArguments(defaults, args, properties) { - return $.extend( - // deep merge - true, - // ensure the target is an empty, unreferenced object - {}, - // the base options object for this type of dialog (often just buttons) - defaults, - // args could be an object or array; if it's an array properties will - // map it to a proper options object - mapArguments( - args, - properties - ) - ); - } - - /** - * this entry-level method makes heavy use of composition to take a simple - * range of inputs and return valid options suitable for passing to bootbox.dialog - */ - function mergeDialogOptions(className, labels, properties, args) { - // build up a base set of dialog properties - var baseOptions = { - className: "bootbox-" + className, - buttons: createLabels.apply(null, labels) - }; - - // ensure the buttons properties generated, *after* merging - // with user args are still valid against the supplied labels - return validateButtons( - // merge the generated base properties with user supplied arguments - mergeArguments( - baseOptions, - args, - // if args.length > 1, properties specify how each arg maps to an object key - properties - ), - labels - ); - } - - /** - * from a given list of arguments return a suitable object of button labels - * all this does is normalise the given labels and translate them where possible - * e.g. "ok", "confirm" -> { ok: "OK, cancel: "Annuleren" } - */ - function createLabels() { - var buttons = {}; - - for(var i = 0, j = arguments.length; i < j; i++) { - var argument = arguments[i]; - var key = argument.toLowerCase(); - var value = argument.toUpperCase(); - - buttons[key] = { - label: _t(value) - }; - } - - return buttons; - } - - function validateButtons(options, buttons) { - var allowedButtons = {}; - each(buttons, function(key, value) { - allowedButtons[value] = true; - }); - - each(options.buttons, function(key) { - if(allowedButtons[key] === undefined) { - throw new Error("button key " + key + " is not allowed (options are " + buttons.join("\n") + ")"); - } - }); - - return options; - } - - exports.alert = function() { - var options; - - options = mergeDialogOptions("alert", ["ok"], ["message", "callback"], arguments); - - if(options.callback && !$.isFunction(options.callback)) { - throw new Error("alert requires callback property to be a function when provided"); - } - - /** - * overrides - */ - options.buttons.ok.callback = options.onEscape = function() { - if($.isFunction(options.callback)) { - return options.callback.call(this); - } - return true; - }; - - return exports.dialog(options); - }; - - exports.confirm = function() { - var options; - - // ZUI change begin - options = mergeDialogOptions("confirm", ["confirm", "cancel"], ["message", "callback"], arguments); - // OLD WAY: options = mergeDialogOptions("confirm", ["cancel", "confirm"], ["message", "callback"], arguments); - // ZUI change end - - /** - * overrides; undo anything the user tried to set they shouldn't have - */ - options.buttons.cancel.callback = options.onEscape = function() { - return options.callback.call(this, false); - }; - - options.buttons.confirm.callback = function() { - return options.callback.call(this, true); - }; - - // confirm specific validation - if(!$.isFunction(options.callback)) { - throw new Error("confirm requires a callback"); - } - - return exports.dialog(options); - }; - - exports.prompt = function() { - var options; - var defaults; - var dialog; - var form; - var input; - var shouldShow; - var inputOptions; - - // we have to create our form first otherwise - // its value is undefined when gearing up our options - // @TODO this could be solved by allowing message to - // be a function instead... - form = $(templates.form); - - // prompt defaults are more complex than others in that - // users can override more defaults - // @TODO I don't like that prompt has to do a lot of heavy - // lifting which mergeDialogOptions can *almost* support already - // just because of 'value' and 'inputType' - can we refactor? - defaults = { - className: "bootbox-prompt", - buttons: createLabels("cancel", "confirm"), - value: "", - inputType: "text" - }; - - options = validateButtons( - // ZUI change begin - mergeArguments(defaults, arguments, ["title", "callback"]), ["confirm", "cancel"] - // OLD WAY: mergeArguments(defaults, arguments, ["title", "callback"]), ["cancel", "confirm"]arguments); - // ZUI change end - ); - - // capture the user's show value; we always set this to false before - // spawning the dialog to give us a chance to attach some handlers to - // it, but we need to make sure we respect a preference not to show it - shouldShow = (options.show === undefined) ? true : options.show; - - /** - * overrides; undo anything the user tried to set they shouldn't have - */ - options.message = form; - - options.buttons.cancel.callback = options.onEscape = function() { - return options.callback.call(this, null); - }; - - options.buttons.confirm.callback = function() { - var value; - - switch(options.inputType) { - case "text": - case "textarea": - case "email": - case "select": - case "date": - case "time": - case "number": - case "password": - value = input.val(); - break; - - case "checkbox": - var checkedItems = input.find("input:checked"); - - // we assume that checkboxes are always multiple, - // hence we default to an empty array - value = []; - - each(checkedItems, function(_, item) { - value.push($(item).val()); - }); - break; - } - - return options.callback.call(this, value); - }; - - options.show = false; - - // prompt specific validation - if(!options.title) { - throw new Error("prompt requires a title"); - } - - if(!$.isFunction(options.callback)) { - throw new Error("prompt requires a callback"); - } - - if(!templates.inputs[options.inputType]) { - throw new Error("invalid prompt type"); - } - - // create the input based on the supplied type - input = $(templates.inputs[options.inputType]); - - switch(options.inputType) { - case "text": - case "textarea": - case "email": - case "date": - case "time": - case "number": - case "password": - input.val(options.value); - break; - - case "select": - var groups = {}; - inputOptions = options.inputOptions || []; - - if(!$.isArray(inputOptions)) { - throw new Error("Please pass an array of input options"); - } - - if(!inputOptions.length) { - throw new Error("prompt with select requires options"); - } - - each(inputOptions, function(_, option) { - - // assume the element to attach to is the input... - var elem = input; - - if(option.value === undefined || option.text === undefined) { - throw new Error("given options in wrong format"); - } - - // ... but override that element if this option sits in a group - - if(option.group) { - // initialise group if necessary - if(!groups[option.group]) { - groups[option.group] = $("").attr("label", option.group); - } - - elem = groups[option.group]; - } - - elem.append(""); - }); - - each(groups, function(_, group) { - input.append(group); - }); - - // safe to set a select's value as per a normal input - input.val(options.value); - break; - - case "checkbox": - var values = $.isArray(options.value) ? options.value : [options.value]; - inputOptions = options.inputOptions || []; - - if(!inputOptions.length) { - throw new Error("prompt with checkbox requires options"); - } - - if(!inputOptions[0].value || !inputOptions[0].text) { - throw new Error("given options in wrong format"); - } - - // checkboxes have to nest within a containing element, so - // they break the rules a bit and we end up re-assigning - // our 'input' element to this container instead - input = $("
    "); - - each(inputOptions, function(_, option) { - var checkbox = $(templates.inputs[options.inputType]); - - checkbox.find("input").attr("value", option.value); - checkbox.find("label").append(option.text); - - // we've ensured values is an array so we can always iterate over it - each(values, function(_, value) { - if(value === option.value) { - checkbox.find("input").prop("checked", true); - } - }); - - input.append(checkbox); - }); - break; - } - - // @TODO provide an attributes option instead - // and simply map that as keys: vals - if(options.placeholder) { - input.attr("placeholder", options.placeholder); - } - - if(options.pattern) { - input.attr("pattern", options.pattern); - } - - if(options.maxlength) { - input.attr("maxlength", options.maxlength); - } - - // now place it in our form - form.append(input); - - form.on("submit", function(e) { - e.preventDefault(); - // Fix for SammyJS (or similar JS routing library) hijacking the form post. - e.stopPropagation(); - // @TODO can we actually click *the* button object instead? - // e.g. buttons.confirm.click() or similar - dialog.find(".btn-primary").click(); - }); - - dialog = exports.dialog(options); - - // clear the existing handler focusing the submit button... - dialog.off("shown.zui.modal"); - - // ...and replace it with one focusing our input, if possible - dialog.on("shown.zui.modal", function() { - // need the closure here since input isn't - // an object otherwise - input.focus(); - }); - - if(shouldShow === true) { - dialog.modal("show"); - } - - return dialog; - }; - - exports.dialog = function(options) { - options = sanitize(options); - - - var dialog = $(templates.dialog); - var innerDialog = dialog.find(".modal-dialog"); - var body = dialog.find(".modal-body"); - var buttons = options.buttons; - var buttonStr = ""; - var callbacks = { - onEscape: options.onEscape - }; - - if($.fn.modal === undefined) { - throw new Error( - "$.fn.modal is not defined; please double check you have included " + - "the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ " + - "for more details." - ); - } - - each(buttons, function(key, button) { - - // @TODO I don't like this string appending to itself; bit dirty. Needs reworking - // can we just build up button elements instead? slower but neater. Then button - // can just become a template too - buttonStr += ""; - callbacks[key] = button.callback; - }); - - body.find(".bootbox-body").html(options.message); - - if(options.animate === true) { - dialog.addClass("fade"); - } - - if(options.className) { - dialog.addClass(options.className); - } - - if(options.size === "large") { - innerDialog.addClass("modal-lg"); - } else if(options.size === "small") { - innerDialog.addClass("modal-sm"); - } - - if(options.title) { - body.before(templates.header); - } - - if(options.closeButton) { - var closeButton = $(templates.closeButton); - - if(options.title) { - dialog.find(".modal-header").prepend(closeButton); - } else { - closeButton.css("margin-top", "-10px").prependTo(body); - } - } - - if(options.title) { - dialog.find(".modal-title").html(options.title); - } - - if(buttonStr.length) { - body.after(templates.footer); - dialog.find(".modal-footer").html(buttonStr); - } - - - /** - * Bootstrap event listeners; used handle extra - * setup & teardown required after the underlying - * modal has performed certain actions - */ - - dialog.on("hidden.zui.modal", function(e) { - // ensure we don't accidentally intercept hidden events triggered - // by children of the current dialog. We shouldn't anymore now BS - // namespaces its events; but still worth doing - if(e.target === this) { - dialog.remove(); - } - }); - - /* - dialog.on("show.zui.modal", function() { - // sadly this doesn't work; show is called *just* before - // the backdrop is added so we'd need a setTimeout hack or - // otherwise... leaving in as would be nice - if (options.backdrop) { - dialog.next(".modal-backdrop").addClass("bootbox-backdrop"); - } - }); - */ - - dialog.on("shown.zui.modal", function() { - dialog.find(".btn-primary:first").focus(); - }); - - /** - * Bootbox event listeners; experimental and may not last - * just an attempt to decouple some behaviours from their - * respective triggers - */ - - if(options.backdrop !== "static") { - // A boolean true/false according to the Bootstrap docs - // should show a dialog the user can dismiss by clicking on - // the background. - // We always only ever pass static/false to the actual - // $.modal function because with `true` we can't trap - // this event (the .modal-backdrop swallows it) - // However, we still want to sort of respect true - // and invoke the escape mechanism instead - dialog.on("click.dismiss.zui.modal", function(e) { - // @NOTE: the target varies in >= 3.3.x releases since the modal backdrop - // moved *inside* the outer dialog rather than *alongside* it - if(dialog.children(".modal-backdrop").length) { - e.currentTarget = dialog.children(".modal-backdrop").get(0); - } - - if(e.target !== e.currentTarget) { - return; - } - - dialog.trigger("escape.close.bb"); - }); - } - - dialog.on("escape.close.bb", function(e) { - if(callbacks.onEscape) { - processCallback(e, dialog, callbacks.onEscape); - } - }); - - /** - * Standard jQuery event listeners; used to handle user - * interaction with our dialog - */ - - dialog.on("click", ".modal-footer button", function(e) { - var callbackKey = $(this).data("bb-handler"); - - processCallback(e, dialog, callbacks[callbackKey]); - }); - - dialog.on("click", ".bootbox-close-button", function(e) { - // onEscape might be falsy but that's fine; the fact is - // if the user has managed to click the close button we - // have to close the dialog, callback or not - processCallback(e, dialog, callbacks.onEscape); - }); - - dialog.on("keyup", function(e) { - if(e.which === 27) { - dialog.trigger("escape.close.bb"); - } - }); - - // the remainder of this method simply deals with adding our - // dialogent to the DOM, augmenting it with Bootstrap's modal - // functionality and then giving the resulting object back - // to our caller - - $(options.container).append(dialog); - - dialog.modal({ - backdrop: options.backdrop ? "static" : false, - keyboard: false, - show: false - }); - - if(options.show) { - dialog.modal("show"); - } - - // @TODO should we return the raw element here or should - // we wrap it in an object on which we can expose some neater - // methods, e.g. var d = bootbox.alert(); d.hide(); instead - // of d.modal("hide"); - - /* - function BBDialog(elem) { - this.elem = elem; - } - - BBDialog.prototype = { - hide: function() { - return this.elem.modal("hide"); - }, - show: function() { - return this.elem.modal("show"); - } - }; - */ - - return dialog; - - }; - - exports.setDefaults = function() { - var values = {}; - - if(arguments.length === 2) { - // allow passing of single key/value... - values[arguments[0]] = arguments[1]; - } else { - // ... and as an object too - values = arguments[0]; - } - - $.extend(defaults, values); - }; - - exports.hideAll = function() { - $(".bootbox").modal("hide"); - - return exports; - }; - - - /** - * standard locales. Please add more according to ISO 639-1 standard. Multiple language variants are - * unlikely to be required. If this gets too large it can be split out into separate JS files. - */ - var locales = { - en: { - OK: "OK", - CANCEL: "Cancel", - CONFIRM: "OK" - }, - zh_cn: { - OK: "确认", - CANCEL: "取消", - CONFIRM: "确认" - }, - zh_tw: { - OK: "確認", - CANCEL: "取消", - CONFIRM: "確認" - } - }; - - exports.addLocale = function(name, values) { - $.each(["OK", "CANCEL", "CONFIRM"], function(_, v) { - if(!values[v]) { - throw new Error("Please supply a translation for '" + v + "'"); - } - }); - - locales[name] = { - OK: values.OK, - CANCEL: values.CANCEL, - CONFIRM: values.CONFIRM - }; - - return exports; - }; - - exports.removeLocale = function(name) { - delete locales[name]; - - return exports; - }; - - exports.setLocale = function(name) { - return exports.setDefaults("locale", name); - }; - - exports.init = function(_$) { - return init(_$ || $); - }; - - return exports; -})); - -/* ======================================================================== - * Chosen: chosen.js [version 1.1.0] - * https://github.com/harvesthq/chosen - * - * Chosen, a Select Box Enhancer for jQuery and Prototype - * by Patrick Filler for Harvest, http://getharvest.com - * - * ZUI: The file has been changed in ZUI. It will not keep update with the - * official version in the future. - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2011 Harvest http://getharvest.com - * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md - * ======================================================================== - * Improvement in ZUI: - * 1. New option 'drop_direction': 'auto' | 'top' | 'bottom'; - * 2. Enhance the search experience, support search items by custom data - * with 'data-keys=*' attribute in option; - * 3. ‘middle_highlight’ option can make hightlight item in the middle of - * the dropdown menu - * ======================================================================== */ - - -/*! +!function(t){function e(){return new Date(Date.UTC.apply(Date,arguments))}var i=function(e,i){var o=this;this.element=t(e),this.language=(i.language||this.element.data("date-language")||(t.zui&&t.zui.clientLang?t.zui.clientLang().replace("_","-"):"zh-cn")).toLowerCase(),this.language=this.language in n?this.language:"en",this.isRTL=n[this.language].rtl||!1,this.formatType=i.formatType||this.element.data("format-type")||"standard",this.format=s.parseFormat(i.format||this.element.data("date-format")||n[this.language].format||s.getDefaultFormat(this.formatType,"input"),this.formatType),this.isInline=!1,this.isVisible=!1,this.isInput=this.element.is("input"),this.component=!!this.element.is(".date")&&this.element.find(".input-group-addon .icon-th, .input-group-addon .icon-time, .input-group-addon .icon-calendar").parent(),this.componentReset=!!this.element.is(".date")&&this.element.find(".input-group-addon .icon-remove").parent(),this.hasInput=this.component&&this.element.find("input").length,this.component&&0===this.component.length&&(this.component=!1),this.linkField=i.linkField||this.element.data("link-field")||!1,this.linkFormat=s.parseFormat(i.linkFormat||this.element.data("link-format")||s.getDefaultFormat(this.formatType,"link"),this.formatType),this.minuteStep=i.minuteStep||this.element.data("minute-step")||5,this.pickerPosition=i.pickerPosition||this.element.data("picker-position")||"bottom-right",this.showMeridian=i.showMeridian||this.element.data("show-meridian")||!1,this.initialDate=i.initialDate||new Date,this.pickerClass=i.eleClass,this.pickerId=i.eleId,this._attachEvents(),this.formatViewType="datetime","formatViewType"in i?this.formatViewType=i.formatViewType:"formatViewType"in this.element.data()&&(this.formatViewType=this.element.data("formatViewType")),this.minView=0,"minView"in i?this.minView=i.minView:"minView"in this.element.data()&&(this.minView=this.element.data("min-view")),this.minView=s.convertViewMode(this.minView),this.maxView=s.modes.length-1,"maxView"in i?this.maxView=i.maxView:"maxView"in this.element.data()&&(this.maxView=this.element.data("max-view")),this.maxView=s.convertViewMode(this.maxView),this.wheelViewModeNavigation=!1,"wheelViewModeNavigation"in i?this.wheelViewModeNavigation=i.wheelViewModeNavigation:"wheelViewModeNavigation"in this.element.data()&&(this.wheelViewModeNavigation=this.element.data("view-mode-wheel-navigation")),this.wheelViewModeNavigationInverseDirection=!1,"wheelViewModeNavigationInverseDirection"in i?this.wheelViewModeNavigationInverseDirection=i.wheelViewModeNavigationInverseDirection:"wheelViewModeNavigationInverseDirection"in this.element.data()&&(this.wheelViewModeNavigationInverseDirection=this.element.data("view-mode-wheel-navigation-inverse-dir")),this.wheelViewModeNavigationDelay=100,"wheelViewModeNavigationDelay"in i?this.wheelViewModeNavigationDelay=i.wheelViewModeNavigationDelay:"wheelViewModeNavigationDelay"in this.element.data()&&(this.wheelViewModeNavigationDelay=this.element.data("view-mode-wheel-navigation-delay")),this.startViewMode=2,"startView"in i?this.startViewMode=i.startView:"startView"in this.element.data()&&(this.startViewMode=this.element.data("start-view")),this.startViewMode=s.convertViewMode(this.startViewMode),this.viewMode=this.startViewMode,this.viewSelect=this.minView,"viewSelect"in i?this.viewSelect=i.viewSelect:"viewSelect"in this.element.data()&&(this.viewSelect=this.element.data("view-select")),this.viewSelect=s.convertViewMode(this.viewSelect),this.forceParse=!0,"forceParse"in i?this.forceParse=i.forceParse:"dateForceParse"in this.element.data()&&(this.forceParse=this.element.data("date-force-parse")),this.picker=t(s.template).appendTo(this.isInline?this.element:"body").on({click:t.proxy(this.click,this),mousedown:t.proxy(this.mousedown,this)}),this.wheelViewModeNavigation&&(t.fn.mousewheel?this.picker.on({mousewheel:t.proxy(this.mousewheel,this)}):console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option")),this.isInline?this.picker.addClass("datetimepicker-inline"):this.picker.addClass("datetimepicker-dropdown-"+this.pickerPosition+" dropdown-menu"),this.isRTL&&(this.picker.addClass("datetimepicker-rtl"),this.picker.find(".prev span, .next span").toggleClass("icon-arrow-left icon-arrow-right")),t(document).on("mousedown",function(e){0===t(e.target).closest(".datetimepicker").length&&o.hide()}),this.autoclose=!1,"autoclose"in i?this.autoclose=i.autoclose:"dateAutoclose"in this.element.data()&&(this.autoclose=this.element.data("date-autoclose")),this.keyboardNavigation=!0,"keyboardNavigation"in i?this.keyboardNavigation=i.keyboardNavigation:"dateKeyboardNavigation"in this.element.data()&&(this.keyboardNavigation=this.element.data("date-keyboard-navigation")),this.todayBtn=i.todayBtn||this.element.data("date-today-btn")||!1,this.todayHighlight=i.todayHighlight||this.element.data("date-today-highlight")||!1,this.weekStart=(i.weekStart||this.element.data("date-weekstart")||n[this.language].weekStart||0)%7,this.weekEnd=(this.weekStart+6)%7,this.startDate=-(1/0),this.endDate=1/0,this.daysOfWeekDisabled=[],this.setStartDate(i.startDate||this.element.data("date-startdate")),this.setEndDate(i.endDate||this.element.data("date-enddate")),this.setDaysOfWeekDisabled(i.daysOfWeekDisabled||this.element.data("date-days-of-week-disabled")),this.fillDow(),this.fillMonths(),this.update(),this.showMode(),this.isInline&&this.show()};i.prototype={constructor:i,_events:[],_attachEvents:function(){this._detachEvents(),this.isInput?this._events=[[this.element,{focus:t.proxy(this.show,this),keyup:t.proxy(this.update,this),keydown:t.proxy(this.keydown,this)}]]:this.component&&this.hasInput?(this._events=[[this.element.find("input"),{focus:t.proxy(this.show,this),keyup:t.proxy(this.update,this),keydown:t.proxy(this.keydown,this)}],[this.component,{click:t.proxy(this.show,this)}]],this.componentReset&&this._events.push([this.componentReset,{click:t.proxy(this.reset,this)}])):this.element.is("div")?this.isInline=!0:this._events=[[this.element,{click:t.proxy(this.show,this)}]];for(var e,i,n=0;n=this.startDate&&t<=this.endDate?(this.date=t,this.setValue(),this.viewDate=this.date,this.fill()):this.element.trigger({type:"outOfRange",date:t,startDate:this.startDate,endDate:this.endDate})},setFormat:function(t){this.format=s.parseFormat(t,this.formatType);var e;this.isInput?e=this.element:this.component&&(e=this.element.find("input")),e&&e.val()&&this.setValue()},setValue:function(){var e=this.getFormattedDate();this.isInput?this.element.val(e):(this.component&&this.element.find("input").val(e),this.element.data("date",e)),this.linkField&&t("#"+this.linkField).val(this.getFormattedDate(this.linkFormat))},getFormattedDate:function(t){return void 0==t&&(t=this.format),s.formatDate(this.date,t,this.language,this.formatType)},setStartDate:function(t){this.startDate=t||-(1/0),this.startDate!==-(1/0)&&(this.startDate=s.parseDate(this.startDate,this.format,this.language,this.formatType)),this.update(),this.updateNavArrows()},setEndDate:function(t){this.endDate=t||1/0,this.endDate!==1/0&&(this.endDate=s.parseDate(this.endDate,this.format,this.language,this.formatType)),this.update(),this.updateNavArrows()},setDaysOfWeekDisabled:function(e){this.daysOfWeekDisabled=e||[],t.isArray(this.daysOfWeekDisabled)||(this.daysOfWeekDisabled=this.daysOfWeekDisabled.split(/,\s*/)),this.daysOfWeekDisabled=t.map(this.daysOfWeekDisabled,function(t){return parseInt(t,10)}),this.update(),this.updateNavArrows()},place:function(){if(!this.isInline){var e=0;t("div").each(function(){var i=parseInt(t(this).css("zIndex"),10);i>e&&(e=i)});var i,n,s,o=e+10;this.component?(i=this.component.offset(),s=i.left,"bottom-left"!==this.pickerPosition&&"top-left"!==this.pickerPosition&&"auto-left"!==this.pickerPosition||(s+=this.component.outerWidth()-this.picker.outerWidth())):(i=this.element.offset(),s=i.left);var a=0===this.pickerPosition.indexOf("auto-"),r=a?(i.top+this.picker.outerHeight()>t(window).height()+t(window).scrollTop()?"top":"bottom")+(0===this.pickerPosition.lastIndexOf("-left")?"-left":"-right"):this.pickerPosition;n="top-left"===r||"top-right"===r?i.top-this.picker.outerHeight():i.top+this.height,this.picker.css({top:n,left:s,zIndex:o}).attr("class","datetimepicker dropdown-menu datetimepicker-dropdown-"+r),this.pickerClass&&this.picker.addClass(this.pickerClass),this.pickerId&&this.picker.attr("id",this.pickerId)}},update:function(){var t,e=!1;arguments&&arguments.length&&("string"==typeof arguments[0]||arguments[0]instanceof Date)?(t=arguments[0],e=!0):(t=this.element.data("date")||(this.isInput?this.element.val():this.element.find("input").val())||this.initialDate,("string"==typeof t||t instanceof String)&&(t=t.replace(/^\s+|\s+$/g,""))),t||(t=new Date,e=!1),this.date=s.parseDate(t,this.format,this.language,this.formatType),e&&this.setValue(),this.datethis.endDate?this.viewDate=new Date(this.endDate):this.viewDate=new Date(this.date),this.fill()},fillDow:function(){for(var t=this.weekStart,e="";t'+n[this.language].daysMin[t++%7]+"";e+="",this.picker.find(".datetimepicker-days thead").append(e)},fillMonths:function(){for(var t="",e=0;e<12;)t+=''+n[this.language].monthsShort[e++]+"";this.picker.find(".datetimepicker-months td").html(t)},fill:function(){if(null!=this.date&&null!=this.viewDate){var i=new Date(this.viewDate),o=i.getUTCFullYear(),a=i.getUTCMonth(),r=i.getUTCDate(),l=i.getUTCHours(),h=i.getUTCMinutes(),c=this.startDate!==-(1/0)?this.startDate.getUTCFullYear():-(1/0),d=this.startDate!==-(1/0)?this.startDate.getUTCMonth():-(1/0),u=this.endDate!==1/0?this.endDate.getUTCFullYear():1/0,p=this.endDate!==1/0?this.endDate.getUTCMonth():1/0,f=new e(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate()).valueOf(),g=new Date;if(this.picker.find(".datetimepicker-days thead th:eq(1)").text(n[this.language].months[a]+" "+o),"time"==this.formatViewType){var m=l%12?l%12:12,v=(m<10?"0":"")+m,y=(h<10?"0":"")+h,b=n[this.language].meridiem[l<12?0:1];this.picker.find(".datetimepicker-hours thead th:eq(1)").text(v+":"+y+" "+b.toUpperCase()),this.picker.find(".datetimepicker-minutes thead th:eq(1)").text(v+":"+y+" "+b.toUpperCase())}else this.picker.find(".datetimepicker-hours thead th:eq(1)").text(r+" "+n[this.language].months[a]+" "+o),this.picker.find(".datetimepicker-minutes thead th:eq(1)").text(r+" "+n[this.language].months[a]+" "+o);this.picker.find("tfoot th.today").text(n[this.language].today).toggle(this.todayBtn!==!1),this.updateNavArrows(),this.fillMonths();var w=e(o,a-1,28,0,0,0,0),x=s.getDaysInMonth(w.getUTCFullYear(),w.getUTCMonth());w.setUTCDate(x),w.setUTCDate(x-(w.getUTCDay()-this.weekStart+7)%7);var C=new Date(w);C.setUTCDate(C.getUTCDate()+42),C=C.valueOf();for(var _,k=[];w.valueOf()"),_="",w.getUTCFullYear()o||w.getUTCFullYear()==o&&w.getUTCMonth()>a)&&(_+=" new"),this.todayHighlight&&w.getUTCFullYear()==g.getFullYear()&&w.getUTCMonth()==g.getMonth()&&w.getUTCDate()==g.getDate()&&(_+=" today"),w.valueOf()==f&&(_+=" active"),(w.valueOf()+864e5<=this.startDate||w.valueOf()>this.endDate||t.inArray(w.getUTCDay(),this.daysOfWeekDisabled)!==-1)&&(_+=" disabled"),k.push(''+w.getUTCDate()+""),w.getUTCDay()==this.weekEnd&&k.push(""),w.setUTCDate(w.getUTCDate()+1);this.picker.find(".datetimepicker-days tbody").empty().append(k.join("")),k=[];for(var T="",S="",D="",M=0;M<24;M++){var P=e(o,a,r,M);_="",P.valueOf()+36e5<=this.startDate||P.valueOf()>this.endDate?_+=" disabled":l==M&&(_+=" active"),this.showMeridian&&2==n[this.language].meridiem.length?(S=M<12?n[this.language].meridiem[0]:n[this.language].meridiem[1],S!=D&&(""!=D&&k.push(""),k.push('
    '+S.toUpperCase()+"")),D=S,T=M%12?M%12:12,k.push(''+T+""),23==M&&k.push("
    ")):(T=M+":00",k.push(''+T+""))}this.picker.find(".datetimepicker-hours td").html(k.join("")),k=[],T="",S="",D="";for(var M=0;M<60;M+=this.minuteStep){var P=e(o,a,r,l,M,0);_="",P.valueOf()this.endDate?_+=" disabled":Math.floor(h/this.minuteStep)==Math.floor(M/this.minuteStep)&&(_+=" active"),this.showMeridian&&2==n[this.language].meridiem.length?(S=l<12?n[this.language].meridiem[0]:n[this.language].meridiem[1],S!=D&&(""!=D&&k.push(""),k.push('
    '+S.toUpperCase()+"")),D=S,T=l%12?l%12:12,k.push(''+T+":"+(M<10?"0"+M:M)+""),59==M&&k.push("
    ")):(T=M+":00",k.push(''+l+":"+(M<10?"0"+M:M)+""))}this.picker.find(".datetimepicker-minutes td").html(k.join(""));var F=this.date.getUTCFullYear(),L=this.picker.find(".datetimepicker-months").find("th:eq(1)").text(o).end().find("span").removeClass("active");F==o&&L.eq(this.date.getUTCMonth()).addClass("active"),(ou)&&L.addClass("disabled"),o==c&&L.slice(0,d).addClass("disabled"),o==u&&L.slice(p+1).addClass("disabled"),k="",o=10*parseInt(o/10,10);var z=this.picker.find(".datetimepicker-years").find("th:eq(1)").text(o+"-"+(o+9)).end().find("td");o-=1;for(var M=-1;M<11;M++)k+='u?" disabled":"")+'">'+o+"",o+=1;z.html(k),this.place()}},updateNavArrows:function(){var t=new Date(this.viewDate),e=t.getUTCFullYear(),i=t.getUTCMonth(),n=t.getUTCDate(),s=t.getUTCHours();switch(this.viewMode){case 0:this.startDate!==-(1/0)&&e<=this.startDate.getUTCFullYear()&&i<=this.startDate.getUTCMonth()&&n<=this.startDate.getUTCDate()&&s<=this.startDate.getUTCHours()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.endDate!==1/0&&e>=this.endDate.getUTCFullYear()&&i>=this.endDate.getUTCMonth()&&n>=this.endDate.getUTCDate()&&s>=this.endDate.getUTCHours()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:this.startDate!==-(1/0)&&e<=this.startDate.getUTCFullYear()&&i<=this.startDate.getUTCMonth()&&n<=this.startDate.getUTCDate()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.endDate!==1/0&&e>=this.endDate.getUTCFullYear()&&i>=this.endDate.getUTCMonth()&&n>=this.endDate.getUTCDate()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 2:this.startDate!==-(1/0)&&e<=this.startDate.getUTCFullYear()&&i<=this.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.endDate!==1/0&&e>=this.endDate.getUTCFullYear()&&i>=this.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 3:case 4:this.startDate!==-(1/0)&&e<=this.startDate.getUTCFullYear()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.endDate!==1/0&&e>=this.endDate.getUTCFullYear()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}},mousewheel:function(e){if(e.preventDefault(),e.stopPropagation(),!this.wheelPause){this.wheelPause=!0;var i=e.originalEvent,n=i.wheelDelta,s=n>0?1:0===n?0:-1;this.wheelViewModeNavigationInverseDirection&&(s=-s),this.showMode(s),setTimeout(t.proxy(function(){this.wheelPause=!1},this),this.wheelViewModeNavigationDelay)}},click:function(i){i.stopPropagation(),i.preventDefault();var n=t(i.target).closest("span, td, th, legend");if(1==n.length){if(n.is(".disabled"))return void this.element.trigger({type:"outOfRange",date:this.viewDate,startDate:this.startDate,endDate:this.endDate});switch(n[0].nodeName.toLowerCase()){case"th":switch(n[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var o=s.modes[this.viewMode].navStep*("prev"==n[0].className?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveHour(this.viewDate,o);break;case 1:this.viewDate=this.moveDate(this.viewDate,o);break;case 2:this.viewDate=this.moveMonth(this.viewDate,o);break;case 3:case 4:this.viewDate=this.moveYear(this.viewDate,o)}this.fill();break;case"today":var a=new Date;a=e(a.getFullYear(),a.getMonth(),a.getDate(),a.getHours(),a.getMinutes(),a.getSeconds(),0),athis.endDate&&(a=this.endDate),this.viewMode=this.startViewMode,this.showMode(0),this._setDate(a),this.fill(),this.autoclose&&this.hide()}break;case"span":if(!n.is(".disabled")){var r=this.viewDate.getUTCFullYear(),l=this.viewDate.getUTCMonth(),h=this.viewDate.getUTCDate(),c=this.viewDate.getUTCHours(),d=this.viewDate.getUTCMinutes(),u=this.viewDate.getUTCSeconds();if(n.is(".month")?(this.viewDate.setUTCDate(1),l=n.parent().find("span").index(n),h=this.viewDate.getUTCDate(),this.viewDate.setUTCMonth(l),this.element.trigger({type:"changeMonth",date:this.viewDate}),this.viewSelect>=3&&this._setDate(e(r,l,h,c,d,u,0))):n.is(".year")?(this.viewDate.setUTCDate(1),r=parseInt(n.text(),10)||0,this.viewDate.setUTCFullYear(r),this.element.trigger({type:"changeYear",date:this.viewDate}),this.viewSelect>=4&&this._setDate(e(r,l,h,c,d,u,0))):n.is(".hour")?(c=parseInt(n.text(),10)||0,(n.hasClass("hour_am")||n.hasClass("hour_pm"))&&(12==c&&n.hasClass("hour_am")?c=0:12!=c&&n.hasClass("hour_pm")&&(c+=12)),this.viewDate.setUTCHours(c),this.element.trigger({type:"changeHour",date:this.viewDate}),this.viewSelect>=1&&this._setDate(e(r,l,h,c,d,u,0))):n.is(".minute")&&(d=parseInt(n.text().substr(n.text().indexOf(":")+1),10)||0,this.viewDate.setUTCMinutes(d),this.element.trigger({type:"changeMinute",date:this.viewDate}),this.viewSelect>=0&&this._setDate(e(r,l,h,c,d,u,0))),0!=this.viewMode){var p=this.viewMode;this.showMode(-1),this.fill(),p==this.viewMode&&this.autoclose&&this.hide()}else this.fill(),this.autoclose&&this.hide()}break;case"td":if(n.is(".day")&&!n.is(".disabled")){var h=parseInt(n.text(),10)||1,r=this.viewDate.getUTCFullYear(),l=this.viewDate.getUTCMonth(),c=this.viewDate.getUTCHours(),d=this.viewDate.getUTCMinutes(),u=this.viewDate.getUTCSeconds();n.is(".old")?0===l?(l=11,r-=1):l-=1:n.is(".new")&&(11==l?(l=0,r+=1):l+=1),this.viewDate.setUTCFullYear(r),this.viewDate.setUTCMonth(l,h),this.element.trigger({type:"changeDay",date:this.viewDate}),this.viewSelect>=2&&this._setDate(e(r,l,h,c,d,u,0))}var p=this.viewMode;this.showMode(-1),this.fill(),p==this.viewMode&&this.autoclose&&this.hide()}}},_setDate:function(t,e){e&&"date"!=e||(this.date=t),e&&"view"!=e||(this.viewDate=t),this.fill(),this.setValue();var i;this.isInput?i=this.element:this.component&&(i=this.element.find("input")),i&&(i.change(),this.autoclose&&(!e||"date"==e)),this.element.trigger({type:"changeDate",date:this.date}),null===t&&(this.date=this.viewDate)},moveMinute:function(t,e){if(!e)return t;var i=new Date(t.valueOf());return i.setUTCMinutes(i.getUTCMinutes()+e*this.minuteStep),i},moveHour:function(t,e){if(!e)return t;var i=new Date(t.valueOf());return i.setUTCHours(i.getUTCHours()+e),i},moveDate:function(t,e){if(!e)return t;var i=new Date(t.valueOf());return i.setUTCDate(i.getUTCDate()+e),i},moveMonth:function(t,e){if(!e)return t;var i,n,s=new Date(t.valueOf()),o=s.getUTCDate(),a=s.getUTCMonth(),r=Math.abs(e);if(e=e>0?1:-1,1==r)n=e==-1?function(){return s.getUTCMonth()==a}:function(){return s.getUTCMonth()!=i},i=a+e,s.setUTCMonth(i),(i<0||i>11)&&(i=(i+12)%12);else{for(var l=0;l=this.startDate&&t<=this.endDate},keydown:function(t){if(this.picker.is(":not(:visible)"))return void(27==t.keyCode&&this.show());var e,i,n,s=!1;switch(t.keyCode){case 27:this.hide(),t.preventDefault();break;case 37:case 39:if(!this.keyboardNavigation)break;e=37==t.keyCode?-1:1,viewMode=this.viewMode,t.ctrlKey?viewMode+=2:t.shiftKey&&(viewMode+=1),4==viewMode?(i=this.moveYear(this.date,e),n=this.moveYear(this.viewDate,e)):3==viewMode?(i=this.moveMonth(this.date,e),n=this.moveMonth(this.viewDate,e)):2==viewMode?(i=this.moveDate(this.date,e),n=this.moveDate(this.viewDate,e)):1==viewMode?(i=this.moveHour(this.date,e),n=this.moveHour(this.viewDate,e)):0==viewMode&&(i=this.moveMinute(this.date,e),n=this.moveMinute(this.viewDate,e)),this.dateWithinRange(i)&&(this.date=i,this.viewDate=n,this.setValue(),this.update(),t.preventDefault(),s=!0);break;case 38:case 40:if(!this.keyboardNavigation)break;e=38==t.keyCode?-1:1,viewMode=this.viewMode,t.ctrlKey?viewMode+=2:t.shiftKey&&(viewMode+=1),4==viewMode?(i=this.moveYear(this.date,e),n=this.moveYear(this.viewDate,e)):3==viewMode?(i=this.moveMonth(this.date,e),n=this.moveMonth(this.viewDate,e)):2==viewMode?(i=this.moveDate(this.date,7*e),n=this.moveDate(this.viewDate,7*e)):1==viewMode?this.showMeridian?(i=this.moveHour(this.date,6*e),n=this.moveHour(this.viewDate,6*e)):(i=this.moveHour(this.date,4*e),n=this.moveHour(this.viewDate,4*e)):0==viewMode&&(i=this.moveMinute(this.date,4*e),n=this.moveMinute(this.viewDate,4*e)),this.dateWithinRange(i)&&(this.date=i,this.viewDate=n,this.setValue(),this.update(),t.preventDefault(),s=!0);break;case 13:if(0!=this.viewMode){var o=this.viewMode;this.showMode(-1),this.fill(),o==this.viewMode&&this.autoclose&&this.hide()}else this.fill(),this.autoclose&&this.hide();t.preventDefault();break;case 9:this.hide()}if(s){var a;this.isInput?a=this.element:this.component&&(a=this.element.find("input")),a&&a.change(),this.element.trigger({type:"changeDate",date:this.date})}},showMode:function(t){if(t){var e=Math.max(0,Math.min(s.modes.length-1,this.viewMode+t));e>=this.minView&&e<=this.maxView&&(this.element.trigger({type:"changeMode",date:this.viewDate,oldViewMode:this.viewMode,newViewMode:e}),this.viewMode=e)}this.picker.find(">div").hide().filter(".datetimepicker-"+s.modes[this.viewMode].clsName).css("display","block"),this.updateNavArrows()},reset:function(t){this._setDate(null,"date")}},t.fn.datetimepicker=function(e){var n=Array.apply(null,arguments);return n.shift(),this.each(function(){var s=t(this),o=s.data("datetimepicker"),a="object"==typeof e&&e;o||s.data("datetimepicker",o=new i(this,t.extend({},t.fn.datetimepicker.defaults,s.data(),a))),"string"==typeof e&&"function"==typeof o[e]&&o[e].apply(o,n)})},t.fn.datetimepicker.defaults={pickerPosition:"auto-right"},t.fn.datetimepicker.Constructor=i;var n=t.fn.datetimepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["am","pm"],suffix:["st","nd","rd","th"],today:"Today"}};n["zh-cn"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"],daysShort:["周日","周一","周二","周三","周四","周五","周六","周日"],daysMin:["日","一","二","三","四","五","六","日"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今日",suffix:[],meridiem:[]},n["zh-tw"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日"],daysShort:["周日","周一","周二","周三","周四","周五","周六","周日"],daysMin:["日","一","二","三","四","五","六","日"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今天",suffix:[],meridiem:["上午","下午"]};var s={modes:[{clsName:"minutes",navFnc:"Hours",navStep:1},{clsName:"hours",navFnc:"Date",navStep:1},{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(t){return t%4===0&&t%100!==0||t%400===0},getDaysInMonth:function(t,e){return[31,s.isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]},getDefaultFormat:function(t,e){if("standard"==t)return"input"==e?"yyyy-mm-dd hh:ii":"yyyy-mm-dd hh:ii:ss";if("php"==t)return"input"==e?"Y-m-d H:i":"Y-m-d H:i:s";throw new Error("Invalid format type.")},validParts:function(t){if("standard"==t)return/hh?|HH?|p|P|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;if("php"==t)return/[dDjlNwzFmMnStyYaABgGhHis]/g;throw new Error("Invalid format type.")},nonpunctuation:/[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,parseFormat:function(t,e){var i=t.replace(this.validParts(e),"\0").split("\0"),n=t.match(this.validParts(e));if(!i||!i.length||!n||0==n.length)throw new Error("Invalid date format.");return{separators:i,parts:n}},parseDate:function(s,o,a,r){if(s instanceof Date){var l=new Date(s.valueOf()-6e4*s.getTimezoneOffset());return l.setMilliseconds(0),l}if(/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(s)&&(o=this.parseFormat("yyyy-mm-dd",r)),/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(s)&&(o=this.parseFormat("yyyy-mm-dd hh:ii",r)),/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(s)&&(o=this.parseFormat("yyyy-mm-dd hh:ii:ss",r)),/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(s)){var h,c,d=/([-+]\d+)([dmwy])/,u=s.match(/([-+]\d+)([dmwy])/g);s=new Date;for(var p=0;p',contTemplate:'',footTemplate:''};s.template='
    '+s.headTemplate+s.contTemplate+s.footTemplate+'
    '+s.headTemplate+s.contTemplate+s.footTemplate+'
    '+s.headTemplate+""+s.footTemplate+'
    '+s.headTemplate+s.contTemplate+s.footTemplate+'
    '+s.headTemplate+s.contTemplate+s.footTemplate+"
    ",t.fn.datetimepicker.DPGlobal=s,t.fn.datetimepicker.noConflict=function(){return t.fn.datetimepicker=old,this},t(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api",'[data-provide="datetimepicker"]',function(e){ +var i=t(this);i.data("datetimepicker")||(e.preventDefault(),i.datetimepicker("show"))}),t(function(){t('[data-provide="datetimepicker-inline"]').datetimepicker()})}(window.jQuery),/*! bootbox.js v4.4.0 http://bootboxjs.com/license.txt */ +function(t,e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):t.bootbox=e(t.jQuery)}(this,function t(e,i){"use strict";function n(t){var e=m[f.locale];return e?e[t]:m.en[t]}function s(t,i,n){t.stopPropagation(),t.preventDefault();var s=e.isFunction(n)&&n.call(i,t)===!1;s||i.modal("hide")}function o(t){var e,i=0;for(e in t)i++;return i}function a(t,i){var n=0;e.each(t,function(t,e){i(t,e,n++)})}function r(t){var i,n;if("object"!=typeof t)throw new Error("Please supply an object of options");if(!t.message)throw new Error("Please specify a message");return t=e.extend({},f,t),t.buttons||(t.buttons={}),i=t.buttons,n=o(i),a(i,function(t,s,o){if(e.isFunction(s)&&(s=i[t]={callback:s}),"object"!==e.type(s))throw new Error("button with key "+t+" must be an object");s.label||(s.label=t),s.className||(2===n&&("ok"===t||"confirm"===t)||1===n?s.className="btn-primary":s.className="btn-default")}),t}function l(t,e){var i=t.length,n={};if(i<1||i>2)throw new Error("Invalid argument length");return 2===i||"string"==typeof t[0]?(n[e[0]]=t[0],n[e[1]]=t[1]):n=t[0],n}function h(t,i,n){return e.extend(!0,{},t,l(i,n))}function c(t,e,i,n){var s={className:"bootbox-"+t,buttons:d.apply(null,e)};return u(h(s,n,i),e)}function d(){for(var t={},e=0,i=arguments.length;e
    ",header:"",footer:"",closeButton:"",form:"
    ",inputs:{text:"",textarea:"",email:"",select:"",checkbox:"
    ",date:"",time:"",number:"",password:""}},f={locale:e.zui&&e.zui.clientLang?e.zui.clientLang():"zh_cn",backdrop:"static",animate:!0,className:null,closeButton:!0,show:!0,container:"body"},g={};g.alert=function(){var t;if(t=c("alert",["ok"],["message","callback"],arguments),t.callback&&!e.isFunction(t.callback))throw new Error("alert requires callback property to be a function when provided");return t.buttons.ok.callback=t.onEscape=function(){return!e.isFunction(t.callback)||t.callback.call(this)},g.dialog(t)},g.confirm=function(){var t;if(t=c("confirm",["confirm","cancel"],["message","callback"],arguments),t.buttons.cancel.callback=t.onEscape=function(){return t.callback.call(this,!1)},t.buttons.confirm.callback=function(){return t.callback.call(this,!0)},!e.isFunction(t.callback))throw new Error("confirm requires a callback");return g.dialog(t)},g.prompt=function(){var t,n,s,o,r,l,c;if(o=e(p.form),n={className:"bootbox-prompt",buttons:d("cancel","confirm"),value:"",inputType:"text"},t=u(h(n,arguments,["title","callback"]),["confirm","cancel"]),l=t.show===i||t.show,t.message=o,t.buttons.cancel.callback=t.onEscape=function(){return t.callback.call(this,null)},t.buttons.confirm.callback=function(){var i;switch(t.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":i=r.val();break;case"checkbox":var n=r.find("input:checked");i=[],a(n,function(t,n){i.push(e(n).val())})}return t.callback.call(this,i)},t.show=!1,!t.title)throw new Error("prompt requires a title");if(!e.isFunction(t.callback))throw new Error("prompt requires a callback");if(!p.inputs[t.inputType])throw new Error("invalid prompt type");switch(r=e(p.inputs[t.inputType]),t.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":r.val(t.value);break;case"select":var f={};if(c=t.inputOptions||[],!e.isArray(c))throw new Error("Please pass an array of input options");if(!c.length)throw new Error("prompt with select requires options");a(c,function(t,n){var s=r;if(n.value===i||n.text===i)throw new Error("given options in wrong format");n.group&&(f[n.group]||(f[n.group]=e("").attr("label",n.group)),s=f[n.group]),s.append("")}),a(f,function(t,e){r.append(e)}),r.val(t.value);break;case"checkbox":var m=e.isArray(t.value)?t.value:[t.value];if(c=t.inputOptions||[],!c.length)throw new Error("prompt with checkbox requires options");if(!c[0].value||!c[0].text)throw new Error("given options in wrong format");r=e("
    "),a(c,function(i,n){var s=e(p.inputs[t.inputType]);s.find("input").attr("value",n.value),s.find("label").append(n.text),a(m,function(t,e){e===n.value&&s.find("input").prop("checked",!0)}),r.append(s)})}return t.placeholder&&r.attr("placeholder",t.placeholder),t.pattern&&r.attr("pattern",t.pattern),t.maxlength&&r.attr("maxlength",t.maxlength),o.append(r),o.on("submit",function(t){t.preventDefault(),t.stopPropagation(),s.find(".btn-primary").click()}),s=g.dialog(t),s.off("shown.zui.modal"),s.on("shown.zui.modal",function(){r.focus()}),l===!0&&s.modal("show"),s},g.dialog=function(t){t=r(t);var n=e(p.dialog),o=n.find(".modal-dialog"),l=n.find(".modal-body"),h=t.buttons,c="",d={onEscape:t.onEscape};if(e.fn.modal===i)throw new Error("$.fn.modal is not defined; please double check you have included the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ for more details.");if(a(h,function(t,e){c+="",d[t]=e.callback}),l.find(".bootbox-body").html(t.message),t.animate===!0&&n.addClass("fade"),t.className&&n.addClass(t.className),"large"===t.size?o.addClass("modal-lg"):"small"===t.size&&o.addClass("modal-sm"),t.title&&l.before(p.header),t.closeButton){var u=e(p.closeButton);t.title?n.find(".modal-header").prepend(u):u.css("margin-top","-10px").prependTo(l)}return t.title&&n.find(".modal-title").html(t.title),c.length&&(l.after(p.footer),n.find(".modal-footer").html(c)),n.on("hidden.zui.modal",function(t){t.target===this&&n.remove()}),n.on("shown.zui.modal",function(){n.find(".btn-primary:first").focus()}),"static"!==t.backdrop&&n.on("click.dismiss.zui.modal",function(t){n.children(".modal-backdrop").length&&(t.currentTarget=n.children(".modal-backdrop").get(0)),t.target===t.currentTarget&&n.trigger("escape.close.bb")}),n.on("escape.close.bb",function(t){d.onEscape&&s(t,n,d.onEscape)}),n.on("click",".modal-footer button",function(t){var i=e(this).data("bb-handler");s(t,n,d[i])}),n.on("click",".bootbox-close-button",function(t){s(t,n,d.onEscape)}),n.on("keyup",function(t){27===t.which&&n.trigger("escape.close.bb")}),e(t.container).append(n),n.modal({backdrop:!!t.backdrop&&"static",keyboard:!1,show:!1}),t.show&&n.modal("show"),n},g.setDefaults=function(){var t={};2===arguments.length?t[arguments[0]]=arguments[1]:t=arguments[0],e.extend(f,t)},g.hideAll=function(){return e(".bootbox").modal("hide"),g};var m={en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},zh_cn:{OK:"确认",CANCEL:"取消",CONFIRM:"确认"},zh_tw:{OK:"確認",CANCEL:"取消",CONFIRM:"確認"}};return g.addLocale=function(t,i){return e.each(["OK","CANCEL","CONFIRM"],function(t,e){if(!i[e])throw new Error("Please supply a translation for '"+e+"'")}),m[t]={OK:i.OK,CANCEL:i.CANCEL,CONFIRM:i.CONFIRM},g},g.removeLocale=function(t){return delete m[t],g},g.setLocale=function(t){return g.setDefaults("locale",t)},g.init=function(i){return t(i||e)},g}),/*! Chosen, a Select Box Enhancer for jQuery and Prototype by Patrick Filler for Harvest, http://getharvest.com @@ -11030,1786 +41,8 @@ Copyright (c) 2011 Harvest http://getharvest.com MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */ - - -(function() { - var $, AbstractChosen, Chosen, SelectParser, _ref, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { - for(var key in parent) { - if(__hasProp.call(parent, key)) child[key] = parent[key]; - } - - function ctor() { - this.constructor = child; - } - ctor.prototype = parent.prototype; - child.prototype = new ctor(); - child.__super__ = parent.prototype; - return child; - }; - - var LANGUAGE = { - zh_cn: { - no_results_text: "没有找到" - }, - zh_tw: { - no_results_text: "沒有找到" - }, - en: { - no_results_text: "No results match" - } - } - - SelectParser = (function() { - function SelectParser() { - this.options_index = 0; - this.parsed = []; - } - - SelectParser.prototype.add_node = function(child) { - if(child.nodeName.toUpperCase() === "OPTGROUP") { - return this.add_group(child); - } else { - return this.add_option(child); - } - }; - - SelectParser.prototype.add_group = function(group) { - var group_position, option, _i, _len, _ref, _results; - group_position = this.parsed.length; - this.parsed.push({ - array_index: group_position, - group: true, - label: this.escapeExpression(group.label), - children: 0, - disabled: group.disabled, - title: group.title, - search_keys: ($.trim(group.getAttribute('data-keys') || '')).replace(/,/g, ' ') - }); - _ref = group.childNodes; - _results = []; - for(_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - _results.push(this.add_option(option, group_position, group.disabled)); - } - return _results; - }; - - SelectParser.prototype.add_option = function(option, group_position, group_disabled) { - if(option.nodeName.toUpperCase() === "OPTION") { - if(option.text !== "") { - if(group_position != null) { - this.parsed[group_position].children += 1; - } - this.parsed.push({ - array_index: this.parsed.length, - options_index: this.options_index, - value: option.value, - text: option.text, - title: option.title, - html: option.innerHTML, - selected: option.selected, - disabled: group_disabled === true ? group_disabled : option.disabled, - group_array_index: group_position, - classes: option.className, - style: option.style.cssText, - search_keys: ($.trim(option.getAttribute('data-keys') || '') + option.value).replace(/,/, ' ') - }); - } else { - this.parsed.push({ - array_index: this.parsed.length, - options_index: this.options_index, - empty: true - }); - } - return this.options_index += 1; - } - }; - - SelectParser.prototype.escapeExpression = function(text) { - var map, unsafe_chars; - if((text == null) || text === false) { - return ""; - } - if(!/[\&\<\>\"\'\`]/.test(text)) { - return text; - } - map = { - "<": "<", - ">": ">", - '"': """, - "'": "'", - "`": "`" - }; - unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g; - return text.replace(unsafe_chars, function(chr) { - return map[chr] || "&"; - }); - }; - - return SelectParser; - - })(); - - SelectParser.select_to_array = function(select) { - var child, parser, _i, _len, _ref; - parser = new SelectParser(); - _ref = select.childNodes; - for(_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - parser.add_node(child); - } - return parser.parsed; - }; - - AbstractChosen = (function() { - function AbstractChosen(form_field, options) { - this.form_field = form_field; - this.options = options != null ? options : {}; - if(!AbstractChosen.browser_is_supported()) { - return; - } - - this.lang = LANGUAGE[this.options.lang || ($.zui.clientLang ? $.zui.clientLang() : 'zh_cn')]; - this.is_multiple = this.form_field.multiple; - this.set_default_text(); - this.set_default_values(); - this.setup(); - this.set_up_html(); - this.register_observers(); - } - - AbstractChosen.prototype.set_default_values = function() { - var _this = this; - this.click_test_action = function(evt) { - return _this.test_active_click(evt); - }; - this.activate_action = function(evt) { - return _this.activate_field(evt); - }; - this.active_field = false; - this.mouse_on_container = false; - this.results_showing = false; - this.result_highlighted = null; - this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; - this.disable_search_threshold = this.options.disable_search_threshold || 0; - this.disable_search = this.options.disable_search || false; - this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; - this.group_search = this.options.group_search != null ? this.options.group_search : true; - this.search_contains = this.options.search_contains || false; - this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true; - this.max_selected_options = this.options.max_selected_options || Infinity; - this.drop_direction = this.options.drop_direction || 'auto'; - this.middle_highlight = this.options.middle_highlight; - this.inherit_select_classes = this.options.inherit_select_classes || false; - this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true; - return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true; - }; - - AbstractChosen.prototype.set_default_text = function() { - if(this.form_field.getAttribute("data-placeholder")) { - this.default_text = this.form_field.getAttribute("data-placeholder"); - } else if(this.is_multiple) { - this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; - } else { - this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; - } - return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || this.lang.no_results_text || AbstractChosen.default_no_result_text; - }; - - AbstractChosen.prototype.mouse_enter = function() { - return this.mouse_on_container = true; - }; - - AbstractChosen.prototype.mouse_leave = function() { - return this.mouse_on_container = false; - }; - - AbstractChosen.prototype.input_focus = function(evt) { - var _this = this; - if(this.is_multiple) { - if(!this.active_field) { - return setTimeout((function() { - return _this.container_mousedown(); - }), 50); - } - } else { - if(!this.active_field) { - return this.activate_field(); - } - } - }; - - AbstractChosen.prototype.input_blur = function(evt) { - var _this = this; - if(!this.mouse_on_container) { - this.active_field = false; - return setTimeout((function() { - return _this.blur_test(); - }), 100); - } - }; - - AbstractChosen.prototype.results_option_build = function(options) { - var content, data, _i, _len, _ref; - content = ''; - _ref = this.results_data; - for(_i = 0, _len = _ref.length; _i < _len; _i++) { - data = _ref[_i]; - if(data.group) { - content += this.result_add_group(data); - } else { - content += this.result_add_option(data); - } - if(options != null ? options.first : void 0) { - if(data.selected && this.is_multiple) { - this.choice_build(data); - } else if(data.selected && !this.is_multiple) { - this.single_set_selected_text(data.text); - } - } - } - return content; - }; - - AbstractChosen.prototype.result_add_option = function(option) { - var classes, option_el; - if(!option.search_match) { - return ''; - } - if(!this.include_option_in_results(option)) { - return ''; - } - classes = []; - if(!option.disabled && !(option.selected && this.is_multiple)) { - classes.push("active-result"); - } - if(option.disabled && !(option.selected && this.is_multiple)) { - classes.push("disabled-result"); - } - if(option.selected) { - classes.push("result-selected"); - } - if(option.group_array_index != null) { - classes.push("group-option"); - } - if(option.classes !== "") { - classes.push(option.classes); - } - option_el = document.createElement("li"); - option_el.className = classes.join(" "); - option_el.style.cssText = option.style; - option_el.title = option.title; - option_el.setAttribute("data-option-array-index", option.array_index); - option_el.innerHTML = option.search_text; - return this.outerHTML(option_el); - }; - - AbstractChosen.prototype.result_add_group = function(group) { - var group_el; - if(!(group.search_match || group.group_match)) { - return ''; - } - if(!(group.active_options > 0)) { - return ''; - } - group_el = document.createElement("li"); - group_el.className = "group-result"; - group_el.title = group.title; - group_el.innerHTML = group.search_text; - return this.outerHTML(group_el); - }; - - AbstractChosen.prototype.results_update_field = function() { - this.set_default_text(); - if(!this.is_multiple) { - this.results_reset_cleanup(); - } - this.result_clear_highlight(); - this.results_build(); - if(this.results_showing) { - return this.winnow_results(); - } - }; - - AbstractChosen.prototype.reset_single_select_options = function() { - var result, _i, _len, _ref, _results; - _ref = this.results_data; - _results = []; - for(_i = 0, _len = _ref.length; _i < _len; _i++) { - result = _ref[_i]; - if(result.selected) { - _results.push(result.selected = false); - } else { - _results.push(void 0); - } - } - return _results; - }; - - AbstractChosen.prototype.results_toggle = function() { - if(this.results_showing) { - return this.results_hide(); - } else { - return this.results_show(); - } - }; - - AbstractChosen.prototype.results_search = function(evt) { - if(this.results_showing) { - return this.winnow_results(1); - } else { - return this.results_show(); - } - }; - - AbstractChosen.prototype.winnow_results = function(canMiddleHighlight) { - var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref; - this.no_results_clear(); - results = 0; - searchText = this.get_search_text(); - escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); - regexAnchor = this.search_contains ? "" : "^"; - regex = new RegExp(regexAnchor + escapedSearchText, 'i'); - zregex = new RegExp(escapedSearchText, 'i'); - _ref = this.results_data; - for(_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - option.search_match = false; - results_group = null; - if(this.include_option_in_results(option)) { - if(option.group) { - option.group_match = false; - option.active_options = 0; - } - if((option.group_array_index != null) && this.results_data[option.group_array_index]) { - results_group = this.results_data[option.group_array_index]; - if(results_group.active_options === 0 && results_group.search_match) { - results += 1; - } - results_group.active_options += 1; - } - if(!(option.group && !this.group_search)) { - option.search_text = option.group ? option.label : option.html; - option.search_keys_match = this.search_string_match(option.search_keys, regex); - option.search_text_match = this.search_string_match(option.search_text, regex); - option.search_match = option.search_text_match || option.search_keys_match; - if(option.search_match && !option.group) { - results += 1; - } - if(option.search_match) { - if(option.search_text_match && option.search_text.length) { - startpos = option.search_text.search(zregex); - text = option.search_text.substr(0, startpos + searchText.length) + '' + option.search_text.substr(startpos + searchText.length); - option.search_text = text.substr(0, startpos) + '' + text.substr(startpos); - } else if(option.search_keys_match && option.search_keys.length) { - startpos = option.search_keys.search(zregex); - text = option.search_keys.substr(0, startpos + searchText.length) + '' + option.search_keys.substr(startpos + searchText.length); - option.search_text += '  ' + text.substr(0, startpos) + '' + text.substr(startpos) + ''; - } - if(results_group != null) { - results_group.group_match = true; - } - } else if((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { - option.search_match = true; - } - } - } - } - this.result_clear_highlight(); - if(results < 1 && searchText.length) { - this.update_results_content(""); - return this.no_results(searchText); - } else { - this.update_results_content(this.results_option_build()); - return this.winnow_results_set_highlight(canMiddleHighlight); - } - }; - - AbstractChosen.prototype.search_string_match = function(search_string, regex) { - var part, parts, _i, _len; - if(regex.test(search_string)) { - return true; - } else if(this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) { - parts = search_string.replace(/\[|\]/g, "").split(" "); - if(parts.length) { - for(_i = 0, _len = parts.length; _i < _len; _i++) { - part = parts[_i]; - if(regex.test(part)) { - return true; - } - } - } - } - }; - - AbstractChosen.prototype.choices_count = function() { - var option, _i, _len, _ref; - if(this.selected_option_count != null) { - return this.selected_option_count; - } - this.selected_option_count = 0; - _ref = this.form_field.options; - for(_i = 0, _len = _ref.length; _i < _len; _i++) { - option = _ref[_i]; - if(option.selected && option.value != '') { - this.selected_option_count += 1; - } - } - return this.selected_option_count; - }; - - AbstractChosen.prototype.choices_click = function(evt) { - evt.preventDefault(); - if(!(this.results_showing || this.is_disabled)) { - return this.results_show(); - } - }; - - AbstractChosen.prototype.keyup_checker = function(evt) { - var stroke, _ref; - stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; - this.search_field_scale(); - switch(stroke) { - case 8: - if(this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { - return this.keydown_backstroke(); - } else if(!this.pending_backstroke) { - this.result_clear_highlight(); - return this.results_search(); - } - break; - case 13: - evt.preventDefault(); - if(this.results_showing) { - return this.result_select(evt); - } - break; - case 27: - if(this.results_showing) { - this.results_hide(); - } - return true; - case 9: - case 38: - case 40: - case 16: - case 91: - case 17: - break; - default: - return this.results_search(); - } - }; - - AbstractChosen.prototype.clipboard_event_checker = function(evt) { - var _this = this; - return setTimeout((function() { - return _this.results_search(); - }), 50); - }; - - AbstractChosen.prototype.container_width = function() { - if (this.options.width != null) { - return this.options.width; - } else if (this.form_field.classList.contains('form-control')) { - return '100%'; - } else { - return "" + this.form_field.offsetWidth + "px"; - } - }; - - AbstractChosen.prototype.include_option_in_results = function(option) { - if(this.is_multiple && (!this.display_selected_options && option.selected)) { - return false; - } - if(!this.display_disabled_options && option.disabled) { - return false; - } - if(option.empty) { - return false; - } - return true; - }; - - AbstractChosen.prototype.search_results_touchstart = function(evt) { - this.touch_started = true; - return this.search_results_mouseover(evt); - }; - - AbstractChosen.prototype.search_results_touchmove = function(evt) { - this.touch_started = false; - return this.search_results_mouseout(evt); - }; - - AbstractChosen.prototype.search_results_touchend = function(evt) { - if(this.touch_started) { - return this.search_results_mouseup(evt); - } - }; - - AbstractChosen.prototype.outerHTML = function(element) { - var tmp; - if(element.outerHTML) { - return element.outerHTML; - } - tmp = document.createElement("div"); - tmp.appendChild(element); - return tmp.innerHTML; - }; - - AbstractChosen.browser_is_supported = function() { - if(window.navigator.appName === "Microsoft Internet Explorer") { - return document.documentMode >= 8; - } - if(/iP(od|hone)/i.test(window.navigator.userAgent)) { - return false; - } - if(/Android/i.test(window.navigator.userAgent)) { - if(/Mobile/i.test(window.navigator.userAgent)) { - return false; - } - } - return true; - }; - - AbstractChosen.default_multiple_text = ""; - - AbstractChosen.default_single_text = ""; - - AbstractChosen.default_no_result_text = "No results match"; - - return AbstractChosen; - - })(); - - $ = jQuery; - - $.fn.extend({ - chosen: function(options) { - if(!AbstractChosen.browser_is_supported()) { - return this; - } - return this.each(function(input_field) { - var $this, chosen; - $this = $(this); - chosen = $this.data('chosen'); - if(options === 'destroy' && chosen) { - chosen.destroy(); - } else if(!chosen) { - $this.data('chosen', new Chosen(this, options)); - } - }); - } - }); - - Chosen = (function(_super) { - __extends(Chosen, _super); - - function Chosen() { - _ref = Chosen.__super__.constructor.apply(this, arguments); - return _ref; - } - - Chosen.prototype.setup = function() { - this.form_field_jq = $(this.form_field); - this.current_selectedIndex = this.form_field.selectedIndex; - return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl"); - }; - - Chosen.prototype.set_up_html = function() { - var container_classes, container_props; - container_classes = ["chosen-container"]; - container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single")); - if(this.inherit_select_classes && this.form_field.className) { - container_classes.push(this.form_field.className); - } - if(this.is_rtl) { - container_classes.push("chosen-rtl"); - } - var strClass = this.form_field.getAttribute('data-css-class'); - if(strClass) { - container_classes.push(strClass); - } - - container_props = { - 'class': container_classes.join(' '), - 'style': "width: " + (this.container_width()) + ";", - 'title': this.form_field.title - }; - if(this.form_field.id.length) { - container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen"; - } - this.container = $("
    ", container_props); - if(this.is_multiple) { - this.container.html('
      '); - } else { - this.container.html('' + this.default_text + '
        '); - } - this.form_field_jq.hide().after(this.container); - this.dropdown = this.container.find('div.chosen-drop').first(); - this.search_field = this.container.find('input').first(); - this.search_results = this.container.find('ul.chosen-results').first(); - this.search_field_scale(); - this.search_no_results = this.container.find('li.no-results').first(); - if(this.is_multiple) { - this.search_choices = this.container.find('ul.chosen-choices').first(); - this.search_container = this.container.find('li.search-field').first(); - } else { - this.search_container = this.container.find('div.chosen-search').first(); - this.selected_item = this.container.find('.chosen-single').first(); - } - if(this.options.drop_width) { - this.dropdown.css('width', this.options.drop_width).addClass('chosen-drop-size-limited'); - } - this.results_build(); - this.set_tab_index(); - this.set_label_behavior(); - return this.form_field_jq.trigger("chosen:ready", { - chosen: this - }); - }; - - Chosen.prototype.register_observers = function() { - var _this = this; - this.container.bind('mousedown.chosen', function(evt) { - _this.container_mousedown(evt); - }); - this.container.bind('mouseup.chosen', function(evt) { - _this.container_mouseup(evt); - }); - this.container.bind('mouseenter.chosen', function(evt) { - _this.mouse_enter(evt); - }); - this.container.bind('mouseleave.chosen', function(evt) { - _this.mouse_leave(evt); - }); - this.search_results.bind('mouseup.chosen', function(evt) { - _this.search_results_mouseup(evt); - }); - this.search_results.bind('mouseover.chosen', function(evt) { - _this.search_results_mouseover(evt); - }); - this.search_results.bind('mouseout.chosen', function(evt) { - _this.search_results_mouseout(evt); - }); - this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) { - _this.search_results_mousewheel(evt); - }); - this.search_results.bind('touchstart.chosen', function(evt) { - _this.search_results_touchstart(evt); - }); - this.search_results.bind('touchmove.chosen', function(evt) { - _this.search_results_touchmove(evt); - }); - this.search_results.bind('touchend.chosen', function(evt) { - _this.search_results_touchend(evt); - }); - this.form_field_jq.bind("chosen:updated.chosen", function(evt) { - _this.results_update_field(evt); - }); - this.form_field_jq.bind("chosen:activate.chosen", function(evt) { - _this.activate_field(evt); - }); - this.form_field_jq.bind("chosen:open.chosen", function(evt) { - _this.container_mousedown(evt); - }); - this.form_field_jq.bind("chosen:close.chosen", function(evt) { - _this.input_blur(evt); - }); - this.search_field.bind('blur.chosen', function(evt) { - _this.input_blur(evt); - }); - this.search_field.bind('keyup.chosen', function(evt) { - _this.keyup_checker(evt); - }); - this.search_field.bind('keydown.chosen', function(evt) { - _this.keydown_checker(evt); - }); - this.search_field.bind('focus.chosen', function(evt) { - _this.input_focus(evt); - }); - this.search_field.bind('cut.chosen', function(evt) { - _this.clipboard_event_checker(evt); - }); - this.search_field.bind('paste.chosen', function(evt) { - _this.clipboard_event_checker(evt); - }); - if(this.is_multiple) { - return this.search_choices.bind('click.chosen', function(evt) { - _this.choices_click(evt); - }); - } else { - return this.container.bind('click.chosen', function(evt) { - evt.preventDefault(); - }); - } - }; - - Chosen.prototype.destroy = function() { - $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); - if(this.search_field[0].tabIndex) { - this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex; - } - this.container.remove(); - this.form_field_jq.removeData('chosen'); - return this.form_field_jq.show(); - }; - - Chosen.prototype.search_field_disabled = function() { - this.is_disabled = this.form_field_jq[0].disabled; - if(this.is_disabled) { - this.container.addClass('chosen-disabled'); - this.search_field[0].disabled = true; - if(!this.is_multiple) { - this.selected_item.unbind("focus.chosen", this.activate_action); - } - return this.close_field(); - } else { - this.container.removeClass('chosen-disabled'); - this.search_field[0].disabled = false; - if(!this.is_multiple) { - return this.selected_item.bind("focus.chosen", this.activate_action); - } - } - }; - - Chosen.prototype.container_mousedown = function(evt) { - if(!this.is_disabled) { - if(evt && evt.type === "mousedown" && !this.results_showing) { - evt.preventDefault(); - } - if(!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { - if(!this.active_field) { - if(this.is_multiple) { - this.search_field.val(""); - } - $(this.container[0].ownerDocument).bind('click.chosen', this.click_test_action); - this.results_show(); - } else if(!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) { - evt.preventDefault(); - this.results_toggle(); - } - return this.activate_field(); - } - } - }; - - Chosen.prototype.container_mouseup = function(evt) { - if(evt.target.nodeName === "ABBR" && !this.is_disabled) { - return this.results_reset(evt); - } - }; - - Chosen.prototype.search_results_mousewheel = function(evt) { - var delta; - if(evt.originalEvent) { - delta = -evt.originalEvent.wheelDelta || evt.originalEvent.detail; - } - if(delta != null) { - evt.preventDefault(); - if(evt.type === 'DOMMouseScroll') { - delta = delta * 40; - } - return this.search_results.scrollTop(delta + this.search_results.scrollTop()); - } - }; - - Chosen.prototype.blur_test = function(evt) { - if(!this.active_field && this.container.hasClass("chosen-container-active")) { - return this.close_field(); - } - }; - - Chosen.prototype.close_field = function() { - $(this.container[0].ownerDocument).unbind("click.chosen", this.click_test_action); - this.active_field = false; - this.results_hide(); - this.container.removeClass("chosen-container-active"); - this.clear_backstroke(); - this.show_search_field_default(); - return this.search_field_scale(); - }; - - Chosen.prototype.activate_field = function() { - this.container.addClass("chosen-container-active"); - this.active_field = true; - this.search_field.val(this.search_field.val()); - // return this.search_field.focus(); ZUI: bug: when user select a item by click, container scroll to left automaticly. - }; - - Chosen.prototype.test_active_click = function(evt) { - var active_container; - active_container = $(evt.target).closest('.chosen-container'); - if(active_container.length && this.container[0] === active_container[0]) { - return this.active_field = true; - } else { - return this.close_field(); - } - }; - - Chosen.prototype.results_build = function() { - this.parsing = true; - this.selected_option_count = null; - this.results_data = SelectParser.select_to_array(this.form_field); - if(this.is_multiple) { - this.search_choices.find("li.search-choice").remove(); - } else if(!this.is_multiple) { - this.single_set_selected_text(); - if(this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { - this.search_field[0].readOnly = true; - this.container.addClass("chosen-container-single-nosearch"); - } else { - this.search_field[0].readOnly = false; - this.container.removeClass("chosen-container-single-nosearch"); - } - } - this.update_results_content(this.results_option_build({ - first: true - })); - this.search_field_disabled(); - this.show_search_field_default(); - this.search_field_scale(); - return this.parsing = false; - }; - - Chosen.prototype.result_do_highlight = function(el, canMiddleHighlight) { - var high_bottom, high_top, maxHeight, visible_bottom, visible_top, resultHeight, scrollTop = -1; - if(el.length) { - this.result_clear_highlight(); - this.result_highlight = el; - this.result_highlight.addClass("highlighted"); - maxHeight = parseInt(this.search_results.css("maxHeight"), 10); - resultHeight = this.result_highlight.outerHeight(); - visible_top = this.search_results.scrollTop(); - visible_bottom = maxHeight + visible_top; - high_top = this.result_highlight.position().top + this.search_results.scrollTop(); - high_bottom = high_top + resultHeight; - if(this.middle_highlight && (canMiddleHighlight || this.middle_highlight === 'always' || high_bottom >= visible_bottom || high_top < visible_top)) { - scrollTop = Math.min(high_top - resultHeight, Math.max(0, high_top - (maxHeight - resultHeight)/2)); - } else if(high_bottom >= visible_bottom) { - scrollTop = (high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0; - } else if(high_top < visible_top) { - scrollTop = high_top; - } - if(scrollTop > -1) { - this.search_results.scrollTop(scrollTop); - } - } - }; - - Chosen.prototype.result_clear_highlight = function() { - if(this.result_highlight) { - this.result_highlight.removeClass("highlighted"); - } - return this.result_highlight = null; - }; - - Chosen.prototype.results_show = function() { - if(this.is_multiple && this.max_selected_options <= this.choices_count()) { - this.form_field_jq.trigger("chosen:maxselected", { - chosen: this - }); - return false; - } - this.container.addClass("chosen-with-drop"); - this.results_showing = true; - this.search_field.focus(); - this.search_field.val(this.search_field.val()); - this.winnow_results(1); - - var dropDirection = this.drop_direction; - if(dropDirection === 'auto') { - if (!this.drop_directionFixed) { - var $drop = this.container.find('.chosen-drop'); - var offset = this.container.offset(); - if(offset.top + $drop.outerHeight() + 30 > $(window).height() + $(window).scrollTop()) { - dropDirection = 'up'; - } - this.drop_directionFixed = dropDirection; - } else { - dropDirection = this.drop_directionFixed; - } - } - this.container.toggleClass('chosen-up', dropDirection === 'up'); - - return this.form_field_jq.trigger("chosen:showing_dropdown", { - chosen: this - }); - }; - - Chosen.prototype.update_results_content = function(content) { - return this.search_results.html(content); - }; - - Chosen.prototype.results_hide = function() { - if(this.results_showing) { - this.result_clear_highlight(); - this.container.removeClass("chosen-with-drop"); - this.form_field_jq.trigger("chosen:hiding_dropdown", { - chosen: this - }); - this.drop_directionFixed = 0; - } - return this.results_showing = false; - }; - - Chosen.prototype.set_tab_index = function(el) { - var ti; - if(this.form_field.tabIndex) { - ti = this.form_field.tabIndex; - this.form_field.tabIndex = -1; - return this.search_field[0].tabIndex = ti; - } - }; - - Chosen.prototype.set_label_behavior = function() { - var _this = this; - this.form_field_label = this.form_field_jq.parents("label"); - if(!this.form_field_label.length && this.form_field.id.length) { - this.form_field_label = $("label[for='" + this.form_field.id + "']"); - } - if(this.form_field_label.length > 0) { - return this.form_field_label.bind('click.chosen', function(evt) { - if(_this.is_multiple) { - return _this.container_mousedown(evt); - } else { - return _this.activate_field(); - } - }); - } - }; - - Chosen.prototype.show_search_field_default = function() { - if(this.is_multiple && this.choices_count() < 1 && !this.active_field) { - this.search_field.val(this.default_text); - return this.search_field.addClass("default"); - } else { - this.search_field.val(""); - return this.search_field.removeClass("default"); - } - }; - - Chosen.prototype.search_results_mouseup = function(evt) { - var target; - target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); - if(target.length) { - this.result_highlight = target; - this.result_select(evt); - // return this.search_field.focus(); // ZUI: bug: when user select a item by click, container scroll to left automaticly. - } - }; - - Chosen.prototype.search_results_mouseover = function(evt) { - var target; - target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); - if(target) { - return this.result_do_highlight(target); - } - }; - - Chosen.prototype.search_results_mouseout = function(evt) { - if($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { - return this.result_clear_highlight(); - } - }; - - Chosen.prototype.choice_build = function(item) { - var choice, close_link, - _this = this; - choice = $('
      • ', { - "class": "search-choice" - /// ZUI change begin - /// Set title to span with item value - /// }).html("" + item.html + ""); - }).html("" + item.html + ""); - /// ZUI change end - if(item.disabled) { - choice.addClass('search-choice-disabled'); - } else { - close_link = $('', { - "class": 'search-choice-close', - 'data-option-array-index': item.array_index - }); - close_link.bind('click.chosen', function(evt) { - return _this.choice_destroy_link_click(evt); - }); - choice.append(close_link); - } - return this.search_container.before(choice); - }; - - Chosen.prototype.choice_destroy_link_click = function(evt) { - evt.preventDefault(); - evt.stopPropagation(); - if(!this.is_disabled) { - return this.choice_destroy($(evt.target)); - } - }; - - Chosen.prototype.choice_destroy = function(link) { - if(this.result_deselect(link[0].getAttribute("data-option-array-index"))) { - this.show_search_field_default(); - if(this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) { - this.results_hide(); - } - link.parents('li').first().remove(); - return this.search_field_scale(); - } - }; - - Chosen.prototype.results_reset = function() { - this.reset_single_select_options(); - this.form_field.options[0].selected = true; - this.single_set_selected_text(); - this.show_search_field_default(); - this.results_reset_cleanup(); - this.form_field_jq.trigger("change"); - if(this.active_field) { - return this.results_hide(); - } - }; - - Chosen.prototype.results_reset_cleanup = function() { - this.current_selectedIndex = this.form_field.selectedIndex; - return this.selected_item.find("abbr").remove(); - }; - - Chosen.prototype.result_select = function(evt) { - var high, item; - if(this.result_highlight) { - high = this.result_highlight; - this.result_clear_highlight(); - if(this.is_multiple && this.max_selected_options <= this.choices_count()) { - this.form_field_jq.trigger("chosen:maxselected", { - chosen: this - }); - return false; - } - if(this.is_multiple) { - high.removeClass("active-result"); - } else { - this.reset_single_select_options(); - } - item = this.results_data[high[0].getAttribute("data-option-array-index")]; - item.selected = true; - this.form_field.options[item.options_index].selected = true; - this.selected_option_count = null; - if(this.is_multiple) { - this.choice_build(item); - } else { - this.single_set_selected_text(item.text); - } - if(!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) { - this.results_hide(); - } - this.search_field.val(""); - if(this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { - this.form_field_jq.trigger("change", { - 'selected': this.form_field.options[item.options_index].value - }); - } - this.current_selectedIndex = this.form_field.selectedIndex; - return this.search_field_scale(); - } - }; - - Chosen.prototype.single_set_selected_text = function(text) { - if(text == null) { - text = this.default_text; - } - if(text === this.default_text) { - this.selected_item.addClass("chosen-default"); - } else { - this.single_deselect_control_build(); - this.selected_item.removeClass("chosen-default"); - } - /// ZUI change begin - /// Change title with text - /// return this.selected_item.find("span").text(text); // old code - return this.selected_item.find("span").attr('title', text).text(text); - /// ZUI change end - }; - - Chosen.prototype.result_deselect = function(pos) { - var result_data; - result_data = this.results_data[pos]; - if(!this.form_field.options[result_data.options_index].disabled) { - result_data.selected = false; - this.form_field.options[result_data.options_index].selected = false; - this.selected_option_count = null; - this.result_clear_highlight(); - if(this.results_showing) { - this.winnow_results(); - } - this.form_field_jq.trigger("change", { - deselected: this.form_field.options[result_data.options_index].value - }); - this.search_field_scale(); - return true; - } else { - return false; - } - }; - - Chosen.prototype.single_deselect_control_build = function() { - if(!this.allow_single_deselect) { - return; - } - if(!this.selected_item.find("abbr").length) { - this.selected_item.find("span").first().after(""); - } - return this.selected_item.addClass("chosen-single-with-deselect"); - }; - - Chosen.prototype.get_search_text = function() { - if(this.search_field.val() === this.default_text) { - return ""; - } else { - return $('
        ').text($.trim(this.search_field.val())).html(); - } - }; - - Chosen.prototype.winnow_results_set_highlight = function(canMiddleHighlight) { - var do_high, selected_results; - selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; - do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); - if(do_high != null) { - return this.result_do_highlight(do_high, canMiddleHighlight); - } - }; - - Chosen.prototype.no_results = function(terms) { - var no_results_html; - no_results_html = $('
      • ' + this.results_none_found + ' ""
      • '); - no_results_html.find("span").first().html(terms); - this.search_results.append(no_results_html); - return this.form_field_jq.trigger("chosen:no_results", { - chosen: this - }); - }; - - Chosen.prototype.no_results_clear = function() { - return this.search_results.find(".no-results").remove(); - }; - - Chosen.prototype.keydown_arrow = function() { - var next_sib; - if(this.results_showing && this.result_highlight) { - next_sib = this.result_highlight.nextAll("li.active-result").first(); - if(next_sib) { - return this.result_do_highlight(next_sib); - } - } else { - return this.results_show(); - } - }; - - Chosen.prototype.keyup_arrow = function() { - var prev_sibs; - if(!this.results_showing && !this.is_multiple) { - return this.results_show(); - } else if(this.result_highlight) { - prev_sibs = this.result_highlight.prevAll("li.active-result"); - if(prev_sibs.length) { - return this.result_do_highlight(prev_sibs.first()); - } else { - if(this.choices_count() > 0) { - this.results_hide(); - } - return this.result_clear_highlight(); - } - } - }; - - Chosen.prototype.keydown_backstroke = function() { - var next_available_destroy; - if(this.pending_backstroke) { - this.choice_destroy(this.pending_backstroke.find("a").first()); - return this.clear_backstroke(); - } else { - next_available_destroy = this.search_container.siblings("li.search-choice").last(); - if(next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) { - this.pending_backstroke = next_available_destroy; - if(this.single_backstroke_delete) { - return this.keydown_backstroke(); - } else { - return this.pending_backstroke.addClass("search-choice-focus"); - } - } - } - }; - - Chosen.prototype.clear_backstroke = function() { - if(this.pending_backstroke) { - this.pending_backstroke.removeClass("search-choice-focus"); - } - return this.pending_backstroke = null; - }; - - Chosen.prototype.keydown_checker = function(evt) { - var stroke, _ref1; - stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode; - this.search_field_scale(); - if(stroke !== 8 && this.pending_backstroke) { - this.clear_backstroke(); - } - switch(stroke) { - case 8: - this.backstroke_length = this.search_field.val().length; - break; - case 9: - if(this.results_showing && !this.is_multiple) { - this.result_select(evt); - } - this.mouse_on_container = false; - break; - case 13: - evt.preventDefault(); - break; - case 38: - evt.preventDefault(); - this.keyup_arrow(); - break; - case 40: - evt.preventDefault(); - this.keydown_arrow(); - break; - } - }; - - Chosen.prototype.search_field_scale = function() { - var div, f_width, h, style, style_block, styles, w, _i, _len; - if(this.is_multiple) { - h = 0; - w = 0; - style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; - styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; - for(_i = 0, _len = styles.length; _i < _len; _i++) { - style = styles[_i]; - style_block += style + ":" + this.search_field.css(style) + ";"; - } - div = $('
        ', { - 'style': style_block - }); - div.text(this.search_field.val()); - $('body').append(div); - w = div.width() + 25; - div.remove(); - f_width = this.container.outerWidth(); - if(w > f_width - 10) { - w = f_width - 10; - } - return this.search_field.css({ - 'width': w + 'px' - }); - } - }; - - return Chosen; - - })(AbstractChosen); -}).call(this); - - -/* ======================================================================== - * ZUI: selectable.js [1.5.0+] - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($) { - 'use strict'; - - var name = 'zui.selectable'; // module name - - // The selectable modal class - var Selectable = function(element, options) { - this.name = name; - this.$ = $(element); - this.id = $.zui.uuid(); - this.selectOrder = 1; - this.selections = {}; - - this.getOptions(options); - this._init(); - }; - - var isPointInner = function(x, y, a) { - return x >= a.left && x <= (a.left + a.width) && y >= a.top && y <= (a.top + a.height); - }; - - var isIntersectArea = function(a, b) { - var x1 = Math.max(a.left, b.left), - y1 = Math.max(a.top, b.top), - x2 = Math.min(a.left + a.width, b.left + b.width), - y2 = Math.min(a.top + a.height, b.top + b.height); - - return isPointInner(x1, y1, a) && isPointInner(x2, y2, a) && isPointInner(x1, y1, b) && isPointInner(x2, y2, b); - }; - - // default options - Selectable.DEFAULTS = { - selector: 'li,tr,div', - trigger: '', - selectClass: 'active', - rangeStyle: { - border: '1px solid ' + ($.zui.colorset ? $.zui.colorset.primary : '#3280fc'), - backgroundColor: $.zui.colorset ? (new $.zui.Color($.zui.colorset.primary).fade(20).toCssStr()) : 'rgba(50, 128, 252, 0.2)' - }, - clickBehavior: 'toggle', - ignoreVal: 3, - listenClick: true - // mouseButton: -1 // 0, 1, 2, -1, all, left, right, middle - }; - - // Get and init options - Selectable.prototype.getOptions = function(options) { - this.options = $.extend({}, Selectable.DEFAULTS, this.$.data(), options); - }; - - Selectable.prototype.select = function(elementOrid) { - this.toggle(elementOrid, true); - }; - - Selectable.prototype.unselect = function(elementOrid) { - this.toggle(elementOrid, false); - }; - - Selectable.prototype.toggle = function(elementOrid, isSelect, handle) { - var $element, id, selector = this.options.selector, that = this; - if(elementOrid === undefined) { - this.$.find(selector).each(function() { - that.toggle(this, isSelect); - }); - return; - } else if(typeof elementOrid === 'object') { - $element = $(elementOrid).closest(selector); - id = $element.data('id'); - } else { - id = elementOrid; - $element = that.$.find('.slectable-item[data-id="' + id + '"]'); - } - if($element && $element.length) { - if(!id) { - id = $.zui.uuid(); - $element.attr('data-id', id); - } - if(isSelect === undefined || isSelect === null) { - isSelect = !that.selections[id]; - } - if(!!isSelect !== !!that.selections[id]) { - var handleResult; - if($.isFunction(handle)) { - handleResult = handle(isSelect); - } - if(handleResult !== true) { - that.selections[id] = isSelect ? that.selectOrder++ : false; - that.callEvent(isSelect ? 'select' : 'unselect', {id: id, selections: that.selections, target: $element, selected: that.getSelectedArray()}, that); - } - } - if (that.options.selectClass) { - $element.toggleClass(that.options.selectClass, isSelect); - } - } - }; - - Selectable.prototype.getSelectedArray = function() { - var selected = []; - $.each(this.selections, function(thisId, thisIsSelected) { - if(thisIsSelected) selected.push(thisId); - }); - return selected; - }; - - Selectable.prototype.syncSelectionsFromClass = function() { - var that = this; - var $children = that.$children = that.$.find(that.options.selector); - that.selections = {}; - that.$children.each(function() { - var $item = $(this); - that.selections[$item.data('id')] = $item.hasClass(that.options.selectClass); - }); - }; - - Selectable.prototype._init = function() { - var options = this.options, that = this; - var ignoreVal = options.ignoreVal; - var isIgnoreMove = true; - var eventNamespace = '.' + this.name + '.' + this.id; - var startX, startY, $range, range, x, y, checkRangeCall; - var checkFunc = $.isFunction(options.checkFunc) ? options.checkFunc : null; - var rangeFunc = $.isFunction(options.rangeFunc) ? options.rangeFunc : null; - var isMouseDown = false; - var mouseDownBackEventCall = null; - var mouseDownEventName = 'mousedown' + eventNamespace; - - var checkRange = function() { - if(!range) return; - that.$children.each(function() { - var $item = $(this); - var offset = $item.offset(); - offset.width = $item.outerWidth(); - offset.height = $item.outerHeight(); - var isIntersect = rangeFunc ? rangeFunc.call(this, range, offset) : isIntersectArea(range, offset); - if(checkFunc) { - var result = checkFunc.call(that, { - intersect: isIntersect, - target: $item, - range: range, - targetRange: offset - }); - if(result === true) { - that.select($item); - } else if(result === false) { - that.unselect($item); - } - } else { - if(isIntersect) { - that.select($item); - } else if(!that.multiKey) { - that.unselect($item); - } - } - }); - }; - - var mousemove = function(e) { - if(!isMouseDown) return; - x = e.pageX; - y = e.pageY; - range = { - width: Math.abs(x - startX), - height: Math.abs(y - startY), - left: x > startX ? startX : x, - top: y > startY ? startY : y - }; - - if(isIgnoreMove && range.width < ignoreVal && range.height < ignoreVal) return; - if(!$range) { - $range = $('.selectable-range[data-id="' + that.id + '"]'); - if(!$range.length) { - $range = $('
        ') - .css($.extend({ - zIndex: 1060, - position: 'absolute', - top: startX, - left: startY, - pointerEvents: 'none', - }, that.options.rangeStyle)) - .appendTo($('body')); - } - } - $range.css(range); - clearTimeout(checkRangeCall); - checkRangeCall = setTimeout(checkRange, 10); - isIgnoreMove = false; - }; - - var mouseup = function(e) { - $(document).off(eventNamespace); - clearTimeout(mouseDownBackEventCall); - if(!isMouseDown) return; - isMouseDown = false; - if($range) $range.remove(); - if(!isIgnoreMove) - { - if(range) { - clearTimeout(checkRangeCall); - checkRange(); - range = null; - } - } - that.callEvent('finish', {selections: that.selections, selected: that.getSelectedArray()}); - e.preventDefault(); - }; - - var mousedown = function(e) { - if(isMouseDown) { - return mouseup(e); - } - - var mouseButton = $.zui.getMouseButtonCode(options.mouseButton); - if(mouseButton > -1 && e.button !== mouseButton) { - return; - } - - if(that.altKey || e.which === 3 || that.callEvent('start', e) === false) { - return; - } - - var $children = that.$children = that.$.find(options.selector); - $children.addClass('slectable-item'); - - var clickBehavior = that.multiKey ? 'multi' : options.clickBehavior; - if(clickBehavior === 'single') { - that.unselect(); - } - if (options.listenClick) { - if(clickBehavior === 'multi') { - that.toggle(e.target); - } else if(clickBehavior === 'single') { - that.select(e.target); - } else if(clickBehavior === 'toggle') { - that.toggle(e.target, null, function(isSelect) { - that.unselect(); - }); - } - } - - if(that.callEvent('startDrag', e) === false) { - that.callEvent('finish', {selections: that.selections, selected: that.getSelectedArray()}); - return; - } - - startX = e.pageX; - startY = e.pageY; - - $range = null; - isIgnoreMove = true; - isMouseDown = true; - - $(document).on('mousemove' + eventNamespace, mousemove).on('mouseup' + eventNamespace, mouseup); - mouseDownBackEventCall = setTimeout(function() { - $(document).on(mouseDownEventName, mouseup); - }, 10); - e.preventDefault(); - }; - - var $container = options.container && options.container !== 'default' ? $(options.container) : this.$; - if(options.trigger) { - $container.on(mouseDownEventName, options.trigger, mousedown); - } else { - $container.on(mouseDownEventName, mousedown); - } - - $(document).on('keydown', function(e) { - var code = e.keyCode; - if(code === 17 || code == 91) that.multiKey = code; - else if(code === 18) that.altKey = true; - }).on('keyup', function(e) { - that.multiKey = false; - that.altKey = false; - }); - }; - - // Call event helper - Selectable.prototype.callEvent = function(name, params) { - var event = $.Event(name + '.' + this.name); - this.$.trigger(event, params); - var result = event.result; - var callback = this.options[name]; - if($.isFunction(callback)) { - result = callback.apply(this, $.isArray(params) ? params : [params]); - } - return result; - }; - - // Extense jquery element - $.fn.selectable = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(name); - var options = typeof option == 'object' && option; - - if(!data) $this.data(name, (data = new Selectable(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - $.fn.selectable.Constructor = Selectable; - - // Auto call selectable after document load complete - $(function() { - $('[data-ride="selectable"]').selectable(); - }); -}(jQuery)); - - -/* ======================================================================== - * ZUI: sortable.js - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2014-2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -+ function($, window, document) { - 'use strict'; - - if(!$.fn.droppable) { - console.error('Sortable requires droppable.js'); - return; - } - - var NAME = 'zui.sortable', - DEFAULTS = { - selector : 'li,div', - dragCssClass : 'invisible', - sortingClass : 'sortable-sorting' - }, - STR_ORDER = 'order'; - - var Sortable = function(element, options) { - var that = this; - that.$ = $(element); - that.options = $.extend({}, DEFAULTS, that.$.data(), options); - that.init(); - }; - - Sortable.DEFAULTS = DEFAULTS; - Sortable.NAME = NAME; - - Sortable.prototype.init = function() { - var that = this, - $root = that.$, - options = that.options, - selector = options.selector, - sortingClass = options.sortingClass, - dragCssClass = options.dragCssClass, - isReverse = options.reverse; - - var markOrders = function($items) { - $items = $items || that.getItems(1); - var orders = []; - - $items.each(function() { - var order = $(this).data(STR_ORDER); - if(typeof order === 'number') { - orders.push(order); - } - }); - - orders.sort(function(a, b) { - return a - b; - }); - - var itemsCount = $items.length; - while(orders.length < itemsCount) { - orders.push(orders.length ? (orders[orders.length - 1] + 1) : 0); - } - - if(isReverse) { - orders.reverse(); - } - - that.maxOrder = 0; - $items.each(function(idx) { - that.maxOrder = Math.max(that.maxOrder, orders[idx]); - $(this).data(STR_ORDER, orders[idx]).attr('data-' + STR_ORDER, orders[idx]); - }); - }; - - markOrders(); - - $root.droppable({ - handle : options.trigger, - target : selector, - selector : selector, - container : $root, - always : options.always, - flex : true, - lazy : options.lazy, - canMoveHere : options.canMoveHere, - nested : options.nested, - before : options.before, - mouseButton : options.mouseButton, - start: function(e) { - if(dragCssClass) e.element.addClass(dragCssClass); - that.trigger('start', e); - }, - drag: function(e) { - $root.addClass(sortingClass); - if(e.isIn) { - var $ele = e.element, - $target = e.target, - eleOrder = $ele.data(STR_ORDER), - targetOrder = $target.data(STR_ORDER); - if (!eleOrder && eleOrder !== 0) { - that.maxOrder++; - eleOrder = that.maxOrder; - $ele.attr('data-' + STR_ORDER, eleOrder); - } - if (!targetOrder && targetOrder !== 0) { - that.maxOrder++; - targetOrder = that.maxOrder; - $target.attr('data-' + STR_ORDER, targetOrder); - } - if(eleOrder == targetOrder) return; - else if(eleOrder > targetOrder) { - $target[isReverse ? 'after' : 'before']($ele); - } else { - $target[isReverse ? 'before' : 'after']($ele); - } - var $items = that.getItems(1); - markOrders($items); - that.trigger(STR_ORDER, { - list: $items, - element: $ele - }); - } - }, - finish: function(e) { - if(dragCssClass && e.element) e.element.removeClass(dragCssClass); - $root.removeClass(sortingClass); - that.trigger('finish', { - list: that.getItems(1), - element: e.element - }); - } - }); - }; - - Sortable.prototype.destroy = function() { - this.$.droppable('destroy'); - this.$.data(NAME, null); - }; - - Sortable.prototype.reset = function() { - this.destroy(); - this.init(); - }; - - Sortable.prototype.getItems = function(onlyElements) { - var $items = this.$.children(this.options.selector).not('.drag-shadow'); - if(!onlyElements) { - return $items.map(function() { - var $item = $(this); - return { - item: $item, - order: $item.data('order') - }; - }); - } - return $items; - }; - - Sortable.prototype.trigger = function(name, params) { - return $.zui.callEvent(this.options[name], params, this); - }; - - $.fn.sortable = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new Sortable(this, options))); - else if(typeof option == 'object') data.reset(); - - if(typeof option == 'string') data[option](); - }); - }; - - $.fn.sortable.Constructor = Sortable; -}(jQuery, window, document); - - -/*! +function(){var t,e,i,n,s,o={}.hasOwnProperty,a=function(t,e){function i(){this.constructor=t}for(var n in e)o.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},r={zh_cn:{no_results_text:"没有找到"},zh_tw:{no_results_text:"沒有找到"},en:{no_results_text:"No results match"}};n=function(){function e(){this.options_index=0,this.parsed=[]}return e.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},e.prototype.add_group=function(e){var i,n,s,o,a,r;for(i=this.parsed.length,this.parsed.push({array_index:i,group:!0,label:this.escapeExpression(e.label),children:0,disabled:e.disabled,title:e.title,search_keys:t.trim(e.getAttribute("data-keys")||"").replace(/,/g," ")}),a=e.childNodes,r=[],s=0,o=a.length;s\"\'\`]/.test(t)?(e={"<":"<",">":">",'"':""","'":"'","`":"`"},i=/&(?!\w+;)|[\<\>\"\'\`]/g,t.replace(i,function(t){return e[t]||"&"})):t},e}(),n.select_to_array=function(t){var e,i,s,o,a;for(i=new n,a=t.childNodes,s=0,o=a.length;s0?(e=document.createElement("li"),e.className="group-result",e.title=t.title,e.innerHTML=t.search_text,this.outerHTML(e)):""},e.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},e.prototype.reset_single_select_options=function(){var t,e,i,n,s;for(n=this.results_data,s=[],e=0,i=n.length;e"+i.search_text.substr(l+r.length),i.search_text=h.substr(0,l)+""+h.substr(l)):i.search_keys_match&&i.search_keys.length&&(l=i.search_keys.search(c),h=i.search_keys.substr(0,l+r.length)+""+i.search_keys.substr(l+r.length),i.search_text+='  '+h.substr(0,l)+""+h.substr(l)+""),null!=a&&(a.group_match=!0)):null!=i.group_array_index&&this.results_data[i.group_array_index].search_match&&(i.search_match=!0)));return this.result_clear_highlight(),o<1&&r.length?(this.update_results_content(""),this.no_results(r)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight(t))},e.prototype.search_string_match=function(t,e){var i,n,s,o;if(e.test(t))return!0;if(this.enable_split_word_search&&(t.indexOf(" ")>=0||0===t.indexOf("["))&&(n=t.replace(/\[|\]/g,"").split(" "),n.length))for(s=0,o=n.length;s0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(t.preventDefault(),this.results_showing)return this.result_select(t);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},e.prototype.clipboard_event_checker=function(t){var e=this;return setTimeout(function(){return e.results_search()},50)},e.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.classList.contains("form-control")?"100%":""+this.form_field.offsetWidth+"px"},e.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},e.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},e.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},e.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},e.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:(e=document.createElement("div"),e.appendChild(t),e.innerHTML)},e.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!/iP(od|hone)/i.test(window.navigator.userAgent)&&(!/Android/i.test(window.navigator.userAgent)||!/Mobile/i.test(window.navigator.userAgent))},e.default_multiple_text="",e.default_single_text="",e.default_no_result_text="No results match",e}(),t=jQuery,t.fn.extend({chosen:function(n){return e.browser_is_supported()?this.each(function(e){var s,o;s=t(this),o=s.data("chosen"),"destroy"===n&&o?o.destroy():o||s.data("chosen",new i(this,n))}):this}}),i=function(e){function i(){return s=i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},i.prototype.set_up_html=function(){var e,i;e=["chosen-container"],e.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl");var n=this.form_field.getAttribute("data-css-class");return n&&e.push(n),i={"class":e.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(i.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("
        ",i),this.is_multiple?this.container.html('
          '):this.container.html('
          '+this.default_text+'
            '),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.options.drop_width&&this.dropdown.css("width",this.options.drop_width).addClass("chosen-drop-size-limited"),this.results_build(),this.set_tab_index(),this.set_label_behavior(),this.form_field_jq.trigger("chosen:ready",{chosen:this})},i.prototype.register_observers=function(){var t=this;return this.container.bind("mousedown.chosen",function(e){t.container_mousedown(e)}),this.container.bind("mouseup.chosen",function(e){t.container_mouseup(e)}),this.container.bind("mouseenter.chosen",function(e){t.mouse_enter(e)}),this.container.bind("mouseleave.chosen",function(e){t.mouse_leave(e)}),this.search_results.bind("mouseup.chosen",function(e){t.search_results_mouseup(e)}),this.search_results.bind("mouseover.chosen",function(e){t.search_results_mouseover(e)}),this.search_results.bind("mouseout.chosen",function(e){t.search_results_mouseout(e)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(e){t.search_results_mousewheel(e)}),this.search_results.bind("touchstart.chosen",function(e){t.search_results_touchstart(e)}),this.search_results.bind("touchmove.chosen",function(e){t.search_results_touchmove(e)}),this.search_results.bind("touchend.chosen",function(e){t.search_results_touchend(e)}),this.form_field_jq.bind("chosen:updated.chosen",function(e){t.results_update_field(e)}),this.form_field_jq.bind("chosen:activate.chosen",function(e){t.activate_field(e)}),this.form_field_jq.bind("chosen:open.chosen",function(e){t.container_mousedown(e)}),this.form_field_jq.bind("chosen:close.chosen",function(e){t.input_blur(e)}),this.search_field.bind("blur.chosen",function(e){t.input_blur(e)}),this.search_field.bind("keyup.chosen",function(e){t.keyup_checker(e)}),this.search_field.bind("keydown.chosen",function(e){t.keydown_checker(e)}),this.search_field.bind("focus.chosen",function(e){t.input_focus(e)}),this.search_field.bind("cut.chosen",function(e){t.clipboard_event_checker(e)}),this.search_field.bind("paste.chosen",function(e){t.clipboard_event_checker(e)}),this.is_multiple?this.search_choices.bind("click.chosen",function(e){t.choices_click(e)}):this.container.bind("click.chosen",function(t){t.preventDefault()})},i.prototype.destroy=function(){return t(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},i.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},i.prototype.container_mousedown=function(e){if(!this.is_disabled&&(e&&"mousedown"===e.type&&!this.results_showing&&e.preventDefault(),null==e||!t(e.target).hasClass("search-choice-close")))return this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field()},i.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},i.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e=40*e),this.search_results.scrollTop(e+this.search_results.scrollTop())},i.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},i.prototype.close_field=function(){return t(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},i.prototype.activate_field=function(){this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val())},i.prototype.test_active_click=function(e){var i;return i=t(e.target).closest(".chosen-container"),i.length&&this.container[0]===i[0]?this.active_field=!0:this.close_field()},i.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=n.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},i.prototype.result_do_highlight=function(t,e){var i,n,s,o,a,r,l=-1;t.length&&(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),s=parseInt(this.search_results.css("maxHeight"),10),r=this.result_highlight.outerHeight(),a=this.search_results.scrollTop(),o=s+a,n=this.result_highlight.position().top+this.search_results.scrollTop(),i=n+r,this.middle_highlight&&(e||"always"===this.middle_highlight||i>=o||n=o?l=i-s>0?i-s:0:n-1&&this.search_results.scrollTop(l))},i.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},i.prototype.results_show=function(){if(this.is_multiple&&this.max_selected_options<=this.choices_count())return this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1;this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(1);var e=this.drop_direction;if("auto"===e)if(this.drop_directionFixed)e=this.drop_directionFixed;else{var i=this.container.find(".chosen-drop"),n=this.container.offset();n.top+i.outerHeight()+30>t(window).height()+t(window).scrollTop()&&(e="up"),this.drop_directionFixed=e}return this.container.toggleClass("chosen-up","up"===e),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this})},i.prototype.update_results_content=function(t){return this.search_results.html(t)},i.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this}),this.drop_directionFixed=0),this.results_showing=!1},i.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},i.prototype.set_label_behavior=function(){var e=this;if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=t("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0)return this.form_field_label.bind("click.chosen",function(t){return e.is_multiple?e.container_mousedown(t):e.activate_field()})},i.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},i.prototype.search_results_mouseup=function(e){var i;i=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first(),i.length&&(this.result_highlight=i,this.result_select(e))},i.prototype.search_results_mouseover=function(e){var i;if(i=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(i)},i.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result"))return this.result_clear_highlight()},i.prototype.choice_build=function(e){var i,n,s=this;return i=t("
          • ",{"class":"search-choice"}).html(""+e.html+""),e.disabled?i.addClass("search-choice-disabled"):(n=t("",{"class":"search-choice-close","data-option-array-index":e.array_index}),n.bind("click.chosen",function(t){return s.choice_destroy_link_click(t)}),i.append(n)),this.search_container.before(i)},i.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},i.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},i.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field)return this.results_hide()},i.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},i.prototype.result_select=function(t){var e,i;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),i=this.results_data[e[0].getAttribute("data-option-array-index")],i.selected=!0,this.form_field.options[i.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(i):this.single_set_selected_text(i.text),(t.metaKey||t.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[i.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())},i.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").attr("title",t).text(t)},i.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},i.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after(''),this.selected_item.addClass("chosen-single-with-deselect")},i.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":t("
            ").text(t.trim(this.search_field.val())).html()},i.prototype.winnow_results_set_highlight=function(t){var e,i;if(i=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),e=i.length?i.first():this.search_results.find(".active-result").first(),null!=e)return this.result_do_highlight(e,t)},i.prototype.no_results=function(e){var i;return i=t('
          • '+this.results_none_found+' ""
          • '),i.find("span").first().html(e),this.search_results.append(i),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},i.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},i.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},i.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result"),t.length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},i.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last(),t.length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},i.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},i.prototype.keydown_checker=function(t){var e,i;switch(e=null!=(i=t.which)?i:t.keyCode,this.search_field_scale(),8!==e&&this.pending_backstroke&&this.clear_backstroke(),e){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},i.prototype.search_field_scale=function(){var e,i,n,s,o,a,r,l,h;if(this.is_multiple){for(n=0,r=0,o="position:absolute; left: -1000px; top: -1000px; display:none;",a=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],l=0,h=a.length;l",{style:o}),e.text(this.search_field.val()),t("body").append(e),r=e.width()+25,e.remove(),i=this.container.outerWidth(),r>i-10&&(r=i-10),this.search_field.css({width:r+"px"})}},i}(e)}.call(this),function(t){"use strict";var e="zui.selectable",i=function(i,n){this.name=e,this.$=t(i),this.id=t.zui.uuid(),this.selectOrder=1,this.selections={},this.getOptions(n),this._init()},n=function(t,e,i){return t>=i.left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height},s=function(t,e){var i=Math.max(t.left,e.left),s=Math.max(t.top,e.top),o=Math.min(t.left+t.width,e.left+e.width),a=Math.min(t.top+t.height,e.top+e.height);return n(i,s,t)&&n(o,a,t)&&n(i,s,e)&&n(o,a,e)};i.DEFAULTS={selector:"li,tr,div",trigger:"",selectClass:"active",rangeStyle:{border:"1px solid "+(t.zui.colorset?t.zui.colorset.primary:"#3280fc"),backgroundColor:t.zui.colorset?new t.zui.Color(t.zui.colorset.primary).fade(20).toCssStr():"rgba(50, 128, 252, 0.2)"},clickBehavior:"toggle",ignoreVal:3,listenClick:!0},i.prototype.getOptions=function(e){this.options=t.extend({},i.DEFAULTS,this.$.data(),e)},i.prototype.select=function(t){this.toggle(t,!0)},i.prototype.unselect=function(t){this.toggle(t,!1)},i.prototype.toggle=function(e,i,n){var s,o,a=this.options.selector,r=this;if(void 0===e)return void this.$.find(a).each(function(){r.toggle(this,i)});if("object"==typeof e?(s=t(e).closest(a),o=s.data("id")):(o=e,s=r.$.find('.slectable-item[data-id="'+o+'"]')),s&&s.length){if(o||(o=t.zui.uuid(),s.attr("data-id",o)),void 0!==i&&null!==i||(i=!r.selections[o]),!!i!=!!r.selections[o]){var l;t.isFunction(n)&&(l=n(i)),l!==!0&&(r.selections[o]=!!i&&r.selectOrder++,r.callEvent(i?"select":"unselect",{id:o,selections:r.selections,target:s,selected:r.getSelectedArray()},r))}r.options.selectClass&&s.toggleClass(r.options.selectClass,i)}},i.prototype.getSelectedArray=function(){var e=[];return t.each(this.selections,function(t,i){i&&e.push(t)}),e},i.prototype.syncSelectionsFromClass=function(){var e=this;e.$children=e.$.find(e.options.selector);e.selections={},e.$children.each(function(){var i=t(this);e.selections[i.data("id")]=i.hasClass(e.options.selectClass)})},i.prototype._init=function(){var e,i,n,o,a,r,l,h=this.options,c=this,d=h.ignoreVal,u=!0,p="."+this.name+"."+this.id,f=t.isFunction(h.checkFunc)?h.checkFunc:null,g=t.isFunction(h.rangeFunc)?h.rangeFunc:null,m=!1,v=null,y="mousedown"+p,b=function(){o&&c.$children.each(function(){var e=t(this),i=e.offset();i.width=e.outerWidth(),i.height=e.outerHeight();var n=g?g.call(this,o,i):s(o,i);if(f){var a=f.call(c,{intersect:n,target:e,range:o,targetRange:i});a===!0?c.select(e):a===!1&&c.unselect(e)}else n?c.select(e):c.multiKey||c.unselect(e)})},w=function(s){m&&(a=s.pageX,r=s.pageY,o={width:Math.abs(a-e),height:Math.abs(r-i),left:a>e?e:a,top:r>i?i:r},u&&o.width
            ').css(t.extend({zIndex:1060,position:"absolute",top:e,left:i,pointerEvents:"none"},c.options.rangeStyle)).appendTo(t("body")))),n.css(o),clearTimeout(l),l=setTimeout(b,10),u=!1))},x=function(e){t(document).off(p),clearTimeout(v),m&&(m=!1,n&&n.remove(),u||o&&(clearTimeout(l),b(),o=null),c.callEvent("finish",{selections:c.selections,selected:c.getSelectedArray()}),e.preventDefault())},C=function(s){if(m)return x(s);var o=t.zui.getMouseButtonCode(h.mouseButton);if(!(o>-1&&s.button!==o||c.altKey||3===s.which||c.callEvent("start",s)===!1)){var a=c.$children=c.$.find(h.selector);a.addClass("slectable-item");var r=c.multiKey?"multi":h.clickBehavior;if("single"===r&&c.unselect(),h.listenClick&&("multi"===r?c.toggle(s.target):"single"===r?c.select(s.target):"toggle"===r&&c.toggle(s.target,null,function(t){c.unselect()})),c.callEvent("startDrag",s)===!1)return void c.callEvent("finish",{selections:c.selections,selected:c.getSelectedArray()});e=s.pageX,i=s.pageY,n=null,u=!0,m=!0,t(document).on("mousemove"+p,w).on("mouseup"+p,x),v=setTimeout(function(){t(document).on(y,x)},10),s.preventDefault()}},_=h.container&&"default"!==h.container?t(h.container):this.$;h.trigger?_.on(y,h.trigger,C):_.on(y,C),t(document).on("keydown",function(t){var e=t.keyCode;17===e||91==e?c.multiKey=e:18===e&&(c.altKey=!0)}).on("keyup",function(t){c.multiKey=!1,c.altKey=!1})},i.prototype.callEvent=function(e,i){var n=t.Event(e+"."+this.name);this.$.trigger(n,i);var s=n.result,o=this.options[e];return t.isFunction(o)&&(s=o.apply(this,t.isArray(i)?i:[i])),s},t.fn.selectable=function(n){return this.each(function(){var s=t(this),o=s.data(e),a="object"==typeof n&&n;o||s.data(e,o=new i(this,a)),"string"==typeof n&&o[n]()})},t.fn.selectable.Constructor=i,t(function(){t('[data-ride="selectable"]').selectable()})}(jQuery),+function(t,e,i){ +"use strict";if(!t.fn.droppable)return void console.error("Sortable requires droppable.js");var n="zui.sortable",s={selector:"li,div",dragCssClass:"invisible",sortingClass:"sortable-sorting"},o="order",a=function(e,i){var n=this;n.$=t(e),n.options=t.extend({},s,n.$.data(),i),n.init()};a.DEFAULTS=s,a.NAME=n,a.prototype.init=function(){var e=this,i=e.$,n=e.options,s=n.selector,a=n.sortingClass,r=n.dragCssClass,l=n.reverse,h=function(i){i=i||e.getItems(1);var n=[];i.each(function(){var e=t(this).data(o);"number"==typeof e&&n.push(e)}),n.sort(function(t,e){return t-e});for(var s=i.length;n.lengthc?s[l?"after":"before"](n):s[l?"before":"after"](n);var d=e.getItems(1);h(d),e.trigger(o,{list:d,element:n})}},finish:function(t){r&&t.element&&t.element.removeClass(r),i.removeClass(a),e.trigger("finish",{list:e.getItems(1),element:t.element})}})},a.prototype.destroy=function(){this.$.droppable("destroy"),this.$.data(n,null)},a.prototype.reset=function(){this.destroy(),this.init()},a.prototype.getItems=function(e){var i=this.$.children(this.options.selector).not(".drag-shadow");return e?i:i.map(function(){var e=t(this);return{item:e,order:e.data("order")}})},a.prototype.trigger=function(e,i){return t.zui.callEvent(this.options[e],i,this)},t.fn.sortable=function(e){return this.each(function(){var i=t(this),s=i.data(n),o="object"==typeof e&&e;s?"object"==typeof e&&s.reset():i.data(n,s=new a(this,o)),"string"==typeof e&&s[e]()})},t.fn.sortable.Constructor=a}(jQuery,window,document),/*! * jQuery Form Plugin * version: 4.2.2 * Requires jQuery v1.7.2 or later @@ -12830,26 +63,7 @@ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ -!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,r){return void 0===r&&(r="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(r),r}:e(jQuery)}(function(e){"use strict";function t(t){var r=t.data;t.isDefaultPrevented()||(t.preventDefault(),e(t.target).closest("form").ajaxSubmit(r))}function r(t){var r=t.target,a=e(r);if(!a.is("[type=submit],[type=image]")){var n=a.closest("[type=submit]");if(0===n.length)return;r=n[0]}var i=r.form;if(i.clk=r,"image"===r.type)if(void 0!==t.offsetX)i.clk_x=t.offsetX,i.clk_y=t.offsetY;else if("function"==typeof e.fn.offset){var o=a.offset();i.clk_x=t.pageX-o.left,i.clk_y=t.pageY-o.top}else i.clk_x=t.pageX-r.offsetLeft,i.clk_y=t.pageY-r.offsetTop;setTimeout(function(){i.clk=i.clk_x=i.clk_y=null},100)}function a(){if(e.fn.ajaxSubmit.debug){var t="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(t):window.opera&&window.opera.postError&&window.opera.postError(t)}}var n=/\r?\n/g,i={};i.fileapi=void 0!==e('').get(0).files,i.formdata=void 0!==window.FormData;var o=!!e.fn.prop;e.fn.attr2=function(){if(!o)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},e.fn.ajaxSubmit=function(t,r,n,s){function u(r){var a,n,i=e.param(r,t.traditional).split("&"),o=i.length,s=[];for(a=0;a',k).val(f.extraData[c].value).appendTo(w)[0]):u.push(e('',k).val(f.extraData[c]).appendTo(w)[0]));f.iframeTarget||h.appendTo(D),v.attachEvent?v.attachEvent("onload",s):v.addEventListener("load",s,!1),setTimeout(t,15);try{w.submit()}catch(e){document.createElement("form").submit.apply(w)}}finally{w.setAttribute("action",i),w.setAttribute("enctype",o),r?w.setAttribute("target",r):p.removeAttr("target"),e(u).remove()}}function s(t){if(!x.aborted&&!X){if((O=n(v))||(a("cannot access response document"),t=L),t===A&&x)return x.abort("timeout"),void S.reject(x,"timeout");if(t===L&&x)return x.abort("server abort"),void S.reject(x,"error","server abort");if(O&&O.location.href!==f.iframeSrc||T){v.detachEvent?v.detachEvent("onload",s):v.removeEventListener("load",s,!1);var r,i="success";try{if(T)throw"timeout";var o="xml"===f.dataType||O.XMLDocument||e.isXMLDoc(O);if(a("isXml="+o),!o&&window.opera&&(null===O.body||!O.body.innerHTML)&&--C)return a("requeing onLoad callback, DOM not available"),void setTimeout(s,250);var u=O.body?O.body:O.documentElement;x.responseText=u?u.innerHTML:null,x.responseXML=O.XMLDocument?O.XMLDocument:O,o&&(f.dataType="xml"),x.getResponseHeader=function(e){return{"content-type":f.dataType}[e.toLowerCase()]},u&&(x.status=Number(u.getAttribute("status"))||x.status,x.statusText=u.getAttribute("statusText")||x.statusText);var c=(f.dataType||"").toLowerCase(),l=/(json|script|text)/.test(c);if(l||f.textarea){var p=O.getElementsByTagName("textarea")[0];if(p)x.responseText=p.value,x.status=Number(p.getAttribute("status"))||x.status,x.statusText=p.getAttribute("statusText")||x.statusText;else if(l){var m=O.getElementsByTagName("pre")[0],g=O.getElementsByTagName("body")[0];m?x.responseText=m.textContent?m.textContent:m.innerText:g&&(x.responseText=g.textContent?g.textContent:g.innerText)}}else"xml"===c&&!x.responseXML&&x.responseText&&(x.responseXML=q(x.responseText));try{M=N(x,c,f)}catch(e){i="parsererror",x.error=r=e||i}}catch(e){a("error caught: ",e),i="error",x.error=r=e||i}x.aborted&&(a("upload aborted"),i=null),x.status&&(i=x.status>=200&&x.status<300||304===x.status?"success":"error"),"success"===i?(f.success&&f.success.call(f.context,M,"success",x),S.resolve(x.responseText,"success",x),d&&e.event.trigger("ajaxSuccess",[x,f])):i&&(void 0===r&&(r=x.statusText),f.error&&f.error.call(f.context,x,i,r),S.reject(x,"error",r),d&&e.event.trigger("ajaxError",[x,f,r])),d&&e.event.trigger("ajaxComplete",[x,f]),d&&!--e.active&&e.event.trigger("ajaxStop"),f.complete&&f.complete.call(f.context,x,i),X=!0,f.timeout&&clearTimeout(j),setTimeout(function(){f.iframeTarget?h.attr("src",f.iframeSrc):h.remove(),x.responseXML=null},100)}}}var u,c,f,d,m,h,v,x,y,b,T,j,w=p[0],S=e.Deferred();if(S.abort=function(e){x.abort(e)},r)for(c=0;c',k)).css({position:"absolute",top:"-1000px",left:"-1000px"}),v=h[0],x={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(t){var r="timeout"===t?"timeout":"aborted";a("aborting upload... "+r),this.aborted=1;try{v.contentWindow.document.execCommand&&v.contentWindow.document.execCommand("Stop")}catch(e){}h.attr("src",f.iframeSrc),x.error=r,f.error&&f.error.call(f.context,x,r,t),d&&e.event.trigger("ajaxError",[x,f,r]),f.complete&&f.complete.call(f.context,x,r)}},(d=f.global)&&0==e.active++&&e.event.trigger("ajaxStart"),d&&e.event.trigger("ajaxSend",[x,f]),f.beforeSend&&!1===f.beforeSend.call(f.context,x,f))return f.global&&e.active--,S.reject(),S;if(x.aborted)return S.reject(),S;(y=w.clk)&&(b=y.name)&&!y.disabled&&(f.extraData=f.extraData||{},f.extraData[b]=y.value,"image"===y.type&&(f.extraData[b+".x"]=w.clk_x,f.extraData[b+".y"]=w.clk_y));var A=1,L=2,F=e("meta[name=csrf-token]").attr("content"),E=e("meta[name=csrf-param]").attr("content");E&&F&&(f.extraData=f.extraData||{},f.extraData[E]=F),f.forceSync?i():setTimeout(i,10);var M,O,X,C=50,q=e.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!==t.documentElement.nodeName?t:null},_=e.parseJSON||function(e){return window.eval("("+e+")")},N=function(t,r,a){var n=t.getResponseHeader("content-type")||"",i=("xml"===r||!r)&&n.indexOf("xml")>=0,o=i?t.responseXML:t.responseText;return i&&"parsererror"===o.documentElement.nodeName&&e.error&&e.error("parsererror"),a&&a.dataFilter&&(o=a.dataFilter(o,r)),"string"==typeof o&&(("json"===r||!r)&&n.indexOf("json")>=0?o=_(o):("script"===r||!r)&&n.indexOf("javascript")>=0&&e.globalEval(o)),o};return S}if(!this.length)return a("ajaxSubmit: skipping submit process - no element selected"),this;var l,f,d,p=this;"function"==typeof t?t={success:t}:"string"==typeof t||!1===t&&arguments.length>0?(t={url:t,data:r,dataType:n},"function"==typeof s&&(t.success=s)):void 0===t&&(t={}),l=t.method||t.type||this.attr2("method"),(d=(d="string"==typeof(f=t.url||this.attr2("action"))?e.trim(f):"")||window.location.href||"")&&(d=(d.match(/^([^#]+)/)||[])[1]),t=e.extend(!0,{url:d,success:e.ajaxSettings.success,type:l||e.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},t);var m={};if(this.trigger("form-pre-serialize",[this,t,m]),m.veto)return a("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(t.beforeSerialize&&!1===t.beforeSerialize(this,t))return a("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var h=t.traditional;void 0===h&&(h=e.ajaxSettings.traditional);var v,g=[],x=this.formToArray(t.semantic,g,t.filtering);if(t.data){var y=e.isFunction(t.data)?t.data(x):t.data;t.extraData=y,v=e.param(y,h)}if(t.beforeSubmit&&!1===t.beforeSubmit(x,this,t))return a("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[x,this,t,m]),m.veto)return a("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var b=e.param(x,h);v&&(b=b?b+"&"+v:v),"GET"===t.type.toUpperCase()?(t.url+=(t.url.indexOf("?")>=0?"&":"?")+b,t.data=null):t.data=b;var T=[];if(t.resetForm&&T.push(function(){p.resetForm()}),t.clearForm&&T.push(function(){p.clearForm(t.includeHidden)}),!t.dataType&&t.target){var j=t.success||function(){};T.push(function(r,a,n){var i=arguments,o=t.replaceTarget?"replaceWith":"html";e(t.target)[o](r).each(function(){j.apply(this,i)})})}else t.success&&(e.isArray(t.success)?e.merge(T,t.success):T.push(t.success));if(t.success=function(e,r,a){for(var n=t.context||this,i=0,o=T.length;i0,D="multipart/form-data",A=p.attr("enctype")===D||p.attr("encoding")===D,L=i.fileapi&&i.formdata;a("fileAPI :"+L);var F,E=(k||A)&&!L;!1!==t.iframe&&(t.iframe||E)?t.closeKeepAlive?e.get(t.closeKeepAlive,function(){F=c(x)}):F=c(x):F=(k||A)&&L?function(r){for(var a=new FormData,n=0;n0)&&(n={url:n,data:i,dataType:o},"function"==typeof s&&(n.success=s)),n=n||{},n.delegation=n.delegation&&e.isFunction(e.fn.on),!n.delegation&&0===this.length){var u={s:this.selector,c:this.context};return!e.isReady&&u.s?(a("DOM not ready, queuing ajaxForm"),e(function(){e(u.s,u.c).ajaxForm(n)}),this):(a("terminating; zero elements found by selector"+(e.isReady?"":" (DOM not ready)")),this)}return n.delegation?(e(document).off("submit.form-plugin",this.selector,t).off("click.form-plugin",this.selector,r).on("submit.form-plugin",this.selector,n,t).on("click.form-plugin",this.selector,n,r),this):this.ajaxFormUnbind().on("submit.form-plugin",n,t).on("click.form-plugin",n,r)},e.fn.ajaxFormUnbind=function(){return this.off("submit.form-plugin click.form-plugin")},e.fn.formToArray=function(t,r,a){var n=[];if(0===this.length)return n;var o,s=this[0],u=this.attr("id"),c=t||void 0===s.elements?s.getElementsByTagName("*"):s.elements;if(c&&(c=e.makeArray(c)),u&&(t||/(Edge|Trident)\//.test(navigator.userAgent))&&(o=e(':input[form="'+u+'"]').get()).length&&(c=(c||[]).concat(o)),!c||!c.length)return n;e.isFunction(a)&&(c=e.map(c,a));var l,f,d,p,m,h,v;for(l=0,h=c.length;l').get(0).files,o.formdata=void 0!==window.FormData;var a=!!t.fn.prop;t.fn.attr2=function(){if(!a)return this.attr.apply(this,arguments);var t=this.prop.apply(this,arguments);return t&&t.jquery||"string"==typeof t?t:this.attr.apply(this,arguments)},t.fn.ajaxSubmit=function(e,i,s,r){function l(i){var n,s,o=t.param(i,e.traditional).split("&"),a=o.length,r=[];for(n=0;n',T).val(d.extraData[l].value).appendTo(_)[0]):a.push(h('',T).val(d.extraData[l]).appendTo(_)[0]));d.iframeTarget||g.appendTo(S),m.attachEvent?m.attachEvent("onload",r):m.addEventListener("load",r,!1),setTimeout(t,15);try{_.submit()}catch(h){document.createElement("form").submit.apply(_)}}finally{_.setAttribute("action",i),_.setAttribute("enctype",o),e?_.setAttribute("target",e):p.removeAttr("target"),h(a).remove()}}function r(t){if(!y.aborted&&!$){if((z=s(m))||(n("cannot access response document"),t=M),t===D&&y)return y.abort("timeout"),void k.reject(y,"timeout");if(t===M&&y)return y.abort("server abort"),void k.reject(y,"error","server abort");if(z&&z.location.href!==d.iframeSrc||x){m.detachEvent?m.detachEvent("onload",r):m.removeEventListener("load",r,!1);var e,i="success";try{if(x)throw"timeout";var o="xml"===d.dataType||z.XMLDocument||v.isXMLDoc(z);if(n("isXml="+o),!o&&window.opera&&(null===z.body||!z.body.innerHTML)&&--E)return n("requeing onLoad callback, DOM not available"),void setTimeout(r,250);var a=z.body?z.body:z.documentElement;y.responseText=a?a.innerHTML:null,y.responseXML=z.XMLDocument?z.XMLDocument:z,o&&(d.dataType="xml"),y.getResponseHeader=function(t){return{"content-type":d.dataType}[t.toLowerCase()]},a&&(y.status=Number(a.getAttribute("status"))||y.status,y.statusText=a.getAttribute("statusText")||y.statusText);var l=(d.dataType||"").toLowerCase(),h=/(json|script|text)/.test(l);if(h||d.textarea){var c=z.getElementsByTagName("textarea")[0];if(c)y.responseText=c.value,y.status=Number(c.getAttribute("status"))||y.status,y.statusText=c.getAttribute("statusText")||y.statusText;else if(h){var p=z.getElementsByTagName("pre")[0],f=z.getElementsByTagName("body")[0];p?y.responseText=p.textContent?p.textContent:p.innerText:f&&(y.responseText=f.textContent?f.textContent:f.innerText)}}else"xml"===l&&!y.responseXML&&y.responseText&&(y.responseXML=I(y.responseText));try{L=j(y,l,d)}catch(v){i="parsererror",y.error=e=v||i}}catch(v){n("error caught: ",v),i="error",y.error=e=v||i}y.aborted&&(n("upload aborted"),i=null),y.status&&(i=y.status>=200&&y.status<300||304===y.status?"success":"error"),"success"===i?(d.success&&d.success.call(d.context,L,"success",y),k.resolve(y.responseText,"success",y),u&&v.event.trigger("ajaxSuccess",[y,d])):i&&(void 0===e&&(e=y.statusText),d.error&&d.error.call(d.context,y,i,e),k.reject(y,"error",e),u&&v.event.trigger("ajaxError",[y,d,e])),u&&v.event.trigger("ajaxComplete",[y,d]),u&&!--v.active&&v.event.trigger("ajaxStop"),d.complete&&d.complete.call(d.context,y,i),$=!0,d.timeout&&clearTimeout(C),setTimeout(function(){d.iframeTarget?g.attr("src",d.iframeSrc):g.remove(),y.responseXML=null},100)}}}var l,h,d,u,f,g,m,y,b,w,x,C,_=p[0],k=t.Deferred();if(k.abort=function(t){y.abort(t)},i)for(h=0;h',T)).css({position:"absolute",top:"-1000px",left:"-1000px"}),m=g[0],y={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(t){var e="timeout"===t?"timeout":"aborted";n("aborting upload... "+e),this.aborted=1;try{m.contentWindow.document.execCommand&&m.contentWindow.document.execCommand("Stop")}catch(i){}g.attr("src",d.iframeSrc),y.error=e,d.error&&d.error.call(d.context,y,e,t),u&&i.event.trigger("ajaxError",[y,d,e]),d.complete&&d.complete.call(d.context,y,e)}},(u=d.global)&&0==t.active++&&t.event.trigger("ajaxStart"),u&&t.event.trigger("ajaxSend",[y,d]),d.beforeSend&&!1===d.beforeSend.call(d.context,y,d))return d.global&&t.active--,k.reject(),k;if(y.aborted)return k.reject(),k;(b=_.clk)&&(w=b.name)&&!b.disabled&&(d.extraData=d.extraData||{},d.extraData[w]=b.value,"image"===b.type&&(d.extraData[w+".x"]=_.clk_x,d.extraData[w+".y"]=_.clk_y));var D=1,M=2,P=t("meta[name=csrf-token]").attr("content"),F=t("meta[name=csrf-param]").attr("content");F&&P&&(d.extraData=d.extraData||{},d.extraData[F]=P),d.forceSync?o():setTimeout(o,10);var L,z,$,E=50,I=t.parseXML||function(t,e){return window.ActiveXObject?((e=new ActiveXObject("Microsoft.XMLDOM")).async="false",e.loadXML(t)):e=(new DOMParser).parseFromString(t,"text/xml"),e&&e.documentElement&&"parsererror"!==e.documentElement.nodeName?e:null},A=t.parseJSON||function(t){return window.eval("("+t+")")},j=function(e,i,n){var s=e.getResponseHeader("content-type")||"",o=("xml"===i||!i)&&s.indexOf("xml")>=0,a=o?e.responseXML:e.responseText;return o&&"parsererror"===a.documentElement.nodeName&&t.error&&t.error("parsererror"),n&&n.dataFilter&&(a=n.dataFilter(a,i)),"string"==typeof a&&(("json"===i||!i)&&s.indexOf("json")>=0?a=A(a):("script"===i||!i)&&s.indexOf("javascript")>=0&&t.globalEval(a)),a};return k}if(!this.length)return n("ajaxSubmit: skipping submit process - no element selected"),this;var c,d,u,p=this;"function"==typeof e?e={success:e}:"string"==typeof e||!1===e&&arguments.length>0?(e={url:e,data:i,dataType:s},"function"==typeof r&&(e.success=r)):void 0===e&&(e={}),c=e.method||e.type||this.attr2("method"),(u=(u="string"==typeof(d=e.url||this.attr2("action"))?t.trim(d):"")||window.location.href||"")&&(u=(u.match(/^([^#]+)/)||[])[1]),e=t.extend(!0,{url:u,success:t.ajaxSettings.success,type:c||t.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},e);var f={};if(this.trigger("form-pre-serialize",[this,e,f]),f.veto)return n("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(e.beforeSerialize&&!1===e.beforeSerialize(this,e))return n("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var g=e.traditional;void 0===g&&(g=t.ajaxSettings.traditional);var m,v=[],y=this.formToArray(e.semantic,v,e.filtering);if(e.data){var b=t.isFunction(e.data)?e.data(y):e.data;e.extraData=b,m=t.param(b,g)}if(e.beforeSubmit&&!1===e.beforeSubmit(y,this,e))return n("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[y,this,e,f]),f.veto)return n("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var w=t.param(y,g);m&&(w=w?w+"&"+m:m),"GET"===e.type.toUpperCase()?(e.url+=(e.url.indexOf("?")>=0?"&":"?")+w,e.data=null):e.data=w;var x=[];if(e.resetForm&&x.push(function(){p.resetForm()}),e.clearForm&&x.push(function(){p.clearForm(e.includeHidden)}),!e.dataType&&e.target){var C=e.success||function(){};x.push(function(i,n,s){var o=arguments,a=e.replaceTarget?"replaceWith":"html";t(e.target)[a](i).each(function(){C.apply(this,o)})})}else e.success&&(t.isArray(e.success)?t.merge(x,e.success):x.push(e.success));if(e.success=function(t,i,n){for(var s=e.context||this,o=0,a=x.length;o0,S="multipart/form-data",D=p.attr("enctype")===S||p.attr("encoding")===S,M=o.fileapi&&o.formdata;n("fileAPI :"+M);var P,F=(T||D)&&!M;!1!==e.iframe&&(e.iframe||F)?e.closeKeepAlive?t.get(e.closeKeepAlive,function(){P=h(y)}):P=h(y):P=(T||D)&&M?function(i){for(var n=new FormData,s=0;s0)&&(s={url:s,data:o,dataType:a},"function"==typeof r&&(s.success=r)),s=s||{},s.delegation=s.delegation&&t.isFunction(t.fn.on),!s.delegation&&0===this.length){var l={s:this.selector,c:this.context};return!t.isReady&&l.s?(n("DOM not ready, queuing ajaxForm"),t(function(){t(l.s,l.c).ajaxForm(s)}),this):(n("terminating; zero elements found by selector"+(t.isReady?"":" (DOM not ready)")),this)}return s.delegation?(t(document).off("submit.form-plugin",this.selector,e).off("click.form-plugin",this.selector,i).on("submit.form-plugin",this.selector,s,e).on("click.form-plugin",this.selector,s,i),this):this.ajaxFormUnbind().on("submit.form-plugin",s,e).on("click.form-plugin",s,i)},t.fn.ajaxFormUnbind=function(){return this.off("submit.form-plugin click.form-plugin")},t.fn.formToArray=function(e,i,n){var s=[];if(0===this.length)return s;var a,r=this[0],l=this.attr("id"),h=e||void 0===r.elements?r.getElementsByTagName("*"):r.elements;if(h&&(h=t.makeArray(h)),l&&(e||/(Edge|Trident)\//.test(navigator.userAgent))&&(a=t(':input[form="'+l+'"]').get()).length&&(h=(h||[]).concat(a)),!h||!h.length)return s;t.isFunction(n)&&(h=t.map(h,n));var c,d,u,p,f,g,m;for(c=0,g=h.length;c", - "/": "?", - "\\": "|" - } - }; - - function keyHandler(handleObj) { - // Only care when a possible input has been specified - if(typeof handleObj.data !== "string") { - return; - } - - var origHandler = handleObj.handler, - keys = handleObj.data.toLowerCase().split(" "); - - handleObj.handler = function(event) { - // Don't fire in text-accepting inputs that we didn't directly bind to - if(this !== event.target && (/textarea|select/i.test(event.target.nodeName) || - event.target.type === "text")) { - return; - } - - // Keypress represents characters, not special keys - var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[event.which], - character = String.fromCharCode(event.which).toLowerCase(), - key, modif = "", - possible = {}; - - // check combinations (alt|ctrl|shift+anything) - if(event.altKey && special !== "alt") { - modif += "alt+"; - } - - if(event.ctrlKey && special !== "ctrl") { - modif += "ctrl+"; - } - - // TODO: Need to make sure this works consistently across platforms - if(event.metaKey && !event.ctrlKey && special !== "meta") { - modif += "meta+"; - } - - if(event.shiftKey && special !== "shift") { - modif += "shift+"; - } - - if(special) { - possible[modif + special] = true; - - } else { - possible[modif + character] = true; - possible[modif + jQuery.hotkeys.shiftNums[character]] = true; - - // "$" can be triggered as "Shift+4" or "Shift+$" or just "$" - if(modif === "shift+") { - possible[jQuery.hotkeys.shiftNums[character]] = true; - } - } - - for(var i = 0, l = keys.length; i < l; i++) { - if(possible[keys[i]]) { - return origHandler.apply(this, arguments); - } - } - }; - } - - jQuery.each(["keydown", "keyup", "keypress"], function() { - jQuery.event.special[this] = { - add: keyHandler - }; - }); - -})(jQuery); - - -/* ======================================================================== - * ZUI: tree.js [1.4.0+] - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($) { - 'use strict'; - - var name = 'zui.tree'; // modal name - var globalId = 0; - - // The tree modal class - var Tree = function(element, options) { - this.name = name; - this.$ = $(element); - - this.getOptions(options); - this._init(); - }; - - var DETAULT_ACTIONS = { - sort: { - template: '' - }, - add: { - template: '' - }, - edit: { - template: '' - }, - "delete": { - template: '' - } - }; - - function formatActions(actions, parentActions) { - if(actions === false) return actions; - if(!actions) return parentActions; - - if(actions === true) { - actions = {add: true, "delete": true, edit: true, sort: true}; - } else if(typeof actions === 'string') { - actions = actions.split(','); - } - var _actions; - if($.isArray(actions)) { - _actions = {}; - $.each(actions, function(idx, action) { - if($.isPlainObject(action)) { - _actions[action.action] = action; - } else { - _actions[action] = true; - } - }); - actions = _actions; - } - if($.isPlainObject(actions)) { - _actions = {}; - $.each(actions, function(name, action) { - if(action) { - _actions[name] = $.extend({type: name}, DETAULT_ACTIONS[name], $.isPlainObject(action) ? action : null); - } else { - _actions[name] = false; - } - }); - actions = _actions; - } - return parentActions ? $.extend(true, {}, parentActions, actions) : actions; - } - - function createActionEle(action, name, template) { - name = name || action.type; - return $(template || action.template).addClass('tree-action').attr($.extend({'data-type': name, title: action.title || ''}, action.attr)).data('action', action); - } - - // default options - Tree.DEFAULTS = { - animate: null, - initialState: 'normal', // 'normal' | 'preserve' | 'expand' | 'collapse', - toggleTemplate: '', - // sortable: false, // - }; - - Tree.prototype.add = function(rootEle, items, expand, disabledAnimate, notStore) { - var $e = $(rootEle), $ul, options = this.options; - if($e.is('li')) { - $ul = $e.children('ul'); - if(!$ul.length) { - $ul = $('
              '); - $e.append($ul); - this._initList($ul, $e); - } - } else { - $ul = $e; - } - - if($ul) { - var that = this; - if(!$.isArray(items)) { - items = [items]; - } - $.each(items, function(idx, item) { - var $li = $('
            • ').data(item).appendTo($ul); - if(item.id !== undefined) $li.attr('data-id', item.id); - var $wrapper = options.itemWrapper ? $(options.itemWrapper === true ? '
              ' : options.itemWrapper).appendTo($li) : $li; - if(item.html) { - $wrapper.html(item.html) - } else if($.isFunction(that.options.itemCreator)) { - var itemContent = that.options.itemCreator($li, item); - if(itemContent !== true && itemContent !== false) $wrapper.html(itemContent); - } else if(item.url) { - $wrapper.append($('', {href: item.url}).text(item.title || item.name)); - } else { - $wrapper.append($('').text(item.title || item.name)); - } - that._initItem($li, item.idx || idx, $ul, item); - if(item.children && item.children.length) { - that.add($li, item.children); - } - }); - this._initList($ul); - if(expand && !$ul.hasClass('tree')) { - that.expand($ul.parent('li'), disabledAnimate, notStore); - } - } - }; - - Tree.prototype.reload = function(data) { - var that = this; - - if(data) { - that.$.empty(); - that.add(that.$, data); - } - - if(that.isPreserve) - { - if(that.store.time) { - that.$.find('li:not(.tree-action-item)').each(function() { - var $li= $(this); - that[that.store[$li.data('id')] ? 'expand' : 'collapse']($li, true, true); - }); - } - } - }; - - Tree.prototype._initList = function($list, $parentItem, idx, data) { - var that = this; - if(!$list.hasClass('tree')) { - $parentItem = ($parentItem || $list.closest('li')).addClass('has-list'); - if(!$parentItem.find('.list-toggle').length) { - $parentItem.prepend(this.options.toggleTemplate); - } - idx = idx || $parentItem.data('idx'); - } else { - idx = 0; - $parentItem = null; - } - var $children = $list.attr('data-idx', idx || 0).children('li:not(.tree-action-item)').each(function(index) { - that._initItem($(this), index + 1, $list); - }); - if($children.length === 1 && !$children.find('ul').length) - { - $children.addClass('tree-single-item'); - } - data = data || ($parentItem ? $parentItem.data() : null); - var actions = formatActions(data ? data.actions : null, this.actions); - if(actions) { - if(actions.add && actions.add.templateInList !== false) { - var $actionItem = $list.children('li.tree-action-item'); - if(!$actionItem.length) { - $('
            • ').append(createActionEle(actions.add, 'add', actions.add.templateInList)).appendTo($list); - } else { - $actionItem.detach().appendTo($list); - } - } - if(actions.sort) { - $list.sortable($.extend({ - dragCssClass: 'tree-drag-holder', - trigger: '.sort-handler', - selector: 'li:not(.tree-action-item)', - finish: function(e) { - that.callEvent('action', {action: actions.sort, $list: $list, target: e.target, item: data}); - } - }, actions.sort.options, $.isPlainObject(this.options.sortable) ? this.options.sortable : null)); - } - } - if($parentItem && ($parentItem.hasClass('open') || (data && data.open))) { - $parentItem.addClass('open in'); - } - }; - - Tree.prototype._initItem = function($item, idx, $parentList, data) { - if(idx === undefined) { - var $pre = $item.prev('li'); - idx = $pre.length ? ($pre.data('idx') + 1) : 1; - } - $parentList = $parentList || $item.closest('ul'); - $item.attr('data-idx', idx).removeClass('tree-single-item'); - if(!$item.data('id')) { - var id = idx; - if(!$parentList.hasClass('tree')) { - id = $parentList.parent('li').data('id') + '-' + id; - } - $item.attr('data-id', id); - } - data = data || $item.data(); - var actions = formatActions(data.actions, this.actions); - if(actions) { - var $actions = $item.find('.tree-actions'); - if(!$actions.length) { - $actions = $('
              ').appendTo(this.options.itemWrapper ? $item.find('.tree-item-wrapper') : $item); - $.each(actions, function(actionName, action) { - if(action) $actions.append(createActionEle(action, actionName)); - }); - } - } - - var $children = $item.children('ul'); - if($children.length) { - this._initList($children, $item, idx, data); - } - }; - - Tree.prototype._init = function() { - var options = this.options, that = this; - this.actions = formatActions(options.actions); - - this.$.addClass('tree'); - if(options.animate) this.$.addClass('tree-animate'); - - this._initList(this.$); - - var initialState = options.initialState; - var isPreserveEnable = $.zui && $.zui.store && $.zui.store.enable; - if(isPreserveEnable) { - this.selector = name + '::' + (options.name || '') + '#' + (this.$.attr('id') || globalId++); - this.store = $.zui.store[options.name ? 'get' : 'pageGet'](this.selector, {}); - } - if(initialState === 'preserve') { - if(isPreserveEnable) this.isPreserve = true; - else this.options.initialState = initialState = 'normal'; - } - - // init data - this.reload(options.data); - if(isPreserveEnable) this.isPreserve = true; - - if(initialState === 'expand') { - this.expand(); - } else if(initialState === 'collapse') { - this.collapse(); - } - - // Bind event - this.$.on('click', '.list-toggle,a[href="#"],.tree-toggle', function(e) { - var $this = $(this); - var $li = $this.parent('li'); - that.callEvent('hit', {target: $li, item: $li.data()}); - that.toggle($li); - if($this.is('a')) e.preventDefault(); - }).on('click', '.tree-action', function() { - var $action = $(this); - var action = $action.data(); - if(action.action) action = action.action; - if(action.type === 'sort') return; - var $li = $action.closest('li:not(.tree-action-item)'); - that.callEvent('action', {action: action, target: this, $item: $li, item: $li.data()}); - }); - }; - - Tree.prototype.preserve = function($li, id, expand) { - if(!this.isPreserve) return; - if($li) { - id = id || $li.data('id'); - expand = expand === undefined ? $li.hasClass('open') : false; - if(expand) this.store[id] = expand; - else delete this.store[id]; - this.store.time = new Date().getTime(); - $.zui.store[this.options.name ? 'set' : 'pageSet'](this.selector, this.store); - } else { - var that = this; - this.store = {}; - this.$.find('li').each(function() { - that.preserve($(this)); - }); - } - }; - - Tree.prototype.expand = function($li, disabledAnimate, notStore) { - if($li) { - $li.addClass('open'); - if(!disabledAnimate && this.options.animate) { - setTimeout(function() { - $li.addClass('in'); - }, 10); - } else { - $li.addClass('in'); - } - } else { - $li = this.$.find('li.has-list').addClass('open in'); - } - if(!notStore) this.preserve($li); - this.callEvent('expand', $li, this); - }; - - Tree.prototype.show = function($lis, disabledAnimate, notStore) { - var that = this; - $lis.each(function() { - var $li = $(this); - that.expand($li, disabledAnimate, notStore); - if($li) { - var $ul = $li.parent('ul'); - while($ul && $ul.length && !$ul.hasClass('tree')) { - var $parentLi = $ul.parent('li'); - if($parentLi.length) { - that.expand($parentLi, disabledAnimate, notStore); - $ul = $parentLi.parent('ul'); - } else { - $ul = false; - } - } - } - }); - }; - - Tree.prototype.collapse = function($li, disabledAnimate, notStore) { - if($li) { - if(!disabledAnimate && this.options.animate) { - $li.removeClass('in'); - setTimeout(function() { - $li.removeClass('open'); - }, 300); - } else { - $li.removeClass('open in'); - } - } else { - $li = this.$.find('li.has-list').removeClass('open in'); - } - if(!notStore) this.preserve($li); - this.callEvent('collapse', $li, this); - }; - - Tree.prototype.toggle = function($li) { - var collapse = ($li && $li.hasClass('open')) || $li === false || ($li === undefined && this.$.find('li.has-list.open').length); - this[collapse ? 'collapse' : 'expand']($li); - }; - - // Get and init options - Tree.prototype.getOptions = function(options) { - this.options = $.extend({}, Tree.DEFAULTS, this.$.data(), options); - if(this.options.animate === null && this.$.hasClass('tree-animate')) { - this.options.animate = true; - } - }; - - Tree.prototype.toData = function($ul, filter) { - if($.isFunction($ul)) { - filter = $ul; - $ul = null; - } - $ul = $ul || this.$; - var that = this; - return $ul.children('li:not(.tree-action-item)').map(function() { - var $li = $(this); - var data = $li.data(); - delete data['zui.droppable']; - var $children = $li.children('ul'); - if($children.length) data.children = that.toData($children); - return $.isFunction(filter) ? filter(data, $li) : data; - }).get(); - }; - - // Call event helper - Tree.prototype.callEvent = function(name, params) { - var result; - if($.isFunction(this.options[name])) { - result = this.options[name](params, this); - } - this.$.trigger($.Event(name + '.' + this.name, params)); - return result; - }; - - // Extense jquery element - $.fn.tree = function(option, params) { - return this.each(function() { - var $this = $(this); - var data = $this.data(name); - var options = typeof option == 'object' && option; - - if(!data) $this.data(name, (data = new Tree(this, options))); - - if(typeof option == 'string') data[option](params); - }); - }; - - $.fn.tree.Constructor = Tree; - - // Auto call tree after document load complete - $(function() { - $('[data-ride="tree"]').tree(); - }); -}(jQuery)); - - -/* ======================================================================== - * ZUI: ColorPicker.js [1.5.0+] - * http://zui.sexy - * ======================================================================== - * Copyright (c) 2016 cnezsoft.com; Licensed MIT - * ======================================================================== */ - - -(function($) { - 'use strict'; - - var name = 'zui.colorPicker'; // modal name - var TEAMPLATE = '
              '; - var LANG = { - zh_cn: { - errorTip: "不是有效的颜色值" - }, - zh_tw: { - errorTip: "不是有效的顏色值" - }, - en: { - errorTip: "Not a valid color value" - } - }; - - // The ColorPicker modal class - var ColorPicker = function(element, options) { - this.name = name; - this.$ = $(element); - - this.getOptions(options); - this.init(); - }; - - // default options - ColorPicker.DEFAULTS = { - colors: ['#00BCD4', '#388E3C', '#3280fc', '#3F51B5', '#9C27B0', '#795548', '#F57C00', '#F44336', '#E91E63'], - pullMenuRight: true, - wrapper: 'btn-wrapper', - tileSize: 30, - lineCount: 5, - optional: true, - tooltip: 'top', - icon: 'caret-down', - updateBtn: 'auto' - // btnTip: 'Tool tip in button' - }; - - ColorPicker.prototype.init = function() { - var that = this; - var options = that.options; - var $input = that.$; - var $parent = $input.parent(); - var createdPicker = false; - if ($parent.hasClass('colorpicker')) { - that.$picker = $parent; - } else { - that.$picker = $(options.template || TEAMPLATE); - createdPicker = true; - } - that.$picker.addClass(options.wrapper).find('.cp-title').toggle(options.title !== undefined).text(options.title); - that.$menu = that.$picker.find('.dropdown-menu').toggleClass('pull-right', options.pullMenuRight); - that.$btn = that.$picker.find('.btn.dropdown-toggle'); - that.$btn.find('.ic').addClass('icon-' + options.icon); - if(options.btnTip) { - that.$picker.attr('data-toggle', 'tooltip').tooltip({title: options.btnTip, placement: options.tooltip, container: 'body'}); - } - $input.attr('data-provide', null); - if (createdPicker) { - $input.after(that.$picker); - } - - // init colors - that.colors = {}; - $.each(options.colors, function(idx, rawColor) { - if($.zui.Color.isColor(rawColor)) { - var color = new $.zui.Color(rawColor); - that.colors[color.toCssStr()] = color; - } - }); - - that.updateColors(); - that.$picker.on('click', '.cp-tile', function() { - that.setValue($(this).data('color')); - }); - - var setInputColor = function() { - var val = $input.val(); - var isColor = $.zui.Color.isColor(val); - $input.parent().toggleClass('has-error', !isColor && !(options.optional && val === '')); - if(isColor) { - that.setValue(val, true); - } else { - if(options.optional && val === '') { - $input.tooltip('hide'); - } else if(!$input.is(':focus')) { - $input.tooltip('show', options.errorTip); - } - } - } - if($input.is('input:not([type=hidden])')) { - if(options.tooltip) { - $input.attr('data-toggle', 'tooltip').tooltip({trigger: 'manual', placement: options.tooltip, tipClass: 'tooltip-danger', container: 'body'}); - } - $input.on('keyup paste input change', setInputColor); - } else { - $input.appendTo(that.$picker); - } - setInputColor(); - }; - - ColorPicker.prototype.addColor = function(color) { - if(!(color instanceof $.zui.Color)) { - color = new $.zui.Color(color); - } - var hex = color.toCssStr(), - options = this.options; - - if(!this.colors[hex]) { - this.colors[hex] = color; - } - - var $a = $('
              ', { - titile: color - }).data('color', color).css({ - 'color': color.contrast().toCssStr(), - 'background': hex, - 'border-color': color.luma() > 0.43 ? '#ccc' : 'transparent' - }).attr('data-color', hex); - this.$menu.append($('
            • ').css({width: options.tileSize, height: options.tileSize}).append($a)); - if(options.optional) { - this.$menu.find('.cp-tile.empty').parent().detach().appendTo(this.$menu); - } - }; - - ColorPicker.prototype.updateColors = function(colors) { - var $picker = this.$picker, - $menu = this.$menu.children('li:not(.heading)').remove(), - options = this.options, - colors = colors || this.colors, - that = this; - var bestLineCount = 0; - $.each(colors, function(idx, color) { - that.addColor(color); - bestLineCount++; - }); - if(options.optional) { - var $li = $('
            • ').css({width: options.tileSize, height: options.tileSize}); - this.$menu.append($li); - bestLineCount++; - } - $menu.css('width', Math.min(bestLineCount, options.lineCount) * options.tileSize + 6); - }; - - ColorPicker.prototype.setValue = function(color, notSetInput) { - var that = this; - var options = that.options; - var $btn = that.$btn; - that.$menu.find('.cp-tile.active').removeClass('active'); - var hex = ''; - var updateBtn = options.updateBtn; - if (updateBtn === 'auto') { - var $btnBar = $btn.find('.color-bar'); - updateBtn = $btnBar.length ? function(hexColor) { - $btnBar.css('background', hexColor || ''); - } : true; - } - if(color) { - var c = new $.zui.Color(color); - hex = c.toCssStr().toLowerCase(); - if (updateBtn) { - if ($.isFunction(updateBtn)) { - updateBtn(hex, $btn, that); - } else { - $btn.css({ - background: hex, - color: c.contrast().toCssStr(), - borderColor: c.luma() > 0.43 ? '#ccc' : hex - }); - } - } - if(!that.colors[hex]) { - that.addColor(c); - } - if(!notSetInput && that.$.val().toLowerCase() !== hex) { - that.$.val(hex).trigger('change'); - } - that.$menu.find('.cp-tile[data-color="' + hex + '"]').addClass('active'); - that.$.tooltip('hide'); - that.$.trigger('colorchange', c); - } else { - if (updateBtn) { - if ($.isFunction(updateBtn)) { - updateBtn(null, $btn, that); - } else { - $btn.attr('style', null); - } - } - if(!notSetInput && that.$.val() !== '') { - that.$.val(hex).trigger('change'); - } - if(options.optional) { - that.$.tooltip('hide'); - } - that.$menu.find('.cp-tile.empty').addClass('active'); - that.$.trigger('colorchange', null); - } - - if(options.updateBorder) { - $(options.updateBorder).css('border-color', hex); - } - if(options.updateBackground) { - $(options.updateBackground).css('background-color', hex); - } - if(options.updateColor) { - $(options.updateColor).css('color', hex); - } - if(options.updateText) { - $(options.updateText).text(hex); - } - }; - - // Get and init options - ColorPicker.prototype.getOptions = function(options) { - var thisOptions = $.extend({}, ColorPicker.DEFAULTS, this.$.data(), options); - if(typeof thisOptions.colors === 'string') thisOptions.colors = thisOptions.colors.split(','); - var lang = (thisOptions.lang || $.zui.clientLang()).toLowerCase(); - if(!thisOptions.errorTip) { - thisOptions.errorTip = LANG[lang].errorTip; - } - if(!$.fn.tooltip) thisOptions.btnTip = false; - this.options = thisOptions; - }; - - // Extense jquery element - $.fn.colorPicker = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(name); - var options = typeof option == 'object' && option; - - if(!data) $this.data(name, (data = new ColorPicker(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - $.fn.colorPicker.Constructor = ColorPicker; - - // Auto call colorPicker after document load complete - $(function() { - $('[data-provide="colorpicker"]').colorPicker(); - }); -}(jQuery)); - -(function ($, undefined) { - var colorIndex = 0; - var accentsColors = [ - '#00a9fc', '#ff5d5d', '#fdc137', '#00da88', '#7ec5ff', '#8666b8', '#bd7b46', '#ff9100', '#ff3d00', '#f57f17', '#00e5ff', '#00b0ff', '#2979ff', '#3d5afe', '#651fff', '#d500f9', '#f50057', '#ff1744' - ]; - function nextAccentColor(idx) { - if (idx === undefined) { - idx = colorIndex += 1; - } - return accentsColors[idx%accentsColors.length]; - } - - jQuery.fn.tableChart = function () { - $(this).each(function () { - var $table = $(this); - var options = $table.data(); - var chartType = options.chart || 'pie'; - var $canvas = $(options.target); - if (!$canvas.length) return; - var chart = null; - - if (chartType === 'pie') { - options = $.extend({ scaleShowLabels: true, scaleLabel: '<%=label%>: <%=value%>' }, options); - var data = []; - var $rows = $table.find('tbody > tr').each(function (idx) { - var $row = $(this); - var color = nextAccentColor(); - - $row.attr('data-id', idx).find('.chart-color-dot').css('background', color); - data.push({ label: $row.find('.chart-label').text(), value: parseInt($row.find('.chart-value').text()), color: color, id: idx }); - }); - - if (data.length > 1) options.scaleLabelPlacement = 'outside'; - else if (data.length === 1) { - options.scaleLabelPlacement = 'inside'; - data.push({ label: '', value: data[0].value / 2000, color: '#fff', showLabel: false }) - } - - chart = $canvas.pieChart(data, options); - $canvas.on('mousemove', function (e) { - var activePoints = chart.getSegmentsAtEvent(e); - $rows.removeClass('active'); - if (activePoints.length) { - $rows.filter('[data-id="' + activePoints[0].id + '"]').addClass('active'); - } - }); - } - else if (chartType === 'bar') { - var color = nextAccentColor(); - var labels = [], dataset = { label: $table.find('thead .chart-label').text(), color: color, data: [] }; - - var $rows = $table.find('tbody > tr').each(function (idx) { - var $row = $(this); - labels.push($row.find('.chart-label').text()); - dataset.data.push(parseInt($row.find('.chart-value').text())); - $row.find('.chart-color-dot').css('background', color); - }); - var data = { labels: labels, datasets: [dataset] }; - if (labels.length) options.barValueSpacing = 5; - - chart = $canvas.barChart(data, options); - } - else if (chartType === 'line') { - var color = nextAccentColor(); - var labels = [], dataset = { label: $table.find('thead .chart-label').text(), color: color, data: [] }; - - var $rows = $table.find('tbody > tr').each(function (idx) { - var $row = $(this); - labels.push($row.find('.chart-label').text()); - dataset.data.push(parseInt($row.find('.chart-value').text())); - $row.find('.chart-color-dot').css('background', color); - }); - var data = { labels: labels, datasets: [dataset] }; - if (labels.length) options.barValueSpacing = 5; - - chart = $canvas.lineChart(data, options); - } - - if (chart !== null) $table.data('zui.chart', chart); - }); - }; - - var initProgressPie = function(element, setting) { - var $this = $(element); - var $canvas = $this.is('canvas') ? $this : $this.find('canvas'); - var options = $.extend( - { - value: 0, - color: '#006af1', - backColor: '#E9F2FB', - doughnut: true, - doughnutSize: 85, - width: 20, - height: 20, - showTip: false, - name: '', - tipTemplate: "<%=value%>%", - animation: 'auto', - realValue: parseFloat($this.find('.progress-value').text()) - }, setting, $this.data()); - var hasCanvas = $canvas.length; - if (!hasCanvas) $canvas = $('').appendTo($this); - if ($canvas.attr('width') !== undefined) options.width = $canvas.attr('width'); - else $canvas.attr('width', options.width); - if ($canvas.attr('height') !== undefined) options.height = $canvas.attr('height'); - else $canvas.attr('height', options.height); - if (!hasCanvas && $.zui.browser.ie == 8) G_vmlCanvasManager.initElement($canvas[0]); - if (options.animation === 'auto') { - options.animation = options.width > 30; - } - - options.value = Math.max(0, Math.min(100, options.value)); - - $this.addClass('progress-pie-' + options.width); - - var data = - [ - { value: options.value, label: options.name, color: options.color, circleBeginEnd: true }, - { value: 100 - options.value, label: '', color: options.backColor } - ]; - - $canvas[options.doughnut ? 'doughnutChart' : 'pieChart'](data, $.extend( - { - segmentShowStroke: false, - animation: options.animation, - showTooltips: options.showTip, - tooltipTemplate: options.tipTemplate, - percentageInnerCutout: options.doughnutSize, - reverseDrawOrder: true, - animationEasing: 'easeInOutQuart', - onAnimationProgress: options.realValue ? function(progress) { - $this.find('.progress-value').text(Math.floor(options.realValue * progress)); - } : undefined, - onAnimationComplete: options.realValue ? function(progress) { - $this.find('.progress-value').text(options.realValue); - } : undefined - }, options.chartOptions)); - }; - - jQuery.fn.progressPie = function (setting) { - $(this).each(function () { - var $this = $(this); - var $tabPane = $this.closest('.tab-pane'); - if ($tabPane.length && !$tabPane.hasClass('active')) { - $('[data-toggle="tab"][data-target="#' + $tabPane.attr('id') + '"]').one('shown.zui.tab', function() { - initProgressPie($this, setting); - }); - } else { - initProgressPie(this, setting); - } - }); - }; - - $(function () { - $('.table-chart').tableChart(); - var $pies = $('.progress-pie'); - if ($pies.length > 100) setTimeout(function () { $pies.progressPie(); }, 1000); - else $pies.progressPie(); - }); -}(jQuery, undefined)); - -(function($) { - jQuery.fn.sparkline = function(setting) - { - $(this).each(function() - { - var $e = $(this); - var options = $.extend({ - values: $e.attr('values'), - width: $e.width() - 4, - height: $e.height() - 4 - }, $e.data(), setting); - var height = options.height, - values = [], - maxWidth = options.width; - - var strValues = options.values.split(','), maxValue = 0; - for(var i in strValues) - { - var v = parseFloat(strValues[i]); - if(v != NaN) - { - values.push(v); - maxValue = Math.max(v, maxValue); - } - } - - var scaleSteps = Math.min(maxValue, 30); - var scaleStepWidth = Math.ceil(maxValue/scaleSteps); - - var width = Math.min(maxWidth, Math.max(10, values.length*maxWidth/30)); - var canvas = $e.children('canvas'); - if(!canvas.length) - { - $e.append(''); - canvas = $e.children('canvas'); - } - canvas.attr('width', width).attr('height',height); - var data = { - labels : values, - datasets: - [{ - fillColor : "rgba(0,0,255,0.05)", - strokeColor : "#0054EC", - pointColor : "rgba(255,136,0,1)", - pointStrokeColor : "#fff", - data : values - }] - }; - var chartOtions = { - animation: true, - scaleOverride: true, - scaleStepWidth: Math.ceil(maxValue/10), - scaleSteps: 10, - scaleStartValue: 0, - showScale: false, - showTooltips: false, - pointDot: false, - scaleShowGridLines: false, - datasetStrokeWidth: 1 - }; - var lineChart = $(canvas).lineChart(data, chartOtions); - $e.data('sparklineChart', lineChart); - }); - } - - $(function(){ - $('.sparkline').sparkline(); - }); -}(jQuery)); - -(function ($) { - $(function () { - $.fn.fixedDate = function () { - return $(this).each(function () { - var $this = $(this); - - if ($this.val() == '0000-00-00') { - $this.focus(function () { - if ($this.val() == '0000-00-00') $this.val('').datetimepicker('update'); - }).blur(function () { - if ($this.val() == '') $this.val('0000-00-00') - }); - } - }); - }; - - var options = { - language: $('html').attr('lang'), - weekStart: 1, - todayBtn: 1, - autoclose: 1, - todayHighlight: 1, - startView: 2, - forceParse: 0, - showMeridian: 1, - format: 'yyyy-mm-dd hh:ii', - startDate: '1970-1-1' - }; - var dateOptions = $.extend({}, options, {minView: 2, format: 'yyyy-mm-dd' }); - var timeOptions = $.extend({}, options, {startView: 1, minView: 0, maxView: 1, format: 'hh:ii'}); - - $('.datepicker-wrapper').click(function () { - $(this).find('.form-date, .form-datetime, .form-time').datetimepicker('show').focus(); - }); - - window.datepickerOptions = options; - $.fn.datepicker = function(setting) { - return this.datetimepicker($.extend({}, dateOptions, setting)); - }; - $.fn.timepicker = function(setting) { - return this.datetimepicker($.extend({}, timeOptions, setting)); - }; - - $.fn.datepickerAll = function() { - this.find('.form-datetime').fixedDate().datetimepicker(options); - this.find('.form-date').fixedDate().datepicker(); - this.find('.form-time').fixedDate().timepicker(); - return this; - }; - - $('body').datepickerAll(); - }); -}(jQuery)); - - -(function ($) { - - var batchActionForm = function($form, options) { - options = $.extend({ - idStart: 0, - idEnd: 9, - chosen: true, - datetimepicker: true, - colorPicker: true, - hotkeys: true - }, options, $form.data()); - var $template = $form.find('.template'); - - if (!$template.length && options.template) { - $template = $(options.template); - } - - var dataCtrlCount = 0; - var rowsCount = 0; - var focusControl = function($ctrl) { - if ($ctrl.is('select.chosen')) { - $ctrl.next('.chosen-container').find('input').focus(); - } else { - $ctrl.focus(); - } - }; - - var focusNext = function(direction) { - var $currentCtrl = $form.find('[data-ctrl-index]:focus,.chosen-container-active').first(); - if (!$currentCtrl.length) { - return; - } - if ($currentCtrl.is('.chosen-container-active')) { - if ($currentCtrl.hasClass('chosen-with-drop') && (direction === 'down' || direction === 'up')) { - return; - } - $currentCtrl = $currentCtrl.prev('select.chosen'); - } - var index = $currentCtrl.data('ctrlIndex'); - var rowIndex = $currentCtrl.closest('tr').data('row'); - if (direction === 'down') { - if (rowIndex < (rowsCount - 1)) { - rowIndex += 1; - } else { - rowIndex = 0; - } - } else if (direction === 'up') { - if (rowIndex > 0) { - rowIndex -= 1; - } else { - rowIndex = rowsCount - 1; - } - } else if (direction === 'left') { - if (index > 0) { - index -= 1; - } else { - index = dataCtrlCount - 1; - } - } else if (direction === 'right') { - if (index < (dataCtrlCount - 1)) { - index += 1; - } else { - index = 0; - } - } - focusControl($form.find('tr[data-row="' + rowIndex + '"]').find('[data-ctrl-index="' + index + '"]')); - }; - - var comObject = { - options: options, - focusNext: focusNext, - focusControl: focusControl - }; - var $body = $form.find('tbody,.batch-rows'); - var initRows = function($ele) { - if ($.fn.chosen && options.chosen) { - $ele.find('.chosen').chosen($.isPlainObject(options.chosen) ? options.chosen : null); - } - - if ($.fn.datetimepicker && options.datetimepicker) { - $ele.datepickerAll($.isPlainObject(options.datetimepicker) ? options.datetimepicker : null); - } - - if ($.fn.colorPicker && options.colorPicker) { - $ele.find('input.colorpicker').colorPicker($.isPlainObject(options.colorPicker) ? options.colorPicker : null); - } - var ctrlIndex = 0; - $ele.find('input[type!="hidden"],textarea,select').each(function() { - var $ctrl = $(this); - if ($ctrl.parent().hasClass('chosen-search')) { - return; - } - $ctrl.attr('data-ctrl-index', ctrlIndex++); - }); - dataCtrlCount = Math.max(dataCtrlCount, ctrlIndex); - }; - if ($template.length) { - var template = $template.remove().html(); - var createRow = function(id, $after) { - var rowTemplate = template; - if (typeof id !== 'number') { - id = rowsCount; - } - rowsCount = Math.max(id + 1, rowsCount); - rowTemplate = rowTemplate.replace(/\$idPlus/g, id + 1).replace(/\$id/g, id); - var $row = $('<' + $template[0].tagName.toLowerCase() + ' />').html(rowTemplate); - $row.attr('data-row', id).addClass($template.attr('class')).removeClass('template'); - options.rowCreator && options.rowCreator($row, id, options); - if ($after) { - $after.after($row); - } else { - $body.append($row); - } - - initRows($row); - return $row; - }; - $.extend(comObject, {createRow: createRow, template: template}); - - for(var id = options.idStart; id <= options.idEnd; ++id) { - createRow(id); - } - } else { - initRows($form); - } - - $form.on('click', '.btn-copy', function() - { - var $btn = $(this); - var copyFrom = $($btn.data('copyFrom')).val(); - var $copyTo = $($btn.data('copyTo')).val(copyFrom).addClass('highlight'); - setTimeout(function() { - $copyTo.removeClass('highlight'); - }, 2000); - }); - - if (options.hotkeys) { - $(document).on('keydown', function(e) { - var focusControlMap = { - 'Ctrl+#37': 'left', - 'Ctrl+#39': 'right', - '#38': 'up', - '#40': 'down', - 'Ctrl+#38': 'up', - 'Ctrl+#40': 'down' - } - var keys = []; - if (e.ctrlKey) keys.push('Ctrl'); - keys.push('#' + e.keyCode); - var focusControlDir = focusControlMap[keys.join('+')]; - if (focusControlDir) - { - focusNext(focusControlDir); - if (e.ctrlKey) { - e.stopPropagation(); - e.preventDefault(); - } - } - }); - } - - $form.data('zui.batchActionForm', comObject); - }; - - $.fn.batchActionForm = function(options) - { - return this.each(function() { - batchActionForm($(this), options); - }); - }; -}(jQuery)); - -(function($, undefined) { - 'use strict'; - - var NAME = 'zui.table'; // model name - - var LANG = { - zh_cn: { - selectedItems: '已选择 {0} 项', - attrTotal: '{0}总计 {1}' - }, - zh_tw: { - selectedItems: '已选择 {0} 项', - attrTotal: '{0}总计 {1}' - }, - en: { - selectedItems: 'Seleted {0} items', - attrTotal: '{0} total {1}' - } - }; - - // The Table model class - var Table = function(element, options) { - var that = this; - that.name = NAME; - var $element = that.$ = $(element); - - options = that.options = $.extend({}, Table.DEFAULTS, this.$.data(), options); - var lang = options.lang || 'zh_cn'; - that.lang = $.isPlainObject(lang) ? ($.extend(true, {}, LANG[lang.lang || $.zui.clientLang()], lang)) : LANG[lang]; - - if (!$element.attr('id')) { - $element.attr('id', 'table-' + $.zui.uuid()); - } - - // Initialize here - if (options.checkable) { - $element.on('click', '.check-all', function() { - that.checkAll(!$(this).hasClass('checked')); - }).on('click', 'tbody>tr', function(e) { - if ($(e.target).closest('.btn,a,.not-check').length) return; - that.checkRow($(this)); - }).on('click', 'tbody input[type="checkbox"],tbody label[for]', function(e){ - e.stopPropagation(); - var $checkbox = $(this); - if ($checkbox.is('label')) { - $checkbox = $checkbox.closest('.checkbox-primary').find('input[type="checkbox"]'); - } - that.checkRow($checkbox.closest('tr'), $checkbox.is(':checked')); - }); - - if (options.selectable) { - $element.selectable($.extend({}, { - selector: 'tbody>tr', - selectClass: '', - trigger: '.c-id', - clickBehavior: 'multi', - listenClick: false, - select: function(e) { - that.checkRow(e.target, true); - }, - unselect: function(e) { - that.checkRow(e.target, false); - }, - rangeStyle: {border: '1px solid #006af1', backgroundColor: 'rgba(50, 128, 252, 0.2)', borderRadius: '2px'} - }, $.isPlainObject(options.selectable) ? options.selectable : null)); - } - } - - var $form = that.$form = $element.is('form') ? $element : $element.find('form'); - if ($form.length) { - if (options.ajaxForm) { - $form.ajaxForm($.isPlainObject(options.ajaxForm) ? options.ajaxForm : null); - } else { - $form.on('click', '[data-form-action]', function() { - $form.attr('action', $(this).data('formAction')).submit(); - }); - } - } - - if (options.fixFooter || options.fixHeader) { - that.pageFooterHeight = $('#footer').outerHeight(); - that.updateFixUI(); - $(window).on('scroll resize', function() { - that.updateFixUI(); - }).on('sidebar.toggle', function() { - setTimeout(function() { - that.updateFixUI(); - }, 200); - }); - } - - if (options.group) { - $element.on('click', '.group-toggle', function() { - that.toggleRowGroup($(this).closest('tr').data('id')); - }); - $(document).on('click', '.group-collapse-all', function() { - that.toggleGroups(false); - }).on('click', '.group-expand-all', function() { - that.toggleGroups(true); - }); - } - - that.defaultStatistic = $element.find('.table-statistic').html(); - that.updateStatistic(); - - // Init iframe modals - that.initModals(); - - that.checkItems = {}; - }; - - Table.prototype.reload = function(callback) { - var that = this; - var options = that.options; - var replaceId = options.replaceId; - if (!replaceId) { - return callback && callback(); - } - if (replaceId === 'self') { - replaceId = that.$.attr('id'); - } - var $replaceElement = $(replaceId); - var $tmpDiv = $('
              '); - that.$.addClass('load-indicator loading'); - $tmpDiv.load(window.location.href + ' #' + replaceId, function() { - that.$.empty().html($tmpDiv.children().html()).removeClass('load-indicator loading'); - - that.updateStatistic(); - that.initModals(); - that.$.datepickerAll(); - - var $rows = that.$.find('tbody>tr'); - var hasRowChecked = false; - $.each(that.checkItems, function(rowId, isChecked) { - if(isChecked) { - that.checkRow($rows.filter('[data-id="' + rowId + '"]'), true, true); - hasRowChecked = true; - } - }); - if (hasRowChecked) { - that.updateCheckUI(); - } - callback && callback(); - options.afterReload && options.afterReload(); - }); - }; - - Table.prototype.initModals = function() { - var that = this; - var options = that.options; - var $iframeTriggers = that.$.find(options.iframeModalTrigger); - if (!$iframeTriggers.length) return; - - var modalOptions = { - type: 'iframe', - onHide: options.replaceId ? function() { - var selfClose = $.cookie('selfClose'); - if(selfClose != 1 && !options.hot) return; - - $('#triggerModal').data('cancel-reload', 1); - - that.reload(function() { - $.cookie('selfClose', 0); - }); - } : null - }; - $iframeTriggers.modalTrigger(modalOptions); - }; - - Table.prototype.getTable = function() { - var $element = this.$; - return $element.is('table') ? $element : $element.find('table'); - }; - - Table.prototype.toggleGroups = function(expand) { - var that = this; - var toggled = {}; - that.$.find('tbody>tr').each(function(rowIndex) { - var id = $(this).closest('tr').data('id'); - if (toggled[id]) return; - that.toggleRowGroup(id, expand); - }); - }; - - Table.prototype.toggleRowGroup = function(id, expand) { - var $rows = this.$.find('tbody>tr[data-id="' + id + '"]'); - var $sumRow = $rows.filter('.group-summary'); - var isSumHidden = expand === undefined ? !$sumRow.hasClass('hidden') : !!expand; - $rows.not('.group-summary').toggleClass('hidden', !isSumHidden); - $sumRow.toggleClass('hidden', isSumHidden); - $('body').toggleClass('table-group-collapsed', !this.$.find('tbody>tr.group-summary.hidden').length) - }; - - Table.prototype.updateStatistic = function() { - var that = this; - var $statistic = that.$.find('.table-statistic');; - if (!$statistic.length) return; - - if (that.defaultStatistic === undefined) { - that.defaultStatistic = $statistic.html(); - } - - var statisticCols = that.statisticCols; - if (!statisticCols && statisticCols !== false) { - statisticCols = {}; - var hasStatisticCol = false; - that.getTable().find('thead th').each(function(index) { - var $th = $(this); - var statisticFormat = $th.data('statistic'); - if (statisticFormat) { - hasStatisticCol = true; - statisticCols[index] = {format: statisticFormat, name: $th.text()}; - } - }); - that.statisticCols = hasStatisticCol ? statisticCols : false; - } - - var checkedCount = 0; - if (statisticCols) { - $.each(statisticCols, function(colIndex) { - statisticCols[colIndex].total = 0; - statisticCols[colIndex].checkedTotal = 0; - }); - } - that.$.find('tbody>tr').each(function(rowIndex) { - var $row = $(this); - var isRowChecked = $row.hasClass('checked'); - var $tds = $row.children('td'); - if (isRowChecked) checkedCount++; - if (statisticCols) { - $.each(statisticCols, function(colIndex) { - var cellVal = parseFloat($tds.eq(colIndex).text()); - if (isNaN(cellVal)) cellVal = 0; - statisticCols[colIndex].total += cellVal; - if(isRowChecked) statisticCols[colIndex].checkedTotal += cellVal; - }); - } - }); - var statisticContents = []; - if (checkedCount) { - statisticContents.push(that.lang.selectedItems.format(checkedCount)); - } else if (that.defaultStatistic) { - $statistic.html(that.defaultStatistic); - return; - } - if (statisticCols) { - $.each(statisticCols, function(colIndex) { - var statisticCol = statisticCols[colIndex]; - var staticVal = statisticCol[checkedCount ? 'checkedTotal' : 'total']; - if (statisticCol.format) { - staticVal = statisticCol.format.format(staticVal); - } - statisticContents.push(that.lang.attrTotal.format(statisticCol.name, staticVal)); - }); - } - $statistic.html(statisticContents.join(', ')); - }; - - Table.prototype.updateFixUI = function(immediately) { - var that = this; - var now = new Date().getTime(); - if (!immediately) { - if (that.lastUpdateCall) { - clearTimeout(that.lastUpdateCall); - } - if (!that.lastUpdateTime || (now - that.lastUpdateTime) < 100) { - that.lastUpdateCall = setTimeout(function() { - that.updateFixUI(true); - }, 30); - return; - } - } - - that.lastUpdateTime = now; - - if (that.lastUpdateCall) { - clearTimeout(that.lastUpdateCall); - that.lastUpdateCall = null; - } - if (that.options.fixHeader) { - that.fixHeader(); - } - if (that.options.fixFooter) { - that.fixFooter(); - } - }; - - Table.prototype.fixHeader = function() { - var that = this; - var $table = that.getTable(); - var $header = $table.find('thead'); - var bounding = $header[0].getBoundingClientRect(); - var fixFooterOption = that.options.fixFooter; - var isFixed = $.isFunction(fixFooterOption) ? fixFooterOption(bounding, $header) : bounding.top < (typeof fixFooterOption === 'number' ? fixFooterOption : -5); - var $fixHeaderTable = that.$.find('table.fixed-header-copy'); - if (isFixed) { - if (!$fixHeaderTable.length) { - $fixHeaderTable = $('
              ').addClass($table.attr('class')).append($header.clone()).insertAfter($table); - } - $fixHeaderTable.css({ - top: 0, - left: bounding.left, - position: 'fixed', - width: bounding.width - }); - var $ths = $fixHeaderTable.find('th'); - $header.find('th').each(function(index) { - $ths.eq(index).css('width', $(this).outerWidth()); - }); - } else { - $fixHeaderTable.remove(); - } - }; - - Table.prototype.fixFooter = function() { - var that = this; - var $footer = that.$.find('.table-footer'); - var bounding = that.$.find('tbody')[0].getBoundingClientRect(); - var fixFooterOption = that.options.fixFooter; - $footer.toggleClass('fixed-footer', !!isFixed); - var isFixed = $.isFunction(fixFooterOption) ? fixFooterOption(bounding, $footer) : (bounding.bottom) > (window.innerHeight - 50 - (typeof fixFooterOption === 'number' ? fixFooterOption : (that.pageFooterHeight || 5))); - $footer.toggleClass('fixed-footer', !!isFixed); - if (isFixed) { - $footer.css({ - bottom: that.pageFooterHeight, - left: bounding.left, - width: bounding.width - }); - } else { - $footer.css({ - width: '' - }); - } - }; - - Table.prototype.checkAll = function(checked) { - var that = this; - var $rows = that.$.find('tbody>tr'); - $rows.each(function() { - that.checkRow($(this), checked, true); - }); - that.updateCheckUI(); - }; - - Table.prototype.checkRow = function($row, checked, notUpdateCheckUI) { - var $checkbox = $row.find('input[type="checkbox"]'); - if (checked === undefined) { - checked = !$checkbox.is(':checked'); - } - - $row.toggleClass('checked', checked); - this.checkItems[$row.data('id')] = checked; - $checkbox.prop('checked', checked); - if (!notUpdateCheckUI) { - this.updateCheckUI(); - } - }; - - Table.prototype.updateCheckUI = function() { - var $rows = this.$.find('tbody>tr'); - var isLastRowChecked = false, $lastRow = null, checkCount = 0, isRowChecked = false, rowsCount = $rows.length; - $rows.each(function(index) { - var $row = $(this); - isRowChecked = $row.hasClass('checked'); - $row.toggleClass('row-check-begin', isRowChecked && !isLastRowChecked); - $lastRow && $lastRow.toggleClass('row-check-end', !isRowChecked && isLastRowChecked); - if (isRowChecked) checkCount += 1; - $lastRow = $row; - isLastRowChecked = isRowChecked; - if (rowsCount === (index + 1)) $row.toggleClass('row-check-end', isRowChecked); - }); - this.$.toggleClass('has-row-checked', checkCount > 0).find('.check-all').toggleClass('checked', checkCount === rowsCount); - this.updateStatistic(); - }; - - // default options - Table.DEFAULTS = { - checkable: true, - ajaxForm: false, - selectable: true, - fixHeader: true, - fixFooter: true, - iframeWidth: 900, - replaceId: 'self', - hot: false, - iframeModalTrigger: '.iframe' - }; - - // Extense jquery element - $.fn.table = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new Table(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - Table.NAME = NAME; - - $.fn.table.Constructor = Table; - - // Auto call table after document load complete - $(function() { - $('[data-ride="table"]').table(); - }); -}(jQuery, undefined)); - - -(function ($, window, undefined) { - - $.fn._ajaxForm = $.fn.ajaxForm; - - var DEFAULT = { - timeout: window.config ? window.config.timeout : 0, - dataType: 'json', - errControlStyle: {borderColor: '#D2322D'} - }; - var ajaxFormUrl = ''; - - $.fn.enableForm = function(enable) { - if (enable === undefined) enable = true; - return this.each(function() { - var $form = $(this); - $form.find('[type="submit"]').attr('disabled', enable ? null : 'disabled'); - if ($form.hasClass('load-indicator')) { - $form.toggleClass('loading', !enable); - } - }); - }; - - var showMessage = function(mesage, options, method) { - if (typeof options === 'string') { - method = options; - options = null; - } - method = method || 'show'; - if ($.zui.messager) { - $.zui.messager[method](mesage, options); - } else { - alert(mesage); - } - }; - - $.ajaxForm = function(form, options) { - var $form = $(form); - if ($form.length > 1) { - return $form.each(function() { - $.ajaxForm(this, options); - }); - } - if ($.isFunction(options)) { - options = {complete: options}; - } - options = $.extend({}, DEFAULT, $form.data(), options); - var beforeSubmit = options.beforeSubmit; - var onError = options.error; - var onSuccess = options.success; - var onFinish = options.finish; - delete options.finish; - delete options.success; - delete options.onError; - delete options.beforeSubmit; - var errControlStyle = options.errControlStyle; - delete options.errControlStyle; - options = $.extend({ - beforeSubmit: function(data, $thisForm, option) { - $form.enableForm(false); - if ((beforeSubmit && beforeSubmit(data, $thisForm, option)) === false) return; - - var feature = {}; - var $files = $thisForm.find('[type="file"]'); - feature.fileapi = $files.length && $files[0].files !== undefined; - feature.formdata = window.FormData !== undefined; - var fileInputs = feature.fileapi && $thisForm.find('input[type="file"]:enabled').filter(function() { return $(this).val() !== ''; }); - var hasFileInputs = fileInputs.length; - var mp = 'multipart/form-data'; - var multipart = ($thisForm.attr('enctype') == mp || $thisForm.attr('encoding') == mp); - - var fileAPI = feature.fileapi && feature.formdata; - var shouldUseFrame = (hasFileInputs || multipart) && !fileAPI; - - /* Append HTTP_X_REQUESTED_WITH on url when shouldUseFrame is true. */ - if(shouldUseFrame) - { - if(ajaxFormUrl == '') ajaxFormUrl = options.url; - if(options.url != ajaxFormUrl) options.url = ajaxFormUrl; - options.url = options.url.indexOf('&') >= 0 ? options.url + '&HTTP_X_REQUESTED_WITH=XMLHttpRequest' : options.url + '?HTTP_X_REQUESTED_WITH=XMLHttpRequest'; - } - }, - success: function(response, textStatus, jqXHR) { - $form.enableForm(); - if ((onSuccess && onSuccess(response, textStatus, jqXHR, $form)) === false) return; - - /* try parse to json when response is json's string. */ - try{if(typeof response == 'string') response = JSON.parse(response);}catch(e){} - - /* The response is not an object, some error occers, alert it. */ - if(typeof response !== 'object') { - if(response) return alert(response); - return showMessage('No response.', 'danger'); - } - - /* The response.result is success. */ - var $responser = options.responser ? $(options.responser) : $form.find('.form-responser'); - if (!$responser.length) { - $responser = $('#responser'); - } - var message = response.message; - if (response.result === 'success') { - if (message) { - var $submitBtn = $form.find('[type="submit"]'); - var messageShowed = false; - if ($submitBtn.length) { - $submitBtn.popover({ - container: 'body', - trigger: 'manual', - content: message, - tipClass: 'popover-in-modal popover-success text-success', - placement: response.placement || options.popoverPlacement || 'right' - }).popover('show'); - setTimeout(function() { - $submitBtn.popover('destroy'); - }, options.popoverTime || 2000); - messageShowed = true; - } - - if ($responser.length) { - $responser.html('' + message + '').show().delay(3000).fadeOut(100); - messageShowed = true; - } - - if (!messageShowed) { - showMessage(message, 'success'); - } - } - - if (onFinish) { - return onFinish(response, true, $form); - } - - if (options.closeModal || response.closeModal) { - setTimeout($.zui.closeModal, options.closeModalTime || 2000); - } - - if(response.callback) { - var rcall = window[response.callback]; - if($.isFunction(rcall)) { - if(rcall() === false) return; - } - } - - var locate = options.locate || response.locate; - if(locate) { - if(locate == 'loadInModal') { - var $modal = $('.modal'); - setTimeout(function() { - $modal.load($modal.attr('ref'), function(){$(this).find('.modal-dialog').css('width', $(this).data('width')); $.zui.ajustModalPosition()}); - }, 1000); - } - else { - var reloadUrl = locate == 'reload' ? window.location.href : locate; - setTimeout(function(){window.location.href = reloadUrl;}, 1200); - } - } - - var ajaxReload = options.ajaxReload || response.ajaxReload; - if(ajaxReload) { - var $target = $(ajaxReload); - if($target.length) { - $target.load(window.location.href + ' ' + ajaxReload, function() { - $target.find('[data-toggle="modal"]').modalTrigger(); - }); - } - } - } else { - // The response.result is fail. - if (typeof message === 'string') { - if ($responser.length) { - $responser.html('' + message + '').show().delay(3000).fadeOut(100); - } else { - showMessage(message, 'danger'); - } - } else if (typeof message === 'object') { - var focusFirst = false; - var unShowedMessages = []; - $.each(message, function(key, value) { - var controlMessage = $.isArray(value) ? value.join(';') : value; - var $control = $('#' + key); - - if (!$control.length) { - unShowedMessages.push(controlMessage); - return; - } - - var errMsgLabelId = key + 'Label'; - - var $errLabel = $('#' + errMsgLabelId); - if (!$errLabel.length) { - var isInputGroup = $control.closest('.input-group').length; - $errLabel = $('
              ').appendTo(isInputGroup ? $control.closest('.input-group').parent() : $control.parent()); - } - $errLabel.empty().append(controlMessage); - $control.css(errControlStyle).addClass('has-error'); - - var removeLabel = function() { - var $theLabel = $('#' + errMsgLabelId); - if ($theLabel.length) { - $theLabel.remove(); - $control.removeAttr('style').removeClass('has-error'); - return true; - } - }; - - $control.on('change input mousedown', removeLabel); - - var $chosen = $('#' + key + '_chosen'); - if ($chosen.length) { - $chosen.find('.chosen-single').css(errControlStyle).addClass('has-error').on('mousedown', function() { - if (removeLabel() === true) { - $(this).removeAttr('style').removeClass('has-error'); - } - }); - } - - if (!focusFirst) { - $control.focus(); - focusFirst = true; - } - }); - if (unShowedMessages.length) { - showMessage(unShowedMessages.join(';'), 'danger'); - } - } - if (onFinish) { - return onFinish(response, false, $form); - } - } - }, - /* When error occers, alert the response text, status and error. */ - error: function(jqXHR, textStatus, errorThrown) { - if ((onError && onError(jqXHR, textStatus, errorThrown, $form)) === false) return; - $form.enableForm(); - var errorMessage = (textStatus == 'timeout' || textStatus == 'error') ? (window.lang ? window.lang.timeout : textStatus) : (jqXHR.responseText + textStatus + errorThrown); - showMessage(errorMessage, 'danger'); - } - }, options); - $form._ajaxForm(options); - - $form.on('click', '[data-form-action]', function() { - $form.attr('action', $(this).data('formAction')).submit(); - }); - }; - - $.fn.ajaxForm = function(options) { - return this.each(function() { - $.ajaxForm(this, options); - }); - }; - - $.fn.setInputRequired = function() { - return this.each(function() { - var $ctrl = $(this); - var $parent = $ctrl.parent(); - if ($parent.is('.input-control,td')) { - $parent.addClass('required'); - } else if ($ctrl.is('.chosen')) { - $ctrl.attr('required', null).next('.chosen-container').addClass('required'); - } - $ctrl.attr('required', null); - }); - }; - - $(function() { - $('.form-ajax,form[data-type="ajax"]').ajaxForm(); - - // Set required - setTimeout(function() { - var requiredFields = window.config.requiredFields; - var $forms = $('form'); - if (requiredFields) requiredFields = requiredFields.split(','); - if (requiredFields && requiredFields.length) { - $.each(requiredFields, function(idx, requiredField) { - $forms.find('#' + requiredField).attr('required', 'required'); - }); - } - - $forms.find('input[required],select[required]').setInputRequired(); - }, 400); - }); -}(jQuery, window, undefined)); - - -if($.zui.browser.ie && $.zui.browser.ie < 10) -{ - var $uploader = $('#uploader'); - $uploader.on('click', '.uploader-btn-browse', function() - { - $uploader.find('input[type="file"]:first').click(); - }); -} - -(function($) { - 'use strict'; - - var NAME = 'zui.searchList'; // model name - - var isSearchMatch = function(keyArr, filter) { - if (keyArr && keyArr.length) { - for(var i = 0; i < keyArr.length; ++i) { - if (filter.indexOf(keyArr[i]) < 0) { - return false; - } - } - } - return true; - }; - - // The SearchList model class - var SearchList = function(element, options) { - var that = this; - that.name = NAME; - var $element = that.$ = $(element); - - options = that.options = $.extend({}, SearchList.DEFAULTS, this.$.data(), options); - var $searchBox = $element.find(options.searchBox); - if ($searchBox.length) { - $searchBox.searchBox({ - onSearchChange: function(searchKey) { - that.search(searchKey); - }, - onKeyDown: function(e) { - var keyCode = e.which; - if (keyCode === 13) { - var $activeItem = that.getActiveItem(); - if (options.onSelectItem) { - options.onSelectItem($activeItem); - } else { - window.location.href = $activeItem.attr('href'); - } - e.preventDefault(); - } else if (keyCode === 38) { // up key pressed - var $activeItem = that.getActiveItem(); - $activeItem.removeClass('active'); - var $prevItem = $activeItem.prev(':not(.hidden)'); - if (!$prevItem.length) { - $prevItem = that.getItems().not('.hidden').last(); - } - that.scrollTo($prevItem.addClass('active')); - e.preventDefault(); - } else if (keyCode === 40) { // down key pressed - var $activeItem = that.getActiveItem(); - $activeItem.removeClass('active'); - var $nextItem = $activeItem.next(':not(.hidden)'); - if (!$nextItem.length) { - $nextItem = that.getItems().not('.hidden').first(); - } - that.scrollTo($nextItem.addClass('active')); - e.preventDefault(); - } - } - }); - that.searchBox = $searchBox.data('zui.searchBox'); - that.search(that.searchBox.getSearch()); - } - - var $dropdownMenu = that.$menu = $element.closest('.dropdown-menu'); - if ($dropdownMenu.length) { - that.isDropdown = true; - $element.on('click', function(e) { - if (!$(e.target).closest(options.selector).length) { - e.stopPropagation(); - } - }); - var $dropdown = $dropdownMenu.parent(); - $dropdown.on($dropdown.hasClass('dropdown-hover') ? 'mouseenter' : 'shown.zui.dropdown', function() { - that.tryLoadRemote(function() { - setTimeout(function() { - that.searchBox.focus(); - }, 50); - }); - }); - } - - $element.on('mouseenter', options.selector, function() { - $element.find(that.options.selector).not('.hidden').removeClass('active'); - $(this).addClass('active'); - }); - }; - - SearchList.prototype.tryLoadRemote = function(callback) { - var that = this; - var options = that.options; - if (options.url || options.ajax) { - if (that.isLoaded) { - callback(); - } else { - that.loadRemote(callback); - } - } else { - callback(); - } - }; - - SearchList.prototype.loadRemote = function(callback) { - var that = this; - var options = that.options; - that.$menu.addClass('load-indicator loading').find('.list-group').remove(); - that.isLoaded = false; - $.ajax($.extend({ - url: options.url, - type: 'GET', - dataType: 'html', - success: function(data, textStatus, jqXHR) { - var $data = $(data); - if (!$data.hasClass('list-group')) { - $data = $('
              ').append($data); - } - that.$menu.append($data); - that.$menu.removeClass('loading'); - that.isLoaded = true; - callback && callback(true); - }, - error: function() { - that.$menu.removeClass('loading').append('
              ' + (options.errorText || (window.lang && window.lang.timeout)) + '
              '); - callback && callback(false); - }, - }, options.ajax)); - }; - - SearchList.prototype.scrollTo = function($item) { - if ($item.length) { - $item[0].scrollIntoView({behavior: 'smooth'}); - } - }; - - SearchList.prototype.getItems = function() { - return this.$.find(this.options.selector); - }; - - SearchList.prototype.getActiveItem = function() { - return this.getItems().filter('.active:first'); - }; - - SearchList.prototype.search = function(searchKey) { - var that = this; - var isEmpty = searchKey === undefined || searchKey === null || searchKey === ''; - var $items = that.getItems().removeClass('active'); - if (isEmpty) { - $items.removeClass('hidden'); - } else { - var keyArr = $.trim(searchKey).split(' '); - $items.each(function() { - var $item = $(this); - var filter = $item.text() + ' ' + ($item.data('key') || $item.data('filter')); - $item.toggleClass('hidden', !isSearchMatch(keyArr, filter)); - }); - } - that.scrollTo($items.not('.hidden').first().addClass('active')); - }; - - // default options - SearchList.DEFAULTS = { - selector: '.list-group a', - searchBox: '.search-box', - onSelectItem: null - }; - - // Extense jquery element - $.fn.searchList = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new SearchList(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - SearchList.NAME = NAME; - - $.fn.searchList.Constructor = SearchList; - - // Auto call searchList after document load complete - $(function() { - $('[data-ride="searchList"]').searchList(); - }); -}(jQuery)); - - -(function($) { - 'use strict'; - - var NAME = 'zui.labelSelector'; // model name - - // The LabelSelector model class - var LabelSelector = function(element, options) { - var that = this; - that.name = NAME; - var $element = that.$ = $(element); - - options = that.options = $.extend({}, LabelSelector.DEFAULTS, this.$.data(), options); - - that.$.hide(); - that.update(); - }; - - LabelSelector.prototype.select = function(val) { - val = val + ''; - this.$wrapper.find('.label.active').removeClass('active'); - if (val !== '' && val !== '0') { - this.$wrapper.find('.label[data-value="' + val + '"]').addClass('active'); - } - this.$.val(val).trigger('change'); - }; - - LabelSelector.prototype.update = function() { - var that = this; - var options = that.options; - var $wrapper = that.$wrapper; - if (!$wrapper) { - if (!options.wrapper) { - var $next = that.$.next(); - if ($next.hasClass('.label-selector')) { - $wrapper = $next; - } else { - $wrapper = $('
              '); - } - } else { - $wrapper = $(options.wrapper); - } - if (!$wrapper.parent().length) { - that.$.after($wrapper); - } - that.$wrapper = $wrapper; - $wrapper.on('click', '.label', function() { - that.select($(this).data('value')); - }); - } - - $wrapper.empty(); - var currentValue = that.$.val(); - that.$.children('option').each(function() { - var $option = $(this); - var option = { - label: $option.text(), - value: $option.val() - }; - var isEmptyValue = option.value === '' || option.value === '0'; - var $label = $(options.labelTemplate || ''); - if (options.labelClass && !isEmptyValue) { - $label.addClass(options.labelClass); - } - if (options.labelCreator) { - $label = options.labelCreator($label); - } else { - $label.data('option', option).attr('data-value', option.value); - if (isEmptyValue && !option.label) { - $label.addClass('empty').append('') - } else { - $label.text(option.label).toggleClass('active', currentValue === option.value); - } - } - $wrapper.append($label); - }); - }; - - - // default options - LabelSelector.DEFAULTS = { - // labelCreator: null, - // labelClass: 'label-severity', - // dropdown: false, - // wrapper: '
              ' - }; - - // Extense jquery element - $.fn.labelSelector = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new LabelSelector(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - LabelSelector.NAME = NAME; - - $.fn.labelSelector.Constructor = LabelSelector; - - // Auto call labelSelector after document load complete - $(function() { - $('[data-provide="labelSelector"]').labelSelector(); - }); -}(jQuery)); - - -(function($) { - 'use strict'; - - var NAME = 'zui.fileInput'; // model name - - const BYTE_UNITS = $.BYTE_UNITS = { - B: 1, - KB: 1024, - MB: 1024 * 1024, - GB: 1024 * 1024 * 1024, - TB: 1024 * 1024 * 1024 * 1024, - }; - var formatBytes = $.formatBytes = function(size, fixed, unit) { - if (fixed === undefined) fixed = 2; - if (!unit) { - if (size < BYTE_UNITS.KB) { - unit = 'B'; - } else if (size < BYTE_UNITS.MB) { - unit = 'KB'; - } else if (size < BYTE_UNITS.GB) { - unit = 'MB'; - } else if (size < BYTE_UNITS.TB) { - unit = 'GB'; - } else { - unit = 'TB'; - } - } - - return (size / BYTE_UNITS[unit]).toFixed(fixed) + unit; - }; - - var getBytesValue = function(bytes) { - if (typeof bytes === 'string') { - bytes = bytes.toUpperCase(); - var unit = bytes.replace(/\d+/, ''); - bytes = parseFloat(bytes.replace(unit, '')); - bytes *= (BYTE_UNITS[unit] || BYTE_UNITS[unit + 'B']); - bytes = Math.floor(bytes); - } - return bytes; - }; - - // The FileInput model class - var FileInput = function(element, options) { - var that = this; - that.name = NAME; - var $element = that.$ = $(element); - - options = that.options = $.extend({}, FileInput.DEFAULTS, this.$.data(), options); - if (options.fileMaxSize && typeof options.fileMaxSize === 'string') { - options.fileMaxSize = getBytesValue(options.fileMaxSize); - } - - var $input = that.$input = $element.find('input[type="file"]'); - - $element.on('click', '.file-input-btn', function() { - $input.trigger('click'); - }).on('click', '.file-input-rename', function() { - that.oldName = $element.addClass('edit').find('.file-editbox').focus().val(); - }).on('click', '.file-input-delete', function() { - $input.val(''); - that.update(); - options.onDelete && options.onDelete(that); - }).on('click', '.file-name-cancel', function() { - $element.removeClass('edit').find('.file-editbox').focus().val(that.oldName);; - }).on('click', '.file-name-confirm', function() { - var $editbox = $element.find('.file-editbox'); - var newName = $.trim($editbox.val()); - if (!newName.length) { - $editbox.focus(); - } else { - $element.removeClass('edit').find('.file-title').text(newName); - } - }).on('change input paste', '.file-editbox', function() { - var $editbox = $(this); - $editbox.attr('size', Math.max(5, $editbox.val().length)); - }); - - $input.on('change', function() { - var file = that.getFile(); - if (file && options.fileMaxSize && file.size > options.fileMaxSize) { - $input.val(''); - (window.bootbox || window)['alert'](options.fileSizeError.format(formatBytes(options.fileMaxSize))); - } - that.update(); - }); - - that.update(); - }; - - FileInput.prototype.getFile = function() { - return this.$input.prop('files')[0]; - }; - - FileInput.prototype.update = function(val) { - var that = this; - var $ele = that.$; - var file = that.getFile(); - var isFileEmpty = !file; - $ele.toggleClass('normal', !isFileEmpty).toggleClass('empty', isFileEmpty); - if (file) { - that.oldName = file.name; - $ele.find('.file-title').text(file.name).attr('title', file.name); - $ele.find('.file-size').text(formatBytes(file.size)); - $ele.find('.file-editbox').val(file.name).attr('size', file.name.length); - that.options.onSelect && that.options.onSelect(file, that); - } else { - $ele.find('.file-editbox').val(''); - } - }; - - // default options - FileInput.DEFAULTS = { - fileMaxSize: 0, - fileSizeError: '无法上传大于 {0} 的文件。' - }; - - // Extense jquery element - $.fn.fileInput = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(NAME, (data = new FileInput(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - FileInput.NAME = NAME; - - $.fn.fileInput.Constructor = FileInput; - - // Auto call fileInput after document load complete - $(function() { - $('[data-provide="fileInput"]').fileInput(); - }); - - var LIST_NAME = 'zui.fileInputList'; - - // File input list - // The FileInputList model class - var FileInputList = function(element, options) { - var that = this; - that.name = LIST_NAME; - var $element = that.$ = $(element); - - options = that.options = $.extend({}, FileInputList.DEFAULTS, this.$.data(), options); - - that.$template = $element.find('.file-input').detach(); - that.add(); - }; - - FileInputList.prototype.add = function() { - var that = this; - var options = that.options; - var $new = that.$template.clone(); - if (options.appendWay === 'before') { - that.$.prepend($new); - } else { - that.$.append($new); - } - $new.fileInput({ - fileMaxSize: options.eachFileMaxSize, - fileSizeError: options.fileSizeError, - onDelete: function(fileInput) { - fileInput.$.remove(); - that.options.onDelete && that.options.onDelete(fileInput, that); - }, - onSelect: function(file, fileInput) { - that.add(); - that.options.onSelect && that.options.onSelect(file, fileInput, that); - } - }); - }; - - - // default options - FileInputList.DEFAULTS = { - fileMaxSize: 0, - eachFileMaxSize: 0, - appendWay: 'after', - fileSizeError: '无法上传大于 {0} 的文件。' - }; - - // Extense jquery element - $.fn.fileInputList = function(option) { - return this.each(function() { - var $this = $(this); - var data = $this.data(LIST_NAME); - var options = typeof option == 'object' && option; - - if(!data) $this.data(LIST_NAME, (data = new FileInputList(this, options))); - - if(typeof option == 'string') data[option](); - }); - }; - - FileInputList.NAME = LIST_NAME; - - $.fn.fileInputList.Constructor = FileInputList; - - // Auto call fileInputList after document load complete - $(function() { - $('[data-provide="fileInputList"]').fileInputList(); - }); -}(jQuery)); - - -(function($) { - if (!window.config) window.config = {}; - - /** - * Create link. - * - * @param string $moduleName - * @param string $methodName - * @param string $vars - * @param string $viewType - * @access public - * @return string - */ - $.createLink = window.createLink = function createLink(moduleName, methodName, vars, viewType, isOnlyBody) - { - if(!viewType) viewType = config.defaultView; - if(!isOnlyBody) isOnlyBody = false; - if(vars) - { - vars = vars.split('&'); - for(i = 0; i < vars.length; i ++) - { - var splited = vars[i].split('='); - vars[i] = [splited.shift(), splited.join('=')]; - } - } - var link; - if(config.requestType != 'GET') - { - if(config.requestType == 'PATH_INFO') link = config.webRoot + moduleName + config.requestFix + methodName; - if(config.requestType == 'PATH_INFO2') link = config.webRoot + 'index.php/' + moduleName + config.requestFix + methodName; - if(vars) - { - for(i = 0; i < vars.length; i ++) link += config.requestFix + vars[i][1]; - } - link += '.' + viewType; - } - else - { - link = config.router + '?' + config.moduleVar + '=' + moduleName + '&' + config.methodVar + '=' + methodName + '&' + config.viewVar + '=' + viewType; - if(vars) for(i = 0; i < vars.length; i ++) link += '&' + vars[i][0] + '=' + vars[i][1]; - } - - /* if page has onlybody param then add this param in all link. the param hide header and footer. */ - if((config.onlybody !== undefined && config.onlybody == 'yes') || isOnlyBody) - { - var onlybody = config.requestType != 'GET' ? "?onlybody=yes" : '&onlybody=yes'; - link = link + onlybody; - } - return link; - }; - - - // Send score with ajax request - $.ajaxSendScore = function(method) { - $.get($.createLink('score', 'ajax', 'method=' + method)); - }; - - - var convertTimeToNum = function(timeStr) { - var number = 0; - if (timeStr) { - var valArr = timeStr.split(':'); - number += parseInt(valArr[0]) * 60; - number += parseInt(valArr[1]); - } - return number; - }; - - var convertNumToTime = function(number) { - number = number%(24*60); - var hour = Math.floor(number/60); - var min = number%60; - if (hour < 10) hour = '0' + hour; - if (min < 10) min = '0' + min; - return hour + ':' + min; - }; - - var createTime = function(time) { - if (typeof time === 'string') { - time = convertTimeToNum(time); - } - if (typeof time === 'number') { - if (time < 100000) { - var time2 = new Date(); - time2.setHours(Math.floor(time/60)%24); - time2.setMinutes(time%60); - time = time2; - } else { - time = new Date(time); - } - } - return time; - }; - - var initTimeSelect = function($select, beginTime) { - var now = beginTime ? createTime(beginTime) : new Date(); - var nowHour = now.getHours(); - var nowMin = Math.floor(now.getMinutes()/10)*10 + 10; - for(var i = 0; i < 24; ++i) { - var hour = (i + nowHour)%24; - if (hour < 5) continue; - for (var j = 0; j < 6; ++j) { - var itemTime = convertNumToTime(hour*60+j*10 + nowMin); - $select.append(''); - } - } - if (!$select.val()) { - time = convertTimeToNum(now.format('hh:mm')); - time = time - (time%10) + 10; - $select.val(convertNumToTime(time)); - } - }; - - $.fn.timeSpanControl = function(options) { - return this.each(function() { - var $element = $(this); - var setting = $.extend({}, options, $element.data()); - var $beginInput = $element.find('[name="begin"],.control-time-begin'); - var $endInput = $element.find('[name="end"],.control-time-end'); - var updateEndInput = function() { - var startVal = $beginInput.val(); - $element.find('.hide-empty-begin').toggleClass('hide', !startVal); - if (startVal) { - const end = convertNumToTime(convertTimeToNum(startVal) + 30); - if ($endInput.find('option[value="' + end + '"]').length) $endInput.val(end); - setting.onChange && setting.onChange($endInput, end); - } - }; - - if ($element.data('timeSpanControlInit')) { - if (setting.begin) { - const begin = createTime(setting.begin).format('hh:mm'); - if ($beginInput.find('option[value="' + begin + '"]').length) $beginInput.val(begin); - setting.onChange && setting.onChange($beginInput, begin); - } - if (setting.end) { - const end = createTime(setting.end).format('hh:mm'); - if ($endInput.find('option[value="' + end + '"]').length) $endInput.val(end); - setting.onChange && setting.onChange($endInput, end); - } - } else { - $beginInput.on('change', updateEndInput); - initTimeSelect($beginInput, setting.begin); - initTimeSelect($endInput, setting.end); - $element.data('timeSpanControlInit', true) - } - - if (!setting.end) updateEndInput(); - }); - }; - - $.timeSpanControl = { - convertTimeToNum: convertTimeToNum, - convertNumToTime: convertNumToTime, - initTimeSelect: initTimeSelect, - createTime: createTime - }; - - // Searchbox - var setSearchType = $.setSearchType = function(type) { - var $searchType = $('#searchType'); - if (!type) { - type = $searchType.val(); - } - type = type || 'bug'; - $searchType.val(type); - var $searchTypeMenu = $('#searchTypeMenu'); - $searchTypeMenu.find('li.selected').removeClass('selected'); - var $typeItem = $searchTypeMenu.find('a[data-value="' + type + '"]'); - var typeText = $typeItem.text(); - $typeItem.parent().addClass('selected'); - $('#searchTypeName').text(typeText); - }; - var gotoObject = $.gotoObject = function(type, id) { - if (!type) type = $('#searchType').val(); - if (!id) id = $('#searchInput').val(); - if (id && type) { - window.location.href = $.createLink(type, type === 'testsuite' ? 'library' : 'view', 'id=' + id); - } - }; - $(function() { - setSearchType(); - $(document).on('keydown', function(e) { - if (e.ctrlKey && e.keyCode === 71) { // Ctrl + G - $('#searchInput').val('').focus(); - e.stopPropagation(); - e.preventDefault(); - } - }) - }); - - - $.chosenDefaultOptions = { - disable_search_threshold: 1, - width: null, - allow_single_deselect: true, - placeholder_text_single: ' ', - placeholder_text_multiple: ' ', - search_contains: true - }; - - $.chosenSimpleOptions = $.extend({}, $.chosenDefaultOptions, { - disable_search_threshold: 6 - }); - - $.fn._chosen = $.fn.chosen; - $.fn.chosen = function(options) { - if (typeof options === 'string') { - return this._chosen(options); - } - return this.each(function() { - var $this = $(this).addClass('chosen-controled'); - return $this._chosen($.extend({}, $this.hasClass('chosen-simple') ? $.chosenSimpleOptions : $.chosenDefaultOptions, options)); - }); - }; - - $(function() { - $('.chosen,.chosen-simple').each(function() { - var $this = $(this); - if ($this.closest('.template').length) { - return; - } - $this.chosen(); - }); - }); - - // Set pager - $.extend($.fn.pager.Constructor.DEFAULTS, { - maxNavCount: 8, - prevIcon: 'icon-angle-left', - nextIcon: 'icon-angle-right', - navEllipsisItem: '…', - menuDirection: 'dropup', - pageSizeOptions: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 100, 200, 500, 1000, 2000], - elements: ['total_text', 'size_menu', 'prev_icon', 'nav', 'next_icon'], - onPageChange: function(state, oldState) { - console.log('onPageChange', state, oldState); - if (state.recPerPage !== oldState.recPerPage) { - window.location.href = this.createLink(); - } - } - }); - - - // Set messager - $.zui.Messager.DEFAULTS.cssClass = 'messagger-zt'; - - - /* reverseOrder : jQuery order reverser plugin - * - * Written by Corey H Maass for Arc90 - * (c) Arc90, Inc. - * - * http://www.arc90.com - * http://lab.arc90.com/2008/05/22/jquery-reverse-order-plugin/#licensing - * - * Licensed under: - * Creative Commons Attribution-Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/us/ - * - * Gotta love a plugin with more comments than actual code. :-) - * items need to all be in the same parent like: - *
              - *
              item 1
              - *
              item 2
              - *
              item 3
              - *
              - * - * Then call the plugin with the items to reverse: - * $('.item').reverseOrder(); - * - */ - $.fn.reverseOrder = function() { - return this.each(function() { - var $ele = $(this); - $ele.prependTo($ele.parent()); - }); - }; - - - // History list - var initHistories = function(element, options) { - var $element = $(element); - options = $.extend({}, $element.data(), options); - var $list = $element.find('.histories-list'); - var ascOrder = true, expandAll = false; - $element.on('click', '.btn-reverse', function() { - $list.children('li').reverseOrder(); - ascOrder = !ascOrder; - $(this).find('.icon').toggleClass('icon-arrow-up', ascOrder).toggleClass('icon-arrow-down', !ascOrder); - }).on('click', '.btn-expand-all', function() { - var $icon = $(this).find('.icon'); - expandAll = !expandAll; - $icon.toggleClass('icon-plus', !expandAll).toggleClass('icon-minus', expandAll); - $list.children('li').toggleClass('show-changes', expandAll); - }).on('click', '.btn-expand', function() { - $(this).closest('li').toggleClass('show-changes'); - }).on('click', '.btn-strip', function() { - var $btn = $(this); - var $icon = $btn.find('.icon'); - var isOriginal = $icon.hasClass('icon-code'); - $icon.toggleClass('icon-code', !isOriginal).toggleClass('icon-text', isOriginal); - $btn.attr('title', isOriginal ? options.original : options.textdiff); - $btn.closest('li').toggleClass('show-original', isOriginal); - }); - $list.find('.btn-strip').attr('title', options.original); - - var $commentModal = $element.find('.modal-comment').modal({ - show: false, - backdrop: false, - position: function(modal) { - var bouding = $list[0].getBoundingClientRect(); - var $dialog = modal.$element.find('.modal-dialog'); - var modalWidth = Math.min(670, $dialog.outerWidth()); - var modalHeight = $dialog.outerHeight(); - return { - width: modalWidth, - top: Math.min(window.innerHeight - modalHeight, bouding.top - 40), - left: bouding.left + bouding.width - modalWidth, - margin: 0 - }; - } - }); - $element.on('click', '.btn-comment', function(e) { - $commentModal.modal('toggle'); - e.preventDefault(); - }).on('click', '.btn-edit-comment,.btn-hide-form', function() { - $(this).closest('li').toggleClass('show-form'); - }); - - var $commentEditForm = $element.find('.comment-edit-form'); - $commentEditForm.ajaxForm({ - success: function(response, textStatus, jqXHR, $form) { - setTimeout(function() { - $commentEditForm.closest('li').removeClass('show-form'); - }, 2000) - } - }) - }; - - $.fn.histories = function(options) { - return this.each(function() { - initHistories(this, options); - }); - }; - - $(function() { - $('.histories').histories(); - }); - - - // Sidebar - var toggleSiebarTask = 0; - var sidebarId = 0; - $.toggleSidebar = function(toggle) { - var $sidebar = $('#sidebar'); - if (!$sidebar.length) return; - - var $main = $('main'); - if (toggle === undefined) toggle = $main.hasClass('hide-sidebar'); - else if (toggle && !$main.hasClass('hide-sidebar')) return; - $main.toggleClass('hide-sidebar', !toggle); - - clearTimeout(toggleSiebarTask); - if (toggle) { - $sidebar.addClass('showing'); - toggleSiebarTask = setTimeout(function() { - $sidebar.removeClass('showing'); - $sidebar.trigger('sidebar.toggle', toggle); - }, 210); - } else { - $sidebar.trigger('sidebar.toggle', toggle); - } - $.zui.store.set(sidebarId, toggle); - }; - var initSidebar = function() { - var $sidebar = $('#sidebar'); - if (!$sidebar.length || $sidebar.data('init')) return; - sidebarId = 'sidebar:' + ($sidebar.data('id') || (config.module + '/' + config.method)); - var $main = $('main'); - $main.on('click', '.sidebar-toggle', function() { - $.toggleSidebar($main.hasClass('hide-sidebar')); - }); - var initToggle = $.zui.store.get(sidebarId, $sidebar.data('hide') !== false); - $sidebar.addClass('no-animate'); - $.toggleSidebar(initToggle); - setTimeout(function() { - $sidebar.removeClass('no-animate'); - }, 500); - $sidebar.data('init', 1); - return true; - }; - if (!initSidebar()) $(initSidebar); - - - // Query box - $.toggleQueryBox = function(toggle) { - var $queryBox = $('#queryBox'); - if (!$queryBox.length) return; - if (toggle === undefined) toggle = !$queryBox.hasClass('show'); - $queryBox.toggleClass('show', !!toggle); - - if (!$queryBox.data('init')) { - $queryBox.addClass('load-indicator loading').data('init', 1); - $.get($.createLink('search', 'buildForm'), function(data) { - $queryBox.html(data).removeClass('loading'); - }); - } - - $('.querybox-toggle').toggleClass('querybox-opened', toggle); - }; - - $(function() { - var $queryBox = $('#queryBox'); - if (!$queryBox.length) return; - $(document).on('click', '.querybox-toggle', function() { - $.toggleQueryBox(); - }); - if ($queryBox.hasClass('show')) { - $.toggleQueryBox(true); - } - }); - - - // Set color picker - $.extend($.fn.colorPicker.Constructor.DEFAULTS, { - colors: ['#3DA7F5', '#75C941', '#2DBDB2', '#797EC9', '#FFAF38', '#FF4E3E'] - }); - - - // Init modal trigger for iframe class - $(function() - { - $('a.iframe').each(function() { - var $a = $(this); - if ($a.parents('[data-ride="table"]').length) return; - $a.modalTrigger(); - }); - }); - - - // Expand or collapse text - var limitText = function() { - var $text = $(this); - var fullText, limitText; - var options = $.extend({ - limitSize: 40, - // toggleBtn: null, - suffix: '…' - }, $text.data()); - - var text = $text.text(); - if (text.length > options.limitSize) { - fullText = text; - limitText = text.substr(0, options.limitSize) + options.suffix; - $text.text(limitText).addClass('limit-text-on'); - - var $toggleBtn = options.toggleBtn ? $(options.toggleBtn) : $text.next('.text-limit-toggle'); - $toggleBtn.text($toggleBtn.data('textExpand')); - $toggleBtn.on('click', function() { - var isLimitOn = $text.toggleClass('limit-text-on').hasClass('limit-text-on'); - $text.text(isLimitOn ? limitText : fullText); - $toggleBtn.text($toggleBtn.data(isLimitOn ? 'textExpand' : 'textCollapse')); - }); - } else { - (options.toggleBtn ? $(options.toggleBtn) : $text.next('.text-limit-toggle')).hide(); - } - }; - $.fn.textLimit = function() { - return this.each(limitText); - }; - $(function() { - $('.text-limit').textLimit(); - }); - - /** - * Fixed table head in div box. - * - * @param string $boxObj - * @access public - * @return void - */ - $.fixedTableHead = window.fixedTableHead = function(boxObj) - { - var $box = $(boxObj); - $box.scroll(function() - { - var $tableBox = $box; - var hasFixed = $box.find('.table-fixed-head').size() > 0; - if(!hasFixed) - { - $box.css('position', 'relative'); - if($box.find('table').size() == 1) - { - var fixed = "" + $box.find('table thead').html() + '
              '; - $box.prepend(fixed); - var $fixTable = $box.find('table.table-fixed-head'); - $fixTable.addClass($box.find('table:last').attr('class')); - var $dataTable = $box.find('table:last thead th'); - $fixTable.find('thead th').each(function(i){$fixTable.find('thead th').eq(i).width($dataTable.eq(i).width());}) - } - } - $box.find('table.table-fixed-head').css('top',$box.scrollTop()); - }); - }; - - - // Set tr[data-url] clickable - $(document).on('click', 'tr[data-url]', function() { - var $this = $(this); - var url = $this.data('href') || $this.data('url'); - if (url) window.location.href = url; - }); - - - // Check onlybody modal frame - if (config.onlybody === 'yes' && self === parent) { - window.location.href = window.location.href.replace('?onlybody=yes', '').replace('&onlybody=yes', ''); - } - - // Add module class to body element - $(function() { - $('body').addClass('m-{currentModule}-{currentMethod}'.format(config)); - }); - - - // Adjust #subNavbar position - var $subNavbar, $pageNav, $pageActions, $subNavbarNav, subNavbarNavWidth; - var adjustSubNavbar = function() { - if (!$subNavbar) { - $subNavbar = $('#subNavbar'); - $pageNav = $('#pageNav'); - $pageActions = $('#pageActions'); - $subNavbarNav = $subNavbar.children('.nav'); - subNavbarNavWidth = $subNavbarNav.outerWidth(); - } - var subNavbarWidth = $subNavbar.outerWidth(); - var pageNavWidth = $pageNav.outerWidth() || 0; - var pageActionsWidth = $pageActions.outerWidth() || 0; - - pageNavWidth = pageNavWidth ? (pageNavWidth + 15) : 0; - pageActionsWidth = pageActionsWidth ? (pageActionsWidth + 15) : 0; - if (!pageNavWidth && !pageActionsWidth) { - $subNavbarNav.css({ - maxWidth: null, - left: null, - position: 'static' - }); - return; - } - var maxWidth = Math.max(300, subNavbarWidth - pageNavWidth - pageActionsWidth); - var realWidth = Math.min(maxWidth, subNavbarNavWidth); - var normalLeft = (subNavbarWidth - realWidth)/2; - var bestLeft = (pageNavWidth && normalLeft < pageNavWidth) ? pageNavWidth : (pageActionsWidth && normalLeft < pageActionsWidth) ? (subNavbarWidth - realWidth - pageActionsWidth) : 0; - $subNavbarNav.css({ - maxWidth: maxWidth, - left: bestLeft ? (bestLeft - normalLeft) : 0, - position: 'relative' - }); - }; - - - // Hanlde window resize event - var handleWindowResize = function() { - $.cookie('windowWidth', window.innerWidth); - $.cookie('windowHeight', window.innerHeight); - adjustSubNavbar(); - }; - $(handleWindowResize); - $(window).on('resize', handleWindowResize); - - - // Handle Detail view Hotkeys - var gotoBack = function() { - var backLink = $('#back').attr('href'); - if (backLink) window.location.href = backLink; - }; - var ajaxSendLastNext = function() { - if(!$.cookie('ajax_lastNext')) - { - $.cookie('ajax_lastNext', 'on', {expires: config.cookieLife, path: config.webRoot}); - $.ajaxSendScore('lastNext'); - } - }; - var gotoPre = function() { - var preLink = $('#prevPage').attr('href'); - if (preLink) window.location.href = preLink; - ajaxSendLastNext(); - }; - var gotoNext = function() { - var nextLink = $('#nextPage').attr('href'); - if (nextLink) window.location.href = nextLink; - ajaxSendLastNext(); - }; - $(document).on('keydown', function(e) { - if (e.altKey && e.keyCode === 38) { // Alt + up - gotoBack(); - } else if (e.keyCode === 37) { // left - gotoPre(); - } else if (e.keyCode === 39) { // right - gotoNext(); - } - }); - - // Init tree - $('.tree').tree({initialState: 'preserve'}); - - - // Bing closeModalMethod - $.closeModal = function(callback, redirect, modal) { - $.zui.closeModal(modal, callback, redirect); - }; - - - // Handle fade effection - $(function() { - var $main = $('#main,#mainContent'); - if ($main.hasClass('fade')) { - setTimeout(function() { - $main.addClass('in'); - }, 200); - } - }); - - - // Fix controls border in input-group - var fixInputGroup = function(element) { - var $element = $(element); - var $last, lastType; - var $controls = $element.children('.input-group-addon,.form-control:not(.chosen-controled),.chosen-container,.btn,.input-control,.input-group-btn,.datepicker-wrapper'); - $controls.each(function(idx) { - var $this = $(this); - var type = $this.is('.input-group-addon') ? 'addon' : $this.is('.chosen-container') ? 'chosen' : $this.is('.btn') ? 'btn' : $this.is('.input-control,.datepicker-wrapper') ? 'insideInput' : $this.is('.input-group-btn') ? 'insideBtn' : 'input'; - var isFirst = !$last; - var isLast = idx === ($controls.length - 1); - var style = {}; - style.borderTopLeftRadius = 0; - style.borderBottomLeftRadius = 0; - style.borderTopRightRadius = 0; - style.borderBottomRightRadius = 0; - if (isFirst) { - if(type === 'addon') style.borderLeftWidth = 1; - style.borderTopLeftRadius = 2; - style.borderBottomLeftRadius = 2; - } - if (isLast) { - if(type === 'addon') style.borderRightWidth = 1; - style.borderTopRightRadius = 2; - style.borderBottomRightRadius = 2; - } - if (lastType) { - if ((lastType === 'chosen' || lastType === 'input' || lastType === 'btn' || lastType === 'insideInput' || lastType === 'insideBtn') - && (type === 'chosen' || lastType === 'input' || type === 'btn' || type === 'insideInput' || type === 'insideBtn')) { - style.borderLeftColor = 'transparent'; - } - } - (type === 'insideBtn' ? $this.find('.btn') : type === 'insideInput' ? $this.find('.form-control') : type === 'chosen' ? $this.find('.chosen-single,.chosen-choices') : $this).css(style); - $last = $this; - lastType = type; - }); - }; - - $.fn.fixInputGroup = function() { - return this.each(function() { - fixInputGroup(this); - }); - } - - $(function() { - $('.input-group,.btn-group').fixInputGroup(); - }); -}(jQuery)); +function(t){function e(e){if("string"==typeof e.data){var i=e.handler,n=e.data.toLowerCase().split(" ");e.handler=function(e){if(this===e.target||!/textarea|select/i.test(e.target.nodeName)&&"text"!==e.target.type){var s="keypress"!==e.type&&t.hotkeys.specialKeys[e.which],o=String.fromCharCode(e.which).toLowerCase(),a="",r={};e.altKey&&"alt"!==s&&(a+="alt+"),e.ctrlKey&&"ctrl"!==s&&(a+="ctrl+"),e.metaKey&&!e.ctrlKey&&"meta"!==s&&(a+="meta+"),e.shiftKey&&"shift"!==s&&(a+="shift+"),s?r[a+s]=!0:(r[a+o]=!0,r[a+t.hotkeys.shiftNums[o]]=!0,"shift+"===a&&(r[t.hotkeys.shiftNums[o]]=!0));for(var l=0,h=n.length;l","/":"?","\\":"|"}},t.each(["keydown","keyup","keypress"],function(){t.event.special[this]={add:e}})}(jQuery),function(t){"use strict";function e(e,i){if(e===!1)return e;if(!e)return i;e===!0?e={add:!0,"delete":!0,edit:!0,sort:!0}:"string"==typeof e&&(e=e.split(","));var n;return t.isArray(e)&&(n={},t.each(e,function(e,i){t.isPlainObject(i)?n[i.action]=i:n[i]=!0}),e=n),t.isPlainObject(e)&&(n={},t.each(e,function(e,i){i?n[e]=t.extend({type:e},a[e],t.isPlainObject(i)?i:null):n[e]=!1}),e=n),i?t.extend(!0,{},i,e):e}function i(e,i,n){return i=i||e.type,t(n||e.template).addClass("tree-action").attr(t.extend({"data-type":i,title:e.title||""},e.attr)).data("action",e)}var n="zui.tree",s=0,o=function(e,i){this.name=n,this.$=t(e),this.getOptions(i),this._init()},a={sort:{template:''},add:{template:''},edit:{template:''},"delete":{template:''}};o.DEFAULTS={animate:null,initialState:"normal",toggleTemplate:''},o.prototype.add=function(e,i,n,s,o){var a,r=t(e),l=this.options;if(r.is("li")?(a=r.children("ul"),a.length||(a=t("
                "),r.append(a),this._initList(a,r))):a=r,a){var h=this;t.isArray(i)||(i=[i]),t.each(i,function(e,i){var n=t("
              • ").data(i).appendTo(a);void 0!==i.id&&n.attr("data-id",i.id);var s=l.itemWrapper?t(l.itemWrapper===!0?'
              • ').append(i(h.add,"add",h.add.templateInList)).appendTo(n)}h.sort&&n.sortable(t.extend({dragCssClass:"tree-drag-holder",trigger:".sort-handler",selector:"li:not(.tree-action-item)",finish:function(t){r.callEvent("action",{action:h.sort,$list:n,target:t.target,item:a})}},h.sort.options,t.isPlainObject(this.options.sortable)?this.options.sortable:null))}s&&(s.hasClass("open")||a&&a.open)&&s.addClass("open in")},o.prototype._initItem=function(n,s,o,a){if(void 0===s){var r=n.prev("li");s=r.length?r.data("idx")+1:1}if(o=o||n.closest("ul"),n.attr("data-idx",s).removeClass("tree-single-item"),!n.data("id")){var l=s;o.hasClass("tree")||(l=o.parent("li").data("id")+"-"+l),n.attr("data-id",l)}a=a||n.data();var h=e(a.actions,this.actions);if(h){var c=n.find(".tree-actions");c.length||(c=t('
                ').appendTo(this.options.itemWrapper?n.find(".tree-item-wrapper"):n),t.each(h,function(t,e){e&&c.append(i(e,t))}))}var d=n.children("ul");d.length&&this._initList(d,n,s,a)},o.prototype._init=function(){var i=this.options,o=this;this.actions=e(i.actions),this.$.addClass("tree"),i.animate&&this.$.addClass("tree-animate"),this._initList(this.$);var a=i.initialState,r=t.zui&&t.zui.store&&t.zui.store.enable;r&&(this.selector=n+"::"+(i.name||"")+"#"+(this.$.attr("id")||s++),this.store=t.zui.store[i.name?"get":"pageGet"](this.selector,{})),"preserve"===a&&(r?this.isPreserve=!0:this.options.initialState=a="normal"),this.reload(i.data),r&&(this.isPreserve=!0),"expand"===a?this.expand():"collapse"===a&&this.collapse(),this.$.on("click",'.list-toggle,a[href="#"],.tree-toggle',function(e){var i=t(this),n=i.parent("li");o.callEvent("hit",{target:n,item:n.data()}),o.toggle(n),i.is("a")&&e.preventDefault()}).on("click",".tree-action",function(){var e=t(this),i=e.data();if(i.action&&(i=i.action),"sort"!==i.type){var n=e.closest("li:not(.tree-action-item)");o.callEvent("action",{action:i,target:this,$item:n,item:n.data()})}})},o.prototype.preserve=function(e,i,n){if(this.isPreserve)if(e)i=i||e.data("id"),n=void 0===n&&e.hasClass("open"),n?this.store[i]=n:delete this.store[i],this.store.time=(new Date).getTime(),t.zui.store[this.options.name?"set":"pageSet"](this.selector,this.store);else{var s=this;this.store={},this.$.find("li").each(function(){s.preserve(t(this))})}},o.prototype.expand=function(t,e,i){t?(t.addClass("open"),!e&&this.options.animate?setTimeout(function(){t.addClass("in")},10):t.addClass("in")):t=this.$.find("li.has-list").addClass("open in"),i||this.preserve(t),this.callEvent("expand",t,this)},o.prototype.show=function(e,i,n){var s=this;e.each(function(){var e=t(this);if(s.expand(e,i,n),e)for(var o=e.parent("ul");o&&o.length&&!o.hasClass("tree");){var a=o.parent("li");a.length?(s.expand(a,i,n),o=a.parent("ul")):o=!1}})},o.prototype.collapse=function(t,e,i){t?!e&&this.options.animate?(t.removeClass("in"),setTimeout(function(){t.removeClass("open")},300)):t.removeClass("open in"):t=this.$.find("li.has-list").removeClass("open in"),i||this.preserve(t),this.callEvent("collapse",t,this)},o.prototype.toggle=function(t){var e=t&&t.hasClass("open")||t===!1||void 0===t&&this.$.find("li.has-list.open").length;this[e?"collapse":"expand"](t)},o.prototype.getOptions=function(e){this.options=t.extend({},o.DEFAULTS,this.$.data(),e),null===this.options.animate&&this.$.hasClass("tree-animate")&&(this.options.animate=!0)},o.prototype.toData=function(e,i){t.isFunction(e)&&(i=e,e=null),e=e||this.$;var n=this;return e.children("li:not(.tree-action-item)").map(function(){var e=t(this),s=e.data();delete s["zui.droppable"];var o=e.children("ul");return o.length&&(s.children=n.toData(o)),t.isFunction(i)?i(s,e):s}).get()},o.prototype.callEvent=function(e,i){var n;return t.isFunction(this.options[e])&&(n=this.options[e](i,this)),this.$.trigger(t.Event(e+"."+this.name,i)),n},t.fn.tree=function(e,i){return this.each(function(){var s=t(this),a=s.data(n),r="object"==typeof e&&e;a||s.data(n,a=new o(this,r)),"string"==typeof e&&a[e](i)})},t.fn.tree.Constructor=o,t(function(){t('[data-ride="tree"]').tree()})}(jQuery),function(t){"use strict";var e="zui.colorPicker",i='
                ',n={zh_cn:{errorTip:"不是有效的颜色值"},zh_tw:{errorTip:"不是有效的顏色值"},en:{errorTip:"Not a valid color value"}},s=function(i,n){this.name=e,this.$=t(i),this.getOptions(n),this.init()};s.DEFAULTS={colors:["#00BCD4","#388E3C","#3280fc","#3F51B5","#9C27B0","#795548","#F57C00","#F44336","#E91E63"],pullMenuRight:!0,wrapper:"btn-wrapper",tileSize:30,lineCount:5,optional:!0,tooltip:"top",icon:"caret-down",updateBtn:"auto"},s.prototype.init=function(){var e=this,n=e.options,s=e.$,o=s.parent(),a=!1;o.hasClass("colorpicker")?e.$picker=o:(e.$picker=t(n.template||i),a=!0),e.$picker.addClass(n.wrapper).find(".cp-title").toggle(void 0!==n.title).text(n.title),e.$menu=e.$picker.find(".dropdown-menu").toggleClass("pull-right",n.pullMenuRight),e.$btn=e.$picker.find(".btn.dropdown-toggle"),e.$btn.find(".ic").addClass("icon-"+n.icon),n.btnTip&&e.$picker.attr("data-toggle","tooltip").tooltip({title:n.btnTip,placement:n.tooltip,container:"body"}),s.attr("data-provide",null),a&&s.after(e.$picker),e.colors={},t.each(n.colors,function(i,n){if(t.zui.Color.isColor(n)){var s=new t.zui.Color(n);e.colors[s.toCssStr()]=s}}),e.updateColors(),e.$picker.on("click",".cp-tile",function(){e.setValue(t(this).data("color"))});var r=function(){var i=s.val(),o=t.zui.Color.isColor(i);s.parent().toggleClass("has-error",!(o||n.optional&&""===i)),o?e.setValue(i,!0):n.optional&&""===i?s.tooltip("hide"):s.is(":focus")||s.tooltip("show",n.errorTip)};s.is("input:not([type=hidden])")?(n.tooltip&&s.attr("data-toggle","tooltip").tooltip({trigger:"manual",placement:n.tooltip,tipClass:"tooltip-danger",container:"body"}),s.on("keyup paste input change",r)):s.appendTo(e.$picker),r()},s.prototype.addColor=function(e){e instanceof t.zui.Color||(e=new t.zui.Color(e));var i=e.toCssStr(),n=this.options;this.colors[i]||(this.colors[i]=e);var s=t('
                ',{titile:e}).data("color",e).css({color:e.contrast().toCssStr(),background:i,"border-color":e.luma()>.43?"#ccc":"transparent"}).attr("data-color",i);this.$menu.append(t("
              • ").css({width:n.tileSize,height:n.tileSize}).append(s)),n.optional&&this.$menu.find(".cp-tile.empty").parent().detach().appendTo(this.$menu)},s.prototype.updateColors=function(e){var i=(this.$picker,this.$menu.children("li:not(.heading)").remove()),n=this.options,e=e||this.colors,s=this,o=0;if(t.each(e,function(t,e){s.addColor(e),o++}),n.optional){var a=t('
              • ').css({width:n.tileSize,height:n.tileSize});this.$menu.append(a),o++}i.css("width",Math.min(o,n.lineCount)*n.tileSize+6)},s.prototype.setValue=function(e,i){var n=this,s=n.options,o=n.$btn;n.$menu.find(".cp-tile.active").removeClass("active");var a="",r=s.updateBtn;if("auto"===r){var l=o.find(".color-bar");r=!l.length||function(t){l.css("background",t||"")}}if(e){var h=new t.zui.Color(e);a=h.toCssStr().toLowerCase(),r&&(t.isFunction(r)?r(a,o,n):o.css({background:a,color:h.contrast().toCssStr(),borderColor:h.luma()>.43?"#ccc":a})),n.colors[a]||n.addColor(h),i||n.$.val().toLowerCase()===a||n.$.val(a).trigger("change"),n.$menu.find('.cp-tile[data-color="'+a+'"]').addClass("active"),n.$.tooltip("hide"),n.$.trigger("colorchange",h)}else r&&(t.isFunction(r)?r(null,o,n):o.attr("style",null)),i||""===n.$.val()||n.$.val(a).trigger("change"),s.optional&&n.$.tooltip("hide"),n.$menu.find(".cp-tile.empty").addClass("active"),n.$.trigger("colorchange",null);s.updateBorder&&t(s.updateBorder).css("border-color",a),s.updateBackground&&t(s.updateBackground).css("background-color",a),s.updateColor&&t(s.updateColor).css("color",a),s.updateText&&t(s.updateText).text(a)},s.prototype.getOptions=function(e){var i=t.extend({},s.DEFAULTS,this.$.data(),e);"string"==typeof i.colors&&(i.colors=i.colors.split(","));var o=(i.lang||t.zui.clientLang()).toLowerCase();i.errorTip||(i.errorTip=n[o].errorTip),t.fn.tooltip||(i.btnTip=!1),this.options=i},t.fn.colorPicker=function(i){return this.each(function(){var n=t(this),o=n.data(e),a="object"==typeof i&&i;o||n.data(e,o=new s(this,a)),"string"==typeof i&&o[i]()})},t.fn.colorPicker.Constructor=s,t(function(){t('[data-provide="colorpicker"]').colorPicker()})}(jQuery),function(t,e){function i(t){return t===e&&(t=n+=1),s[t%s.length]}var n=0,s=["#00a9fc","#ff5d5d","#fdc137","#00da88","#7ec5ff","#8666b8","#bd7b46","#ff9100","#ff3d00","#f57f17","#00e5ff","#00b0ff","#2979ff","#3d5afe","#651fff","#d500f9","#f50057","#ff1744"];jQuery.fn.tableChart=function(){t(this).each(function(){var e=t(this),n=e.data(),s=n.chart||"pie",o=t(n.target);if(o.length){var a=null;if("pie"===s){n=t.extend({scaleShowLabels:!0,scaleLabel:"<%=label%>: <%=value%>"},n);var r=[],l=e.find("tbody > tr").each(function(e){var n=t(this),s=i();n.attr("data-id",e).find(".chart-color-dot").css("background",s),r.push({label:n.find(".chart-label").text(),value:parseInt(n.find(".chart-value").text()),color:s,id:e})});r.length>1?n.scaleLabelPlacement="outside":1===r.length&&(n.scaleLabelPlacement="inside",r.push({label:"",value:r[0].value/2e3,color:"#fff",showLabel:!1})),a=o.pieChart(r,n),o.on("mousemove",function(t){var e=a.getSegmentsAtEvent(t);l.removeClass("active"),e.length&&l.filter('[data-id="'+e[0].id+'"]').addClass("active")})}else if("bar"===s){var h=i(),c=[],d={label:e.find("thead .chart-label").text(),color:h,data:[]},l=e.find("tbody > tr").each(function(e){var i=t(this);c.push(i.find(".chart-label").text()),d.data.push(parseInt(i.find(".chart-value").text())),i.find(".chart-color-dot").css("background",h)}),r={labels:c,datasets:[d]};c.length&&(n.barValueSpacing=5),a=o.barChart(r,n)}else if("line"===s){var h=i(),c=[],d={label:e.find("thead .chart-label").text(),color:h,data:[]},l=e.find("tbody > tr").each(function(e){var i=t(this);c.push(i.find(".chart-label").text()),d.data.push(parseInt(i.find(".chart-value").text())),i.find(".chart-color-dot").css("background",h)}),r={labels:c,datasets:[d]};c.length&&(n.barValueSpacing=5),a=o.lineChart(r,n)}null!==a&&e.data("zui.chart",a)}})};var o=function(i,n){var s=t(i),o=s.is("canvas")?s:s.find("canvas"),a=t.extend({value:0,color:"#006af1",backColor:"#E9F2FB",doughnut:!0,doughnutSize:85,width:20,height:20,showTip:!1,name:"",tipTemplate:"<%=value%>%",animation:"auto",realValue:parseFloat(s.find(".progress-value").text())},n,s.data()),r=o.length;r||(o=t("").appendTo(s)),o.attr("width")!==e?a.width=o.attr("width"):o.attr("width",a.width),o.attr("height")!==e?a.height=o.attr("height"):o.attr("height",a.height),r||8!=t.zui.browser.ie||G_vmlCanvasManager.initElement(o[0]),"auto"===a.animation&&(a.animation=a.width>30),a.value=Math.max(0,Math.min(100,a.value)),s.addClass("progress-pie-"+a.width);var l=[{value:a.value,label:a.name,color:a.color,circleBeginEnd:!0},{value:100-a.value,label:"",color:a.backColor}];o[a.doughnut?"doughnutChart":"pieChart"](l,t.extend({segmentShowStroke:!1,animation:a.animation,showTooltips:a.showTip,tooltipTemplate:a.tipTemplate,percentageInnerCutout:a.doughnutSize,reverseDrawOrder:!0,animationEasing:"easeInOutQuart",onAnimationProgress:a.realValue?function(t){s.find(".progress-value").text(Math.floor(a.realValue*t))}:e,onAnimationComplete:a.realValue?function(t){s.find(".progress-value").text(a.realValue)}:e},a.chartOptions))};jQuery.fn.progressPie=function(e){t(this).each(function(){var i=t(this),n=i.closest(".tab-pane");n.length&&!n.hasClass("active")?t('[data-toggle="tab"][data-target="#'+n.attr("id")+'"]').one("shown.zui.tab",function(){o(i,e)}):o(this,e)})},t(function(){t(".table-chart").tableChart();var e=t(".progress-pie");e.length>100?setTimeout(function(){e.progressPie()},1e3):e.progressPie()})}(jQuery,void 0),function(t){jQuery.fn.sparkline=function(e){t(this).each(function(){var i=t(this),n=t.extend({values:i.attr("values"),width:i.width()-4,height:i.height()-4},i.data(),e),s=n.height,o=[],a=n.width,r=n.values.split(","),l=0;for(var h in r){var c=parseFloat(r[h]);NaN!=c&&(o.push(c),l=Math.max(c,l))}var d=Math.min(l,30),u=(Math.ceil(l/d),Math.min(a,Math.max(10,o.length*a/30))),p=i.children("canvas");p.length||(i.append(''),p=i.children("canvas")),p.attr("width",u).attr("height",s);var f={labels:o,datasets:[{fillColor:"rgba(0,0,255,0.05)",strokeColor:"#0054EC",pointColor:"rgba(255,136,0,1)",pointStrokeColor:"#fff",data:o}]},g={animation:!0,scaleOverride:!0,scaleStepWidth:Math.ceil(l/10),scaleSteps:10,scaleStartValue:0,showScale:!1,showTooltips:!1,pointDot:!1,scaleShowGridLines:!1,datasetStrokeWidth:1},m=t(p).lineChart(f,g);i.data("sparklineChart",m)})},t(function(){t(".sparkline").sparkline()})}(jQuery),function(t){t(function(){t.fn.fixedDate=function(){return t(this).each(function(){var e=t(this);"0000-00-00"==e.val()&&e.focus(function(){"0000-00-00"==e.val()&&e.val("").datetimepicker("update")}).blur(function(){""==e.val()&&e.val("0000-00-00")})})};var e={language:t("html").attr("lang"),weekStart:1,todayBtn:1,autoclose:1,todayHighlight:1,startView:2,forceParse:0,showMeridian:1,format:"yyyy-mm-dd hh:ii",startDate:"1970-1-1"},i=t.extend({},e,{minView:2,format:"yyyy-mm-dd"}),n=t.extend({},e,{startView:1,minView:0,maxView:1,format:"hh:ii"});t(".datepicker-wrapper").click(function(){t(this).find(".form-date, .form-datetime, .form-time").datetimepicker("show").focus()}),window.datepickerOptions=e,t.fn.datepicker=function(e){return this.datetimepicker(t.extend({},i,e))},t.fn.timepicker=function(e){return this.datetimepicker(t.extend({},n,e))},t.fn.datepickerAll=function(){return this.find(".form-datetime").fixedDate().datetimepicker(e),this.find(".form-date").fixedDate().datepicker(),this.find(".form-time").fixedDate().timepicker(),this},t("body").datepickerAll()})}(jQuery),function(t){var e=function(e,i){i=t.extend({idStart:0,idEnd:9,chosen:!0,datetimepicker:!0,colorPicker:!0,hotkeys:!0},i,e.data());var n=e.find(".template");!n.length&&i.template&&(n=t(i.template));var s=0,o=0,a=function(t){t.is("select.chosen")?t.next(".chosen-container").find("input").focus():t.focus()},r=function(t){var i=e.find("[data-ctrl-index]:focus,.chosen-container-active").first();if(i.length){if(i.is(".chosen-container-active")){if(i.hasClass("chosen-with-drop")&&("down"===t||"up"===t))return;i=i.prev("select.chosen")}var n=i.data("ctrlIndex"),r=i.closest("tr").data("row");"down"===t?r0?r-=1:r=o-1:"left"===t?n>0?n-=1:n=s-1:"right"===t&&(n").html(a);return r.attr("data-row",e).addClass(n.attr("class")).removeClass("template"),i.rowCreator&&i.rowCreator(r,e,i),s?s.after(r):h.append(r),c(r),r};t.extend(l,{createRow:u,template:d});for(var p=i.idStart;p<=i.idEnd;++p)u(p)}else c(e);e.on("click",".btn-copy",function(){var e=t(this),i=t(e.data("copyFrom")).val(),n=t(e.data("copyTo")).val(i).addClass("highlight");setTimeout(function(){n.removeClass("highlight")},2e3)}),i.hotkeys&&t(document).on("keydown",function(t){var e={"Ctrl+#37":"left","Ctrl+#39":"right","#38":"up","#40":"down","Ctrl+#38":"up","Ctrl+#40":"down"},i=[];t.ctrlKey&&i.push("Ctrl"),i.push("#"+t.keyCode);var n=e[i.join("+")];n&&(r(n),t.ctrlKey&&(t.stopPropagation(),t.preventDefault()))}),e.data("zui.batchActionForm",l)};t.fn.batchActionForm=function(i){return this.each(function(){e(t(this),i)})}}(jQuery),function(t,e){"use strict";var i="zui.table",n={zh_cn:{selectedItems:"已选择 {0} 项",attrTotal:"{0}总计 {1}"},zh_tw:{selectedItems:"已选择 {0} 项",attrTotal:"{0}总计 {1}"},en:{selectedItems:"Seleted {0} items",attrTotal:"{0} total {1}"}},s=function(e,o){var a=this;a.name=i;var r=a.$=t(e);o=a.options=t.extend({},s.DEFAULTS,this.$.data(),o);var l=o.lang||"zh_cn";a.lang=t.isPlainObject(l)?t.extend(!0,{},n[l.lang||t.zui.clientLang()],l):n[l],r.attr("id")||r.attr("id","table-"+t.zui.uuid()),o.checkable&&(r.on("click",".check-all",function(){a.checkAll(!t(this).hasClass("checked"))}).on("click","tbody>tr",function(e){t(e.target).closest(".btn,a,.not-check").length||a.checkRow(t(this))}).on("click",'tbody input[type="checkbox"],tbody label[for]',function(e){e.stopPropagation();var i=t(this);i.is("label")&&(i=i.closest(".checkbox-primary").find('input[type="checkbox"]')),a.checkRow(i.closest("tr"),i.is(":checked"))}),o.selectable&&r.selectable(t.extend({},{selector:"tbody>tr",selectClass:"",trigger:".c-id",clickBehavior:"multi",listenClick:!1,select:function(t){a.checkRow(t.target,!0)},unselect:function(t){a.checkRow(t.target,!1)},rangeStyle:{border:"1px solid #006af1",backgroundColor:"rgba(50, 128, 252, 0.2)",borderRadius:"2px"}},t.isPlainObject(o.selectable)?o.selectable:null)));var h=a.$form=r.is("form")?r:r.find("form");h.length&&(o.ajaxForm?h.ajaxForm(t.isPlainObject(o.ajaxForm)?o.ajaxForm:null):h.on("click","[data-form-action]",function(){h.attr("action",t(this).data("formAction")).submit()})),(o.fixFooter||o.fixHeader)&&(a.pageFooterHeight=t("#footer").outerHeight(),a.updateFixUI(),t(window).on("scroll resize",function(){a.updateFixUI()}).on("sidebar.toggle",function(){setTimeout(function(){a.updateFixUI()},200)})),o.group&&(r.on("click",".group-toggle",function(){a.toggleRowGroup(t(this).closest("tr").data("id"))}),t(document).on("click",".group-collapse-all",function(){a.toggleGroups(!1)}).on("click",".group-expand-all",function(){a.toggleGroups(!0)})),a.defaultStatistic=r.find(".table-statistic").html(),a.updateStatistic(),a.initModals(),a.checkItems={}};s.prototype.reload=function(e){var i=this,n=i.options,s=n.replaceId;if(!s)return e&&e();"self"===s&&(s=i.$.attr("id"));var o=(t(s),t("
                "));i.$.addClass("load-indicator loading"),o.load(window.location.href+" #"+s,function(){i.$.empty().html(o.children().html()).removeClass("load-indicator loading"),i.updateStatistic(),i.initModals(),i.$.datepickerAll();var s=i.$.find("tbody>tr"),a=!1;t.each(i.checkItems,function(t,e){e&&(i.checkRow(s.filter('[data-id="'+t+'"]'),!0,!0),a=!0)}),a&&i.updateCheckUI(),e&&e(),n.afterReload&&n.afterReload()})},s.prototype.initModals=function(){var e=this,i=e.options,n=e.$.find(i.iframeModalTrigger);if(n.length){var s={type:"iframe",onHide:i.replaceId?function(){var n=t.cookie("selfClose");(1==n||i.hot)&&(t("#triggerModal").data("cancel-reload",1),e.reload(function(){t.cookie("selfClose",0)}))}:null};n.modalTrigger(s)}},s.prototype.getTable=function(){var t=this.$;return t.is("table")?t:t.find("table")},s.prototype.toggleGroups=function(e){var i=this,n={};i.$.find("tbody>tr").each(function(s){var o=t(this).closest("tr").data("id");n[o]||i.toggleRowGroup(o,e)})},s.prototype.toggleRowGroup=function(i,n){var s=this.$.find('tbody>tr[data-id="'+i+'"]'),o=s.filter(".group-summary"),a=n===e?!o.hasClass("hidden"):!!n;s.not(".group-summary").toggleClass("hidden",!a),o.toggleClass("hidden",a),t("body").toggleClass("table-group-collapsed",!this.$.find("tbody>tr.group-summary.hidden").length)},s.prototype.updateStatistic=function(){var i=this,n=i.$.find(".table-statistic");if(n.length){i.defaultStatistic===e&&(i.defaultStatistic=n.html());var s=i.statisticCols;if(!s&&s!==!1){s={};var o=!1;i.getTable().find("thead th").each(function(e){var i=t(this),n=i.data("statistic");n&&(o=!0,s[e]={format:n,name:i.text()})}),i.statisticCols=!!o&&s}var a=0;s&&t.each(s,function(t){s[t].total=0,s[t].checkedTotal=0}),i.$.find("tbody>tr").each(function(e){var i=t(this),n=i.hasClass("checked"),o=i.children("td");n&&a++,s&&t.each(s,function(t){var e=parseFloat(o.eq(t).text());isNaN(e)&&(e=0),s[t].total+=e,n&&(s[t].checkedTotal+=e)})});var r=[];if(a)r.push(i.lang.selectedItems.format(a));else if(i.defaultStatistic)return void n.html(i.defaultStatistic);s&&t.each(s,function(t){var e=s[t],n=e[a?"checkedTotal":"total"];e.format&&(n=e.format.format(n)),r.push(i.lang.attrTotal.format(e.name,n))}),n.html(r.join(", "))}},s.prototype.updateFixUI=function(t){var e=this,i=(new Date).getTime();return!t&&(e.lastUpdateCall&&clearTimeout(e.lastUpdateCall),!e.lastUpdateTime||i-e.lastUpdateTime<100)?void(e.lastUpdateCall=setTimeout(function(){e.updateFixUI(!0)},30)):(e.lastUpdateTime=i,e.lastUpdateCall&&(clearTimeout(e.lastUpdateCall),e.lastUpdateCall=null),e.options.fixHeader&&e.fixHeader(),void(e.options.fixFooter&&e.fixFooter()))},s.prototype.fixHeader=function(){var e=this,i=e.getTable(),n=i.find("thead"),s=n[0].getBoundingClientRect(),o=e.options.fixFooter,a=t.isFunction(o)?o(s,n):s.top<("number"==typeof o?o:-5),r=e.$.find("table.fixed-header-copy");if(a){r.length||(r=t('
                ').addClass(i.attr("class")).append(n.clone()).insertAfter(i)),r.css({top:0,left:s.left,position:"fixed",width:s.width});var l=r.find("th");n.find("th").each(function(e){l.eq(e).css("width",t(this).outerWidth())})}else r.remove()},s.prototype.fixFooter=function(){var e=this,i=e.$.find(".table-footer"),n=e.$.find("tbody")[0].getBoundingClientRect(),s=e.options.fixFooter;i.toggleClass("fixed-footer",!!o);var o=t.isFunction(s)?s(n,i):n.bottom>window.innerHeight-50-("number"==typeof s?s:e.pageFooterHeight||5);i.toggleClass("fixed-footer",!!o),o?i.css({bottom:e.pageFooterHeight,left:n.left,width:n.width}):i.css({width:""})},s.prototype.checkAll=function(e){var i=this,n=i.$.find("tbody>tr");n.each(function(){i.checkRow(t(this),e,!0)}),i.updateCheckUI()},s.prototype.checkRow=function(t,i,n){var s=t.find('input[type="checkbox"]');i===e&&(i=!s.is(":checked")),t.toggleClass("checked",i),this.checkItems[t.data("id")]=i,s.prop("checked",i),n||this.updateCheckUI()},s.prototype.updateCheckUI=function(){var e=this.$.find("tbody>tr"),i=!1,n=null,s=0,o=!1,a=e.length;e.each(function(e){var r=t(this);o=r.hasClass("checked"),r.toggleClass("row-check-begin",o&&!i),n&&n.toggleClass("row-check-end",!o&&i),o&&(s+=1),n=r,i=o,a===e+1&&r.toggleClass("row-check-end",o)}),this.$.toggleClass("has-row-checked",s>0).find(".check-all").toggleClass("checked",s===a),this.updateStatistic()},s.DEFAULTS={checkable:!0,ajaxForm:!1,selectable:!0,fixHeader:!0,fixFooter:!0,iframeWidth:900,replaceId:"self",hot:!1,iframeModalTrigger:".iframe"},t.fn.table=function(e){return this.each(function(){var n=t(this),o=n.data(i),a="object"==typeof e&&e;o||n.data(i,o=new s(this,a)),"string"==typeof e&&o[e]()})},s.NAME=i,t.fn.table.Constructor=s,t(function(){t('[data-ride="table"]').table()})}(jQuery,void 0),function(t,e,i){t.fn._ajaxForm=t.fn.ajaxForm;var n={timeout:e.config?e.config.timeout:0,dataType:"json",errControlStyle:{borderColor:"#D2322D"}},s="";t.fn.enableForm=function(e){return e===i&&(e=!0),this.each(function(){var i=t(this);i.find('[type="submit"]').attr("disabled",e?null:"disabled"),i.hasClass("load-indicator")&&i.toggleClass("loading",!e)})};var o=function(e,i,n){"string"==typeof i&&(n=i,i=null),n=n||"show",t.zui.messager?t.zui.messager[n](e,i):alert(e)};t.ajaxForm=function(a,r){var l=t(a);if(l.length>1)return l.each(function(){t.ajaxForm(this,r)});t.isFunction(r)&&(r={complete:r}),r=t.extend({},n,l.data(),r);var h=r.beforeSubmit,c=r.error,d=r.success,u=r.finish;delete r.finish,delete r.success,delete r.onError,delete r.beforeSubmit;var p=r.errControlStyle;delete r.errControlStyle,r=t.extend({beforeSubmit:function(n,o,a){if(l.enableForm(!1),(h&&h(n,o,a))!==!1){var c={},d=o.find('[type="file"]');c.fileapi=d.length&&d[0].files!==i,c.formdata=e.FormData!==i;var u=c.fileapi&&o.find('input[type="file"]:enabled').filter(function(){return""!==t(this).val()}),p=u.length,f="multipart/form-data",g=o.attr("enctype")==f||o.attr("encoding")==f,m=c.fileapi&&c.formdata,v=(p||g)&&!m;v&&(""==s&&(s=r.url),r.url!=s&&(r.url=s),r.url=r.url.indexOf("&")>=0?r.url+"&HTTP_X_REQUESTED_WITH=XMLHttpRequest":r.url+"?HTTP_X_REQUESTED_WITH=XMLHttpRequest")}},success:function(i,n,s){if(l.enableForm(),(d&&d(i,n,s,l))!==!1){try{"string"==typeof i&&(i=JSON.parse(i))}catch(a){}if("object"!=typeof i)return i?alert(i):o("No response.","danger");var h=r.responser?t(r.responser):l.find(".form-responser");h.length||(h=t("#responser"));var c=i.message;if("success"===i.result){if(c){var f=l.find('[type="submit"]'),g=!1;f.length&&(f.popover({container:"body",trigger:"manual",content:c,tipClass:"popover-in-modal popover-success text-success",placement:i.placement||r.popoverPlacement||"right"}).popover("show"),setTimeout(function(){f.popover("destroy")},r.popoverTime||2e3),g=!0),h.length&&(h.html(''+c+"").show().delay(3e3).fadeOut(100),g=!0),g||o(c,"success")}if(u)return u(i,!0,l);if((r.closeModal||i.closeModal)&&setTimeout(t.zui.closeModal,r.closeModalTime||2e3),i.callback){var m=e[i.callback];if(t.isFunction(m)&&m()===!1)return}var v=r.locate||i.locate;if(v)if("loadInModal"==v){var y=t(".modal");setTimeout(function(){y.load(y.attr("ref"),function(){t(this).find(".modal-dialog").css("width",t(this).data("width")),t.zui.ajustModalPosition()})},1e3)}else{var b="reload"==v?e.location.href:v;setTimeout(function(){e.location.href=b},1200)}var w=r.ajaxReload||i.ajaxReload;if(w){var x=t(w);x.length&&x.load(e.location.href+" "+w,function(){x.find('[data-toggle="modal"]').modalTrigger()})}}else{if("string"==typeof c)h.length?h.html(''+c+"").show().delay(3e3).fadeOut(100):o(c,"danger");else if("object"==typeof c){var C=!1,_=[];t.each(c,function(e,i){var n=t.isArray(i)?i.join(";"):i,s=t("#"+e);if(!s.length)return void _.push(n);var o=e+"Label",a=t("#"+o);if(!a.length){var r=s.closest(".input-group").length;a=t('
                ').appendTo(r?s.closest(".input-group").parent():s.parent())}a.empty().append(n),s.css(p).addClass("has-error");var l=function(){var e=t("#"+o);if(e.length)return e.remove(),s.removeAttr("style").removeClass("has-error"),!0};s.on("change input mousedown",l);var h=t("#"+e+"_chosen");h.length&&h.find(".chosen-single").css(p).addClass("has-error").on("mousedown",function(){l()===!0&&t(this).removeAttr("style").removeClass("has-error")}),C||(s.focus(),C=!0)}),_.length&&o(_.join(";"),"danger")}if(u)return u(i,!1,l)}}},error:function(t,i,n){if((c&&c(t,i,n,l))!==!1){l.enableForm();var s="timeout"==i||"error"==i?e.lang?e.lang.timeout:i:t.responseText+i+n;o(s,"danger")}}},r),l._ajaxForm(r),l.on("click","[data-form-action]",function(){l.attr("action",t(this).data("formAction")).submit()})},t.fn.ajaxForm=function(e){return this.each(function(){t.ajaxForm(this,e)})},t.fn.setInputRequired=function(){return this.each(function(){var e=t(this),i=e.parent();i.is(".input-control,td")?i.addClass("required"):e.is(".chosen")&&e.attr("required",null).next(".chosen-container").addClass("required"),e.attr("required",null)})},t(function(){t('.form-ajax,form[data-type="ajax"]').ajaxForm(),setTimeout(function(){var i=e.config.requiredFields,n=t("form");i&&(i=i.split(",")),i&&i.length&&t.each(i,function(t,e){n.find("#"+e).attr("required","required")}),n.find("input[required],select[required]").setInputRequired(); +},400)})}(jQuery,window,void 0),$.zui.browser.ie&&$.zui.browser.ie<10){var $uploader=$("#uploader");$uploader.on("click",".uploader-btn-browse",function(){$uploader.find('input[type="file"]:first').click()})}!function(t){"use strict";var e="zui.searchList",i=function(t,e){if(t&&t.length)for(var i=0;i
                ').append(a)),i.$menu.append(a),i.$menu.removeClass("loading"),i.isLoaded=!0,e&&e(!0)},error:function(){i.$menu.removeClass("loading").append('
                '+(n.errorText||window.lang&&window.lang.timeout)+"
                "),e&&e(!1)}},n.ajax))},n.prototype.scrollTo=function(t){t.length&&t[0].scrollIntoView({behavior:"smooth"})},n.prototype.getItems=function(){return this.$.find(this.options.selector)},n.prototype.getActiveItem=function(){return this.getItems().filter(".active:first")},n.prototype.search=function(e){var n=this,s=void 0===e||null===e||""===e,o=n.getItems().removeClass("active");if(s)o.removeClass("hidden");else{var a=t.trim(e).split(" ");o.each(function(){var e=t(this),n=e.text()+" "+(e.data("key")||e.data("filter"));e.toggleClass("hidden",!i(a,n))})}n.scrollTo(o.not(".hidden").first().addClass("active"))},n.DEFAULTS={selector:".list-group a",searchBox:".search-box",onSelectItem:null},t.fn.searchList=function(i){return this.each(function(){var s=t(this),o=s.data(e),a="object"==typeof i&&i;o||s.data(e,o=new n(this,a)),"string"==typeof i&&o[i]()})},n.NAME=e,t.fn.searchList.Constructor=n,t(function(){t('[data-ride="searchList"]').searchList()})}(jQuery),function(t){"use strict";var e="zui.labelSelector",i=function(n,s){var o=this;o.name=e;o.$=t(n);s=o.options=t.extend({},i.DEFAULTS,this.$.data(),s),o.$.hide(),o.update()};i.prototype.select=function(t){t+="",this.$wrapper.find(".label.active").removeClass("active"),""!==t&&"0"!==t&&this.$wrapper.find('.label[data-value="'+t+'"]').addClass("active"),this.$.val(t).trigger("change")},i.prototype.update=function(){var e=this,i=e.options,n=e.$wrapper;if(!n){if(i.wrapper)n=t(i.wrapper);else{var s=e.$.next();n=s.hasClass(".label-selector")?s:t('
                ')}n.parent().length||e.$.after(n),e.$wrapper=n,n.on("click",".label",function(){e.select(t(this).data("value"))})}n.empty();var o=e.$.val();e.$.children("option").each(function(){var e=t(this),s={label:e.text(),value:e.val()},a=""===s.value||"0"===s.value,r=t(i.labelTemplate||'');i.labelClass&&!a&&r.addClass(i.labelClass),i.labelCreator?r=i.labelCreator(r):(r.data("option",s).attr("data-value",s.value),a&&!s.label?r.addClass("empty").append(''):r.text(s.label).toggleClass("active",o===s.value)),n.append(r)})},i.DEFAULTS={},t.fn.labelSelector=function(n){return this.each(function(){var s=t(this),o=s.data(e),a="object"==typeof n&&n;o||s.data(e,o=new i(this,a)),"string"==typeof n&&o[n]()})},i.NAME=e,t.fn.labelSelector.Constructor=i,t(function(){t('[data-provide="labelSelector"]').labelSelector()})}(jQuery),function(t){"use strict";var e="zui.fileInput";const i=t.BYTE_UNITS={B:1,KB:1024,MB:1048576,GB:1073741824,TB:1099511627776};var n=t.formatBytes=function(t,e,n){return void 0===e&&(e=2),n||(n=ta.fileMaxSize&&(h.val(""),(window.bootbox||window).alert(a.fileSizeError.format(n(a.fileMaxSize)))),r.update()}),r.update()};o.prototype.getFile=function(){return this.$input.prop("files")[0]},o.prototype.update=function(t){var e=this,i=e.$,s=e.getFile(),o=!s;i.toggleClass("normal",!o).toggleClass("empty",o),s?(e.oldName=s.name,i.find(".file-title").text(s.name).attr("title",s.name),i.find(".file-size").text(n(s.size)),i.find(".file-editbox").val(s.name).attr("size",s.name.length),e.options.onSelect&&e.options.onSelect(s,e)):i.find(".file-editbox").val("")},o.DEFAULTS={fileMaxSize:0,fileSizeError:"无法上传大于 {0} 的文件。"},t.fn.fileInput=function(i){return this.each(function(){var n=t(this),s=n.data(e),a="object"==typeof i&&i;s||n.data(e,s=new o(this,a)),"string"==typeof i&&s[i]()})},o.NAME=e,t.fn.fileInput.Constructor=o,t(function(){t('[data-provide="fileInput"]').fileInput()});var a="zui.fileInputList",r=function(e,i){var n=this;n.name=a;var s=n.$=t(e);i=n.options=t.extend({},r.DEFAULTS,this.$.data(),i),n.$template=s.find(".file-input").detach(),n.add()};r.prototype.add=function(){var t=this,e=t.options,i=t.$template.clone();"before"===e.appendWay?t.$.prepend(i):t.$.append(i),i.fileInput({fileMaxSize:e.eachFileMaxSize,fileSizeError:e.fileSizeError,onDelete:function(e){e.$.remove(),t.options.onDelete&&t.options.onDelete(e,t)},onSelect:function(e,i){t.add(),t.options.onSelect&&t.options.onSelect(e,i,t)}})},r.DEFAULTS={fileMaxSize:0,eachFileMaxSize:0,appendWay:"after",fileSizeError:"无法上传大于 {0} 的文件。"},t.fn.fileInputList=function(e){return this.each(function(){var i=t(this),n=i.data(a),s="object"==typeof e&&e;n||i.data(a,n=new r(this,s)),"string"==typeof e&&n[e]()})},r.NAME=a,t.fn.fileInputList.Constructor=r,t(function(){t('[data-provide="fileInputList"]').fileInputList()})}(jQuery),function(t){window.config||(window.config={}),t.createLink=window.createLink=function(t,e,n,s,o){if(s||(s=config.defaultView),o||(o=!1),n)for(n=n.split("&"),i=0;i'+d+"")}}t.val()||(time=e(o.format("hh:mm")),time=time-time%10+10,t.val(n(time)))};t.fn.timeSpanControl=function(i){return this.each(function(){var a=t(this),r=t.extend({},i,a.data()),l=a.find('[name="begin"],.control-time-begin'),h=a.find('[name="end"],.control-time-end'),c=function(){var t=l.val();if(a.find(".hide-empty-begin").toggleClass("hide",!t),t){const i=n(e(t)+30);h.find('option[value="'+i+'"]').length&&h.val(i),r.onChange&&r.onChange(h,i)}};if(a.data("timeSpanControlInit")){if(r.begin){const d=s(r.begin).format("hh:mm");l.find('option[value="'+d+'"]').length&&l.val(d),r.onChange&&r.onChange(l,d)}if(r.end){const u=s(r.end).format("hh:mm");h.find('option[value="'+u+'"]').length&&h.val(u),r.onChange&&r.onChange(h,u)}}else l.on("change",c),o(l,r.begin),o(h,r.end),a.data("timeSpanControlInit",!0);r.end||c()})},t.timeSpanControl={convertTimeToNum:e,convertNumToTime:n,initTimeSelect:o,createTime:s};var a=t.setSearchType=function(e){var i=t("#searchType");e||(e=i.val()),e=e||"bug",i.val(e);var n=t("#searchTypeMenu");n.find("li.selected").removeClass("selected");var s=n.find('a[data-value="'+e+'"]'),o=s.text();s.parent().addClass("selected"),t("#searchTypeName").text(o)};t.gotoObject=function(e,i){e||(e=t("#searchType").val()),i||(i=t("#searchInput").val()),i&&e&&(window.location.href=t.createLink(e,"testsuite"===e?"library":"view","id="+i))};t(function(){a(),t(document).on("keydown",function(e){e.ctrlKey&&71===e.keyCode&&(t("#searchInput").val("").focus(),e.stopPropagation(),e.preventDefault())})}),t.chosenDefaultOptions={disable_search_threshold:1,width:null,allow_single_deselect:!0,placeholder_text_single:" ",placeholder_text_multiple:" ",search_contains:!0},t.chosenSimpleOptions=t.extend({},t.chosenDefaultOptions,{disable_search_threshold:6}),t.fn._chosen=t.fn.chosen,t.fn.chosen=function(e){return"string"==typeof e?this._chosen(e):this.each(function(){var i=t(this).addClass("chosen-controled");return i._chosen(t.extend({},i.hasClass("chosen-simple")?t.chosenSimpleOptions:t.chosenDefaultOptions,e))})},t(function(){t(".chosen,.chosen-simple").each(function(){var e=t(this);e.closest(".template").length||e.chosen()})}),t.extend(t.fn.pager.Constructor.DEFAULTS,{maxNavCount:8,prevIcon:"icon-angle-left",nextIcon:"icon-angle-right",navEllipsisItem:"…",menuDirection:"dropup",pageSizeOptions:[5,10,15,20,25,30,35,40,45,50,100,200,500,1e3,2e3],elements:["total_text","size_menu","prev_icon","nav","next_icon"],onPageChange:function(t,e){console.log("onPageChange",t,e),t.recPerPage!==e.recPerPage&&(window.location.href=this.createLink())}}),t.zui.Messager.DEFAULTS.cssClass="messagger-zt",t.fn.reverseOrder=function(){return this.each(function(){var e=t(this);e.prependTo(e.parent())})};var r=function(e,i){var n=t(e);i=t.extend({},n.data(),i);var s=n.find(".histories-list"),o=!0,a=!1;n.on("click",".btn-reverse",function(){s.children("li").reverseOrder(),o=!o,t(this).find(".icon").toggleClass("icon-arrow-up",o).toggleClass("icon-arrow-down",!o)}).on("click",".btn-expand-all",function(){var e=t(this).find(".icon");a=!a,e.toggleClass("icon-plus",!a).toggleClass("icon-minus",a),s.children("li").toggleClass("show-changes",a)}).on("click",".btn-expand",function(){t(this).closest("li").toggleClass("show-changes")}).on("click",".btn-strip",function(){var e=t(this),n=e.find(".icon"),s=n.hasClass("icon-code");n.toggleClass("icon-code",!s).toggleClass("icon-text",s),e.attr("title",s?i.original:i.textdiff),e.closest("li").toggleClass("show-original",s)}),s.find(".btn-strip").attr("title",i.original);var r=n.find(".modal-comment").modal({show:!1,backdrop:!1,position:function(t){var e=s[0].getBoundingClientRect(),i=t.$element.find(".modal-dialog"),n=Math.min(670,i.outerWidth()),o=i.outerHeight();return{width:n,top:Math.min(window.innerHeight-o,e.top-40),left:e.left+e.width-n,margin:0}}});n.on("click",".btn-comment",function(t){r.modal("toggle"),t.preventDefault()}).on("click",".btn-edit-comment,.btn-hide-form",function(){t(this).closest("li").toggleClass("show-form")});var l=n.find(".comment-edit-form");l.ajaxForm({success:function(t,e,i,n){setTimeout(function(){l.closest("li").removeClass("show-form")},2e3)}})};t.fn.histories=function(t){return this.each(function(){r(this,t)})},t(function(){t(".histories").histories()});var l=0,h=0;t.toggleSidebar=function(e){var i=t("#sidebar");if(i.length){var n=t("main");if(void 0===e)e=n.hasClass("hide-sidebar");else if(e&&!n.hasClass("hide-sidebar"))return;n.toggleClass("hide-sidebar",!e),clearTimeout(l),e?(i.addClass("showing"),l=setTimeout(function(){i.removeClass("showing"),i.trigger("sidebar.toggle",e)},210)):i.trigger("sidebar.toggle",e),t.zui.store.set(h,e)}};var c=function(){var e=t("#sidebar");if(e.length&&!e.data("init")){h="sidebar:"+(e.data("id")||config.module+"/"+config.method);var i=t("main");i.on("click",".sidebar-toggle",function(){t.toggleSidebar(i.hasClass("hide-sidebar"))});var n=t.zui.store.get(h,e.data("hide")!==!1);return e.addClass("no-animate"),t.toggleSidebar(n),setTimeout(function(){e.removeClass("no-animate")},500),e.data("init",1),!0}};c()||t(c),t.toggleQueryBox=function(e){var i=t("#queryBox");i.length&&(void 0===e&&(e=!i.hasClass("show")),i.toggleClass("show",!!e),i.data("init")||(i.addClass("load-indicator loading").data("init",1),t.get(t.createLink("search","buildForm"),function(t){i.html(t).removeClass("loading")})),t(".querybox-toggle").toggleClass("querybox-opened",e))},t(function(){var e=t("#queryBox");e.length&&(t(document).on("click",".querybox-toggle",function(){t.toggleQueryBox()}),e.hasClass("show")&&t.toggleQueryBox(!0))}),t.extend(t.fn.colorPicker.Constructor.DEFAULTS,{colors:["#3DA7F5","#75C941","#2DBDB2","#797EC9","#FFAF38","#FF4E3E"]}),t(function(){t("a.iframe").each(function(){var e=t(this);e.parents('[data-ride="table"]').length||e.modalTrigger()})});var d=function(){var e,i,n=t(this),s=t.extend({limitSize:40,suffix:"…"},n.data()),o=n.text();if(o.length>s.limitSize){e=o,i=o.substr(0,s.limitSize)+s.suffix,n.text(i).addClass("limit-text-on");var a=s.toggleBtn?t(s.toggleBtn):n.next(".text-limit-toggle");a.text(a.data("textExpand")),a.on("click",function(){var t=n.toggleClass("limit-text-on").hasClass("limit-text-on");n.text(t?i:e),a.text(a.data(t?"textExpand":"textCollapse"))})}else(s.toggleBtn?t(s.toggleBtn):n.next(".text-limit-toggle")).hide()};t.fn.textLimit=function(){return this.each(d)},t(function(){t(".text-limit").textLimit()}),t.fixedTableHead=window.fixedTableHead=function(e){var i=t(e);i.scroll(function(){var t=i.find(".table-fixed-head").size()>0;if(!t&&(i.css("position","relative"),1==i.find("table").size())){var e=""+i.find("table thead").html()+"
                ";i.prepend(e);var n=i.find("table.table-fixed-head");n.addClass(i.find("table:last").attr("class"));var s=i.find("table:last thead th");n.find("thead th").each(function(t){n.find("thead th").eq(t).width(s.eq(t).width())})}i.find("table.table-fixed-head").css("top",i.scrollTop())})},t(document).on("click","tr[data-url]",function(){var e=t(this),i=e.data("href")||e.data("url");i&&(window.location.href=i)}),"yes"===config.onlybody&&self===parent&&(window.location.href=window.location.href.replace("?onlybody=yes","").replace("&onlybody=yes","")),t(function(){t("body").addClass("m-{currentModule}-{currentMethod}".format(config))});var u,p,f,g,m,v=function(){u||(u=t("#subNavbar"),p=t("#pageNav"),f=t("#pageActions"),g=u.children(".nav"),m=g.outerWidth());var e=u.outerWidth(),i=p.outerWidth()||0,n=f.outerWidth()||0;if(i=i?i+15:0,n=n?n+15:0,!i&&!n)return void g.css({maxWidth:null,left:null,position:"static"});var s=Math.max(300,e-i-n),o=Math.min(s,m),a=(e-o)/2,r=i&&ali>a>.label{position:relative;top:-1px}.btn-danger .label,.btn-info .label,.btn-primary .label,.btn-success .label,.btn-warning .label{background-color:rgba(0,0,0,.2)}.list-group-item.active>.label,.nav-pills>.active>a>.label,.nav-primary>.active>a>.label{color:#3c4353;background-color:#fff}.nav>li>a>.label{margin-left:3px}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#8e939a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:8px;margin-bottom:20px;overflow:hidden;background-color:#e9f2fb;border-radius:3px}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#006af1;border-radius:3px;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#00da88}.progress-bar-info{background-color:#7ec5ff}.progress-bar-warning{background-color:#fdc137}.progress-bar-danger{background-color:#ff5d5d}.avatar{position:relative;display:block;width:30px;height:30px;overflow:hidden;line-height:30px;text-align:center;background-position:center;-webkit-background-size:cover;background-size:cover;border-radius:4px}.avatar img{display:block;width:100%;height:100%;margin:0}.avatar-sm{width:20px;height:20px;font-size:12px;line-height:20px}.avatar-lg{width:40px;height:40px;font-size:20px;line-height:40px}.avatar-lg>.icon{font-size:20px}.avatar-xl{width:70px;height:70px;font-size:35px;line-height:70px}.avatar-xl>.icon{font-size:35px}.avatar-circle{border-radius:50%}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#3c4353;border:0;border-bottom:1px solid #eee}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:#8e939a}.form-control::-moz-placeholder{color:#8e939a}.form-control:-ms-input-placeholder{color:#8e939a}.form-control::placeholder{color:#8e939a}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.42857143;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#006af1;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,106,241,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,106,241,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.form-control[readonly]{cursor:default}textarea.form-control{height:auto;min-height:32px}.form-group{margin-bottom:10px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:39px;padding:10px 16px;font-size:14px;line-height:1.25;border-radius:6px}select.input-lg{height:39px;line-height:39px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#fdc137}.has-warning .form-control{border-color:#fdc137;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#fcb105;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #fee09c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #fee09c}.has-warning .input-group-addon{color:#fdc137;background-color:#fff0d5;border-color:#fdc137}.has-error .help-block,.has-error>label{color:#ff5d5d}.has-error .form-control{border-color:#ff5d5d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#ff2a2a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffc3c3;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffc3c3}.has-error .input-group-addon{color:#ff5d5d;background-color:#ffe5e0;border-color:#ff5d5d}.has-success .help-block,.has-success>label{color:#00da88}.has-success .form-control{border-color:#00da88;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#00a768;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #41ffb8;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #41ffb8}.has-success .input-group-addon{color:#00da88;background-color:#ddf4df;border-color:#00da88}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#74809b}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:14px;color:#ff5d5d;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.form-condensed .form-group{margin-bottom:10px}.form-condensed .form-control{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.form-condensed .form-control{height:24px;line-height:24px}textarea.form-condensed .form-control{height:auto}.form-condensed textarea.form-control{height:auto}.form-condensed .btn{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.form-condensed .input-group>.form-control,.form-condensed .input-group>.input-group-addon,.form-condensed .input-group>.input-group-btn>.btn{padding:2px 8px;font-size:12px;border-radius:3px}.form-condensed .input-group .form-control:first-child,.form-condensed .input-group-addon:first-child,.form-condensed .input-group-btn:first-child>.btn,.form-condensed .input-group-btn:first-child>.btn-group>.btn,.form-condensed .input-group-btn:first-child>.dropdown-toggle,.form-condensed .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.form-condensed .input-group .form-control:last-child,.form-condensed .input-group-addon:last-child,.form-condensed .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn:not(:first-child),.form-condensed .input-group-btn:last-child>.btn,.form-condensed .input-group-btn:last-child>.btn-group>.btn,.form-condensed .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.form-condensed .input-group-addon:first-child{border-right:0}.form-condensed .input-group-addon:last-child{border-left:0}.form-condensed .input-group-addon.fix-border,.form-condensed .input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.form-condensed.form-horizontal .checkbox,.form-condensed.form-horizontal .checkbox-inline,.form-condensed.form-horizontal .form-group>label,.form-condensed.form-horizontal .radio,.form-condensed.form-horizontal .radio-inline{padding-top:1px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.load-indicator{position:relative}.load-indicator:after,.load-indicator:before{position:absolute;color:#8e939a;text-align:center;visibility:hidden;opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:visibility,opacity;-o-transition-property:visibility,opacity;transition-property:visibility,opacity}.load-indicator:before{top:0;right:0;bottom:0;left:0;z-index:10;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:50px;font-size:12px;content:attr(data-loading);background-color:rgba(255,255,255,.65);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.load-indicator:after{top:50%;left:50%;z-index:11;display:block;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-family:ZentaoIcon;font-size:18px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;text-transform:none;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.load-indicator.loading:after,.load-indicator.loading:before{visibility:visible;opacity:1}table{max-width:100%;background-color:transparent}caption{padding:8px 10px;color:#8e939a;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px 10px;line-height:1.42857143;vertical-align:top;border-bottom:1px solid #ecf0f4;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{font-weight:400;color:#838a9d;vertical-align:bottom;background-color:transparent;border-bottom:1px solid #ecf0f4}.table>tbody+tbody{border-top:2px solid #ecf0f4}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ecf0f4}.table-bordered td,.table-bordered th{border:1px solid #ecf0f4}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#e9f2fb}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f4}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered th{border-top:none}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.alert{padding:15px;margin-bottom:20px;color:#313744;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#22262f}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#313744;background-color:#e9f2fb}.alert-primary hr{border-top-color:#cbe0f6}.alert-primary .alert-link{color:#22262f}.alert-success{color:#00c178;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#009d62}.alert-info{color:#64baff;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#41a9ff}.alert-warning{color:#fdb91e;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#f4ab02}.alert-danger{color:#ff4343;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#ff2020}.alert-inverse{color:#fff;background-color:#3c4353;border-color:#3c4353}.alert-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-primary-inverse{color:#fff;background-color:#006af1;border-color:#006af1}.alert-primary-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-success-inverse{color:#fff;background-color:#00da88;border-color:#00da88}.alert-success-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-success-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-info-inverse{color:#fff;background-color:#7ec5ff;border-color:#7ec5ff}.alert-info-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-info-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-warning-inverse{color:#fff;background-color:#fdc137;border-color:#fdc137}.alert-warning-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-warning-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-danger-inverse{color:#fff;background-color:#ff5d5d;border-color:#ff5d5d}.alert-danger-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-danger-inverse .alert-link{color:rgba(255,255,255,.8)}.input-control-icon-left,.input-control-icon-right,.input-control-label-left,.input-control-label-right{position:absolute;top:1px;z-index:5;height:30px;line-height:30px;opacity:.5}.input-control-icon-left,.input-control-icon-right{width:30px;text-align:center}.input-control-icon-left,.input-control-label-left{left:1px}.input-control-icon-right,.input-control-label-right{right:1px}.input-control-label-left,.input-control-label-right{width:70px;padding:0 8px;overflow:hidden;text-overflow:ellipsis}.has-label-left-sm>.input-control-label-left,.has-label-left-sm>.input-control-label-right{width:55px}.has-label-left-lg>.input-control-label-left,.has-label-left-lg>.input-control-label-right{width:95px}.input-control{position:relative}.input-control.has-icon-left>.form-control{padding-left:30px}.input-control.has-icon-right>.form-control{padding-right:30px}.input-control.has-label-left>.form-control{padding-left:70px}.input-control.has-label-right>.form-control{padding-right:70px}.input-control.has-label-left-sm>.form-control{padding-left:55px}.input-control.has-label-right-sm>.form-control{padding-right:55px}.input-control.has-label-left-lg>.form-control{padding-left:95px}.input-control.has-label-right-lg>.form-control{padding-right:95px}.input-control>a:hover{background-color:#f1f1f1;opacity:1}.form-control:focus+[class^=input-control-],.form-control:focus+[class^=input-control-]+[class^=input-control-]{opacity:1}.form-control:focus+.input-control-label-left{color:#00a9fc}.empty+.search-clear-btn,.empty+.search-icon+.search-clear-btn{opacity:0!important}input:placeholder-shown+.search-clear-btn,input:placeholder-shown+.search-icon+.search-clear-btn{opacity:0!important}.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control{border-radius:16px}.search-box-circle+.input-group-btn>.btn{border-radius:0 16px 16px 0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#3c4353;text-align:center;background-color:#eee;border:1px solid #dcdcdc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:39px;padding:10px 16px;font-size:14px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:39px;line-height:39px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:14px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d8d8d8;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#3c4353;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.42857143;text-decoration:none;background-color:#fff;border:1px solid #cbd0db}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#006af1;border-color:#006af1}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#cbd0db;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#cbd0db}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.42857143;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager-lg>li>a,.pager-lg>li>span{padding:10px 16px;font-size:14px}.pager-lg>li:first-child>a,.pager-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pager-lg>li:last-child>a,.pager-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pager-sm>li>a,.pager-sm>li>span{padding:2px 8px;font-size:12px}.pager-sm>li:first-child>a,.pager-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager-sm>li:last-child>a,.pager-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager-pills>li:first-child>a,.pager-pills>li:first-child>span{border-radius:16px 0 0 16px}.pager-pills>li:last-child>a,.pager-pills>li:last-child>span{border-radius:0 16px 16px 0}.pager-pills.pager-justify>li>a,.pager-pills.pager-justify>li>span{border-radius:16px}.pager-loose{display:block;margin:20px 0}.pager-loose.pager-pills>li>a,.pager-loose.pager-pills>li>span{border-radius:16px}.pager-loose>li>a,.pager-loose>li>span{margin-left:5px;border-radius:4px}.pager-loose>li:first-child>a,.pager-loose>li:first-child>span{margin-left:0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:#8e939a}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#3c4353}.nav>li>a:focus,.nav>li>a:hover{color:#006af1;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#cbd0db}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#cbd0db;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#3c4353}.nav>li>a>img{max-width:none}.nav-default>li{float:left}.nav-default>li>a{border-radius:4px}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#006af1}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #cbd0db}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#006af1;border-color:#006af1}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #eee}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#006af1;border-bottom-color:#006af1}.nav-secondary>li.nav-heading{border-bottom:2px solid #eee}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #cbd0db}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #006af1;box-shadow:inset 2px 0 0 #006af1}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #cbd0db}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{padding-right:0;padding-left:0;margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs{border-bottom:1px solid #cbd0db}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #cbd0db}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#8e939a;cursor:default;background-color:#fff;border:1px solid #cbd0db;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{padding-right:0;padding-left:0;margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #cbd0db}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #cbd0db;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@-moz-document url-prefix(){.nav-tabs>li.active>a:focus .nav-tabs>li>a:focus{outline:0}}.nav-tabs.nav-stacked{border-right:1px solid #cbd0db;border-bottom:none}.nav-tabs.nav-stacked>li{float:none;margin-right:-1px;margin-bottom:0}.nav-tabs.nav-stacked>li>a{margin-right:0;border-radius:4px 0 0 4px}.nav-tabs.nav-stacked>li.active>a,.nav-tabs.nav-stacked>li.active>a:focus,.nav-tabs.nav-stacked>li.active>a:hover{border:1px solid #cbd0db;border-right-color:transparent}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #cbd0db}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #cbd0db;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:14px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#3c4353}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#272b35;background-color:transparent}.navbar-default .navbar-text{color:#3c4353}.navbar-default .navbar-nav>li>a{color:#3c4353}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#eee}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#cbd0db}.navbar-default .navbar-toggle .icon-bar{background-color:#8e939a}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#3c4353}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#eee}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#3c4353}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#3c4353}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#00a9fc;border-color:#0087c9}.navbar-inverse .navbar-brand{color:#cbd0db}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#cbd0db}.navbar-inverse .navbar-nav>li>a{color:#cbd0db}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1cb4ff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#30bbff}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#0098e3}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0091d8}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#30bbff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#0087c9}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#0087c9}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#cbd0db}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1cb4ff}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#30bbff}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#cbd0db}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-form{padding:10px 10px;margin-top:4px;margin-right:-10px;margin-bottom:4px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;pointer-events:none;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;pointer-events:initial;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#3c4353;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#3c4353}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#3c4353}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#3c4353}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#3c4353}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#3c4353}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#3c4353}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#3c4353}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#3c4353}.tooltip-primary .tooltip-inner{background-color:#006af1}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#006af1}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#006af1}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#006af1}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#006af1}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#006af1}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#006af1}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#006af1}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#006af1}.tooltip-success .tooltip-inner{background-color:#00da88}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#00da88}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#00da88}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#00da88}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#00da88}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#00da88}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#00da88}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#00da88}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#00da88}.tooltip-info .tooltip-inner{background-color:#7ec5ff}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#7ec5ff}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#7ec5ff}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#7ec5ff}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#7ec5ff}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#7ec5ff}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#7ec5ff}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#7ec5ff}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#7ec5ff}.tooltip-warning .tooltip-inner{background-color:#fdc137}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#fdc137}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#fdc137}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#fdc137}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#fdc137}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#fdc137}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#fdc137}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#fdc137}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#fdc137}.tooltip-danger .tooltip-inner{background-color:#ff5d5d}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ff5d5d}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ff5d5d}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ff5d5d}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ff5d5d}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ff5d5d}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ff5d5d}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ff5d5d}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ff5d5d}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.modal .popover,.popover-in-modal{z-index:1050}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#006af1}.popover-primary .popover-title{color:#fff;background-color:#006af1}.popover-primary.popover.top .arrow{border-top-color:#006af1}.popover-primary.popover.right .arrow{border-right-color:#006af1}.popover-primary.popover.left .arrow{border-left-color:#006af1}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#006af1}.popover-success{border-color:#00da88}.popover-success .popover-title{color:#fff;background-color:#00da88}.popover-success.popover.top .arrow{border-top-color:#00da88}.popover-success.popover.right .arrow{border-right-color:#00da88}.popover-success.popover.left .arrow{border-left-color:#00da88}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#00da88}.popover-info{border-color:#7ec5ff}.popover-info .popover-title{color:#fff;background-color:#7ec5ff}.popover-info.popover.top .arrow{border-top-color:#7ec5ff}.popover-info.popover.right .arrow{border-right-color:#7ec5ff}.popover-info.popover.left .arrow{border-left-color:#7ec5ff}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#7ec5ff}.popover-warning{border-color:#fdc137}.popover-warning .popover-title{color:#fff;background-color:#fdc137}.popover-warning.popover.top .arrow{border-top-color:#fdc137}.popover-warning.popover.right .arrow{border-right-color:#fdc137}.popover-warning.popover.left .arrow{border-left-color:#fdc137}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#fdc137}.popover-danger{border-color:#ff5d5d}.popover-danger .popover-title{color:#fff;background-color:#ff5d5d}.popover-danger.popover.top .arrow{border-top-color:#ff5d5d}.popover-danger.popover.right .arrow{border-right-color:#ff5d5d}.popover-danger.popover.left .arrow{border-left-color:#ff5d5d}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ff5d5d}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:100px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#eee}.dropdown-menu>li>a{display:block;padding:5px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#3c4353;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#006af1}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#006af1;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#cbd0db}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.42857143;color:#8e939a}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:100px}.dropdown-submenu>.dropdown-menu.pull-left{right:100%;left:auto}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#006af1}.messager{display:table;margin:10px;overflow:hidden;color:#fff;pointer-events:auto;background-color:#3c4353;background-color:rgba(0,0,0,.8);border-radius:20px;-webkit-transition-property:opacity,-webkit-transform!important;-o-transition-property:opacity,-o-transform!important;transition-property:opacity,-webkit-transform!important;transition-property:opacity,transform!important;transition-property:opacity,transform,-webkit-transform,-o-transform!important}.messager-content{display:table-cell;padding:10px 15px;vertical-align:top}.messager-content>[class^=icon-]{display:inline-block;margin-right:8px}.messager-actions{display:table-cell;vertical-align:top}.messager-actions>.action{min-width:40px;height:40px;padding:0 12px;color:#fafafa;color:rgba(255,255,255,.6);text-align:center;text-shadow:none;background:0 0;border:none}.messager-actions>.action.close{padding-bottom:5px;font-size:20px;font-weight:400;opacity:1}.messager-actions>.action:hover{color:#fff;background:rgba(0,0,0,.1)}.messager-actions .action-icon+.action-text{margin-left:8px}.messagers-holder{position:fixed;z-index:99999;padding:10px;pointer-events:none}.messagers-holder.top{top:0}.messagers-holder.top-left{top:0;left:0}.messagers-holder.top-right{top:0;right:0}.messagers-holder.bottom{bottom:0}.messagers-holder.bottom-left{bottom:0;left:0}.messagers-holder.bottom-right{right:0;bottom:0}.messagers-holder.bottom-right .messager,.messagers-holder.top-right .messager{margin-left:auto}.messagers-holder.center{top:0}.messagers-holder.bottom,.messagers-holder.center,.messagers-holder.top{right:0;left:0}.messagers-holder.bottom .messager,.messagers-holder.center .messager,.messagers-holder.top .messager{margin:10px auto}.messager-primary{background-color:#006af1}.messager-success{background-color:#00da88}.messager-info{background-color:#7ec5ff}.messager-warning{background-color:#fdc137}.messager-danger{background-color:#ff5d5d}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#67738e;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d8d8d8}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px 10px;line-height:1.42857143;vertical-align:top;border-bottom:1px solid #ecf0f4}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:transparent;border-bottom:1px solid #ecf0f4}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ecf0f4}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d8d8d8}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}/*! + *//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}#userMenu:after,#userMenu:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.dl-inline:after,.dl-inline:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.pager-loose:after,.pager-loose:before,.row:after,.row:before,.table-footer:after,.table-footer:before{display:table;content:" "}#userMenu:after,.btn-toolbar:after,.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.dl-inline:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.pager-loose:after,.row:after,.table-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.no-padding{padding:0!important}.no-margin{margin:0!important}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1379px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1380px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1379px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1380px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1379px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1380px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1379px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1380px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1379px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1380px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1379px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1380px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1379px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1380px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1379px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1380px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,Tahoma,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:13px;line-height:1.42857143;color:#3c4353;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3c4353;text-decoration:none;cursor:pointer;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:color,background,opacity,left,top,right,bottom,-webkit-transform;-o-transition-property:color,background,opacity,left,top,right,bottom,-o-transform;transition-property:color,background,opacity,left,top,right,bottom,-webkit-transform;transition-property:color,background,transform,opacity,left,top,right,bottom;transition-property:color,background,transform,opacity,left,top,right,bottom,-webkit-transform,-o-transform}a:focus,a:hover{color:#006af1;text-decoration:none}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:992px}}@media (min-width:992px){.container{max-width:1380px}}@media (min-width:1380px){.container{max-width:1380px}}.container-fixed{width:1380px}.container-fixed-md{width:1380px}.container-fixed-sm{width:992px}.container-fixed-xs{width:768px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-1,.col-xs-1{width:8.33333333%}.col-2,.col-xs-2{width:16.66666667%}.col-3,.col-xs-3{width:25%}.col-4,.col-xs-4{width:33.33333333%}.col-5,.col-xs-5{width:41.66666667%}.col-6,.col-xs-6{width:50%}.col-7,.col-xs-7{width:58.33333333%}.col-8,.col-xs-8{width:66.66666667%}.col-9,.col-xs-9{width:75%}.col-10,.col-xs-10{width:83.33333333%}.col-11,.col-xs-11{width:91.66666667%}.col-12,.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1380px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-gray,.text-muted{color:#8e939a}.text-gray a,.text-muted a{color:#81868e}.text-gray a:active,.text-gray a:hover,.text-muted a:active,.text-muted a:hover{color:#3c4353}.text-primary{color:#006af1}.text-warning,.text-yellow{color:#fdc137}.text-danger,.text-red{color:#ff5d5d}.text-green,.text-success{color:#00da88}.text-blue,.text-info{color:#7ec5ff}.text-brown,.text-important{color:#bd7b46}.text-purple,.text-special{color:#8666b8}.text-link{color:#3c4353}.text-link:active,.text-link:hover{color:#3c4353}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #eee}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.42857143;color:#8e939a}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.bg-black,.bg-default{color:#fff;background-color:#3c4353}.bg-primary{color:#fff;background-color:#006af1}.bg-green,.bg-success{color:#fff;background-color:#00da88}.bg-blue,.bg-info{color:#fff;background-color:#7ec5ff}.bg-warning,.bg-yellow{color:#fff;background-color:#fdc137}.bg-danger,.bg-red{color:#fff;background-color:#ff5d5d}.bg-brown,.bg-important{color:#fff;background-color:#bd7b46}.bg-purple,.bg-special{color:#fff;background-color:#8666b8}.hl-default,.hl-gray{background-color:#f1f1f1}.hl-primary{background-color:#e9f2fb}.hl-green,.hl-success{background-color:#ddf4df}.hl-blue,.hl-info{background-color:#ddf3f5}.hl-warning,.hl-yellow{background-color:#fff0d5}.hl-danger,.hl-red{background-color:#ffe5e0}.hl-brown,.hl-important{background-color:#f7ebe1}.hl-purple,.hl-special{background-color:#f5eeff}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Arial,Tahoma,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#8e939a}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:24px}h2{font-size:20px}h3{font-size:18px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:85.71428571%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#8e939a;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#747981}.label.label-outline{color:#8e939a;background:0 0;border:1px solid #8e939a}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:8px;height:8px;padding:0;line-height:20px;text-indent:-9999em;border-radius:50%}.label-dot:empty{display:inline-block}.label-primary{background-color:#006af1}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0054be}.label-primary.label-outline{color:#006af1;background:0 0;border:1px solid #006af1}.label-success{background-color:#00da88}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#00a768}.label-success.label-outline{color:#00da88;background:0 0;border:1px solid #00da88}.label-info{background-color:#7ec5ff}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#4baeff}.label-info.label-outline{color:#7ec5ff;background:0 0;border:1px solid #7ec5ff}.label-warning{background-color:#fdc137}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#fcb105}.label-warning.label-outline{color:#fdc137;background:0 0;border:1px solid #fdc137}.label-danger{background-color:#ff5d5d}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#ff2a2a}.label-danger.label-outline{color:#ff5d5d;background:0 0;border:1px solid #ff5d5d}.btn .label,.nav-primary>li>a>.label{position:relative;top:-1px}.btn-danger .label,.btn-info .label,.btn-primary .label,.btn-success .label,.btn-warning .label{background-color:rgba(0,0,0,.2)}.list-group-item.active>.label,.nav-pills>.active>a>.label,.nav-primary>.active>a>.label{color:#3c4353;background-color:#fff}.nav>li>a>.label{margin-left:3px}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#8e939a}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:8px;margin-bottom:20px;overflow:hidden;background-color:#e9f2fb;border-radius:3px}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#006af1;border-radius:3px;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#00da88}.progress-bar-info{background-color:#7ec5ff}.progress-bar-warning{background-color:#fdc137}.progress-bar-danger{background-color:#ff5d5d}.avatar{position:relative;display:block;width:30px;height:30px;overflow:hidden;line-height:30px;text-align:center;background-position:center;-webkit-background-size:cover;background-size:cover;border-radius:4px}.avatar img{display:block;width:100%;height:100%;margin:0}.avatar-sm{width:20px;height:20px;font-size:12px;line-height:20px}.avatar-lg{width:40px;height:40px;font-size:20px;line-height:40px}.avatar-lg>.icon{font-size:20px}.avatar-xl{width:70px;height:70px;font-size:35px;line-height:70px}.avatar-xl>.icon{font-size:35px}.avatar-circle{border-radius:50%}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#3c4353;border:0;border-bottom:1px solid #eee}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:#8e939a}.form-control::-moz-placeholder{color:#8e939a}.form-control:-ms-input-placeholder{color:#8e939a}.form-control::placeholder{color:#8e939a}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.42857143;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#006af1;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,106,241,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,106,241,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.form-control[readonly]{cursor:default}textarea.form-control{height:auto;min-height:32px}.form-group{margin-bottom:10px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:39px;padding:10px 16px;font-size:14px;line-height:1.25;border-radius:6px}select.input-lg{height:39px;line-height:39px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#fdc137}.has-warning .form-control{border-color:#fdc137;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#fcb105;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #fee09c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #fee09c}.has-warning .input-group-addon{color:#fdc137;background-color:#fff0d5;border-color:#fdc137}.has-error .help-block,.has-error>label{color:#ff5d5d}.has-error .form-control{border-color:#ff5d5d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#ff2a2a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffc3c3;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffc3c3}.has-error .input-group-addon{color:#ff5d5d;background-color:#ffe5e0;border-color:#ff5d5d}.has-success .help-block,.has-success>label{color:#00da88}.has-success .form-control{border-color:#00da88;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#00a768;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #41ffb8;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #41ffb8}.has-success .input-group-addon{color:#00da88;background-color:#ddf4df;border-color:#00da88}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#74809b}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:14px;color:#ff5d5d;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.form-condensed .form-group{margin-bottom:10px}.form-condensed .form-control{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.form-condensed .form-control{height:24px;line-height:24px}textarea.form-condensed .form-control{height:auto}.form-condensed textarea.form-control{height:auto}.form-condensed .btn{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.form-condensed .input-group>.form-control,.form-condensed .input-group>.input-group-addon,.form-condensed .input-group>.input-group-btn>.btn{padding:2px 8px;font-size:12px;border-radius:3px}.form-condensed .input-group .form-control:first-child,.form-condensed .input-group-addon:first-child,.form-condensed .input-group-btn:first-child>.btn,.form-condensed .input-group-btn:first-child>.btn-group>.btn,.form-condensed .input-group-btn:first-child>.dropdown-toggle,.form-condensed .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.form-condensed .input-group .form-control:last-child,.form-condensed .input-group-addon:last-child,.form-condensed .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn:not(:first-child),.form-condensed .input-group-btn:last-child>.btn,.form-condensed .input-group-btn:last-child>.btn-group>.btn,.form-condensed .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.form-condensed .input-group-addon:first-child{border-right:0}.form-condensed .input-group-addon:last-child{border-left:0}.form-condensed .input-group-addon.fix-border,.form-condensed .input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.form-condensed.form-horizontal .checkbox,.form-condensed.form-horizontal .checkbox-inline,.form-condensed.form-horizontal .form-group>label,.form-condensed.form-horizontal .radio,.form-condensed.form-horizontal .radio-inline{padding-top:1px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.load-indicator{position:relative}.load-indicator:after,.load-indicator:before{position:absolute;color:#8e939a;text-align:center;visibility:hidden;opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:visibility,opacity;-o-transition-property:visibility,opacity;transition-property:visibility,opacity}.load-indicator:before{top:0;right:0;bottom:0;left:0;z-index:10;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:50px;font-size:12px;content:attr(data-loading);background-color:rgba(255,255,255,.65);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.load-indicator:after{top:50%;left:50%;z-index:11;display:block;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-family:ZentaoIcon;font-size:18px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;text-transform:none;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.load-indicator.loading:after,.load-indicator.loading:before{visibility:visible;opacity:1}table{max-width:100%;background-color:transparent}caption{padding:8px 10px;color:#8e939a;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px 10px;line-height:1.42857143;vertical-align:top;border-bottom:1px solid #ecf0f4;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{font-weight:400;color:#838a9d;vertical-align:bottom;background-color:transparent;border-bottom:1px solid #ecf0f4}.table>tbody+tbody{border-top:2px solid #ecf0f4}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ecf0f4}.table-bordered td,.table-bordered th{border:1px solid #ecf0f4}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#e9f2fb}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f4}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered th{border-top:none}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.alert{padding:15px;margin-bottom:20px;color:#313744;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#22262f}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#313744;background-color:#e9f2fb}.alert-primary hr{border-top-color:#cbe0f6}.alert-primary .alert-link{color:#22262f}.alert-success{color:#00c178;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#009d62}.alert-info{color:#64baff;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#41a9ff}.alert-warning{color:#fdb91e;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#f4ab02}.alert-danger{color:#ff4343;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#ff2020}.alert-inverse{color:#fff;background-color:#3c4353;border-color:#3c4353}.alert-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-primary-inverse{color:#fff;background-color:#006af1;border-color:#006af1}.alert-primary-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-success-inverse{color:#fff;background-color:#00da88;border-color:#00da88}.alert-success-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-success-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-info-inverse{color:#fff;background-color:#7ec5ff;border-color:#7ec5ff}.alert-info-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-info-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-warning-inverse{color:#fff;background-color:#fdc137;border-color:#fdc137}.alert-warning-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-warning-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-danger-inverse{color:#fff;background-color:#ff5d5d;border-color:#ff5d5d}.alert-danger-inverse hr{border-top-color:#cbd0db;border-top-color:rgba(203,208,219,.25)}.alert-danger-inverse .alert-link{color:rgba(255,255,255,.8)}.input-control-icon-left,.input-control-icon-right,.input-control-label-left,.input-control-label-right{position:absolute;top:1px;z-index:5;height:30px;line-height:30px;opacity:.5}.input-control-icon-left,.input-control-icon-right{width:30px;text-align:center}.input-control-icon-left,.input-control-label-left{left:1px}.input-control-icon-right,.input-control-label-right{right:1px}.input-control-label-left,.input-control-label-right{width:70px;padding:0 8px;overflow:hidden;text-overflow:ellipsis}.has-label-left-sm>.input-control-label-left,.has-label-left-sm>.input-control-label-right{width:55px}.has-label-left-lg>.input-control-label-left,.has-label-left-lg>.input-control-label-right{width:95px}.input-control{position:relative}.input-control.has-icon-left>.form-control{padding-left:30px}.input-control.has-icon-right>.form-control{padding-right:30px}.input-control.has-label-left>.form-control{padding-left:70px}.input-control.has-label-right>.form-control{padding-right:70px}.input-control.has-label-left-sm>.form-control{padding-left:55px}.input-control.has-label-right-sm>.form-control{padding-right:55px}.input-control.has-label-left-lg>.form-control{padding-left:95px}.input-control.has-label-right-lg>.form-control{padding-right:95px}.input-control>a:hover{background-color:#f1f1f1;opacity:1}.form-control:focus+[class^=input-control-],.form-control:focus+[class^=input-control-]+[class^=input-control-]{opacity:1}.form-control:focus+.input-control-label-left{color:#00a9fc}.empty+.search-clear-btn,.empty+.search-icon+.search-clear-btn{opacity:0!important}input:placeholder-shown+.search-clear-btn,input:placeholder-shown+.search-icon+.search-clear-btn{opacity:0!important}.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control{border-radius:16px}.search-box-circle+.input-group-btn>.btn{border-radius:0 16px 16px 0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#3c4353;text-align:center;background-color:#eee;border:1px solid #dcdcdc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:39px;padding:10px 16px;font-size:14px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:39px;line-height:39px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:14px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d8d8d8;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#3c4353;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.42857143;text-decoration:none;background-color:#fff;border:1px solid #cbd0db}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#006af1;border-color:#006af1}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#cbd0db;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#cbd0db}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.42857143;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager-lg>li>a,.pager-lg>li>span{padding:10px 16px;font-size:14px}.pager-lg>li:first-child>a,.pager-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pager-lg>li:last-child>a,.pager-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pager-sm>li>a,.pager-sm>li>span{padding:2px 8px;font-size:12px}.pager-sm>li:first-child>a,.pager-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager-sm>li:last-child>a,.pager-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager-pills>li:first-child>a,.pager-pills>li:first-child>span{border-radius:16px 0 0 16px}.pager-pills>li:last-child>a,.pager-pills>li:last-child>span{border-radius:0 16px 16px 0}.pager-pills.pager-justify>li>a,.pager-pills.pager-justify>li>span{border-radius:16px}.pager-loose{display:block;margin:20px 0}.pager-loose.pager-pills>li>a,.pager-loose.pager-pills>li>span{border-radius:16px}.pager-loose>li>a,.pager-loose>li>span{margin-left:5px;border-radius:4px}.pager-loose>li:first-child>a,.pager-loose>li:first-child>span{margin-left:0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:#8e939a}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#3c4353}.nav>li>a:focus,.nav>li>a:hover{color:#006af1;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#cbd0db}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#cbd0db;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#3c4353}.nav>li>a>img{max-width:none}.nav-default>li{float:left}.nav-default>li>a{border-radius:4px}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#006af1}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #cbd0db}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#006af1;border-color:#006af1}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #eee}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#006af1;border-bottom-color:#006af1}.nav-secondary>li.nav-heading{border-bottom:2px solid #eee}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #cbd0db}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #006af1;box-shadow:inset 2px 0 0 #006af1}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #cbd0db}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{padding-right:0;padding-left:0;margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs{border-bottom:1px solid #cbd0db}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #cbd0db}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#8e939a;cursor:default;background-color:#fff;border:1px solid #cbd0db;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{padding-right:0;padding-left:0;margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #cbd0db}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #cbd0db;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@-moz-document url-prefix(){.nav-tabs>li.active>a:focus .nav-tabs>li>a:focus{outline:0}}.nav-tabs.nav-stacked{border-right:1px solid #cbd0db;border-bottom:none}.nav-tabs.nav-stacked>li{float:none;margin-right:-1px;margin-bottom:0}.nav-tabs.nav-stacked>li>a{margin-right:0;border-radius:4px 0 0 4px}.nav-tabs.nav-stacked>li.active>a,.nav-tabs.nav-stacked>li.active>a:focus,.nav-tabs.nav-stacked>li.active>a:hover{border:1px solid #cbd0db;border-right-color:transparent}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #cbd0db}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #cbd0db;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:14px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#3c4353}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#272b35;background-color:transparent}.navbar-default .navbar-text{color:#3c4353}.navbar-default .navbar-nav>li>a{color:#3c4353}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#eee}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#cbd0db}.navbar-default .navbar-toggle .icon-bar{background-color:#8e939a}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#3c4353}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#eee}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#3c4353}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#3c4353}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#00a9fc;border-color:#0087c9}.navbar-inverse .navbar-brand{color:#cbd0db}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#cbd0db}.navbar-inverse .navbar-nav>li>a{color:#cbd0db}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1cb4ff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#30bbff}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#0098e3}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0091d8}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#30bbff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#0087c9}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#0087c9}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#cbd0db}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1cb4ff}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#30bbff}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#cbd0db}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-form{padding:10px 10px;margin-top:4px;margin-right:-10px;margin-bottom:4px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;pointer-events:initial;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#3c4353;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#3c4353}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#3c4353}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#3c4353}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#3c4353}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#3c4353}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#3c4353}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#3c4353}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#3c4353}.tooltip-primary .tooltip-inner{background-color:#006af1}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#006af1}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#006af1}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#006af1}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#006af1}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#006af1}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#006af1}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#006af1}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#006af1}.tooltip-success .tooltip-inner{background-color:#00da88}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#00da88}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#00da88}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#00da88}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#00da88}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#00da88}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#00da88}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#00da88}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#00da88}.tooltip-info .tooltip-inner{background-color:#7ec5ff}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#7ec5ff}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#7ec5ff}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#7ec5ff}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#7ec5ff}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#7ec5ff}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#7ec5ff}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#7ec5ff}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#7ec5ff}.tooltip-warning .tooltip-inner{background-color:#fdc137}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#fdc137}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#fdc137}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#fdc137}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#fdc137}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#fdc137}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#fdc137}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#fdc137}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#fdc137}.tooltip-danger .tooltip-inner{background-color:#ff5d5d}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ff5d5d}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ff5d5d}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ff5d5d}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ff5d5d}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ff5d5d}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ff5d5d}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ff5d5d}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ff5d5d}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.modal .popover,.popover-in-modal{z-index:1050}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#006af1}.popover-primary .popover-title{color:#fff;background-color:#006af1}.popover-primary.popover.top .arrow{border-top-color:#006af1}.popover-primary.popover.right .arrow{border-right-color:#006af1}.popover-primary.popover.left .arrow{border-left-color:#006af1}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#006af1}.popover-success{border-color:#00da88}.popover-success .popover-title{color:#fff;background-color:#00da88}.popover-success.popover.top .arrow{border-top-color:#00da88}.popover-success.popover.right .arrow{border-right-color:#00da88}.popover-success.popover.left .arrow{border-left-color:#00da88}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#00da88}.popover-info{border-color:#7ec5ff}.popover-info .popover-title{color:#fff;background-color:#7ec5ff}.popover-info.popover.top .arrow{border-top-color:#7ec5ff}.popover-info.popover.right .arrow{border-right-color:#7ec5ff}.popover-info.popover.left .arrow{border-left-color:#7ec5ff}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#7ec5ff}.popover-warning{border-color:#fdc137}.popover-warning .popover-title{color:#fff;background-color:#fdc137}.popover-warning.popover.top .arrow{border-top-color:#fdc137}.popover-warning.popover.right .arrow{border-right-color:#fdc137}.popover-warning.popover.left .arrow{border-left-color:#fdc137}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#fdc137}.popover-danger{border-color:#ff5d5d}.popover-danger .popover-title{color:#fff;background-color:#ff5d5d}.popover-danger.popover.top .arrow{border-top-color:#ff5d5d}.popover-danger.popover.right .arrow{border-right-color:#ff5d5d}.popover-danger.popover.left .arrow{border-left-color:#ff5d5d}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ff5d5d}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:100px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #b6bdcc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#eee}.dropdown-menu>li>a{display:block;padding:5px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#3c4353;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#006af1}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#006af1;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#cbd0db}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.42857143;color:#8e939a}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:100px}.dropdown-submenu>.dropdown-menu.pull-left{right:100%;left:auto}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#006af1}.messager{display:table;margin:10px;overflow:hidden;color:#fff;pointer-events:auto;background-color:#3c4353;background-color:rgba(0,0,0,.8);border-radius:20px;-webkit-transition-property:opacity,-webkit-transform!important;-o-transition-property:opacity,-o-transform!important;transition-property:opacity,-webkit-transform!important;transition-property:opacity,transform!important;transition-property:opacity,transform,-webkit-transform,-o-transform!important}.messager-content{display:table-cell;padding:10px 15px;vertical-align:top}.messager-content>[class^=icon-]{display:inline-block;margin-right:8px}.messager-actions{display:table-cell;vertical-align:top}.messager-actions>.action{min-width:40px;height:40px;padding:0 12px;color:#fafafa;color:rgba(255,255,255,.6);text-align:center;text-shadow:none;background:0 0;border:none}.messager-actions>.action.close{padding-bottom:5px;font-size:20px;font-weight:400;opacity:1}.messager-actions>.action:hover{color:#fff;background:rgba(0,0,0,.1)}.messager-actions .action-icon+.action-text{margin-left:8px}.messagers-holder{position:fixed;z-index:99999;padding:10px;pointer-events:none}.messagers-holder.top{top:0}.messagers-holder.top-left{top:0;left:0}.messagers-holder.top-right{top:0;right:0}.messagers-holder.bottom{bottom:0}.messagers-holder.bottom-left{bottom:0;left:0}.messagers-holder.bottom-right{right:0;bottom:0}.messagers-holder.bottom-right .messager,.messagers-holder.top-right .messager{margin-left:auto}.messagers-holder.center{top:0}.messagers-holder.bottom,.messagers-holder.center,.messagers-holder.top{right:0;left:0}.messagers-holder.bottom .messager,.messagers-holder.center .messager,.messagers-holder.top .messager{margin:10px auto}.messager-primary{background-color:#006af1}.messager-success{background-color:#00da88}.messager-info{background-color:#7ec5ff}.messager-warning{background-color:#fdc137}.messager-danger{background-color:#ff5d5d}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#67738e;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d8d8d8}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px 10px;line-height:1.42857143;vertical-align:top;border-bottom:1px solid #ecf0f4}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:transparent;border-bottom:1px solid #ecf0f4}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ecf0f4}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d8d8d8}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}/*! * Datetimepicker for Bootstrap * Copyright 2012 Stefan Petre * Licensed under the Apache License v2.0