diff --git a/noVNC/.gitignore b/noVNC/.gitignore index 7cf2a2a..a707ba7 100644 --- a/noVNC/.gitignore +++ b/noVNC/.gitignore @@ -2,4 +2,5 @@ *.o tests/data_*.js utils/rebind.so +utils/websockify node_modules diff --git a/noVNC/.travis.yml b/noVNC/.travis.yml index 371b974..8192252 100644 --- a/noVNC/.travis.yml +++ b/noVNC/.travis.yml @@ -14,3 +14,5 @@ env: - secure: QE5GqGd2hrpQsIgd8dlv3oRUUHqZayomzzQjNXOB81VQi241uz/ru+3GtBZLB5WLZCq/Gj89vbLnR0LN4ixlmPaWv3/WJQGyDGuRD/vMnccVl+rBUP/Hh2zdYwiISIGcrywNAE+KLus/lyt/ahVgzbaRaDSzrM1HaZFT/rndGck= - secure: g75sdctEwj0hoLW0Y08Tdv8s5scNzplB6a9EtaJ2vJD9S/bK+AsPqbWesGv1UlrFPCWdbV7Vg61vkmoUjcmb5xhqFIjcM9TlYJoKWeOTsOmnQoSIkIq6gMF1k02+LmKInbPgIzrp3m3jluS1qaOs/EzFpDnJp9hWBiAfXa12Jxk= before_script: npm install -g karma-cli +addons: + sauce_connect: true diff --git a/noVNC/LICENSE.txt b/noVNC/LICENSE.txt index 2d09408..e896efc 100644 --- a/noVNC/LICENSE.txt +++ b/noVNC/LICENSE.txt @@ -12,10 +12,10 @@ is not limited to): include/jsunzip.js include/keysym.js include/logo.js + include/playback.js include/rfb.js include/ui.js include/util.js - include/vnc.js include/websock.js include/webutil.js diff --git a/noVNC/debian/changelog b/noVNC/debian/changelog deleted file mode 100644 index 4d30742..0000000 --- a/noVNC/debian/changelog +++ /dev/null @@ -1,35 +0,0 @@ -novnc (0.4) maverick; urgency=low - - * Clarify permissive licenses of HTML, CSS, images. - * Use render queue and requestAnimationFrame - * UltraVNC repeater support - - -- Joel Martin Fri, 14 Sep 2012 05:00:00 -0600 - -novnc (0.3) maverick; urgency=low - - * add tight encoding support - * release pressed key when focus lost (fixes locked Alt key) - * Support Apple Remote Desktop - * Add nova/openstack proxy wrapper - * Better connection close handling/reporting - - -- Joel Martin Fri, 11 May 2012 03:00:00 -0600 - -novnc (0.2) maverick; urgency=low - - * Mobile device support with viewport clipping - * Much better styling that also works on mobile devices well - * Update websockify to support latest WebSocket protocol HyBi 13 - (i.e. support IETF 6455) - * Better support in websockify for python 2.4 through 3.2 - * Support VMWare ESX and Intel AMT KVM - * View only mode - - -- Joel Martin Tue, 05 Jul 2011 01:00:00 -0600 - -novnc (0.1) maverick; urgency=low - - * First upstream release - - -- Joel Martin Tue, 05 Jul 2011 01:00:00 -0600 diff --git a/noVNC/debian/compat b/noVNC/debian/compat deleted file mode 100644 index 7f8f011..0000000 --- a/noVNC/debian/compat +++ /dev/null @@ -1 +0,0 @@ -7 diff --git a/noVNC/debian/control b/noVNC/debian/control deleted file mode 100644 index f7b92d5..0000000 --- a/noVNC/debian/control +++ /dev/null @@ -1,13 +0,0 @@ -Source: novnc -Section: web -Priority: optional -Maintainer: Joel Martin -Build-Depends: debhelper (>= 7.0.0~) -Standards-Version: 3.8.3 -Homepage: https://github.com/kanaka/noVNC/ - -Package: novnc -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, python (>= 2.4) -Description: HTML5 VNC client - VNC client using HTML5 (WebSockets, Canvas) with encryption (wss://) support. diff --git a/noVNC/debian/copyright b/noVNC/debian/copyright deleted file mode 100644 index db00fa1..0000000 --- a/noVNC/debian/copyright +++ /dev/null @@ -1,37 +0,0 @@ -Upstream Project: https://github.com/kanaka/noVNC/ - ---------------------- Original LICENSE.txt --------------------------- - -noVNC is Copyright (C) 2012 Joel Martin - -Some portions of noVNC are copyright to their individual authors. -Please refer to the individual source files and/or to the noVNC commit -history: https://github.com/kanaka/noVNC/commits/master - -noVNC is licensed under the MPL 2.0 (Mozilla Public License) with the -following exceptions: - - *.html, *.css : 2-Clause BSD license - - include/Orbitron* : SIL Open Font License 1.1 - (Copyright 2009 Matt McInerney) - - images/ : Creative Commons Attribution-ShareAlike - http://creativecommons.org/licenses/by-sa/3.0/ - - include/base64.js : MPL 2.0 - - include/des.js : Various BSD style licenses - - include/jsunzip.js : zlib/libpng license - - include/web-socket-js/ : New BSD license (3-clause). Source code at - http://github.com/gimite/web-socket-js - - include/chrome-app/tcp-stream.js - : Apache 2.0 license - ----------------------------------------------------------------------- - -The MPL-2.0 license text may be found here: - http://www.mozilla.org/MPL/2.0/ diff --git a/noVNC/debian/novnc.install b/noVNC/debian/novnc.install deleted file mode 100644 index ac51e3c..0000000 --- a/noVNC/debian/novnc.install +++ /dev/null @@ -1,30 +0,0 @@ -vnc.html /usr/share/novnc -vnc_auto.html /usr/share/novnc -README.md /usr/share/doc/novnc -LICENSE.txt /usr/share/doc/novnc -utils/Makefile /usr/share/novnc/utils -utils/launch.sh /usr/share/novnc/utils -utils/websocket.py /usr/share/novnc/utils -utils/websockify /usr/share/novnc/utils -utils/rebind.c /usr/share/novnc/utils -utils/rebind.so /usr/share/novnc/utils -images /usr/share/novnc -images/favicon.ico /usr/share/novnc -include/base64.js /usr/share/novnc/include -include/des.js /usr/share/novnc/include -include/display.js /usr/share/novnc/include -include/keysymdef.js /usr/share/novnc/include -include/keyboard.js /usr/share/novnc/include -include/input.js /usr/share/novnc/include -include/logo.js /usr/share/novnc/include -include/base.css /usr/share/novnc/include -include/blue.css /usr/share/novnc/include -include/black.css /usr/share/novnc/include -include/playback.js /usr/share/novnc/include -include/rfb.js /usr/share/novnc/include -include/ui.js /usr/share/novnc/include -include/util.js /usr/share/novnc/include -include/websock.js /usr/share/novnc/include -include/webutil.js /usr/share/novnc/include -include/jsunzip.js /usr/share/novnc/include -include/web-socket-js/* /usr/share/novnc/include/web-socket-js diff --git a/noVNC/debian/rules b/noVNC/debian/rules deleted file mode 100755 index 25b0812..0000000 --- a/noVNC/debian/rules +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/make -f - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -clean: - make -C utils clean - dh clean - -build: - make -C utils rebind.so - -%: - dh ${@} diff --git a/noVNC/docs/packaging.txt b/noVNC/docs/packaging.txt deleted file mode 100644 index 9552454..0000000 --- a/noVNC/docs/packaging.txt +++ /dev/null @@ -1,23 +0,0 @@ -noVNC packaging steps for Debian/Ubuntu: - -- Update the noVNC version in docs/VERSION and add a new entry for the - version in debian/changelog - -- Rename the novnc source directory to match the form "novnc-VERSION". - -- In the novnc source directory, run the packaging command: - - debuild -I -uc -us - - - The -I option ignores the .git directory when generating the - source tarball. - - the -uc and -us may be omitted in order to create a signed - package. - - - Alternatively, use pbuilder instead of debuild in order to build - for other distributions and to guarantee a sanitized package. - -- Verify the package and then commit the changes to docs/VERSION and - debian/changelog. - -- Upload the new package file(s). diff --git a/noVNC/docs/release.txt b/noVNC/docs/release.txt index 596482c..1660b9b 100644 --- a/noVNC/docs/release.txt +++ b/noVNC/docs/release.txt @@ -1,4 +1,4 @@ -- Update and commit docs/VERSION and debian/changelog +- Update and commit docs/VERSION - Create version tag and tarball from tag WVER=0.3 git tag v${WVER} diff --git a/noVNC/images/.@__thumb/defaultscreen_320x460.png b/noVNC/images/.@__thumb/defaultscreen_320x460.png new file mode 100755 index 0000000..b22e38e Binary files /dev/null and b/noVNC/images/.@__thumb/defaultscreen_320x460.png differ diff --git a/noVNC/images/.@__thumb/defaultscreen_700x700.png b/noVNC/images/.@__thumb/defaultscreen_700x700.png new file mode 100755 index 0000000..cec5e4f Binary files /dev/null and b/noVNC/images/.@__thumb/defaultscreen_700x700.png differ diff --git a/noVNC/images/.@__thumb/s100screen_320x460.png b/noVNC/images/.@__thumb/s100screen_320x460.png new file mode 100755 index 0000000..2d02e0a Binary files /dev/null and b/noVNC/images/.@__thumb/s100screen_320x460.png differ diff --git a/noVNC/images/.@__thumb/s100screen_700x700.png b/noVNC/images/.@__thumb/s100screen_700x700.png new file mode 100755 index 0000000..e525593 Binary files /dev/null and b/noVNC/images/.@__thumb/s100screen_700x700.png differ diff --git a/noVNC/images/.@__thumb/s800screen_320x460.png b/noVNC/images/.@__thumb/s800screen_320x460.png new file mode 100755 index 0000000..b22e38e Binary files /dev/null and b/noVNC/images/.@__thumb/s800screen_320x460.png differ diff --git a/noVNC/images/.@__thumb/s800screen_700x700.png b/noVNC/images/.@__thumb/s800screen_700x700.png new file mode 100755 index 0000000..d73af5b Binary files /dev/null and b/noVNC/images/.@__thumb/s800screen_700x700.png differ diff --git a/noVNC/images/pop_less.png b/noVNC/images/pop_less.png new file mode 100755 index 0000000..ad85a05 Binary files /dev/null and b/noVNC/images/pop_less.png differ diff --git a/noVNC/images/pop_less_hover.png b/noVNC/images/pop_less_hover.png new file mode 100755 index 0000000..1092476 Binary files /dev/null and b/noVNC/images/pop_less_hover.png differ diff --git a/noVNC/images/pop_more.png b/noVNC/images/pop_more.png new file mode 100755 index 0000000..dac7e72 Binary files /dev/null and b/noVNC/images/pop_more.png differ diff --git a/noVNC/images/pop_more_hover.png b/noVNC/images/pop_more_hover.png new file mode 100755 index 0000000..626299e Binary files /dev/null and b/noVNC/images/pop_more_hover.png differ diff --git a/noVNC/images/topbackground.png b/noVNC/images/topbackground.png new file mode 100755 index 0000000..c2b6d46 Binary files /dev/null and b/noVNC/images/topbackground.png differ diff --git a/noVNC/include/base.css b/noVNC/include/base.css index e2c9a96..90c17e4 100644 --- a/noVNC/include/base.css +++ b/noVNC/include/base.css @@ -112,13 +112,7 @@ html { /* Do not set width/height for VNC_screen or VNC_canvas or incorrect * scaling will occur. Canvas resizes to remote VNC settings */ -#noVNC_screen_pad { - margin: 0px; - padding: 0px; - height: 36px; -} #noVNC_screen { - text-align: center; display: table; width:100%; height:100%; @@ -127,13 +121,25 @@ html { /*border-top-left-radius: 800px 600px;*/ } -#noVNC_container, #noVNC_canvas { +#noVNC_container { + display: none; + position: absolute; margin: 0px; padding: 0px; + bottom: 0px; + top: 36px; /* the height of the control bar */ + left: 0px; + right: 0px; + width: auto; + height: auto; } #noVNC_canvas { - left: 0px; + position: absolute; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; } #VNC_clipboard_clear_button { @@ -232,6 +238,7 @@ html { position: relative; left: -40px; z-index: -1; + ime-mode: disabled; } /* diff --git a/noVNC/include/display.js b/noVNC/include/display.js index a42b854..9a8e455 100644 --- a/noVNC/include/display.js +++ b/noVNC/include/display.js @@ -1,6 +1,7 @@ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin + * Copyright (C) 2015 Samuel Mannehed for Cendio AB * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. @@ -24,6 +25,10 @@ var Display; this._fb_width = 0; this._fb_height = 0; + // the size limit of the viewport (start disabled) + this._maxWidth = 0; + this._maxHeight = 0; + // the visible "physical canvas" viewport this._viewportLoc = { 'x': 0, 'y': 0, 'w': 0, 'h': 0 }; this._cleanRect = { 'x1': 0, 'y1': 0, 'x2': -1, 'y2': -1 }; @@ -81,28 +86,9 @@ var Display; } // Determine browser support for setting the cursor via data URI scheme - var curDat = []; - for (var i = 0; i < 8 * 8 * 4; i++) { - curDat.push(255); - } - try { - var curSave = this._target.style.cursor; - Display.changeCursor(this._target, curDat, curDat, 2, 2, 8, 8); - if (this._target.style.cursor) { - if (this._cursor_uri === null || this._cursor_uri === undefined) { - this._cursor_uri = true; - } - Util.Info("Data URI scheme cursor supported"); - } else { - if (this._cursor_uri === null || this._cursor_uri === undefined) { - this._cursor_uri = false; - } - Util.Warn("Data URI scheme cursor not supported"); - } - this._target.style.cursor = curSave; - } catch (exc) { - Util.Error("Data URI scheme cursor test exception: " + exc); - this._cursor_uri = false; + if (this._cursor_uri || this._cursor_uri === null || + this._cursor_uri === undefined) { + this._cursor_uri = Util.browserSupportsCursorURIs(); } Util.Debug("<< Display.constructor"); @@ -110,54 +96,12 @@ var Display; Display.prototype = { // Public methods - viewportChange: function (deltaX, deltaY, width, height) { + viewportChangePos: function (deltaX, deltaY) { var vp = this._viewportLoc; - var cr = this._cleanRect; - var canvas = this._target; if (!this._viewport) { - Util.Debug("Setting viewport to full display region"); deltaX = -vp.w; // clamped later of out of bounds deltaY = -vp.h; - width = this._fb_width; - height = this._fb_height; - } - - if (typeof(deltaX) === "undefined") { deltaX = 0; } - if (typeof(deltaY) === "undefined") { deltaY = 0; } - if (typeof(width) === "undefined") { width = vp.w; } - if (typeof(height) === "undefined") { height = vp.h; } - - // Size change - if (width > this._fb_width) { width = this._fb_width; } - if (height > this._fb_height) { height = this._fb_height; } - - if (vp.w !== width || vp.h !== height) { - // Change width - if (width < vp.w && cr.x2 > vp.x + width - 1) { - cr.x2 = vp.x + width - 1; - } - vp.w = width; - - // Change height - if (height < vp.h && cr.y2 > vp.y + height - 1) { - cr.y2 = vp.y + height - 1; - } - vp.h = height; - - var saveImg = null; - if (vp.w > 0 && vp.h > 0 && canvas.width > 0 && canvas.height > 0) { - var img_width = canvas.width < vp.w ? canvas.width : vp.w; - var img_height = canvas.height < vp.h ? canvas.height : vp.h; - saveImg = this._drawCtx.getImageData(0, 0, img_width, img_height); - } - - canvas.width = vp.w; - canvas.height = vp.h; - - if (saveImg) { - this._drawCtx.putImageData(saveImg, 0, 0); - } } var vx2 = vp.x + vp.w - 1; @@ -190,6 +134,7 @@ var Display; vy2 += deltaY; // Update the clean rectangle + var cr = this._cleanRect; if (vp.x > cr.x1) { cr.x1 = vp.x; } @@ -227,6 +172,7 @@ var Display; // Copy the valid part of the viewport to the shifted location var saveStyle = this._drawCtx.fillStyle; + var canvas = this._target; this._drawCtx.fillStyle = "rgb(255,255,255)"; if (deltaX !== 0) { this._drawCtx.drawImage(canvas, 0, 0, vp.w, vp.h, -deltaX, 0, vp.w, vp.h); @@ -239,6 +185,65 @@ var Display; this._drawCtx.fillStyle = saveStyle; }, + viewportChangeSize: function(width, height) { + + if (typeof(width) === "undefined" || typeof(height) === "undefined") { + + Util.Debug("Setting viewport to full display region"); + width = this._fb_width; + height = this._fb_height; + } + + var vp = this._viewportLoc; + if (vp.w !== width || vp.h !== height) { + + if (this._viewport) { + if (this._maxWidth !== 0 && width > this._maxWidth) { + width = this._maxWidth; + } + if (this._maxHeight !== 0 && height > this._maxHeight) { + height = this._maxHeight; + } + } + + var cr = this._cleanRect; + + if (width < vp.w && cr.x2 > vp.x + width - 1) { + cr.x2 = vp.x + width - 1; + } + if (height < vp.h && cr.y2 > vp.y + height - 1) { + cr.y2 = vp.y + height - 1; + } + + vp.w = width; + vp.h = height; + + var canvas = this._target; + if (canvas.width !== width || canvas.height !== height) { + + // We have to save the canvas data since changing the size will clear it + var saveImg = null; + if (vp.w > 0 && vp.h > 0 && canvas.width > 0 && canvas.height > 0) { + var img_width = canvas.width < vp.w ? canvas.width : vp.w; + var img_height = canvas.height < vp.h ? canvas.height : vp.h; + saveImg = this._drawCtx.getImageData(0, 0, img_width, img_height); + } + + if (canvas.width !== width) { canvas.width = width; } + if (canvas.height !== height) { canvas.height = height; } + + if (this._viewport) { + canvas.style.height = height + 'px'; + canvas.style.width = width + 'px'; + } + + if (saveImg) { + this._drawCtx.putImageData(saveImg, 0, 0); + } + } + } + }, + // Return a map of clean and dirty areas of the viewport and reset the // tracking of clean and dirty areas // @@ -304,7 +309,7 @@ var Display; this._rescale(this._scale); - this.viewportChange(); + this.viewportChangeSize(); }, clear: function () { @@ -470,6 +475,24 @@ var Display; this._target.style.cursor = "default"; }, + disableLocalCursor: function () { + this._target.style.cursor = "none"; + }, + + clippingDisplay: function () { + var vp = this._viewportLoc; + + var fbClip = this._fb_width > vp.w || this._fb_height > vp.h; + var limitedVp = this._maxWidth !== 0 && this._maxHeight !== 0; + var clipping = false; + + if (limitedVp) { + clipping = vp.w > this._maxWidth || vp.h > this._maxHeight; + } + + return fbClip || (limitedVp && clipping); + }, + // Overridden getters/setters get_context: function () { return this._drawCtx; @@ -480,51 +503,73 @@ var Display; }, set_width: function (w) { - this.resize(w, this._fb_height); + this._fb_width = w; }, get_width: function () { return this._fb_width; }, set_height: function (h) { - this.resize(this._fb_width, h); + this._fb_height = h; }, get_height: function () { return this._fb_height; }, + autoscale: function (containerWidth, containerHeight, downscaleOnly) { + var targetAspectRatio = containerWidth / containerHeight; + var fbAspectRatio = this._fb_width / this._fb_height; + + var scaleRatio; + if (fbAspectRatio >= targetAspectRatio) { + scaleRatio = containerWidth / this._fb_width; + } else { + scaleRatio = containerHeight / this._fb_height; + } + + var targetW, targetH; + if (scaleRatio > 1.0 && downscaleOnly) { + targetW = this._fb_width; + targetH = this._fb_height; + scaleRatio = 1.0; + } else if (fbAspectRatio >= targetAspectRatio) { + targetW = containerWidth; + targetH = Math.round(containerWidth / fbAspectRatio); + } else { + targetW = Math.round(containerHeight * fbAspectRatio); + targetH = containerHeight; + } + + // NB(directxman12): If you set the width directly, or set the + // style width to a number, the canvas is cleared. + // However, if you set the style width to a string + // ('NNNpx'), the canvas is scaled without clearing. + this._target.style.width = targetW + 'px'; + this._target.style.height = targetH + 'px'; + + this._scale = scaleRatio; + + return scaleRatio; // so that the mouse, etc scale can be set + }, + // Private Methods _rescale: function (factor) { - var canvas = this._target; - var properties = ['transform', 'WebkitTransform', 'MozTransform']; - var transform_prop; - while ((transform_prop = properties.shift())) { - if (typeof canvas.style[transform_prop] !== 'undefined') { - break; - } - } - - if (transform_prop === null) { - Util.Debug("No scaling support"); - return; - } - - if (typeof(factor) === "undefined") { - factor = this._scale; - } else if (factor > 1.0) { - factor = 1.0; - } else if (factor < 0.1) { - factor = 0.1; - } - - if (this._scale === factor) { - return; - } - this._scale = factor; - var x = canvas.width - (canvas.width * factor); - var y = canvas.height - (canvas.height * factor); - canvas.style[transform_prop] = 'scale(' + this._scale + ') translate(-' + x + 'px, -' + y + 'px)'; + + var w; + var h; + + if (this._viewport && + this._maxWidth !== 0 && this._maxHeight !== 0) { + w = Math.min(this._fb_width, this._maxWidth); + h = Math.min(this._fb_height, this._maxHeight); + } else { + w = this._fb_width; + h = this._fb_height; + } + + this._target.style.width = Math.round(factor * w) + 'px'; + this._target.style.height = Math.round(factor * h) + 'px'; }, _setFillColor: function (color) { @@ -626,9 +671,11 @@ var Display; ['true_color', 'rw', 'bool'], // Use true-color pixel data ['colourMap', 'rw', 'arr'], // Colour map array (when not true-color) ['scale', 'rw', 'float'], // Display area scale factor 0.0 - 1.0 - ['viewport', 'rw', 'bool'], // Use a viewport set with viewportChange() + ['viewport', 'rw', 'bool'], // Use viewport clipping ['width', 'rw', 'int'], // Display area width ['height', 'rw', 'int'], // Display area height + ['maxWidth', 'rw', 'int'], // Viewport max width (0 if disabled) + ['maxHeight', 'rw', 'int'], // Viewport max height (0 if disabled) ['render_mode', 'ro', 'str'], // Canvas rendering mode (read-only) diff --git a/noVNC/include/font-awesome/css/font-awesome.css b/noVNC/include/font-awesome/css/font-awesome.css new file mode 100755 index 0000000..ab5a4c1 --- /dev/null +++ b/noVNC/include/font-awesome/css/font-awesome.css @@ -0,0 +1,66 @@ +/*! + * Font Awesome 3.2.1 + * the iconic font designed for Bootstrap + * ------------------------------------------------------------------------------ + * The full suite of pictographic icons, examples, and documentation can be + * found at http://fontawesome.io. Stay up to date on Twitter at + * http://twitter.com/fontawesome. + * + * License + * ------------------------------------------------------------------------------ + * - The Font Awesome font is licensed under SIL OFL 1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + * + * Author - Dave Gandy + * ------------------------------------------------------------------------------ + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/davegandy + * Work: Lead Product Designer @ Kyruus - http://kyruus.com + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../font/fontawesome-webfont.eot?v=3.2.1'); + src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); + font-weight: normal; + font-style: normal; +} +/* FONT AWESOME CORE + * -------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-long-arrow-down:before { + content: "\f175"; +} +.icon-long-arrow-up:before { + content: "\f176"; +} +.icon-long-arrow-left:before { + content: "\f177"; +} +.icon-long-arrow-right:before { + content: "\f178"; +} diff --git a/noVNC/include/font-awesome/font/FontAwesome.otf b/noVNC/include/font-awesome/font/FontAwesome.otf new file mode 100755 index 0000000..8b0f54e Binary files /dev/null and b/noVNC/include/font-awesome/font/FontAwesome.otf differ diff --git a/noVNC/include/font-awesome/font/fontawesome-webfont.eot b/noVNC/include/font-awesome/font/fontawesome-webfont.eot new file mode 100755 index 0000000..7c79c6a Binary files /dev/null and b/noVNC/include/font-awesome/font/fontawesome-webfont.eot differ diff --git a/noVNC/include/font-awesome/font/fontawesome-webfont.svg b/noVNC/include/font-awesome/font/fontawesome-webfont.svg new file mode 100755 index 0000000..45fdf33 --- /dev/null +++ b/noVNC/include/font-awesome/font/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/noVNC/include/font-awesome/font/fontawesome-webfont.ttf b/noVNC/include/font-awesome/font/fontawesome-webfont.ttf new file mode 100755 index 0000000..e89738d Binary files /dev/null and b/noVNC/include/font-awesome/font/fontawesome-webfont.ttf differ diff --git a/noVNC/include/font-awesome/font/fontawesome-webfont.woff b/noVNC/include/font-awesome/font/fontawesome-webfont.woff new file mode 100755 index 0000000..8c1748a Binary files /dev/null and b/noVNC/include/font-awesome/font/fontawesome-webfont.woff differ diff --git a/noVNC/include/keysym.js b/noVNC/include/keysym.js index 2b97198..58b107c 100644 --- a/noVNC/include/keysym.js +++ b/noVNC/include/keysym.js @@ -58,7 +58,7 @@ XK_KP_Up = 0xff97, XK_KP_Right = 0xff98, XK_KP_Down = 0xff99, XK_KP_Prior = 0xff9a, -XK_KP_Page_Up = 0xff9a +XK_KP_Page_Up = 0xff9a, XK_KP_Next = 0xff9b, XK_KP_Page_Down = 0xff9b, XK_KP_End = 0xff9c, diff --git a/noVNC/include/multiKeyCode.js b/noVNC/include/multiKeyCode.js new file mode 100755 index 0000000..e232112 --- /dev/null +++ b/noVNC/include/multiKeyCode.js @@ -0,0 +1,38 @@ +function getMultiKeyCode(){ + var multiKeyCode = { + "0":{"id":"Esc","name":"Escape","code":"0xff1b"}, + "1":{"id":"Shift","name":"Shift","code":"0xffe1"}, + "2":{"id":"Ins","name":"Insert","code":"0xff63"}, + "3":{"id":"Left","name":"Left","code":"0xff51"}, + "4":{"id":"UP","name":"UP","code":"0xff52"}, + "5":{"id":"Right","name":"Right","code":"0xff53"}, + "6":{"id":"Home","name":"Home","code":"0xff50"}, + "7":{"id":"PgUP","name":"PageUp","code":"0xff55"}, + "8":{"id":"Caps","name":"CapsLock","code":"0xffe5"}, + "9":{"id":"Ctrl","name":"Ctrl","code":"0xffe3"}, + "10":{"id":"Alt","name":"Alt","code":"0xffe9"}, + "11":{"id":"Win","name":"Win Key","code":"0xffeb"}, + "12":{"id":"Down","name":"Down","code":"0xff54"}, + "13":{"id":"Del","name":"Delete","code":"0xffff"}, + "14":{"id":"End","name":"End","code":"0xff57"}, + "15":{"id":"PgDn","name":"PageDown","code":"0xff56"}, + "16":{"id":"F1","name":"F1","code":"0xffbe"}, + "17":{"id":"F2","name":"F2","code":"0xffbf"}, + "18":{"id":"F3","name":"F3","code":"0xffc0"}, + "19":{"id":"F4","name":"F4","code":"0xffc1"}, + "20":{"id":"F5","name":"F5","code":"0xffc2"}, + "21":{"id":"F6","name":"F6","code":"0xffc3"}, + "22":{"id":"F7","name":"F7","code":"0xffc4"}, + "23":{"id":"F8","name":"F8","code":"0xffc5"}, + "24":{"id":"Back","name":"Backspace","code":"0xff08"}, + "25":{"id":"Tab","name":"Tab","code":"0xff09"}, + "26":{"id":"PrtSc","name":"Print Screen","code":"0xff61"}, + "27":{"id":"Pause","name":"Pause","code":"0xff13"}, + "28":{"id":"F9","name":"F9","code":"0xffc6"}, + "29":{"id":"F10","name":"F10","code":"0xffc7"}, + "30":{"id":"F11","name":"F11","code":"0xffc8"}, + "31":{"id":"F12","name":"F12","code":"0xffc9"} + }; + + return multiKeyCode; +} \ No newline at end of file diff --git a/noVNC/include/rfb.js b/noVNC/include/rfb.js index 59fd785..a591ca2 100644 --- a/noVNC/include/rfb.js +++ b/noVNC/include/rfb.js @@ -37,23 +37,24 @@ var RFB; // In preference order this._encodings = [ - ['COPYRECT', 0x01 ], - ['TIGHT', 0x07 ], - ['TIGHT_PNG', -260 ], - ['HEXTILE', 0x05 ], - ['RRE', 0x02 ], - ['RAW', 0x00 ], - ['DesktopSize', -223 ], - ['Cursor', -239 ], + ['COPYRECT', 0x01 ], + ['TIGHT', 0x07 ], + ['TIGHT_PNG', -260 ], + ['HEXTILE', 0x05 ], + ['RRE', 0x02 ], + ['RAW', 0x00 ], + ['DesktopSize', -223 ], + ['Cursor', -239 ], // Psuedo-encoding settings - //['JPEG_quality_lo', -32 ], - ['JPEG_quality_med', -26 ], - //['JPEG_quality_hi', -23 ], - //['compress_lo', -255 ], - ['compress_hi', -247 ], - ['last_rect', -224 ], - ['xvp', -309 ] + //['JPEG_quality_lo', -32 ], + ['JPEG_quality_med', -26 ], + //['JPEG_quality_hi', -23 ], + //['compress_lo', -255 ], + ['compress_hi', -247 ], + ['last_rect', -224 ], + ['xvp', -309 ], + ['ExtendedDesktopSize', -308 ] ]; this._encHandlers = {}; @@ -106,6 +107,10 @@ var RFB; pixels: 0 }; + this._supportsSetDesktopSize = false; + this._screen_id = 0; + this._screen_flags = 0; + // Mouse state this._mouse_buttonMask = 0; this._mouse_arr = []; @@ -154,11 +159,13 @@ var RFB; this._encStats[this._encodings[i][1]] = [0, 0]; } + // NB: nothing that needs explicit teardown should be done + // before this point, since this can throw an exception try { this._display = new Display({target: this._target}); } catch (exc) { Util.Error("Display exception: " + exc); - this._updateState('fatal', "No working Display"); + throw exc; } this._keyboard = new Keyboard({target: this._focusContainer, @@ -197,6 +204,7 @@ var RFB; } else { this._fail("Server disconnected" + msg); } + this._sock.off('close'); }.bind(this)); this._sock.on('error', function (e) { Util.Warn("WebSocket on-error event"); @@ -211,9 +219,11 @@ var RFB; } else { Util.Warn("Using web-socket-js bridge. Flash version: " + Util.Flash.version); if (!Util.Flash || Util.Flash.version < 9) { - this._updateState('fatal', "WebSockets or Adobe Flash is required"); + this._cleanupSocket('fatal'); + throw new Exception("WebSockets or Adobe Flash is required"); } else if (document.location.href.substr(0, 7) === 'file://') { - this._updateState('fatal', "'file://' URL is incompatible with Adobe Flash"); + this._cleanupSocket('fatal'); + throw new Exception("'file://' URL is incompatible with Adobe Flash"); } else { this._updateState('loaded', 'noVNC ready: WebSockets emulation, ' + rmode); } @@ -239,6 +249,9 @@ var RFB; disconnect: function () { this._updateState('disconnect', 'Disconnecting'); + this._sock.off('error'); + this._sock.off('message'); + this._sock.off('open'); }, sendPassword: function (passwd) { @@ -301,6 +314,32 @@ var RFB; this._sock.send(RFB.messages.clientCutText(text)); }, + setDesktopSize: function (width, height) { + if (this._rfb_state !== "normal") { return; } + + if (this._supportsSetDesktopSize) { + + var arr = [251]; // msg-type + arr.push8(0); // padding + arr.push16(width); // width + arr.push16(height); // height + + arr.push8(1); // number-of-screens + arr.push8(0); // padding + + // screen array + arr.push32(this._screen_id); // id + arr.push16(0); // x-position + arr.push16(0); // y-position + arr.push16(width); // width + arr.push16(height); // height + arr.push32(this._screen_flags); // flags + + this._sock.send(arr); + } + }, + + // Private methods _connect: function () { @@ -363,6 +402,32 @@ var RFB; } }, + _cleanupSocket: function (state) { + if (this._sendTimer) { + clearInterval(this._sendTimer); + this._sendTimer = null; + } + + if (this._msgTimer) { + clearInterval(this._msgTimer); + this._msgTimer = null; + } + + if (this._display && this._display.get_context()) { + this._keyboard.ungrab(); + this._mouse.ungrab(); + if (state !== 'connect' && state !== 'loaded') { + this._display.defaultCursor(); + } + if (Util.get_logging() !== 'debug' || state === 'loaded') { + // Show noVNC logo on load and when disconnected, unless in + // debug mode + this._display.clear(); + } + } + + this._sock.close(); + }, /* * Page states: @@ -397,29 +462,7 @@ var RFB; */ if (state in {'disconnected': 1, 'loaded': 1, 'connect': 1, 'disconnect': 1, 'failed': 1, 'fatal': 1}) { - - if (this._sendTimer) { - clearInterval(this._sendTimer); - this._sendTimer = null; - } - - if (this._msgTimer) { - clearInterval(this._msgTimer); - this._msgTimer = null; - } - - if (this._display && this._display.get_context()) { - this._keyboard.ungrab(); - this._mouse.ungrab(); - this._display.defaultCursor(); - if (Util.get_logging() !== 'debug' || state === 'loaded') { - // Show noVNC logo on load and when disconnected, unless in - // debug mode - this._display.clear(); - } - } - - this._sock.close(); + this._cleanupSocket(state); } if (oldstate === 'fatal') { @@ -445,6 +488,7 @@ var RFB; Util.Debug("Clearing disconnect timer"); clearTimeout(this._disconnTimer); this._disconnTimer = null; + this._sock.off('close'); // make sure we don't get a double event } switch (state) { @@ -579,7 +623,7 @@ var RFB; var deltaY = this._viewportDragPos.y - y; this._viewportDragPos = {'x': x, 'y': y}; - this._display.viewportChange(deltaX, deltaY); + this._display.viewportChangePos(deltaX, deltaY); // Skip sending mouse events return; @@ -938,8 +982,8 @@ var RFB; } this._display.set_true_color(this._true_color); - this._onFBResize(this, this._fb_width, this._fb_height); this._display.resize(this._fb_width, this._fb_height); + this._onFBResize(this, this._fb_width, this._fb_height); this._keyboard.grab(); this._mouse.grab(); @@ -1215,11 +1259,13 @@ var RFB; RFB.prototype.set_local_cursor = function (cursor) { if (!cursor || (cursor in {'0': 1, 'no': 1, 'false': 1})) { this._local_cursor = false; + this._display.disableLocalCursor(); //Only show server-side cursor } else { if (this._display.get_cursor_uri()) { this._local_cursor = true; } else { Util.Warn("Browser does not support local cursor"); + this._display.disableLocalCursor(); } } }; @@ -1832,18 +1878,81 @@ var RFB; return true; }, - DesktopSize: function () { - Util.Debug(">> set_desktopsize"); + handle_FB_resize: function () { this._fb_width = this._FBU.width; this._fb_height = this._FBU.height; - this._onFBResize(this, this._fb_width, this._fb_height); this._display.resize(this._fb_width, this._fb_height); + this._onFBResize(this, this._fb_width, this._fb_height); this._timing.fbu_rt_start = (new Date()).getTime(); this._FBU.bytes = 0; - this._FBU.rects--; + this._FBU.rects -= 1; + return true; + }, - Util.Debug("<< set_desktopsize"); + ExtendedDesktopSize: function () { + this._FBU.bytes = 1; + if (this._sock.rQwait("ExtendedDesktopSize", this._FBU.bytes)) { return false; } + + this._supportsSetDesktopSize = true; + var number_of_screens = this._sock.rQpeek8(); + + this._FBU.bytes = 4 + (number_of_screens * 16); + if (this._sock.rQwait("ExtendedDesktopSize", this._FBU.bytes)) { return false; } + + this._sock.rQskipBytes(1); // number-of-screens + this._sock.rQskipBytes(3); // padding + + for (var i=0; i> settingsApply"); UI.saveSetting('encrypt'); UI.saveSetting('true_color'); - if (UI.rfb.get_display().get_cursor_uri()) { + if (Util.browserSupportsCursorURIs()) { UI.saveSetting('cursor'); } + + UI.saveSetting('resize'); + + if (UI.getSetting('resize') === 'downscale' || UI.getSetting('resize') === 'scale') { + UI.forceSetting('clip', false); + } + UI.saveSetting('clip'); UI.saveSetting('shared'); UI.saveSetting('view_only'); @@ -489,7 +565,7 @@ var UI; WebUtil.selectStylesheet(UI.getSetting('stylesheet')); WebUtil.init_logging(UI.getSetting('logging')); UI.setViewClip(); - UI.setViewDrag(UI.rfb.get_viewportDrag()); + UI.setViewDrag(UI.rfb && UI.rfb.get_viewportDrag()); //Util.Debug("<< settingsApply"); }, @@ -554,6 +630,7 @@ var UI; break; case 'disconnected': $D('noVNC_logo').style.display = "block"; + $D('noVNC_container').style.display = "none"; /* falls through */ case 'loaded': klass = "noVNC_status_normal"; @@ -582,18 +659,20 @@ var UI; // Disable/enable controls depending on connection state updateVisualState: function() { - var connected = UI.rfb_state === 'normal' ? true : false; + var connected = UI.rfb && UI.rfb_state === 'normal'; //Util.Debug(">> updateVisualState"); $D('noVNC_encrypt').disabled = connected; $D('noVNC_true_color').disabled = connected; - if (UI.rfb && UI.rfb.get_display() && - UI.rfb.get_display().get_cursor_uri()) { + if (Util.browserSupportsCursorURIs()) { $D('noVNC_cursor').disabled = connected; } else { UI.updateSetting('cursor', !UI.isTouchDevice); $D('noVNC_cursor').disabled = true; } + + UI.enableDisableClip(connected); + $D('noVNC_resize').disabled = connected; $D('noVNC_shared').disabled = connected; $D('noVNC_view_only').disabled = connected; $D('noVNC_path').disabled = connected; @@ -622,8 +701,13 @@ var UI; switch (UI.rfb_state) { case 'fatal': case 'failed': - case 'loaded': case 'disconnected': + $D('connectButton').style.display = ""; + $D('disconnectButton').style.display = "none"; + UI.connSettingsOpen = false; + UI.toggleConnectPanel(); + break; + case 'loaded': $D('connectButton').style.display = ""; $D('disconnectButton').style.display = "none"; break; @@ -649,6 +733,29 @@ var UI; } }, + enableDisableClip: function (connected) { + var resizeElem = $D('noVNC_resize'); + if (resizeElem.value === 'downscale' || resizeElem.value === 'scale') { + UI.forceSetting('clip', false); + $D('noVNC_clip').disabled = true; + } else { + $D('noVNC_clip').disabled = connected || UI.isTouchDevice; + if (UI.isTouchDevice) { + UI.forceSetting('clip', true); + } + } + }, + + // This resize can not be done until we know from the first Frame Buffer Update + // if it is supported or not. + // The resize is needed to make sure the server desktop size is updated to the + // corresponding size of the current local window when reconnecting to an + // existing session. + FBUComplete: function(rfb, fbu) { + UI.onresize(); + UI.rfb.set_onFBUComplete(function() { }); + }, + // Display the desktop name in the document title updateDocumentTitle: function(rfb, name) { document.title = name + " - noVNC"; @@ -672,6 +779,8 @@ var UI; throw new Error("Must set host and port"); } + if (!UI.initRFB()) return; + UI.rfb.set_encrypt(UI.getSetting('encrypt')); UI.rfb.set_true_color(UI.getSetting('true_color')); UI.rfb.set_local_cursor(UI.getSetting('cursor')); @@ -684,23 +793,32 @@ var UI; //Close dialog. setTimeout(UI.setBarPosition, 100); $D('noVNC_logo').style.display = "none"; + $D('noVNC_container').style.display = "inline"; }, disconnect: function() { UI.closeSettingsMenu(); UI.rfb.disconnect(); + // Restore the callback used for initial resize + UI.rfb.set_onFBUComplete(UI.FBUComplete); + $D('noVNC_logo').style.display = "block"; - UI.connSettingsOpen = false; - UI.toggleConnectPanel(); + $D('noVNC_container').style.display = "none"; + + // Don't display the connection settings until we're actually disconnected }, displayBlur: function() { + if (!UI.rfb) return; + UI.rfb.get_keyboard().set_focused(false); UI.rfb.get_mouse().set_focused(false); }, displayFocus: function() { + if (!UI.rfb) return; + UI.rfb.get_keyboard().set_focused(true); UI.rfb.get_mouse().set_focused(true); }, @@ -740,37 +858,45 @@ var UI; // Turn clipping off UI.updateSetting('clip', false); display.set_viewport(false); - $D('noVNC_canvas').style.position = 'static'; - display.viewportChange(); + display.set_maxWidth(0); + display.set_maxHeight(0); + display.viewportChangeSize(); } if (UI.getSetting('clip')) { // If clipping, update clipping settings - $D('noVNC_canvas').style.position = 'absolute'; - var pos = Util.getPosition($D('noVNC_canvas')); - var new_w = window.innerWidth - pos.x; - var new_h = window.innerHeight - pos.y; display.set_viewport(true); - display.viewportChange(0, 0, new_w, new_h); + + var size = UI.getCanvasLimit(); + if (size) { + display.set_maxWidth(size.w); + display.set_maxHeight(size.h); + + // Hide potential scrollbars that can skew the position + $D('noVNC_container').style.overflow = "hidden"; + + // The x position marks the left margin of the canvas, + // remove the margin from both sides to keep it centered + var new_w = size.w - (2 * Util.getPosition($D('noVNC_canvas')).x); + + $D('noVNC_container').style.overflow = "visible"; + + display.viewportChangeSize(new_w, size.h); + } } }, // Toggle/set/unset the viewport drag/move button setViewDrag: function(drag) { - var vmb = $D('noVNC_view_drag_button'); - if (!UI.rfb) { return; } + if (!UI.rfb) return; - if (UI.rfb_state === 'normal' && - UI.rfb.get_display().get_viewport()) { - vmb.style.display = "inline"; - } else { - vmb.style.display = "none"; - } + UI.updateViewDragButton(); if (typeof(drag) === "undefined" || typeof(drag) === "object") { // If not specified, then toggle drag = !UI.rfb.get_viewportDrag(); } + var vmb = $D('noVNC_view_drag_button'); if (drag) { vmb.className = "noVNC_status_button_selected"; UI.rfb.set_viewportDrag(true); @@ -780,6 +906,17 @@ var UI; } }, + updateViewDragButton: function() { + var vmb = $D('noVNC_view_drag_button'); + if (UI.rfb_state === 'normal' && + UI.rfb.get_display().get_viewport() && + UI.rfb.get_display().clippingDisplay()) { + vmb.style.display = "inline"; + } else { + vmb.style.display = "none"; + } + }, + // On touch devices, show the OS keyboard showKeyboard: function() { var kbi = $D('keyboardinput'); @@ -820,8 +957,15 @@ var UI; // This code is required since some browsers on Android are inconsistent in // sending keyCodes in the normal keyboard events when using on screen keyboards. keyInput: function(event) { + + if (!UI.rfb) return; + var newValue = event.target.value; - var oldValue = UI.lastKeyboardinput; + + if (!UI.lastKeyboardinput) { + UI.keyboardinputReset(); + } + var oldvalue = UI.lastKeyboardinput; var newLen; try { @@ -946,19 +1090,6 @@ var UI; UI.keyboardVisible = false; }, - // iOS < Version 5 does not support position fixed. Javascript workaround: - setOnscroll: function() { - window.onscroll = function() { - UI.setBarPosition(); - }; - }, - - setResize: function () { - window.onResize = function() { - UI.setBarPosition(); - }; - }, - //Helper to add options to dropdown. addOption: function(selectbox, text, value) { var optn = document.createElement("OPTION"); diff --git a/noVNC/include/util.js b/noVNC/include/util.js index 909d04b..ed0e3cd 100644 --- a/noVNC/include/util.js +++ b/noVNC/include/util.js @@ -433,72 +433,15 @@ Util.load_scripts = function (files) { }; -// Get DOM element position on page -// This solution is based based on http://www.greywyvern.com/?post=331 -// Thanks to Brian Huisman AKA GreyWyvern! -Util.getPosition = (function () { +Util.getPosition = function(obj) { "use strict"; - function getStyle(obj, styleProp) { - var y; - if (obj.currentStyle) { - y = obj.currentStyle[styleProp]; - } else if (window.getComputedStyle) - y = window.getComputedStyle(obj, null)[styleProp]; - return y; - } - - function scrollDist() { - var myScrollTop = 0, myScrollLeft = 0; - var html = document.getElementsByTagName('html')[0]; - - // get the scrollTop part - if (html.scrollTop && document.documentElement.scrollTop) { - myScrollTop = html.scrollTop; - } else if (html.scrollTop || document.documentElement.scrollTop) { - myScrollTop = html.scrollTop + document.documentElement.scrollTop; - } else if (document.body.scrollTop) { - myScrollTop = document.body.scrollTop; - } else { - myScrollTop = 0; - } - - // get the scrollLeft part - if (html.scrollLeft && document.documentElement.scrollLeft) { - myScrollLeft = html.scrollLeft; - } else if (html.scrollLeft || document.documentElement.scrollLeft) { - myScrollLeft = html.scrollLeft + document.documentElement.scrollLeft; - } else if (document.body.scrollLeft) { - myScrollLeft = document.body.scrollLeft; - } else { - myScrollLeft = 0; - } - - return [myScrollLeft, myScrollTop]; - } - - return function (obj) { - var curleft = 0, curtop = 0, scr = obj, fixed = false; - while ((scr = scr.parentNode) && scr != document.body) { - curleft -= scr.scrollLeft || 0; - curtop -= scr.scrollTop || 0; - if (getStyle(scr, "position") == "fixed") { - fixed = true; - } - } - if (fixed && !window.opera) { - var scrDist = scrollDist(); - curleft += scrDist[0]; - curtop += scrDist[1]; - } - - do { - curleft += obj.offsetLeft; - curtop += obj.offsetTop; - } while ((obj = obj.offsetParent)); - - return {'x': curleft, 'y': curtop}; - }; -})(); + // NB(sross): the Mozilla developer reference seems to indicate that + // getBoundingClientRect includes border and padding, so the canvas + // style should NOT include either. + var objPosition = obj.getBoundingClientRect(); + return {'x': objPosition.left + window.pageXOffset, 'y': objPosition.top + window.pageYOffset, + 'width': objPosition.width, 'height': objPosition.height}; +}; // Get mouse event position in DOM element @@ -523,8 +466,8 @@ Util.getEventPosition = function (e, obj, scale) { } var realx = docX - pos.x; var realy = docY - pos.y; - var x = Math.max(Math.min(realx, obj.width - 1), 0); - var y = Math.max(Math.min(realy, obj.height - 1), 0); + var x = Math.max(Math.min(realx, pos.width - 1), 0); + var y = Math.max(Math.min(realy, pos.height - 1), 0); return {'x': x / scale, 'y': y / scale, 'realx': realx / scale, 'realy': realy / scale}; }; @@ -565,6 +508,29 @@ Util.stopEvent = function (e) { else { e.returnValue = false; } }; +Util._cursor_uris_supported = null; + +Util.browserSupportsCursorURIs = function () { + if (Util._cursor_uris_supported === null) { + try { + var target = document.createElement('canvas'); + target.style.cursor = 'url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default'; + + if (target.style.cursor) { + Util.Info("Data URI scheme cursor supported"); + Util._cursor_uris_supported = true; + } else { + Util.Warn("Data URI scheme cursor not supported"); + Util._cursor_uris_supported = false; + } + } catch (exc) { + Util.Error("Data URI scheme cursor test exception: " + exc); + Util._cursor_uris_supported = false; + } + } + + return Util._cursor_uris_supported; +}; // Set browser engine versions. Based on mootools. Util.Features = {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)}; diff --git a/noVNC/include/websock.js b/noVNC/include/websock.js index 1b89a91..cc82e5a 100644 --- a/noVNC/include/websock.js +++ b/noVNC/include/websock.js @@ -200,6 +200,10 @@ function Websock() { }, // Event Handlers + off: function (evt) { + this._eventHandlers[evt] = function () {}; + }, + on: function (evt, handler) { this._eventHandlers[evt] = handler; }, diff --git a/noVNC/index.html b/noVNC/index.html index f3a655d..2c2440d 100644 --- a/noVNC/index.html +++ b/noVNC/index.html @@ -2,9 +2,9 @@ - + Page Redirection diff --git a/noVNC/karma.conf.js b/noVNC/karma.conf.js index 94b6986..d8b8e90 100644 --- a/noVNC/karma.conf.js +++ b/noVNC/karma.conf.js @@ -178,14 +178,17 @@ module.exports = function(config) { // Increase timeout in case connection is slow/we run more browsers than possible // (we currently get 3 for free, and we try to run 7, so it can take a while) - captureTimeout: 240000 + captureTimeout: 240000, + + // similarly to above + browserNoActivityTimeout: 100000, }; if (useSauce) { my_conf.captureTimeout = 0; // use SL timeout my_conf.sauceLabs = { testName: 'noVNC Tests (all)', - startConnect: true, + startConnect: false, tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER }; } diff --git a/noVNC/media/css/bootstrap-responsive.css b/noVNC/media/css/bootstrap-responsive.css new file mode 100755 index 0000000..9053414 --- /dev/null +++ b/noVNC/media/css/bootstrap-responsive.css @@ -0,0 +1,1090 @@ +/*! + * Bootstrap Responsive v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +@-ms-viewport { + width: device-width; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +@media (min-width: 980px) { + .row { + margin-left: 0px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1020px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (min-width: 900px) { + body { + padding-right: 0px; + padding-left: 0px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 1px; + } + .modal { + position: fixed; + top: 20px; + right: 0; + left: 0; + margin: 0 auto; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .dropdown-menu a:hover { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 1200px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/noVNC/media/css/bootstrap.css b/noVNC/media/css/bootstrap.css new file mode 100755 index 0000000..a871838 --- /dev/null +++ b/noVNC/media/css/bootstrap.css @@ -0,0 +1,7241 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +::-webkit-scrollbar { + -webkit-appearance: none; + width: 4px; + height: 4px; +} +::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: rgba(0,0,0,.5); + -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +#rightDiv{ + -webkit-overflow-scrolling: touch; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: QNAPCustomFont,'Lucida Grande','Verdana','Tahoma','Arial','Helvetica','sans-serif','Microsoft JhengHei'; + font-size: 12px; + line-height: 20px; + color: #333333; + background-color: #ffffff; + overflow:hidden; +} + +a { + color: #000000; + text-decoration: none; +} + +a:hover { + color: #000000; + text-decoration: underline; +} + +.left_menu li > a { + color: #ffffff; + text-decoration: none; +} + +.left_menu li > a:hover { + color: #ffffff; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid-header { + padding-bottom: 4px; +} + +.row-fluid-middle { + padding-top: 4px; + padding-bottom: 4px; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + /*min-height: 30px;*/ + margin-left: 1%; + *margin-left: 1%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + min-width: 700px; + width: 100%; + padding-right: 0px; + padding-left: 0px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover { + color: #356635; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 14px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 16px; +} + +h4 { + font-size: 12px; + color: rgb(2, 37, 79); +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + line-height: 27px; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 25px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #CDCDCD; + position: 0 0; + margin: 0 -18px; +} + +.subhr{ + border-top: 1.5px dashed #CDCDCD; + margin: 0 0px; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: QNAPCustomFont,'Lucida Grande','Verdana','Tahoma','Arial','Helvetica','sans-serif','Microsoft JhengHei'; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 12px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: QNAPCustomFont,'Lucida Grande','Verdana','Tahoma','Arial','Helvetica','sans-serif','Microsoft JhengHei'; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 0px; + margin-bottom: 10px; + font-size: 12px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} + +textarea, +input[type="text"] { + padding: 0 5px; +} + +input, +textarea, +.uneditable-input { + width: 208px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 20px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 20px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} +/*********** Use image start **************/ +.radio_img input[type="radio"] { + position:absolute; + opacity:0; +} + +.radio_img input[type="radio"] + span { + display: inline-block; + width: 16px; + height: 16px; + margin-top: 1px; + *margin-right: .3em; + padding-right: 6px; + line-height: 16px; + vertical-align: text-top; + background-image: url("../img/radiobutton_no.png"); + background-position: left top; + background-repeat: no-repeat; +} + +.radio_img input[type=radio]:checked + span { + background-image: url("../img/radiobutton_yes.png"); +} + +.radio_img input[type=radio]:disabled + span { + cursor: not-allowed; +} +/*********** Use image end **************/ + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 208px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #fffff; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 0px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.control-label_newvm { + float: left; + width: 149px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + padding-top: 5px; + margin-left: 180px; + *margin-left: 0; +} + +.control-label_newvm { + float: left; + width: 139px; + padding-top: 5px; + text-align: right; +} + +.control-label_newvm_grayBox { + width: auto; + float: left; + padding-top: 5px; + text-align: right; +} + +.controls_newvm { + *display: inline-block; + *padding-left: 20px; + padding-top: 5px; + margin-left: 159px; + *margin-left: 0; +} + +.newvm-group { + background:transparent; + border:1px solid #B2B2B2; + margin-top:-110px; + margin-left:67px; + min-width:412px; + width:412px; + height:115px; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 2px; + line-height: 20px; + text-align: left; + vertical-align: middle; + border-top: 1px solid #dddddd; + white-space: nowrap +} + +.table-blank td{ + border-top: 0px; +} + +.table-blank-info td{ + border-top: 0px; + padding: 2px; +} + +.table-blank-mini td{ + border-top: 0px; + padding: 0 10px 0 0; + line-height: 32px; +} + +.table-blank-mini td input[type="text"], +.table-blank-mini td input[type="password"]{ + width: 300px; +} + +.table-blank-mini td select{ + width: 309px; + line-height: 20px; +} + +.table th { + font-weight: bold; + color: #ffffff; +} + +.table thead th { + vertical-align: bottom; + background-color: #666666; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped { + min-width:510px; +} + +.table-striped thead > tr > th:first-child, +.table-striped tbody > tr > td:first-child { + padding-left: 20px; + padding-right: 5; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #EFEFEF; +} + +.table-striped tbody > tr:nth-child(even) > td, +.table-striped tbody > tr:nth-child(even) > th { + background-color: #DBDBDB; +} + +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +.help-link { + display: inline-block; + border-left: 1px solid #b2b2b2; + vertical-align: middle; + height: 29px; +} + +.help-icon { + display: inline-block; + background-image: url("../img/question.png"); + width: 20px; + height: 20px; + margin-left: -9px; + -moz-margin-start:0; + margin-top: -3px; + background-repeat:no-repeat; + background-position: 0px 0px; +} +/* +.help-icon:hover { + background-position: -20px 0px; +} +*/ +.refresh2-icon { + background-image: url("../img/refresh.png"); + background-position: 0px 0px; + width: 20px; + height: 20px; + position:relative; + left:100%; + margin-left:-20px; + cursor: pointer; +} + +.refresh2-icon:hover { + background-image: url("../img/refresh.png"); + background-position: -20px 0px; +} + +.task-logs { + display: inline-block; + background-image: url("../img/list_.png"); + width: 28px; + height: 26px; + margin-right: 2px; + vertical-align: middle; +} + +.task-logs:hover { + background-image: url("../img/list_hover.png"); +} + +.running-icon { + display: inline-block; + background-image: url("../img/wait.gif"); + width: 18px; + height: 18px; + float: right; + margin-top: 8px; + margin-right: -20px; +} + +.running-icon3 { + display: inline-block; + background-image: url("../img/wait.gif"); + width: 18px; + height: 18px; + float: left; + margin-top: -27px; + margin-left: 180px; +} + +.bkg-action-running-icon { + display: inline-block; + background-image: url("../img/wait.gif"); + width: 18px; + height: 18px; + vertical-align: top; + margin-top: 5px; +} + +.running-icon2 { + display: inline-block; + background-image: url("../img/wait.gif"); + width: 18px; + height: 18px; + background-repeat: no-repeat; +} + +.ok-icon { + display: block; + background-image: url("../img/ok.png"); + width: 20px; + height: 20px; + background-repeat: no-repeat; +} + +.error-icon { + display: block; + background-image: url("../img/error.png"); + width: 20px; + height: 20px; + background-repeat: no-repeat; +} + +/* KVM - start */ +[class^="icons-"], +[class*=" icons-"] { + display: inline-block; + width: 16px; + height: 16px; + margin-top: 1px; + *margin-right: .3em; + padding-right: 6px; + line-height: 16px; + vertical-align: text-top; + background-image: url("../img/icons.png?cnt=20140424"); /* just random number */ + background-position: 16px 16px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icons-over, +.nav-pills > .active > a > [class^="icons-"], +.nav-pills > .active > a > [class*=" icons-"], +.nav-list > .active > a > [class^="icons-"], +.nav-list > .active > a > [class*=" icons-"], +.navbar-inverse .nav > .active > a > [class^="icons-"], +.navbar-inverse .nav > .active > a > [class*=" icons-"], +.dropdown-menu > li > a:hover > [class^="icons-"], +.dropdown-menu > li > a:hover > [class*=" icons-"], +.dropdown-menu > .active > a > [class^="icons-"], +.dropdown-menu > .active > a > [class*=" icons-"], +.dropdown-submenu:hover > a > [class^="icons-"], +.dropdown-submenu:hover > a > [class*=" icons-"] { + background-image: url("../img/icons_over.png"); +} + +.icons-green, +.nav-pills > .active > a > [class^="icons-green"], +.nav-pills > .active > a > [class*=" icons-green"], +.nav-list > .active > a > [class^="icons-green"], +.nav-list > .active > a > [class*=" icons-green"], +.navbar-inverse .nav > .active > a > [class^="icons-green"], +.navbar-inverse .nav > .active > a > [class*=" icons-green"], +.dropdown-menu > li > a:hover > [class^="icons-green"], +.dropdown-menu > li > a:hover > [class*=" icons-green"], +.dropdown-menu > .active > a > [class^="icons-green"], +.dropdown-menu > .active > a > [class*=" icons-green"], +.dropdown-submenu:hover > a > [class^="icons-green"], +.dropdown-submenu:hover > a > [class*=" icons-green"] { + background-image: url("../img/icons_green.png"); +} + +.icons-yellow, +.nav-pills > .active > a > [class^="icons-yellow"], +.nav-pills > .active > a > [class*=" icons-yellow"], +.nav-list > .active > a > [class^="icons-yellow"], +.nav-list > .active > a > [class*=" icons-yellow"], +.navbar-inverse .nav > .active > a > [class^="icons-yellow"], +.navbar-inverse .nav > .active > a > [class*=" icons-yellow"], +.dropdown-menu > li > a:hover > [class^="icons-yellow"], +.dropdown-menu > li > a:hover > [class*=" icons-yellow"], +.dropdown-menu > .active > a > [class^="icons-yellow"], +.dropdown-menu > .active > a > [class*=" icons-yellow"], +.dropdown-submenu:hover > a > [class^="icons-yellow"], +.dropdown-submenu:hover > a > [class*=" icons-yellow"] { + background-image: url("../img/icons_yellow.png"); +} + +.icons-overview { + background-position: 0 0; +} + +.icons-create { + background-position: 0 -17px; +} + +.icons-import { + background-position: 0 -33px; +} + +.icons-export { + background-position: 0 -49px; +} + +.icons-lists { + background-position: 0 -65px; +} + +.icons-network { + background-position: 0 -81px; +} + +.icons-snapshots { + background-position: 0 -97px; +} + +.icons-logs { + background-position: 0 -113px; +} + +.icons-option { + background-position: 0 -129px; +} + +.icons-market { + margin-top: -2px; + background-position: 0 -145px; +} + +.icons-account { + margin-top: -2px; + background-position: 0 -161px; +} + +/* KVM - end */ + + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-green, +.nav-pills > .active > a > [class^="icon-green"], +.nav-pills > .active > a > [class*=" icon-green"], +.nav-list > .active > a > [class^="icon-green"], +.nav-list > .active > a > [class*=" icon-green"], +.navbar-inverse .nav > .active > a > [class^="icon-green"], +.navbar-inverse .nav > .active > a > [class*=" icon-green"], +.dropdown-menu > li > a:hover > [class^="icon-green"], +.dropdown-menu > li > a:hover > [class*=" icon-green"], +.dropdown-menu > .active > a > [class^="icon-green"], +.dropdown-menu > .active > a > [class*=" icon-green"], +.dropdown-submenu:hover > a > [class^="icon-green"], +.dropdown-submenu:hover > a > [class*=" icon-green"] { + background-image: url("../img/glyphicons-halflings-green.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + /*background-position: -312px 0;*/ + background-image: url("../img/remove2.png"); + background-position: 0 center; + display: inline-block; + height: 19px; + width: 19px; + margin-top: -2px; + margin-left: -1px; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + /*width: 16px; + background-position: -408px -120px;*/ + background-image: url("../img/open2.png"); + background-position: 0 center; + display: inline-block; + height: 19px; + width: 19px; + margin-top: -2px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.left_menu { + height: 100%; +} + +.well { + min-height: 200px; + height: auto; + padding: 4px 19px; + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid #CCCCCC; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 2px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 11px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-image: url("../img/btn.gif"); + background-position: 0 -2168px; + border: 1px solid #bbbbbb; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-header { + padding: 0px 0px; + font-size: 11px; + line-height: 25px; + width: 140px; + font-style: normal; + font-weight: normal; + margin-left:8px; +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #808080; +} + +.btn:active, +.btn.active { + background-position: 0 -2195px; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-position: 0 -2195px; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: url("../img/btn.gif"); + background-position: 0 -2168px; + opacity: 0.4; + filter: alpha(opacity=40); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #7b7d7f; +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-top: 10px; + margin-bottom: 10px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #74aae5; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 0px 13px; + margin-left: 4px; + margin-right: 15px; + font-size: 12px; + font-weight: bold; + line-height: 35px; + color: #ffffff; + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 0px; +} + +.nav-list { + padding-top: 10px; + padding-right: 0px; + padding-left: 25px; + margin-bottom: 20px; +} + +.nav-list .firstli { + background-image: url("../img/line.png"); + background-position: 15px 0; + background-repeat: no-repeat; +} + +.nav-list > li > a, +.nav-list { + margin-right: 0px; + margin-left: -15px; +} + +.nav-list > li > a { + /*padding: 3px 20px;*/ + line-height: 35px; + padding-right: 40px; + padding-left: 38px; + overflow : hidden; + text-overflow : ellipsis; + white-space : nowrap; +} + +.import_link a:hover, +.link_focus, +.nav-list > .active > a { + color: #000000; + background-color: #e0efff; +} + +.nav-list > .active > a:hover { + background-color: #74aae5; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #000000; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; + padding-top: 20px; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + min-width: 135px; + float: left; + text-align: center; +} + +.snapPage{ + width: 135px; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #CCCCCC; + font-weight: bold; +} + +.nav-tabs > li { + margin-bottom: -1px; + color: #000000; +} + +.nav-tabs > li > a { + padding-top: 0px; + padding-bottom: 0px; + line-height: 29px; + border: 1px solid #CCCCCC; +} + +.nav-tabs > li > input { + padding: 0 12px; + width: 110px; + height: 29px; + margin-bottom: 0px; + text-align: center; + overflow : hidden; + text-overflow : ellipsis; + white-space : nowrap; +} + +.nav-tabs > li > input:focus { + border-color: #C1C1C1; + background-image: url("../img/text-bg.png"); +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; + background-color: #EDEDED; +} + +.nav-tabs > .active > input, +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #ffffff; + cursor: default; + background-color: #3581C7; + border: 1px solid #3581C7; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 12px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: QNAPCustomFont,'Lucida Grande','Verdana','Tahoma','Arial','Helvetica','sans-serif','Microsoft JhengHei'; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 1180px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.5; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 0px 15px; + border-bottom: 1px solid #eee; + background-color: #DDDDDD; + background-image: url("/media/img/title_bg.png"); + background-repeat: repeat; + text-align: center; + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + font-size: 12px; + line-height: 37px; +} + +.modal-body { + position: relative; + max-height: 360px; + padding: 10px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 9px 15px 10px; + margin-bottom: 0; + text-align: right; + background-color: #E7E7E7; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media .pull-left { + margin-right: 10px; +} + +.media .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 16px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit-wizard { + padding: 0px 96px; + font-size: 12px; + height:100%; + /*line-height: 30px;*/ + color: #000000; + /*background-color: #ffffff;*/ + background-color: transparent; + float:left; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit-wizard-left { + width: 96px; + height: auto; + float:left; + position: relative; + left: 0; + top: 0; +} + +.hero-unit-wizard-right { + position: relative; + display: inline-block; + width: 96px; + height: auto; + float:right; + /*position: absolute; + float:right; + left: 686px;*/ + right: 0; + top: 0; +} + +.hero-unit-wizard h2 { + font-size: 20px; + font-weight: bold; + color: #0A5FC8; + text-align: center; + margin-top: 0; + margin-bottom: 10px; +} + +.hero-unit-wizard .content_block { + background-color: #F2F2F2; + width: 560px; + height: auto; + padding: 16px 15px; +} + +.blank_block_step { + font-size: 14px; + width: 250px; + height: 60px; + background-color: #ffffff; +} + +.blank_block_step img { + margin-top: 12px; + margin-left: 17px; +} + +.step_left { + float:left; +} +.step_right { + float:right; +} + +.step_left p { + display: inline-block; + padding-top: 12px; + padding-left: 18px; + width: 164px; + word-break: break-all; +} + +.step_right p { + display: inline-block; + word-break: break-all; + width: 164px; + padding-top: 12px; + padding-left: 18px; + line-height: 16px; +} + +.content-block-bottom { + text-align:center; + margin-top:12px; +} + +.content-block-bottom .dot-enable { + display: inline-block; + vertical-align: text-top; + background-image: url("/media/img/wizard/icon.png"); + background-repeat: no-repeat; + background-color: transparent; + height: 8px; + width: 8px; + background-position: 0 -100px; +} + +.content-block-bottom .dot-disable { + display: inline-block; + vertical-align: text-top; + background-image: url("/media/img/wizard/icon.png"); + background-repeat: no-repeat; + background-color: transparent; + height: 8px; + width: 8px; + background-position: 0 -150px; +} + +.wiz-btn-finish { + display: inline-block; + vertical-align: text-top; + background-image: url("/media/img/wizard/icon.png"); + background-repeat: no-repeat; + background-color: transparent; + height: 36px; + width: 123px; + background-position: 0 -52px; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit h3 { + margin-bottom: 0; + font-size: 40px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} + +.icon-loading { + display: inline-block; + width: 64px; + height: 64px; + background-image: url("../img/loading.gif"); + background-position: 0 +} + +.icons-task-log { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/icons.png?cnt=20140424"); /* just random number */ + background-position: 0 -113px; + margin-top: 9px; + float: right; +} + +.icon-connect { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/icon_connect.png"); + background-position: 0 +} + +.icon-disconnect { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/icon_disconnect.png"); + background-position: 0 +} + +.icon-clone { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/clone.png"); + background-position: 0 +} + +/* used for log page */ +.xtb-sep{ + background-position:center; + background-repeat:no-repeat; + display:inline-block; + font-size:1px; + height:16px; + width:4px; + overflow:hidden; + cursor:default; + margin:0 2px 0; + border:0; + vertical-align:middle; + background:url("../img/grid-split.gif") repeat scroll 0 0 #222222; +} + +.icon-page-first { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/page-first.gif"); + background-position: 0; +} + +.icon-page-first[disabled] { + cursor: default; + background-image: url("../img/page-first-disabled.gif"); +} + +.icon-page-last { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/page-last.gif"); + background-position: 0; +} + +.icon-page-last[disabled] { + cursor: default; + background-image: url("../img/page-last-disabled.gif"); +} + +.icon-page-next { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/page-next.gif"); + background-position: 0; +} + +.icon-page-next[disabled] { + cursor: default; + background-image: url("../img/page-next-disabled.gif"); +} + +.icon-page-prev { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/page-prev.gif"); + background-position: 0; +} + +.icon-page-prev[disabled] { + cursor: default; + background-image: url("../img/page-prev-disabled.gif"); +} + +.icon-page-refresh { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("../img/page-refresh.gif"); + background-position: 0; +} + +div._bullet_arrow_up input { +background:url("../img/_bullet_arrow_up.png") no-repeat; +cursor:pointer; +border: none; +} + +div._bullet_arrow_down input { +background:url("../img/_bullet_arrow_down.png") no-repeat; +cursor:pointer; +border: none; +} + +/*VNC*/ +.vnc-logout{ + background-image: url("../img/vnc/logout.png"); + background-repeat: no-repeat; + display: inline-block; + height: 14px; + width: 14px; + margin-bottom:-3px\9; +} +.vnc-suspend { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/suspend.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-reset { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/reset.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-shutdown { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/shutdown.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-destroy { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/destroy.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-snapshot { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/snapshot.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-quality { + display: inline-block; + width: 18px; + height: 12px; + margin-top: 1.2px; + *margin-right: .3em; + line-height: 12px; + vertical-align: text-top; + /*background-image: url("../img/glyphicons-halflings.png"); + background-repeat: no-repeat; + background-position: -96px -120px;*/ +} + +.eye_h { + background-image: url("../img/eye_h.png"); + background-repeat: no-repeat; +} + +.eye_m { + background-image: url("../img/eye_m.png"); + background-repeat: no-repeat; +} + +.eye_l { + background-image: url("../img/eye_l.png"); + background-repeat: no-repeat; +} + +.eye_u { + background-image: url("../img/eye_u.png"); + background-repeat: no-repeat; +} + +.vnc-resume { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/resume.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-virtio { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/install.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-clearconfig { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/cancel.png"); + background-position: 0; +} + +.vnc-ctrlaltdel { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/c_a_d.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-autofit { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/autofit.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-restore { + background-image: url("../img/vnc/restore.png"); + margin-bottom:-3px\9; +} + +.vnc-fullscreen { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/full_screen.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-fullscreenExit { + background-image: url("../img/vnc/exit_full.png"); + margin-bottom:-3px\9; +} + +.vnc-multikey { + display: inline-block; + width: 14px; + height: 14px; + background-image: url("../img/vnc/com.png"); + background-position: 0; + margin-bottom:-3px\9; +} + +.vnc-autologout { + width: 16px; + height: 14px; + background-image: url("../img/vnc/auto_logout.png"); + background-repeat: no-repeat; + display: inline-block; + background-position: 0 1px; + margin-bottom:-3px\9; +} + +.vnc-autologin { + width: 16px; + height: 14px; + background-image: url("../img/vnc/auto_login.png"); + background-repeat: no-repeat; + display: inline-block; + background-position: 0; + margin-bottom:-3px\9; +} + +.helpTip{ + display:none; +} + +.helpTipHeadBg{ + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-width: 0 6px 8px; + border-color: transparent transparent #333 transparent; +} + +.helpTipHead{ + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-width: 0 6px 8px; + border-color: transparent transparent #4d4d4d transparent; + z-index:1002; +} + +.helpTipBody{ + z-index:1001; + position: absolute; + background-color:#4D4D4D; + color:#FFF; + border:1px solid #333; + border-radius:5px; + padding:8px 14px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); +} + +.tipTitle{ + border-bottom:1px solid #FFF; + font-size:14px; + font-weight:bold; + color:#0FF; +} + +.tipFootnote{ + color: #FF0000; + display: inline-block; + font-size: 8px; + font-weight: bold; + margin-top: -4px; + vertical-align: top; +} + +.tipSubTitle{ + font-size:14px; + color:yellow; +} + +.triangleDown{ + position:relative; + border-color: #FFF transparent transparent transparent; + border-style: solid; + border-width: 6px 4px 0px; + margin-left: 10px; + top:12px; + cursor: pointer; +} + +.triangleUp{ + position:relative; + border-color: transparent transparent #FFF transparent; + border-style: solid; + border-width: 0px 4px 6px; + margin-left: 10px; + bottom: 10px; + cursor: pointer; +} + +.addPermMenuContent{ + position: absolute; + z-index:10001; + background-color: #F0F0F0; + color:#222; + border:1px solid #7D7D7D; + line-height:25px; + background-image: url("../img/nas_default/menu.gif"); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); +} + +.menuContent{ + position: absolute; + z-index:10001; + background-color: #F0F0F0; + color:#222; + border:1px solid #7D7D7D; + line-height:25px; + background-image: url("../img/nas_default/menu.gif"); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); +} + +.menuContent ul{ + padding:2px; + overflow:hidden; + margin:0px; +} + +.menuContent li{ + padding:2px; + overflow:hidden; + line-height:100%; + display: block; + padding: 1px; + white-space: nowrap; + font-size: 12px; + margin: 0 1px; + border: 1px solid transparent; +} + +.menuContent li:hover{ + background-image: url("../img/nas_default/item-over.gif"); + background-color: #F1F1F1; + background-position: left bottom; + background-repeat: repeat-x; + border: 1px solid #ACACAC; + margin: 0 1px; + padding: 1px; +} + +.menuContent li div{ + color: #222222; + cursor: pointer; + display: block; + line-height: 16px; + padding: 3px 21px 3px 27px; + position: relative; + text-decoration: none; + white-space: nowrap; +} + +#closeMask{ + position: absolute; + width:100%; + height:100%; + left: 0; + top: 0; + z-index:1000; +} + +.account { + background-image: url("../img/account/account.png"); + display: inline-block; + width: 28px; + height: 16px; + position:relative; + margin-left:13px; + top:7px; + cursor:pointer; +} + +.account:hover { + background-image: url("../img/account/account_over.png"); +} + +.cancelBtn { + background-image: url("../img/account/cancel.png"); + background-position: 0px 0px; + display: inline-block; + width: 9px; + height: 8px; + vertical-align: middle; + cursor:pointer; +} + +.cancelBtn:hover { + background-position: -9px 0px; +} + +.plusBtn { + background-image: url("../img/account/plus.png"); + background-position: 0px 0px; + display: inline-block; + width: 17px; + height: 17px; + cursor:pointer; + margin-top: 1px; +} + +.plusBtn:hover { + background-position: -17px 0px; +} + +.permissionBtn { + background-image: url("../img/account/permission.png"); + background-repeat: no-repeat; + display: inline-block; + height: 14px; + line-height: 14px; + margin-top: 1px; + vertical-align: text-top; + width: 14px; +} + +.accountContent{ + background-color: #F2F2F2; + border: 1px solid #4D4D4D; + border-radius: 7px; + color: #222222; + line-height: 20px; + position: absolute; + z-index: 10001; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); +} + +.accountContent ul{ + padding:2px; + overflow:hidden; + margin:0px; +} + +.accountBtn{ + cursor:pointer; + line-height: 27px; + border-radius:0px; + padding: 0 18px; +} + +.accountLastBtn{ + border-radius:0 0 5px 5px; +} + +.accountBtn:hover{ + background-color:#A1C4D6; +} + +.accountHr{ + /*border-bottom:1px solid #B2B2B2;*/ + height:70px; + padding: 0 18px; +} + +.showTime{ + color: #065793; +} + +.accountHeadBg{ + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-width: 0 6px 8px; + border-color: transparent transparent #4D4D4D transparent; + z-index:10002; +} + +.accountHead{ + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-width: 0 6px 8px; + border-color: transparent transparent #F2F2F2 transparent; + z-index:10003; +} + +.checkbox_check { + display: inline-block; + background-image: url("../img/account/checker.png "); + margin-top: 5px; + width: 21px; + height: 21px; + background-position: 0px 0px; + background-repeat: no-repeat; +} +.checkbox_checked { + display: inline-block; + background-image: url("../img/account/checker.png "); + margin-top: 5px; + width: 21px; + height: 21px; + background-position: -41px 0px; + background-repeat: no-repeat; +} + +.vncSnapshotHeadBg{ + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-width: 8px 6px 0; + border-color: #333 transparent transparent transparent; +} + +.vncSnapshotHead{ + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-width: 8px 6px 0; + border-color: #4d4d4d transparent transparent transparent; + z-index:1002; +} \ No newline at end of file diff --git a/noVNC/media/css/jquery-ui.css b/noVNC/media/css/jquery-ui.css new file mode 100755 index 0000000..9a91f46 --- /dev/null +++ b/noVNC/media/css/jquery-ui.css @@ -0,0 +1,1177 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2013 jQuery Foundation and other contributors Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 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:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.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; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.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; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.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; +} + +/* with multiple calendars */ +.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, +.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; +} + +/* RTL support */ +.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, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + 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: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + 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-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; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.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-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.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: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + 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-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.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 #aaaaaa; + background: #ffffff url(../img/slider/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url(../img/slider/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url(../img/slider/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + 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 #999999; + background: #dadada url(../img/slider/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, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url(../img/slider/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; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url(../img/slider/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(../img/slider/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-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.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); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.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-on { background-position: -96px -144px; } +.ui-icon-radio-off { 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 is deprecated, use ui-icon-seek-start instead */ +.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; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url(../img/slider/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(../img/slider/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); + border-radius: 8px; +} diff --git a/noVNC/media/css/jquery.alerts.css b/noVNC/media/css/jquery.alerts.css new file mode 100755 index 0000000..5c6ac89 --- /dev/null +++ b/noVNC/media/css/jquery.alerts.css @@ -0,0 +1,92 @@ +#popup_container { + font-size: 12px; + font-family: QNAPCustomFont,'Lucida Grande','Verdana','Tahoma','Arial','Helvetica','sans-serif','Microsoft JhengHei'; + min-width: 300px; /* Dialog will be no smaller than this */ + max-width: 350px; /* Dialog will wrap after this width */ + background: #FFF; + color: #000; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.7); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.7); +} + +#popup_title { + font-size: 12px; + font-weight: bold; + text-align: center; + height: 40px; + color: #666; + background: #FFF url(/media/img/title_bg.png) top repeat; + cursor: default; + margin: 0px; + -webkit-border-radius: 6px 6px 0px 0px; + -moz-border-radius: 6px 6px 0px 0px; + border-radius: 6px 6px 0px 0px; +} + +#popup_content { + background: 16px 16px no-repeat url(images/info.gif); + padding: 1em 0 1em 1.75em; + margin: 0em; + /*height: 60px;*/ +} + +#popup_content.alert { + background-image: url(/media/img/icon-info.png); +} + +#popup_content.confirm { + background-image: url(/media/img/icon-question-b.png); + height: auto; +} + +#popup_content.confirm3 { + background-image: url(/media/img/icon-question-b.png); + height: auto; +} + +#popup_content.prompt { + background-image: url(images/help.gif); +} + +#popup_message { + display: block; + color: #000; + width: auto; + min-height: 50px; + max-height: 400px; + overflow-y: auto; + text-overflow:ellipsis; + word-break: break-word; + padding-left: 60px; + padding-top: 6px; + padding-right: 6px; +} + +#popup_panel input { + width: 76px; + height: 26px; + padding: 0px; + margin-top: 5px; +} + +#popup_panel { + text-align: center; + padding: 6px 0px; + height: 34px; + background-color: #E7E7E7; + border-top: 1px solid #bbb; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; +} + +#popup_prompt { + margin: .5em 0em; +} diff --git a/noVNC/media/css/jquery.treeview.css b/noVNC/media/css/jquery.treeview.css new file mode 100755 index 0000000..4af392d --- /dev/null +++ b/noVNC/media/css/jquery.treeview.css @@ -0,0 +1,84 @@ +.treeview, .treeview ul { + padding: 0; + margin: 0; + list-style: none; +} + +.treeview ul { + background-color: white; + margin-top: 4px; +} + +.treeview .hitarea { + margin-top: 5px; + background: url(../img/treeview/treeview-default.gif) -64px -25px no-repeat; + height: 16px; + width: 16px; + margin-left: -16px; + float: left; + cursor: pointer; +} +/* fix for IE6 */ +* html .hitarea { + display: inline; + float:none; +} + +.treeview li { + margin: 0; + padding: 3px 0pt 3px 16px; + line-height: 20px; +} + +.treeview a.selected { + background-color: #eee; +} + +#treeviewcontrol { margin: 1em 0; display: none; } + +.treeview .hover { color: red; cursor: pointer; } + +.treeview li { background: url(../img/treeview/treeview-default-line.gif) 0 0 no-repeat; } +.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } + +.treeview .expandable-hitarea { background-position: 0px -3px; } + +.treeview li.last { background-position: 0 -1766px } +.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(../img/treeview/treeview-default.gif); } +.treeview li.lastCollapsable { background-position: 0 -111px } +.treeview li.lastExpandable { background-position: -32px -67px } + +.treeview div.lastCollapsable-hitarea, .treeview .collapsable-hitarea { background-position: -16px -2px; } +.treeview div.lastExpandable-hitarea { background-position: 0px -3px; } + +.treeview-red li { background-image: url(../img/treeview/treeview-red-line.gif); } +.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(../img/treeview/treeview-red.gif); } + +.treeview-black li { background-image: url(../img/treeview/treeview-black-line.gif); } +.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(../img/treeview/treeview-black.gif); } + +.treeview-gray li { background-image: url(../img/treeview/treeview-gray-line.gif); } +.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(../img/treeview/treeview-gray.gif); } + +.treeview-famfamfam li { background-image: url(../img/treeview/treeview-famfamfam-line.gif); } +.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(../img/treeview/tree_arrows.png); } + + +.filetree li { padding: 3px 0 2px 16px; } +.filetree span.folder, .filetree span.file { padding: 1px 0 1px 19px; display: block;} +.filetree span.folder { background: url(../img/treeview/folder.gif) 0 0 no-repeat; background-position: 0 0px;} +.filetree li.expandable span.folder { background: url(../img/treeview/folder-closed.gif) 0 0 no-repeat;background-position: 0 0px; } +.filetree span.file { background: url(../img/treeview/file.gif) 0 0 no-repeat; } + +/* For Qnap style */ +.qtreeview { + padding: 1em; + font-size: 12px; + background: #fff; + color: #333; + min-height:150px; +} +.qtreeview li { + line-height: 20px; + cursor: pointer; +} \ No newline at end of file diff --git a/noVNC/media/css/radio-checkbox-chrome.css b/noVNC/media/css/radio-checkbox-chrome.css new file mode 100755 index 0000000..c622645 --- /dev/null +++ b/noVNC/media/css/radio-checkbox-chrome.css @@ -0,0 +1,72 @@ +input[type=radio] { + border-radius: 20px; + border:1px solid rgb(125,125,125); + background: #CCC; + -webkit-appearance: none; + width: 13px; + height: 13px; +} + +input[type="radio"]:after { + background-color: #FFF; + border-radius: 25px; + box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.4), + 0 1px 1px hsla(0,0%,100%,.8); + content: ''; + display: block; + height: 7px; + left: 2px; + position: relative; + top: 2px; + width: 7px; +} + +input[type=radio]:checked:after { + background: #006494; +} + +input[type=radio]:disabled{ + border-radius: 20px; + border:1px solid rgb(175,175,175); + background: #CCC; + -webkit-appearance: none; +} + +input[type="radio"]:disabled:after { + background-color: #CCC; + border-radius: 25px; + box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.2), + 0 1px 1px hsla(0,0%,100%,.8); + content: ''; + display: block; + height: 7px; + left: 2px; + position: relative; + top: 2px; + width: 7px; +} + +input[type=checkbox] { + background: #CCC; + border:1px solid rgb(125,125,125); + -webkit-appearance: none; + width: 15px; + height: 15px; +} + +input[type="checkbox"]:after { + background-color: #FFF; + box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.4), + 0 1px 1px hsla(0,0%,100%,.8); + content: ''; + display: block; + height: 9px; + left: 2px; + position: relative; + top: 2px; + width: 9px; +} + +input[type=checkbox]:checked:after { + background: #006494; +} \ No newline at end of file diff --git a/noVNC/media/css/radio-checkbox.css b/noVNC/media/css/radio-checkbox.css new file mode 100755 index 0000000..70f3795 --- /dev/null +++ b/noVNC/media/css/radio-checkbox.css @@ -0,0 +1,95 @@ +input[type=radio] { + border-radius: 20px; + border:1px solid rgb(125,125,125); + background: #CCC; + -webkit-appearance: none; + width: 13px; + height: 13px; +} + +input[type="radio"]:after { + background-color: #FFF; + border-radius: 25px; + box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.4), + 0 1px 1px hsla(0,0%,100%,.8); + content: ''; + display: block; + height: 7px; + left: 2px; + position: relative; + top: 2px; + width: 7px; +} + +input[type=radio]:checked:after { + background: #006494; +} + +input[type=radio]:disabled{ + border-radius: 20px; + border:1px solid rgb(175,175,175); + background: #CCC; + -webkit-appearance: none; +} + +input[type="radio"]:disabled:after { + background-color: #CCC; + border-radius: 25px; + box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.2), + 0 1px 1px hsla(0,0%,100%,.8); + content: ''; + display: block; + height: 7px; + left: 2px; + position: relative; + top: 2px; + width: 7px; +} + +input[type="checkbox"] { + display:none; +} + +input[type="checkbox"] + label { + display:inline-block; + width:13px; + height:13px; + background:url(../img/account/checker.png); + background-repeat:no-repeat; + background-position: -3px -3px; + margin:0 5px -2px 0; +} + +input[type="checkbox"]:checked + label { + display:inline-block; + width:13px; + height:13px; + background:url(../img/account/checker.png); + background-repeat:no-repeat; + background-position: -22px -3px; + margin:0 5px -2px 0; +} + +input[type="checkbox"]:disabled + label { + display:inline-block; + width:13px; + height:13px; + background:url(../img/account/checker.png); + background-repeat:no-repeat; + background-position: -41px -3px; + margin:0 5px -2px 0; +} + +input[type="checkbox"]:disabled:checked + label { + display:inline-block; + width:13px; + height:13px; + background:url(../img/account/checker.png); + background-repeat:no-repeat; + background-position: -60px -3px; + margin:0 5px -2px 0; +} + +input[type=checkbox]:checked:after { + background: #006494; +}*/ \ No newline at end of file diff --git a/noVNC/media/docs/QNAP-Enable_VT-x_SOP.pdf b/noVNC/media/docs/QNAP-Enable_VT-x_SOP.pdf new file mode 100755 index 0000000..484dd44 Binary files /dev/null and b/noVNC/media/docs/QNAP-Enable_VT-x_SOP.pdf differ diff --git a/noVNC/media/img/.@__thumb/defaultbtn.gif b/noVNC/media/img/.@__thumb/defaultbtn.gif new file mode 100755 index 0000000..4820f2d Binary files /dev/null and b/noVNC/media/img/.@__thumb/defaultbtn.gif differ diff --git a/noVNC/media/img/.@__thumb/defaultglyphicons-halflings-green.png b/noVNC/media/img/.@__thumb/defaultglyphicons-halflings-green.png new file mode 100755 index 0000000..4b65031 Binary files /dev/null and b/noVNC/media/img/.@__thumb/defaultglyphicons-halflings-green.png differ diff --git a/noVNC/media/img/.@__thumb/defaultglyphicons-halflings-white.png b/noVNC/media/img/.@__thumb/defaultglyphicons-halflings-white.png new file mode 100755 index 0000000..978cf58 Binary files /dev/null and b/noVNC/media/img/.@__thumb/defaultglyphicons-halflings-white.png differ diff --git a/noVNC/media/img/.@__thumb/defaultglyphicons-halflings.png b/noVNC/media/img/.@__thumb/defaultglyphicons-halflings.png new file mode 100755 index 0000000..7d03fea Binary files /dev/null and b/noVNC/media/img/.@__thumb/defaultglyphicons-halflings.png differ diff --git a/noVNC/media/img/.@__thumb/s100btn.gif b/noVNC/media/img/.@__thumb/s100btn.gif new file mode 100755 index 0000000..4820f2d Binary files /dev/null and b/noVNC/media/img/.@__thumb/s100btn.gif differ diff --git a/noVNC/media/img/.@__thumb/s100glyphicons-halflings-green.png b/noVNC/media/img/.@__thumb/s100glyphicons-halflings-green.png new file mode 100755 index 0000000..292955e Binary files /dev/null and b/noVNC/media/img/.@__thumb/s100glyphicons-halflings-green.png differ diff --git a/noVNC/media/img/.@__thumb/s100glyphicons-halflings-white.png b/noVNC/media/img/.@__thumb/s100glyphicons-halflings-white.png new file mode 100755 index 0000000..e43c4cf Binary files /dev/null and b/noVNC/media/img/.@__thumb/s100glyphicons-halflings-white.png differ diff --git a/noVNC/media/img/.@__thumb/s100glyphicons-halflings.png b/noVNC/media/img/.@__thumb/s100glyphicons-halflings.png new file mode 100755 index 0000000..7570f1e Binary files /dev/null and b/noVNC/media/img/.@__thumb/s100glyphicons-halflings.png differ diff --git a/noVNC/media/img/.@__thumb/s800btn.gif b/noVNC/media/img/.@__thumb/s800btn.gif new file mode 100755 index 0000000..4820f2d Binary files /dev/null and b/noVNC/media/img/.@__thumb/s800btn.gif differ diff --git a/noVNC/media/img/.@__thumb/s800glyphicons-halflings-green.png b/noVNC/media/img/.@__thumb/s800glyphicons-halflings-green.png new file mode 100755 index 0000000..4b65031 Binary files /dev/null and b/noVNC/media/img/.@__thumb/s800glyphicons-halflings-green.png differ diff --git a/noVNC/media/img/.@__thumb/s800glyphicons-halflings-white.png b/noVNC/media/img/.@__thumb/s800glyphicons-halflings-white.png new file mode 100755 index 0000000..978cf58 Binary files /dev/null and b/noVNC/media/img/.@__thumb/s800glyphicons-halflings-white.png differ diff --git a/noVNC/media/img/.@__thumb/s800glyphicons-halflings.png b/noVNC/media/img/.@__thumb/s800glyphicons-halflings.png new file mode 100755 index 0000000..7d03fea Binary files /dev/null and b/noVNC/media/img/.@__thumb/s800glyphicons-halflings.png differ diff --git a/noVNC/media/img/_bullet_arrow_down.png b/noVNC/media/img/_bullet_arrow_down.png new file mode 100755 index 0000000..cdbfa91 Binary files /dev/null and b/noVNC/media/img/_bullet_arrow_down.png differ diff --git a/noVNC/media/img/_bullet_arrow_up.png b/noVNC/media/img/_bullet_arrow_up.png new file mode 100755 index 0000000..70a8437 Binary files /dev/null and b/noVNC/media/img/_bullet_arrow_up.png differ diff --git a/noVNC/media/img/account/account.png b/noVNC/media/img/account/account.png new file mode 100755 index 0000000..707f7e3 Binary files /dev/null and b/noVNC/media/img/account/account.png differ diff --git a/noVNC/media/img/account/account_over.png b/noVNC/media/img/account/account_over.png new file mode 100755 index 0000000..b494a6d Binary files /dev/null and b/noVNC/media/img/account/account_over.png differ diff --git a/noVNC/media/img/account/cancel.png b/noVNC/media/img/account/cancel.png new file mode 100755 index 0000000..6a84ab7 Binary files /dev/null and b/noVNC/media/img/account/cancel.png differ diff --git a/noVNC/media/img/account/checker.png b/noVNC/media/img/account/checker.png new file mode 100755 index 0000000..c90a19b Binary files /dev/null and b/noVNC/media/img/account/checker.png differ diff --git a/noVNC/media/img/account/permission.png b/noVNC/media/img/account/permission.png new file mode 100755 index 0000000..f1f9435 Binary files /dev/null and b/noVNC/media/img/account/permission.png differ diff --git a/noVNC/media/img/account/plus.png b/noVNC/media/img/account/plus.png new file mode 100755 index 0000000..0d97970 Binary files /dev/null and b/noVNC/media/img/account/plus.png differ diff --git a/noVNC/media/img/addSSLHint/FF/.@__thumb/defaulten.jpg b/noVNC/media/img/addSSLHint/FF/.@__thumb/defaulten.jpg new file mode 100755 index 0000000..5cf62ee Binary files /dev/null and b/noVNC/media/img/addSSLHint/FF/.@__thumb/defaulten.jpg differ diff --git a/noVNC/media/img/addSSLHint/FF/.@__thumb/s100en.jpg b/noVNC/media/img/addSSLHint/FF/.@__thumb/s100en.jpg new file mode 100755 index 0000000..20a5830 Binary files /dev/null and b/noVNC/media/img/addSSLHint/FF/.@__thumb/s100en.jpg differ diff --git a/noVNC/media/img/addSSLHint/FF/.@__thumb/s800en.jpg b/noVNC/media/img/addSSLHint/FF/.@__thumb/s800en.jpg new file mode 100755 index 0000000..2ad1e66 Binary files /dev/null and b/noVNC/media/img/addSSLHint/FF/.@__thumb/s800en.jpg differ diff --git a/noVNC/media/img/addSSLHint/FF/en.jpg b/noVNC/media/img/addSSLHint/FF/en.jpg new file mode 100755 index 0000000..9a01a55 Binary files /dev/null and b/noVNC/media/img/addSSLHint/FF/en.jpg differ diff --git a/noVNC/media/img/arrowbtns.png b/noVNC/media/img/arrowbtns.png new file mode 100755 index 0000000..6abced1 Binary files /dev/null and b/noVNC/media/img/arrowbtns.png differ diff --git a/noVNC/media/img/bar/Thumbs.db b/noVNC/media/img/bar/Thumbs.db new file mode 100755 index 0000000..fdcf590 Binary files /dev/null and b/noVNC/media/img/bar/Thumbs.db differ diff --git a/noVNC/media/img/bar/bblue.png b/noVNC/media/img/bar/bblue.png new file mode 100755 index 0000000..06a5808 Binary files /dev/null and b/noVNC/media/img/bar/bblue.png differ diff --git a/noVNC/media/img/bar/blue.png b/noVNC/media/img/bar/blue.png new file mode 100755 index 0000000..096c6dc Binary files /dev/null and b/noVNC/media/img/bar/blue.png differ diff --git a/noVNC/media/img/bar/green.png b/noVNC/media/img/bar/green.png new file mode 100755 index 0000000..16aca5f Binary files /dev/null and b/noVNC/media/img/bar/green.png differ diff --git a/noVNC/media/img/bar/orange.png b/noVNC/media/img/bar/orange.png new file mode 100755 index 0000000..5b6bff6 Binary files /dev/null and b/noVNC/media/img/bar/orange.png differ diff --git a/noVNC/media/img/btn.gif b/noVNC/media/img/btn.gif new file mode 100755 index 0000000..96ea61a Binary files /dev/null and b/noVNC/media/img/btn.gif differ diff --git a/noVNC/media/img/cent_snapshot.jpg b/noVNC/media/img/cent_snapshot.jpg new file mode 120000 index 0000000..eb3607e --- /dev/null +++ b/noVNC/media/img/cent_snapshot.jpg @@ -0,0 +1 @@ +/share/CACHEDEV1_DATA/.qpkg/.QKVM/tmp/cent/snapshot.jpg \ No newline at end of file diff --git a/noVNC/media/img/clone.png b/noVNC/media/img/clone.png new file mode 100755 index 0000000..486586a Binary files /dev/null and b/noVNC/media/img/clone.png differ diff --git a/noVNC/media/img/close.png b/noVNC/media/img/close.png new file mode 100755 index 0000000..540b993 Binary files /dev/null and b/noVNC/media/img/close.png differ diff --git a/noVNC/media/img/error.png b/noVNC/media/img/error.png new file mode 100755 index 0000000..042a76c Binary files /dev/null and b/noVNC/media/img/error.png differ diff --git a/noVNC/media/img/error/err_bg.jpg b/noVNC/media/img/error/err_bg.jpg new file mode 100755 index 0000000..a7265da Binary files /dev/null and b/noVNC/media/img/error/err_bg.jpg differ diff --git a/noVNC/media/img/error/forbidden.png b/noVNC/media/img/error/forbidden.png new file mode 100755 index 0000000..7224e80 Binary files /dev/null and b/noVNC/media/img/error/forbidden.png differ diff --git a/noVNC/media/img/eye_h.png b/noVNC/media/img/eye_h.png new file mode 100755 index 0000000..2c2392b Binary files /dev/null and b/noVNC/media/img/eye_h.png differ diff --git a/noVNC/media/img/eye_l.png b/noVNC/media/img/eye_l.png new file mode 100755 index 0000000..f170b0c Binary files /dev/null and b/noVNC/media/img/eye_l.png differ diff --git a/noVNC/media/img/eye_m.png b/noVNC/media/img/eye_m.png new file mode 100755 index 0000000..1ac6fd6 Binary files /dev/null and b/noVNC/media/img/eye_m.png differ diff --git a/noVNC/media/img/eye_u.png b/noVNC/media/img/eye_u.png new file mode 100755 index 0000000..5f689c1 Binary files /dev/null and b/noVNC/media/img/eye_u.png differ diff --git a/noVNC/media/img/favicon.ico b/noVNC/media/img/favicon.ico new file mode 100755 index 0000000..7947aeb Binary files /dev/null and b/noVNC/media/img/favicon.ico differ diff --git a/noVNC/media/img/glyphicons-halflings-green.png b/noVNC/media/img/glyphicons-halflings-green.png new file mode 100755 index 0000000..50dc911 Binary files /dev/null and b/noVNC/media/img/glyphicons-halflings-green.png differ diff --git a/noVNC/media/img/glyphicons-halflings-white.png b/noVNC/media/img/glyphicons-halflings-white.png new file mode 100755 index 0000000..a20760b Binary files /dev/null and b/noVNC/media/img/glyphicons-halflings-white.png differ diff --git a/noVNC/media/img/glyphicons-halflings.png b/noVNC/media/img/glyphicons-halflings.png new file mode 100755 index 0000000..92d4445 Binary files /dev/null and b/noVNC/media/img/glyphicons-halflings.png differ diff --git a/noVNC/media/img/green_light.gif b/noVNC/media/img/green_light.gif new file mode 100755 index 0000000..1baa9dd Binary files /dev/null and b/noVNC/media/img/green_light.gif differ diff --git a/noVNC/media/img/grey_light.gif b/noVNC/media/img/grey_light.gif new file mode 100755 index 0000000..d1169d0 Binary files /dev/null and b/noVNC/media/img/grey_light.gif differ diff --git a/noVNC/media/img/grid-split.gif b/noVNC/media/img/grid-split.gif new file mode 100755 index 0000000..c76a16e Binary files /dev/null and b/noVNC/media/img/grid-split.gif differ diff --git a/noVNC/media/img/icon-info.png b/noVNC/media/img/icon-info.png new file mode 100755 index 0000000..5e56b0a Binary files /dev/null and b/noVNC/media/img/icon-info.png differ diff --git a/noVNC/media/img/icon-question-b.png b/noVNC/media/img/icon-question-b.png new file mode 100755 index 0000000..7838f6b Binary files /dev/null and b/noVNC/media/img/icon-question-b.png differ diff --git a/noVNC/media/img/icon_connect.png b/noVNC/media/img/icon_connect.png new file mode 100755 index 0000000..7cbf0b8 Binary files /dev/null and b/noVNC/media/img/icon_connect.png differ diff --git a/noVNC/media/img/icon_disconnect.png b/noVNC/media/img/icon_disconnect.png new file mode 100755 index 0000000..00deee0 Binary files /dev/null and b/noVNC/media/img/icon_disconnect.png differ diff --git a/noVNC/media/img/icons.png b/noVNC/media/img/icons.png new file mode 100755 index 0000000..879ab24 Binary files /dev/null and b/noVNC/media/img/icons.png differ diff --git a/noVNC/media/img/icons_green.png b/noVNC/media/img/icons_green.png new file mode 100755 index 0000000..2f5e564 Binary files /dev/null and b/noVNC/media/img/icons_green.png differ diff --git a/noVNC/media/img/icons_over.png b/noVNC/media/img/icons_over.png new file mode 100755 index 0000000..7d90ef1 Binary files /dev/null and b/noVNC/media/img/icons_over.png differ diff --git a/noVNC/media/img/icons_yellow.png b/noVNC/media/img/icons_yellow.png new file mode 100755 index 0000000..c2d3f92 Binary files /dev/null and b/noVNC/media/img/icons_yellow.png differ diff --git a/noVNC/media/img/line.png b/noVNC/media/img/line.png new file mode 100755 index 0000000..e8ccdb3 Binary files /dev/null and b/noVNC/media/img/line.png differ diff --git a/noVNC/media/img/list_.png b/noVNC/media/img/list_.png new file mode 100755 index 0000000..e9836a8 Binary files /dev/null and b/noVNC/media/img/list_.png differ diff --git a/noVNC/media/img/list_hover.png b/noVNC/media/img/list_hover.png new file mode 100755 index 0000000..a04e1a9 Binary files /dev/null and b/noVNC/media/img/list_hover.png differ diff --git a/noVNC/media/img/loading.gif b/noVNC/media/img/loading.gif new file mode 100755 index 0000000..b36b555 Binary files /dev/null and b/noVNC/media/img/loading.gif differ diff --git a/noVNC/media/img/login/.@__thumb/defaultmiddleBg.png b/noVNC/media/img/login/.@__thumb/defaultmiddleBg.png new file mode 100755 index 0000000..a3c5aed Binary files /dev/null and b/noVNC/media/img/login/.@__thumb/defaultmiddleBg.png differ diff --git a/noVNC/media/img/login/.@__thumb/s100middleBg.png b/noVNC/media/img/login/.@__thumb/s100middleBg.png new file mode 100755 index 0000000..f6d3e35 Binary files /dev/null and b/noVNC/media/img/login/.@__thumb/s100middleBg.png differ diff --git a/noVNC/media/img/login/.@__thumb/s800middleBg.png b/noVNC/media/img/login/.@__thumb/s800middleBg.png new file mode 100755 index 0000000..1961ca5 Binary files /dev/null and b/noVNC/media/img/login/.@__thumb/s800middleBg.png differ diff --git a/noVNC/media/img/login/BgImg.png b/noVNC/media/img/login/BgImg.png new file mode 100755 index 0000000..f00d8d6 Binary files /dev/null and b/noVNC/media/img/login/BgImg.png differ diff --git a/noVNC/media/img/login/checkBox.png b/noVNC/media/img/login/checkBox.png new file mode 100755 index 0000000..79c36d2 Binary files /dev/null and b/noVNC/media/img/login/checkBox.png differ diff --git a/noVNC/media/img/login/dot.png b/noVNC/media/img/login/dot.png new file mode 100755 index 0000000..c54f32a Binary files /dev/null and b/noVNC/media/img/login/dot.png differ diff --git a/noVNC/media/img/login/goMore.png b/noVNC/media/img/login/goMore.png new file mode 100755 index 0000000..176352c Binary files /dev/null and b/noVNC/media/img/login/goMore.png differ diff --git a/noVNC/media/img/login/loginBtn.png b/noVNC/media/img/login/loginBtn.png new file mode 100755 index 0000000..1d7427e Binary files /dev/null and b/noVNC/media/img/login/loginBtn.png differ diff --git a/noVNC/media/img/login/loginEnter.png b/noVNC/media/img/login/loginEnter.png new file mode 100755 index 0000000..c3f4a6a Binary files /dev/null and b/noVNC/media/img/login/loginEnter.png differ diff --git a/noVNC/media/img/login/loginEnterMobile.png b/noVNC/media/img/login/loginEnterMobile.png new file mode 100755 index 0000000..655a2c9 Binary files /dev/null and b/noVNC/media/img/login/loginEnterMobile.png differ diff --git a/noVNC/media/img/login/logo.png b/noVNC/media/img/login/logo.png new file mode 100755 index 0000000..0ab66bc Binary files /dev/null and b/noVNC/media/img/login/logo.png differ diff --git a/noVNC/media/img/login/middleBg.png b/noVNC/media/img/login/middleBg.png new file mode 100755 index 0000000..d27e091 Binary files /dev/null and b/noVNC/media/img/login/middleBg.png differ diff --git a/noVNC/media/img/login/title.png b/noVNC/media/img/login/title.png new file mode 100755 index 0000000..02d52e9 Binary files /dev/null and b/noVNC/media/img/login/title.png differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_0.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_0.jpg new file mode 100755 index 0000000..32c52c5 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_0.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_1.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_1.jpg new file mode 100755 index 0000000..35e81d2 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_1.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_2.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_2.jpg new file mode 100755 index 0000000..a7ec6a0 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_2.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_3.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_3.jpg new file mode 100755 index 0000000..cf69665 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_3.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_4.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_4.jpg new file mode 100755 index 0000000..3ff5923 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_4.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_5.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_5.jpg new file mode 100755 index 0000000..ed0e12e Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_5.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_6.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_6.jpg new file mode 100755 index 0000000..044d5d5 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_6.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_7.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_7.jpg new file mode 100755 index 0000000..7418c3e Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultbitnami_7.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultvmware_0.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultvmware_0.jpg new file mode 100755 index 0000000..5e7b9e2 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultvmware_0.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultvmware_1.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultvmware_1.jpg new file mode 100755 index 0000000..ab8fb68 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultvmware_1.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/defaultvmware_2.jpg b/noVNC/media/img/marketplace/.@__thumb/defaultvmware_2.jpg new file mode 100755 index 0000000..a508ada Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/defaultvmware_2.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_0.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_0.jpg new file mode 100755 index 0000000..c8b5979 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_0.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_1.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_1.jpg new file mode 100755 index 0000000..477e351 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_1.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_2.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_2.jpg new file mode 100755 index 0000000..d9e05a2 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_2.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_3.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_3.jpg new file mode 100755 index 0000000..08a151a Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_3.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_4.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_4.jpg new file mode 100755 index 0000000..849b05d Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_4.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_5.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_5.jpg new file mode 100755 index 0000000..49e48e6 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_5.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_6.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_6.jpg new file mode 100755 index 0000000..41a03be Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_6.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100bitnami_7.jpg b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_7.jpg new file mode 100755 index 0000000..296bae6 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100bitnami_7.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100vmware_0.jpg b/noVNC/media/img/marketplace/.@__thumb/s100vmware_0.jpg new file mode 100755 index 0000000..68658bc Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100vmware_0.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100vmware_1.jpg b/noVNC/media/img/marketplace/.@__thumb/s100vmware_1.jpg new file mode 100755 index 0000000..b3053a1 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100vmware_1.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s100vmware_2.jpg b/noVNC/media/img/marketplace/.@__thumb/s100vmware_2.jpg new file mode 100755 index 0000000..6b3e380 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s100vmware_2.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_0.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_0.jpg new file mode 100755 index 0000000..4bfb1af Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_0.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_1.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_1.jpg new file mode 100755 index 0000000..6c8ab67 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_1.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_2.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_2.jpg new file mode 100755 index 0000000..0aad7a4 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_2.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_3.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_3.jpg new file mode 100755 index 0000000..dd58c25 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_3.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_4.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_4.jpg new file mode 100755 index 0000000..cc92529 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_4.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_5.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_5.jpg new file mode 100755 index 0000000..caf6d90 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_5.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_6.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_6.jpg new file mode 100755 index 0000000..c209172 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_6.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800bitnami_7.jpg b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_7.jpg new file mode 100755 index 0000000..c70b843 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800bitnami_7.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800vmware_0.jpg b/noVNC/media/img/marketplace/.@__thumb/s800vmware_0.jpg new file mode 100755 index 0000000..7837e7d Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800vmware_0.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800vmware_1.jpg b/noVNC/media/img/marketplace/.@__thumb/s800vmware_1.jpg new file mode 100755 index 0000000..1bca5b0 Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800vmware_1.jpg differ diff --git a/noVNC/media/img/marketplace/.@__thumb/s800vmware_2.jpg b/noVNC/media/img/marketplace/.@__thumb/s800vmware_2.jpg new file mode 100755 index 0000000..234532b Binary files /dev/null and b/noVNC/media/img/marketplace/.@__thumb/s800vmware_2.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_0.jpg b/noVNC/media/img/marketplace/bitnami_0.jpg new file mode 100755 index 0000000..fca3ef9 Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_0.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_1.jpg b/noVNC/media/img/marketplace/bitnami_1.jpg new file mode 100755 index 0000000..21be49d Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_1.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_2.jpg b/noVNC/media/img/marketplace/bitnami_2.jpg new file mode 100755 index 0000000..2c907e3 Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_2.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_3.jpg b/noVNC/media/img/marketplace/bitnami_3.jpg new file mode 100755 index 0000000..3f2ca08 Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_3.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_4.jpg b/noVNC/media/img/marketplace/bitnami_4.jpg new file mode 100755 index 0000000..69eb5a9 Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_4.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_5.jpg b/noVNC/media/img/marketplace/bitnami_5.jpg new file mode 100755 index 0000000..a9cbbdc Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_5.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_6.jpg b/noVNC/media/img/marketplace/bitnami_6.jpg new file mode 100755 index 0000000..d92b45a Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_6.jpg differ diff --git a/noVNC/media/img/marketplace/bitnami_7.jpg b/noVNC/media/img/marketplace/bitnami_7.jpg new file mode 100755 index 0000000..8fcd460 Binary files /dev/null and b/noVNC/media/img/marketplace/bitnami_7.jpg differ diff --git a/noVNC/media/img/marketplace/close.png b/noVNC/media/img/marketplace/close.png new file mode 100755 index 0000000..23094f2 Binary files /dev/null and b/noVNC/media/img/marketplace/close.png differ diff --git a/noVNC/media/img/marketplace/goto.png b/noVNC/media/img/marketplace/goto.png new file mode 100755 index 0000000..d4ae51d Binary files /dev/null and b/noVNC/media/img/marketplace/goto.png differ diff --git a/noVNC/media/img/marketplace/page_circle.png b/noVNC/media/img/marketplace/page_circle.png new file mode 100755 index 0000000..636ed1a Binary files /dev/null and b/noVNC/media/img/marketplace/page_circle.png differ diff --git a/noVNC/media/img/marketplace/vmware_0.jpg b/noVNC/media/img/marketplace/vmware_0.jpg new file mode 100755 index 0000000..bcf29ab Binary files /dev/null and b/noVNC/media/img/marketplace/vmware_0.jpg differ diff --git a/noVNC/media/img/marketplace/vmware_1.jpg b/noVNC/media/img/marketplace/vmware_1.jpg new file mode 100755 index 0000000..6ae3e69 Binary files /dev/null and b/noVNC/media/img/marketplace/vmware_1.jpg differ diff --git a/noVNC/media/img/marketplace/vmware_2.jpg b/noVNC/media/img/marketplace/vmware_2.jpg new file mode 100755 index 0000000..71ee3da Binary files /dev/null and b/noVNC/media/img/marketplace/vmware_2.jpg differ diff --git a/noVNC/media/img/minus.jpg b/noVNC/media/img/minus.jpg new file mode 100755 index 0000000..3ec53f2 Binary files /dev/null and b/noVNC/media/img/minus.jpg differ diff --git a/noVNC/media/img/nas_default/item-over.gif b/noVNC/media/img/nas_default/item-over.gif new file mode 100755 index 0000000..e0dc5f7 Binary files /dev/null and b/noVNC/media/img/nas_default/item-over.gif differ diff --git a/noVNC/media/img/nas_default/menu.gif b/noVNC/media/img/nas_default/menu.gif new file mode 100755 index 0000000..30a2c4b Binary files /dev/null and b/noVNC/media/img/nas_default/menu.gif differ diff --git a/noVNC/media/img/ok.png b/noVNC/media/img/ok.png new file mode 100755 index 0000000..463b75e Binary files /dev/null and b/noVNC/media/img/ok.png differ diff --git a/noVNC/media/img/open.png b/noVNC/media/img/open.png new file mode 100755 index 0000000..7862cb1 Binary files /dev/null and b/noVNC/media/img/open.png differ diff --git a/noVNC/media/img/open2.png b/noVNC/media/img/open2.png new file mode 100755 index 0000000..09a47c3 Binary files /dev/null and b/noVNC/media/img/open2.png differ diff --git a/noVNC/media/img/page-first-disabled.gif b/noVNC/media/img/page-first-disabled.gif new file mode 100755 index 0000000..1e02c41 Binary files /dev/null and b/noVNC/media/img/page-first-disabled.gif differ diff --git a/noVNC/media/img/page-first.gif b/noVNC/media/img/page-first.gif new file mode 100755 index 0000000..d84f41a Binary files /dev/null and b/noVNC/media/img/page-first.gif differ diff --git a/noVNC/media/img/page-last-disabled.gif b/noVNC/media/img/page-last-disabled.gif new file mode 100755 index 0000000..8697067 Binary files /dev/null and b/noVNC/media/img/page-last-disabled.gif differ diff --git a/noVNC/media/img/page-last.gif b/noVNC/media/img/page-last.gif new file mode 100755 index 0000000..3df5c2b Binary files /dev/null and b/noVNC/media/img/page-last.gif differ diff --git a/noVNC/media/img/page-next-disabled.gif b/noVNC/media/img/page-next-disabled.gif new file mode 100755 index 0000000..90a7756 Binary files /dev/null and b/noVNC/media/img/page-next-disabled.gif differ diff --git a/noVNC/media/img/page-next.gif b/noVNC/media/img/page-next.gif new file mode 100755 index 0000000..9601635 Binary files /dev/null and b/noVNC/media/img/page-next.gif differ diff --git a/noVNC/media/img/page-prev-disabled.gif b/noVNC/media/img/page-prev-disabled.gif new file mode 100755 index 0000000..37154d6 Binary files /dev/null and b/noVNC/media/img/page-prev-disabled.gif differ diff --git a/noVNC/media/img/page-prev.gif b/noVNC/media/img/page-prev.gif new file mode 100755 index 0000000..eb70cf8 Binary files /dev/null and b/noVNC/media/img/page-prev.gif differ diff --git a/noVNC/media/img/page-refresh.gif b/noVNC/media/img/page-refresh.gif new file mode 100755 index 0000000..110f684 Binary files /dev/null and b/noVNC/media/img/page-refresh.gif differ diff --git a/noVNC/media/img/plus.jpg b/noVNC/media/img/plus.jpg new file mode 100755 index 0000000..cd9e206 Binary files /dev/null and b/noVNC/media/img/plus.jpg differ diff --git a/noVNC/media/img/qnap-logo-b.png b/noVNC/media/img/qnap-logo-b.png new file mode 100755 index 0000000..27c13df Binary files /dev/null and b/noVNC/media/img/qnap-logo-b.png differ diff --git a/noVNC/media/img/question.png b/noVNC/media/img/question.png new file mode 100755 index 0000000..a1bd8a3 Binary files /dev/null and b/noVNC/media/img/question.png differ diff --git a/noVNC/media/img/refresh.png b/noVNC/media/img/refresh.png new file mode 100755 index 0000000..9b935a2 Binary files /dev/null and b/noVNC/media/img/refresh.png differ diff --git a/noVNC/media/img/refresh2.png b/noVNC/media/img/refresh2.png new file mode 100755 index 0000000..23c4a02 Binary files /dev/null and b/noVNC/media/img/refresh2.png differ diff --git a/noVNC/media/img/remove2.png b/noVNC/media/img/remove2.png new file mode 100755 index 0000000..63350ad Binary files /dev/null and b/noVNC/media/img/remove2.png differ diff --git a/noVNC/media/img/slider/ui-bg_flat_0_aaaaaa_40x100.png b/noVNC/media/img/slider/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000..4743d09 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/noVNC/media/img/slider/ui-bg_flat_75_ffffff_40x100.png b/noVNC/media/img/slider/ui-bg_flat_75_ffffff_40x100.png new file mode 100755 index 0000000..ca779e3 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/noVNC/media/img/slider/ui-bg_glass_55_fbf9ee_1x400.png b/noVNC/media/img/slider/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100755 index 0000000..6640381 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/noVNC/media/img/slider/ui-bg_glass_65_ffffff_1x400.png b/noVNC/media/img/slider/ui-bg_glass_65_ffffff_1x400.png new file mode 100755 index 0000000..d3277b5 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/noVNC/media/img/slider/ui-bg_glass_75_dadada_1x400.png b/noVNC/media/img/slider/ui-bg_glass_75_dadada_1x400.png new file mode 100755 index 0000000..7eda20a Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_glass_75_dadada_1x400.png differ diff --git a/noVNC/media/img/slider/ui-bg_glass_75_e6e6e6_1x400.png b/noVNC/media/img/slider/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100755 index 0000000..f4d86b9 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/noVNC/media/img/slider/ui-bg_glass_95_fef1ec_1x400.png b/noVNC/media/img/slider/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000..8500938 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/noVNC/media/img/slider/ui-bg_highlight-soft_75_cccccc_1x100.png b/noVNC/media/img/slider/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100755 index 0000000..4795f69 Binary files /dev/null and b/noVNC/media/img/slider/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/noVNC/media/img/switch_off.png b/noVNC/media/img/switch_off.png new file mode 100755 index 0000000..640f6d9 Binary files /dev/null and b/noVNC/media/img/switch_off.png differ diff --git a/noVNC/media/img/switch_on.png b/noVNC/media/img/switch_on.png new file mode 100755 index 0000000..df18e8d Binary files /dev/null and b/noVNC/media/img/switch_on.png differ diff --git a/noVNC/media/img/text-bg.png b/noVNC/media/img/text-bg.png new file mode 100755 index 0000000..e38aed9 Binary files /dev/null and b/noVNC/media/img/text-bg.png differ diff --git a/noVNC/media/img/title_bg.png b/noVNC/media/img/title_bg.png new file mode 100755 index 0000000..538802a Binary files /dev/null and b/noVNC/media/img/title_bg.png differ diff --git a/noVNC/media/img/tree_root.png b/noVNC/media/img/tree_root.png new file mode 100755 index 0000000..c0eb401 Binary files /dev/null and b/noVNC/media/img/tree_root.png differ diff --git a/noVNC/media/img/treeview/.@__thumb/defaulttreeview-black-line.gif b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-black-line.gif new file mode 100755 index 0000000..96fe919 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-black-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/defaulttreeview-default-line.gif b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-default-line.gif new file mode 100755 index 0000000..905fb43 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-default-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/defaulttreeview-gray-line.gif b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-gray-line.gif new file mode 100755 index 0000000..c5cbe0f Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-gray-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/defaulttreeview-red-line.gif b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-red-line.gif new file mode 100755 index 0000000..b084306 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/defaulttreeview-red-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s100treeview-black-line.gif b/noVNC/media/img/treeview/.@__thumb/s100treeview-black-line.gif new file mode 100755 index 0000000..96fe919 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s100treeview-black-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s100treeview-default-line.gif b/noVNC/media/img/treeview/.@__thumb/s100treeview-default-line.gif new file mode 100755 index 0000000..905fb43 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s100treeview-default-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s100treeview-gray-line.gif b/noVNC/media/img/treeview/.@__thumb/s100treeview-gray-line.gif new file mode 100755 index 0000000..c5cbe0f Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s100treeview-gray-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s100treeview-red-line.gif b/noVNC/media/img/treeview/.@__thumb/s100treeview-red-line.gif new file mode 100755 index 0000000..b084306 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s100treeview-red-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s800treeview-black-line.gif b/noVNC/media/img/treeview/.@__thumb/s800treeview-black-line.gif new file mode 100755 index 0000000..96fe919 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s800treeview-black-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s800treeview-default-line.gif b/noVNC/media/img/treeview/.@__thumb/s800treeview-default-line.gif new file mode 100755 index 0000000..905fb43 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s800treeview-default-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s800treeview-gray-line.gif b/noVNC/media/img/treeview/.@__thumb/s800treeview-gray-line.gif new file mode 100755 index 0000000..c5cbe0f Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s800treeview-gray-line.gif differ diff --git a/noVNC/media/img/treeview/.@__thumb/s800treeview-red-line.gif b/noVNC/media/img/treeview/.@__thumb/s800treeview-red-line.gif new file mode 100755 index 0000000..b084306 Binary files /dev/null and b/noVNC/media/img/treeview/.@__thumb/s800treeview-red-line.gif differ diff --git a/noVNC/media/img/treeview/Thumbs.db b/noVNC/media/img/treeview/Thumbs.db new file mode 100755 index 0000000..c9a9e5c Binary files /dev/null and b/noVNC/media/img/treeview/Thumbs.db differ diff --git a/noVNC/media/img/treeview/file.gif b/noVNC/media/img/treeview/file.gif new file mode 100755 index 0000000..77e7ab6 Binary files /dev/null and b/noVNC/media/img/treeview/file.gif differ diff --git a/noVNC/media/img/treeview/folder-closed.gif b/noVNC/media/img/treeview/folder-closed.gif new file mode 100755 index 0000000..c9ac83d Binary files /dev/null and b/noVNC/media/img/treeview/folder-closed.gif differ diff --git a/noVNC/media/img/treeview/folder-expanded.png b/noVNC/media/img/treeview/folder-expanded.png new file mode 100755 index 0000000..073ee42 Binary files /dev/null and b/noVNC/media/img/treeview/folder-expanded.png differ diff --git a/noVNC/media/img/treeview/folder.gif b/noVNC/media/img/treeview/folder.gif new file mode 100755 index 0000000..1bff22b Binary files /dev/null and b/noVNC/media/img/treeview/folder.gif differ diff --git a/noVNC/media/img/treeview/folder.png b/noVNC/media/img/treeview/folder.png new file mode 100755 index 0000000..6949e4f Binary files /dev/null and b/noVNC/media/img/treeview/folder.png differ diff --git a/noVNC/media/img/treeview/minus.gif b/noVNC/media/img/treeview/minus.gif new file mode 100755 index 0000000..47fb7b7 Binary files /dev/null and b/noVNC/media/img/treeview/minus.gif differ diff --git a/noVNC/media/img/treeview/nas.png b/noVNC/media/img/treeview/nas.png new file mode 100755 index 0000000..fc56aa6 Binary files /dev/null and b/noVNC/media/img/treeview/nas.png differ diff --git a/noVNC/media/img/treeview/plus.gif b/noVNC/media/img/treeview/plus.gif new file mode 100755 index 0000000..6906621 Binary files /dev/null and b/noVNC/media/img/treeview/plus.gif differ diff --git a/noVNC/media/img/treeview/tree_arrows.png b/noVNC/media/img/treeview/tree_arrows.png new file mode 100755 index 0000000..b47c18a Binary files /dev/null and b/noVNC/media/img/treeview/tree_arrows.png differ diff --git a/noVNC/media/img/treeview/treeview-black-line.gif b/noVNC/media/img/treeview/treeview-black-line.gif new file mode 100755 index 0000000..e549687 Binary files /dev/null and b/noVNC/media/img/treeview/treeview-black-line.gif differ diff --git a/noVNC/media/img/treeview/treeview-black.gif b/noVNC/media/img/treeview/treeview-black.gif new file mode 100755 index 0000000..d549b9f Binary files /dev/null and b/noVNC/media/img/treeview/treeview-black.gif differ diff --git a/noVNC/media/img/treeview/treeview-default-line.gif b/noVNC/media/img/treeview/treeview-default-line.gif new file mode 100755 index 0000000..37114d3 Binary files /dev/null and b/noVNC/media/img/treeview/treeview-default-line.gif differ diff --git a/noVNC/media/img/treeview/treeview-default.gif b/noVNC/media/img/treeview/treeview-default.gif new file mode 100755 index 0000000..a12ac52 Binary files /dev/null and b/noVNC/media/img/treeview/treeview-default.gif differ diff --git a/noVNC/media/img/treeview/treeview-famfamfam-line.gif b/noVNC/media/img/treeview/treeview-famfamfam-line.gif new file mode 100755 index 0000000..6e289ce Binary files /dev/null and b/noVNC/media/img/treeview/treeview-famfamfam-line.gif differ diff --git a/noVNC/media/img/treeview/treeview-famfamfam.gif b/noVNC/media/img/treeview/treeview-famfamfam.gif new file mode 100755 index 0000000..0cb178e Binary files /dev/null and b/noVNC/media/img/treeview/treeview-famfamfam.gif differ diff --git a/noVNC/media/img/treeview/treeview-gray-line.gif b/noVNC/media/img/treeview/treeview-gray-line.gif new file mode 100755 index 0000000..3760044 Binary files /dev/null and b/noVNC/media/img/treeview/treeview-gray-line.gif differ diff --git a/noVNC/media/img/treeview/treeview-gray.gif b/noVNC/media/img/treeview/treeview-gray.gif new file mode 100755 index 0000000..cfb8a2f Binary files /dev/null and b/noVNC/media/img/treeview/treeview-gray.gif differ diff --git a/noVNC/media/img/treeview/treeview-red-line.gif b/noVNC/media/img/treeview/treeview-red-line.gif new file mode 100755 index 0000000..df9e749 Binary files /dev/null and b/noVNC/media/img/treeview/treeview-red-line.gif differ diff --git a/noVNC/media/img/treeview/treeview-red.gif b/noVNC/media/img/treeview/treeview-red.gif new file mode 100755 index 0000000..3bbb3a1 Binary files /dev/null and b/noVNC/media/img/treeview/treeview-red.gif differ diff --git a/noVNC/media/img/ubuntu_snapshot.jpg b/noVNC/media/img/ubuntu_snapshot.jpg new file mode 120000 index 0000000..8d071d7 --- /dev/null +++ b/noVNC/media/img/ubuntu_snapshot.jpg @@ -0,0 +1 @@ +/share/CACHEDEV1_DATA/.qpkg/.QKVM/tmp/ubuntu/snapshot.jpg \ No newline at end of file diff --git a/noVNC/media/img/vnc/auto_login.png b/noVNC/media/img/vnc/auto_login.png new file mode 100755 index 0000000..f9f4b09 Binary files /dev/null and b/noVNC/media/img/vnc/auto_login.png differ diff --git a/noVNC/media/img/vnc/auto_logout.png b/noVNC/media/img/vnc/auto_logout.png new file mode 100755 index 0000000..fc499a3 Binary files /dev/null and b/noVNC/media/img/vnc/auto_logout.png differ diff --git a/noVNC/media/img/vnc/autofit.png b/noVNC/media/img/vnc/autofit.png new file mode 100755 index 0000000..d370551 Binary files /dev/null and b/noVNC/media/img/vnc/autofit.png differ diff --git a/noVNC/media/img/vnc/c_a_d.png b/noVNC/media/img/vnc/c_a_d.png new file mode 100755 index 0000000..adfc691 Binary files /dev/null and b/noVNC/media/img/vnc/c_a_d.png differ diff --git a/noVNC/media/img/vnc/cancel.png b/noVNC/media/img/vnc/cancel.png new file mode 100755 index 0000000..c068a7a Binary files /dev/null and b/noVNC/media/img/vnc/cancel.png differ diff --git a/noVNC/media/img/vnc/com.png b/noVNC/media/img/vnc/com.png new file mode 100755 index 0000000..9ae74ee Binary files /dev/null and b/noVNC/media/img/vnc/com.png differ diff --git a/noVNC/media/img/vnc/destroy.png b/noVNC/media/img/vnc/destroy.png new file mode 100755 index 0000000..3cd0269 Binary files /dev/null and b/noVNC/media/img/vnc/destroy.png differ diff --git a/noVNC/media/img/vnc/exit_full.png b/noVNC/media/img/vnc/exit_full.png new file mode 100755 index 0000000..83225f1 Binary files /dev/null and b/noVNC/media/img/vnc/exit_full.png differ diff --git a/noVNC/media/img/vnc/full_screen.png b/noVNC/media/img/vnc/full_screen.png new file mode 100755 index 0000000..f78e147 Binary files /dev/null and b/noVNC/media/img/vnc/full_screen.png differ diff --git a/noVNC/media/img/vnc/install.png b/noVNC/media/img/vnc/install.png new file mode 100755 index 0000000..e230f8d Binary files /dev/null and b/noVNC/media/img/vnc/install.png differ diff --git a/noVNC/media/img/vnc/logout.png b/noVNC/media/img/vnc/logout.png new file mode 100755 index 0000000..52019d9 Binary files /dev/null and b/noVNC/media/img/vnc/logout.png differ diff --git a/noVNC/media/img/vnc/reset.png b/noVNC/media/img/vnc/reset.png new file mode 100755 index 0000000..4ad615a Binary files /dev/null and b/noVNC/media/img/vnc/reset.png differ diff --git a/noVNC/media/img/vnc/restore.png b/noVNC/media/img/vnc/restore.png new file mode 100755 index 0000000..b293432 Binary files /dev/null and b/noVNC/media/img/vnc/restore.png differ diff --git a/noVNC/media/img/vnc/resume.png b/noVNC/media/img/vnc/resume.png new file mode 100755 index 0000000..17e6a27 Binary files /dev/null and b/noVNC/media/img/vnc/resume.png differ diff --git a/noVNC/media/img/vnc/shutdown.png b/noVNC/media/img/vnc/shutdown.png new file mode 100755 index 0000000..bd3471d Binary files /dev/null and b/noVNC/media/img/vnc/shutdown.png differ diff --git a/noVNC/media/img/vnc/snapshot.png b/noVNC/media/img/vnc/snapshot.png new file mode 100755 index 0000000..156b765 Binary files /dev/null and b/noVNC/media/img/vnc/snapshot.png differ diff --git a/noVNC/media/img/vnc/suspend.png b/noVNC/media/img/vnc/suspend.png new file mode 100755 index 0000000..c8905e1 Binary files /dev/null and b/noVNC/media/img/vnc/suspend.png differ diff --git a/noVNC/media/img/wait.gif b/noVNC/media/img/wait.gif new file mode 100755 index 0000000..471c1a4 Binary files /dev/null and b/noVNC/media/img/wait.gif differ diff --git a/noVNC/media/img/wizard/Thumbs.db b/noVNC/media/img/wizard/Thumbs.db new file mode 100755 index 0000000..5df4a78 Binary files /dev/null and b/noVNC/media/img/wizard/Thumbs.db differ diff --git a/noVNC/media/img/wizard/circle.png b/noVNC/media/img/wizard/circle.png new file mode 100755 index 0000000..b651ba4 Binary files /dev/null and b/noVNC/media/img/wizard/circle.png differ diff --git a/noVNC/media/img/wizard/icon.png b/noVNC/media/img/wizard/icon.png new file mode 100755 index 0000000..3f4f5b2 Binary files /dev/null and b/noVNC/media/img/wizard/icon.png differ diff --git a/noVNC/media/img/wizard/n1.png b/noVNC/media/img/wizard/n1.png new file mode 100755 index 0000000..4105a5f Binary files /dev/null and b/noVNC/media/img/wizard/n1.png differ diff --git a/noVNC/media/img/wizard/n2.png b/noVNC/media/img/wizard/n2.png new file mode 100755 index 0000000..080d3cf Binary files /dev/null and b/noVNC/media/img/wizard/n2.png differ diff --git a/noVNC/media/img/wizard/window.png b/noVNC/media/img/wizard/window.png new file mode 100755 index 0000000..088f083 Binary files /dev/null and b/noVNC/media/img/wizard/window.png differ diff --git a/noVNC/media/java/tightvnc-jviewer-nossh.jar b/noVNC/media/java/tightvnc-jviewer-nossh.jar new file mode 100755 index 0000000..28d4770 Binary files /dev/null and b/noVNC/media/java/tightvnc-jviewer-nossh.jar differ diff --git a/noVNC/media/java/vncviewer.jar b/noVNC/media/java/vncviewer.jar new file mode 100755 index 0000000..f7fad3b Binary files /dev/null and b/noVNC/media/java/vncviewer.jar differ diff --git a/noVNC/media/js/QFlot.js b/noVNC/media/js/QFlot.js new file mode 100755 index 0000000..d9e1a23 --- /dev/null +++ b/noVNC/media/js/QFlot.js @@ -0,0 +1,121 @@ +function QFlot(bodyObjID) +{ + this.bodyObjID = bodyObjID; + this.DataArray = []; + this.PreviousData = []; + this.totalPoints = 180; // 180*5s=15min + + + //public methods + QFlot.prototype.InsertData = InsertData; + QFlot.prototype.Repaint = Repaint; + QFlot.prototype.GetData = GetData; + + // private constructor + __construct = function(that) { + }(this) + + function GetData(idx) { + var maxValue = 0; + var result = []; + var rxData = []; + var txData = []; + for (var i=0; i this.totalPoints) { + this.DataArray[i].rx.shift(); + this.DataArray[i].tx.shift(); + } + break; + } + } + } + + function Repaint() { + var resultData = this.GetData(0); + var maxValue = resultData.maxValue/0.9; + if (maxValue < 400) { + maxValue = 400; + } + var myTicksX = []; + for (var i=0; i<=5; i++) { + var xValue = this.totalPoints/5*i; + if(i == 5) { + myTicksX.push([xValue, String((this.totalPoints-xValue)/12)+' MINs']); + } + else { + myTicksX.push([xValue, String((this.totalPoints-xValue)/12)]); + } + } + var myTicksY = [[0, '0KB/s']]; + for (var i=1; i<5; i++) { + var yValue = maxValue/4*i; + if (yValue >= 1024*1024) { + myTicksY.push([yValue, (yValue/1024/1024).toFixed(0) + 'GB']); + } else if (yValue >= 1024) { + myTicksY.push([yValue, (yValue/1024).toFixed(0) + 'MB']); + } else { + myTicksY.push([yValue, yValue.toFixed(0) + 'KB']); + } + } + + var plot = $.plot($('#'+this.bodyObjID), + resultData.result, + { + colors: ["#5E4D93" , "#FCCD06"], + legend: { + container:$("#legendContainer"), + //position: 'nw', + labelBoxBorderColor: "#FFFFFF" + //noColumns: 0 + }, + xaxis: { + min: 0, + max: this.totalPoints, + ticks: myTicksX + }, + yaxis: { + min: 0, + max: maxValue, + ticks: myTicksY + }, + grid:{ backgroundColor: { colors: ["#ffffff", "#ffffff"] } } + + } + ); + plot.draw(); + } + +} \ No newline at end of file diff --git a/noVNC/media/js/QFolderTree.js b/noVNC/media/js/QFolderTree.js new file mode 100755 index 0000000..7a63df3 --- /dev/null +++ b/noVNC/media/js/QFolderTree.js @@ -0,0 +1,227 @@ +var gNodeIdCount = 100; +DEFAULT_POOL_FOLDER_ID = ""; + +MODE_SINGLE_FOLDER = 1; +MODE_SINGLE_FILE = 2; +FILTER_FOLDER = 'folder'; +FILTER_EXPORT = 'export'; +FILTER_ISO = 'iso'; +FILTER_IMG = 'img'; + + +function QFolderTree(mode, filter) +{ + //public methods + QFolderTree.prototype.initTree = initTree; + QFolderTree.prototype.destroy = destroy; + QFolderTree.prototype.expandAll = expandAll; + QFolderTree.prototype.collapseAll = collapseAll; + QFolderTree.prototype.onItemlClick = onItemlClick; + QFolderTree.prototype.getItemInfo = getItemInfo; + QFolderTree.prototype.selectFolder = selectFolder; + + this.FolderList = []; + this.FocusID = ""; + this.Mode = mode ? mode : MODE_SINGLE_FOLDER; + this.Filter = filter ? filter : FILTER_FOLDER; + this.bInit = false; + this.BodyObgID = ''; + this.argDefaultFolders = []; + this.bAutoSelect = false; + + var idTreeViewRoot = 'treeviewroot'; + var idTreeViewControl = 'treeviewcontrol'; + var idTreeViewCollapse = 'treeviewcollapse'; + var idTreeViewExpand = 'treeviewexpand'; + + function initTree(bodyObjID, shareList, rootName) { + gNodeIdCount = 100; + this.FolderList = shareList; + this.BodyObgID = bodyObjID; + + var tmpStr = '' + + '
    '+ + '
  • '+rootName+'
      '; + + for (var i=0; i'+this.FolderList[i].name+''; + } + + tmpStr += '
'; + document.getElementById(bodyObjID).innerHTML = tmpStr; + + var parentElm = this; + $('#'+idTreeViewRoot).treeview({ + control:'#'+idTreeViewControl, + toggle: function() { + var elemID = $(this).find(">span").attr('id'); + if (!parentElm.bInit || elemID == 'node_100') { + return false; + } + parentElm.onItemlClick(elemID); + } + }); + this.collapseAll(); + this.bInit = true; + } + + function destroy() { + if (this.BodyObgID) { + document.getElementById(this.BodyObgID).innerHTML = ''; + } + this.FolderList = []; + } + + function expandAll() { + document.getElementById(idTreeViewExpand).click(); + } + + function collapseAll() { + document.getElementById(idTreeViewCollapse).click(); + document.getElementById('node_100').click(); + } + + function getItemInfo(elemID) { + var item = null; + for (var i=0; i'+newItem.name+''; + gNodeIdCount++; + } + + // list file items + for (var i=0; i'+newItem.name+''; + gNodeIdCount++; + } + + var branches = $(tmpStr).appendTo("#root_"+json.id); + $("#root_"+json.id).treeview({ + add: branches + }); + + if (objTree.bAutoSelect) { + objTree.selectFolder(objTree.argDefaultFolders); + } + } + } +} + +function GetShareShortPath(shareMap, fullpath) +{ + var strRet = fullpath; + + for (var i=0; i this.MaxValue || theValue < this.MinValue || isFinite(theValue) == 0 || String(FixJSFloatBug(theValue)).indexOf('.') !=- 1) { + this.OnValidateError(); + return false; + } else { + //prevent bug when user enters '07' for example in the edit field + this.ObjectRef['Edit'].value = FixJSFloatBug(theValue*1); //little trick to convert to numeric and prevent JS Floating point operation bugs + return true; + } + } + + function AddSubStep(mode) + { + if (this.TimerObj) { + clearTimeout(this.TimerObj); + } + + if (this.ObjectRef['Edit'].disabled) { + return; + } + + var OldValue = this.n; + if (this.Step > 0) { + this.n = FixJSFloatBug((mode == "add") ? this.n+this.Step : this.n-this.Step); + if (this.n < this.MinValue) { + this.n = this.MinValue; + } else if (this.n > this.MaxValue) { + this.n = this.MaxValue; + } + } else { + var i = 0; + for (i=0; i<=5; i++) { + var tmp = Math.pow(2, i)*10; //10,20,40,80,160 + if (this.n == tmp) { + this.n = FixJSFloatBug((mode == "add") ? tmp*2 : tmp/2); + if (this.n < 10) { + this.n = FixJSFloatBug(10); + } else if (this.n > 320) { + this.n = FixJSFloatBug(320); + } + break; + } else if (this.n < tmp) { + if ((tmp == 10) && (mode == "sub")) { + this.n = FixJSFloatBug(this.MinValue); + } else { + this.n = FixJSFloatBug((mode == "add") ? tmp : tmp/2); + } + break; + } + } + } + + if (this.n != OldValue) { + this.ObjectRef['Edit'].value = this.n; + this.OnChange(); + } + + var myObj = this; + this.TimerObj = setTimeout(function(){myObj.AddSubStep(mode)}, 200); + } + + function WriteControl(SpinName) + { + this.n = this.DefaultValue; + var readonly_str = ''; + if (this.ReadOnly) { + readonly_str = 'readonly="readonly"'; + } + + document.write(''); + document.write(''); + + if(this.Style == "vert") { + document.write(''); + document.write(''); + document.write(''); + document.write(''); + document.write(''); + } else { //horizontal + document.write(''); + document.write(''); + document.write(''); + } + document.write(''); + document.write('
'); + + //store objects references for faster access + this.ObjectRef['Edit'] = document.getElementById(this.ObjectId['Edit']); + this.ObjectRef['UpArrow'] = document.getElementById(this.ObjectId['UpArrow']); + this.ObjectRef['DownArrow'] = document.getElementById(this.ObjectId['DownArrow']); + } + + //----------------------------------------------------------------- + //GetValue + function GetValue() + { + return this.n; + } + //----------------------------------------------------------------- + //SetValue + function SetValue(newValue) + { + //validation + if (!this.Validate(newValue) || this.ObjectRef['Edit'].disabled) { + return false; + } + + this.n = newValue * 1; + this.ObjectRef['Edit'].value = this.n; + this.OnChange(); + } + //----------------------------------------------------------------- + //ResetValue + function ResetValue() + { + this.n = this.DefaultValue; + this.ObjectRef['Edit'].value = this.n; + this.OnChange(); + } + + //----------------------------------------------------------------- + function HandleChange(bFromKey) + { + this.ObjectRef['Edit'].style.backgroundColor = this.BackgroundColor; + if (!this.Validate(this.ObjectRef['Edit'].value)) { + if (!bFromKey) { + this.ObjectRef['Edit'].value = this.n; + } else { + this.ObjectRef['Edit'].style.backgroundColor = 'yellow'; + } + this.ObjectRef['Edit'].focus(); //set focus warn user + return false; + } else { + this.ObjectRef['Edit'].style.backgroundColor = 'white'; + this.n = FixJSFloatBug(this.ObjectRef['Edit'].value*1); //little trick to convert to numeric and prevent JS Floating point operation bugs + } + + this.OnChange(); + return true; + } + //----------------------------------------------------------------- + function Disable() + { + this.ObjectRef['Edit'].disabled = true; + this.ObjectRef['UpArrow'].disabled = true; + this.ObjectRef['DownArrow'].disabled = true; + } + //----------------------------------------------------------------- + function Enable() + { + this.ObjectRef['Edit'].disabled = false; + this.ObjectRef['UpArrow'].disabled = false; + this.ObjectRef['DownArrow'].disabled = false; + } +} \ No newline at end of file diff --git a/noVNC/media/js/QUtility.js b/noVNC/media/js/QUtility.js new file mode 100755 index 0000000..745d957 --- /dev/null +++ b/noVNC/media/js/QUtility.js @@ -0,0 +1,1182 @@ +NOVNC_PORT = 3388; +IMPORT_VM_EXTENSION_PC = [".ova", ".ovf", '.qvm', '.xml']; +IMPORT_VM_EXTENSION_NAS = [".ova", ".ovf", ".vmx", '.qvm', '.xml']; +PERMISSION_LIMIT_CONTROL = 2; +PERMISSION_LIMIT_VIEWONLY = 2; + +function ShowMask(bShowCancel, elemID, blackMask) { + if(document.getElementById("document-mask")){ + var o = document.getElementById("document-mask"); + o.style.visibility = "visible"; + o.style.zIndex = 10000; + o.style.display = 'block'; + o.style.position = 'absolute'; + o.style.filter = "alpha(opacity:50)"; + o.style.KHTMLOpacity = 0.8; + o.style.MozOpacity = 0.8; + o.style.opacity = 0.8; + o.style.background = '#FFF'; + o.style.height = window.innerHeight + 'px'; + + if (blackMask){ + o.style.opacity = 0.6 + o.style.background = '#000'; + } + + if (elemID) { + var rect = document.getElementById(elemID).getBoundingClientRect(); + //o.style.top = rect.top + 'px'; + o.style.left = rect.left + 'px'; + o.style.width = (window.innerWidth-rect.left) + "px"; + document.getElementById("loading-icon").style.left = ((rect.right-rect.left)/2-32) + 'px'; + } else { + o.style.width = window.innerWidth + "px"; + document.getElementById("loading-icon").style.left = (document.body.clientWidth/2-32) + 'px'; + } + document.getElementById("loading-icon").style.top = ($(window).height()/2-32) + 'px'; + + o = document.getElementById("loading-cancel"); + o.style.zIndex = 20000; + o.style.display = 'block'; + o.style.position = 'absolute'; + o.style.height = document.getElementsByName('importvm_cancel')[0].clientHeight + 'px'; + if (elemID) { + var rect = document.getElementById(elemID).getBoundingClientRect(); + o.style.left = (rect.left-15) + 'px'; + o.style.width = (window.innerWidth-rect.left) + "px"; + } else { + o.style.width = window.innerWidth + "px"; + } + document.getElementById("loading-cancel").style.top = (document.body.clientHeight/2+52) + 'px'; + document.getElementById("loading-cancel").style.visibility = bShowCancel ? 'visible':'hidden'; + } +} + +function CloseMask() { + var o = document.getElementById("document-mask"); + o.style.visibility = "hidden"; + document.getElementById("loading-cancel").style.visibility = 'hidden'; +} +/* +function normalConfirm(msg) +{ + var ret = confirm(msg); + if (ret) { + ShowMask(); + } + return ret; +} +*/ +function SubmitConfirm(msg, msgTitle, submitID, sendValue, blackMask) +{ + jConfirm(msg, msgTitle, function(r) { + if(r) + { + if(submitID) + { + $('#'+submitID).val(sendValue); + $('#'+submitID).click(); + } + } + else + { + if(!blackMask) + CloseMask(); + return; + } + },blackMask); + + if(!blackMask) + ShowMask(); +} + +window.alert = function(str,_callback, blackMask) { + jAlert(str, '', _callback, blackMask); +} + +function SubmitConfirmCustom(msg, msgTitle, formID, sendID, _call_backend) +{ + jConfirm(msg, msgTitle, function(r) { + if(r) + { + if(_call_backend) + { + _call_backend(); + } + else + { + $('#'+sendID).attr("disabled", false); + $('#'+formID).submit(); + } + } + else + CloseMask(); + }); + ShowMask(); +} + +function wait(ms) +{ + var start = +(new Date()); + while (new Date() - start < ms); +} + +function makeRequest(url, data, func, param, sync) { + var http_request = true; + if (sync=="false") + sync = false; + else // (typeof sync == "undefined") + sync = true; + + if (window.XMLHttpRequest) { // Mozilla, Safari,... + http_request = new XMLHttpRequest(); + } else if (window.ActiveXObject) { // IE + try { + http_request = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + http_request = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) {} + } + } + + if (!http_request) { + alert('Giving up :( Cannot create an XMLHTTP instance'); + return false; + } + + http_request.onreadystatechange = function(){ func(http_request, param); }; + + if(data==''){ + http_request.open('GET', url, sync); + http_request.send(null); + } + else{ + http_request.open('POST', url, sync); + http_request.send(data); + } +} + +function UpdateVMState(host_id, vname, vmstate) +{ + clearTimeout(VMStateTimer); + + var bExtendExpire = 0; + if (typeof(bAutoLogin) !== "undefined" && bAutoLogin) { + bExtendExpire = 1; + } + + if($('#div_cpuus_text').length) // Update cpu state + UpdateVMHwState(host_id, vname, vmstate); + url = "/vminfo/" + host_id + "/"+ vname +"/?bExtendExpire="+bExtendExpire+"&r=" + Math.random(); + makeRequest(url, '', _callbk_update_vmstate, {'host_id':host_id, 'vname':vname, 'vmstate':vmstate}); +} + +function _callbk_update_vmstate(http_request, param) +{ + if (http_request.readyState == 4) { + if (http_request.status == 200) { + var json = JSON.parse(http_request.responseText); + if ((!json.success && (json.errors.indexOf('Authentication failed') != -1)) || + (param.vmstate != json.state)) { + window.location.href = window.location.href + return; + } + } + VMStateTimer = setTimeout(function(){UpdateVMState(param.host_id, param.vname, param.vmstate);}, 5000); + } +} + +function UpdateVMHwState(host_id, vname, vmstate) +{ + url = "/vminfo/" + host_id + "/"+ vname +"/cpuus/?r=" + Math.random(); + makeRequest(url, '', _callbk_update_vm_cpuus, vmstate); +} + +function _callbk_update_vm_cpuus(http_request, vmstate) +{ + if (http_request.readyState == 4) { + if (http_request.status == 200) { + var json = JSON.parse(http_request.responseText); + var new_cpu_usg = parseInt(json.percentage,10); + var old_cpu_usg = parseInt(document.getElementById('div_cpuus_text').innerHTML); + if((new_cpu_usg > 10 && old_cpu_usg < 10) || (new_cpu_usg < 10 && old_cpu_usg > 10)) + { + var str = ''; + if(new_cpu_usg > 10) + str = ''+new_cpu_usg+'%'; + else + str = ''+new_cpu_usg+'%'; + document.getElementById('div_cpuus').innerHTML = str; + } + else + { + document.getElementById('div_cpuus_bar').style.width = new_cpu_usg+'%'; + document.getElementById('div_cpuus_text').innerHTML = new_cpu_usg+'%'; + } + } + } +} + +function UpdateTaskInfo(host_id) +{ + clearTimeout(TaskInfoTimer); + makeRequest( "/taskinfo/"+host_id+'/', '', _callbk_update_taskinfo, host_id); +} + +function _callbk_update_taskinfo(http_request, host_id) +{ + if (http_request.readyState == 4) { + if (http_request.status == 200) { + var json = JSON.parse(http_request.responseText); + if (!json.success && (json.errors.indexOf('Authentication failed') != -1)) { + var refreshURL=window.location.href; + refreshURL=refreshURL.substr(0,refreshURL.lastIndexOf('/')); + refreshURL=refreshURL.substr(0,refreshURL.lastIndexOf('/'))+'/'; + window.location.href = refreshURL; + return; + } + + // show/hide export/import icon + var elem = document.getElementById('task-import-icon'); + var title = ""; + if (elem) { + elem.style.display = (json.tasks.import.running || json.tasks.import.queuing) ? '' : 'none'; + if (json.tasks.import.running) { + title += gettext('Running')+' : ' + json.tasks.import.running + '\n'; + } + if (json.tasks.import.queuing) { + title += gettext('Queuing')+' : ' + json.tasks.import.queuing; + } + elem.title = title; + + } + elem = document.getElementById('task-export-icon'); + title = ""; + if (elem) { + elem.style.display = (json.tasks.export.running || json.tasks.export.queuing) ? '' : 'none'; + if (json.tasks.export.running) { + title += gettext('Running')+' : ' + json.tasks.export.running + '\n'; + } + if (json.tasks.export.queuing) { + title += gettext('Queuing')+' : ' + json.tasks.export.queuing; + } + elem.title = title; + } + + // show/hide vm background action icon + var cloningVM = ''; + for (var i=0; i 0) ? false : true; +} + +function GetScrollbarWidth() +{ + var parent, child, width; + if (width === undefined) { + parent = $('
').appendTo('body'); + child = parent.children(); + width = child.innerWidth() - child.height(99).innerWidth(); + parent.remove(); + } + return width; +} + +function MacGenerator(inputID) +{ + var mac = "52:54:00" + for (var i=0; i<3; i++) { + var tmp = Math.floor(Math.random()*256).toString(16).toUpperCase(); + if (tmp.length < 2) { + tmp = '0' + tmp; + } + mac += ':' + tmp; + } + + $('#'+inputID).css({'background-color':'','border':'', 'box-shadow': ''}); + $('#'+inputID).attr('title',''); + + return mac; +} + +function CreateMemSliderElement(elem_id) +{ + var link = [256, MAX_MEMORY_VALUE/4, MAX_MEMORY_VALUE/2, MAX_MEMORY_VALUE*3/4, MAX_MEMORY_VALUE]; + if (MAX_MEMORY_VALUE == 512){ + link = [256, 512]; + } + else if (MAX_MEMORY_VALUE == 768){ + link = [256, 512, 768]; + } + else if (MAX_MEMORY_VALUE == 1024){ + link = [256, 512, 768, 1024]; + } + + var str = ''; + for (var i=0; i'+str2+''; + } + str += '
'; + + document.getElementById("memory_slider_link").innerHTML = str; +} + +function UpdateMemorySlider(elemID, value) +{ + var reg = /^[0-9]*$/; + if (!reg.test(value)) { + value = $("#slider-range-min").slider("value"); + } + + if (value < 256) { + value = 256; + } else if (value > MAX_MEMORY_VALUE) { + value = MAX_MEMORY_VALUE; + } + + $("#slider-range-min").slider("value", value); + if (document.getElementById(elemID).value != value) { + document.getElementById(elemID).value = value; + } +} + +function OnHDDSourceChange(value, id_prefix, total) +{ + for (var i=0; i<=total;i++) { + document.getElementById(id_prefix+i).className = (value == i) ? "active" : ""; + } + + var eleTrs = document.getElementById("hdd_table").getElementsByTagName('tr'); + var cnt = 0; + for (var i=0; i=level_3) + { + link = [level_3, endSize]; + } + else if(startSize>=level_2) + { + link = [level_2, level_3, endSize]; + } + else if(startSize>=level_1) + { + link = [level_1, level_2, level_3, endSize]; + } + else + { + link = [0, level_1, level_2, level_3, endSize]; + } + sliderWidth=305; + } + else + { + style='others'; + } + + var str = ''; + + for (var i=0; i'+str2+''; + } + else + { + str += ''+str2+''; + } + } + + str += ''; + str += '
'; + + document.getElementById("HDD_slider_link").innerHTML = str; +} + +function UpdateHDDSlider(elemID, value, startSize, endSize, style) +{ + var reg = /^[0-9]*$/; + if (!reg.test(value)) { + value = $("#slider-range-HDDmin").slider("value"); + } + + if (value < startSize) { + value = startSize; + } else if (value > endSize) { + value = endSize; + } + + $("#slider-range-HDDmin").slider("value", value); + if (document.getElementById(elemID).value != value) { + document.getElementById(elemID).value = value; + } + + if(style=='exMode'){ + document.getElementById("Hddresize_id").value = value-startSize; + } + +} + +function FL_CreateHDDSliderElement(elem_id,startSize,endSize) +{ + startSize=parseInt(startSize); + endSize=parseInt(endSize); + var sizeRange=endSize-startSize; + var level_1=1024; + var level_2=2048; + var level_3=3072; +/* + var level_1=Math.round((startSize+sizeRange/4)/50)*50; + var level_2=Math.round((startSize+sizeRange/2)/50)*50; + var level_3=Math.round((startSize+sizeRange*3/4)/50)*50; +*/ + var link = [startSize, level_1, level_2, level_3, endSize]; + var str = ''; + for (var i=0; i'+str2+''; + } + + str += ''; + str += '
'; + + document.getElementById("FL_HDD_slider_link").innerHTML = str; +} + +function FL_UpdateHDDSlider(elemID, value, startSize, endSize) +{ + var reg = /^[0-9]*$/; + if (!reg.test(value)) { + value = $("#FL_slider-range-HDDmin").slider("value"); + } + + if (value < startSize) { + value = startSize; + } else if (value > endSize) { + value = endSize; + } + + $("#FL_slider-range-HDDmin").slider("value", value); + if (document.getElementById(elemID).value != value) { + document.getElementById(elemID).value = value; + } + +} + +function ReloadShareList(func, params) +{ + url = "/sharelist/"; + makeRequest(url, '', _callbk_reload_sharelist, {'func':func, 'params':params}); +} + +function _callbk_reload_sharelist(http_request, data) +{ + if (http_request.readyState == 4) { + if (http_request.status == 200) { + var json = JSON.parse(http_request.responseText); + if (json.success) { + if (data.params) { + data.func(json.list_data, data.params); + } else { + data.func(json.list_data); + } + } else { + func(null, []); + } + } else { + func(null, []); + } + } + +} + +function decodeHTMLEntities(text) { + var entities = [ + ['apos', '\''], + ['amp', '&'], + ['lt', '<'], + ['gt', '>'] + ]; + + for (var i = 0, max = entities.length; i < max; ++i) { + text = text.replace(new RegExp('&'+entities[i][0]+';', 'g'), entities[i][1]); + } + + return text; +} + +function FileSizeFormat(bytes) { + var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; + if (bytes == 0) return 'n/a'; + var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); + return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i]; +}; + +function onMultiCkboxChange(elem, prefix, totalCnt,openBtn) +{ + if (elem.id == (prefix+'all')) { + for (var i=0; i').attr('id','helpTip').addClass('helpTip').appendTo($('#rightDiv')); + var helpTipBody = $('
').addClass('helpTipBody').css({'width':baseWidth}).appendTo(helpTip); + var helpTipHeadBg = $('
').addClass('helpTipHeadBg').appendTo(helpTip); + var helpTipHead = $('
').addClass('helpTipHead').appendTo(helpTip); + + $(helpContent).appendTo(helpTipBody); + + var detectUserAgent = navigator.userAgent; + if (detectUserAgent.match(/(iPhone|iPod|iPad|Android)/)){ + $('#help-window').on('touchstart click',function(e){ + e.preventDefault(); + var rect = document.getElementById('help-window').getBoundingClientRect(); + var baseLeft=rect.left+11; + var baseTop=rect.top+30; + helpTipBody.css({'left':baseLeft-baseWidth,'top':baseTop}); + helpTipHeadBg.css({'left':baseLeft-5,'top':baseTop-6}); + helpTipHead.css({'left':baseLeft-5,'top':baseTop-5}); + helpTip.show(); + helpTip.before($('
')); + $('#closeMask').on('touchstart click',closeTip); + }); + + } + else{ + $('#help-window').mouseover(function(){ + var rect = document.getElementById('help-window').getBoundingClientRect(); + var baseLeft=rect.left+11; + var baseTop=rect.top+30; + helpTipBody.css({'left':baseLeft-baseWidth,'top':baseTop}); + helpTipHeadBg.css({'left':baseLeft-5,'top':baseTop-6}); + helpTipHead.css({'left':baseLeft-5,'top':baseTop-5}); + helpTip.show(); + + $('#help-window').click(function(e){ + if(!$('#closeMask').attr('id')) + helpTip.before($('
')); + $('#help-window').off('mouseout'); + $('#closeMask').on('click',closeTip); + }); + + $('#help-window').mouseout(function(){ + $('.helpTip').hide(); + }); + + function closeTip(e){ + e.preventDefault(); + $('.helpTip').hide(); + $('#closeMask').remove(); + } + + }); + } +} + +function closeTip(e){ + e.preventDefault(); + $('.helpTip').hide(); + $('#closeMask').remove(); +} + +//account function start +function accountMenu(userName,lastLoginTime,page){ + if($('#accountMenu').attr('id')!=undefined){ + $('#accountMenu').remove(); + $('#closeMask').remove(); + } + else{ + var rect = $('.account')[0].getBoundingClientRect(); + var baseTop=rect.top+28; + var scrollWidth=18; + + if (oBrowser.isCh){ + scrollWidth=4; + } + + if($('#rightDiv')[0].scrollHeight > $('#rightDiv')[0].clientHeight){ + scrollWidth=0; + } + + if(page=='vm'){ + baseTop = 60; + } + + $('
').appendTo($('#rightDiv')); + var accountMenu = $('
').appendTo($('#rightDiv')); + + if (oBrowser.isCh){ + var accountMenuContent = $('
').addClass('accountContent').css({'right':15-scrollWidth,'top':baseTop}).appendTo(accountMenu); + var accountHeadBg = $('
').addClass('accountHeadBg').css({'right':33-scrollWidth,'top':baseTop-7}).appendTo(accountMenu); + var accountHead = $('
').addClass('accountHead').css({'right':33-scrollWidth,'top':baseTop-5}).appendTo(accountMenu); + } + else{ + var accountMenuContent = $('
').addClass('accountContent').css({'right':30-scrollWidth,'top':baseTop}).appendTo(accountMenu); + var accountHeadBg = $('
').addClass('accountHeadBg').css({'right':48-scrollWidth,'top':baseTop-7}).appendTo(accountMenu); + var accountHead = $('
').addClass('accountHead').css({'right':48-scrollWidth,'top':baseTop-5}).appendTo(accountMenu); + } + + if(userName=='admin'){ + if(window.parent != window.self){ + accountMenuContent.append('
'+userName+'
'+gettext('Last login time')+':
'+ + '
'+lastLoginTime+'
'+ + '
'+gettext('About')+'
'); + } + else{ + accountMenuContent.append('
'+userName+'
'+gettext('Last login time')+':
'+ + '
'+lastLoginTime+'
'+ + '
'+gettext('Logout')+'
'+ + '
'+gettext('About')+'
'); + } + } + else{ + accountMenuContent.append('
'+userName+'
'+gettext('Last login time')+':
'+ + '
'+lastLoginTime+'
'+ + '
'+gettext('Change Password')+'
'+ + '
'+gettext('Logout')+'
'+ + '
'+gettext('About')+'
'); + } + + $('#closeMask').on('touchstart click',closeAccount); + } +} + +function closeAccount(e){ + e.preventDefault(); + $('#accountMenu').remove(); + $('#closeMask').remove(); +} + +function accountControl(choice,blackMask){ + $('.warningStr').hide(); + $('#closeMask').remove(); + $('#accountMenu').remove(); + + if(choice=='logout'){ + ShowMask(); + jConfirm(gettext('Are you sure to log out?'), gettext('Logout Confirm'), function(r) { + if(r) + { + document.location.href='/admin/logout/'; + } + else + { + CloseMask(); + return; + } + },blackMask); + } +} +//account function end + +function getCookie(key) +{ + if( document.cookie.length==0 ) + return false; + + var i=document.cookie.search(key+'='); + if( i==-1 ) + return false; + + i+=key.length+1; + var j=document.cookie.indexOf(';', i); + if( j==-1 ) + j=document.cookie.length; + return document.cookie.slice(i,j); +} + +function fireEvent(element, event) +{ + if (document.createEventObject) { + // dispatch for IE + var evt = document.createEventObject(); + return element.fireEvent('on'+event,evt) + } else { + // dispatch for firefox + others + var evt = document.createEvent("HTMLEvents"); + evt.initEvent(event, true, true ); // event type,bubbling,cancelable + return !element.dispatchEvent(evt); + } +} + +function OnVNCShapshot(host_id, vmname, elem) +{ + url = "/vncsnapshot/"+host_id+"/"+vmname+"/?r=" + Math.random(); + makeRequest(url, '', _callbk_vnc_snapshot, elem.id); +} + +function _callbk_vnc_snapshot(http_request, elemID) +{ + if (http_request.readyState == 4) { + if (http_request.status == 200) { + var json = JSON.parse(http_request.responseText); + console.log(json); + if (!json.success) { + console.log('[Failed]'+json.errors) + return; + } + // update image source path = '/media/img/'+json.vname+'_snapshot.jpg' + showVNCSnapshot(json.vname); + } + } +} + +function creatVNCSnapshot(host_id){ + var helpTip = $('
').attr('id','vncSnapshot').addClass('helpTip').appendTo($('#rightDiv')); + var helpTipBody = $('
').attr('id','vncSnapshotBody').addClass('helpTipBody').appendTo(helpTip); + var helpTipHeadBg = $('
').attr('id','vncSnapshotHeadBg').addClass('helpTipHeadBg').appendTo(helpTip); + var helpTipHead = $('
').attr('id','vncSnapshotHead').addClass('helpTipHead').appendTo(helpTip); + + $('.OnVNCShapshot').on('mouseover',function(e){ + e.preventDefault(); + var vmname = $(this).attr('id').replace('vnc_',''); + + if(oBrowser.isFF){ + OnVNCShapshot(host_id, vmname, $(this)); + } + else if(oBrowser.isCh){ + if(e.relatedTarget.id == $(this).attr('id')) + OnVNCShapshot(host_id, vmname, $(this)); + } + else{ + var sAgent = navigator.userAgent.toLowerCase() + isWin8 = (sAgent.indexOf("windows nt 6.2")!=-1); + + if(isWin8){ + OnVNCShapshot(host_id, vmname, $(this)); + } + else{ + if(e.relatedTarget.id == $(this).attr('id')) + OnVNCShapshot(host_id, vmname, $(this)); + } + } + + $('#rightDiv').on('touchstart click',function(e){ + e.preventDefault(); + $('#vncSnapshot').hide(); + }); + }); + + $('.OnVNCShapshot').mouseout(function(e){ + e.preventDefault(); + $('#vncSnapshot').hide(); + }); +} + +function showVNCSnapshot(vname){ + $('#vncSnapshotBody').children().remove(); + var baseWidth = 400; + var baseHeight = 250; + var dt=new Date(); + var imgPath = '/media/img/'+vname+'_snapshot.jpg?r='+dt.getTime(); + $('').attr('src',imgPath).css('height',250).appendTo($('#vncSnapshotBody')); + + var detectUserAgent = navigator.userAgent; + if($('#btn_console').attr('id')==undefined){ //overview page + $('#vncSnapshotBody').css({'height':baseHeight}); + + var winWidth = window.innerWidth; + var rect = document.getElementById('vnc_'+vname).getBoundingClientRect(); + var baseLeft=rect.left+11; + var baseTop=rect.top-5; + + if((baseTop-272)>0){ + $('#vncSnapshotHeadBg').removeClass().addClass('vncSnapshotHeadBg'); + $('#vncSnapshotHead').removeClass().addClass('vncSnapshotHead'); + $('#vncSnapshotBody').css({'right':winWidth-baseLeft-10,'top':baseTop-272}); + $('#vncSnapshotHeadBg').css({'left':baseLeft-10,'top':baseTop-5}); + $('#vncSnapshotHead').css({'left':baseLeft-10,'top':baseTop-6}); + } + else{ + $('#vncSnapshotHeadBg').removeClass().addClass('helpTipHeadBg'); + $('#vncSnapshotHead').removeClass().addClass('helpTipHead'); + baseTop=rect.top+30; + $('#vncSnapshotBody').css({'right':winWidth-baseLeft-10,'top':baseTop}); + $('#vncSnapshotHeadBg').css({'left':baseLeft-10,'top':baseTop-6}); + $('#vncSnapshotHead').css({'left':baseLeft-10,'top':baseTop-5}); + } + + $('#vncSnapshot').show(); + + } + else{ //VM page + //$('#vncSnapshotBody').css({'width':baseWidth}); + $('#vncSnapshotHeadBg').addClass('helpTipHeadBg'); + $('#vncSnapshotHead').addClass('helpTipHead'); + + var windowHeight = window.innerHeight; + var rect = document.getElementById('btn_console').getBoundingClientRect(); + var baseLeft=rect.left+11; + var baseTop=rect.top+30; + + $('#vncSnapshotBody').css({'left':baseLeft+20,'top':baseTop+7}); + $('#vncSnapshotHeadBg').css({'left':baseLeft-5+40,'top':baseTop-6+5}); + $('#vncSnapshotHead').css({'left':baseLeft-5+40,'top':baseTop-5+5}); + + if($('#conselModal').hasClass('in')){ + $('#vncSnapshot').hide(); + } + else{ + $('#vncSnapshot').show(); + } + + $('#btn_console').on('mouseout click',function(){ + $('#vncSnapshot').hide(); + }); + + $('body').click(function(){ + $('#vncSnapshot').hide(); + }); + + + } +} + +function addSSLHint(){ + var targetVNC = window.location.protocol + "//" + window.location.hostname + ":" + WebUtil.getQueryVar('port', ''); + var SSLbrowser = "FF"; + var hint = ""; + + $('#noVNC_canvas').hide(); + $('body').css('overflow','auto'); + if(oBrowser.isFF){ + SSLbrowser = "FF"; + hint = '
'+gettext("Please add the console's URL to your web browser's [Exception List].")+'
'+ + '
1.'+gettext('Please click to open a new tab.')+'
'+ + '
'+ + '
4.'+gettext('Close the new tab')+'
'+ + '
5.'+gettext('Please click to refresh this page.')+'
'; + $('
').attr('id','addSSLHint').appendTo($('#noVNC_container')); + } + else if(oBrowser.isIE){ + SSLbrowser = "IE"; + hint = '
'+gettext('For security concerns, the HTML5 Console with SSL does not support Internet Explorer.')+'
'+ + '
'+gettext('Click [Redirect] button to open a normal console page.')+'
'+ + '
'; + $('
').attr('id','addSSLHint').css({'height':'150px','width':'800px','margin-left':'-400px','padding':'40px 20px 0 20px'}).appendTo($('#noVNC_container')); + } + + $(hint).appendTo($('#addSSLHint')); + + $('#hintBtn01').on('touchstart click',function(){ + window.open(targetVNC, '_blank'); + }); + + $('#hintBtn02').on('touchstart click',function(){ + location=location; + }); + + $('#hintBtn03').on('touchstart click',function(){ + var port = window.location.port; + var url = window.location.href.replace('https:','http:'); + var r1 = ':'+port+'/'; + var r2 = ':'+(port-1)+'/'; + url = url.replace(r1, r2); + location=url; + }); +} \ No newline at end of file diff --git a/noVNC/media/js/ZeroClipboard.swf b/noVNC/media/js/ZeroClipboard.swf new file mode 100755 index 0000000..13bf8e3 Binary files /dev/null and b/noVNC/media/js/ZeroClipboard.swf differ diff --git a/noVNC/media/js/bootstrap-alert.js b/noVNC/media/js/bootstrap-alert.js new file mode 100755 index 0000000..d17f44e --- /dev/null +++ b/noVNC/media/js/bootstrap-alert.js @@ -0,0 +1,94 @@ +/* ========================================================== + * bootstrap-alert.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function ( el ) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype = { + + constructor: Alert + + , close: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.trigger('close') + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent + .trigger('close') + .removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.fn.alert = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) + }) + +}( window.jQuery ); \ No newline at end of file diff --git a/noVNC/media/js/bootstrap-button.js b/noVNC/media/js/bootstrap-button.js new file mode 100755 index 0000000..6b36753 --- /dev/null +++ b/noVNC/media/js/bootstrap-button.js @@ -0,0 +1,100 @@ +/* ============================================================ + * bootstrap-button.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + +!function( $ ){ + + "use strict" + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype = { + + constructor: Button + + , setState: function ( state ) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + , toggle: function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + $.fn.button = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + }) + +}( window.jQuery ); \ No newline at end of file diff --git a/noVNC/media/js/bootstrap-carousel.js b/noVNC/media/js/bootstrap-carousel.js new file mode 100755 index 0000000..8c0723d --- /dev/null +++ b/noVNC/media/js/bootstrap-carousel.js @@ -0,0 +1,161 @@ +/* ========================================================== + * bootstrap-carousel.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.carousel.defaults, options) + this.options.slide && this.slide(this.options.slide) + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function () { + this.interval = setInterval($.proxy(this.next, this), this.options.interval) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function () { + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + if ($next.hasClass('active')) return + + if (!$.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger('slide') + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } else { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.trigger('slide') + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = typeof option == 'object' && option + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (typeof option == 'string' || (option = options.slide)) data[option]() + else data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + }) + +}( window.jQuery ); \ No newline at end of file diff --git a/noVNC/media/js/bootstrap-collapse.js b/noVNC/media/js/bootstrap-collapse.js new file mode 100755 index 0000000..9a36446 --- /dev/null +++ b/noVNC/media/js/bootstrap-collapse.js @@ -0,0 +1,138 @@ +/* ============================================================= + * bootstrap-collapse.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + +!function( $ ){ + + "use strict" + + var Collapse = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options["parent"]) { + this.$parent = $(this.options["parent"]) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension = this.dimension() + , scroll = $.camelCase(['scroll', dimension].join('-')) + , actives = this.$parent && this.$parent.find('.in') + , hasData + + if (actives && actives.length) { + hasData = actives.data('collapse') + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', 'show', 'shown') + this.$element[dimension](this.$element[0][scroll]) + + } + + , hide: function () { + var dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', 'hide', 'hidden') + this.$element[dimension](0) + } + + , reset: function ( size ) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function ( method, startEvent, completeEvent ) { + var that = this + , complete = function () { + if (startEvent == 'show') that.reset() + that.$element.trigger(completeEvent) + } + + this.$element + .trigger(startEvent) + [method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $(target).collapse(option) + }) + }) + +}( window.jQuery ); \ No newline at end of file diff --git a/noVNC/media/js/bootstrap-dropdown.js b/noVNC/media/js/bootstrap-dropdown.js new file mode 100755 index 0000000..54b61c5 --- /dev/null +++ b/noVNC/media/js/bootstrap-dropdown.js @@ -0,0 +1,92 @@ +/* ============================================================ + * bootstrap-dropdown.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function( $ ){ + + "use strict" + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle="dropdown"]' + , Dropdown = function ( element ) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + , isActive + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + isActive = $parent.hasClass('open') + + clearMenus() + !isActive && $parent.toggleClass('open') + + return false + } + + } + + function clearMenus() { + $(toggle).parent().removeClass('open') + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-api', clearMenus) + $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + }) + +}( window.jQuery ); \ No newline at end of file diff --git a/noVNC/media/js/bootstrap-file-input.js b/noVNC/media/js/bootstrap-file-input.js new file mode 100755 index 0000000..72363dc --- /dev/null +++ b/noVNC/media/js/bootstrap-file-input.js @@ -0,0 +1,113 @@ +/* + Bootstrap - File Input + ====================== + + This is meant to convert all file input tags into a set of elements that displays consistently in all browsers. + + Converts all + + into Bootstrap buttons + Browse + +*/ +$(function() { + +$('input[type=file]').each(function(i,elem){ + + // Maybe some fields don't need to be standardized. + if (typeof $(this).attr('data-bfi-disabled') != 'undefined') { + return; + } + + // Set the word to be displayed on the button + var buttonWord = gettext('Browse'); + + if (typeof $(this).attr('title') != 'undefined') { + buttonWord = $(this).attr('title'); + } + + // Start by getting the HTML of the input element. + // Thanks for the tip http://stackoverflow.com/a/1299069 + var $elem = $(elem); + var input = $('
').append( $elem.eq(0).clone() ).html(); + + // Now we're going to replace that input field with a Bootstrap button. + // The input will actually still be there, it will just be float above and transparent (done with the CSS). + $elem.replaceWith(''+buttonWord+input+''); +}) +// After we have found all of the file inputs let's apply a listener for tracking the mouse movement. +// This is important because the in order to give the illusion that this is a button in FF we actually need to move the button from the file input under the cursor. Ugh. +.promise().done( function(){ + + // As the cursor moves over our new Bootstrap button we need to adjust the position of the invisible file input Browse button to be under the cursor. + // This gives us the pointer cursor that FF denies us + $('.file-input-wrapper').mousemove(function(cursor) { + + var input, wrapper, + wrapperX, wrapperY, + inputWidth, inputHeight, + cursorX, cursorY; + + // This wrapper element (the button surround this file input) + wrapper = $(this); + // The invisible file input element + input = wrapper.find("input"); + // The left-most position of the wrapper + wrapperX = wrapper.offset().left; + // The top-most position of the wrapper + wrapperY = wrapper.offset().top; + // The with of the browsers input field + inputWidth= input.width(); + // The height of the browsers input field + inputHeight= input.height(); + //The position of the cursor in the wrapper + cursorX = cursor.pageX; + cursorY = cursor.pageY; + + //The positions we are to move the invisible file input + // The 20 at the end is an arbitrary number of pixels that we can shift the input such that cursor is not pointing at the end of the Browse button but somewhere nearer the middle + moveInputX = cursorX - wrapperX - inputWidth + 20; + // Slides the invisible input Browse button to be positioned middle under the cursor + moveInputY = cursorY- wrapperY - (inputHeight/2); + + // Apply the positioning styles to actually move the invisible file input + input.css({ + left:moveInputX, + top:moveInputY + }); + }); + + $('.file-input-wrapper input[type=file]').change(function(){ + + // Remove any previous file names + $(this).parent().next('.file-input-name').remove(); + if ($(this).prop('files').length > 1) { + count = $(this).prop('files').length; + str = '
' + for (var i=0; i'; + } + str += '
'; + $(this).parent().after(str); + } + else { + $(this).parent().after('
'+$(this).val().replace('C:\\fakepath\\','')+'
'); + } + + }); + + + +}); + +// Add the styles before the first stylesheet +// This ensures they can be easily overridden with developer styles +var cssHtml = ''; +$('link[rel=stylesheet]').eq(0).before(cssHtml); + +}); diff --git a/noVNC/media/js/bootstrap-modal.js b/noVNC/media/js/bootstrap-modal.js new file mode 100755 index 0000000..8bec6b8 --- /dev/null +++ b/noVNC/media/js/bootstrap-modal.js @@ -0,0 +1,211 @@ +/* ========================================================= + * bootstrap-modal.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function( $ ){ + + "use strict" + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function ( content, options ) { + this.options = options + this.$element = $(content) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + + if (this.isShown) return + + $('body').addClass('modal-open') + + this.isShown = true + this.$element.trigger('show') + + escape.call(this) + backdrop.call(this, function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + } + + , hide: function ( e ) { + e && e.preventDefault() + + if (!this.isShown) return + + var that = this + this.isShown = false + + $('body').removeClass('modal-open') + + escape.call(this) + + this.$element + .trigger('hide') + .removeClass('in') + + $.support.transition && this.$element.hasClass('fade') ? + hideWithTransition.call(this) : + hideModal.call(this) + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + function hideWithTransition() { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + hideModal.call(that) + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + hideModal.call(that) + }) + } + + function hideModal( that ) { + this.$element + .hide() + .trigger('hidden') + + backdrop.call(this) + } + + function backdrop( callback ) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('