├── img
├── spin.gif
├── glyphicons-halflings.png
└── glyphicons-halflings-white.png
├── screenshot.png
├── css
├── images
│ ├── ajax-loader.png
│ ├── form-check-off.png
│ ├── form-check-on.png
│ ├── form-radio-off.png
│ ├── form-radio-on.png
│ ├── icons-18-black.png
│ ├── icons-18-white.png
│ ├── icons-36-black.png
│ ├── icons-36-white.png
│ └── icon-search-black.png
├── smoothness
│ ├── images
│ │ ├── ui-icons_222222_256x240.png
│ │ ├── ui-icons_2e83ff_256x240.png
│ │ ├── ui-icons_454545_256x240.png
│ │ ├── ui-icons_888888_256x240.png
│ │ ├── ui-icons_cd0a0a_256x240.png
│ │ ├── ui-bg_flat_0_aaaaaa_40x100.png
│ │ ├── ui-bg_flat_75_ffffff_40x100.png
│ │ ├── ui-bg_glass_55_fbf9ee_1x400.png
│ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ ├── ui-bg_glass_75_dadada_1x400.png
│ │ ├── ui-bg_glass_75_e6e6e6_1x400.png
│ │ ├── ui-bg_glass_95_fef1ec_1x400.png
│ │ └── ui-bg_highlight-soft_75_cccccc_1x100.png
│ ├── jquery-ui-1.8.14.custom.min.css
│ └── jquery-ui-1.8.14.custom.css
├── bootswatch.less
├── variables.less
└── bootstrap-responsive.css
├── js
├── .jshintrc
├── bootstrap-transition.js
├── bootstrap-alert.js
├── bootstrap-button.js
├── bootstrap-dropdown.js
├── bootstrap-popover.js
├── combobox.js
├── bootstrap-tab.js
├── bootstrap-scrollspy.js
├── bootstrap-collapse.js
├── bootstrap-carousel.js
├── bootstrap-modal.js
├── bootstrap-typeahead.js
└── bootstrap-tooltip.js
├── README.md
├── conf_default.php
├── test.php
├── search.php
├── actions.php
├── nagios_commands.php
├── index.php
├── tools.php
└── parse_nagios_status.php
/img/spin.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/img/spin.gif
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/screenshot.png
--------------------------------------------------------------------------------
/css/images/ajax-loader.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/ajax-loader.png
--------------------------------------------------------------------------------
/css/images/form-check-off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/form-check-off.png
--------------------------------------------------------------------------------
/css/images/form-check-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/form-check-on.png
--------------------------------------------------------------------------------
/css/images/form-radio-off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/form-radio-off.png
--------------------------------------------------------------------------------
/css/images/form-radio-on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/form-radio-on.png
--------------------------------------------------------------------------------
/css/images/icons-18-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/icons-18-black.png
--------------------------------------------------------------------------------
/css/images/icons-18-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/icons-18-white.png
--------------------------------------------------------------------------------
/css/images/icons-36-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/icons-36-black.png
--------------------------------------------------------------------------------
/css/images/icons-36-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/icons-36-white.png
--------------------------------------------------------------------------------
/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/css/images/icon-search-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/images/icon-search-black.png
--------------------------------------------------------------------------------
/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_222222_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-icons_222222_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_2e83ff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-icons_2e83ff_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_454545_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-icons_454545_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_888888_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-icons_888888_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-icons_cd0a0a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-icons_cd0a0a_256x240.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
--------------------------------------------------------------------------------
/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vvuksan/alerting-controller/master/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
--------------------------------------------------------------------------------
/js/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "validthis": true,
3 | "laxcomma" : true,
4 | "laxbreak" : true,
5 | "browser" : true,
6 | "debug" : true,
7 | "boss" : true,
8 | "expr" : true,
9 | "asi" : true
10 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | alerting-controller
2 | ===================
3 |
4 | Easy way to control Nagios/Icinga
5 |
6 | This is WIP
7 |
8 | It is licensed under Apache License, v2.0. Please read the license here
9 |
10 | http://www.apache.org/licenses/LICENSE-2.0.html
11 |
--------------------------------------------------------------------------------
/conf_default.php:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/test.php:
--------------------------------------------------------------------------------
1 | "); print_r($nagios);
25 |
26 | ?>
--------------------------------------------------------------------------------
/js/bootstrap-transition.js:
--------------------------------------------------------------------------------
1 | /* ===================================================
2 | * bootstrap-transition.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#transitions
4 | * ===================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | $(function () {
24 |
25 | "use strict"; // jshint ;_;
26 |
27 |
28 | /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29 | * ======================================================= */
30 |
31 | $.support.transition = (function () {
32 |
33 | var transitionEnd = (function () {
34 |
35 | var el = document.createElement('bootstrap')
36 | , transEndEventNames = {
37 | 'WebkitTransition' : 'webkitTransitionEnd'
38 | , 'MozTransition' : 'transitionend'
39 | , 'OTransition' : 'oTransitionEnd'
40 | , 'msTransition' : 'MSTransitionEnd'
41 | , 'transition' : 'transitionend'
42 | }
43 | , name
44 |
45 | for (name in transEndEventNames){
46 | if (el.style[name] !== undefined) {
47 | return transEndEventNames[name]
48 | }
49 | }
50 |
51 | }())
52 |
53 | return transitionEnd && {
54 | end: transitionEnd
55 | }
56 |
57 | })()
58 |
59 | })
60 |
61 | }(window.jQuery);
--------------------------------------------------------------------------------
/css/bootswatch.less:
--------------------------------------------------------------------------------
1 | // Bootswatch.less
2 | // Swatch: Cerulean
3 | // Version: 2.0.3
4 | // -----------------------------------------------------
5 |
6 | // IMPORTS
7 | // -----------------------------------------------------
8 |
9 | @import url(https://fonts.googleapis.com/css?family=Telex);
10 |
11 | // NAVBAR
12 | // -----------------------------------------------------
13 |
14 | .navbar {
15 |
16 | font-family: @headingsFontFamily;
17 |
18 | .navbar-inner {
19 | #gradient > .vertical-three-colors(@navbarBackground, @navbarBackground, 90%, @navbarBackgroundHighlight);
20 | }
21 |
22 | .nav li.dropdown.active > .dropdown-toggle,
23 | .nav li.dropdown.active.open > .dropdown-toggle {
24 | background-color: @navbarLinkBackgroundActive;
25 | }
26 |
27 | .search-query {
28 | border: 1px solid darken(@linkColor, 10%);
29 | }
30 |
31 | .nav-collapse.in > .nav > li .dropdown-menu a {
32 | color: @white;
33 |
34 | &:hover {
35 | color: @white;
36 | }
37 | }
38 |
39 | .nav-collapse.in .nav li > a {
40 | color: @white;
41 |
42 | &:hover {
43 | background-color: #2B7CAC;
44 | }
45 | }
46 |
47 | .btn-navbar:hover {
48 | background-color: darken(@white, 20%);
49 | }
50 | }
51 |
52 | div.subnav {
53 | font-family: @headingsFontFamily;
54 | }
55 |
56 | // BUTTONS
57 | // -----------------------------------------------------
58 |
59 | .btn {
60 | #gradient > .vertical-three-colors(@white, @white, 5%, darken(@white, 0%));
61 | @shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
62 | .box-shadow(@shadow);
63 |
64 | &:hover {
65 | background-position: 0 0;
66 | }
67 | }
68 |
69 | .btn-primary {
70 | .buttonBackground(lighten(@btnPrimaryBackground, 5%), @btnPrimaryBackground);
71 | }
72 |
73 | .btn-info {
74 | .buttonBackground(lighten(@btnInfoBackground, 5%), @btnInfoBackground);
75 | }
76 |
77 | .btn-success {
78 | .buttonBackground(lighten(@btnSuccessBackground, 5%), @btnSuccessBackground);
79 | }
80 |
81 | .btn-warning {
82 | .buttonBackground(lighten(@btnWarningBackground, 5%), @btnWarningBackground);
83 | }
84 |
85 | .btn-danger {
86 | .buttonBackground(lighten(@btnDangerBackground, 5%), @btnDangerBackground);
87 | }
88 |
89 | .btn-inverse {
90 | .buttonBackground(lighten(@btnInverseBackground, 5%), @btnInverseBackground);
91 | }
92 |
93 | // ICONS
94 | // -----------------------------------------------------
95 |
96 | // Make icons gray
97 | i[class^="icon-"]{
98 | opacity: 0.8;
99 | }
100 |
--------------------------------------------------------------------------------
/js/bootstrap-alert.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-alert.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#alerts
4 | * ==========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* ALERT CLASS DEFINITION
27 | * ====================== */
28 |
29 | var dismiss = '[data-dismiss="alert"]'
30 | , Alert = function (el) {
31 | $(el).on('click', dismiss, this.close)
32 | }
33 |
34 | Alert.prototype.close = function (e) {
35 | var $this = $(this)
36 | , selector = $this.attr('data-target')
37 | , $parent
38 |
39 | if (!selector) {
40 | selector = $this.attr('href')
41 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
42 | }
43 |
44 | $parent = $(selector)
45 |
46 | e && e.preventDefault()
47 |
48 | $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
49 |
50 | $parent.trigger(e = $.Event('close'))
51 |
52 | if (e.isDefaultPrevented()) return
53 |
54 | $parent.removeClass('in')
55 |
56 | function removeElement() {
57 | $parent
58 | .trigger('closed')
59 | .remove()
60 | }
61 |
62 | $.support.transition && $parent.hasClass('fade') ?
63 | $parent.on($.support.transition.end, removeElement) :
64 | removeElement()
65 | }
66 |
67 |
68 | /* ALERT PLUGIN DEFINITION
69 | * ======================= */
70 |
71 | $.fn.alert = function (option) {
72 | return this.each(function () {
73 | var $this = $(this)
74 | , data = $this.data('alert')
75 | if (!data) $this.data('alert', (data = new Alert(this)))
76 | if (typeof option == 'string') data[option].call($this)
77 | })
78 | }
79 |
80 | $.fn.alert.Constructor = Alert
81 |
82 |
83 | /* ALERT DATA-API
84 | * ============== */
85 |
86 | $(function () {
87 | $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
88 | })
89 |
90 | }(window.jQuery);
--------------------------------------------------------------------------------
/search.php:
--------------------------------------------------------------------------------
1 | $alerts ) {
28 | foreach ( $alerts as $alert => $alert_settings ) {
29 | // Matching search
30 | if ( preg_match("/" . $search_term . "/i", $alert ) ) {
31 | if ( isset($alert_settings['notifications_enabled']) && $alert_settings['notifications_enabled'] == 0 ) {
32 | $state = "notification";
33 | } else {
34 | $current_state = $alert_settings['current_state'];
35 | $state = $states[$current_state];
36 | }
37 |
38 | $html .= "
| ";
39 | $html .= "" . $host_name . " | " . $alert . " |
";
40 |
41 | $count++;
42 |
43 | } // end of if ( preg_match("/" . $search_term . "/i"
44 |
45 | }
46 | }
47 |
48 | if ( $count > 0 ) {
49 |
50 | print "
66 |
69 | ";
70 |
71 | } else {
72 |
73 | ?>
74 |
75 | No results.
76 |
77 |
--------------------------------------------------------------------------------
/js/bootstrap-button.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-button.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#buttons
4 | * ============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* BUTTON PUBLIC CLASS DEFINITION
27 | * ============================== */
28 |
29 | var Button = function (element, options) {
30 | this.$element = $(element)
31 | this.options = $.extend({}, $.fn.button.defaults, options)
32 | }
33 |
34 | Button.prototype.setState = function (state) {
35 | var d = 'disabled'
36 | , $el = this.$element
37 | , data = $el.data()
38 | , val = $el.is('input') ? 'val' : 'html'
39 |
40 | state = state + 'Text'
41 | data.resetText || $el.data('resetText', $el[val]())
42 |
43 | $el[val](data[state] || this.options[state])
44 |
45 | // push to event loop to allow forms to submit
46 | setTimeout(function () {
47 | state == 'loadingText' ?
48 | $el.addClass(d).attr(d, d) :
49 | $el.removeClass(d).removeAttr(d)
50 | }, 0)
51 | }
52 |
53 | Button.prototype.toggle = function () {
54 | var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
55 |
56 | $parent && $parent
57 | .find('.active')
58 | .removeClass('active')
59 |
60 | this.$element.toggleClass('active')
61 | }
62 |
63 |
64 | /* BUTTON PLUGIN DEFINITION
65 | * ======================== */
66 |
67 | $.fn.button = function (option) {
68 | return this.each(function () {
69 | var $this = $(this)
70 | , data = $this.data('button')
71 | , options = typeof option == 'object' && option
72 | if (!data) $this.data('button', (data = new Button(this, options)))
73 | if (option == 'toggle') data.toggle()
74 | else if (option) data.setState(option)
75 | })
76 | }
77 |
78 | $.fn.button.defaults = {
79 | loadingText: 'loading...'
80 | }
81 |
82 | $.fn.button.Constructor = Button
83 |
84 |
85 | /* BUTTON DATA-API
86 | * =============== */
87 |
88 | $(function () {
89 | $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
90 | var $btn = $(e.target)
91 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
92 | $btn.button('toggle')
93 | })
94 | })
95 |
96 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap-dropdown.js:
--------------------------------------------------------------------------------
1 | /* ============================================================
2 | * bootstrap-dropdown.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4 | * ============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* DROPDOWN CLASS DEFINITION
27 | * ========================= */
28 |
29 | var toggle = '[data-toggle="dropdown"]'
30 | , Dropdown = function (element) {
31 | var $el = $(element).on('click.dropdown.data-api', this.toggle)
32 | $('html').on('click.dropdown.data-api', function () {
33 | $el.parent().removeClass('open')
34 | })
35 | }
36 |
37 | Dropdown.prototype = {
38 |
39 | constructor: Dropdown
40 |
41 | , toggle: function (e) {
42 | var $this = $(this)
43 | , $parent
44 | , selector
45 | , isActive
46 |
47 | if ($this.is('.disabled, :disabled')) return
48 |
49 | selector = $this.attr('data-target')
50 |
51 | if (!selector) {
52 | selector = $this.attr('href')
53 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
54 | }
55 |
56 | $parent = $(selector)
57 | $parent.length || ($parent = $this.parent())
58 |
59 | isActive = $parent.hasClass('open')
60 |
61 | clearMenus()
62 |
63 | if (!isActive) $parent.toggleClass('open')
64 |
65 | return false
66 | }
67 |
68 | }
69 |
70 | function clearMenus() {
71 | $(toggle).parent().removeClass('open')
72 | }
73 |
74 |
75 | /* DROPDOWN PLUGIN DEFINITION
76 | * ========================== */
77 |
78 | $.fn.dropdown = function (option) {
79 | return this.each(function () {
80 | var $this = $(this)
81 | , data = $this.data('dropdown')
82 | if (!data) $this.data('dropdown', (data = new Dropdown(this)))
83 | if (typeof option == 'string') data[option].call($this)
84 | })
85 | }
86 |
87 | $.fn.dropdown.Constructor = Dropdown
88 |
89 |
90 | /* APPLY TO STANDARD DROPDOWN ELEMENTS
91 | * =================================== */
92 |
93 | $(function () {
94 | $('html').on('click.dropdown.data-api', clearMenus)
95 | $('body')
96 | .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() })
97 | .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
98 | })
99 |
100 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap-popover.js:
--------------------------------------------------------------------------------
1 | /* ===========================================================
2 | * bootstrap-popover.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#popovers
4 | * ===========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * =========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* POPOVER PUBLIC CLASS DEFINITION
27 | * =============================== */
28 |
29 | var Popover = function ( element, options ) {
30 | this.init('popover', element, options)
31 | }
32 |
33 |
34 | /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
35 | ========================================== */
36 |
37 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
38 |
39 | constructor: Popover
40 |
41 | , setContent: function () {
42 | var $tip = this.tip()
43 | , title = this.getTitle()
44 | , content = this.getContent()
45 |
46 | $tip.find('.popover-title')[this.isHTML(title) ? 'html' : 'text'](title)
47 | $tip.find('.popover-content > *')[this.isHTML(content) ? 'html' : 'text'](content)
48 |
49 | $tip.removeClass('fade top bottom left right in')
50 | }
51 |
52 | , hasContent: function () {
53 | return this.getTitle() || this.getContent()
54 | }
55 |
56 | , getContent: function () {
57 | var content
58 | , $e = this.$element
59 | , o = this.options
60 |
61 | content = $e.attr('data-content')
62 | || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
63 |
64 | return content
65 | }
66 |
67 | , tip: function () {
68 | if (!this.$tip) {
69 | this.$tip = $(this.options.template)
70 | }
71 | return this.$tip
72 | }
73 |
74 | })
75 |
76 |
77 | /* POPOVER PLUGIN DEFINITION
78 | * ======================= */
79 |
80 | $.fn.popover = function (option) {
81 | return this.each(function () {
82 | var $this = $(this)
83 | , data = $this.data('popover')
84 | , options = typeof option == 'object' && option
85 | if (!data) $this.data('popover', (data = new Popover(this, options)))
86 | if (typeof option == 'string') data[option]()
87 | })
88 | }
89 |
90 | $.fn.popover.Constructor = Popover
91 |
92 | $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
93 | placement: 'right'
94 | , content: ''
95 | , template: ''
96 | })
97 |
98 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/combobox.js:
--------------------------------------------------------------------------------
1 | (function( $ ) {
2 | $.widget( "ui.combobox", {
3 | _create: function() {
4 | var self = this,
5 | select = this.element.hide(),
6 | selected = select.children( ":selected" ),
7 | value = selected.val() ? selected.text() : "";
8 | var input = this.input = $( "" )
9 | .insertAfter( select )
10 | .val( value )
11 | .autocomplete({
12 | delay: 0,
13 | minLength: 0,
14 | source: function( request, response ) {
15 | var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
16 | response( select.children( "option" ).map(function() {
17 | var text = $( this ).text();
18 | if ( this.value && ( !request.term || matcher.test(text) ) )
19 | return {
20 | label: text.replace(
21 | new RegExp(
22 | "(?![^&;]+;)(?!<[^<>]*)(" +
23 | $.ui.autocomplete.escapeRegex(request.term) +
24 | ")(?![^<>]*>)(?![^&;]+;)", "gi"
25 | ), "$1" ),
26 | value: text,
27 | option: this
28 | };
29 | }) );
30 | },
31 | select: function( event, ui ) {
32 | ui.item.option.selected = true;
33 | self._trigger( "selected", event, {
34 | item: ui.item.option
35 | });
36 | this.form.submit();
37 | },
38 | change: function( event, ui ) {
39 | if ( !ui.item ) {
40 | var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
41 | valid = false;
42 | select.children( "option" ).each(function() {
43 | if ( $( this ).text().match( matcher ) ) {
44 | this.selected = valid = true;
45 | return false;
46 | }
47 | });
48 | if ( !valid ) {
49 | // remove invalid value, as it didn't match anything
50 | $( this ).val( "" );
51 | select.val( "" );
52 | input.data( "autocomplete" ).term = "";
53 | return false;
54 | }
55 | }
56 | }
57 | })
58 | .addClass( "ui-widget ui-widget-content ui-corner-left" );
59 |
60 | input.data( "autocomplete" )._renderItem = function( ul, item ) {
61 | return $( "" )
62 | .data( "item.autocomplete", item )
63 | .append( "" + item.label + "" )
64 | .appendTo( ul );
65 | };
66 |
67 | this.button = $( "" )
68 | .attr( "tabIndex", -1 )
69 | .attr( "title", "Show All Items" )
70 | .insertAfter( input )
71 | .button({
72 | icons: {
73 | primary: "ui-icon-triangle-1-s"
74 | },
75 | text: false
76 | })
77 | .removeClass( "ui-corner-all" )
78 | .addClass( "ui-corner-right ui-button-icon" )
79 | .click(function() {
80 | // close if already visible
81 | if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
82 | input.autocomplete( "close" );
83 | return;
84 | }
85 |
86 | // work around a bug (likely same cause as #5265)
87 | $( this ).blur();
88 |
89 | // pass empty string as value to search for, displaying all results
90 | input.autocomplete( "search", "" );
91 | input.focus();
92 | });
93 | },
94 |
95 | destroy: function() {
96 | this.input.remove();
97 | this.button.remove();
98 | this.element.show();
99 | $.Widget.prototype.destroy.call( this );
100 | }
101 | });
102 | })( jQuery );
103 |
--------------------------------------------------------------------------------
/actions.php:
--------------------------------------------------------------------------------
1 |
23 | Problem! Host name is not valid ' . $_REQUEST['host_name'] . '. Please fix and resubmit.
24 |
25 | ';
26 | exit(1);
27 | } else {
28 | $host_name = $_REQUEST['host_name'];
29 | }
30 |
31 | if ( isset($_REQUEST['regex_search']) and $_REQUEST['regex_search'] == 1 ) {
32 | $regex_search = TRUE;
33 | } else {
34 | $regex_search = FALSE;
35 | }
36 |
37 |
38 | switch ( $_REQUEST['action'] ) {
39 |
40 | case "disable_notifications":
41 | $action = "notifications will be disabled";
42 | break;
43 | case "enable_notifications":
44 | $action = "notifications will be enabled";
45 | break;
46 | case "downtime":
47 | $action = "scheduled for downtime";
48 | break;
49 |
50 | }
51 |
52 | print '
53 |
54 | ';
55 |
56 | ######################################################################################
57 | # If alert hash is not available we are operating on a single host
58 | ######################################################################################
59 | if ( !isset($_REQUEST['alert']) or size($_REQUEST['alert']) == 0 ) {
60 |
61 | switch ( $_REQUEST['action'] ) {
62 |
63 | case "disable_notifications":
64 | disable_host_notifications($host_name);
65 | break;
66 | case "enable_notifications":
67 | enable_host_notifications($host_name);
68 | break;
69 | case "downtime":
70 | schedule_host_downtime($host_name, is_numeric($_REQUEST['downtime_duration']) ? $_REQUEST['downtime_duration'] : 0 );
71 | foreach ($nagios['services'][$host_name] as $alert_name => $details ) {
72 | print "Disabling $alert_name
";
73 | schedule_service_downtime($host_name, $alert_name, is_numeric($_REQUEST['downtime_duration']) ? $_REQUEST['downtime_duration'] : 0 );
74 | }
75 | break;
76 |
77 | }
78 |
79 | print "Command sent";
80 |
81 | } else {
82 |
83 | foreach ( $_REQUEST['alert'] as $index => $alert ) {
84 | // If it's regex_search we are encoding hostname and alert with a pipe
85 | if ( $regex_search ) {
86 | if ( preg_match("/^(.*)(\|)(.*)/", $alert, $out ) ) {
87 | $host_name = $out[1];
88 | $alert_name = $out[3];
89 | } else {
90 | continue;
91 | }
92 | } else {
93 | $alert_name = $alert;
94 | }
95 |
96 | // Make sure alert exists
97 | if ( isset($nagios['services'][$host_name][$alert_name] ) ) {
98 |
99 | print "" . $alert . " " . $action . "
";
100 |
101 | switch ( $_REQUEST['action'] ) {
102 |
103 | case "disable_notifications":
104 | disable_service_notifications($host_name, $alert_name);
105 | break;
106 | case "enable_notifications":
107 | enable_service_notifications($host_name, $alert_name);
108 | break;
109 | case "downtime":
110 | schedule_service_downtime($host_name, $alert_name, is_numeric($_REQUEST['downtime_duration']) ? $_REQUEST['downtime_duration'] : 0 );
111 | break;
112 |
113 | }
114 |
115 | }
116 |
117 | } // end of foreach ( $_REQUEST['alert'] as $index => $alert ) {
118 |
119 | } // end if ( !isset($_REQUEST['alert']) or size($_REQUEST['alert']) == 0 ) {
120 |
121 |
122 | print '
';
123 |
124 |
125 | ?>
--------------------------------------------------------------------------------
/js/bootstrap-tab.js:
--------------------------------------------------------------------------------
1 | /* ========================================================
2 | * bootstrap-tab.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#tabs
4 | * ========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ======================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* TAB CLASS DEFINITION
27 | * ==================== */
28 |
29 | var Tab = function ( element ) {
30 | this.element = $(element)
31 | }
32 |
33 | Tab.prototype = {
34 |
35 | constructor: Tab
36 |
37 | , show: function () {
38 | var $this = this.element
39 | , $ul = $this.closest('ul:not(.dropdown-menu)')
40 | , selector = $this.attr('data-target')
41 | , previous
42 | , $target
43 | , e
44 |
45 | if (!selector) {
46 | selector = $this.attr('href')
47 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
48 | }
49 |
50 | if ( $this.parent('li').hasClass('active') ) return
51 |
52 | previous = $ul.find('.active a').last()[0]
53 |
54 | e = $.Event('show', {
55 | relatedTarget: previous
56 | })
57 |
58 | $this.trigger(e)
59 |
60 | if (e.isDefaultPrevented()) return
61 |
62 | $target = $(selector)
63 |
64 | this.activate($this.parent('li'), $ul)
65 | this.activate($target, $target.parent(), function () {
66 | $this.trigger({
67 | type: 'shown'
68 | , relatedTarget: previous
69 | })
70 | })
71 | }
72 |
73 | , activate: function ( element, container, callback) {
74 | var $active = container.find('> .active')
75 | , transition = callback
76 | && $.support.transition
77 | && $active.hasClass('fade')
78 |
79 | function next() {
80 | $active
81 | .removeClass('active')
82 | .find('> .dropdown-menu > .active')
83 | .removeClass('active')
84 |
85 | element.addClass('active')
86 |
87 | if (transition) {
88 | element[0].offsetWidth // reflow for transition
89 | element.addClass('in')
90 | } else {
91 | element.removeClass('fade')
92 | }
93 |
94 | if ( element.parent('.dropdown-menu') ) {
95 | element.closest('li.dropdown').addClass('active')
96 | }
97 |
98 | callback && callback()
99 | }
100 |
101 | transition ?
102 | $active.one($.support.transition.end, next) :
103 | next()
104 |
105 | $active.removeClass('in')
106 | }
107 | }
108 |
109 |
110 | /* TAB PLUGIN DEFINITION
111 | * ===================== */
112 |
113 | $.fn.tab = function ( option ) {
114 | return this.each(function () {
115 | var $this = $(this)
116 | , data = $this.data('tab')
117 | if (!data) $this.data('tab', (data = new Tab(this)))
118 | if (typeof option == 'string') data[option]()
119 | })
120 | }
121 |
122 | $.fn.tab.Constructor = Tab
123 |
124 |
125 | /* TAB DATA-API
126 | * ============ */
127 |
128 | $(function () {
129 | $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
130 | e.preventDefault()
131 | $(this).tab('show')
132 | })
133 | })
134 |
135 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap-scrollspy.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-scrollspy.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4 | * =============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* SCROLLSPY CLASS DEFINITION
27 | * ========================== */
28 |
29 | function ScrollSpy( element, options) {
30 | var process = $.proxy(this.process, this)
31 | , $element = $(element).is('body') ? $(window) : $(element)
32 | , href
33 | this.options = $.extend({}, $.fn.scrollspy.defaults, options)
34 | this.$scrollElement = $element.on('scroll.scroll.data-api', process)
35 | this.selector = (this.options.target
36 | || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
37 | || '') + ' .nav li > a'
38 | this.$body = $('body')
39 | this.refresh()
40 | this.process()
41 | }
42 |
43 | ScrollSpy.prototype = {
44 |
45 | constructor: ScrollSpy
46 |
47 | , refresh: function () {
48 | var self = this
49 | , $targets
50 |
51 | this.offsets = $([])
52 | this.targets = $([])
53 |
54 | $targets = this.$body
55 | .find(this.selector)
56 | .map(function () {
57 | var $el = $(this)
58 | , href = $el.data('target') || $el.attr('href')
59 | , $href = /^#\w/.test(href) && $(href)
60 | return ( $href
61 | && href.length
62 | && [[ $href.position().top, href ]] ) || null
63 | })
64 | .sort(function (a, b) { return a[0] - b[0] })
65 | .each(function () {
66 | self.offsets.push(this[0])
67 | self.targets.push(this[1])
68 | })
69 | }
70 |
71 | , process: function () {
72 | var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
73 | , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
74 | , maxScroll = scrollHeight - this.$scrollElement.height()
75 | , offsets = this.offsets
76 | , targets = this.targets
77 | , activeTarget = this.activeTarget
78 | , i
79 |
80 | if (scrollTop >= maxScroll) {
81 | return activeTarget != (i = targets.last()[0])
82 | && this.activate ( i )
83 | }
84 |
85 | for (i = offsets.length; i--;) {
86 | activeTarget != targets[i]
87 | && scrollTop >= offsets[i]
88 | && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
89 | && this.activate( targets[i] )
90 | }
91 | }
92 |
93 | , activate: function (target) {
94 | var active
95 | , selector
96 |
97 | this.activeTarget = target
98 |
99 | $(this.selector)
100 | .parent('.active')
101 | .removeClass('active')
102 |
103 | selector = this.selector
104 | + '[data-target="' + target + '"],'
105 | + this.selector + '[href="' + target + '"]'
106 |
107 | active = $(selector)
108 | .parent('li')
109 | .addClass('active')
110 |
111 | if (active.parent('.dropdown-menu')) {
112 | active = active.closest('li.dropdown').addClass('active')
113 | }
114 |
115 | active.trigger('activate')
116 | }
117 |
118 | }
119 |
120 |
121 | /* SCROLLSPY PLUGIN DEFINITION
122 | * =========================== */
123 |
124 | $.fn.scrollspy = function ( option ) {
125 | return this.each(function () {
126 | var $this = $(this)
127 | , data = $this.data('scrollspy')
128 | , options = typeof option == 'object' && option
129 | if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
130 | if (typeof option == 'string') data[option]()
131 | })
132 | }
133 |
134 | $.fn.scrollspy.Constructor = ScrollSpy
135 |
136 | $.fn.scrollspy.defaults = {
137 | offset: 10
138 | }
139 |
140 |
141 | /* SCROLLSPY DATA-API
142 | * ================== */
143 |
144 | $(function () {
145 | $('[data-spy="scroll"]').each(function () {
146 | var $spy = $(this)
147 | $spy.scrollspy($spy.data())
148 | })
149 | })
150 |
151 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap-collapse.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-collapse.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#collapse
4 | * =============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* COLLAPSE PUBLIC CLASS DEFINITION
27 | * ================================ */
28 |
29 | var Collapse = function (element, options) {
30 | this.$element = $(element)
31 | this.options = $.extend({}, $.fn.collapse.defaults, options)
32 |
33 | if (this.options.parent) {
34 | this.$parent = $(this.options.parent)
35 | }
36 |
37 | this.options.toggle && this.toggle()
38 | }
39 |
40 | Collapse.prototype = {
41 |
42 | constructor: Collapse
43 |
44 | , dimension: function () {
45 | var hasWidth = this.$element.hasClass('width')
46 | return hasWidth ? 'width' : 'height'
47 | }
48 |
49 | , show: function () {
50 | var dimension
51 | , scroll
52 | , actives
53 | , hasData
54 |
55 | if (this.transitioning) return
56 |
57 | dimension = this.dimension()
58 | scroll = $.camelCase(['scroll', dimension].join('-'))
59 | actives = this.$parent && this.$parent.find('> .accordion-group > .in')
60 |
61 | if (actives && actives.length) {
62 | hasData = actives.data('collapse')
63 | if (hasData && hasData.transitioning) return
64 | actives.collapse('hide')
65 | hasData || actives.data('collapse', null)
66 | }
67 |
68 | this.$element[dimension](0)
69 | this.transition('addClass', $.Event('show'), 'shown')
70 | this.$element[dimension](this.$element[0][scroll])
71 | }
72 |
73 | , hide: function () {
74 | var dimension
75 | if (this.transitioning) return
76 | dimension = this.dimension()
77 | this.reset(this.$element[dimension]())
78 | this.transition('removeClass', $.Event('hide'), 'hidden')
79 | this.$element[dimension](0)
80 | }
81 |
82 | , reset: function (size) {
83 | var dimension = this.dimension()
84 |
85 | this.$element
86 | .removeClass('collapse')
87 | [dimension](size || 'auto')
88 | [0].offsetWidth
89 |
90 | this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
91 |
92 | return this
93 | }
94 |
95 | , transition: function (method, startEvent, completeEvent) {
96 | var that = this
97 | , complete = function () {
98 | if (startEvent.type == 'show') that.reset()
99 | that.transitioning = 0
100 | that.$element.trigger(completeEvent)
101 | }
102 |
103 | this.$element.trigger(startEvent)
104 |
105 | if (startEvent.isDefaultPrevented()) return
106 |
107 | this.transitioning = 1
108 |
109 | this.$element[method]('in')
110 |
111 | $.support.transition && this.$element.hasClass('collapse') ?
112 | this.$element.one($.support.transition.end, complete) :
113 | complete()
114 | }
115 |
116 | , toggle: function () {
117 | this[this.$element.hasClass('in') ? 'hide' : 'show']()
118 | }
119 |
120 | }
121 |
122 |
123 | /* COLLAPSIBLE PLUGIN DEFINITION
124 | * ============================== */
125 |
126 | $.fn.collapse = function (option) {
127 | return this.each(function () {
128 | var $this = $(this)
129 | , data = $this.data('collapse')
130 | , options = typeof option == 'object' && option
131 | if (!data) $this.data('collapse', (data = new Collapse(this, options)))
132 | if (typeof option == 'string') data[option]()
133 | })
134 | }
135 |
136 | $.fn.collapse.defaults = {
137 | toggle: true
138 | }
139 |
140 | $.fn.collapse.Constructor = Collapse
141 |
142 |
143 | /* COLLAPSIBLE DATA-API
144 | * ==================== */
145 |
146 | $(function () {
147 | $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
148 | var $this = $(this), href
149 | , target = $this.attr('data-target')
150 | || e.preventDefault()
151 | || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
152 | , option = $(target).data('collapse') ? 'toggle' : $this.data()
153 | $(target).collapse(option)
154 | })
155 | })
156 |
157 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap-carousel.js:
--------------------------------------------------------------------------------
1 | /* ==========================================================
2 | * bootstrap-carousel.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#carousel
4 | * ==========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================== */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* CAROUSEL CLASS DEFINITION
27 | * ========================= */
28 |
29 | var Carousel = function (element, options) {
30 | this.$element = $(element)
31 | this.options = options
32 | this.options.slide && this.slide(this.options.slide)
33 | this.options.pause == 'hover' && this.$element
34 | .on('mouseenter', $.proxy(this.pause, this))
35 | .on('mouseleave', $.proxy(this.cycle, this))
36 | }
37 |
38 | Carousel.prototype = {
39 |
40 | cycle: function (e) {
41 | if (!e) this.paused = false
42 | this.options.interval
43 | && !this.paused
44 | && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
45 | return this
46 | }
47 |
48 | , to: function (pos) {
49 | var $active = this.$element.find('.active')
50 | , children = $active.parent().children()
51 | , activePos = children.index($active)
52 | , that = this
53 |
54 | if (pos > (children.length - 1) || pos < 0) return
55 |
56 | if (this.sliding) {
57 | return this.$element.one('slid', function () {
58 | that.to(pos)
59 | })
60 | }
61 |
62 | if (activePos == pos) {
63 | return this.pause().cycle()
64 | }
65 |
66 | return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
67 | }
68 |
69 | , pause: function (e) {
70 | if (!e) this.paused = true
71 | clearInterval(this.interval)
72 | this.interval = null
73 | return this
74 | }
75 |
76 | , next: function () {
77 | if (this.sliding) return
78 | return this.slide('next')
79 | }
80 |
81 | , prev: function () {
82 | if (this.sliding) return
83 | return this.slide('prev')
84 | }
85 |
86 | , slide: function (type, next) {
87 | var $active = this.$element.find('.active')
88 | , $next = next || $active[type]()
89 | , isCycling = this.interval
90 | , direction = type == 'next' ? 'left' : 'right'
91 | , fallback = type == 'next' ? 'first' : 'last'
92 | , that = this
93 | , e = $.Event('slide')
94 |
95 | this.sliding = true
96 |
97 | isCycling && this.pause()
98 |
99 | $next = $next.length ? $next : this.$element.find('.item')[fallback]()
100 |
101 | if ($next.hasClass('active')) return
102 |
103 | if ($.support.transition && this.$element.hasClass('slide')) {
104 | this.$element.trigger(e)
105 | if (e.isDefaultPrevented()) return
106 | $next.addClass(type)
107 | $next[0].offsetWidth // force reflow
108 | $active.addClass(direction)
109 | $next.addClass(direction)
110 | this.$element.one($.support.transition.end, function () {
111 | $next.removeClass([type, direction].join(' ')).addClass('active')
112 | $active.removeClass(['active', direction].join(' '))
113 | that.sliding = false
114 | setTimeout(function () { that.$element.trigger('slid') }, 0)
115 | })
116 | } else {
117 | this.$element.trigger(e)
118 | if (e.isDefaultPrevented()) return
119 | $active.removeClass('active')
120 | $next.addClass('active')
121 | this.sliding = false
122 | this.$element.trigger('slid')
123 | }
124 |
125 | isCycling && this.cycle()
126 |
127 | return this
128 | }
129 |
130 | }
131 |
132 |
133 | /* CAROUSEL PLUGIN DEFINITION
134 | * ========================== */
135 |
136 | $.fn.carousel = function (option) {
137 | return this.each(function () {
138 | var $this = $(this)
139 | , data = $this.data('carousel')
140 | , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
141 | if (!data) $this.data('carousel', (data = new Carousel(this, options)))
142 | if (typeof option == 'number') data.to(option)
143 | else if (typeof option == 'string' || (option = options.slide)) data[option]()
144 | else if (options.interval) data.cycle()
145 | })
146 | }
147 |
148 | $.fn.carousel.defaults = {
149 | interval: 5000
150 | , pause: 'hover'
151 | }
152 |
153 | $.fn.carousel.Constructor = Carousel
154 |
155 |
156 | /* CAROUSEL DATA-API
157 | * ================= */
158 |
159 | $(function () {
160 | $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
161 | var $this = $(this), href
162 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
163 | , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
164 | $target.carousel(options)
165 | e.preventDefault()
166 | })
167 | })
168 |
169 | }(window.jQuery);
--------------------------------------------------------------------------------
/nagios_commands.php:
--------------------------------------------------------------------------------
1 | nobody
18 | # [password] => secret
19 | # [p] => true
20 | #)
21 | function commandline_arguments($argv) {
22 | $_ARG = array();
23 | foreach ($argv as $arg) {
24 | if (ereg('--[a-zA-Z0-9]*=.*',$arg)) {
25 | $str = split("=",$arg); $arg = '';
26 | $key = ereg_replace("--",'',$str[0]);
27 | for ( $i = 1; $i < count($str); $i++ ) {
28 | $arg .= $str[$i];
29 | }
30 | $_ARG[$key] = $arg;
31 | } elseif(ereg('-[a-zA-Z0-9]',$arg)) {
32 | $arg = ereg_replace("-",'',$arg);
33 | $_ARG[$arg] = 'true';
34 | }
35 |
36 | }
37 | return $_ARG;
38 | }
39 |
40 |
41 | ///////////////////////////////////////////////////////////////////////////////
42 | // Function that opens up a pipe to Nagios command file and sends a command
43 | ///////////////////////////////////////////////////////////////////////////////
44 | function send_command_to_nagios( $command_string ) {
45 |
46 | global $conf;
47 |
48 | if ( file_exists ( $conf['nagios_command_file'] ) ) {
49 | $fifo = fopen( $conf['nagios_command_file'], 'a');
50 | fwrite($fifo, $command_string);
51 | fclose($fifo);
52 |
53 | } else {
54 | return 1;
55 | }
56 |
57 | }
58 |
59 | ///////////////////////////////////////////////////////////////////////////////
60 | //
61 | ///////////////////////////////////////////////////////////////////////////////
62 | function schedule_service_downtime($hostname, $service, $downtime = 0 ) {
63 |
64 | global $conf;
65 | if ( $downtime == 0 )
66 | $downtime = $conf['default_downtime_period'];
67 | $now = time();
68 | $end_maint = $now + $downtime;
69 |
70 |
71 | $command_string = "[$now] SCHEDULE_SVC_DOWNTIME;$hostname;$service;$now;$end_maint;1;0;$downtime;SCRIPT;Invoked from command line\n";
72 |
73 | send_command_to_nagios( $command_string );
74 |
75 | }
76 |
77 | ///////////////////////////////////////////////////////////////////////////////
78 | //
79 | ///////////////////////////////////////////////////////////////////////////////
80 | function schedule_host_service_downtime($hostname, $downtime = 0 ) {
81 |
82 | global $conf;
83 | if ( $downtime == 0 )
84 | $downtime = $conf['default_downtime_period'];
85 | $now = time();
86 | $end_maint = $now + $downtime;
87 |
88 | $command_string = "[$now] SCHEDULE_HOST_SVC_DOWNTIME;$hostname;$now;$end_maint;0;0;$downtime;SCRIPT;Invoked from command line\n";
89 |
90 | send_command_to_nagios( $command_string );
91 |
92 | }
93 |
94 | ///////////////////////////////////////////////////////////////////////////////
95 | //
96 | ///////////////////////////////////////////////////////////////////////////////
97 | function schedule_host_downtime($hostname, $downtime = 0 ) {
98 |
99 | global $conf;
100 | if ( $downtime == 0 )
101 | $downtime = $conf['default_downtime_period'];
102 | $now = time();
103 | $end_maint = $now + $downtime;
104 |
105 |
106 | $command_string = "[$now] SCHEDULE_HOST_DOWNTIME;$hostname;$now;$end_maint;0;0;$downtime;SCRIPT;Invoked from command line\n";
107 |
108 | send_command_to_nagios( $command_string );
109 |
110 | }
111 |
112 | ///////////////////////////////////////////////////////////////////////////////
113 | //
114 | ///////////////////////////////////////////////////////////////////////////////
115 | function enable_service_notifications($hostname, $service ) {
116 |
117 | global $conf;
118 |
119 | $now = time();
120 |
121 | $command_string = "[$now] ENABLE_SVC_NOTIFICATIONS;$hostname;$service\n";
122 |
123 | send_command_to_nagios( $command_string );
124 |
125 | }
126 |
127 | ///////////////////////////////////////////////////////////////////////////////
128 | //
129 | ///////////////////////////////////////////////////////////////////////////////
130 | function disable_service_notifications($hostname, $service ) {
131 |
132 | global $conf;
133 |
134 | $now = time();
135 |
136 | $command_string = "[$now] DISABLE_SVC_NOTIFICATIONS;$hostname;$service\n";
137 |
138 | send_command_to_nagios( $command_string );
139 |
140 | }
141 |
142 | ///////////////////////////////////////////////////////////////////////////////
143 | //
144 | ///////////////////////////////////////////////////////////////////////////////
145 | function disable_all_service_notifications($hostname ) {
146 |
147 | global $conf;
148 |
149 | $now = time();
150 |
151 | $command_string = "[$now] DISABLE_ALL_NOTIFICATIONS_BEYOND_HOST;$hostname\n";
152 |
153 | send_command_to_nagios( $command_string );
154 |
155 | }
156 |
157 | ///////////////////////////////////////////////////////////////////////////////
158 | //
159 | ///////////////////////////////////////////////////////////////////////////////
160 | function disable_host_notifications( $hostname ) {
161 |
162 | global $conf;
163 |
164 | $now = time();
165 |
166 | $command_string = "[$now] DISABLE_HOST_NOTIFICATIONS;$hostname\n";
167 |
168 | send_command_to_nagios( $command_string );
169 |
170 | }
171 |
172 | ///////////////////////////////////////////////////////////////////////////////
173 | //
174 | ///////////////////////////////////////////////////////////////////////////////
175 | function enable_host_notifications($hostname ) {
176 |
177 | global $conf;
178 |
179 | $now = time();
180 |
181 | $command_string = "[$now] ENABLE_HOST_NOTIFICATIONS;$hostname\n";
182 |
183 | send_command_to_nagios( $command_string );
184 |
185 | }
186 |
187 |
188 | ?>
189 |
--------------------------------------------------------------------------------
/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Alerting controller
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
20 |
49 |
50 |
51 |
52 |
70 |
71 |
72 |
73 |
Alert Controller
74 |
75 |
76 | "ok",
102 | 1 => "warning",
103 | 2 => "critical",
104 | 3 => "unknown"
105 | );
106 |
107 |
108 | /////////////////////////////////////////////////////////////////////////////////////////////////////
109 | //
110 | /////////////////////////////////////////////////////////////////////////////////////////////////////
111 | if ( !isset($_REQUEST['regex']) ) {
112 |
113 | ?>
114 |
115 |
151 |
154 | ";
155 |
156 | }
157 |
158 | } // end of if ( !isset($_REQUEST['regex']) )
159 |
160 | if ( isset($_REQUEST['regex']) && $_REQUEST['regex'] == 1 ) {
161 |
162 | ?>
163 |
164 |
168 |
169 |
170 |
171 |
172 |
173 | }
174 | #print "
";print_r($nagios);
175 |
176 | ?>
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
--------------------------------------------------------------------------------
/js/bootstrap-modal.js:
--------------------------------------------------------------------------------
1 | /* =========================================================
2 | * bootstrap-modal.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#modals
4 | * =========================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ========================================================= */
19 |
20 |
21 | !function ($) {
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* MODAL CLASS DEFINITION
27 | * ====================== */
28 |
29 | var Modal = function (content, options) {
30 | this.options = options
31 | this.$element = $(content)
32 | .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
33 | }
34 |
35 | Modal.prototype = {
36 |
37 | constructor: Modal
38 |
39 | , toggle: function () {
40 | return this[!this.isShown ? 'show' : 'hide']()
41 | }
42 |
43 | , show: function () {
44 | var that = this
45 | , e = $.Event('show')
46 |
47 | this.$element.trigger(e)
48 |
49 | if (this.isShown || e.isDefaultPrevented()) return
50 |
51 | $('body').addClass('modal-open')
52 |
53 | this.isShown = true
54 |
55 | escape.call(this)
56 | backdrop.call(this, function () {
57 | var transition = $.support.transition && that.$element.hasClass('fade')
58 |
59 | if (!that.$element.parent().length) {
60 | that.$element.appendTo(document.body) //don't move modals dom position
61 | }
62 |
63 | that.$element
64 | .show()
65 |
66 | if (transition) {
67 | that.$element[0].offsetWidth // force reflow
68 | }
69 |
70 | that.$element.addClass('in')
71 |
72 | transition ?
73 | that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
74 | that.$element.trigger('shown')
75 |
76 | })
77 | }
78 |
79 | , hide: function (e) {
80 | e && e.preventDefault()
81 |
82 | var that = this
83 |
84 | e = $.Event('hide')
85 |
86 | this.$element.trigger(e)
87 |
88 | if (!this.isShown || e.isDefaultPrevented()) return
89 |
90 | this.isShown = false
91 |
92 | $('body').removeClass('modal-open')
93 |
94 | escape.call(this)
95 |
96 | this.$element.removeClass('in')
97 |
98 | $.support.transition && this.$element.hasClass('fade') ?
99 | hideWithTransition.call(this) :
100 | hideModal.call(this)
101 | }
102 |
103 | }
104 |
105 |
106 | /* MODAL PRIVATE METHODS
107 | * ===================== */
108 |
109 | function hideWithTransition() {
110 | var that = this
111 | , timeout = setTimeout(function () {
112 | that.$element.off($.support.transition.end)
113 | hideModal.call(that)
114 | }, 500)
115 |
116 | this.$element.one($.support.transition.end, function () {
117 | clearTimeout(timeout)
118 | hideModal.call(that)
119 | })
120 | }
121 |
122 | function hideModal(that) {
123 | this.$element
124 | .hide()
125 | .trigger('hidden')
126 |
127 | backdrop.call(this)
128 | }
129 |
130 | function backdrop(callback) {
131 | var that = this
132 | , animate = this.$element.hasClass('fade') ? 'fade' : ''
133 |
134 | if (this.isShown && this.options.backdrop) {
135 | var doAnimate = $.support.transition && animate
136 |
137 | this.$backdrop = $('')
138 | .appendTo(document.body)
139 |
140 | if (this.options.backdrop != 'static') {
141 | this.$backdrop.click($.proxy(this.hide, this))
142 | }
143 |
144 | if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
145 |
146 | this.$backdrop.addClass('in')
147 |
148 | doAnimate ?
149 | this.$backdrop.one($.support.transition.end, callback) :
150 | callback()
151 |
152 | } else if (!this.isShown && this.$backdrop) {
153 | this.$backdrop.removeClass('in')
154 |
155 | $.support.transition && this.$element.hasClass('fade')?
156 | this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
157 | removeBackdrop.call(this)
158 |
159 | } else if (callback) {
160 | callback()
161 | }
162 | }
163 |
164 | function removeBackdrop() {
165 | this.$backdrop.remove()
166 | this.$backdrop = null
167 | }
168 |
169 | function escape() {
170 | var that = this
171 | if (this.isShown && this.options.keyboard) {
172 | $(document).on('keyup.dismiss.modal', function ( e ) {
173 | e.which == 27 && that.hide()
174 | })
175 | } else if (!this.isShown) {
176 | $(document).off('keyup.dismiss.modal')
177 | }
178 | }
179 |
180 |
181 | /* MODAL PLUGIN DEFINITION
182 | * ======================= */
183 |
184 | $.fn.modal = function (option) {
185 | return this.each(function () {
186 | var $this = $(this)
187 | , data = $this.data('modal')
188 | , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
189 | if (!data) $this.data('modal', (data = new Modal(this, options)))
190 | if (typeof option == 'string') data[option]()
191 | else if (options.show) data.show()
192 | })
193 | }
194 |
195 | $.fn.modal.defaults = {
196 | backdrop: true
197 | , keyboard: true
198 | , show: true
199 | }
200 |
201 | $.fn.modal.Constructor = Modal
202 |
203 |
204 | /* MODAL DATA-API
205 | * ============== */
206 |
207 | $(function () {
208 | $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
209 | var $this = $(this), href
210 | , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
211 | , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
212 |
213 | e.preventDefault()
214 | $target.modal(option)
215 | })
216 | })
217 |
218 | }(window.jQuery);
--------------------------------------------------------------------------------
/tools.php:
--------------------------------------------------------------------------------
1 | nobody
17 | # [password] => secret
18 | # [p] => true
19 | #)
20 | function commandline_arguments($argv) {
21 | $_ARG = array();
22 | foreach ($argv as $arg) {
23 | if (ereg('--[a-zA-Z0-9]*=.*',$arg)) {
24 | $str = split("=",$arg); $arg = '';
25 | $key = ereg_replace("--",'',$str[0]);
26 | for ( $i = 1; $i < count($str); $i++ ) {
27 | $arg .= $str[$i];
28 | }
29 | $_ARG[$key] = $arg;
30 | } elseif(ereg('-[a-zA-Z0-9]',$arg)) {
31 | $arg = ereg_replace("-",'',$arg);
32 | $_ARG[$arg] = 'true';
33 | }
34 |
35 | }
36 | return $_ARG;
37 | }
38 |
39 |
40 |
41 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
42 | # #
43 | # B00zy's timespan script v1.2 #
44 | # #
45 | # timespan -- get the exact time span between any two moments in time. #
46 | # #
47 | # Description: #
48 | # #
49 | # class timespan, function calc ( int timestamp1, int timestamp2) #
50 | # #
51 | # The purpose of this script is to be able to return the time span #
52 | # between any two specific moments in time AFTER the Unix Epoch #
53 | # (January 1 1970) in a human-readable format. You could, for example, #
54 | # determine your age, how long you have been married, or the last time #
55 | # you... you know. ;) #
56 | # #
57 | # The class, "timespan", will produce variables within the class #
58 | # respectively titled years, months, weeks, days, hours, minutes, #
59 | # seconds. #
60 | # #
61 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
62 | # #
63 | # Example 1. B00zy's age. #
64 | # #
65 | # $t = new timespan( time(), mktime(0,13,0,8,28,1982)); #
66 | # print "B00zy is $t->years years, $t->months months, ". #
67 | # "$t->days days, $t->hours hours, $t->minutes minutes, ". #
68 | # "and $t->seconds seconds old.\n"; #
69 | # #
70 | # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
71 |
72 | define('day', 60*60*24 );
73 | define('hour', 60*60 );
74 | define('minute', 60 );
75 |
76 | class timespan
77 | {
78 | var $years;
79 | var $months;
80 | var $weeks;
81 | var $days;
82 | var $hours;
83 | var $minutes;
84 | var $seconds;
85 |
86 | function leap($time)
87 | {
88 | if (date('L',$time) and (date('z',$time) > 58))
89 | return (double)(60*60*24*366);
90 | else
91 | {
92 | $de = getdate($time);
93 | $mkt = mktime(0,0,0,$de['mon'],$de['mday'],($de['year'] - 1));
94 | if ((date('z',$time) <= 58) and date('L',$mkt))
95 | return (double)(60*60*24*366);
96 | else
97 | return (double)(60*60*24*365);
98 | }
99 | }
100 | function readable()
101 | {
102 | $values = array('years','months','weeks','days','hours','minutes','seconds');
103 | foreach ($values as $k => $v)
104 | if ($this->{$v}) $fmt .= ( $fmt? ', ': '') . $this->{$v} . " $v";
105 | return $fmt . ( $fmt? '.': '') ;
106 | }
107 |
108 | function timespan($after,$before)
109 | {
110 | # Set variables to zero, instead of null.
111 |
112 | $this->years = 0;
113 | $this->months = 0;
114 | $this->weeks = 0;
115 | $this->days = 0;
116 | $this->hours = 0;
117 | $this->minutes = 0;
118 | $this->seconds = 0;
119 |
120 | $duration = $after - $before;
121 |
122 | # 1. Number of years
123 | $dec = $after;
124 |
125 | $year = $this->leap($dec);
126 |
127 | while (floor($duration / $year) >= 1)
128 | {
129 | # We don't need this VV
130 | #print date("F j, Y\n",$dec);
131 |
132 | $this->years += 1;
133 | $duration -= (int)$year;
134 | $dec -= (int)$year;
135 |
136 | $year = $this->leap($dec);
137 | }
138 |
139 | # 2. Number of months
140 | $dec = $after;
141 | $m = date('n',$after);
142 | $d = date('j',$after);
143 |
144 | while (($duration - day) >= 0)
145 | {
146 | $duration -= day;
147 | $dec -= day;
148 | $this->days += 1;
149 |
150 | if ( (date('n',$dec) != $m) and (date('j',$dec) <= $d) )
151 | {
152 | $m = date('n',$dec);
153 | $d = date('j',$dec);
154 |
155 | $this->months += 1;
156 | $this->days = 0;
157 | }
158 | }
159 | # 3. Number of weeks.
160 | $this->weeks = floor($this->days / 7);
161 | $this->days %= 7;
162 |
163 | # 4. Number of hours, minutes, and seconds.
164 | $this->hours = floor($duration / (60*60));
165 | $duration %= (60*60);
166 |
167 | $this->minutes = floor($duration / 60);
168 | $duration %= 60;
169 |
170 | $this->seconds = $duration;
171 | }
172 | }
173 |
174 |
175 | function our_date_format($date) {
176 | date_default_timezone_set('UTC');
177 | return date("r", strtotime($date));
178 | }
179 |
180 |
181 | ?>
--------------------------------------------------------------------------------
/css/variables.less:
--------------------------------------------------------------------------------
1 | // Variables.less
2 | // Variables to customize the look and feel of Bootstrap
3 | // Swatch: Cerulean
4 | // Version: 2.0.3
5 | // -----------------------------------------------------
6 |
7 | // GLOBAL VALUES
8 | // --------------------------------------------------
9 |
10 |
11 | // Grays
12 | // -------------------------
13 | @black: #000;
14 | @grayDarker: #222;
15 | @grayDark: #333;
16 | @gray: #555;
17 | @grayLight: #999;
18 | @grayLighter: #F5F5F5;
19 | @white: #fff;
20 |
21 |
22 | // Accent colors
23 | // -------------------------
24 | @blue: #3E78B3;
25 | @blueDark: #033C73;
26 | @green: #73A839;
27 | @red: #C71C22;
28 | @yellow: #F7B42C;
29 | @orange: #DD5600;
30 | @pink: #F49AC1;
31 | @purple: #9760B3;
32 |
33 |
34 | // Scaffolding
35 | // -------------------------
36 | @bodyBackground: @white;
37 | @textColor: @gray;
38 |
39 |
40 | // Links
41 | // -------------------------
42 | @linkColor: #369BD7;
43 | @linkColorHover: darken(@linkColor, 15%);
44 |
45 |
46 | // Typography
47 | // -------------------------
48 | @sansFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;
49 | @serifFontFamily: Georgia, "Times New Roman", Times, serif;
50 | @monoFontFamily: Menlo, Monaco, Consolas, "Courier New", monospace;
51 |
52 | @baseFontSize: 13px;
53 | @baseFontFamily: @sansFontFamily;
54 | @baseLineHeight: 18px;
55 | @altFontFamily: @monoFontFamily;
56 |
57 | @headingsFontFamily: 'Telex', sans-serif; // empty to use BS default, @baseFontFamily
58 | @headingsFontWeight: bold; // instead of browser default, bold
59 | @headingsColor: #317EAC; // empty to use BS default, @textColor
60 |
61 |
62 | // Tables
63 | // -------------------------
64 | @tableBackground: transparent; // overall background-color
65 | @tableBackgroundAccent: #f9f9f9; // for striping
66 | @tableBackgroundHover: #f5f5f5; // for hover
67 | @tableBorder: #ddd; // table and cell border
68 |
69 |
70 | // Buttons
71 | // -------------------------
72 | @btnBackground: @white;
73 | @btnBackgroundHighlight: darken(@white, 10%);
74 | @btnBorder: darken(@white, 20%);
75 |
76 | @btnPrimaryBackground: @linkColor;
77 | @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 15%);
78 |
79 | @btnInfoBackground: @purple;
80 | @btnInfoBackgroundHighlight: #2f96b4;
81 |
82 | @btnSuccessBackground: @green;
83 | @btnSuccessBackgroundHighlight: #51a351;
84 |
85 | @btnWarningBackground: @orange;
86 | @btnWarningBackgroundHighlight: @orange;
87 |
88 | @btnDangerBackground: @red;
89 | @btnDangerBackgroundHighlight: #bd362f;
90 |
91 | @btnInverseBackground: @yellow;
92 | @btnInverseBackgroundHighlight: @grayDarker;
93 |
94 |
95 | // Forms
96 | // -------------------------
97 | @inputBackground: @white;
98 | @inputBorder: #ccc;
99 | @inputBorderRadius: 3px;
100 | @inputDisabledBackground: @grayLighter;
101 | @formActionsBackground: #f5f5f5;
102 |
103 | // Dropdowns
104 | // -------------------------
105 | @dropdownBackground: @white;
106 | @dropdownBorder: rgba(0,0,0,.2);
107 | @dropdownLinkColor: @grayDark;
108 | @dropdownLinkColorHover: @white;
109 | @dropdownLinkBackgroundHover: @linkColor;
110 |
111 |
112 |
113 |
114 | // COMPONENT VARIABLES
115 | // --------------------------------------------------
116 |
117 | // Z-index master list
118 | // -------------------------
119 | // Used for a bird's eye view of components dependent on the z-axis
120 | // Try to avoid customizing these :)
121 | @zindexDropdown: 1000;
122 | @zindexPopover: 1010;
123 | @zindexTooltip: 1020;
124 | @zindexFixedNavbar: 1030;
125 | @zindexModalBackdrop: 1040;
126 | @zindexModal: 1050;
127 |
128 |
129 | // Sprite icons path
130 | // -------------------------
131 | @iconSpritePath: "../img/glyphicons-halflings.png";
132 | @iconWhiteSpritePath: "../img/glyphicons-halflings-white.png";
133 |
134 |
135 | // Input placeholder text color
136 | // -------------------------
137 | @placeholderText: @grayLight;
138 |
139 |
140 | // Hr border color
141 | // -------------------------
142 | @hrBorder: @grayLighter;
143 |
144 |
145 | // Navbar
146 | // -------------------------
147 | @navbarHeight: 40px;
148 | @navbarBackground: @linkColor;
149 | @navbarBackgroundHighlight: lighten(@linkColor, 10%);
150 |
151 | @navbarText: @grayLighter;
152 | @navbarLinkColor: @grayLighter;
153 | @navbarLinkColorHover: @white;
154 | @navbarLinkColorActive: @navbarLinkColorHover;
155 | @navbarLinkBackgroundHover: transparent;
156 | @navbarLinkBackgroundActive: rgba(0,0,0,.2);
157 |
158 | @navbarSearchBackground: lighten(@navbarBackground, 25%);
159 | @navbarSearchBackgroundFocus: @white;
160 | @navbarSearchBorder: darken(@navbarSearchBackground, 30%);
161 | @navbarSearchPlaceholderColor: @white;
162 | @navbarBrandColor: @navbarLinkColor;
163 |
164 |
165 | // Hero unit
166 | // -------------------------
167 | @heroUnitBackground: @grayLighter;
168 | @heroUnitHeadingColor: inherit;
169 | @heroUnitLeadColor: inherit;
170 |
171 |
172 | // Form states and alerts
173 | // -------------------------
174 | @warningText: darken(@linkColor, 20%);
175 | @warningBackground: lighten(@linkColor, 20%);
176 | @warningBorder: darken(spin(@warningBackground, -10), 3%);
177 |
178 | @errorText: darken(#C45559, 5%);
179 | @errorBackground: #EDDBE3;
180 | @errorBorder: darken(spin(@errorBackground, -10), 3%);
181 |
182 | @successText: darken(@green, 5%);
183 | @successBackground: #CDB;
184 | @successBorder: darken(spin(@successBackground, -10), 5%);
185 |
186 | @infoText: darken(#908A62, 5%);
187 | @infoBackground: #EDEBE1;
188 | @infoBorder: darken(spin(@infoBackground, -10), 7%);
189 |
190 |
191 |
192 | // GRID
193 | // --------------------------------------------------
194 |
195 | // Default 940px grid
196 | // -------------------------
197 | @gridColumns: 12;
198 | @gridColumnWidth: 60px;
199 | @gridGutterWidth: 20px;
200 | @gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1));
201 |
202 | // Fluid grid
203 | // -------------------------
204 | @fluidGridColumnWidth: 6.382978723%;
205 | @fluidGridGutterWidth: 2.127659574%;
206 |
--------------------------------------------------------------------------------
/js/bootstrap-typeahead.js:
--------------------------------------------------------------------------------
1 | /* =============================================================
2 | * bootstrap-typeahead.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#typeahead
4 | * =============================================================
5 | * Copyright 2012 Twitter, Inc.
6 | *
7 | * Licensed under the Apache License, Version 2.0 (the "License");
8 | * you may not use this file except in compliance with the License.
9 | * You may obtain a copy of the License at
10 | *
11 | * http://www.apache.org/licenses/LICENSE-2.0
12 | *
13 | * Unless required by applicable law or agreed to in writing, software
14 | * distributed under the License is distributed on an "AS IS" BASIS,
15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | * See the License for the specific language governing permissions and
17 | * limitations under the License.
18 | * ============================================================ */
19 |
20 |
21 | !function($){
22 |
23 | "use strict"; // jshint ;_;
24 |
25 |
26 | /* TYPEAHEAD PUBLIC CLASS DEFINITION
27 | * ================================= */
28 |
29 | var Typeahead = function (element, options) {
30 | this.$element = $(element)
31 | this.options = $.extend({}, $.fn.typeahead.defaults, options)
32 | this.matcher = this.options.matcher || this.matcher
33 | this.sorter = this.options.sorter || this.sorter
34 | this.highlighter = this.options.highlighter || this.highlighter
35 | this.updater = this.options.updater || this.updater
36 | this.$menu = $(this.options.menu).appendTo('body')
37 | this.source = this.options.source
38 | this.shown = false
39 | this.listen()
40 | }
41 |
42 | Typeahead.prototype = {
43 |
44 | constructor: Typeahead
45 |
46 | , select: function () {
47 | var val = this.$menu.find('.active').attr('data-value')
48 | this.$element
49 | .val(this.updater(val))
50 | .change()
51 | return this.hide()
52 | }
53 |
54 | , updater: function (item) {
55 | return item
56 | }
57 |
58 | , show: function () {
59 | var pos = $.extend({}, this.$element.offset(), {
60 | height: this.$element[0].offsetHeight
61 | })
62 |
63 | this.$menu.css({
64 | top: pos.top + pos.height
65 | , left: pos.left
66 | })
67 |
68 | this.$menu.show()
69 | this.shown = true
70 | return this
71 | }
72 |
73 | , hide: function () {
74 | this.$menu.hide()
75 | this.shown = false
76 | return this
77 | }
78 |
79 | , lookup: function (event) {
80 | var that = this
81 | , items
82 | , q
83 |
84 | this.query = this.$element.val()
85 |
86 | if (!this.query) {
87 | return this.shown ? this.hide() : this
88 | }
89 |
90 | items = $.grep(this.source, function (item) {
91 | return that.matcher(item)
92 | })
93 |
94 | items = this.sorter(items)
95 |
96 | if (!items.length) {
97 | return this.shown ? this.hide() : this
98 | }
99 |
100 | return this.render(items.slice(0, this.options.items)).show()
101 | }
102 |
103 | , matcher: function (item) {
104 | return ~item.toLowerCase().indexOf(this.query.toLowerCase())
105 | }
106 |
107 | , sorter: function (items) {
108 | var beginswith = []
109 | , caseSensitive = []
110 | , caseInsensitive = []
111 | , item
112 |
113 | while (item = items.shift()) {
114 | if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
115 | else if (~item.indexOf(this.query)) caseSensitive.push(item)
116 | else caseInsensitive.push(item)
117 | }
118 |
119 | return beginswith.concat(caseSensitive, caseInsensitive)
120 | }
121 |
122 | , highlighter: function (item) {
123 | var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
124 | return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
125 | return '' + match + ''
126 | })
127 | }
128 |
129 | , render: function (items) {
130 | var that = this
131 |
132 | items = $(items).map(function (i, item) {
133 | i = $(that.options.item).attr('data-value', item)
134 | i.find('a').html(that.highlighter(item))
135 | return i[0]
136 | })
137 |
138 | items.first().addClass('active')
139 | this.$menu.html(items)
140 | return this
141 | }
142 |
143 | , next: function (event) {
144 | var active = this.$menu.find('.active').removeClass('active')
145 | , next = active.next()
146 |
147 | if (!next.length) {
148 | next = $(this.$menu.find('li')[0])
149 | }
150 |
151 | next.addClass('active')
152 | }
153 |
154 | , prev: function (event) {
155 | var active = this.$menu.find('.active').removeClass('active')
156 | , prev = active.prev()
157 |
158 | if (!prev.length) {
159 | prev = this.$menu.find('li').last()
160 | }
161 |
162 | prev.addClass('active')
163 | }
164 |
165 | , listen: function () {
166 | this.$element
167 | .on('blur', $.proxy(this.blur, this))
168 | .on('keypress', $.proxy(this.keypress, this))
169 | .on('keyup', $.proxy(this.keyup, this))
170 |
171 | if ($.browser.webkit || $.browser.msie) {
172 | this.$element.on('keydown', $.proxy(this.keypress, this))
173 | }
174 |
175 | this.$menu
176 | .on('click', $.proxy(this.click, this))
177 | .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
178 | }
179 |
180 | , keyup: function (e) {
181 | switch(e.keyCode) {
182 | case 40: // down arrow
183 | case 38: // up arrow
184 | break
185 |
186 | case 9: // tab
187 | case 13: // enter
188 | if (!this.shown) return
189 | this.select()
190 | break
191 |
192 | case 27: // escape
193 | if (!this.shown) return
194 | this.hide()
195 | break
196 |
197 | default:
198 | this.lookup()
199 | }
200 |
201 | e.stopPropagation()
202 | e.preventDefault()
203 | }
204 |
205 | , keypress: function (e) {
206 | if (!this.shown) return
207 |
208 | switch(e.keyCode) {
209 | case 9: // tab
210 | case 13: // enter
211 | case 27: // escape
212 | e.preventDefault()
213 | break
214 |
215 | case 38: // up arrow
216 | if (e.type != 'keydown') break
217 | e.preventDefault()
218 | this.prev()
219 | break
220 |
221 | case 40: // down arrow
222 | if (e.type != 'keydown') break
223 | e.preventDefault()
224 | this.next()
225 | break
226 | }
227 |
228 | e.stopPropagation()
229 | }
230 |
231 | , blur: function (e) {
232 | var that = this
233 | setTimeout(function () { that.hide() }, 150)
234 | }
235 |
236 | , click: function (e) {
237 | e.stopPropagation()
238 | e.preventDefault()
239 | this.select()
240 | }
241 |
242 | , mouseenter: function (e) {
243 | this.$menu.find('.active').removeClass('active')
244 | $(e.currentTarget).addClass('active')
245 | }
246 |
247 | }
248 |
249 |
250 | /* TYPEAHEAD PLUGIN DEFINITION
251 | * =========================== */
252 |
253 | $.fn.typeahead = function (option) {
254 | return this.each(function () {
255 | var $this = $(this)
256 | , data = $this.data('typeahead')
257 | , options = typeof option == 'object' && option
258 | if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
259 | if (typeof option == 'string') data[option]()
260 | })
261 | }
262 |
263 | $.fn.typeahead.defaults = {
264 | source: []
265 | , items: 8
266 | , menu: ''
267 | , item: ''
268 | }
269 |
270 | $.fn.typeahead.Constructor = Typeahead
271 |
272 |
273 | /* TYPEAHEAD DATA-API
274 | * ================== */
275 |
276 | $(function () {
277 | $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
278 | var $this = $(this)
279 | if ($this.data('typeahead')) return
280 | e.preventDefault()
281 | $this.typeahead($this.data())
282 | })
283 | })
284 |
285 | }(window.jQuery);
--------------------------------------------------------------------------------
/js/bootstrap-tooltip.js:
--------------------------------------------------------------------------------
1 | /* ===========================================================
2 | * bootstrap-tooltip.js v2.0.3
3 | * http://twitter.github.com/bootstrap/javascript.html#tooltips
4 | * Inspired by the original jQuery.tipsy by Jason Frame
5 | * ===========================================================
6 | * Copyright 2012 Twitter, Inc.
7 | *
8 | * Licensed under the Apache License, Version 2.0 (the "License");
9 | * you may not use this file except in compliance with the License.
10 | * You may obtain a copy of the License at
11 | *
12 | * http://www.apache.org/licenses/LICENSE-2.0
13 | *
14 | * Unless required by applicable law or agreed to in writing, software
15 | * distributed under the License is distributed on an "AS IS" BASIS,
16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | * See the License for the specific language governing permissions and
18 | * limitations under the License.
19 | * ========================================================== */
20 |
21 |
22 | !function ($) {
23 |
24 | "use strict"; // jshint ;_;
25 |
26 |
27 | /* TOOLTIP PUBLIC CLASS DEFINITION
28 | * =============================== */
29 |
30 | var Tooltip = function (element, options) {
31 | this.init('tooltip', element, options)
32 | }
33 |
34 | Tooltip.prototype = {
35 |
36 | constructor: Tooltip
37 |
38 | , init: function (type, element, options) {
39 | var eventIn
40 | , eventOut
41 |
42 | this.type = type
43 | this.$element = $(element)
44 | this.options = this.getOptions(options)
45 | this.enabled = true
46 |
47 | if (this.options.trigger != 'manual') {
48 | eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
49 | eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
50 | this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
51 | this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
52 | }
53 |
54 | this.options.selector ?
55 | (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
56 | this.fixTitle()
57 | }
58 |
59 | , getOptions: function (options) {
60 | options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
61 |
62 | if (options.delay && typeof options.delay == 'number') {
63 | options.delay = {
64 | show: options.delay
65 | , hide: options.delay
66 | }
67 | }
68 |
69 | return options
70 | }
71 |
72 | , enter: function (e) {
73 | var self = $(e.currentTarget)[this.type](this._options).data(this.type)
74 |
75 | if (!self.options.delay || !self.options.delay.show) return self.show()
76 |
77 | clearTimeout(this.timeout)
78 | self.hoverState = 'in'
79 | this.timeout = setTimeout(function() {
80 | if (self.hoverState == 'in') self.show()
81 | }, self.options.delay.show)
82 | }
83 |
84 | , leave: function (e) {
85 | var self = $(e.currentTarget)[this.type](this._options).data(this.type)
86 |
87 | if (!self.options.delay || !self.options.delay.hide) return self.hide()
88 |
89 | clearTimeout(this.timeout)
90 | self.hoverState = 'out'
91 | this.timeout = setTimeout(function() {
92 | if (self.hoverState == 'out') self.hide()
93 | }, self.options.delay.hide)
94 | }
95 |
96 | , show: function () {
97 | var $tip
98 | , inside
99 | , pos
100 | , actualWidth
101 | , actualHeight
102 | , placement
103 | , tp
104 |
105 | if (this.hasContent() && this.enabled) {
106 | $tip = this.tip()
107 | this.setContent()
108 |
109 | if (this.options.animation) {
110 | $tip.addClass('fade')
111 | }
112 |
113 | placement = typeof this.options.placement == 'function' ?
114 | this.options.placement.call(this, $tip[0], this.$element[0]) :
115 | this.options.placement
116 |
117 | inside = /in/.test(placement)
118 |
119 | $tip
120 | .remove()
121 | .css({ top: 0, left: 0, display: 'block' })
122 | .appendTo(inside ? this.$element : document.body)
123 |
124 | pos = this.getPosition(inside)
125 |
126 | actualWidth = $tip[0].offsetWidth
127 | actualHeight = $tip[0].offsetHeight
128 |
129 | switch (inside ? placement.split(' ')[1] : placement) {
130 | case 'bottom':
131 | tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
132 | break
133 | case 'top':
134 | tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
135 | break
136 | case 'left':
137 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
138 | break
139 | case 'right':
140 | tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
141 | break
142 | }
143 |
144 | $tip
145 | .css(tp)
146 | .addClass(placement)
147 | .addClass('in')
148 | }
149 | }
150 |
151 | , isHTML: function(text) {
152 | // html string detection logic adapted from jQuery
153 | return typeof text != 'string'
154 | || ( text.charAt(0) === "<"
155 | && text.charAt( text.length - 1 ) === ">"
156 | && text.length >= 3
157 | ) || /^(?:[^<]*<[\w\W]+>[^>]*$)/.exec(text)
158 | }
159 |
160 | , setContent: function () {
161 | var $tip = this.tip()
162 | , title = this.getTitle()
163 |
164 | $tip.find('.tooltip-inner')[this.isHTML(title) ? 'html' : 'text'](title)
165 | $tip.removeClass('fade in top bottom left right')
166 | }
167 |
168 | , hide: function () {
169 | var that = this
170 | , $tip = this.tip()
171 |
172 | $tip.removeClass('in')
173 |
174 | function removeWithAnimation() {
175 | var timeout = setTimeout(function () {
176 | $tip.off($.support.transition.end).remove()
177 | }, 500)
178 |
179 | $tip.one($.support.transition.end, function () {
180 | clearTimeout(timeout)
181 | $tip.remove()
182 | })
183 | }
184 |
185 | $.support.transition && this.$tip.hasClass('fade') ?
186 | removeWithAnimation() :
187 | $tip.remove()
188 | }
189 |
190 | , fixTitle: function () {
191 | var $e = this.$element
192 | if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
193 | $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
194 | }
195 | }
196 |
197 | , hasContent: function () {
198 | return this.getTitle()
199 | }
200 |
201 | , getPosition: function (inside) {
202 | return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
203 | width: this.$element[0].offsetWidth
204 | , height: this.$element[0].offsetHeight
205 | })
206 | }
207 |
208 | , getTitle: function () {
209 | var title
210 | , $e = this.$element
211 | , o = this.options
212 |
213 | title = $e.attr('data-original-title')
214 | || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
215 |
216 | return title
217 | }
218 |
219 | , tip: function () {
220 | return this.$tip = this.$tip || $(this.options.template)
221 | }
222 |
223 | , validate: function () {
224 | if (!this.$element[0].parentNode) {
225 | this.hide()
226 | this.$element = null
227 | this.options = null
228 | }
229 | }
230 |
231 | , enable: function () {
232 | this.enabled = true
233 | }
234 |
235 | , disable: function () {
236 | this.enabled = false
237 | }
238 |
239 | , toggleEnabled: function () {
240 | this.enabled = !this.enabled
241 | }
242 |
243 | , toggle: function () {
244 | this[this.tip().hasClass('in') ? 'hide' : 'show']()
245 | }
246 |
247 | }
248 |
249 |
250 | /* TOOLTIP PLUGIN DEFINITION
251 | * ========================= */
252 |
253 | $.fn.tooltip = function ( option ) {
254 | return this.each(function () {
255 | var $this = $(this)
256 | , data = $this.data('tooltip')
257 | , options = typeof option == 'object' && option
258 | if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
259 | if (typeof option == 'string') data[option]()
260 | })
261 | }
262 |
263 | $.fn.tooltip.Constructor = Tooltip
264 |
265 | $.fn.tooltip.defaults = {
266 | animation: true
267 | , placement: 'top'
268 | , selector: false
269 | , template: ''
270 | , trigger: 'hover'
271 | , title: ''
272 | , delay: 0
273 | }
274 |
275 | }(window.jQuery);
--------------------------------------------------------------------------------
/parse_nagios_status.php:
--------------------------------------------------------------------------------
1 | |
34 | // +----------------------------------------------------------------------+
35 | // $Id: statusXML.php,v 1.6 2009/02/07 03:32:14 jantman Exp $
36 | // $Source: /usr/local/cvsroot/admin-portal/nagios/statusXML.php,v $
37 |
38 |
39 | function parse_nagios_status_file($statusFile = "/var/log/nagios/status.dat") {
40 |
41 | //$nag_version = getFileVersion($statusFile); // returns integer 2 or 3
42 | $nag_version = 3;
43 | $created_ts = 0;
44 |
45 | $debug = false;
46 |
47 | if($nag_version == 3)
48 | {
49 | $data = getData3($statusFile); // returns an array
50 | }
51 | else
52 | {
53 | $data = getData2($statusFile); // returns an array
54 | }
55 |
56 | return $data;
57 |
58 | // $hosts = $data['hosts'];
59 | // $services = $data['services'];
60 | // $program = "";
61 | // if(array_key_exists("program", $data))
62 | // {
63 | // $program = $data['program'];
64 | // }
65 | //
66 | // print_r($services);
67 |
68 | }
69 |
70 | // figure out what version the file is
71 | function getFileVersion($statusFile)
72 | {
73 | global $created_ts;
74 | $version = 2;
75 |
76 | $fh = fopen($statusFile, 'r');
77 | $inInfo = false;
78 | while($line = fgets($fh))
79 | {
80 | if(trim($line) == "info {")
81 | {
82 | $inInfo = true;
83 | }
84 | elseif(trim($line) == "}")
85 | {
86 | $inInfo = false;
87 | break;
88 | }
89 | elseif($inInfo)
90 | {
91 | $vals = explode("=", $line);
92 | if(trim($vals[0]) == "created")
93 | {
94 | $created = $vals[1];
95 | }
96 | elseif(trim($vals[0]) == "version")
97 | {
98 | if(substr($vals[1], 0, 1) == "3")
99 | {
100 | $version = 3;
101 | }
102 | }
103 | }
104 | }
105 | return $version;
106 | }
107 |
108 | // parse nagios2 status.dat
109 | function getData2($statusFile)
110 | {
111 | // the keys to get from host status:
112 | $host_keys = array('host_name', 'has_been_checked', 'check_execution_time', 'check_latency', 'check_type', 'current_state', 'current_attempt', 'state_type', 'last_state_change', 'last_time_up', 'last_time_down', 'last_time_unreachable', 'last_notification', 'next_notification', 'no_more_notifications', 'current_notification_number', 'notifications_enabled', 'problem_has_been_acknowledged', 'acknowledgement_type', 'active_checks_enabled', 'passive_checks_enabled', 'last_update');
113 |
114 | // keys to get from service status:
115 | $service_keys = array('host_name', 'service_description', 'has_been_checked', 'check_execution_time', 'check_latency', 'current_state', 'state_type', 'last_state_change', 'last_time_ok', 'last_time_warning', 'last_time_unknown', 'last_time_critical', 'plugin_output', 'last_check', 'notifications_enabled', 'active_checks_enabled', 'passive_checks_enabled', 'problem_has_been_acknowledged', 'acknowledgement_type', 'last_update', 'is_flapping');
116 |
117 | # open the file
118 | $fh = fopen($statusFile, 'r');
119 |
120 | # variables to keep state
121 | $inSection = false;
122 | $sectionType = "";
123 | $lineNum = 0;
124 | $sectionData = array();
125 |
126 | $hostStatus = array();
127 | $serviceStatus = array();
128 |
129 | #variables for total hosts and services
130 | $typeTotals = array();
131 |
132 | # loop through the file
133 | while($line = fgets($fh))
134 | {
135 | $lineNum++; // increment counter of line number, mainly for debugging
136 | $line = trim($line); // strip whitespace
137 | if($line == ""){ continue;} // ignore blank line
138 | if(substr($line, 0, 1) == "#"){ continue;} // ignore comment
139 |
140 | // ok, now we need to deal with the sections
141 |
142 | if(! $inSection)
143 | {
144 | // we're not currently in a section, but are looking to start one
145 | if(strstr($line, " ") && (substr($line, -1) == "{")) // space and ending with {, so it's a section header
146 | {
147 | $sectionType = substr($line, 0, strpos($line, " ")); // first word on line is type
148 | $inSection = true;
149 | // we're now in a section
150 | $sectionData = array();
151 |
152 | // increment the counter for this sectionType
153 | if(isset($typeTotals[$sectionType])){$typeTotals[$sectionType]=$typeTotals[$sectionType]+1;}else{$typeTotals[$sectionType]=1;}
154 |
155 | }
156 | }
157 |
158 | if($inSection && $line == "}") // closing a section
159 | {
160 | if($sectionType == "service")
161 | {
162 | $serviceStatus[$sectionData['host_name']][$sectionData['service_description']] = $sectionData;
163 | }
164 | if($sectionType == "host")
165 | {
166 | $hostStatus[$sectionData["host_name"]] = $sectionData;
167 | }
168 | $inSection = false;
169 | $sectionType = "";
170 | continue;
171 | }
172 | else
173 | {
174 | // we're currently in a section, and this line is part of it
175 | $lineKey = substr($line, 0, strpos($line, "="));
176 | $lineVal = substr($line, strpos($line, "=")+1);
177 |
178 | // add to the array as appropriate
179 | if($sectionType == "service")
180 | {
181 | if(in_array($lineKey, $service_keys))
182 | {
183 | $sectionData[$lineKey] = $lineVal;
184 | }
185 | }
186 | elseif($sectionType == "host")
187 | {
188 | if(in_array($lineKey, $host_keys))
189 | {
190 | $sectionData[$lineKey] = $lineVal;
191 | }
192 | }
193 | // else continue on, ignore this section, don't save anything
194 | }
195 |
196 | }
197 |
198 | fclose($fh);
199 |
200 | $retArray = array("hosts" => $hostStatus, "services" => $serviceStatus);
201 |
202 | return $retArray;
203 | }
204 |
205 | // parse nagios3 status.dat
206 | function getData3($statusFile)
207 | {
208 | global $debug;
209 | // the keys to get from host status:
210 | $host_keys = array('host_name', 'modified_attributes', 'check_command', 'check_period', 'notification_period', 'check_interval', 'retry_interval', 'event_handler', 'has_been_checked', 'should_be_scheduled', 'check_execution_time', 'check_latency', 'check_type', 'current_state', 'last_hard_state', 'last_event_id', 'current_event_id', 'current_problem_id', 'last_problem_id', 'plugin_output', 'long_plugin_output', 'performance_data', 'last_check', 'next_check', 'check_options', 'current_attempt', 'max_attempts', 'state_type', 'last_state_change', 'last_hard_state_change', 'last_time_up', 'last_time_down', 'last_time_unreachable', 'last_notification', 'next_notification', 'no_more_notifications', 'current_notification_number', 'current_notification_id', 'notifications_enabled', 'problem_has_been_acknowledged', 'acknowledgement_type', 'active_checks_enabled', 'passive_checks_enabled', 'event_handler_enabled', 'flap_detection_enabled', 'failure_prediction_enabled', 'process_performance_data', 'obsess_over_host', 'last_update', 'is_flapping', 'percent_state_change', 'scheduled_downtime_depth');
211 | // keys to get from service status:
212 | $service_keys = array('host_name', 'service_description', 'modified_attributes', 'check_command', 'check_period', 'notification_period', 'check_interval', 'retry_interval', 'event_handler', 'has_been_checked', 'should_be_scheduled', 'check_execution_time', 'check_latency', 'check_type', 'current_state', 'last_hard_state', 'last_event_id', 'current_event_id', 'current_problem_id', 'last_problem_id', 'current_attempt', 'max_attempts', 'state_type', 'last_state_change', 'last_hard_state_change', 'last_time_ok', 'last_time_warning', 'last_time_unknown', 'last_time_critical', 'plugin_output', 'long_plugin_output', 'performance_data', 'last_check', 'next_check', 'check_options', 'current_notification_number', 'current_notification_id', 'last_notification', 'next_notification', 'no_more_notifications', 'notifications_enabled', 'active_checks_enabled', 'passive_checks_enabled', 'event_handler_enabled', 'problem_has_been_acknowledged', 'acknowledgement_type', 'flap_detection_enabled', 'failure_prediction_enabled', 'process_performance_data', 'obsess_over_service', 'last_update', 'is_flapping', 'percent_state_change', 'scheduled_downtime_depth');
213 |
214 | # open the file
215 | $fh = fopen($statusFile, 'r');
216 |
217 | # variables to keep state
218 | $inSection = false;
219 | $sectionType = "";
220 | $lineNum = 0;
221 | $sectionData = array();
222 |
223 | $hostStatus = array();
224 | $serviceStatus = array();
225 | $programStatus = array();
226 |
227 | #variables for total hosts and services
228 | $typeTotals = array();
229 |
230 | # loop through the file
231 | while($line = fgets($fh))
232 | {
233 | $lineNum++; // increment counter of line number, mainly for debugging
234 | $line = trim($line); // strip whitespace
235 | if($line == ""){ continue;} // ignore blank line
236 | if(substr($line, 0, 1) == "#"){ continue;} // ignore comment
237 |
238 | // ok, now we need to deal with the sections
239 | if(! $inSection)
240 | {
241 | // we're not currently in a section, but are looking to start one
242 | if(substr($line, strlen($line)-1, 1) == "{") // space and ending with {, so it's a section header
243 | {
244 | $sectionType = substr($line, 0, strpos($line, " ")); // first word on line is type
245 | $inSection = true;
246 | // we're now in a section
247 | $sectionData = array();
248 |
249 | // increment the counter for this sectionType
250 | if(isset($typeTotals[$sectionType])){$typeTotals[$sectionType]=$typeTotals[$sectionType]+1;}else{$typeTotals[$sectionType]=1;}
251 |
252 | }
253 | }
254 | elseif($inSection && trim($line) == "}") // closing a section
255 | {
256 | if($sectionType == "servicestatus")
257 | {
258 | $serviceStatus[$sectionData['host_name']][$sectionData['service_description']] = $sectionData;
259 | }
260 | elseif($sectionType == "hoststatus")
261 | {
262 | $hostStatus[$sectionData["host_name"]] = $sectionData;
263 | }
264 | elseif($sectionType == "programstatus")
265 | {
266 | $programStatus = $sectionData;
267 | }
268 | $inSection = false;
269 | $sectionType = "";
270 | continue;
271 | }
272 | else
273 | {
274 | // we're currently in a section, and this line is part of it
275 | $lineKey = substr($line, 0, strpos($line, "="));
276 | $lineVal = substr($line, strpos($line, "=")+1);
277 |
278 | // add to the array as appropriate
279 | if($sectionType == "servicestatus" || $sectionType == "hoststatus" || $sectionType == "programstatus")
280 | {
281 | if($debug){ echo "LINE ".$lineNum.": lineKey=".$lineKey."= lineVal=".$lineVal."=\n";}
282 | $sectionData[$lineKey] = $lineVal;
283 | }
284 | // else continue on, ignore this section, don't save anything
285 | }
286 |
287 | }
288 |
289 | fclose($fh);
290 |
291 | $retArray = array("hosts" => $hostStatus, "services" => $serviceStatus, "program" => $programStatus);
292 | return $retArray;
293 | }
294 |
295 |
296 | // this formats the age of a check in seconds into a nice textual description
297 | function ageString($seconds)
298 | {
299 | $age = "";
300 | if($seconds > 86400)
301 | {
302 | $days = (int)($seconds / 86400);
303 | $seconds = $seconds - ($days * 86400);
304 | $age .= $days." days ";
305 | }
306 | if($seconds > 3600)
307 | {
308 | $hours = (int)($seconds / 3600);
309 | $seconds = $seconds - ($hours * 3600);
310 | $age .= $hours." hours ";
311 | }
312 | if($seconds > 60)
313 | {
314 | $minutes = (int)($seconds / 60);
315 | $seconds = $seconds - ($minutes * 60);
316 | $age .= $minutes." minutes ";
317 | }
318 | $age .= $seconds." seconds ";
319 | return $age;
320 | }
321 |
322 |
323 | /*
324 | // the keys to get from host status:
325 | $host_keys = array('host_name', 'has_been_checked', 'check_execution_time', 'check_latency', 'check_type', 'current_state', 'current_attempt', 'state_type', 'last_state_change', 'last_time_up', 'last_time_down', 'last_time_unreachable', 'last_notification', 'next_notification', 'no_more_notifications', 'current_notification_number', 'notifications_enabled', 'problem_has_been_acknowledged', 'acknowledgement_type', 'active_checks_enabled', 'passive_checks_enabled', 'last_update');
326 |
327 | // keys to get from service status:
328 | $service_keys = array('host_name', 'service_description', 'has_been_checked', 'check_execution_time', 'check_latency', 'current_state', 'state_type', 'last_state_change', 'last_time_ok', 'last_time_warning', 'last_time_unknown', 'last_time_critical', 'plugin_output', 'last_check', 'notifications_enabled', 'active_checks_enabled', 'passive_checks_enabled', 'problem_has_been_acknowledged', 'acknowledgement_type', 'last_update', 'is_flapping');
329 |
330 | */
331 |
332 |
333 | ?>
334 |
--------------------------------------------------------------------------------
/css/bootstrap-responsive.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.0.3
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */
10 |
11 | .clearfix {
12 | *zoom: 1;
13 | }
14 |
15 | .clearfix:before,
16 | .clearfix:after {
17 | display: table;
18 | content: "";
19 | }
20 |
21 | .clearfix:after {
22 | clear: both;
23 | }
24 |
25 | .hide-text {
26 | font: 0/0 a;
27 | color: transparent;
28 | text-shadow: none;
29 | background-color: transparent;
30 | border: 0;
31 | }
32 |
33 | .input-block-level {
34 | display: block;
35 | width: 100%;
36 | min-height: 28px;
37 | -webkit-box-sizing: border-box;
38 | -moz-box-sizing: border-box;
39 | -ms-box-sizing: border-box;
40 | box-sizing: border-box;
41 | }
42 |
43 | .hidden {
44 | display: none;
45 | visibility: hidden;
46 | }
47 |
48 | .visible-phone {
49 | display: none !important;
50 | }
51 |
52 | .visible-tablet {
53 | display: none !important;
54 | }
55 |
56 | .hidden-desktop {
57 | display: none !important;
58 | }
59 |
60 | @media (max-width: 767px) {
61 | .visible-phone {
62 | display: inherit !important;
63 | }
64 | .hidden-phone {
65 | display: none !important;
66 | }
67 | .hidden-desktop {
68 | display: inherit !important;
69 | }
70 | .visible-desktop {
71 | display: none !important;
72 | }
73 | }
74 |
75 | @media (min-width: 768px) and (max-width: 979px) {
76 | .visible-tablet {
77 | display: inherit !important;
78 | }
79 | .hidden-tablet {
80 | display: none !important;
81 | }
82 | .hidden-desktop {
83 | display: inherit !important;
84 | }
85 | .visible-desktop {
86 | display: none !important ;
87 | }
88 | }
89 |
90 | @media (max-width: 480px) {
91 | .nav-collapse {
92 | -webkit-transform: translate3d(0, 0, 0);
93 | }
94 | .page-header h1 small {
95 | display: block;
96 | line-height: 18px;
97 | }
98 | input[type="checkbox"],
99 | input[type="radio"] {
100 | border: 1px solid #ccc;
101 | }
102 | .form-horizontal .control-group > label {
103 | float: none;
104 | width: auto;
105 | padding-top: 0;
106 | text-align: left;
107 | }
108 | .form-horizontal .controls {
109 | margin-left: 0;
110 | }
111 | .form-horizontal .control-list {
112 | padding-top: 0;
113 | }
114 | .form-horizontal .form-actions {
115 | padding-right: 10px;
116 | padding-left: 10px;
117 | }
118 | .modal {
119 | position: absolute;
120 | top: 10px;
121 | right: 10px;
122 | left: 10px;
123 | width: auto;
124 | margin: 0;
125 | }
126 | .modal.fade.in {
127 | top: auto;
128 | }
129 | .modal-header .close {
130 | padding: 10px;
131 | margin: -10px;
132 | }
133 | .carousel-caption {
134 | position: static;
135 | }
136 | }
137 |
138 | @media (max-width: 767px) {
139 | body {
140 | padding-right: 20px;
141 | padding-left: 20px;
142 | }
143 | .navbar-fixed-top,
144 | .navbar-fixed-bottom {
145 | margin-right: -20px;
146 | margin-left: -20px;
147 | }
148 | .container-fluid {
149 | padding: 0;
150 | }
151 | .dl-horizontal dt {
152 | float: none;
153 | width: auto;
154 | clear: none;
155 | text-align: left;
156 | }
157 | .dl-horizontal dd {
158 | margin-left: 0;
159 | }
160 | .container {
161 | width: auto;
162 | }
163 | .row-fluid {
164 | width: 100%;
165 | }
166 | .row,
167 | .thumbnails {
168 | margin-left: 0;
169 | }
170 | [class*="span"],
171 | .row-fluid [class*="span"] {
172 | display: block;
173 | float: none;
174 | width: auto;
175 | margin-left: 0;
176 | }
177 | .input-large,
178 | .input-xlarge,
179 | .input-xxlarge,
180 | input[class*="span"],
181 | select[class*="span"],
182 | textarea[class*="span"],
183 | .uneditable-input {
184 | display: block;
185 | width: 100%;
186 | min-height: 28px;
187 | -webkit-box-sizing: border-box;
188 | -moz-box-sizing: border-box;
189 | -ms-box-sizing: border-box;
190 | box-sizing: border-box;
191 | }
192 | .input-prepend input,
193 | .input-append input,
194 | .input-prepend input[class*="span"],
195 | .input-append input[class*="span"] {
196 | display: inline-block;
197 | width: auto;
198 | }
199 | }
200 |
201 | @media (min-width: 768px) and (max-width: 979px) {
202 | .row {
203 | margin-left: -20px;
204 | *zoom: 1;
205 | }
206 | .row:before,
207 | .row:after {
208 | display: table;
209 | content: "";
210 | }
211 | .row:after {
212 | clear: both;
213 | }
214 | [class*="span"] {
215 | float: left;
216 | margin-left: 20px;
217 | }
218 | .container,
219 | .navbar-fixed-top .container,
220 | .navbar-fixed-bottom .container {
221 | width: 724px;
222 | }
223 | .span12 {
224 | width: 724px;
225 | }
226 | .span11 {
227 | width: 662px;
228 | }
229 | .span10 {
230 | width: 600px;
231 | }
232 | .span9 {
233 | width: 538px;
234 | }
235 | .span8 {
236 | width: 476px;
237 | }
238 | .span7 {
239 | width: 414px;
240 | }
241 | .span6 {
242 | width: 352px;
243 | }
244 | .span5 {
245 | width: 290px;
246 | }
247 | .span4 {
248 | width: 228px;
249 | }
250 | .span3 {
251 | width: 166px;
252 | }
253 | .span2 {
254 | width: 104px;
255 | }
256 | .span1 {
257 | width: 42px;
258 | }
259 | .offset12 {
260 | margin-left: 764px;
261 | }
262 | .offset11 {
263 | margin-left: 702px;
264 | }
265 | .offset10 {
266 | margin-left: 640px;
267 | }
268 | .offset9 {
269 | margin-left: 578px;
270 | }
271 | .offset8 {
272 | margin-left: 516px;
273 | }
274 | .offset7 {
275 | margin-left: 454px;
276 | }
277 | .offset6 {
278 | margin-left: 392px;
279 | }
280 | .offset5 {
281 | margin-left: 330px;
282 | }
283 | .offset4 {
284 | margin-left: 268px;
285 | }
286 | .offset3 {
287 | margin-left: 206px;
288 | }
289 | .offset2 {
290 | margin-left: 144px;
291 | }
292 | .offset1 {
293 | margin-left: 82px;
294 | }
295 | .row-fluid {
296 | width: 100%;
297 | *zoom: 1;
298 | }
299 | .row-fluid:before,
300 | .row-fluid:after {
301 | display: table;
302 | content: "";
303 | }
304 | .row-fluid:after {
305 | clear: both;
306 | }
307 | .row-fluid [class*="span"] {
308 | display: block;
309 | float: left;
310 | width: 100%;
311 | min-height: 28px;
312 | margin-left: 2.762430939%;
313 | *margin-left: 2.709239449638298%;
314 | -webkit-box-sizing: border-box;
315 | -moz-box-sizing: border-box;
316 | -ms-box-sizing: border-box;
317 | box-sizing: border-box;
318 | }
319 | .row-fluid [class*="span"]:first-child {
320 | margin-left: 0;
321 | }
322 | .row-fluid .span12 {
323 | width: 99.999999993%;
324 | *width: 99.9468085036383%;
325 | }
326 | .row-fluid .span11 {
327 | width: 91.436464082%;
328 | *width: 91.38327259263829%;
329 | }
330 | .row-fluid .span10 {
331 | width: 82.87292817100001%;
332 | *width: 82.8197366816383%;
333 | }
334 | .row-fluid .span9 {
335 | width: 74.30939226%;
336 | *width: 74.25620077063829%;
337 | }
338 | .row-fluid .span8 {
339 | width: 65.74585634900001%;
340 | *width: 65.6926648596383%;
341 | }
342 | .row-fluid .span7 {
343 | width: 57.182320438000005%;
344 | *width: 57.129128948638304%;
345 | }
346 | .row-fluid .span6 {
347 | width: 48.618784527%;
348 | *width: 48.5655930376383%;
349 | }
350 | .row-fluid .span5 {
351 | width: 40.055248616%;
352 | *width: 40.0020571266383%;
353 | }
354 | .row-fluid .span4 {
355 | width: 31.491712705%;
356 | *width: 31.4385212156383%;
357 | }
358 | .row-fluid .span3 {
359 | width: 22.928176794%;
360 | *width: 22.874985304638297%;
361 | }
362 | .row-fluid .span2 {
363 | width: 14.364640883%;
364 | *width: 14.311449393638298%;
365 | }
366 | .row-fluid .span1 {
367 | width: 5.801104972%;
368 | *width: 5.747913482638298%;
369 | }
370 | input,
371 | textarea,
372 | .uneditable-input {
373 | margin-left: 0;
374 | }
375 | input.span12,
376 | textarea.span12,
377 | .uneditable-input.span12 {
378 | width: 714px;
379 | }
380 | input.span11,
381 | textarea.span11,
382 | .uneditable-input.span11 {
383 | width: 652px;
384 | }
385 | input.span10,
386 | textarea.span10,
387 | .uneditable-input.span10 {
388 | width: 590px;
389 | }
390 | input.span9,
391 | textarea.span9,
392 | .uneditable-input.span9 {
393 | width: 528px;
394 | }
395 | input.span8,
396 | textarea.span8,
397 | .uneditable-input.span8 {
398 | width: 466px;
399 | }
400 | input.span7,
401 | textarea.span7,
402 | .uneditable-input.span7 {
403 | width: 404px;
404 | }
405 | input.span6,
406 | textarea.span6,
407 | .uneditable-input.span6 {
408 | width: 342px;
409 | }
410 | input.span5,
411 | textarea.span5,
412 | .uneditable-input.span5 {
413 | width: 280px;
414 | }
415 | input.span4,
416 | textarea.span4,
417 | .uneditable-input.span4 {
418 | width: 218px;
419 | }
420 | input.span3,
421 | textarea.span3,
422 | .uneditable-input.span3 {
423 | width: 156px;
424 | }
425 | input.span2,
426 | textarea.span2,
427 | .uneditable-input.span2 {
428 | width: 94px;
429 | }
430 | input.span1,
431 | textarea.span1,
432 | .uneditable-input.span1 {
433 | width: 32px;
434 | }
435 | }
436 |
437 | @media (min-width: 1200px) {
438 | .row {
439 | margin-left: -30px;
440 | *zoom: 1;
441 | }
442 | .row:before,
443 | .row:after {
444 | display: table;
445 | content: "";
446 | }
447 | .row:after {
448 | clear: both;
449 | }
450 | [class*="span"] {
451 | float: left;
452 | margin-left: 30px;
453 | }
454 | .container,
455 | .navbar-fixed-top .container,
456 | .navbar-fixed-bottom .container {
457 | width: 1170px;
458 | }
459 | .span12 {
460 | width: 1170px;
461 | }
462 | .span11 {
463 | width: 1070px;
464 | }
465 | .span10 {
466 | width: 970px;
467 | }
468 | .span9 {
469 | width: 870px;
470 | }
471 | .span8 {
472 | width: 770px;
473 | }
474 | .span7 {
475 | width: 670px;
476 | }
477 | .span6 {
478 | width: 570px;
479 | }
480 | .span5 {
481 | width: 470px;
482 | }
483 | .span4 {
484 | width: 370px;
485 | }
486 | .span3 {
487 | width: 270px;
488 | }
489 | .span2 {
490 | width: 170px;
491 | }
492 | .span1 {
493 | width: 70px;
494 | }
495 | .offset12 {
496 | margin-left: 1230px;
497 | }
498 | .offset11 {
499 | margin-left: 1130px;
500 | }
501 | .offset10 {
502 | margin-left: 1030px;
503 | }
504 | .offset9 {
505 | margin-left: 930px;
506 | }
507 | .offset8 {
508 | margin-left: 830px;
509 | }
510 | .offset7 {
511 | margin-left: 730px;
512 | }
513 | .offset6 {
514 | margin-left: 630px;
515 | }
516 | .offset5 {
517 | margin-left: 530px;
518 | }
519 | .offset4 {
520 | margin-left: 430px;
521 | }
522 | .offset3 {
523 | margin-left: 330px;
524 | }
525 | .offset2 {
526 | margin-left: 230px;
527 | }
528 | .offset1 {
529 | margin-left: 130px;
530 | }
531 | .row-fluid {
532 | width: 100%;
533 | *zoom: 1;
534 | }
535 | .row-fluid:before,
536 | .row-fluid:after {
537 | display: table;
538 | content: "";
539 | }
540 | .row-fluid:after {
541 | clear: both;
542 | }
543 | .row-fluid [class*="span"] {
544 | display: block;
545 | float: left;
546 | width: 100%;
547 | min-height: 28px;
548 | margin-left: 2.564102564%;
549 | *margin-left: 2.510911074638298%;
550 | -webkit-box-sizing: border-box;
551 | -moz-box-sizing: border-box;
552 | -ms-box-sizing: border-box;
553 | box-sizing: border-box;
554 | }
555 | .row-fluid [class*="span"]:first-child {
556 | margin-left: 0;
557 | }
558 | .row-fluid .span12 {
559 | width: 100%;
560 | *width: 99.94680851063829%;
561 | }
562 | .row-fluid .span11 {
563 | width: 91.45299145300001%;
564 | *width: 91.3997999636383%;
565 | }
566 | .row-fluid .span10 {
567 | width: 82.905982906%;
568 | *width: 82.8527914166383%;
569 | }
570 | .row-fluid .span9 {
571 | width: 74.358974359%;
572 | *width: 74.30578286963829%;
573 | }
574 | .row-fluid .span8 {
575 | width: 65.81196581200001%;
576 | *width: 65.7587743226383%;
577 | }
578 | .row-fluid .span7 {
579 | width: 57.264957265%;
580 | *width: 57.2117657756383%;
581 | }
582 | .row-fluid .span6 {
583 | width: 48.717948718%;
584 | *width: 48.6647572286383%;
585 | }
586 | .row-fluid .span5 {
587 | width: 40.170940171000005%;
588 | *width: 40.117748681638304%;
589 | }
590 | .row-fluid .span4 {
591 | width: 31.623931624%;
592 | *width: 31.5707401346383%;
593 | }
594 | .row-fluid .span3 {
595 | width: 23.076923077%;
596 | *width: 23.0237315876383%;
597 | }
598 | .row-fluid .span2 {
599 | width: 14.529914530000001%;
600 | *width: 14.4767230406383%;
601 | }
602 | .row-fluid .span1 {
603 | width: 5.982905983%;
604 | *width: 5.929714493638298%;
605 | }
606 | input,
607 | textarea,
608 | .uneditable-input {
609 | margin-left: 0;
610 | }
611 | input.span12,
612 | textarea.span12,
613 | .uneditable-input.span12 {
614 | width: 1160px;
615 | }
616 | input.span11,
617 | textarea.span11,
618 | .uneditable-input.span11 {
619 | width: 1060px;
620 | }
621 | input.span10,
622 | textarea.span10,
623 | .uneditable-input.span10 {
624 | width: 960px;
625 | }
626 | input.span9,
627 | textarea.span9,
628 | .uneditable-input.span9 {
629 | width: 860px;
630 | }
631 | input.span8,
632 | textarea.span8,
633 | .uneditable-input.span8 {
634 | width: 760px;
635 | }
636 | input.span7,
637 | textarea.span7,
638 | .uneditable-input.span7 {
639 | width: 660px;
640 | }
641 | input.span6,
642 | textarea.span6,
643 | .uneditable-input.span6 {
644 | width: 560px;
645 | }
646 | input.span5,
647 | textarea.span5,
648 | .uneditable-input.span5 {
649 | width: 460px;
650 | }
651 | input.span4,
652 | textarea.span4,
653 | .uneditable-input.span4 {
654 | width: 360px;
655 | }
656 | input.span3,
657 | textarea.span3,
658 | .uneditable-input.span3 {
659 | width: 260px;
660 | }
661 | input.span2,
662 | textarea.span2,
663 | .uneditable-input.span2 {
664 | width: 160px;
665 | }
666 | input.span1,
667 | textarea.span1,
668 | .uneditable-input.span1 {
669 | width: 60px;
670 | }
671 | .thumbnails {
672 | margin-left: -30px;
673 | }
674 | .thumbnails > li {
675 | margin-left: 30px;
676 | }
677 | .row-fluid .thumbnails {
678 | margin-left: 0;
679 | }
680 | }
681 |
682 | @media (max-width: 979px) {
683 | body {
684 | padding-top: 0;
685 | }
686 | .navbar-fixed-top {
687 | position: static;
688 | margin-bottom: 18px;
689 | }
690 | .navbar-fixed-top .navbar-inner {
691 | padding: 5px;
692 | }
693 | .navbar .container {
694 | width: auto;
695 | padding: 0;
696 | }
697 | .navbar .brand {
698 | padding-right: 10px;
699 | padding-left: 10px;
700 | margin: 0 0 0 -5px;
701 | }
702 | .nav-collapse {
703 | clear: both;
704 | }
705 | .nav-collapse .nav {
706 | float: none;
707 | margin: 0 0 9px;
708 | }
709 | .nav-collapse .nav > li {
710 | float: none;
711 | }
712 | .nav-collapse .nav > li > a {
713 | margin-bottom: 2px;
714 | }
715 | .nav-collapse .nav > .divider-vertical {
716 | display: none;
717 | }
718 | .nav-collapse .nav .nav-header {
719 | color: #999999;
720 | text-shadow: none;
721 | }
722 | .nav-collapse .nav > li > a,
723 | .nav-collapse .dropdown-menu a {
724 | padding: 6px 15px;
725 | font-weight: bold;
726 | color: #999999;
727 | -webkit-border-radius: 3px;
728 | -moz-border-radius: 3px;
729 | border-radius: 3px;
730 | }
731 | .nav-collapse .btn {
732 | padding: 4px 10px 4px;
733 | font-weight: normal;
734 | -webkit-border-radius: 4px;
735 | -moz-border-radius: 4px;
736 | border-radius: 4px;
737 | }
738 | .nav-collapse .dropdown-menu li + li a {
739 | margin-bottom: 2px;
740 | }
741 | .nav-collapse .nav > li > a:hover,
742 | .nav-collapse .dropdown-menu a:hover {
743 | background-color: #222222;
744 | }
745 | .nav-collapse.in .btn-group {
746 | padding: 0;
747 | margin-top: 5px;
748 | }
749 | .nav-collapse .dropdown-menu {
750 | position: static;
751 | top: auto;
752 | left: auto;
753 | display: block;
754 | float: none;
755 | max-width: none;
756 | padding: 0;
757 | margin: 0 15px;
758 | background-color: transparent;
759 | border: none;
760 | -webkit-border-radius: 0;
761 | -moz-border-radius: 0;
762 | border-radius: 0;
763 | -webkit-box-shadow: none;
764 | -moz-box-shadow: none;
765 | box-shadow: none;
766 | }
767 | .nav-collapse .dropdown-menu:before,
768 | .nav-collapse .dropdown-menu:after {
769 | display: none;
770 | }
771 | .nav-collapse .dropdown-menu .divider {
772 | display: none;
773 | }
774 | .nav-collapse .navbar-form,
775 | .nav-collapse .navbar-search {
776 | float: none;
777 | padding: 9px 15px;
778 | margin: 9px 0;
779 | border-top: 1px solid #222222;
780 | border-bottom: 1px solid #222222;
781 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
782 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
783 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
784 | }
785 | .navbar .nav-collapse .nav.pull-right {
786 | float: none;
787 | margin-left: 0;
788 | }
789 | .nav-collapse,
790 | .nav-collapse.collapse {
791 | height: 0;
792 | overflow: hidden;
793 | }
794 | .navbar .btn-navbar {
795 | display: block;
796 | }
797 | .navbar-static .navbar-inner {
798 | padding-right: 10px;
799 | padding-left: 10px;
800 | }
801 | }
802 |
803 | @media (min-width: 980px) {
804 | .nav-collapse.collapse {
805 | height: auto !important;
806 | overflow: visible !important;
807 | }
808 | }
809 |
--------------------------------------------------------------------------------
/css/smoothness/jquery-ui-1.8.14.custom.min.css:
--------------------------------------------------------------------------------
1 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-widget :active{outline:0}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0!important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em .7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:.2em .4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none!important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 .2em 1px 0;border-bottom:0!important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tabs .ui-tabs-hide{display:none!important}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-progressbar{height:2em;text-align:left}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}
--------------------------------------------------------------------------------
/css/smoothness/jquery-ui-1.8.14.custom.css:
--------------------------------------------------------------------------------
1 | /*
2 | * jQuery UI CSS Framework 1.8.14
3 | *
4 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5 | * Dual licensed under the MIT or GPL Version 2 licenses.
6 | * http://jquery.org/license
7 | *
8 | * http://docs.jquery.com/UI/Theming/API
9 | */
10 |
11 | /* Layout helpers
12 | ----------------------------------*/
13 | .ui-helper-hidden { display: none; }
14 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17 | .ui-helper-clearfix { display: inline-block; }
18 | /* required comment for clearfix to work in Opera \*/
19 | * html .ui-helper-clearfix { height:1%; }
20 | .ui-helper-clearfix { display:block; }
21 | /* end clearfix */
22 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23 |
24 |
25 | /* Interaction Cues
26 | ----------------------------------*/
27 | .ui-state-disabled { cursor: default !important; }
28 |
29 |
30 | /* Icons
31 | ----------------------------------*/
32 |
33 | /* states and images */
34 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35 |
36 |
37 | /* Misc visuals
38 | ----------------------------------*/
39 |
40 | /* Overlays */
41 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
42 |
43 |
44 | /*
45 | * jQuery UI CSS Framework 1.8.14
46 | *
47 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
48 | * Dual licensed under the MIT or GPL Version 2 licenses.
49 | * http://jquery.org/license
50 | *
51 | * http://docs.jquery.com/UI/Theming/API
52 | *
53 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
54 | */
55 |
56 |
57 | /* Component containers
58 | ----------------------------------*/
59 | .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
60 | .ui-widget .ui-widget { font-size: 1em; }
61 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
62 | .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
63 | .ui-widget-content a { color: #222222; }
64 | .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
65 | .ui-widget-header a { color: #222222; }
66 |
67 | /* Interaction states
68 | ----------------------------------*/
69 | .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
70 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
71 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
72 | .ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
73 | .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
74 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
75 | .ui-widget :active { outline: none; }
76 |
77 | /* Interaction Cues
78 | ----------------------------------*/
79 | .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
80 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
81 | .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
82 | .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
83 | .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
84 | .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
85 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
86 | .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
87 |
88 | /* Icons
89 | ----------------------------------*/
90 |
91 | /* states and images */
92 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
93 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
94 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
95 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
96 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
97 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
98 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
99 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
100 |
101 | /* positioning */
102 | .ui-icon-carat-1-n { background-position: 0 0; }
103 | .ui-icon-carat-1-ne { background-position: -16px 0; }
104 | .ui-icon-carat-1-e { background-position: -32px 0; }
105 | .ui-icon-carat-1-se { background-position: -48px 0; }
106 | .ui-icon-carat-1-s { background-position: -64px 0; }
107 | .ui-icon-carat-1-sw { background-position: -80px 0; }
108 | .ui-icon-carat-1-w { background-position: -96px 0; }
109 | .ui-icon-carat-1-nw { background-position: -112px 0; }
110 | .ui-icon-carat-2-n-s { background-position: -128px 0; }
111 | .ui-icon-carat-2-e-w { background-position: -144px 0; }
112 | .ui-icon-triangle-1-n { background-position: 0 -16px; }
113 | .ui-icon-triangle-1-ne { background-position: -16px -16px; }
114 | .ui-icon-triangle-1-e { background-position: -32px -16px; }
115 | .ui-icon-triangle-1-se { background-position: -48px -16px; }
116 | .ui-icon-triangle-1-s { background-position: -64px -16px; }
117 | .ui-icon-triangle-1-sw { background-position: -80px -16px; }
118 | .ui-icon-triangle-1-w { background-position: -96px -16px; }
119 | .ui-icon-triangle-1-nw { background-position: -112px -16px; }
120 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
121 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
122 | .ui-icon-arrow-1-n { background-position: 0 -32px; }
123 | .ui-icon-arrow-1-ne { background-position: -16px -32px; }
124 | .ui-icon-arrow-1-e { background-position: -32px -32px; }
125 | .ui-icon-arrow-1-se { background-position: -48px -32px; }
126 | .ui-icon-arrow-1-s { background-position: -64px -32px; }
127 | .ui-icon-arrow-1-sw { background-position: -80px -32px; }
128 | .ui-icon-arrow-1-w { background-position: -96px -32px; }
129 | .ui-icon-arrow-1-nw { background-position: -112px -32px; }
130 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
131 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
132 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
133 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
134 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
135 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
136 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
137 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
138 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
139 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
140 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
141 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
142 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
143 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
144 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
145 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
146 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
147 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
148 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
149 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
150 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
151 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
152 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
153 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
154 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
155 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
156 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
157 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
158 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
159 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
160 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
161 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
162 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
163 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
164 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
165 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
166 | .ui-icon-arrow-4 { background-position: 0 -80px; }
167 | .ui-icon-arrow-4-diag { background-position: -16px -80px; }
168 | .ui-icon-extlink { background-position: -32px -80px; }
169 | .ui-icon-newwin { background-position: -48px -80px; }
170 | .ui-icon-refresh { background-position: -64px -80px; }
171 | .ui-icon-shuffle { background-position: -80px -80px; }
172 | .ui-icon-transfer-e-w { background-position: -96px -80px; }
173 | .ui-icon-transferthick-e-w { background-position: -112px -80px; }
174 | .ui-icon-folder-collapsed { background-position: 0 -96px; }
175 | .ui-icon-folder-open { background-position: -16px -96px; }
176 | .ui-icon-document { background-position: -32px -96px; }
177 | .ui-icon-document-b { background-position: -48px -96px; }
178 | .ui-icon-note { background-position: -64px -96px; }
179 | .ui-icon-mail-closed { background-position: -80px -96px; }
180 | .ui-icon-mail-open { background-position: -96px -96px; }
181 | .ui-icon-suitcase { background-position: -112px -96px; }
182 | .ui-icon-comment { background-position: -128px -96px; }
183 | .ui-icon-person { background-position: -144px -96px; }
184 | .ui-icon-print { background-position: -160px -96px; }
185 | .ui-icon-trash { background-position: -176px -96px; }
186 | .ui-icon-locked { background-position: -192px -96px; }
187 | .ui-icon-unlocked { background-position: -208px -96px; }
188 | .ui-icon-bookmark { background-position: -224px -96px; }
189 | .ui-icon-tag { background-position: -240px -96px; }
190 | .ui-icon-home { background-position: 0 -112px; }
191 | .ui-icon-flag { background-position: -16px -112px; }
192 | .ui-icon-calendar { background-position: -32px -112px; }
193 | .ui-icon-cart { background-position: -48px -112px; }
194 | .ui-icon-pencil { background-position: -64px -112px; }
195 | .ui-icon-clock { background-position: -80px -112px; }
196 | .ui-icon-disk { background-position: -96px -112px; }
197 | .ui-icon-calculator { background-position: -112px -112px; }
198 | .ui-icon-zoomin { background-position: -128px -112px; }
199 | .ui-icon-zoomout { background-position: -144px -112px; }
200 | .ui-icon-search { background-position: -160px -112px; }
201 | .ui-icon-wrench { background-position: -176px -112px; }
202 | .ui-icon-gear { background-position: -192px -112px; }
203 | .ui-icon-heart { background-position: -208px -112px; }
204 | .ui-icon-star { background-position: -224px -112px; }
205 | .ui-icon-link { background-position: -240px -112px; }
206 | .ui-icon-cancel { background-position: 0 -128px; }
207 | .ui-icon-plus { background-position: -16px -128px; }
208 | .ui-icon-plusthick { background-position: -32px -128px; }
209 | .ui-icon-minus { background-position: -48px -128px; }
210 | .ui-icon-minusthick { background-position: -64px -128px; }
211 | .ui-icon-close { background-position: -80px -128px; }
212 | .ui-icon-closethick { background-position: -96px -128px; }
213 | .ui-icon-key { background-position: -112px -128px; }
214 | .ui-icon-lightbulb { background-position: -128px -128px; }
215 | .ui-icon-scissors { background-position: -144px -128px; }
216 | .ui-icon-clipboard { background-position: -160px -128px; }
217 | .ui-icon-copy { background-position: -176px -128px; }
218 | .ui-icon-contact { background-position: -192px -128px; }
219 | .ui-icon-image { background-position: -208px -128px; }
220 | .ui-icon-video { background-position: -224px -128px; }
221 | .ui-icon-script { background-position: -240px -128px; }
222 | .ui-icon-alert { background-position: 0 -144px; }
223 | .ui-icon-info { background-position: -16px -144px; }
224 | .ui-icon-notice { background-position: -32px -144px; }
225 | .ui-icon-help { background-position: -48px -144px; }
226 | .ui-icon-check { background-position: -64px -144px; }
227 | .ui-icon-bullet { background-position: -80px -144px; }
228 | .ui-icon-radio-off { background-position: -96px -144px; }
229 | .ui-icon-radio-on { background-position: -112px -144px; }
230 | .ui-icon-pin-w { background-position: -128px -144px; }
231 | .ui-icon-pin-s { background-position: -144px -144px; }
232 | .ui-icon-play { background-position: 0 -160px; }
233 | .ui-icon-pause { background-position: -16px -160px; }
234 | .ui-icon-seek-next { background-position: -32px -160px; }
235 | .ui-icon-seek-prev { background-position: -48px -160px; }
236 | .ui-icon-seek-end { background-position: -64px -160px; }
237 | .ui-icon-seek-start { background-position: -80px -160px; }
238 | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
239 | .ui-icon-seek-first { background-position: -80px -160px; }
240 | .ui-icon-stop { background-position: -96px -160px; }
241 | .ui-icon-eject { background-position: -112px -160px; }
242 | .ui-icon-volume-off { background-position: -128px -160px; }
243 | .ui-icon-volume-on { background-position: -144px -160px; }
244 | .ui-icon-power { background-position: 0 -176px; }
245 | .ui-icon-signal-diag { background-position: -16px -176px; }
246 | .ui-icon-signal { background-position: -32px -176px; }
247 | .ui-icon-battery-0 { background-position: -48px -176px; }
248 | .ui-icon-battery-1 { background-position: -64px -176px; }
249 | .ui-icon-battery-2 { background-position: -80px -176px; }
250 | .ui-icon-battery-3 { background-position: -96px -176px; }
251 | .ui-icon-circle-plus { background-position: 0 -192px; }
252 | .ui-icon-circle-minus { background-position: -16px -192px; }
253 | .ui-icon-circle-close { background-position: -32px -192px; }
254 | .ui-icon-circle-triangle-e { background-position: -48px -192px; }
255 | .ui-icon-circle-triangle-s { background-position: -64px -192px; }
256 | .ui-icon-circle-triangle-w { background-position: -80px -192px; }
257 | .ui-icon-circle-triangle-n { background-position: -96px -192px; }
258 | .ui-icon-circle-arrow-e { background-position: -112px -192px; }
259 | .ui-icon-circle-arrow-s { background-position: -128px -192px; }
260 | .ui-icon-circle-arrow-w { background-position: -144px -192px; }
261 | .ui-icon-circle-arrow-n { background-position: -160px -192px; }
262 | .ui-icon-circle-zoomin { background-position: -176px -192px; }
263 | .ui-icon-circle-zoomout { background-position: -192px -192px; }
264 | .ui-icon-circle-check { background-position: -208px -192px; }
265 | .ui-icon-circlesmall-plus { background-position: 0 -208px; }
266 | .ui-icon-circlesmall-minus { background-position: -16px -208px; }
267 | .ui-icon-circlesmall-close { background-position: -32px -208px; }
268 | .ui-icon-squaresmall-plus { background-position: -48px -208px; }
269 | .ui-icon-squaresmall-minus { background-position: -64px -208px; }
270 | .ui-icon-squaresmall-close { background-position: -80px -208px; }
271 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
272 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
273 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
274 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
275 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
276 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
277 |
278 |
279 | /* Misc visuals
280 | ----------------------------------*/
281 |
282 | /* Corner radius */
283 | .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
284 | .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
285 | .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
286 | .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
287 |
288 | /* Overlays */
289 | .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
290 | .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
291 | * jQuery UI Resizable 1.8.14
292 | *
293 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
294 | * Dual licensed under the MIT or GPL Version 2 licenses.
295 | * http://jquery.org/license
296 | *
297 | * http://docs.jquery.com/UI/Resizable#theming
298 | */
299 | .ui-resizable { position: relative;}
300 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
301 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
302 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
303 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
304 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
305 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
306 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
307 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
308 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
309 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
310 | * jQuery UI Selectable 1.8.14
311 | *
312 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
313 | * Dual licensed under the MIT or GPL Version 2 licenses.
314 | * http://jquery.org/license
315 | *
316 | * http://docs.jquery.com/UI/Selectable#theming
317 | */
318 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
319 | /*
320 | * jQuery UI Accordion 1.8.14
321 | *
322 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
323 | * Dual licensed under the MIT or GPL Version 2 licenses.
324 | * http://jquery.org/license
325 | *
326 | * http://docs.jquery.com/UI/Accordion#theming
327 | */
328 | /* IE/Win - Fix animation bug - #4615 */
329 | .ui-accordion { width: 100%; }
330 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
331 | .ui-accordion .ui-accordion-li-fix { display: inline; }
332 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
333 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
334 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
335 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
336 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
337 | .ui-accordion .ui-accordion-content-active { display: block; }
338 | /*
339 | * jQuery UI Autocomplete 1.8.14
340 | *
341 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
342 | * Dual licensed under the MIT or GPL Version 2 licenses.
343 | * http://jquery.org/license
344 | *
345 | * http://docs.jquery.com/UI/Autocomplete#theming
346 | */
347 | .ui-autocomplete { position: absolute; cursor: default; }
348 |
349 | /* workarounds */
350 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
351 |
352 | /*
353 | * jQuery UI Menu 1.8.14
354 | *
355 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
356 | * Dual licensed under the MIT or GPL Version 2 licenses.
357 | * http://jquery.org/license
358 | *
359 | * http://docs.jquery.com/UI/Menu#theming
360 | */
361 | .ui-menu {
362 | list-style:none;
363 | padding: 2px;
364 | margin: 0;
365 | display:block;
366 | float: left;
367 | }
368 | .ui-menu .ui-menu {
369 | margin-top: -3px;
370 | }
371 | .ui-menu .ui-menu-item {
372 | margin:0;
373 | padding: 0;
374 | zoom: 1;
375 | float: left;
376 | clear: left;
377 | width: 100%;
378 | }
379 | .ui-menu .ui-menu-item a {
380 | text-decoration:none;
381 | display:block;
382 | padding:.2em .4em;
383 | line-height:1.5;
384 | zoom:1;
385 | }
386 | .ui-menu .ui-menu-item a.ui-state-hover,
387 | .ui-menu .ui-menu-item a.ui-state-active {
388 | font-weight: normal;
389 | margin: -1px;
390 | }
391 | /*
392 | * jQuery UI Button 1.8.14
393 | *
394 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
395 | * Dual licensed under the MIT or GPL Version 2 licenses.
396 | * http://jquery.org/license
397 | *
398 | * http://docs.jquery.com/UI/Button#theming
399 | */
400 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
401 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
402 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
403 | .ui-button-icons-only { width: 3.4em; }
404 | button.ui-button-icons-only { width: 3.7em; }
405 |
406 | /*button text element */
407 | .ui-button .ui-button-text { display: block; line-height: 1.4; }
408 | .ui-button-text-only .ui-button-text { padding: .4em 1em; }
409 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
410 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
411 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
412 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
413 | /* no icon support for input elements, provide padding by default */
414 | input.ui-button { padding: .4em 1em; }
415 |
416 | /*button icon element(s) */
417 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
418 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
419 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
420 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
421 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
422 |
423 | /*button sets*/
424 | .ui-buttonset { margin-right: 7px; }
425 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
426 |
427 | /* workarounds */
428 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
429 | /*
430 | * jQuery UI Dialog 1.8.14
431 | *
432 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
433 | * Dual licensed under the MIT or GPL Version 2 licenses.
434 | * http://jquery.org/license
435 | *
436 | * http://docs.jquery.com/UI/Dialog#theming
437 | */
438 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
439 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
440 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
441 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
442 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
443 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
444 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
445 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
446 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
447 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
448 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
449 | .ui-draggable .ui-dialog-titlebar { cursor: move; }
450 | /*
451 | * jQuery UI Slider 1.8.14
452 | *
453 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
454 | * Dual licensed under the MIT or GPL Version 2 licenses.
455 | * http://jquery.org/license
456 | *
457 | * http://docs.jquery.com/UI/Slider#theming
458 | */
459 | .ui-slider { position: relative; text-align: left; }
460 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
461 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
462 |
463 | .ui-slider-horizontal { height: .8em; }
464 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
465 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
466 | .ui-slider-horizontal .ui-slider-range-min { left: 0; }
467 | .ui-slider-horizontal .ui-slider-range-max { right: 0; }
468 |
469 | .ui-slider-vertical { width: .8em; height: 100px; }
470 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
471 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
472 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
473 | .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
474 | * jQuery UI Tabs 1.8.14
475 | *
476 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
477 | * Dual licensed under the MIT or GPL Version 2 licenses.
478 | * http://jquery.org/license
479 | *
480 | * http://docs.jquery.com/UI/Tabs#theming
481 | */
482 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
483 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
484 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
485 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
486 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
487 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
488 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
489 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
490 | .ui-tabs .ui-tabs-hide { display: none !important; }
491 | /*
492 | * jQuery UI Datepicker 1.8.14
493 | *
494 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
495 | * Dual licensed under the MIT or GPL Version 2 licenses.
496 | * http://jquery.org/license
497 | *
498 | * http://docs.jquery.com/UI/Datepicker#theming
499 | */
500 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
501 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
502 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
503 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
504 | .ui-datepicker .ui-datepicker-prev { left:2px; }
505 | .ui-datepicker .ui-datepicker-next { right:2px; }
506 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
507 | .ui-datepicker .ui-datepicker-next-hover { right:1px; }
508 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
509 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
510 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
511 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
512 | .ui-datepicker select.ui-datepicker-month,
513 | .ui-datepicker select.ui-datepicker-year { width: 49%;}
514 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
515 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
516 | .ui-datepicker td { border: 0; padding: 1px; }
517 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
518 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
519 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
520 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
521 |
522 | /* with multiple calendars */
523 | .ui-datepicker.ui-datepicker-multi { width:auto; }
524 | .ui-datepicker-multi .ui-datepicker-group { float:left; }
525 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
526 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
527 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
528 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
529 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
530 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
531 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
532 | .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
533 |
534 | /* RTL support */
535 | .ui-datepicker-rtl { direction: rtl; }
536 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
537 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
538 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
539 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
540 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
541 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
542 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
543 | .ui-datepicker-rtl .ui-datepicker-group { float:right; }
544 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
545 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
546 |
547 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
548 | .ui-datepicker-cover {
549 | display: none; /*sorry for IE5*/
550 | display/**/: block; /*sorry for IE5*/
551 | position: absolute; /*must have*/
552 | z-index: -1; /*must have*/
553 | filter: mask(); /*must have*/
554 | top: -4px; /*must have*/
555 | left: -4px; /*must have*/
556 | width: 200px; /*must have*/
557 | height: 200px; /*must have*/
558 | }/*
559 | * jQuery UI Progressbar 1.8.14
560 | *
561 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
562 | * Dual licensed under the MIT or GPL Version 2 licenses.
563 | * http://jquery.org/license
564 | *
565 | * http://docs.jquery.com/UI/Progressbar#theming
566 | */
567 | .ui-progressbar { height:2em; text-align: left; }
568 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
--------------------------------------------------------------------------------