jsxc-3.0.0/0000755000175000017500000000000012670572546011523 5ustar pravipravijsxc-3.0.0/build/0000755000175000017500000000000012670572546012622 5ustar pravipravijsxc-3.0.0/build/css/0000755000175000017500000000000012670572546013412 5ustar pravipravijsxc-3.0.0/build/css/jsxc.css0000644000175000017500000042606112670572546015104 0ustar pravipravi@charset "UTF-8"; /* basic scrollbar styling */ /* vertical scrollbar */ .mCSB_container { width: auto; margin-right: 30px; overflow: hidden; } .mCSB_container.mCS_no_scrollbar { margin-right: 0; } .mCS_disabled .mCSB_container.mCS_no_scrollbar, .mCS_destroyed .mCSB_container.mCS_no_scrollbar { margin-right: 30px; } .mCustomScrollBox .mCSB_scrollTools { width: 16px; height: 100%; top: 0; right: 0; } .mCSB_scrollTools .mCSB_draggerContainer { height: 100%; box-sizing: border-box; } .mCSB_scrollTools .mCSB_buttonUp + .mCSB_draggerContainer { padding-bottom: 40px; } .mCSB_scrollTools .mCSB_draggerRail { width: 2px; height: 100%; margin: 0 auto; border-radius: 10px; } .mCSB_scrollTools .mCSB_dragger { cursor: pointer; width: 100%; height: 30px; } .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { width: 4px; height: 100%; margin: 0 auto; border-radius: 10px; text-align: center; } .mCSB_scrollTools .mCSB_buttonUp, .mCSB_scrollTools .mCSB_buttonDown { height: 20px; overflow: hidden; margin: 0 auto; cursor: pointer; } .mCSB_scrollTools .mCSB_buttonDown { bottom: 0; margin-top: -40px; } /* horizontal scrollbar */ .mCSB_horizontal .mCSB_container { height: auto; margin-right: 0; margin-bottom: 30px; overflow: hidden; } .mCSB_horizontal .mCSB_container.mCS_no_scrollbar { margin-bottom: 0; } .mCS_disabled .mCSB_horizontal .mCSB_container.mCS_no_scrollbar, .mCS_destroyed .mCSB_horizontal .mCSB_container.mCS_no_scrollbar { margin-right: 0; margin-bottom: 30px; } .mCSB_horizontal.mCustomScrollBox .mCSB_scrollTools { width: 100%; height: 16px; top: auto; right: auto; bottom: 0; left: 0; overflow: hidden; } .mCSB_horizontal .mCSB_scrollTools .mCSB_draggerContainer { height: 100%; width: auto; box-sizing: border-box; overflow: hidden; } .mCSB_horizontal .mCSB_scrollTools .mCSB_buttonLeft + .mCSB_draggerContainer { padding-bottom: 0; padding-right: 20px; } .mCSB_horizontal .mCSB_scrollTools .mCSB_draggerRail { width: 100%; height: 2px; margin: 7px 0; border-radius: 10px; } .mCSB_horizontal .mCSB_scrollTools .mCSB_dragger { width: 30px; height: 100%; } .mCSB_horizontal .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { width: 100%; height: 4px; margin: 6px auto; border-radius: 10px; } .mCSB_horizontal .mCSB_scrollTools .mCSB_buttonLeft, .mCSB_horizontal .mCSB_scrollTools .mCSB_buttonRight { width: 20px; height: 100%; overflow: hidden; margin: 0 auto; cursor: pointer; float: left; } .mCSB_horizontal .mCSB_scrollTools .mCSB_buttonRight { right: 0; bottom: auto; margin-left: -40px; margin-top: -16px; float: right; } /* default scrollbar colors and backgrounds */ .mCustomScrollBox .mCSB_scrollTools { opacity: 0.75; } .mCustomScrollBox:hover .mCSB_scrollTools { opacity: 1; } .mCSB_scrollTools .mCSB_draggerRail { background: #000; /* rgba fallback */ background: rgba(0, 0, 0, 0.4); filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; /* old ie */ } .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar { background: #fff; /* rgba fallback */ background: rgba(255, 255, 255, 0.75); filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; /* old ie */ } .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar { background: rgba(255, 255, 255, 0.85); filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)"; /* old ie */ } .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar, .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar { background: rgba(255, 255, 255, 0.9); filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; /* old ie */ } .mCSB_scrollTools .mCSB_buttonUp, .mCSB_scrollTools .mCSB_buttonDown, .mCSB_scrollTools .mCSB_buttonLeft, .mCSB_scrollTools .mCSB_buttonRight { background-image: url(mCSB_buttons.png); background-repeat: no-repeat; opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)"; /* old ie */ } .mCSB_scrollTools .mCSB_buttonUp { background-position: 0 0; /* sprites locations are 0 0/-16px 0/-32px 0/-48px 0 (light) and -80px 0/-96px 0/-112px 0/-128px 0 (dark) */ } .mCSB_scrollTools .mCSB_buttonDown { background-position: 0 -20px; /* sprites locations are 0 -20px/-16px -20px/-32px -20px/-48px -20px (light) and -80px -20px/-96px -20px/-112px -20px/-128px -20px (dark) */ } .mCSB_scrollTools .mCSB_buttonLeft { background-position: 0 -40px; /* sprites locations are 0 -40px/-20px -40px/-40px -40px/-60px -40px (light) and -80px -40px/-100px -40px/-120px -40px/-140px -40px (dark) */ } .mCSB_scrollTools .mCSB_buttonRight { background-position: 0 -56px; /* sprites locations are 0 -56px/-20px -56px/-40px -56px/-60px -56px (light) and -80px -56px/-100px -56px/-120px -56px/-140px -56px (dark) */ } .mCSB_scrollTools .mCSB_buttonUp:hover, .mCSB_scrollTools .mCSB_buttonDown:hover, .mCSB_scrollTools .mCSB_buttonLeft:hover, .mCSB_scrollTools .mCSB_buttonRight:hover { opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; /* old ie */ } .mCSB_scrollTools .mCSB_buttonUp:active, .mCSB_scrollTools .mCSB_buttonDown:active, .mCSB_scrollTools .mCSB_buttonLeft:active, .mCSB_scrollTools .mCSB_buttonRight:active { opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; /* old ie */ } /* Magnific Popup CSS */ .mfp-bg { top: 0; left: 0; width: 100%; height: 100%; z-index: 1042; overflow: hidden; position: fixed; background: #0b0b0b; opacity: 0.8; filter: alpha(opacity=80); } .mfp-wrap { top: 0; left: 0; width: 100%; height: 100%; z-index: 1043; position: fixed; outline: none !important; -webkit-backface-visibility: hidden; } .mfp-container { text-align: center; position: absolute; width: 100%; height: 100%; left: 0; top: 0; padding: 0 8px; box-sizing: border-box; } .mfp-container:before { content: ''; display: inline-block; height: 100%; vertical-align: middle; } .mfp-align-top .mfp-container:before { display: none; } .mfp-content { position: relative; display: inline-block; vertical-align: middle; margin: 0 auto; text-align: left; z-index: 1045; } .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { width: 100%; cursor: auto; } .mfp-ajax-cur { cursor: progress; } .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { cursor: -webkit-zoom-out; cursor: zoom-out; } .mfp-zoom { cursor: pointer; cursor: -webkit-zoom-in; cursor: zoom-in; } .mfp-auto-cursor .mfp-content { cursor: auto; } .mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .mfp-loading.mfp-figure { display: none; } .mfp-hide { display: none !important; } .mfp-preloader { color: #CCC; position: absolute; top: 50%; width: auto; text-align: center; margin-top: -0.8em; left: 8px; right: 8px; z-index: 1044; } .mfp-preloader a { color: #CCC; } .mfp-preloader a:hover { color: #FFF; } .mfp-s-ready .mfp-preloader { display: none; } .mfp-s-error .mfp-content { display: none; } button.mfp-close, button.mfp-arrow { overflow: visible; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; display: block; outline: none; padding: 0; z-index: 1046; box-shadow: none; } button::-moz-focus-inner { padding: 0; border: 0; } .mfp-close { width: 44px; height: 44px; line-height: 44px; position: absolute; right: 0; top: 0; text-decoration: none; text-align: center; opacity: 0.65; filter: alpha(opacity=65); padding: 0 0 18px 10px; color: #FFF; font-style: normal; font-size: 28px; font-family: Arial, Baskerville, monospace; } .mfp-close:hover, .mfp-close:focus { opacity: 1; filter: alpha(opacity=100); } .mfp-close:active { top: 1px; } .mfp-close-btn-in .mfp-close { color: #333; } .mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close { color: #FFF; right: -6px; text-align: right; padding-right: 6px; width: 100%; } .mfp-counter { position: absolute; top: 0; right: 0; color: #CCC; font-size: 12px; line-height: 18px; white-space: nowrap; } .mfp-arrow { position: absolute; opacity: 0.65; filter: alpha(opacity=65); margin: 0; top: 50%; margin-top: -55px; padding: 0; width: 90px; height: 110px; -webkit-tap-highlight-color: transparent; } .mfp-arrow:active { margin-top: -54px; } .mfp-arrow:hover, .mfp-arrow:focus { opacity: 1; filter: alpha(opacity=100); } .mfp-arrow:before, .mfp-arrow:after, .mfp-arrow .mfp-b, .mfp-arrow .mfp-a { content: ''; display: block; width: 0; height: 0; position: absolute; left: 0; top: 0; margin-top: 35px; margin-left: 35px; border: medium inset transparent; } .mfp-arrow:after, .mfp-arrow .mfp-a { border-top-width: 13px; border-bottom-width: 13px; top: 8px; } .mfp-arrow:before, .mfp-arrow .mfp-b { border-top-width: 21px; border-bottom-width: 21px; opacity: 0.7; } .mfp-arrow-left { left: 0; } .mfp-arrow-left:after, .mfp-arrow-left .mfp-a { border-right: 17px solid #FFF; margin-left: 31px; } .mfp-arrow-left:before, .mfp-arrow-left .mfp-b { margin-left: 25px; border-right: 27px solid #3F3F3F; } .mfp-arrow-right { right: 0; } .mfp-arrow-right:after, .mfp-arrow-right .mfp-a { border-left: 17px solid #FFF; margin-left: 39px; } .mfp-arrow-right:before, .mfp-arrow-right .mfp-b { border-left: 27px solid #3F3F3F; } .mfp-iframe-holder { padding-top: 40px; padding-bottom: 40px; } .mfp-iframe-holder .mfp-content { line-height: 0; width: 100%; max-width: 900px; } .mfp-iframe-holder .mfp-close { top: -40px; } .mfp-iframe-scaler { width: 100%; height: 0; overflow: hidden; padding-top: 56.25%; } .mfp-iframe-scaler iframe { position: absolute; display: block; top: 0; left: 0; width: 100%; height: 100%; box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); background: #000; } /* Main image in popup */ img.mfp-img { width: auto; max-width: 100%; height: auto; display: block; line-height: 0; box-sizing: border-box; padding: 40px 0 40px; margin: 0 auto; } /* The shadow behind the image */ .mfp-figure { line-height: 0; } .mfp-figure:after { content: ''; position: absolute; left: 0; top: 40px; bottom: 40px; display: block; right: 0; width: auto; height: auto; z-index: -1; box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); background: #444; } .mfp-figure small { color: #BDBDBD; display: block; font-size: 12px; line-height: 14px; } .mfp-figure figure { margin: 0; } .mfp-bottom-bar { margin-top: -36px; position: absolute; top: 100%; left: 0; width: 100%; cursor: auto; } .mfp-title { text-align: left; line-height: 18px; color: #F3F3F3; word-wrap: break-word; padding-right: 36px; } .mfp-image-holder .mfp-content { max-width: 100%; } .mfp-gallery .mfp-image-holder .mfp-figure { cursor: pointer; } @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { /** * Remove all paddings around the image on small screen */ .mfp-img-mobile .mfp-image-holder { padding-left: 0; padding-right: 0; } .mfp-img-mobile img.mfp-img { padding: 0; } .mfp-img-mobile .mfp-figure:after { top: 0; bottom: 0; } .mfp-img-mobile .mfp-figure small { display: inline; margin-left: 5px; } .mfp-img-mobile .mfp-bottom-bar { background: rgba(0, 0, 0, 0.6); bottom: 0; margin: 0; top: auto; padding: 3px 5px; position: fixed; box-sizing: border-box; } .mfp-img-mobile .mfp-bottom-bar:empty { padding: 0; } .mfp-img-mobile .mfp-counter { right: 5px; top: 3px; } .mfp-img-mobile .mfp-close { top: 0; right: 0; width: 35px; height: 35px; line-height: 35px; background: rgba(0, 0, 0, 0.6); position: fixed; text-align: center; padding: 0; } } @media all and (max-width: 900px) { .mfp-arrow { -webkit-transform: scale(0.75); -ms-transform: scale(0.75); transform: scale(0.75); } .mfp-arrow-left { -webkit-transform-origin: 0; -ms-transform-origin: 0; transform-origin: 0; } .mfp-arrow-right { -webkit-transform-origin: 100%; -ms-transform-origin: 100%; transform-origin: 100%; } .mfp-container { padding-left: 6px; padding-right: 6px; } } .mfp-ie7 .mfp-img { padding: 0; } .mfp-ie7 .mfp-bottom-bar { width: 600px; left: 50%; margin-left: -300px; margin-top: 5px; padding-bottom: 5px; } .mfp-ie7 .mfp-container { padding: 0; } .mfp-ie7 .mfp-content { padding-top: 44px; } .mfp-ie7 .mfp-close { top: 0; right: 0; padding-top: 0; } .emojione { /* Emoji Sizing */ font-size: inherit; height: 3ex; width: 3.1ex; min-height: 20px; min-width: 20px; /* Inline alignment adjust the margins */ display: inline-block; margin: -0.2ex 0.15em 0.2ex; line-height: normal; vertical-align: middle; } img.emojione { /* prevent img stretch */ width: auto; } /* BEGIN: bootstrap */ @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } #jsxc_dialog .progress { overflow: hidden; height: 20px; margin-bottom: 20px; background-color: #f5f5f5; border-radius: 4px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } #jsxc_dialog .progress-bar { float: left; width: 0%; height: 100%; font-size: 12px; line-height: 20px; color: #fff; text-align: center; background-color: #337ab7; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-transition: width 0.6s ease; transition: width 0.6s ease; } #jsxc_dialog .progress-striped .progress-bar, #jsxc_dialog .progress-bar-striped { 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: 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-size: 40px 40px; } #jsxc_dialog .progress.active .progress-bar, #jsxc_dialog .progress-bar.active { -webkit-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } #jsxc_dialog .progress-bar-success { background-color: #5cb85c; } .progress-striped #jsxc_dialog .progress-bar-success { 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: 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); } #jsxc_dialog .progress-bar-info { background-color: #5bc0de; } .progress-striped #jsxc_dialog .progress-bar-info { 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: 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); } #jsxc_dialog .progress-bar-warning { background-color: #f0ad4e; } .progress-striped #jsxc_dialog .progress-bar-warning { 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: 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); } #jsxc_dialog .progress-bar-danger { background-color: #d9534f; } .progress-striped #jsxc_dialog .progress-bar-danger { 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: 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); } #jsxc_dialog .clearfix:before, #jsxc_dialog .clearfix:after, #jsxc_webrtc .clearfix:before, #jsxc_webrtc .clearfix:after { content: " "; display: table; } #jsxc_dialog .clearfix:after, #jsxc_webrtc .clearfix:after { clear: both; } #jsxc_dialog .center-block, #jsxc_webrtc .center-block { display: block; margin-left: auto; margin-right: auto; } #jsxc_dialog .pull-right, #jsxc_webrtc .pull-right { float: right !important; } #jsxc_dialog .pull-left, #jsxc_webrtc .pull-left { float: left !important; } #jsxc_dialog .hide, #jsxc_webrtc .hide { display: none !important; } #jsxc_dialog .show, #jsxc_webrtc .show { display: block !important; } #jsxc_dialog .invisible, #jsxc_webrtc .invisible { visibility: hidden; } #jsxc_dialog .text-hide, #jsxc_webrtc .text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } #jsxc_dialog .hidden, #jsxc_webrtc .hidden { display: none !important; } #jsxc_dialog .affix, #jsxc_webrtc .affix { position: fixed; } #jsxc_dialog code, #jsxc_dialog kbd, #jsxc_dialog pre, #jsxc_dialog samp, #jsxc_webrtc code, #jsxc_webrtc kbd, #jsxc_webrtc pre, #jsxc_webrtc samp { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; } #jsxc_dialog code, #jsxc_webrtc code { padding: 2px 4px; font-size: 90%; color: #c7254e; background-color: #f9f2f4; border-radius: 4px; } #jsxc_dialog kbd, #jsxc_webrtc kbd { padding: 2px 4px; font-size: 90%; color: #fff; background-color: #333; border-radius: 3px; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); } #jsxc_dialog kbd kbd, #jsxc_webrtc kbd kbd { padding: 0; font-size: 100%; font-weight: bold; box-shadow: none; } #jsxc_dialog pre, #jsxc_webrtc pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 1.428571429; word-break: break-all; word-wrap: break-word; color: #333333; background-color: #f5f5f5; border: 1px solid #ccc; border-radius: 4px; } #jsxc_dialog pre code, #jsxc_webrtc pre code { padding: 0; font-size: inherit; color: inherit; white-space: pre-wrap; background-color: transparent; border-radius: 0; } #jsxc_dialog .pre-scrollable, #jsxc_webrtc .pre-scrollable { max-height: 340px; overflow-y: scroll; } #jsxc_dialog .container, #jsxc_webrtc .container { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px; } #jsxc_dialog .container:before, #jsxc_dialog .container:after, #jsxc_webrtc .container:before, #jsxc_webrtc .container:after { content: " "; display: table; } #jsxc_dialog .container:after, #jsxc_webrtc .container:after { clear: both; } @media (min-width: 768px) { #jsxc_dialog .container, #jsxc_webrtc .container { width: 750px; } } @media (min-width: 992px) { #jsxc_dialog .container, #jsxc_webrtc .container { width: 970px; } } @media (min-width: 1200px) { #jsxc_dialog .container, #jsxc_webrtc .container { width: 1170px; } } #jsxc_dialog .container-fluid, #jsxc_webrtc .container-fluid { margin-right: auto; margin-left: auto; padding-left: 15px; padding-right: 15px; } #jsxc_dialog .container-fluid:before, #jsxc_dialog .container-fluid:after, #jsxc_webrtc .container-fluid:before, #jsxc_webrtc .container-fluid:after { content: " "; display: table; } #jsxc_dialog .container-fluid:after, #jsxc_webrtc .container-fluid:after { clear: both; } #jsxc_dialog .row, #jsxc_webrtc .row { margin-left: -15px; margin-right: -15px; } #jsxc_dialog .row:before, #jsxc_dialog .row:after, #jsxc_webrtc .row:before, #jsxc_webrtc .row:after { content: " "; display: table; } #jsxc_dialog .row:after, #jsxc_webrtc .row:after { clear: both; } #jsxc_dialog .col-xs-1, #jsxc_dialog .col-sm-1, #jsxc_dialog .col-md-1, #jsxc_dialog .col-lg-1, #jsxc_dialog .col-xs-2, #jsxc_dialog .col-sm-2, #jsxc_dialog .col-md-2, #jsxc_dialog .col-lg-2, #jsxc_dialog .col-xs-3, #jsxc_dialog .col-sm-3, #jsxc_dialog .col-md-3, #jsxc_dialog .col-lg-3, #jsxc_dialog .col-xs-4, #jsxc_dialog .col-sm-4, #jsxc_dialog .col-md-4, #jsxc_dialog .col-lg-4, #jsxc_dialog .col-xs-5, #jsxc_dialog .col-sm-5, #jsxc_dialog .col-md-5, #jsxc_dialog .col-lg-5, #jsxc_dialog .col-xs-6, #jsxc_dialog .col-sm-6, #jsxc_dialog .col-md-6, #jsxc_dialog .col-lg-6, #jsxc_dialog .col-xs-7, #jsxc_dialog .col-sm-7, #jsxc_dialog .col-md-7, #jsxc_dialog .col-lg-7, #jsxc_dialog .col-xs-8, #jsxc_dialog .col-sm-8, #jsxc_dialog .col-md-8, #jsxc_dialog .col-lg-8, #jsxc_dialog .col-xs-9, #jsxc_dialog .col-sm-9, #jsxc_dialog .col-md-9, #jsxc_dialog .col-lg-9, #jsxc_dialog .col-xs-10, #jsxc_dialog .col-sm-10, #jsxc_dialog .col-md-10, #jsxc_dialog .col-lg-10, #jsxc_dialog .col-xs-11, #jsxc_dialog .col-sm-11, #jsxc_dialog .col-md-11, #jsxc_dialog .col-lg-11, #jsxc_dialog .col-xs-12, #jsxc_dialog .col-sm-12, #jsxc_dialog .col-md-12, #jsxc_dialog .col-lg-12, #jsxc_webrtc .col-xs-1, #jsxc_webrtc .col-sm-1, #jsxc_webrtc .col-md-1, #jsxc_webrtc .col-lg-1, #jsxc_webrtc .col-xs-2, #jsxc_webrtc .col-sm-2, #jsxc_webrtc .col-md-2, #jsxc_webrtc .col-lg-2, #jsxc_webrtc .col-xs-3, #jsxc_webrtc .col-sm-3, #jsxc_webrtc .col-md-3, #jsxc_webrtc .col-lg-3, #jsxc_webrtc .col-xs-4, #jsxc_webrtc .col-sm-4, #jsxc_webrtc .col-md-4, #jsxc_webrtc .col-lg-4, #jsxc_webrtc .col-xs-5, #jsxc_webrtc .col-sm-5, #jsxc_webrtc .col-md-5, #jsxc_webrtc .col-lg-5, #jsxc_webrtc .col-xs-6, #jsxc_webrtc .col-sm-6, #jsxc_webrtc .col-md-6, #jsxc_webrtc .col-lg-6, #jsxc_webrtc .col-xs-7, #jsxc_webrtc .col-sm-7, #jsxc_webrtc .col-md-7, #jsxc_webrtc .col-lg-7, #jsxc_webrtc .col-xs-8, #jsxc_webrtc .col-sm-8, #jsxc_webrtc .col-md-8, #jsxc_webrtc .col-lg-8, #jsxc_webrtc .col-xs-9, #jsxc_webrtc .col-sm-9, #jsxc_webrtc .col-md-9, #jsxc_webrtc .col-lg-9, #jsxc_webrtc .col-xs-10, #jsxc_webrtc .col-sm-10, #jsxc_webrtc .col-md-10, #jsxc_webrtc .col-lg-10, #jsxc_webrtc .col-xs-11, #jsxc_webrtc .col-sm-11, #jsxc_webrtc .col-md-11, #jsxc_webrtc .col-lg-11, #jsxc_webrtc .col-xs-12, #jsxc_webrtc .col-sm-12, #jsxc_webrtc .col-md-12, #jsxc_webrtc .col-lg-12 { position: relative; min-height: 1px; padding-left: 15px; padding-right: 15px; } #jsxc_dialog .col-xs-1, #jsxc_dialog .col-xs-2, #jsxc_dialog .col-xs-3, #jsxc_dialog .col-xs-4, #jsxc_dialog .col-xs-5, #jsxc_dialog .col-xs-6, #jsxc_dialog .col-xs-7, #jsxc_dialog .col-xs-8, #jsxc_dialog .col-xs-9, #jsxc_dialog .col-xs-10, #jsxc_dialog .col-xs-11, #jsxc_dialog .col-xs-12, #jsxc_webrtc .col-xs-1, #jsxc_webrtc .col-xs-2, #jsxc_webrtc .col-xs-3, #jsxc_webrtc .col-xs-4, #jsxc_webrtc .col-xs-5, #jsxc_webrtc .col-xs-6, #jsxc_webrtc .col-xs-7, #jsxc_webrtc .col-xs-8, #jsxc_webrtc .col-xs-9, #jsxc_webrtc .col-xs-10, #jsxc_webrtc .col-xs-11, #jsxc_webrtc .col-xs-12 { float: left; } #jsxc_dialog .col-xs-1, #jsxc_webrtc .col-xs-1 { width: 8.3333333333%; } #jsxc_dialog .col-xs-2, #jsxc_webrtc .col-xs-2 { width: 16.6666666667%; } #jsxc_dialog .col-xs-3, #jsxc_webrtc .col-xs-3 { width: 25%; } #jsxc_dialog .col-xs-4, #jsxc_webrtc .col-xs-4 { width: 33.3333333333%; } #jsxc_dialog .col-xs-5, #jsxc_webrtc .col-xs-5 { width: 41.6666666667%; } #jsxc_dialog .col-xs-6, #jsxc_webrtc .col-xs-6 { width: 50%; } #jsxc_dialog .col-xs-7, #jsxc_webrtc .col-xs-7 { width: 58.3333333333%; } #jsxc_dialog .col-xs-8, #jsxc_webrtc .col-xs-8 { width: 66.6666666667%; } #jsxc_dialog .col-xs-9, #jsxc_webrtc .col-xs-9 { width: 75%; } #jsxc_dialog .col-xs-10, #jsxc_webrtc .col-xs-10 { width: 83.3333333333%; } #jsxc_dialog .col-xs-11, #jsxc_webrtc .col-xs-11 { width: 91.6666666667%; } #jsxc_dialog .col-xs-12, #jsxc_webrtc .col-xs-12 { width: 100%; } #jsxc_dialog .col-xs-pull-0, #jsxc_webrtc .col-xs-pull-0 { right: auto; } #jsxc_dialog .col-xs-pull-1, #jsxc_webrtc .col-xs-pull-1 { right: 8.3333333333%; } #jsxc_dialog .col-xs-pull-2, #jsxc_webrtc .col-xs-pull-2 { right: 16.6666666667%; } #jsxc_dialog .col-xs-pull-3, #jsxc_webrtc .col-xs-pull-3 { right: 25%; } #jsxc_dialog .col-xs-pull-4, #jsxc_webrtc .col-xs-pull-4 { right: 33.3333333333%; } #jsxc_dialog .col-xs-pull-5, #jsxc_webrtc .col-xs-pull-5 { right: 41.6666666667%; } #jsxc_dialog .col-xs-pull-6, #jsxc_webrtc .col-xs-pull-6 { right: 50%; } #jsxc_dialog .col-xs-pull-7, #jsxc_webrtc .col-xs-pull-7 { right: 58.3333333333%; } #jsxc_dialog .col-xs-pull-8, #jsxc_webrtc .col-xs-pull-8 { right: 66.6666666667%; } #jsxc_dialog .col-xs-pull-9, #jsxc_webrtc .col-xs-pull-9 { right: 75%; } #jsxc_dialog .col-xs-pull-10, #jsxc_webrtc .col-xs-pull-10 { right: 83.3333333333%; } #jsxc_dialog .col-xs-pull-11, #jsxc_webrtc .col-xs-pull-11 { right: 91.6666666667%; } #jsxc_dialog .col-xs-pull-12, #jsxc_webrtc .col-xs-pull-12 { right: 100%; } #jsxc_dialog .col-xs-push-0, #jsxc_webrtc .col-xs-push-0 { left: auto; } #jsxc_dialog .col-xs-push-1, #jsxc_webrtc .col-xs-push-1 { left: 8.3333333333%; } #jsxc_dialog .col-xs-push-2, #jsxc_webrtc .col-xs-push-2 { left: 16.6666666667%; } #jsxc_dialog .col-xs-push-3, #jsxc_webrtc .col-xs-push-3 { left: 25%; } #jsxc_dialog .col-xs-push-4, #jsxc_webrtc .col-xs-push-4 { left: 33.3333333333%; } #jsxc_dialog .col-xs-push-5, #jsxc_webrtc .col-xs-push-5 { left: 41.6666666667%; } #jsxc_dialog .col-xs-push-6, #jsxc_webrtc .col-xs-push-6 { left: 50%; } #jsxc_dialog .col-xs-push-7, #jsxc_webrtc .col-xs-push-7 { left: 58.3333333333%; } #jsxc_dialog .col-xs-push-8, #jsxc_webrtc .col-xs-push-8 { left: 66.6666666667%; } #jsxc_dialog .col-xs-push-9, #jsxc_webrtc .col-xs-push-9 { left: 75%; } #jsxc_dialog .col-xs-push-10, #jsxc_webrtc .col-xs-push-10 { left: 83.3333333333%; } #jsxc_dialog .col-xs-push-11, #jsxc_webrtc .col-xs-push-11 { left: 91.6666666667%; } #jsxc_dialog .col-xs-push-12, #jsxc_webrtc .col-xs-push-12 { left: 100%; } #jsxc_dialog .col-xs-offset-0, #jsxc_webrtc .col-xs-offset-0 { margin-left: 0%; } #jsxc_dialog .col-xs-offset-1, #jsxc_webrtc .col-xs-offset-1 { margin-left: 8.3333333333%; } #jsxc_dialog .col-xs-offset-2, #jsxc_webrtc .col-xs-offset-2 { margin-left: 16.6666666667%; } #jsxc_dialog .col-xs-offset-3, #jsxc_webrtc .col-xs-offset-3 { margin-left: 25%; } #jsxc_dialog .col-xs-offset-4, #jsxc_webrtc .col-xs-offset-4 { margin-left: 33.3333333333%; } #jsxc_dialog .col-xs-offset-5, #jsxc_webrtc .col-xs-offset-5 { margin-left: 41.6666666667%; } #jsxc_dialog .col-xs-offset-6, #jsxc_webrtc .col-xs-offset-6 { margin-left: 50%; } #jsxc_dialog .col-xs-offset-7, #jsxc_webrtc .col-xs-offset-7 { margin-left: 58.3333333333%; } #jsxc_dialog .col-xs-offset-8, #jsxc_webrtc .col-xs-offset-8 { margin-left: 66.6666666667%; } #jsxc_dialog .col-xs-offset-9, #jsxc_webrtc .col-xs-offset-9 { margin-left: 75%; } #jsxc_dialog .col-xs-offset-10, #jsxc_webrtc .col-xs-offset-10 { margin-left: 83.3333333333%; } #jsxc_dialog .col-xs-offset-11, #jsxc_webrtc .col-xs-offset-11 { margin-left: 91.6666666667%; } #jsxc_dialog .col-xs-offset-12, #jsxc_webrtc .col-xs-offset-12 { margin-left: 100%; } @media (min-width: 768px) { #jsxc_dialog .col-sm-1, #jsxc_dialog .col-sm-2, #jsxc_dialog .col-sm-3, #jsxc_dialog .col-sm-4, #jsxc_dialog .col-sm-5, #jsxc_dialog .col-sm-6, #jsxc_dialog .col-sm-7, #jsxc_dialog .col-sm-8, #jsxc_dialog .col-sm-9, #jsxc_dialog .col-sm-10, #jsxc_dialog .col-sm-11, #jsxc_dialog .col-sm-12, #jsxc_webrtc .col-sm-1, #jsxc_webrtc .col-sm-2, #jsxc_webrtc .col-sm-3, #jsxc_webrtc .col-sm-4, #jsxc_webrtc .col-sm-5, #jsxc_webrtc .col-sm-6, #jsxc_webrtc .col-sm-7, #jsxc_webrtc .col-sm-8, #jsxc_webrtc .col-sm-9, #jsxc_webrtc .col-sm-10, #jsxc_webrtc .col-sm-11, #jsxc_webrtc .col-sm-12 { float: left; } #jsxc_dialog .col-sm-1, #jsxc_webrtc .col-sm-1 { width: 8.3333333333%; } #jsxc_dialog .col-sm-2, #jsxc_webrtc .col-sm-2 { width: 16.6666666667%; } #jsxc_dialog .col-sm-3, #jsxc_webrtc .col-sm-3 { width: 25%; } #jsxc_dialog .col-sm-4, #jsxc_webrtc .col-sm-4 { width: 33.3333333333%; } #jsxc_dialog .col-sm-5, #jsxc_webrtc .col-sm-5 { width: 41.6666666667%; } #jsxc_dialog .col-sm-6, #jsxc_webrtc .col-sm-6 { width: 50%; } #jsxc_dialog .col-sm-7, #jsxc_webrtc .col-sm-7 { width: 58.3333333333%; } #jsxc_dialog .col-sm-8, #jsxc_webrtc .col-sm-8 { width: 66.6666666667%; } #jsxc_dialog .col-sm-9, #jsxc_webrtc .col-sm-9 { width: 75%; } #jsxc_dialog .col-sm-10, #jsxc_webrtc .col-sm-10 { width: 83.3333333333%; } #jsxc_dialog .col-sm-11, #jsxc_webrtc .col-sm-11 { width: 91.6666666667%; } #jsxc_dialog .col-sm-12, #jsxc_webrtc .col-sm-12 { width: 100%; } #jsxc_dialog .col-sm-pull-0, #jsxc_webrtc .col-sm-pull-0 { right: auto; } #jsxc_dialog .col-sm-pull-1, #jsxc_webrtc .col-sm-pull-1 { right: 8.3333333333%; } #jsxc_dialog .col-sm-pull-2, #jsxc_webrtc .col-sm-pull-2 { right: 16.6666666667%; } #jsxc_dialog .col-sm-pull-3, #jsxc_webrtc .col-sm-pull-3 { right: 25%; } #jsxc_dialog .col-sm-pull-4, #jsxc_webrtc .col-sm-pull-4 { right: 33.3333333333%; } #jsxc_dialog .col-sm-pull-5, #jsxc_webrtc .col-sm-pull-5 { right: 41.6666666667%; } #jsxc_dialog .col-sm-pull-6, #jsxc_webrtc .col-sm-pull-6 { right: 50%; } #jsxc_dialog .col-sm-pull-7, #jsxc_webrtc .col-sm-pull-7 { right: 58.3333333333%; } #jsxc_dialog .col-sm-pull-8, #jsxc_webrtc .col-sm-pull-8 { right: 66.6666666667%; } #jsxc_dialog .col-sm-pull-9, #jsxc_webrtc .col-sm-pull-9 { right: 75%; } #jsxc_dialog .col-sm-pull-10, #jsxc_webrtc .col-sm-pull-10 { right: 83.3333333333%; } #jsxc_dialog .col-sm-pull-11, #jsxc_webrtc .col-sm-pull-11 { right: 91.6666666667%; } #jsxc_dialog .col-sm-pull-12, #jsxc_webrtc .col-sm-pull-12 { right: 100%; } #jsxc_dialog .col-sm-push-0, #jsxc_webrtc .col-sm-push-0 { left: auto; } #jsxc_dialog .col-sm-push-1, #jsxc_webrtc .col-sm-push-1 { left: 8.3333333333%; } #jsxc_dialog .col-sm-push-2, #jsxc_webrtc .col-sm-push-2 { left: 16.6666666667%; } #jsxc_dialog .col-sm-push-3, #jsxc_webrtc .col-sm-push-3 { left: 25%; } #jsxc_dialog .col-sm-push-4, #jsxc_webrtc .col-sm-push-4 { left: 33.3333333333%; } #jsxc_dialog .col-sm-push-5, #jsxc_webrtc .col-sm-push-5 { left: 41.6666666667%; } #jsxc_dialog .col-sm-push-6, #jsxc_webrtc .col-sm-push-6 { left: 50%; } #jsxc_dialog .col-sm-push-7, #jsxc_webrtc .col-sm-push-7 { left: 58.3333333333%; } #jsxc_dialog .col-sm-push-8, #jsxc_webrtc .col-sm-push-8 { left: 66.6666666667%; } #jsxc_dialog .col-sm-push-9, #jsxc_webrtc .col-sm-push-9 { left: 75%; } #jsxc_dialog .col-sm-push-10, #jsxc_webrtc .col-sm-push-10 { left: 83.3333333333%; } #jsxc_dialog .col-sm-push-11, #jsxc_webrtc .col-sm-push-11 { left: 91.6666666667%; } #jsxc_dialog .col-sm-push-12, #jsxc_webrtc .col-sm-push-12 { left: 100%; } #jsxc_dialog .col-sm-offset-0, #jsxc_webrtc .col-sm-offset-0 { margin-left: 0%; } #jsxc_dialog .col-sm-offset-1, #jsxc_webrtc .col-sm-offset-1 { margin-left: 8.3333333333%; } #jsxc_dialog .col-sm-offset-2, #jsxc_webrtc .col-sm-offset-2 { margin-left: 16.6666666667%; } #jsxc_dialog .col-sm-offset-3, #jsxc_webrtc .col-sm-offset-3 { margin-left: 25%; } #jsxc_dialog .col-sm-offset-4, #jsxc_webrtc .col-sm-offset-4 { margin-left: 33.3333333333%; } #jsxc_dialog .col-sm-offset-5, #jsxc_webrtc .col-sm-offset-5 { margin-left: 41.6666666667%; } #jsxc_dialog .col-sm-offset-6, #jsxc_webrtc .col-sm-offset-6 { margin-left: 50%; } #jsxc_dialog .col-sm-offset-7, #jsxc_webrtc .col-sm-offset-7 { margin-left: 58.3333333333%; } #jsxc_dialog .col-sm-offset-8, #jsxc_webrtc .col-sm-offset-8 { margin-left: 66.6666666667%; } #jsxc_dialog .col-sm-offset-9, #jsxc_webrtc .col-sm-offset-9 { margin-left: 75%; } #jsxc_dialog .col-sm-offset-10, #jsxc_webrtc .col-sm-offset-10 { margin-left: 83.3333333333%; } #jsxc_dialog .col-sm-offset-11, #jsxc_webrtc .col-sm-offset-11 { margin-left: 91.6666666667%; } #jsxc_dialog .col-sm-offset-12, #jsxc_webrtc .col-sm-offset-12 { margin-left: 100%; } } @media (min-width: 992px) { #jsxc_dialog .col-md-1, #jsxc_dialog .col-md-2, #jsxc_dialog .col-md-3, #jsxc_dialog .col-md-4, #jsxc_dialog .col-md-5, #jsxc_dialog .col-md-6, #jsxc_dialog .col-md-7, #jsxc_dialog .col-md-8, #jsxc_dialog .col-md-9, #jsxc_dialog .col-md-10, #jsxc_dialog .col-md-11, #jsxc_dialog .col-md-12, #jsxc_webrtc .col-md-1, #jsxc_webrtc .col-md-2, #jsxc_webrtc .col-md-3, #jsxc_webrtc .col-md-4, #jsxc_webrtc .col-md-5, #jsxc_webrtc .col-md-6, #jsxc_webrtc .col-md-7, #jsxc_webrtc .col-md-8, #jsxc_webrtc .col-md-9, #jsxc_webrtc .col-md-10, #jsxc_webrtc .col-md-11, #jsxc_webrtc .col-md-12 { float: left; } #jsxc_dialog .col-md-1, #jsxc_webrtc .col-md-1 { width: 8.3333333333%; } #jsxc_dialog .col-md-2, #jsxc_webrtc .col-md-2 { width: 16.6666666667%; } #jsxc_dialog .col-md-3, #jsxc_webrtc .col-md-3 { width: 25%; } #jsxc_dialog .col-md-4, #jsxc_webrtc .col-md-4 { width: 33.3333333333%; } #jsxc_dialog .col-md-5, #jsxc_webrtc .col-md-5 { width: 41.6666666667%; } #jsxc_dialog .col-md-6, #jsxc_webrtc .col-md-6 { width: 50%; } #jsxc_dialog .col-md-7, #jsxc_webrtc .col-md-7 { width: 58.3333333333%; } #jsxc_dialog .col-md-8, #jsxc_webrtc .col-md-8 { width: 66.6666666667%; } #jsxc_dialog .col-md-9, #jsxc_webrtc .col-md-9 { width: 75%; } #jsxc_dialog .col-md-10, #jsxc_webrtc .col-md-10 { width: 83.3333333333%; } #jsxc_dialog .col-md-11, #jsxc_webrtc .col-md-11 { width: 91.6666666667%; } #jsxc_dialog .col-md-12, #jsxc_webrtc .col-md-12 { width: 100%; } #jsxc_dialog .col-md-pull-0, #jsxc_webrtc .col-md-pull-0 { right: auto; } #jsxc_dialog .col-md-pull-1, #jsxc_webrtc .col-md-pull-1 { right: 8.3333333333%; } #jsxc_dialog .col-md-pull-2, #jsxc_webrtc .col-md-pull-2 { right: 16.6666666667%; } #jsxc_dialog .col-md-pull-3, #jsxc_webrtc .col-md-pull-3 { right: 25%; } #jsxc_dialog .col-md-pull-4, #jsxc_webrtc .col-md-pull-4 { right: 33.3333333333%; } #jsxc_dialog .col-md-pull-5, #jsxc_webrtc .col-md-pull-5 { right: 41.6666666667%; } #jsxc_dialog .col-md-pull-6, #jsxc_webrtc .col-md-pull-6 { right: 50%; } #jsxc_dialog .col-md-pull-7, #jsxc_webrtc .col-md-pull-7 { right: 58.3333333333%; } #jsxc_dialog .col-md-pull-8, #jsxc_webrtc .col-md-pull-8 { right: 66.6666666667%; } #jsxc_dialog .col-md-pull-9, #jsxc_webrtc .col-md-pull-9 { right: 75%; } #jsxc_dialog .col-md-pull-10, #jsxc_webrtc .col-md-pull-10 { right: 83.3333333333%; } #jsxc_dialog .col-md-pull-11, #jsxc_webrtc .col-md-pull-11 { right: 91.6666666667%; } #jsxc_dialog .col-md-pull-12, #jsxc_webrtc .col-md-pull-12 { right: 100%; } #jsxc_dialog .col-md-push-0, #jsxc_webrtc .col-md-push-0 { left: auto; } #jsxc_dialog .col-md-push-1, #jsxc_webrtc .col-md-push-1 { left: 8.3333333333%; } #jsxc_dialog .col-md-push-2, #jsxc_webrtc .col-md-push-2 { left: 16.6666666667%; } #jsxc_dialog .col-md-push-3, #jsxc_webrtc .col-md-push-3 { left: 25%; } #jsxc_dialog .col-md-push-4, #jsxc_webrtc .col-md-push-4 { left: 33.3333333333%; } #jsxc_dialog .col-md-push-5, #jsxc_webrtc .col-md-push-5 { left: 41.6666666667%; } #jsxc_dialog .col-md-push-6, #jsxc_webrtc .col-md-push-6 { left: 50%; } #jsxc_dialog .col-md-push-7, #jsxc_webrtc .col-md-push-7 { left: 58.3333333333%; } #jsxc_dialog .col-md-push-8, #jsxc_webrtc .col-md-push-8 { left: 66.6666666667%; } #jsxc_dialog .col-md-push-9, #jsxc_webrtc .col-md-push-9 { left: 75%; } #jsxc_dialog .col-md-push-10, #jsxc_webrtc .col-md-push-10 { left: 83.3333333333%; } #jsxc_dialog .col-md-push-11, #jsxc_webrtc .col-md-push-11 { left: 91.6666666667%; } #jsxc_dialog .col-md-push-12, #jsxc_webrtc .col-md-push-12 { left: 100%; } #jsxc_dialog .col-md-offset-0, #jsxc_webrtc .col-md-offset-0 { margin-left: 0%; } #jsxc_dialog .col-md-offset-1, #jsxc_webrtc .col-md-offset-1 { margin-left: 8.3333333333%; } #jsxc_dialog .col-md-offset-2, #jsxc_webrtc .col-md-offset-2 { margin-left: 16.6666666667%; } #jsxc_dialog .col-md-offset-3, #jsxc_webrtc .col-md-offset-3 { margin-left: 25%; } #jsxc_dialog .col-md-offset-4, #jsxc_webrtc .col-md-offset-4 { margin-left: 33.3333333333%; } #jsxc_dialog .col-md-offset-5, #jsxc_webrtc .col-md-offset-5 { margin-left: 41.6666666667%; } #jsxc_dialog .col-md-offset-6, #jsxc_webrtc .col-md-offset-6 { margin-left: 50%; } #jsxc_dialog .col-md-offset-7, #jsxc_webrtc .col-md-offset-7 { margin-left: 58.3333333333%; } #jsxc_dialog .col-md-offset-8, #jsxc_webrtc .col-md-offset-8 { margin-left: 66.6666666667%; } #jsxc_dialog .col-md-offset-9, #jsxc_webrtc .col-md-offset-9 { margin-left: 75%; } #jsxc_dialog .col-md-offset-10, #jsxc_webrtc .col-md-offset-10 { margin-left: 83.3333333333%; } #jsxc_dialog .col-md-offset-11, #jsxc_webrtc .col-md-offset-11 { margin-left: 91.6666666667%; } #jsxc_dialog .col-md-offset-12, #jsxc_webrtc .col-md-offset-12 { margin-left: 100%; } } @media (min-width: 1200px) { #jsxc_dialog .col-lg-1, #jsxc_dialog .col-lg-2, #jsxc_dialog .col-lg-3, #jsxc_dialog .col-lg-4, #jsxc_dialog .col-lg-5, #jsxc_dialog .col-lg-6, #jsxc_dialog .col-lg-7, #jsxc_dialog .col-lg-8, #jsxc_dialog .col-lg-9, #jsxc_dialog .col-lg-10, #jsxc_dialog .col-lg-11, #jsxc_dialog .col-lg-12, #jsxc_webrtc .col-lg-1, #jsxc_webrtc .col-lg-2, #jsxc_webrtc .col-lg-3, #jsxc_webrtc .col-lg-4, #jsxc_webrtc .col-lg-5, #jsxc_webrtc .col-lg-6, #jsxc_webrtc .col-lg-7, #jsxc_webrtc .col-lg-8, #jsxc_webrtc .col-lg-9, #jsxc_webrtc .col-lg-10, #jsxc_webrtc .col-lg-11, #jsxc_webrtc .col-lg-12 { float: left; } #jsxc_dialog .col-lg-1, #jsxc_webrtc .col-lg-1 { width: 8.3333333333%; } #jsxc_dialog .col-lg-2, #jsxc_webrtc .col-lg-2 { width: 16.6666666667%; } #jsxc_dialog .col-lg-3, #jsxc_webrtc .col-lg-3 { width: 25%; } #jsxc_dialog .col-lg-4, #jsxc_webrtc .col-lg-4 { width: 33.3333333333%; } #jsxc_dialog .col-lg-5, #jsxc_webrtc .col-lg-5 { width: 41.6666666667%; } #jsxc_dialog .col-lg-6, #jsxc_webrtc .col-lg-6 { width: 50%; } #jsxc_dialog .col-lg-7, #jsxc_webrtc .col-lg-7 { width: 58.3333333333%; } #jsxc_dialog .col-lg-8, #jsxc_webrtc .col-lg-8 { width: 66.6666666667%; } #jsxc_dialog .col-lg-9, #jsxc_webrtc .col-lg-9 { width: 75%; } #jsxc_dialog .col-lg-10, #jsxc_webrtc .col-lg-10 { width: 83.3333333333%; } #jsxc_dialog .col-lg-11, #jsxc_webrtc .col-lg-11 { width: 91.6666666667%; } #jsxc_dialog .col-lg-12, #jsxc_webrtc .col-lg-12 { width: 100%; } #jsxc_dialog .col-lg-pull-0, #jsxc_webrtc .col-lg-pull-0 { right: auto; } #jsxc_dialog .col-lg-pull-1, #jsxc_webrtc .col-lg-pull-1 { right: 8.3333333333%; } #jsxc_dialog .col-lg-pull-2, #jsxc_webrtc .col-lg-pull-2 { right: 16.6666666667%; } #jsxc_dialog .col-lg-pull-3, #jsxc_webrtc .col-lg-pull-3 { right: 25%; } #jsxc_dialog .col-lg-pull-4, #jsxc_webrtc .col-lg-pull-4 { right: 33.3333333333%; } #jsxc_dialog .col-lg-pull-5, #jsxc_webrtc .col-lg-pull-5 { right: 41.6666666667%; } #jsxc_dialog .col-lg-pull-6, #jsxc_webrtc .col-lg-pull-6 { right: 50%; } #jsxc_dialog .col-lg-pull-7, #jsxc_webrtc .col-lg-pull-7 { right: 58.3333333333%; } #jsxc_dialog .col-lg-pull-8, #jsxc_webrtc .col-lg-pull-8 { right: 66.6666666667%; } #jsxc_dialog .col-lg-pull-9, #jsxc_webrtc .col-lg-pull-9 { right: 75%; } #jsxc_dialog .col-lg-pull-10, #jsxc_webrtc .col-lg-pull-10 { right: 83.3333333333%; } #jsxc_dialog .col-lg-pull-11, #jsxc_webrtc .col-lg-pull-11 { right: 91.6666666667%; } #jsxc_dialog .col-lg-pull-12, #jsxc_webrtc .col-lg-pull-12 { right: 100%; } #jsxc_dialog .col-lg-push-0, #jsxc_webrtc .col-lg-push-0 { left: auto; } #jsxc_dialog .col-lg-push-1, #jsxc_webrtc .col-lg-push-1 { left: 8.3333333333%; } #jsxc_dialog .col-lg-push-2, #jsxc_webrtc .col-lg-push-2 { left: 16.6666666667%; } #jsxc_dialog .col-lg-push-3, #jsxc_webrtc .col-lg-push-3 { left: 25%; } #jsxc_dialog .col-lg-push-4, #jsxc_webrtc .col-lg-push-4 { left: 33.3333333333%; } #jsxc_dialog .col-lg-push-5, #jsxc_webrtc .col-lg-push-5 { left: 41.6666666667%; } #jsxc_dialog .col-lg-push-6, #jsxc_webrtc .col-lg-push-6 { left: 50%; } #jsxc_dialog .col-lg-push-7, #jsxc_webrtc .col-lg-push-7 { left: 58.3333333333%; } #jsxc_dialog .col-lg-push-8, #jsxc_webrtc .col-lg-push-8 { left: 66.6666666667%; } #jsxc_dialog .col-lg-push-9, #jsxc_webrtc .col-lg-push-9 { left: 75%; } #jsxc_dialog .col-lg-push-10, #jsxc_webrtc .col-lg-push-10 { left: 83.3333333333%; } #jsxc_dialog .col-lg-push-11, #jsxc_webrtc .col-lg-push-11 { left: 91.6666666667%; } #jsxc_dialog .col-lg-push-12, #jsxc_webrtc .col-lg-push-12 { left: 100%; } #jsxc_dialog .col-lg-offset-0, #jsxc_webrtc .col-lg-offset-0 { margin-left: 0%; } #jsxc_dialog .col-lg-offset-1, #jsxc_webrtc .col-lg-offset-1 { margin-left: 8.3333333333%; } #jsxc_dialog .col-lg-offset-2, #jsxc_webrtc .col-lg-offset-2 { margin-left: 16.6666666667%; } #jsxc_dialog .col-lg-offset-3, #jsxc_webrtc .col-lg-offset-3 { margin-left: 25%; } #jsxc_dialog .col-lg-offset-4, #jsxc_webrtc .col-lg-offset-4 { margin-left: 33.3333333333%; } #jsxc_dialog .col-lg-offset-5, #jsxc_webrtc .col-lg-offset-5 { margin-left: 41.6666666667%; } #jsxc_dialog .col-lg-offset-6, #jsxc_webrtc .col-lg-offset-6 { margin-left: 50%; } #jsxc_dialog .col-lg-offset-7, #jsxc_webrtc .col-lg-offset-7 { margin-left: 58.3333333333%; } #jsxc_dialog .col-lg-offset-8, #jsxc_webrtc .col-lg-offset-8 { margin-left: 66.6666666667%; } #jsxc_dialog .col-lg-offset-9, #jsxc_webrtc .col-lg-offset-9 { margin-left: 75%; } #jsxc_dialog .col-lg-offset-10, #jsxc_webrtc .col-lg-offset-10 { margin-left: 83.3333333333%; } #jsxc_dialog .col-lg-offset-11, #jsxc_webrtc .col-lg-offset-11 { margin-left: 91.6666666667%; } #jsxc_dialog .col-lg-offset-12, #jsxc_webrtc .col-lg-offset-12 { margin-left: 100%; } } #jsxc_dialog .alert, #jsxc_webrtc .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } #jsxc_dialog .alert h4, #jsxc_webrtc .alert h4 { margin-top: 0; color: inherit; } #jsxc_dialog .alert .alert-link, #jsxc_webrtc .alert .alert-link { font-weight: bold; } #jsxc_dialog .alert > p, #jsxc_dialog .alert > ul, #jsxc_webrtc .alert > p, #jsxc_webrtc .alert > ul { margin-bottom: 0; } #jsxc_dialog .alert > p + p, #jsxc_webrtc .alert > p + p { margin-top: 5px; } #jsxc_dialog .alert-dismissable, #jsxc_dialog .alert-dismissible, #jsxc_webrtc .alert-dismissable, #jsxc_webrtc .alert-dismissible { padding-right: 35px; } #jsxc_dialog .alert-dismissable .close, #jsxc_dialog .alert-dismissible .close, #jsxc_webrtc .alert-dismissable .close, #jsxc_webrtc .alert-dismissible .close { position: relative; top: -2px; right: -21px; color: inherit; } #jsxc_dialog .alert-success, #jsxc_webrtc .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #3c763d; } #jsxc_dialog .alert-success hr, #jsxc_webrtc .alert-success hr { border-top-color: #c9e2b3; } #jsxc_dialog .alert-success .alert-link, #jsxc_webrtc .alert-success .alert-link { color: #2b542c; } #jsxc_dialog .alert-info, #jsxc_webrtc .alert-info { background-color: #d9edf7; border-color: #bce8f1; color: #31708f; } #jsxc_dialog .alert-info hr, #jsxc_webrtc .alert-info hr { border-top-color: #a6e1ec; } #jsxc_dialog .alert-info .alert-link, #jsxc_webrtc .alert-info .alert-link { color: #245269; } #jsxc_dialog .alert-warning, #jsxc_webrtc .alert-warning { background-color: #fcf8e3; border-color: #faebcc; color: #8a6d3b; } #jsxc_dialog .alert-warning hr, #jsxc_webrtc .alert-warning hr { border-top-color: #f7e1b5; } #jsxc_dialog .alert-warning .alert-link, #jsxc_webrtc .alert-warning .alert-link { color: #66512c; } #jsxc_dialog .alert-danger, #jsxc_webrtc .alert-danger { background-color: #f2dede; border-color: #ebccd1; color: #a94442; } #jsxc_dialog .alert-danger hr, #jsxc_webrtc .alert-danger hr { border-top-color: #e4b9c0; } #jsxc_dialog .alert-danger .alert-link, #jsxc_webrtc .alert-danger .alert-link { color: #843534; } #jsxc_dialog .btn, #jsxc_webrtc .btn { display: inline-block; margin-bottom: 0; font-weight: normal; text-align: center; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; background-image: none; border: 1px solid transparent; white-space: nowrap; padding: 6px 12px; font-size: 14px; line-height: 1.428571429; border-radius: 4px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jsxc_dialog .btn:focus, #jsxc_dialog .btn.focus, #jsxc_dialog .btn:active:focus, #jsxc_dialog .btn:active.focus, #jsxc_dialog .btn.active:focus, #jsxc_dialog .btn.active.focus, #jsxc_webrtc .btn:focus, #jsxc_webrtc .btn.focus, #jsxc_webrtc .btn:active:focus, #jsxc_webrtc .btn:active.focus, #jsxc_webrtc .btn.active:focus, #jsxc_webrtc .btn.active.focus { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } #jsxc_dialog .btn:hover, #jsxc_dialog .btn:focus, #jsxc_dialog .btn.focus, #jsxc_webrtc .btn:hover, #jsxc_webrtc .btn:focus, #jsxc_webrtc .btn.focus { color: #333; text-decoration: none; } #jsxc_dialog .btn:active, #jsxc_dialog .btn.active, #jsxc_webrtc .btn:active, #jsxc_webrtc .btn.active { outline: 0; background-image: none; box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } #jsxc_dialog .btn.disabled, #jsxc_dialog .btn[disabled], fieldset[disabled] #jsxc_dialog .btn, #jsxc_webrtc .btn.disabled, #jsxc_webrtc .btn[disabled], fieldset[disabled] #jsxc_webrtc .btn { cursor: not-allowed; pointer-events: none; opacity: 0.65; filter: alpha(opacity=65); box-shadow: none; } #jsxc_dialog .btn-default, #jsxc_webrtc .btn-default { color: #333; background-color: #fff; border-color: #ccc; } #jsxc_dialog .btn-default:hover, #jsxc_dialog .btn-default:focus, #jsxc_dialog .btn-default.focus, #jsxc_dialog .btn-default:active, #jsxc_dialog .btn-default.active, .open > #jsxc_dialog .btn-default.dropdown-toggle, #jsxc_webrtc .btn-default:hover, #jsxc_webrtc .btn-default:focus, #jsxc_webrtc .btn-default.focus, #jsxc_webrtc .btn-default:active, #jsxc_webrtc .btn-default.active, .open > #jsxc_webrtc .btn-default.dropdown-toggle { color: #333; background-color: #e6e6e6; border-color: #adadad; } #jsxc_dialog .btn-default:active, #jsxc_dialog .btn-default.active, .open > #jsxc_dialog .btn-default.dropdown-toggle, #jsxc_webrtc .btn-default:active, #jsxc_webrtc .btn-default.active, .open > #jsxc_webrtc .btn-default.dropdown-toggle { background-image: none; } #jsxc_dialog .btn-default.disabled, #jsxc_dialog .btn-default.disabled:hover, #jsxc_dialog .btn-default.disabled:focus, #jsxc_dialog .btn-default.disabled.focus, #jsxc_dialog .btn-default.disabled:active, #jsxc_dialog .btn-default.disabled.active, #jsxc_dialog .btn-default[disabled], #jsxc_dialog .btn-default[disabled]:hover, #jsxc_dialog .btn-default[disabled]:focus, #jsxc_dialog .btn-default[disabled].focus, #jsxc_dialog .btn-default[disabled]:active, #jsxc_dialog .btn-default[disabled].active, fieldset[disabled] #jsxc_dialog .btn-default, fieldset[disabled] #jsxc_dialog .btn-default:hover, fieldset[disabled] #jsxc_dialog .btn-default:focus, fieldset[disabled] #jsxc_dialog .btn-default.focus, fieldset[disabled] #jsxc_dialog .btn-default:active, fieldset[disabled] #jsxc_dialog .btn-default.active, #jsxc_webrtc .btn-default.disabled, #jsxc_webrtc .btn-default.disabled:hover, #jsxc_webrtc .btn-default.disabled:focus, #jsxc_webrtc .btn-default.disabled.focus, #jsxc_webrtc .btn-default.disabled:active, #jsxc_webrtc .btn-default.disabled.active, #jsxc_webrtc .btn-default[disabled], #jsxc_webrtc .btn-default[disabled]:hover, #jsxc_webrtc .btn-default[disabled]:focus, #jsxc_webrtc .btn-default[disabled].focus, #jsxc_webrtc .btn-default[disabled]:active, #jsxc_webrtc .btn-default[disabled].active, fieldset[disabled] #jsxc_webrtc .btn-default, fieldset[disabled] #jsxc_webrtc .btn-default:hover, fieldset[disabled] #jsxc_webrtc .btn-default:focus, fieldset[disabled] #jsxc_webrtc .btn-default.focus, fieldset[disabled] #jsxc_webrtc .btn-default:active, fieldset[disabled] #jsxc_webrtc .btn-default.active { background-color: #fff; border-color: #ccc; } #jsxc_dialog .btn-default .badge, #jsxc_webrtc .btn-default .badge { color: #fff; background-color: #333; } #jsxc_dialog .btn-primary, #jsxc_webrtc .btn-primary { color: #fff; background-color: #337ab7; border-color: #2e6da4; } #jsxc_dialog .btn-primary:hover, #jsxc_dialog .btn-primary:focus, #jsxc_dialog .btn-primary.focus, #jsxc_dialog .btn-primary:active, #jsxc_dialog .btn-primary.active, .open > #jsxc_dialog .btn-primary.dropdown-toggle, #jsxc_webrtc .btn-primary:hover, #jsxc_webrtc .btn-primary:focus, #jsxc_webrtc .btn-primary.focus, #jsxc_webrtc .btn-primary:active, #jsxc_webrtc .btn-primary.active, .open > #jsxc_webrtc .btn-primary.dropdown-toggle { color: #fff; background-color: #286090; border-color: #204d74; } #jsxc_dialog .btn-primary:active, #jsxc_dialog .btn-primary.active, .open > #jsxc_dialog .btn-primary.dropdown-toggle, #jsxc_webrtc .btn-primary:active, #jsxc_webrtc .btn-primary.active, .open > #jsxc_webrtc .btn-primary.dropdown-toggle { background-image: none; } #jsxc_dialog .btn-primary.disabled, #jsxc_dialog .btn-primary.disabled:hover, #jsxc_dialog .btn-primary.disabled:focus, #jsxc_dialog .btn-primary.disabled.focus, #jsxc_dialog .btn-primary.disabled:active, #jsxc_dialog .btn-primary.disabled.active, #jsxc_dialog .btn-primary[disabled], #jsxc_dialog .btn-primary[disabled]:hover, #jsxc_dialog .btn-primary[disabled]:focus, #jsxc_dialog .btn-primary[disabled].focus, #jsxc_dialog .btn-primary[disabled]:active, #jsxc_dialog .btn-primary[disabled].active, fieldset[disabled] #jsxc_dialog .btn-primary, fieldset[disabled] #jsxc_dialog .btn-primary:hover, fieldset[disabled] #jsxc_dialog .btn-primary:focus, fieldset[disabled] #jsxc_dialog .btn-primary.focus, fieldset[disabled] #jsxc_dialog .btn-primary:active, fieldset[disabled] #jsxc_dialog .btn-primary.active, #jsxc_webrtc .btn-primary.disabled, #jsxc_webrtc .btn-primary.disabled:hover, #jsxc_webrtc .btn-primary.disabled:focus, #jsxc_webrtc .btn-primary.disabled.focus, #jsxc_webrtc .btn-primary.disabled:active, #jsxc_webrtc .btn-primary.disabled.active, #jsxc_webrtc .btn-primary[disabled], #jsxc_webrtc .btn-primary[disabled]:hover, #jsxc_webrtc .btn-primary[disabled]:focus, #jsxc_webrtc .btn-primary[disabled].focus, #jsxc_webrtc .btn-primary[disabled]:active, #jsxc_webrtc .btn-primary[disabled].active, fieldset[disabled] #jsxc_webrtc .btn-primary, fieldset[disabled] #jsxc_webrtc .btn-primary:hover, fieldset[disabled] #jsxc_webrtc .btn-primary:focus, fieldset[disabled] #jsxc_webrtc .btn-primary.focus, fieldset[disabled] #jsxc_webrtc .btn-primary:active, fieldset[disabled] #jsxc_webrtc .btn-primary.active { background-color: #337ab7; border-color: #2e6da4; } #jsxc_dialog .btn-primary .badge, #jsxc_webrtc .btn-primary .badge { color: #337ab7; background-color: #fff; } #jsxc_dialog .btn-success, #jsxc_webrtc .btn-success { color: #fff; background-color: #5cb85c; border-color: #4cae4c; } #jsxc_dialog .btn-success:hover, #jsxc_dialog .btn-success:focus, #jsxc_dialog .btn-success.focus, #jsxc_dialog .btn-success:active, #jsxc_dialog .btn-success.active, .open > #jsxc_dialog .btn-success.dropdown-toggle, #jsxc_webrtc .btn-success:hover, #jsxc_webrtc .btn-success:focus, #jsxc_webrtc .btn-success.focus, #jsxc_webrtc .btn-success:active, #jsxc_webrtc .btn-success.active, .open > #jsxc_webrtc .btn-success.dropdown-toggle { color: #fff; background-color: #449d44; border-color: #398439; } #jsxc_dialog .btn-success:active, #jsxc_dialog .btn-success.active, .open > #jsxc_dialog .btn-success.dropdown-toggle, #jsxc_webrtc .btn-success:active, #jsxc_webrtc .btn-success.active, .open > #jsxc_webrtc .btn-success.dropdown-toggle { background-image: none; } #jsxc_dialog .btn-success.disabled, #jsxc_dialog .btn-success.disabled:hover, #jsxc_dialog .btn-success.disabled:focus, #jsxc_dialog .btn-success.disabled.focus, #jsxc_dialog .btn-success.disabled:active, #jsxc_dialog .btn-success.disabled.active, #jsxc_dialog .btn-success[disabled], #jsxc_dialog .btn-success[disabled]:hover, #jsxc_dialog .btn-success[disabled]:focus, #jsxc_dialog .btn-success[disabled].focus, #jsxc_dialog .btn-success[disabled]:active, #jsxc_dialog .btn-success[disabled].active, fieldset[disabled] #jsxc_dialog .btn-success, fieldset[disabled] #jsxc_dialog .btn-success:hover, fieldset[disabled] #jsxc_dialog .btn-success:focus, fieldset[disabled] #jsxc_dialog .btn-success.focus, fieldset[disabled] #jsxc_dialog .btn-success:active, fieldset[disabled] #jsxc_dialog .btn-success.active, #jsxc_webrtc .btn-success.disabled, #jsxc_webrtc .btn-success.disabled:hover, #jsxc_webrtc .btn-success.disabled:focus, #jsxc_webrtc .btn-success.disabled.focus, #jsxc_webrtc .btn-success.disabled:active, #jsxc_webrtc .btn-success.disabled.active, #jsxc_webrtc .btn-success[disabled], #jsxc_webrtc .btn-success[disabled]:hover, #jsxc_webrtc .btn-success[disabled]:focus, #jsxc_webrtc .btn-success[disabled].focus, #jsxc_webrtc .btn-success[disabled]:active, #jsxc_webrtc .btn-success[disabled].active, fieldset[disabled] #jsxc_webrtc .btn-success, fieldset[disabled] #jsxc_webrtc .btn-success:hover, fieldset[disabled] #jsxc_webrtc .btn-success:focus, fieldset[disabled] #jsxc_webrtc .btn-success.focus, fieldset[disabled] #jsxc_webrtc .btn-success:active, fieldset[disabled] #jsxc_webrtc .btn-success.active { background-color: #5cb85c; border-color: #4cae4c; } #jsxc_dialog .btn-success .badge, #jsxc_webrtc .btn-success .badge { color: #5cb85c; background-color: #fff; } #jsxc_dialog .btn-info, #jsxc_webrtc .btn-info { color: #fff; background-color: #5bc0de; border-color: #46b8da; } #jsxc_dialog .btn-info:hover, #jsxc_dialog .btn-info:focus, #jsxc_dialog .btn-info.focus, #jsxc_dialog .btn-info:active, #jsxc_dialog .btn-info.active, .open > #jsxc_dialog .btn-info.dropdown-toggle, #jsxc_webrtc .btn-info:hover, #jsxc_webrtc .btn-info:focus, #jsxc_webrtc .btn-info.focus, #jsxc_webrtc .btn-info:active, #jsxc_webrtc .btn-info.active, .open > #jsxc_webrtc .btn-info.dropdown-toggle { color: #fff; background-color: #31b0d5; border-color: #269abc; } #jsxc_dialog .btn-info:active, #jsxc_dialog .btn-info.active, .open > #jsxc_dialog .btn-info.dropdown-toggle, #jsxc_webrtc .btn-info:active, #jsxc_webrtc .btn-info.active, .open > #jsxc_webrtc .btn-info.dropdown-toggle { background-image: none; } #jsxc_dialog .btn-info.disabled, #jsxc_dialog .btn-info.disabled:hover, #jsxc_dialog .btn-info.disabled:focus, #jsxc_dialog .btn-info.disabled.focus, #jsxc_dialog .btn-info.disabled:active, #jsxc_dialog .btn-info.disabled.active, #jsxc_dialog .btn-info[disabled], #jsxc_dialog .btn-info[disabled]:hover, #jsxc_dialog .btn-info[disabled]:focus, #jsxc_dialog .btn-info[disabled].focus, #jsxc_dialog .btn-info[disabled]:active, #jsxc_dialog .btn-info[disabled].active, fieldset[disabled] #jsxc_dialog .btn-info, fieldset[disabled] #jsxc_dialog .btn-info:hover, fieldset[disabled] #jsxc_dialog .btn-info:focus, fieldset[disabled] #jsxc_dialog .btn-info.focus, fieldset[disabled] #jsxc_dialog .btn-info:active, fieldset[disabled] #jsxc_dialog .btn-info.active, #jsxc_webrtc .btn-info.disabled, #jsxc_webrtc .btn-info.disabled:hover, #jsxc_webrtc .btn-info.disabled:focus, #jsxc_webrtc .btn-info.disabled.focus, #jsxc_webrtc .btn-info.disabled:active, #jsxc_webrtc .btn-info.disabled.active, #jsxc_webrtc .btn-info[disabled], #jsxc_webrtc .btn-info[disabled]:hover, #jsxc_webrtc .btn-info[disabled]:focus, #jsxc_webrtc .btn-info[disabled].focus, #jsxc_webrtc .btn-info[disabled]:active, #jsxc_webrtc .btn-info[disabled].active, fieldset[disabled] #jsxc_webrtc .btn-info, fieldset[disabled] #jsxc_webrtc .btn-info:hover, fieldset[disabled] #jsxc_webrtc .btn-info:focus, fieldset[disabled] #jsxc_webrtc .btn-info.focus, fieldset[disabled] #jsxc_webrtc .btn-info:active, fieldset[disabled] #jsxc_webrtc .btn-info.active { background-color: #5bc0de; border-color: #46b8da; } #jsxc_dialog .btn-info .badge, #jsxc_webrtc .btn-info .badge { color: #5bc0de; background-color: #fff; } #jsxc_dialog .btn-warning, #jsxc_webrtc .btn-warning { color: #fff; background-color: #f0ad4e; border-color: #eea236; } #jsxc_dialog .btn-warning:hover, #jsxc_dialog .btn-warning:focus, #jsxc_dialog .btn-warning.focus, #jsxc_dialog .btn-warning:active, #jsxc_dialog .btn-warning.active, .open > #jsxc_dialog .btn-warning.dropdown-toggle, #jsxc_webrtc .btn-warning:hover, #jsxc_webrtc .btn-warning:focus, #jsxc_webrtc .btn-warning.focus, #jsxc_webrtc .btn-warning:active, #jsxc_webrtc .btn-warning.active, .open > #jsxc_webrtc .btn-warning.dropdown-toggle { color: #fff; background-color: #ec971f; border-color: #d58512; } #jsxc_dialog .btn-warning:active, #jsxc_dialog .btn-warning.active, .open > #jsxc_dialog .btn-warning.dropdown-toggle, #jsxc_webrtc .btn-warning:active, #jsxc_webrtc .btn-warning.active, .open > #jsxc_webrtc .btn-warning.dropdown-toggle { background-image: none; } #jsxc_dialog .btn-warning.disabled, #jsxc_dialog .btn-warning.disabled:hover, #jsxc_dialog .btn-warning.disabled:focus, #jsxc_dialog .btn-warning.disabled.focus, #jsxc_dialog .btn-warning.disabled:active, #jsxc_dialog .btn-warning.disabled.active, #jsxc_dialog .btn-warning[disabled], #jsxc_dialog .btn-warning[disabled]:hover, #jsxc_dialog .btn-warning[disabled]:focus, #jsxc_dialog .btn-warning[disabled].focus, #jsxc_dialog .btn-warning[disabled]:active, #jsxc_dialog .btn-warning[disabled].active, fieldset[disabled] #jsxc_dialog .btn-warning, fieldset[disabled] #jsxc_dialog .btn-warning:hover, fieldset[disabled] #jsxc_dialog .btn-warning:focus, fieldset[disabled] #jsxc_dialog .btn-warning.focus, fieldset[disabled] #jsxc_dialog .btn-warning:active, fieldset[disabled] #jsxc_dialog .btn-warning.active, #jsxc_webrtc .btn-warning.disabled, #jsxc_webrtc .btn-warning.disabled:hover, #jsxc_webrtc .btn-warning.disabled:focus, #jsxc_webrtc .btn-warning.disabled.focus, #jsxc_webrtc .btn-warning.disabled:active, #jsxc_webrtc .btn-warning.disabled.active, #jsxc_webrtc .btn-warning[disabled], #jsxc_webrtc .btn-warning[disabled]:hover, #jsxc_webrtc .btn-warning[disabled]:focus, #jsxc_webrtc .btn-warning[disabled].focus, #jsxc_webrtc .btn-warning[disabled]:active, #jsxc_webrtc .btn-warning[disabled].active, fieldset[disabled] #jsxc_webrtc .btn-warning, fieldset[disabled] #jsxc_webrtc .btn-warning:hover, fieldset[disabled] #jsxc_webrtc .btn-warning:focus, fieldset[disabled] #jsxc_webrtc .btn-warning.focus, fieldset[disabled] #jsxc_webrtc .btn-warning:active, fieldset[disabled] #jsxc_webrtc .btn-warning.active { background-color: #f0ad4e; border-color: #eea236; } #jsxc_dialog .btn-warning .badge, #jsxc_webrtc .btn-warning .badge { color: #f0ad4e; background-color: #fff; } #jsxc_dialog .btn-danger, #jsxc_webrtc .btn-danger { color: #fff; background-color: #d9534f; border-color: #d43f3a; } #jsxc_dialog .btn-danger:hover, #jsxc_dialog .btn-danger:focus, #jsxc_dialog .btn-danger.focus, #jsxc_dialog .btn-danger:active, #jsxc_dialog .btn-danger.active, .open > #jsxc_dialog .btn-danger.dropdown-toggle, #jsxc_webrtc .btn-danger:hover, #jsxc_webrtc .btn-danger:focus, #jsxc_webrtc .btn-danger.focus, #jsxc_webrtc .btn-danger:active, #jsxc_webrtc .btn-danger.active, .open > #jsxc_webrtc .btn-danger.dropdown-toggle { color: #fff; background-color: #c9302c; border-color: #ac2925; } #jsxc_dialog .btn-danger:active, #jsxc_dialog .btn-danger.active, .open > #jsxc_dialog .btn-danger.dropdown-toggle, #jsxc_webrtc .btn-danger:active, #jsxc_webrtc .btn-danger.active, .open > #jsxc_webrtc .btn-danger.dropdown-toggle { background-image: none; } #jsxc_dialog .btn-danger.disabled, #jsxc_dialog .btn-danger.disabled:hover, #jsxc_dialog .btn-danger.disabled:focus, #jsxc_dialog .btn-danger.disabled.focus, #jsxc_dialog .btn-danger.disabled:active, #jsxc_dialog .btn-danger.disabled.active, #jsxc_dialog .btn-danger[disabled], #jsxc_dialog .btn-danger[disabled]:hover, #jsxc_dialog .btn-danger[disabled]:focus, #jsxc_dialog .btn-danger[disabled].focus, #jsxc_dialog .btn-danger[disabled]:active, #jsxc_dialog .btn-danger[disabled].active, fieldset[disabled] #jsxc_dialog .btn-danger, fieldset[disabled] #jsxc_dialog .btn-danger:hover, fieldset[disabled] #jsxc_dialog .btn-danger:focus, fieldset[disabled] #jsxc_dialog .btn-danger.focus, fieldset[disabled] #jsxc_dialog .btn-danger:active, fieldset[disabled] #jsxc_dialog .btn-danger.active, #jsxc_webrtc .btn-danger.disabled, #jsxc_webrtc .btn-danger.disabled:hover, #jsxc_webrtc .btn-danger.disabled:focus, #jsxc_webrtc .btn-danger.disabled.focus, #jsxc_webrtc .btn-danger.disabled:active, #jsxc_webrtc .btn-danger.disabled.active, #jsxc_webrtc .btn-danger[disabled], #jsxc_webrtc .btn-danger[disabled]:hover, #jsxc_webrtc .btn-danger[disabled]:focus, #jsxc_webrtc .btn-danger[disabled].focus, #jsxc_webrtc .btn-danger[disabled]:active, #jsxc_webrtc .btn-danger[disabled].active, fieldset[disabled] #jsxc_webrtc .btn-danger, fieldset[disabled] #jsxc_webrtc .btn-danger:hover, fieldset[disabled] #jsxc_webrtc .btn-danger:focus, fieldset[disabled] #jsxc_webrtc .btn-danger.focus, fieldset[disabled] #jsxc_webrtc .btn-danger:active, fieldset[disabled] #jsxc_webrtc .btn-danger.active { background-color: #d9534f; border-color: #d43f3a; } #jsxc_dialog .btn-danger .badge, #jsxc_webrtc .btn-danger .badge { color: #d9534f; background-color: #fff; } #jsxc_dialog .btn-link, #jsxc_webrtc .btn-link { color: #337ab7; font-weight: normal; border-radius: 0; } #jsxc_dialog .btn-link, #jsxc_dialog .btn-link:active, #jsxc_dialog .btn-link.active, #jsxc_dialog .btn-link[disabled], fieldset[disabled] #jsxc_dialog .btn-link, #jsxc_webrtc .btn-link, #jsxc_webrtc .btn-link:active, #jsxc_webrtc .btn-link.active, #jsxc_webrtc .btn-link[disabled], fieldset[disabled] #jsxc_webrtc .btn-link { background-color: transparent; box-shadow: none; } #jsxc_dialog .btn-link, #jsxc_dialog .btn-link:hover, #jsxc_dialog .btn-link:focus, #jsxc_dialog .btn-link:active, #jsxc_webrtc .btn-link, #jsxc_webrtc .btn-link:hover, #jsxc_webrtc .btn-link:focus, #jsxc_webrtc .btn-link:active { border-color: transparent; } #jsxc_dialog .btn-link:hover, #jsxc_dialog .btn-link:focus, #jsxc_webrtc .btn-link:hover, #jsxc_webrtc .btn-link:focus { color: #23527c; text-decoration: underline; background-color: transparent; } #jsxc_dialog .btn-link[disabled]:hover, #jsxc_dialog .btn-link[disabled]:focus, fieldset[disabled] #jsxc_dialog .btn-link:hover, fieldset[disabled] #jsxc_dialog .btn-link:focus, #jsxc_webrtc .btn-link[disabled]:hover, #jsxc_webrtc .btn-link[disabled]:focus, fieldset[disabled] #jsxc_webrtc .btn-link:hover, fieldset[disabled] #jsxc_webrtc .btn-link:focus { color: #777777; text-decoration: none; } #jsxc_dialog .btn-lg, #jsxc_dialog .btn-group-lg > .btn, #jsxc_dialog #jsxc_webrtc .btn-group-lg > .btn, #jsxc_webrtc .btn-lg, #jsxc_webrtc #jsxc_dialog .btn-group-lg > .btn, #jsxc_webrtc .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } #jsxc_dialog .btn-sm, #jsxc_dialog .btn-group-sm > .btn, #jsxc_dialog #jsxc_webrtc .btn-group-sm > .btn, #jsxc_webrtc .btn-sm, #jsxc_webrtc #jsxc_dialog .btn-group-sm > .btn, #jsxc_webrtc .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } #jsxc_dialog .btn-xs, #jsxc_dialog .btn-group-xs > .btn, #jsxc_dialog #jsxc_webrtc .btn-group-xs > .btn, #jsxc_webrtc .btn-xs, #jsxc_webrtc #jsxc_dialog .btn-group-xs > .btn, #jsxc_webrtc .btn-group-xs > .btn { padding: 1px 5px; font-size: 12px; line-height: 1.5; border-radius: 3px; } #jsxc_dialog .btn-block, #jsxc_webrtc .btn-block { display: block; width: 100%; } #jsxc_dialog .btn-block + .btn-block, #jsxc_webrtc .btn-block + .btn-block { margin-top: 5px; } #jsxc_dialog input[type="submit"].btn-block, #jsxc_dialog input[type="reset"].btn-block, #jsxc_dialog input[type="button"].btn-block, #jsxc_webrtc input[type="submit"].btn-block, #jsxc_webrtc input[type="reset"].btn-block, #jsxc_webrtc input[type="button"].btn-block { width: 100%; } #jsxc_dialog .btn-group, #jsxc_dialog .btn-group-vertical, #jsxc_webrtc .btn-group, #jsxc_webrtc .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } #jsxc_dialog .btn-group > .btn, #jsxc_dialog .btn-group-vertical > .btn, #jsxc_webrtc .btn-group > .btn, #jsxc_webrtc .btn-group-vertical > .btn { position: relative; float: left; } #jsxc_dialog .btn-group > .btn:hover, #jsxc_dialog .btn-group > .btn:focus, #jsxc_dialog .btn-group > .btn:active, #jsxc_dialog .btn-group > .btn.active, #jsxc_dialog .btn-group-vertical > .btn:hover, #jsxc_dialog .btn-group-vertical > .btn:focus, #jsxc_dialog .btn-group-vertical > .btn:active, #jsxc_dialog .btn-group-vertical > .btn.active, #jsxc_webrtc .btn-group > .btn:hover, #jsxc_webrtc .btn-group > .btn:focus, #jsxc_webrtc .btn-group > .btn:active, #jsxc_webrtc .btn-group > .btn.active, #jsxc_webrtc .btn-group-vertical > .btn:hover, #jsxc_webrtc .btn-group-vertical > .btn:focus, #jsxc_webrtc .btn-group-vertical > .btn:active, #jsxc_webrtc .btn-group-vertical > .btn.active { z-index: 2; } #jsxc_dialog .btn-group .btn + .btn, #jsxc_dialog .btn-group .btn + .btn-group, #jsxc_dialog .btn-group .btn-group + .btn, #jsxc_dialog .btn-group .btn-group + .btn-group, #jsxc_webrtc .btn-group .btn + .btn, #jsxc_webrtc .btn-group .btn + .btn-group, #jsxc_webrtc .btn-group .btn-group + .btn, #jsxc_webrtc .btn-group .btn-group + .btn-group { margin-left: -1px; } #jsxc_dialog .btn-toolbar, #jsxc_webrtc .btn-toolbar { margin-left: -5px; } #jsxc_dialog .btn-toolbar:before, #jsxc_dialog .btn-toolbar:after, #jsxc_webrtc .btn-toolbar:before, #jsxc_webrtc .btn-toolbar:after { content: " "; display: table; } #jsxc_dialog .btn-toolbar:after, #jsxc_webrtc .btn-toolbar:after { clear: both; } #jsxc_dialog .btn-toolbar .btn-group, #jsxc_dialog .btn-toolbar .input-group, #jsxc_webrtc .btn-toolbar .btn-group, #jsxc_webrtc .btn-toolbar .input-group { float: left; } #jsxc_dialog .btn-toolbar > .btn, #jsxc_dialog .btn-toolbar > .btn-group, #jsxc_dialog .btn-toolbar > .input-group, #jsxc_webrtc .btn-toolbar > .btn, #jsxc_webrtc .btn-toolbar > .btn-group, #jsxc_webrtc .btn-toolbar > .input-group { margin-left: 5px; } #jsxc_dialog .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle), #jsxc_webrtc .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } #jsxc_dialog .btn-group > .btn:first-child, #jsxc_webrtc .btn-group > .btn:first-child { margin-left: 0; } #jsxc_dialog .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle), #jsxc_webrtc .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-bottom-right-radius: 0; border-top-right-radius: 0; } #jsxc_dialog .btn-group > .btn:last-child:not(:first-child), #jsxc_dialog .btn-group > .dropdown-toggle:not(:first-child), #jsxc_webrtc .btn-group > .btn:last-child:not(:first-child), #jsxc_webrtc .btn-group > .dropdown-toggle:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; } #jsxc_dialog .btn-group > .btn-group, #jsxc_webrtc .btn-group > .btn-group { float: left; } #jsxc_dialog .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn, #jsxc_webrtc .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } #jsxc_dialog .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, #jsxc_dialog .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle, #jsxc_webrtc .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, #jsxc_webrtc .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-top-right-radius: 0; } #jsxc_dialog .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child, #jsxc_webrtc .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { border-bottom-left-radius: 0; border-top-left-radius: 0; } #jsxc_dialog .btn-group .dropdown-toggle:active, #jsxc_dialog .btn-group.open .dropdown-toggle, #jsxc_webrtc .btn-group .dropdown-toggle:active, #jsxc_webrtc .btn-group.open .dropdown-toggle { outline: 0; } #jsxc_dialog .btn-group > .btn + .dropdown-toggle, #jsxc_webrtc .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; } #jsxc_dialog .btn-group > .btn-lg + .dropdown-toggle, #jsxc_dialog .btn-group-lg.btn-group > .btn + .dropdown-toggle, #jsxc_dialog #jsxc_webrtc .btn-group-lg.btn-group > .btn + .dropdown-toggle, #jsxc_webrtc .btn-group > .btn-lg + .dropdown-toggle, #jsxc_webrtc #jsxc_dialog .btn-group-lg.btn-group > .btn + .dropdown-toggle, #jsxc_webrtc .btn-group-lg.btn-group > .btn + .dropdown-toggle { padding-left: 12px; padding-right: 12px; } #jsxc_dialog .btn-group.open .dropdown-toggle, #jsxc_webrtc .btn-group.open .dropdown-toggle { box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } #jsxc_dialog .btn-group.open .dropdown-toggle.btn-link, #jsxc_webrtc .btn-group.open .dropdown-toggle.btn-link { box-shadow: none; } #jsxc_dialog .btn .caret, #jsxc_webrtc .btn .caret { margin-left: 0; } #jsxc_dialog .btn-lg .caret, #jsxc_dialog .btn-group-lg > .btn .caret, #jsxc_dialog #jsxc_webrtc .btn-group-lg > .btn .caret, #jsxc_webrtc .btn-lg .caret, #jsxc_webrtc #jsxc_dialog .btn-group-lg > .btn .caret, #jsxc_webrtc .btn-group-lg > .btn .caret { border-width: 5px 5px 0; border-bottom-width: 0; } #jsxc_dialog .dropup .btn-lg .caret, #jsxc_dialog .dropup .btn-group-lg > .btn .caret, #jsxc_dialog .dropup #jsxc_webrtc .btn-group-lg > .btn .caret, #jsxc_webrtc .dropup .btn-lg .caret, #jsxc_webrtc .dropup #jsxc_dialog .btn-group-lg > .btn .caret, #jsxc_webrtc .dropup .btn-group-lg > .btn .caret { border-width: 0 5px 5px; } #jsxc_dialog .btn-group-vertical > .btn, #jsxc_dialog .btn-group-vertical > .btn-group, #jsxc_dialog .btn-group-vertical > .btn-group > .btn, #jsxc_webrtc .btn-group-vertical > .btn, #jsxc_webrtc .btn-group-vertical > .btn-group, #jsxc_webrtc .btn-group-vertical > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } #jsxc_dialog .btn-group-vertical > .btn-group:before, #jsxc_dialog .btn-group-vertical > .btn-group:after, #jsxc_webrtc .btn-group-vertical > .btn-group:before, #jsxc_webrtc .btn-group-vertical > .btn-group:after { content: " "; display: table; } #jsxc_dialog .btn-group-vertical > .btn-group:after, #jsxc_webrtc .btn-group-vertical > .btn-group:after { clear: both; } #jsxc_dialog .btn-group-vertical > .btn-group > .btn, #jsxc_webrtc .btn-group-vertical > .btn-group > .btn { float: none; } #jsxc_dialog .btn-group-vertical > .btn + .btn, #jsxc_dialog .btn-group-vertical > .btn + .btn-group, #jsxc_dialog .btn-group-vertical > .btn-group + .btn, #jsxc_dialog .btn-group-vertical > .btn-group + .btn-group, #jsxc_webrtc .btn-group-vertical > .btn + .btn, #jsxc_webrtc .btn-group-vertical > .btn + .btn-group, #jsxc_webrtc .btn-group-vertical > .btn-group + .btn, #jsxc_webrtc .btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } #jsxc_dialog .btn-group-vertical > .btn:not(:first-child):not(:last-child), #jsxc_webrtc .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } #jsxc_dialog .btn-group-vertical > .btn:first-child:not(:last-child), #jsxc_webrtc .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } #jsxc_dialog .btn-group-vertical > .btn:last-child:not(:first-child), #jsxc_webrtc .btn-group-vertical > .btn:last-child:not(:first-child) { border-bottom-left-radius: 4px; border-top-right-radius: 0; border-top-left-radius: 0; } #jsxc_dialog .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn, #jsxc_webrtc .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } #jsxc_dialog .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, #jsxc_dialog .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle, #jsxc_webrtc .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, #jsxc_webrtc .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } #jsxc_dialog .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child, #jsxc_webrtc .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { border-top-right-radius: 0; border-top-left-radius: 0; } #jsxc_dialog .btn-group-justified, #jsxc_webrtc .btn-group-justified { display: table; width: 100%; table-layout: fixed; border-collapse: separate; } #jsxc_dialog .btn-group-justified > .btn, #jsxc_dialog .btn-group-justified > .btn-group, #jsxc_webrtc .btn-group-justified > .btn, #jsxc_webrtc .btn-group-justified > .btn-group { float: none; display: table-cell; width: 1%; } #jsxc_dialog .btn-group-justified > .btn-group .btn, #jsxc_webrtc .btn-group-justified > .btn-group .btn { width: 100%; } #jsxc_dialog .btn-group-justified > .btn-group .dropdown-menu, #jsxc_webrtc .btn-group-justified > .btn-group .dropdown-menu { left: auto; } #jsxc_dialog [data-toggle="buttons"] > .btn input[type="radio"], #jsxc_dialog [data-toggle="buttons"] > .btn input[type="checkbox"], #jsxc_dialog [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], #jsxc_dialog [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"], #jsxc_webrtc [data-toggle="buttons"] > .btn input[type="radio"], #jsxc_webrtc [data-toggle="buttons"] > .btn input[type="checkbox"], #jsxc_webrtc [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], #jsxc_webrtc [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { position: absolute; clip: rect(0, 0, 0, 0); pointer-events: none; } #jsxc_dialog fieldset, #jsxc_webrtc fieldset { padding: 0; margin: 0; border: 0; min-width: 0; } #jsxc_dialog legend, #jsxc_webrtc legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: inherit; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } #jsxc_dialog label, #jsxc_webrtc label { display: inline-block; max-width: 100%; margin-bottom: 5px; font-weight: bold; } #jsxc_dialog input[type="search"], #jsxc_webrtc input[type="search"] { box-sizing: border-box; } #jsxc_dialog input[type="radio"], #jsxc_dialog input[type="checkbox"], #jsxc_webrtc input[type="radio"], #jsxc_webrtc input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; line-height: normal; } #jsxc_dialog input[type="file"], #jsxc_webrtc input[type="file"] { display: block; } #jsxc_dialog input[type="range"], #jsxc_webrtc input[type="range"] { display: block; width: 100%; } #jsxc_dialog select[multiple], #jsxc_dialog select[size], #jsxc_webrtc select[multiple], #jsxc_webrtc select[size] { height: auto; } #jsxc_dialog input[type="file"]:focus, #jsxc_dialog input[type="radio"]:focus, #jsxc_dialog input[type="checkbox"]:focus, #jsxc_webrtc input[type="file"]:focus, #jsxc_webrtc input[type="radio"]:focus, #jsxc_webrtc input[type="checkbox"]:focus { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } #jsxc_dialog output, #jsxc_webrtc output { display: block; padding-top: 7px; font-size: 14px; line-height: 1.428571429; color: #555555; } #jsxc_dialog .form-control, #jsxc_webrtc .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.428571429; color: #555555; background-color: #fff; background-image: none; border: 1px solid #ccc; border-radius: 4px; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } #jsxc_dialog .form-control:focus, #jsxc_webrtc .form-control:focus { border-color: #66afe9; outline: 0; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } #jsxc_dialog .form-control::-moz-placeholder, #jsxc_webrtc .form-control::-moz-placeholder { color: #999; opacity: 1; } #jsxc_dialog .form-control:-ms-input-placeholder, #jsxc_webrtc .form-control:-ms-input-placeholder { color: #999; } #jsxc_dialog .form-control::-webkit-input-placeholder, #jsxc_webrtc .form-control::-webkit-input-placeholder { color: #999; } #jsxc_dialog .form-control[disabled], #jsxc_dialog .form-control[readonly], fieldset[disabled] #jsxc_dialog .form-control, #jsxc_webrtc .form-control[disabled], #jsxc_webrtc .form-control[readonly], fieldset[disabled] #jsxc_webrtc .form-control { background-color: #eeeeee; opacity: 1; } #jsxc_dialog .form-control[disabled], fieldset[disabled] #jsxc_dialog .form-control, #jsxc_webrtc .form-control[disabled], fieldset[disabled] #jsxc_webrtc .form-control { cursor: not-allowed; } #jsxc_dialog textarea.form-control, #jsxc_webrtc textarea.form-control { height: auto; } #jsxc_dialog input[type="search"], #jsxc_webrtc input[type="search"] { -webkit-appearance: none; } @media screen and (-webkit-min-device-pixel-ratio: 0) { #jsxc_dialog input[type="date"], #jsxc_dialog input[type="time"], #jsxc_dialog input[type="datetime-local"], #jsxc_dialog input[type="month"], #jsxc_webrtc input[type="date"], #jsxc_webrtc input[type="time"], #jsxc_webrtc input[type="datetime-local"], #jsxc_webrtc input[type="month"] { line-height: 34px; } #jsxc_dialog input[type="date"].input-sm, .input-group-sm #jsxc_dialog input[type="date"], #jsxc_dialog input[type="time"].input-sm, .input-group-sm #jsxc_dialog input[type="time"], #jsxc_dialog input[type="datetime-local"].input-sm, .input-group-sm #jsxc_dialog input[type="datetime-local"], #jsxc_dialog input[type="month"].input-sm, .input-group-sm #jsxc_dialog input[type="month"], #jsxc_webrtc input[type="date"].input-sm, .input-group-sm #jsxc_webrtc input[type="date"], #jsxc_webrtc input[type="time"].input-sm, .input-group-sm #jsxc_webrtc input[type="time"], #jsxc_webrtc input[type="datetime-local"].input-sm, .input-group-sm #jsxc_webrtc input[type="datetime-local"], #jsxc_webrtc input[type="month"].input-sm, .input-group-sm #jsxc_webrtc input[type="month"] { line-height: 30px; } #jsxc_dialog input[type="date"].input-lg, .input-group-lg #jsxc_dialog input[type="date"], #jsxc_dialog input[type="time"].input-lg, .input-group-lg #jsxc_dialog input[type="time"], #jsxc_dialog input[type="datetime-local"].input-lg, .input-group-lg #jsxc_dialog input[type="datetime-local"], #jsxc_dialog input[type="month"].input-lg, .input-group-lg #jsxc_dialog input[type="month"], #jsxc_webrtc input[type="date"].input-lg, .input-group-lg #jsxc_webrtc input[type="date"], #jsxc_webrtc input[type="time"].input-lg, .input-group-lg #jsxc_webrtc input[type="time"], #jsxc_webrtc input[type="datetime-local"].input-lg, .input-group-lg #jsxc_webrtc input[type="datetime-local"], #jsxc_webrtc input[type="month"].input-lg, .input-group-lg #jsxc_webrtc input[type="month"] { line-height: 46px; } } #jsxc_dialog .form-group, #jsxc_webrtc .form-group { margin-bottom: 15px; } #jsxc_dialog .radio, #jsxc_dialog .checkbox, #jsxc_webrtc .radio, #jsxc_webrtc .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; } #jsxc_dialog .radio label, #jsxc_dialog .checkbox label, #jsxc_webrtc .radio label, #jsxc_webrtc .checkbox label { min-height: 20px; padding-left: 20px; margin-bottom: 0; font-weight: normal; cursor: pointer; } #jsxc_dialog .radio input[type="radio"], #jsxc_dialog .radio-inline input[type="radio"], #jsxc_dialog .checkbox input[type="checkbox"], #jsxc_dialog .checkbox-inline input[type="checkbox"], #jsxc_webrtc .radio input[type="radio"], #jsxc_webrtc .radio-inline input[type="radio"], #jsxc_webrtc .checkbox input[type="checkbox"], #jsxc_webrtc .checkbox-inline input[type="checkbox"] { position: absolute; margin-left: -20px; margin-top: 4px \9; } #jsxc_dialog .radio + .radio, #jsxc_dialog .checkbox + .checkbox, #jsxc_webrtc .radio + .radio, #jsxc_webrtc .checkbox + .checkbox { margin-top: -5px; } #jsxc_dialog .radio-inline, #jsxc_dialog .checkbox-inline, #jsxc_webrtc .radio-inline, #jsxc_webrtc .checkbox-inline { position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; vertical-align: middle; font-weight: normal; cursor: pointer; } #jsxc_dialog .radio-inline + .radio-inline, #jsxc_dialog .checkbox-inline + .checkbox-inline, #jsxc_webrtc .radio-inline + .radio-inline, #jsxc_webrtc .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } #jsxc_dialog input[type="radio"][disabled], #jsxc_dialog input[type="radio"].disabled, fieldset[disabled] #jsxc_dialog input[type="radio"], #jsxc_dialog input[type="checkbox"][disabled], #jsxc_dialog input[type="checkbox"].disabled, fieldset[disabled] #jsxc_dialog input[type="checkbox"], #jsxc_webrtc input[type="radio"][disabled], #jsxc_webrtc input[type="radio"].disabled, fieldset[disabled] #jsxc_webrtc input[type="radio"], #jsxc_webrtc input[type="checkbox"][disabled], #jsxc_webrtc input[type="checkbox"].disabled, fieldset[disabled] #jsxc_webrtc input[type="checkbox"] { cursor: not-allowed; } #jsxc_dialog .radio-inline.disabled, fieldset[disabled] #jsxc_dialog .radio-inline, #jsxc_dialog .checkbox-inline.disabled, fieldset[disabled] #jsxc_dialog .checkbox-inline, #jsxc_webrtc .radio-inline.disabled, fieldset[disabled] #jsxc_webrtc .radio-inline, #jsxc_webrtc .checkbox-inline.disabled, fieldset[disabled] #jsxc_webrtc .checkbox-inline { cursor: not-allowed; } #jsxc_dialog .radio.disabled label, fieldset[disabled] #jsxc_dialog .radio label, #jsxc_dialog .checkbox.disabled label, fieldset[disabled] #jsxc_dialog .checkbox label, #jsxc_webrtc .radio.disabled label, fieldset[disabled] #jsxc_webrtc .radio label, #jsxc_webrtc .checkbox.disabled label, fieldset[disabled] #jsxc_webrtc .checkbox label { cursor: not-allowed; } #jsxc_dialog .form-control-static, #jsxc_webrtc .form-control-static { padding-top: 7px; padding-bottom: 7px; margin-bottom: 0; min-height: 34px; } #jsxc_dialog .form-control-static.input-lg, #jsxc_dialog .form-control-static.input-sm, #jsxc_webrtc .form-control-static.input-lg, #jsxc_webrtc .form-control-static.input-sm { padding-left: 0; padding-right: 0; } #jsxc_dialog .input-sm, #jsxc_webrtc .input-sm { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } #jsxc_dialog select.input-sm, #jsxc_webrtc select.input-sm { height: 30px; line-height: 30px; } #jsxc_dialog textarea.input-sm, #jsxc_dialog select[multiple].input-sm, #jsxc_webrtc textarea.input-sm, #jsxc_webrtc select[multiple].input-sm { height: auto; } #jsxc_dialog .form-group-sm .form-control, #jsxc_webrtc .form-group-sm .form-control { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } #jsxc_dialog .form-group-sm select.form-control, #jsxc_webrtc .form-group-sm select.form-control { height: 30px; line-height: 30px; } #jsxc_dialog .form-group-sm textarea.form-control, #jsxc_dialog .form-group-sm select[multiple].form-control, #jsxc_webrtc .form-group-sm textarea.form-control, #jsxc_webrtc .form-group-sm select[multiple].form-control { height: auto; } #jsxc_dialog .form-group-sm .form-control-static, #jsxc_webrtc .form-group-sm .form-control-static { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; min-height: 32px; } #jsxc_dialog .input-lg, #jsxc_webrtc .input-lg { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } #jsxc_dialog select.input-lg, #jsxc_webrtc select.input-lg { height: 46px; line-height: 46px; } #jsxc_dialog textarea.input-lg, #jsxc_dialog select[multiple].input-lg, #jsxc_webrtc textarea.input-lg, #jsxc_webrtc select[multiple].input-lg { height: auto; } #jsxc_dialog .form-group-lg .form-control, #jsxc_webrtc .form-group-lg .form-control { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } #jsxc_dialog .form-group-lg select.form-control, #jsxc_webrtc .form-group-lg select.form-control { height: 46px; line-height: 46px; } #jsxc_dialog .form-group-lg textarea.form-control, #jsxc_dialog .form-group-lg select[multiple].form-control, #jsxc_webrtc .form-group-lg textarea.form-control, #jsxc_webrtc .form-group-lg select[multiple].form-control { height: auto; } #jsxc_dialog .form-group-lg .form-control-static, #jsxc_webrtc .form-group-lg .form-control-static { height: 46px; padding: 10px 16px; font-size: 18px; line-height: 1.3333333; min-height: 38px; } #jsxc_dialog .has-feedback, #jsxc_webrtc .has-feedback { position: relative; } #jsxc_dialog .has-feedback .form-control, #jsxc_webrtc .has-feedback .form-control { padding-right: 42.5px; } #jsxc_dialog .form-control-feedback, #jsxc_webrtc .form-control-feedback { position: absolute; top: 0; right: 0; z-index: 2; display: block; width: 34px; height: 34px; line-height: 34px; text-align: center; pointer-events: none; } #jsxc_dialog .input-lg + .form-control-feedback, #jsxc_webrtc .input-lg + .form-control-feedback { width: 46px; height: 46px; line-height: 46px; } #jsxc_dialog .input-sm + .form-control-feedback, #jsxc_webrtc .input-sm + .form-control-feedback { width: 30px; height: 30px; line-height: 30px; } #jsxc_dialog .has-success .help-block, #jsxc_dialog .has-success .control-label, #jsxc_dialog .has-success .radio, #jsxc_dialog .has-success .checkbox, #jsxc_dialog .has-success .radio-inline, #jsxc_dialog .has-success .checkbox-inline, #jsxc_dialog .has-success.radio label, #jsxc_dialog .has-success.checkbox label, #jsxc_dialog .has-success.radio-inline label, #jsxc_dialog .has-success.checkbox-inline label, #jsxc_webrtc .has-success .help-block, #jsxc_webrtc .has-success .control-label, #jsxc_webrtc .has-success .radio, #jsxc_webrtc .has-success .checkbox, #jsxc_webrtc .has-success .radio-inline, #jsxc_webrtc .has-success .checkbox-inline, #jsxc_webrtc .has-success.radio label, #jsxc_webrtc .has-success.checkbox label, #jsxc_webrtc .has-success.radio-inline label, #jsxc_webrtc .has-success.checkbox-inline label { color: #3c763d; } #jsxc_dialog .has-success .form-control, #jsxc_webrtc .has-success .form-control { border-color: #3c763d; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } #jsxc_dialog .has-success .form-control:focus, #jsxc_webrtc .has-success .form-control:focus { border-color: #2b542c; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; } #jsxc_dialog .has-success .input-group-addon, #jsxc_webrtc .has-success .input-group-addon { color: #3c763d; border-color: #3c763d; background-color: #dff0d8; } #jsxc_dialog .has-success .form-control-feedback, #jsxc_webrtc .has-success .form-control-feedback { color: #3c763d; } #jsxc_dialog .has-warning .help-block, #jsxc_dialog .has-warning .control-label, #jsxc_dialog .has-warning .radio, #jsxc_dialog .has-warning .checkbox, #jsxc_dialog .has-warning .radio-inline, #jsxc_dialog .has-warning .checkbox-inline, #jsxc_dialog .has-warning.radio label, #jsxc_dialog .has-warning.checkbox label, #jsxc_dialog .has-warning.radio-inline label, #jsxc_dialog .has-warning.checkbox-inline label, #jsxc_webrtc .has-warning .help-block, #jsxc_webrtc .has-warning .control-label, #jsxc_webrtc .has-warning .radio, #jsxc_webrtc .has-warning .checkbox, #jsxc_webrtc .has-warning .radio-inline, #jsxc_webrtc .has-warning .checkbox-inline, #jsxc_webrtc .has-warning.radio label, #jsxc_webrtc .has-warning.checkbox label, #jsxc_webrtc .has-warning.radio-inline label, #jsxc_webrtc .has-warning.checkbox-inline label { color: #8a6d3b; } #jsxc_dialog .has-warning .form-control, #jsxc_webrtc .has-warning .form-control { border-color: #8a6d3b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } #jsxc_dialog .has-warning .form-control:focus, #jsxc_webrtc .has-warning .form-control:focus { border-color: #66512c; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; } #jsxc_dialog .has-warning .input-group-addon, #jsxc_webrtc .has-warning .input-group-addon { color: #8a6d3b; border-color: #8a6d3b; background-color: #fcf8e3; } #jsxc_dialog .has-warning .form-control-feedback, #jsxc_webrtc .has-warning .form-control-feedback { color: #8a6d3b; } #jsxc_dialog .has-error .help-block, #jsxc_dialog .has-error .control-label, #jsxc_dialog .has-error .radio, #jsxc_dialog .has-error .checkbox, #jsxc_dialog .has-error .radio-inline, #jsxc_dialog .has-error .checkbox-inline, #jsxc_dialog .has-error.radio label, #jsxc_dialog .has-error.checkbox label, #jsxc_dialog .has-error.radio-inline label, #jsxc_dialog .has-error.checkbox-inline label, #jsxc_webrtc .has-error .help-block, #jsxc_webrtc .has-error .control-label, #jsxc_webrtc .has-error .radio, #jsxc_webrtc .has-error .checkbox, #jsxc_webrtc .has-error .radio-inline, #jsxc_webrtc .has-error .checkbox-inline, #jsxc_webrtc .has-error.radio label, #jsxc_webrtc .has-error.checkbox label, #jsxc_webrtc .has-error.radio-inline label, #jsxc_webrtc .has-error.checkbox-inline label { color: #a94442; } #jsxc_dialog .has-error .form-control, #jsxc_webrtc .has-error .form-control { border-color: #a94442; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } #jsxc_dialog .has-error .form-control:focus, #jsxc_webrtc .has-error .form-control:focus { border-color: #843534; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; } #jsxc_dialog .has-error .input-group-addon, #jsxc_webrtc .has-error .input-group-addon { color: #a94442; border-color: #a94442; background-color: #f2dede; } #jsxc_dialog .has-error .form-control-feedback, #jsxc_webrtc .has-error .form-control-feedback { color: #a94442; } #jsxc_dialog .has-feedback label ~ .form-control-feedback, #jsxc_webrtc .has-feedback label ~ .form-control-feedback { top: 25px; } #jsxc_dialog .has-feedback label.sr-only ~ .form-control-feedback, #jsxc_webrtc .has-feedback label.sr-only ~ .form-control-feedback { top: 0; } #jsxc_dialog .help-block, #jsxc_webrtc .help-block { display: block; margin-top: 5px; margin-bottom: 10px; color: #737373; } @media (min-width: 768px) { #jsxc_dialog .form-inline .form-group, #jsxc_webrtc .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } #jsxc_dialog .form-inline .form-control, #jsxc_webrtc .form-inline .form-control { display: inline-block; width: auto; vertical-align: middle; } #jsxc_dialog .form-inline .form-control-static, #jsxc_webrtc .form-inline .form-control-static { display: inline-block; } #jsxc_dialog .form-inline .input-group, #jsxc_webrtc .form-inline .input-group { display: inline-table; vertical-align: middle; } #jsxc_dialog .form-inline .input-group .input-group-addon, #jsxc_dialog .form-inline .input-group .input-group-btn, #jsxc_dialog .form-inline .input-group .form-control, #jsxc_webrtc .form-inline .input-group .input-group-addon, #jsxc_webrtc .form-inline .input-group .input-group-btn, #jsxc_webrtc .form-inline .input-group .form-control { width: auto; } #jsxc_dialog .form-inline .input-group > .form-control, #jsxc_webrtc .form-inline .input-group > .form-control { width: 100%; } #jsxc_dialog .form-inline .control-label, #jsxc_webrtc .form-inline .control-label { margin-bottom: 0; vertical-align: middle; } #jsxc_dialog .form-inline .radio, #jsxc_dialog .form-inline .checkbox, #jsxc_webrtc .form-inline .radio, #jsxc_webrtc .form-inline .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } #jsxc_dialog .form-inline .radio label, #jsxc_dialog .form-inline .checkbox label, #jsxc_webrtc .form-inline .radio label, #jsxc_webrtc .form-inline .checkbox label { padding-left: 0; } #jsxc_dialog .form-inline .radio input[type="radio"], #jsxc_dialog .form-inline .checkbox input[type="checkbox"], #jsxc_webrtc .form-inline .radio input[type="radio"], #jsxc_webrtc .form-inline .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } #jsxc_dialog .form-inline .has-feedback .form-control-feedback, #jsxc_webrtc .form-inline .has-feedback .form-control-feedback { top: 0; } } #jsxc_dialog .form-horizontal .radio, #jsxc_dialog .form-horizontal .checkbox, #jsxc_dialog .form-horizontal .radio-inline, #jsxc_dialog .form-horizontal .checkbox-inline, #jsxc_webrtc .form-horizontal .radio, #jsxc_webrtc .form-horizontal .checkbox, #jsxc_webrtc .form-horizontal .radio-inline, #jsxc_webrtc .form-horizontal .checkbox-inline { margin-top: 0; margin-bottom: 0; padding-top: 7px; } #jsxc_dialog .form-horizontal .radio, #jsxc_dialog .form-horizontal .checkbox, #jsxc_webrtc .form-horizontal .radio, #jsxc_webrtc .form-horizontal .checkbox { min-height: 27px; } #jsxc_dialog .form-horizontal .form-group, #jsxc_webrtc .form-horizontal .form-group { margin-left: -15px; margin-right: -15px; } #jsxc_dialog .form-horizontal .form-group:before, #jsxc_dialog .form-horizontal .form-group:after, #jsxc_webrtc .form-horizontal .form-group:before, #jsxc_webrtc .form-horizontal .form-group:after { content: " "; display: table; } #jsxc_dialog .form-horizontal .form-group:after, #jsxc_webrtc .form-horizontal .form-group:after { clear: both; } @media (min-width: 768px) { #jsxc_dialog .form-horizontal .control-label, #jsxc_webrtc .form-horizontal .control-label { text-align: right; margin-bottom: 0; padding-top: 7px; } } #jsxc_dialog .form-horizontal .has-feedback .form-control-feedback, #jsxc_webrtc .form-horizontal .has-feedback .form-control-feedback { right: 15px; } @media (min-width: 768px) { #jsxc_dialog .form-horizontal .form-group-lg .control-label, #jsxc_webrtc .form-horizontal .form-group-lg .control-label { padding-top: 14.333333px; } } @media (min-width: 768px) { #jsxc_dialog .form-horizontal .form-group-sm .control-label, #jsxc_webrtc .form-horizontal .form-group-sm .control-label { padding-top: 6px; } } #jsxc_dialog .progress, #jsxc_webrtc .progress { margin-bottom: 0px; } .mfp-bg { z-index: 9000; } .mfp-wrap { z-index: 9010; } .mfp-content { text-align: center; } #jsxc_dialog .mfp-close { font-size: 23px; } /* END: bootstrap */ @-webkit-keyframes bounce { 0% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 12% { bottom: 5px; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 25% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 37% { bottom: 5px; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { bottom: 0; } } @keyframes bounce { 0% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 12% { bottom: 5px; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 25% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 37% { bottom: 5px; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { bottom: 0; } } @keyframes bounce { 0% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 12% { bottom: 5px; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 25% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 37% { bottom: 5px; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { bottom: 0; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { bottom: 0; } } #jsxc_buddylist { list-style: none; padding: 0; margin: 0; width: 204px; z-index: 85; } #jsxc_buddylist .jsxc_unreadMsg .jsxc_name { padding-right: 0px; } #jsxc_buddylist .jsxc_oneway .jsxc_avatar, #jsxc_buddylist .jsxc_oneway .jsxc_caption { opacity: 0.7; } #jsxc_buddylist .jsxc_right { float: right; margin-right: 6px; } #jsxc_buddylist .jsxc_right div { font-weight: bold; text-align: center; font-size: 13px; line-height: 20px; color: #fff; } #jsxc_buddylist .jsxc_right div:hover { opacity: 1.0; } #jsxc_buddylist .jsxc_more { margin-right: 6px; z-index: 10; position: relative; } #jsxc_buddylist .jsxc_options { height: 20px; float: left; border-radius: 2px; background-color: rgba(102, 102, 102, 0.5); } #jsxc_buddylist .jsxc_options > div { height: 20px; width: 20px; float: left; margin-right: 0 1px; background-repeat: no-repeat; background-position: center center; opacity: 0.6; cursor: pointer; } #jsxc_buddylist .jsxc_options > div:hover { opacity: 1; } #jsxc_buddylist.jsxc_hideOffline .jsxc_rosteritem[data-status='offline'] { display: none; } .jsxc_online:before, .jsxc_chat:before, .jsxc_away:before, .jsxc_xa:before, .jsxc_dnd:before { content: ' '; display: block; width: 12px; height: 12px; border-radius: 100%; line-height: 12px; text-align: center; color: #fff; z-index: 99; background-repeat: no-repeat; background-position: center; background-size: 100%; box-sizing: content-box; } .jsxc_online:before { background-color: green; } .jsxc_chat:before { background-image: url('../img/presence_chat.svg'); background-color: green; } .jsxc_away:before { background-image: url('../img/presence_away.svg'); background-color: #ffa500; } .jsxc_xa:before { background-image: url('../img/presence_xa.svg'); background-color: #ffa500; } .jsxc_dnd:before { background-image: url('../img/presence_dnd.svg'); background-color: #f00; } .jsxc_hidden { display: none; } .jsxc_invalid { border: 2px solid #f00 !important; } .jsxc_emoticon { display: inline-block; width: 19px; height: 19px; background-size: contain; border: 0; vertical-align: bottom; } .jsxc_angel { background: url('../img/emotions/angel.png'); } .jsxc_angry { background: url('../img/emotions/angry.png'); } .jsxc_smile { background: url('../img/emotions/smile.png'); } .jsxc_grin { background: url('../img/emotions/grin.png'); } .jsxc_sad { background: url('../img/emotions/sad.png'); } .jsxc_wink { background: url('../img/emotions/wink.png'); } .jsxc_tonguesmile { background: url('../img/emotions/tonguesmile.png'); } .jsxc_surpised { background: url('../img/emotions/surpised.png'); } .jsxc_kiss { background: url('../img/emotions/kiss.png'); } .jsxc_sunglassess { background: url('../img/emotions/sunglassess.png'); } .jsxc_crysad { background: url('../img/emotions/crysad.png'); } .jsxc_doubt { background: url('../img/emotions/doubt.png'); } .jsxc_zip { background: url('../img/emotions/zip.png'); } .jsxc_thumbsup { background: url('../img/emotions/thumbsup.png'); } .jsxc_thumbsdown { background: url('../img/emotions/thumbsdown.png'); } .jsxc_beer { background: url('../img/emotions/beer.png'); } .jsxc_devil { background: url('../img/emotions/devil.png'); } .jsxc_kissing { background: url('../img/emotions/kissing.png'); } .jsxc_rose { background: url('../img/emotions/rose.png'); } .jsxc_music { background: url('../img/emotions/music.png'); } .jsxc_love { background: url('../img/emotions/love.png'); } .jsxc_tired { background: url('../img/emotions/tired.png'); } .jsxc_surprised { background: url('../img/emotions/surprised.png'); } #jsxc_roster { position: fixed; top: 0px; bottom: 0; right: 0; width: 200px; overflow: visible; border-left: 1px solid #e1e1e1; display: none; /*border-left: 1px solid $roster_border_left;*/ z-index: 80; margin-left: 10px; background-color: whitesmoke; } #jsxc_roster a { cursor: pointer; } #jsxc_roster .slimScrollDiv { margin-bottom: 30px; z-index: 40; } #jsxc_roster .jsxc_wait { position: absolute; top: 0; left: 0; bottom: 0; width: 160px; padding: 20px; background-color: #fff; z-index: 60; } #jsxc_roster .jsxc_wait img { padding: 5px; } #jsxc_roster .jsxc_wait h3 { margin-bottom: 5px; font-size: 1.13em; font-weight: bold; } #jsxc_roster input { position: absolute; margin: 0; height: 35px; padding: 7px 6px 5px; font-size: 13px; width: 145px; border: 1px solid #ddd; box-sizing: border-box; background-image: none; background-color: #fff; border-radius: 3px; box-shadow: inner 0 0 5px #666666; outline: none; } #jsxc_roster p { color: #333; padding: 10px; } #jsxc_roster p a { color: #b3b3b3; text-decoration: underline; } #jsxc_roster .jsxc_avatar { position: relative; cursor: pointer; } #jsxc_roster .jsxc_avatar img { cursor: pointer; } #jsxc_roster .jsxc_expand input { left: 51px; width: 137px; } #jsxc_roster.jsxc_noConnection .slimScrollDiv { display: none; } #jsxc_roster.jsxc_noConnection > .jsxc_bottom { display: none; } #jsxc_roster.jsxc_state_hidden { display: block; right: -200px; -webkit-transition: right 0.5s; transition: right 0.5s; } #jsxc_roster.jsxc_state_hidden #jsxc_toggleRoster:before { -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } #jsxc_roster.jsxc_state_shown { display: block; right: 0px; -webkit-transition: right 0.5s; transition: right 0.5s; } #jsxc_toggleRoster { width: 14px; height: 100%; position: absolute; left: -14px !important; top: 0; z-index: 110; background-color: transparent; cursor: pointer; } #jsxc_toggleRoster:hover { background-color: rgba(153, 153, 153, 0.5); } #jsxc_toggleRoster:before { content: ''; position: absolute; display: block; width: 0; top: 50%; right: 0px; border-style: solid; border-width: 6px 4px 6px 0; border-color: transparent whitesmoke; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .jsxc_rosteritem { padding: 0; margin: 0; height: 44px; border-bottom: 1px solid transparent; cursor: pointer; width: 100%; position: relative; color: #333; font-family: Arial, sans-serif; line-height: 44px; padding-left: 6px; padding-top: 4px; padding-bottom: 4px; box-sizing: border-box; } .jsxc_rosteritem:hover { background-color: #ddd; } .jsxc_rosteritem.jsxc_bookmarked .jsxc_avatar:after { content: " "; width: 20%; height: 30%; position: absolute; top: 0; right: 2px; background-size: contain; background-repeat: no-repeat; background-image: url('../img/bookmark_red.svg'); } .jsxc_caption { padding-right: 30px; height: 100%; line-height: 100%; /*padding-top: 4px;*/ box-sizing: border-box; } .jsxc_caption * { cursor: pointer; } .jsxc_caption .jsxc_name { height: 100%; line-height: 40px; } .jsxc_min .jsxc_caption .jsxc_name { height: 50%; line-height: 20px; } .jsxc_rosteritem .jsxc_caption .jsxc_name { height: 50%; line-height: 20px; } .jsxc_caption .jsxc_lastmsg { font-size: 12px; display: none; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } .jsxc_min .jsxc_caption .jsxc_lastmsg { display: block; height: 50%; line-height: 17.5px; } .jsxc_rosteritem .jsxc_caption .jsxc_lastmsg { display: block; height: 50%; line-height: 17.5px; } .jsxc_caption .jsxc_lastmsg .jsxc_text { opacity: 0.6; } .jsxc_caption .jsxc_lastmsg .jsxc_unread { line-height: 100%; font-size: 8px; color: #fff; text-align: center; display: none; height: 1em; width: 1em; border-radius: 50%; background-color: orange; vertical-align: top; margin: 0; float: none; } .jsxc_unreadMsg .jsxc_caption .jsxc_lastmsg .jsxc_unread { display: inline-block !important; } .jsxc_caption .jsxc_lastmsg .jsxc_emoticon { vertical-align: middle; } #jsxc_roster > .jsxc_bottom { position: absolute; left: 0; bottom: 0; width: 100%; line-height: 34px; background-color: #eeeeee; z-index: 50; padding-right: 4px; } #jsxc_roster > .jsxc_bottom:hover { background-color: #ddd; } #jsxc_roster > .jsxc_bottom .jsxc_inner { width: 100%; } #jsxc_roster > .jsxc_bottom ul { padding: 0; margin: 0; width: 100%; border-top: 1px solid transparent; background-color: #eeeeee; margin: 0; } #jsxc_roster > .jsxc_bottom ul li:last-child { border-bottom: 1px solid transparent; } #jsxc_roster > .jsxc_bottom li { height: 44px; background-color: #eeeeee; color: #000; cursor: pointer; width: 100%; padding-left: 44px; line-height: 44px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background-repeat: no-repeat; background-position: 15px center; background-size: 16px 16px; opacity: 0.8; } #jsxc_roster > .jsxc_bottom li.jsxc_disabled { color: #333333; cursor: default; } #jsxc_roster > .jsxc_bottom li:hover:not(.jsxc_disabled) { color: #000; background-color: #ddd; } #jsxc_roster > .jsxc_bottom > div > span { cursor: pointer; } #jsxc_roster > .jsxc_bottom > div:hover { /*color: $roster_bottom_color_hover;*/ } #jsxc_avatar { cursor: default !important; } #jsxc_presence { cursor: pointer; padding-left: 2px; overflow: hidden; } #jsxc_presence > span { opacity: 0.8; } #jsxc_presence li { position: relative; } #jsxc_presence li:before { /** Presence indicator */ position: absolute; top: 50%; left: 10px; margin-top: -8px; border: 2px solid whitesmoke; } #jsxc_menu { height: 44px; width: 44px; cursor: pointer; float: right; text-align: center; } #jsxc_menu:hover > span { opacity: 1; } #jsxc_menu > span { opacity: 0.5; display: block; width: 100%; height: 100%; background-image: url('../img/menu_black.svg'); background-repeat: no-repeat; background-position: center 10px; background-size: 17px; } @media (min-width: 768px) { #jsxc_menu { height: 30px; width: 30px; } } #jsxc_notice { height: 30px; width: 30px; float: right; text-align: center; line-height: 30px; } #jsxc_notice span { background-color: #ffa500; border-radius: 11px; color: #000; font-size: 80%; padding: 2px; position: relative; -webkit-animation: bounce 2s 1s infinite; animation: bounce 2s 1s infinite; } #jsxc_notice > span:empty { display: none; } #jsxc_windowList { position: fixed; bottom: 0; right: 210px; left: 0; z-index: 50; -webkit-transition: right 0.5s; transition: right 0.5s; } #jsxc_windowList.jsxc_roster_hidden { right: 10px; } @media (min-width: 768px) { #jsxc_windowList { clip: rect(-10000px, 10000px, 30px, 30px); } } #jsxc_windowList > ul { list-style: none; padding: 0; margin: 0; position: absolute; bottom: 0; right: 0; height: 44px; overflow: visible; white-space: nowrap; -webkit-transition: right 0.5s; transition: right 0.5s; } #jsxc_windowList > ul > li { padding: 0; margin: 0; display: inline-block; height: 44px; width: 46px; position: relative; overflow: visible; margin-right: 5px; cursor: pointer; white-space: normal; } #jsxc_windowList > ul > li.jsxc_normal { -webkit-transition: width 0.2s; transition: width 0.2s; width: 250px; } #jsxc_windowList > ul > li.jsxc_min { -webkit-transition: width 0.2s; transition: width 0.2s; width: 46px !important; /* overwrite resizeable width */ } @media (min-width: 768px) { #jsxc_windowList > ul > li.jsxc_min { width: 200px !important; } } #jsxc_windowList > ul > li.jsxc_min .jsxc_emoticons { display: none; } #jsxc_windowList > ul > li.jsxc_min .jsxc_tools { display: none; } #jsxc_windowListSB { position: fixed; left: 0; bottom: 0; width: 30px; height: 30px; } @media (max-width: 768px) { #jsxc_windowListSB { display: none; } } #jsxc_windowListSB > div { box-sizing: border-box; width: 14px; height: 100%; background-color: #cccccc; color: gray; text-align: center; line-height: 30px; float: left; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } #jsxc_windowListSB > div:hover { background-color: #b3b3b3; } #jsxc_windowListSB > .jsxc_disabled { background-color: #e6e6e6 !important; color: #cccccc; cursor: default !important; display: none; } .jsxc_bar { background-color: #1d2d44; cursor: pointer; height: 44px; line-height: 26px; padding: 2px; color: #bbb; width: 100%; box-sizing: border-box; position: relative; } .jsxc_normal .jsxc_bar:hover { color: #fff; } .jsxc_normal .jsxc_bar .jsxc_tools:hover { color: #000; } .jsxc_min .jsxc_bar { background-color: #eee; color: #000; } .jsxc_window { position: absolute; bottom: -284px; top: auto; left: 0; right: 0; height: auto; background-color: whitesmoke; z-index: 80; cursor: default; border: 1px solid #e1e1e1; border-bottom: 0; } .jsxc_min .jsxc_window { -webkit-transition: bottom 0.2s; transition: bottom 0.2s; } .jsxc_normal .jsxc_window { -webkit-transition: bottom 0.2s; transition: bottom 0.2s; } .jsxc_showOverlay .jsxc_window .jsxc_overlay { display: block !important; } .jsxc_window .jsxc_emoticons { height: 44px; width: 44px; position: absolute; bottom: 0; left: 0; cursor: pointer; } .jsxc_window .jsxc_emoticons:after { content: ' '; background-image: url('../img/smiley.svg'); background-position: center center; background-repeat: no-repeat; background-size: 30px 30px; opacity: 0.3; position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .jsxc_window .jsxc_emoticons .jsxc_inner { left: 5px; } .jsxc_window .jsxc_emoticons ul { width: 210px; margin-bottom: 8px; background-color: rgba(51, 51, 51, 0.8); border-radius: 3px; z-index: 200; list-style-type: none; padding: 3px; position: relative; } .jsxc_window .jsxc_emoticons ul:after { content: ''; position: absolute; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 8px solid rgba(51, 51, 51, 0.8); display: block; width: 0; z-index: 1; left: 7px; top: 100%; } .jsxc_window .jsxc_emoticons li div { float: left; cursor: pointer; border-radius: 3px; background-size: 30px 30px; width: 30px; height: 30px; } .jsxc_window .jsxc_emoticons li div:hover { background-color: rgba(255, 255, 255, 0.8); } .jsxc_window .jsxc_emoticons:hover:after { opacity: 0.5; } .jsxc_window .jsxc_fade { position: relative; } .jsxc_window .jsxc_fade .jsxc_overlay { display: none; background-color: rgba(0, 0, 0, 0.5); position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; overflow-y: scroll; } .jsxc_window .jsxc_fade .jsxc_overlay > div { background-color: #fff; margin: 30px 10px; padding: 5px; border-radius: 3px; text-align: center; position: relative; } .jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close { position: absolute; top: 0; right: 0; height: 44px; width: 44px; } .jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close:after { content: '×'; position: absolute; top: 4px; right: 4px; font-size: 20px; font-family: Arial, sans-serif; cursor: pointer; color: #000; opacity: 0.4; } .jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close:hover:after { opacity: 1; } @media (min-width: 768px) { .jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_close { width: 30px; height: 30px; } } .jsxc_window .jsxc_fade .jsxc_overlay > div .jsxc_body { margin-top: 20px; } .jsxc_window .jsxc_fade .jsxc_overlay > div p { margin-bottom: 10px; } .jsxc_window .jsxc_fade .jsxc_overlay > div li { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .jsxc_window .jsxc_fade .jsxc_overlay > div a:hover { text-decoration: underline; } .jsxc_window .jsxc_avatar { margin-top: 1px; } .jsxc_window .jsxc_textarea { width: 100%; overflow: hidden; padding: 3px; } .jsxc_window .slimScrollDiv { margin: 0 0 6px 0; left: auto !important; top: auto !important; } .jsxc_window input.jsxc_textinput { width: 100%; height: 44px; margin: 0; padding: 3px; padding-left: 40px; padding-right: 40px; outline: none; border-radius: 0; box-sizing: border-box; border: 0; } .jsxc_window input::-webkit-input-placeholder { color: #000; opacity: 0.3; } .jsxc_window input::-moz-placeholder { color: #000; opacity: 0.3; } .jsxc_window input:-ms-input-placeholder { color: #000; opacity: 0.3; } .jsxc_window input::placeholder { color: #000; opacity: 0.3; } .jsxc_window .jsxc_tools { float: right; } .jsxc_window .jsxc_tools > .jsxc_disabled { opacity: 0.3; cursor: default !important; } .jsxc_window .jsxc_tools > div { width: 25px; height: 40px; display: block; float: left; color: #fff; opacity: 0.4; font-family: Arial, sans-serif; line-height: 40px; cursor: pointer; text-align: center; } .jsxc_window .jsxc_tools > div.jsxc_settings { opacity: 1.0; } .jsxc_window .jsxc_close { font-size: 20px; } .jsxc_window .jsxc_close:hover { color: #fff; opacity: 1.0; } .jsxc_window .jsxc_more { background-image: url('../img/more_white.svg'); opacity: 0.4; } .jsxc_window .ui-resizable-w { left: 0; } .jsxc_window .ui-resizable-nw { top: 0; left: 0; width: 15px; height: 15px; z-index: 95 !important; background-image: url('../img/resize_gray.svg'); } .jsxc_window .ui-resizable-n { position: absolute; top: 0; left: 0; right: 0; height: 15px; z-index: 100; } .jsxc_chatmessage { margin: 3px; padding: 4px; word-wrap: break-word; background-color: #fff; position: relative; outline: none; clear: both; } .jsxc_chatmessage a { color: #00f; text-decoration: underline; display: inline-block; } .jsxc_chatmessage img { max-width: 100%; } .jsxc_chatmessage .jsxc_avatar { display: none; } .jsxc_chatmessage .jsxc_attachment { border-radius: 3px; background-color: #fff; padding: 3px; padding-left: 30px; min-height: 30px; margin-bottom: 5px; background-position: 3px center; background-size: 25px 25px; background-repeat: no-repeat; background-image: url('../img/filetypes/file.svg'); } .jsxc_chatmessage .jsxc_attachment img { border-radius: 3px; } .jsxc_chatmessage .jsxc_attachment.jsxc_image { line-height: 0px; padding: 0; background-image: url(); } .jsxc_chatmessage .jsxc_attachment.jsxc_application { background-image: url('../img/filetypes/application.svg'); } .jsxc_chatmessage .jsxc_attachment.jsxc_application-pdf { background-image: url('../img/filetypes/application-pdf.svg'); } .jsxc_chatmessage .jsxc_attachment.jsxc_audio { background-image: url('../img/filetypes/audio.svg'); } .jsxc_chatmessage .jsxc_attachment.jsxc_video { background-image: url('../img/filetypes/video.svg'); } .jsxc_chatmessage .jsxc_attachment.jsxc_text { background-image: url('../img/filetypes/text.svg'); } .jsxc_timestamp { font-size: 8px; color: #999999; line-height: 8px; overflow: hidden; white-space: nowrap; max-width: 100%; text-overflow: ellipsis; clear: both; } .jsxc_encrypted.jsxc_received.jsxc_out .jsxc_timestamp { margin-right: 1px; } .jsxc_encrypted .jsxc_timestamp:after { content: " "; display: inline-block; width: 10px; height: 8px; margin-left: 2px; background-image: url('../img/padlock_close_grey.svg'); background-size: contain; background-repeat: no-repeat; } .jsxc_in { float: left; position: relative; max-width: 76%; margin-left: 10px; border-radius: 3px; background-color: #DBEDFF; } .jsxc_in:after { content: ' '; position: absolute; border-style: solid; border-width: 5px 6px 5px 0; border-color: transparent #DBEDFF; display: block; width: 0; z-index: 1; left: -6px; bottom: 10px; } .jsxc_in .jsxc_timestamp { float: left; } .jsxc_out { float: right; position: relative; max-width: 76%; margin-right: 10px; padding-right: 10px; border-radius: 3px; background-color: #e6ffd1; } .jsxc_out:after { content: ' '; position: absolute; border-style: solid; border-width: 5px 0 5px 6px; border-color: transparent #e6ffd1; display: block; width: 0; z-index: 1; right: -6px; bottom: 10px; } .jsxc_out.jsxc_received:before { content: '✓'; position: absolute; bottom: 2px; right: 2px; font-size: 12px; line-height: 12px; color: #008000; } .jsxc_out.jsxc_received .jsxc_timestamp { margin-right: 4px; } .jsxc_out .jsxc_timestamp { float: right; } .jsxc_sys { width: auto; max-width: none; padding-right: 4px; box-sizing: border-box; margin-right: 3px; border-radius: 3px; } div.jsxc_settings { position: relative; } div.jsxc_settings .jsxc_inner { left: auto; top: 100%; right: -6px; } div.jsxc_transfer { background-image: url('../img/padlock_open_black.svg'); background-repeat: no-repeat; background-position: center center; background-size: 14px 14px; opacity: 0.3; height: 44px; width: 44px; position: absolute; bottom: 0; right: 0; cursor: pointer; } div.jsxc_transfer:hover { opacity: 1.0; } div.jsxc_transfer.jsxc_disabled { background-image: url('../img/padlock_open_disabled_black.svg'); cursor: default; } div.jsxc_transfer.jsxc_disabled:hover { opacity: 0.3; } div.jsxc_transfer.jsxc_fin { opacity: 1.0; background-image: url('../img/padlock_close_grey.svg'); } div.jsxc_transfer.jsxc_enc { opacity: 1.0; background-image: url('../img/padlock_close_orange.svg'); } div.jsxc_transfer.jsxc_enc.jsxc_trust { background-image: url('../img/padlock_close_green.svg'); } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_bar .jsxc_avatar, li[data-type="groupchat"] .jsxc_avatar { text-indent: 999px; background-image: url('../img/group_white.svg'); background-size: 70% 70% !important; background-repeat: no-repeat; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_fade { padding-top: 44px; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_fingerprints, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_verification, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_transfer, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_video, .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_sendFile { display: none; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_members { background-image: url('../img/group_white.svg'); background-size: 15px 15px; background-repeat: no-repeat; background-position: center; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_members:hover { opacity: 1.0; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_chatmessage.jsxc_in { margin-left: 50px; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_chatmessage.jsxc_in .jsxc_avatar { display: block; position: absolute; bottom: 0px; left: -50px; background-color: #777; } .jsxc_windowItem.jsxc_groupchat.jsxc_normal .jsxc_chatmessage.jsxc_in .jsxc_avatar:before { display: none; } .jsxc_windowItem .jsxc_memberlist { height: 44px; width: 100%; background-color: #1d2d44; overflow: hidden; position: absolute; top: 0px; -webkit-transition: height 400ms; transition: height 400ms; z-index: 100; } .jsxc_windowItem .jsxc_memberlist ul { white-space: nowrap; position: absolute; background-color: #1d2d44; color: #bbb; overflow: hidden; -webkit-transition: left 400ms; transition: left 400ms; padding: 0px; padding-left: 6px; padding-right: 6px; padding-top: 3px; } .jsxc_windowItem .jsxc_memberlist ul > li { display: inline-block; white-space: normal; } .jsxc_windowItem .jsxc_memberlist ul > li:last-child { margin-right: 2px; } .jsxc_windowItem .jsxc_memberlist ul > li .jsxc_name { display: none; } .jsxc_windowItem .jsxc_memberlist ul > li .jsxc_avatar { margin-left: 2px; margin-right: 0px; } .jsxc_windowItem .jsxc_memberlist.jsxc_expand ul { white-space: normal; } .jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li { display: block; width: 100%; height: 40px; line-height: 40px; } .jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_name { display: block; cursor: default; } .jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_name:hover { color: inherit; } .jsxc_windowItem .jsxc_memberlist.jsxc_expand ul > li .jsxc_avatar { margin-right: 4px; } li[data-type="groupchat"] .jsxc_video { display: none; } .jsxc_right { text-align: right; } .jsxc_center { text-align: center; } .jsxc_sep { border-top: 1px solid #000; } .jsxc_name { overflow: hidden; cursor: pointer; text-overflow: ellipsis; white-space: nowrap; } .jsxc_maxWidth { max-width: 500px; } #jsxc_dialog { padding: 20px; min-width: 320px; max-width: 100%; display: inline-block; text-align: left; position: relative; background: #FFF; width: auto; border-radius: 5px; } #jsxc_dialog * { box-sizing: border-box; } #jsxc_dialog ul { list-style: none; margin: 0; padding: 0; } #jsxc_dialog li { margin: 0; padding: 0; } #jsxc_dialog p { margin-bottom: 1em; } #jsxc_dialog p input { margin-bottom: 5px; width: 60%; outline: none; } #jsxc_dialog p input[type="submit"] { width: auto; } #jsxc_dialog hr { border: 0; border-top: 1px solid #eee; margin-top: 20px; margin-bottom: 20px; } #jsxc_dialog h3 { font-size: 120%; font-weight: bold; margin-bottom: 10px; margin-top: 20px; } #jsxc_dialog .jsxc_right { margin-top: 20px; } #jsxc_dialog form { /*&.col-sm-6:nth-child(odd) { clear: left; }*/ } #jsxc_dialog form fieldset { margin-bottom: 30px; padding: 0px 30px; border: 1px solid #d9d9d9; } #jsxc_dialog form fieldset h3 { font-size: 15px; color: #000; background-color: #f2f2f2; padding: 10px; margin: 0 -30px 10px -30px; } #jsxc_dialog legend { border: 0; font-size: 20px; } #jsxc_dialog input { outline: none; } #jsxc_dialog input:invalid { border: 1px solid #f00; } #jsxc_dialog .btn-group button { margin-right: 0; } #jsxc_dialog input[readonly] { background-color: #e6e6e6; } #jsxc_dialog .jsxc_inputinfo { padding-left: 30%; font-style: italic; margin-top: -1em; } #jsxc_dialog .jsxc_waiting:before { content: " "; width: 1em; height: 1em; display: inline-block; background-size: 100%; margin: 0 3px 0 0; background-image: url('../img/loading.gif'); } #jsxc_dialog .jsxc_libraries, #jsxc_dialog .jsxc_credits { max-width: 300px; } .jsxc_avatar { width: 36px; height: 36px; line-height: 36px; margin: 0px 5px; background-color: #999999; border-radius: 50%; float: left; text-align: center; font-weight: bold; font-size: 30px; color: #b3b3b3; position: relative; font-family: Arial, sans-serif; background-size: cover; background-position: center center; } .jsxc_avatar img { display: block; width: 25px; height: 25px; position: absolute; top: 0; left: 0; } .jsxc_avatar:before { position: absolute; top: -2px; left: -6px; border: 2px solid whitesmoke; } ul.jsxc_vCard { min-width: 400px; } ul.jsxc_vCard ul { margin-left: 20px; } ul.jsxc_vCard li { cursor: default !important; } /** Spot which is attached to xmpp: uris */ .jsxc_spot { display: inline-block; width: 12px; height: 12px; border-radius: 50%; text-indent: -99999em; margin-top: 3px; margin-right: 5px; line-height: 100%; cursor: pointer; border: 1px solid #000; background-color: #fff; } .jsxc_spot:before { position: absolute; } .jsxc_spot.jsxc_online, .jsxc_spot.jsxc_chat, .jsxc_spot.jsxc_away, .jsxc_spot.jsxc_xa, .jsxc_spot.jsxc_dnd, .jsxc_spot.jsxc_offline { border: 0; } .jsxc_unread { display: none; } .jsxc_unreadMsg .jsxc_name { font-style: italic; } .jsxc_unreadMsg .jsxc_unread { display: block; background-color: #ffa500; border-radius: 11px; color: #000; font-size: 80%; padding: 2px; line-height: 15px; float: right; margin-right: 3px; margin-top: 4px; } /** TODO: check if required */ .jsxc_list .jsxc_inner { box-sizing: border-box; max-height: 0; -webkit-transition: max-height 0.5s; transition: max-height 0.5s; overflow: hidden; visibility: hidden; position: absolute; bottom: 100%; left: 0; } .jsxc_list.jsxc_opened .jsxc_inner { max-height: 1000px; visibility: visible; display: block; } #cboxWrapper { outline: none; } .jsxc_loading { margin: 0 auto; width: 32px; height: 32px; border: 0; background-size: 32px 32px !important; background: url('../img/loading.gif'); } /* @TODO: check */ #jsxc_loginForm input[type="submit"] { height: 34px; display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: normal; line-height: 1.428571429; text-align: center; white-space: nowrap; vertical-align: middle; cursor: pointer; border: 1px solid transparent; border-radius: 4px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; color: #fff; background-color: #5cb85c; border-color: #4cae4c; } .jsxc_oneway .jsxc_avatar { -webkit-filter: grayscale(100%); filter: grayscale(100%); } img.jsxc_vCard { float: right; max-width: 200px; max-height: 200px; border: 5px solid #fff; border-radius: 2px; } .jsxc_alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .jsxc_alert.jsxc_alert-warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } .jsxc_btn { width: auto; min-width: 25px; display: inline-block; padding: 6px 12px; margin: 0px 2px; font-size: 14px; font-weight: 400; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px; } .jsxc_btn.jsxc_btn-default { border-color: #ccc; color: #555; background-color: rgba(240, 240, 240, 0.9); } .jsxc_btn.jsxc_btn-primary { color: #fff; background-color: #337ab7; border-color: #2e6da4; } .jsxc_btn[disabled], .jsxc_btn[disabled]:hover { opacity: 0.65; cursor: not-allowed; color: #fff; background-color: #337ab7; border-color: #2e6da4; } .jsxc_menu { display: none; position: absolute; background-color: #FFF; color: #333; border-radius: 3px 3px 3px 3px; z-index: 110; margin: 8px 2px 5px 10px; right: 0px; -webkit-filter: drop-shadow(0px 0px 5px rgba(150, 150, 150, 0.75)); filter: drop-shadow(0px 0px 5px rgba(150, 150, 150, 0.75)); padding: 4px 12px; padding-left: 5px; } .jsxc_menu:after { bottom: 100%; right: 6px; border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; border-color: rgba(238, 238, 238, 0); border-bottom-color: #fff; border-width: 10px; } .jsxc_menu.jsxc_open { display: block; } .jsxc_menu ul { list-style: none; margin: 0; padding: 0; } .jsxc_menu li { border: 0; cursor: auto; } .jsxc_menu a { color: #000; opacity: 0.5; white-space: nowrap; } .jsxc_menu a:hover { text-decoration: none; opacity: 1.0; } .jsxc_menu a.jsxc_disabled { text-decoration: line-through; opacity: 0.5; } .jsxc_menu a.jsxc_disabled:hover { text-decoration: line-through; opacity: 0.5; } .jsxc_menu a.jsxc_disabled span { cursor: default; } .jsxc_menu .jsxc_icon { width: 16px; height: 16px; margin-right: 8px; display: inline-block; background-repeat: no-repeat; background-size: contain; background-position: center; vertical-align: sub; } .jsxc_editicon { background-image: url('../img/edit_black.svg'); } .jsxc_deleteicon { background-image: url('../img/delete_black.svg'); } .jsxc_chaticon { background-image: url('../img/speech_balloon_black.svg'); } .jsxc_videoicon { background-image: url('../img/camera_icon_black.svg'); } .jsxc_infoicon { background-image: url('../img/info_black.svg'); } .jsxc_settingsicon { background-image: url('../img/gear_black.svg'); } .jsxc_helpicon { background-image: url('../img/help_black.svg'); } .jsxc_contacticon { background-image: url('../img/contact_black.svg'); } .jsxc_groupcontacticon { background-image: url('../img/groupcontact_black.svg'); } .jsxc_bookmarkicon { background-image: url('../img/bookmark_black.svg'); } .jsxc_more { float: right; width: 44px; height: 100%; cursor: pointer; background-image: url('../img/more_black.svg'); background-repeat: no-repeat; background-position: center; opacity: 0.4; } .jsxc_more:hover { opacity: 1.0; } @media (min-width: 768px) { .jsxc_more { width: 25px; } } .jsxc_remotevideo, .jsxc_noRemoteVideo { width: 100%; height: 100%; position: absolute; top: 0; left: 0; z-index: 9000; background-color: #999999; } #jsxc_webrtc { position: fixed; top: 0; bottom: 0; right: 0; left: 0; z-index: 9999; background-color: black; } #jsxc_webrtc .jsxc_status { z-index: 9999; border-radius: 20px; display: none; position: absolute; top: 30px; left: 50%; background-color: rgba(0, 0, 0, 0.5); color: #fff; padding: 15px; font-weight: bold; text-align: center; } #jsxc_webrtc .slimScrollDiv { opacity: 1 !important; } #jsxc_webrtc li .jsxc_name { cursor: auto; } #jsxc_webrtc li .jsxc_name:hover { color: #bbb; } .jsxc_videoContainer { position: absolute; top: 0; left: 0; right: 0px; bottom: 0px; background-color: #999999; } .jsxc_videoContainer video { display: none; } .jsxc_videoContainer .jsxc_noRemoteVideo { display: none; } @media (min-width: 768px) { .jsxc_videoContainer { right: 250px; } .jsxc_videoContainer .jsxc_controlbar { opacity: 0; } .jsxc_videoContainer:hover .jsxc_controlbar { opacity: 1.0; } } .jsxc_noRemoteVideo p { position: absolute; bottom: 0; left: 0; text-align: center; color: #fff; width: 100%; z-index: 100; } .jsxc_noRemoteVideo > div { width: 200px; height: 200px; overflow: hidden; position: absolute; top: 50%; margin-top: -100px; left: 50%; margin-left: -100px; } .jsxc_noRemoteVideo > div > div { background-color: #4d4d4d; } .jsxc_noRemoteVideo > div > div:first-child { width: 50%; height: 50%; border-radius: 50%; position: absolute; left: 50%; margin-left: -25%; top: 10%; } .jsxc_noRemoteVideo > div > div:last-child { position: absolute; bottom: -50%; width: 100%; height: 100%; border-radius: 50%; } .jsxc_localvideo { width: 160px; height: 120px; position: absolute; right: 10px; bottom: 10px; z-index: 9990; background-color: #000; cursor: pointer; } div:full-screen { width: 100%; height: 100%; background-color: #000; } div:full-screen.jsxc_localvideo { border: 1px solid #fff; } div:-webkit-full-screen { width: 100%; height: 100%; background-color: #000; } div:-moz-full-screen { width: 100%; height: 100%; background-color: #000; } div:-ms-fullscreen { width: 100%; height: 100%; background-color: #000; } div:fullscreen { width: 100%; height: 100%; background-color: #000; } div:-webkit-full-screen.jsxc_localvideo { border: 1px solid #fff; } div:-moz-full-screen.jsxc_localvideo { border: 1px solid #fff; } div:-ms-fullscreen.jsxc_localvideo { border: 1px solid #fff; } div:fullscreen.jsxc_localvideo { border: 1px solid #fff; } div.jsxc_video { background-image: url('../img/camera_icon_white.svg'); background-repeat: no-repeat; background-position: center center; background-size: 15px 15px; opacity: 0.4; } div.jsxc_video.jsxc_disabled { background-image: url('../img/camera_disabled_icon_white.svg'); } div.jsxc_video:not(.jsxc_disabled):hover { opacity: 1.0; } .jsxc_controlbar { position: absolute; top: 50px; left: 0; right: 0px; text-align: center; z-index: 9090; -webkit-transition: 1s opacity; transition: 1s opacity; opacity: 0; } @media (min-width: 768px) { .jsxc_controlbar { bottom: 5%; top: initial; } } .jsxc_controlbar.jsxc_visible { opacity: 1.0; } .jsxc_controlbar > div { background-color: rgba(0, 0, 0, 0.5); height: 44px; border-radius: 22px; padding: 0px 5px; display: inline-block; } .jsxc_controlbar .jsxc_videoControl { height: 44px; width: 44px; margin: 0 5px; background-position: center; background-repeat: no-repeat; background-size: 90%; cursor: pointer; display: inline-block; opacity: 0.8; } .jsxc_controlbar .jsxc_videoControl:hover { opacity: 1.0; } .jsxc_controlbar .jsxc_hangUp { background-image: url('../img/hang_up_red.svg'); } .jsxc_controlbar .jsxc_fullscreen { background-image: url('../img/fullscreen_white.svg'); } .jsxc_controlbar .jsxc_showchat { float: right; } .jsxc_multi > div { display: none; } .jsxc_snapshotbar { width: 100%; display: none; } .jsxc_snapshotbar img { height: 50px; } .jsxc_buttongroup { display: inline; } .jsxc_buttongroup button:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; margin-right: 0; } .jsxc_buttongroup button:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: 0; } .jsxc_chatarea { position: absolute; top: 0; right: 0; bottom: 0; width: 250px; background-color: whitesmoke; display: none; } @media (min-width: 768px) { .jsxc_chatarea { display: block; } } .jsxc_chatarea .jsxc_settings { display: none !important; } .jsxc_chatarea .jsxc_close { display: none !important; } .jsxc_chatarea .jsxc_video { display: none !important; } .jsxc_chatarea .jsxc_window { bottom: 0; box-shadow: none; } .jsxc_chatarea > ul { width: 100%; height: 100%; list-style: none; padding: 0; } .bubblingG { text-align: center; width: 129px; height: 80px; position: absolute; top: 40%; left: 50%; margin-left: -64px; } .bubblingG span { display: inline-block; vertical-align: middle; width: 16px; height: 16px; margin: 40px auto; background: #000; border-radius: 81px; -webkit-animation: bubblingG 1.3s infinite alternate; animation: bubblingG 1.3s infinite alternate; } #bubblingG_1 { -webkit-animation-delay: 0s; animation-delay: 0s; } #bubblingG_2 { -webkit-animation-delay: 0.39s; animation-delay: 0.39s; } #bubblingG_3 { -webkit-animation-delay: 0.78s; animation-delay: 0.78s; } @-webkit-keyframes bubblingG { 0% { width: 16px; height: 16px; background-color: #000; -webkit-transform: translateY(0); transform: translateY(0); } 100% { width: 39px; height: 39px; background-color: #fff; -webkit-transform: translateY(-34px); transform: translateY(-34px); } } @keyframes bubblingG { 0% { width: 16px; height: 16px; background-color: #000; -webkit-transform: translateY(0); transform: translateY(0); } 100% { width: 39px; height: 39px; background-color: #fff; -webkit-transform: translateY(-34px); transform: translateY(-34px); } } .jsxc_fullscreen.jsxc_localvideo { border: 1px solid #fff; } .jsxc_videoSuitable .jsxc_name { font-style: italic; } jsxc-3.0.0/build/css/magnific-popup.css0000644000175000017500000001715512670572546017053 0ustar pravipravi/* Magnific Popup CSS */ .mfp-bg { top: 0; left: 0; width: 100%; height: 100%; z-index: 1042; overflow: hidden; position: fixed; background: #0b0b0b; opacity: 0.8; filter: alpha(opacity=80); } .mfp-wrap { top: 0; left: 0; width: 100%; height: 100%; z-index: 1043; position: fixed; outline: none !important; -webkit-backface-visibility: hidden; } .mfp-container { text-align: center; position: absolute; width: 100%; height: 100%; left: 0; top: 0; padding: 0 8px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .mfp-container:before { content: ''; display: inline-block; height: 100%; vertical-align: middle; } .mfp-align-top .mfp-container:before { display: none; } .mfp-content { position: relative; display: inline-block; vertical-align: middle; margin: 0 auto; text-align: left; z-index: 1045; } .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { width: 100%; cursor: auto; } .mfp-ajax-cur { cursor: progress; } .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { cursor: -moz-zoom-out; cursor: -webkit-zoom-out; cursor: zoom-out; } .mfp-zoom { cursor: pointer; cursor: -webkit-zoom-in; cursor: -moz-zoom-in; cursor: zoom-in; } .mfp-auto-cursor .mfp-content { cursor: auto; } .mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter { -webkit-user-select: none; -moz-user-select: none; user-select: none; } .mfp-loading.mfp-figure { display: none; } .mfp-hide { display: none !important; } .mfp-preloader { color: #CCC; position: absolute; top: 50%; width: auto; text-align: center; margin-top: -0.8em; left: 8px; right: 8px; z-index: 1044; } .mfp-preloader a { color: #CCC; } .mfp-preloader a:hover { color: #FFF; } .mfp-s-ready .mfp-preloader { display: none; } .mfp-s-error .mfp-content { display: none; } button.mfp-close, button.mfp-arrow { overflow: visible; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; display: block; outline: none; padding: 0; z-index: 1046; -webkit-box-shadow: none; box-shadow: none; } button::-moz-focus-inner { padding: 0; border: 0; } .mfp-close { width: 44px; height: 44px; line-height: 44px; position: absolute; right: 0; top: 0; text-decoration: none; text-align: center; opacity: 0.65; filter: alpha(opacity=65); padding: 0 0 18px 10px; color: #FFF; font-style: normal; font-size: 28px; font-family: Arial, Baskerville, monospace; } .mfp-close:hover, .mfp-close:focus { opacity: 1; filter: alpha(opacity=100); } .mfp-close:active { top: 1px; } .mfp-close-btn-in .mfp-close { color: #333; } .mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close { color: #FFF; right: -6px; text-align: right; padding-right: 6px; width: 100%; } .mfp-counter { position: absolute; top: 0; right: 0; color: #CCC; font-size: 12px; line-height: 18px; white-space: nowrap; } .mfp-arrow { position: absolute; opacity: 0.65; filter: alpha(opacity=65); margin: 0; top: 50%; margin-top: -55px; padding: 0; width: 90px; height: 110px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } .mfp-arrow:active { margin-top: -54px; } .mfp-arrow:hover, .mfp-arrow:focus { opacity: 1; filter: alpha(opacity=100); } .mfp-arrow:before, .mfp-arrow:after, .mfp-arrow .mfp-b, .mfp-arrow .mfp-a { content: ''; display: block; width: 0; height: 0; position: absolute; left: 0; top: 0; margin-top: 35px; margin-left: 35px; border: medium inset transparent; } .mfp-arrow:after, .mfp-arrow .mfp-a { border-top-width: 13px; border-bottom-width: 13px; top: 8px; } .mfp-arrow:before, .mfp-arrow .mfp-b { border-top-width: 21px; border-bottom-width: 21px; opacity: 0.7; } .mfp-arrow-left { left: 0; } .mfp-arrow-left:after, .mfp-arrow-left .mfp-a { border-right: 17px solid #FFF; margin-left: 31px; } .mfp-arrow-left:before, .mfp-arrow-left .mfp-b { margin-left: 25px; border-right: 27px solid #3F3F3F; } .mfp-arrow-right { right: 0; } .mfp-arrow-right:after, .mfp-arrow-right .mfp-a { border-left: 17px solid #FFF; margin-left: 39px; } .mfp-arrow-right:before, .mfp-arrow-right .mfp-b { border-left: 27px solid #3F3F3F; } .mfp-iframe-holder { padding-top: 40px; padding-bottom: 40px; } .mfp-iframe-holder .mfp-content { line-height: 0; width: 100%; max-width: 900px; } .mfp-iframe-holder .mfp-close { top: -40px; } .mfp-iframe-scaler { width: 100%; height: 0; overflow: hidden; padding-top: 56.25%; } .mfp-iframe-scaler iframe { position: absolute; display: block; top: 0; left: 0; width: 100%; height: 100%; box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); background: #000; } /* Main image in popup */ img.mfp-img { width: auto; max-width: 100%; height: auto; display: block; line-height: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 40px 0 40px; margin: 0 auto; } /* The shadow behind the image */ .mfp-figure { line-height: 0; } .mfp-figure:after { content: ''; position: absolute; left: 0; top: 40px; bottom: 40px; display: block; right: 0; width: auto; height: auto; z-index: -1; box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); background: #444; } .mfp-figure small { color: #BDBDBD; display: block; font-size: 12px; line-height: 14px; } .mfp-figure figure { margin: 0; } .mfp-bottom-bar { margin-top: -36px; position: absolute; top: 100%; left: 0; width: 100%; cursor: auto; } .mfp-title { text-align: left; line-height: 18px; color: #F3F3F3; word-wrap: break-word; padding-right: 36px; } .mfp-image-holder .mfp-content { max-width: 100%; } .mfp-gallery .mfp-image-holder .mfp-figure { cursor: pointer; } @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { /** * Remove all paddings around the image on small screen */ .mfp-img-mobile .mfp-image-holder { padding-left: 0; padding-right: 0; } .mfp-img-mobile img.mfp-img { padding: 0; } .mfp-img-mobile .mfp-figure:after { top: 0; bottom: 0; } .mfp-img-mobile .mfp-figure small { display: inline; margin-left: 5px; } .mfp-img-mobile .mfp-bottom-bar { background: rgba(0, 0, 0, 0.6); bottom: 0; margin: 0; top: auto; padding: 3px 5px; position: fixed; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .mfp-img-mobile .mfp-bottom-bar:empty { padding: 0; } .mfp-img-mobile .mfp-counter { right: 5px; top: 3px; } .mfp-img-mobile .mfp-close { top: 0; right: 0; width: 35px; height: 35px; line-height: 35px; background: rgba(0, 0, 0, 0.6); position: fixed; text-align: center; padding: 0; } } @media all and (max-width: 900px) { .mfp-arrow { -webkit-transform: scale(0.75); transform: scale(0.75); } .mfp-arrow-left { -webkit-transform-origin: 0; transform-origin: 0; } .mfp-arrow-right { -webkit-transform-origin: 100%; transform-origin: 100%; } .mfp-container { padding-left: 6px; padding-right: 6px; } } .mfp-ie7 .mfp-img { padding: 0; } .mfp-ie7 .mfp-bottom-bar { width: 600px; left: 50%; margin-left: -300px; margin-top: 5px; padding-bottom: 5px; } .mfp-ie7 .mfp-container { padding: 0; } .mfp-ie7 .mfp-content { padding-top: 44px; } .mfp-ie7 .mfp-close { top: 0; right: 0; padding-top: 0; } jsxc-3.0.0/build/css/jquery-ui.min.css0000644000175000017500000006206512670572546016651 0ustar pravipravi/*! jQuery UI - v1.10.4 - 2014-01-17 * 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, jquery.ui.theme.css * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ .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}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.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}.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}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height: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}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}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,.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:700;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;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;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.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{overflow:hidden;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:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 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:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;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}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.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:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.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 #000}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.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:0;background:0;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}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;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 .ui-tabs-anchor{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 .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.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}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus 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 #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.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)}.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)}.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{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{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}.ui-widget-overlay{background:#aaa url(images/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:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}jsxc-3.0.0/build/jsxc.js0000644000175000017500000114527012670572546014141 0ustar pravipravi/*! * jsxc v3.0.0 - 2016-03-11 * * Copyright (c) 2016 Klaus Herberth
* Released under the MIT license * * Please see http://www.jsxc.org/ * * @author Klaus Herberth * @version 3.0.0 * @license MIT */ /*! This file is concatenated for the browser. */ var jsxc = null, RTC = null, RTCPeerconnection = null; (function($) { "use strict"; /** * JavaScript Xmpp Chat namespace * * @namespace jsxc */ jsxc = { /** Version of jsxc */ version: '3.0.0', /** True if i'm the master */ master: false, /** True if the role allocation is finished */ role_allocation: false, /** Timeout for keepalive */ to: null, /** Timeout after normal keepalive starts */ toBusy: null, /** Timeout for notification */ toNotification: null, /** Timeout delay for notification */ toNotificationDelay: 500, /** Interval for keep-alive */ keepalive: null, /** True if jid, sid and rid was used to connect */ reconnect: false, /** True if restore is complete */ restoreCompleted: false, /** True if login through box */ triggeredFromBox: false, /** True if logout through element click */ triggeredFromElement: false, /** True if logout through logout click */ triggeredFromLogout: false, /** last values which we wrote into localstorage (IE workaround) */ ls: [], /** * storage event is even fired if I write something into storage (IE * workaround) 0: conform, 1: not conform, 2: not shure */ storageNotConform: null, /** Timeout for storageNotConform test */ toSNC: null, /** My bar id */ bid: null, /** Some constants */ CONST: { NOTIFICATION_DEFAULT: 'default', NOTIFICATION_GRANTED: 'granted', NOTIFICATION_DENIED: 'denied', STATUS: ['offline', 'dnd', 'xa', 'away', 'chat', 'online'], SOUNDS: { MSG: 'incomingMessage.wav', CALL: 'Rotary-Phone6.mp3', NOTICE: 'Ping1.mp3' }, REGEX: { JID: new RegExp('\\b[^"&\'\\/:<>@\\s]+@[\\w-_.]+\\b', 'ig'), URL: new RegExp(/(https?:\/\/|www\.)[^\s<>'"]+/gi) }, NS: { CARBONS: 'urn:xmpp:carbons:2', FORWARD: 'urn:xmpp:forward:0' }, HIDDEN: 'hidden', SHOWN: 'shown' }, /** * Parse a unix timestamp and return a formatted time string * * @memberOf jsxc * @param {Object} unixtime * @returns time of day and/or date */ getFormattedTime: function(unixtime) { var msgDate = new Date(parseInt(unixtime)); var day = ('0' + msgDate.getDate()).slice(-2); var month = ('0' + (msgDate.getMonth() + 1)).slice(-2); var year = msgDate.getFullYear(); var hours = ('0' + msgDate.getHours()).slice(-2); var minutes = ('0' + msgDate.getMinutes()).slice(-2); var dateNow = new Date(); var date = (typeof msgDate.toLocaleDateString === 'function') ? msgDate.toLocaleDateString() : day + '.' + month + '.' + year; var time = (typeof msgDate.toLocaleTimeString === 'function') ? msgDate.toLocaleTimeString() : hours + ':' + minutes; // compare dates only dateNow.setHours(0, 0, 0, 0); msgDate.setHours(0, 0, 0, 0); if (dateNow.getTime() !== msgDate.getTime()) { return date + ' ' + time; } return time; }, /** * Write debug message to console and to log. * * @memberOf jsxc * @param {String} msg Debug message * @param {Object} data * @param {String} Could be warn|error|null */ debug: function(msg, data, level) { if (level) { msg = '[' + level + '] ' + msg; } if (data) { if (jsxc.storage.getItem('debug') === true) { console.log(msg, data); } // try to convert data to string var d; try { // clone html snippet d = $("").prepend($(data).clone()).html(); } catch (err) { try { d = JSON.stringify(data); } catch (err2) { d = 'see js console'; } } jsxc.log = jsxc.log + '$ ' + msg + ': ' + d + '\n'; } else { console.log(msg); jsxc.log = jsxc.log + '$ ' + msg + '\n'; } }, /** * Write warn message. * * @memberOf jsxc * @param {String} msg Warn message * @param {Object} data */ warn: function(msg, data) { jsxc.debug(msg, data, 'WARN'); }, /** * Write error message. * * @memberOf jsxc * @param {String} msg Error message * @param {Object} data */ error: function(msg, data) { jsxc.debug(msg, data, 'ERROR'); }, /** debug log */ log: '', /** * Starts the action * * @memberOf jsxc * @param {object} options */ init: function(options) { if (options && options.loginForm && typeof options.loginForm.attachIfFound === 'boolean' && !options.loginForm.ifFound) { // translate deprated option attachIfFound found to new ifFound options.loginForm.ifFound = (options.loginForm.attachIfFound) ? 'attach' : 'pause'; } if (options) { // override default options $.extend(true, jsxc.options, options); } // Check localStorage if (typeof(localStorage) === 'undefined') { jsxc.warn("Browser doesn't support localStorage."); return; } /** * Getter method for options. Saved options will override default one. * * @param {string} key option key * @returns default or saved option value */ jsxc.options.get = function(key) { if (jsxc.bid) { var local = jsxc.storage.getUserItem('options') || {}; return local[key] || jsxc.options[key]; } return jsxc.options[key]; }; /** * Setter method for options. Will write into localstorage. * * @param {string} key option key * @param {object} value option value */ jsxc.options.set = function(key, value) { jsxc.storage.updateItem('options', key, value, true); }; jsxc.storageNotConform = jsxc.storage.getItem('storageNotConform'); if (jsxc.storageNotConform === null) { jsxc.storageNotConform = 2; } // detect language var lang; if (jsxc.storage.getItem('lang') !== null) { lang = jsxc.storage.getItem('lang'); } else if (jsxc.options.autoLang && navigator.language) { lang = navigator.language.substr(0, 2); } else { lang = jsxc.options.defaultLang; } // initialize i18n translator $.i18n.init({ lng: lang, fallbackLng: 'en', resStore: I18next, // use localStorage and set expiration to a day useLocalStorage: true, localStorageExpirationTime: 60 * 60 * 24 * 1000, debug: jsxc.storage.getItem('debug') === true }); if (jsxc.storage.getItem('debug') === true) { jsxc.options.otr.debug = true; } // Register event listener for the storage event window.addEventListener('storage', jsxc.storage.onStorage, false); $(document).on('attached.jsxc', function() { // Looking for logout element if (jsxc.options.logoutElement !== null && jsxc.options.logoutElement.length > 0) { var logout = function(ev) { if (!jsxc.xmpp.conn || !jsxc.xmpp.conn.authenticated) { return; } ev.stopPropagation(); ev.preventDefault(); jsxc.options.logoutElement = $(this); jsxc.triggeredFromLogout = true; jsxc.xmpp.logout(); }; jsxc.options.logoutElement.off('click', null, logout).one('click', logout); } }); // Check if we have to establish a new connection if (!(jsxc.storage.getItem('rid') && jsxc.storage.getItem('sid') && jsxc.storage.getItem('jid')) || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'force' && jsxc.isLoginForm())) { // clean up rid and sid jsxc.storage.removeItem('rid'); jsxc.storage.removeItem('sid'); // Looking for a login form if (!jsxc.isLoginForm()) { if (jsxc.options.displayRosterMinimized()) { // Show minimized roster jsxc.storage.setUserItem('roster', 'hidden'); jsxc.gui.roster.init(); jsxc.gui.roster.noConnection(); } return; } if (typeof jsxc.options.formFound === 'function') { jsxc.options.formFound.call(); } // create jquery object var form = jsxc.options.loginForm.form = $(jsxc.options.loginForm.form); var events = form.data('events') || { submit: [] }; var submits = []; // save attached submit events and remove them. Will be reattached // in jsxc.submitLoginForm $.each(events.submit, function(index, val) { submits.push(val.handler); }); form.data('submits', submits); form.off('submit'); // Add jsxc login action to form form.submit(function() { jsxc.prepareLogin(function(settings) { if (settings !== false) { // settings.xmpp.onlogin is deprecated since v2.1.0 var enabled = (settings.loginForm && settings.loginForm.enable) || (settings.xmpp && settings.xmpp.onlogin); enabled = enabled === "true" || enabled === true; if (enabled) { jsxc.options.loginForm.triggered = true; jsxc.xmpp.login(jsxc.options.xmpp.jid, jsxc.options.xmpp.password); } } else { jsxc.submitLoginForm(); } }); // Trigger submit in jsxc.xmpp.connected() return false; }); } else if (!jsxc.isLoginForm() || (jsxc.options.loginForm && jsxc.options.loginForm.ifFound === 'attach')) { // Restore old connection if (typeof(jsxc.storage.getItem('alive')) === 'undefined') { jsxc.onMaster(); } else { jsxc.checkMaster(); } } }, /** * Attach to previous session if jid, sid and rid are available in storage * (default behaviour also for {@link jsxc.init}). Otherwise try to start new session * with given jid and password in jsxc.options.xmpp. * * @memberOf jsxc */ /** * Start new chat session with given jid and password. * * @memberOf jsxc * @param {string} jid Jabber Id */ /** * Attach to new chat session with jid, sid and rid. * * @memberOf jsxc * @param {string} jid Jabber Id * @param {string} sid Session Id * @param {string} rid Request Id */ start: function() { if (jsxc.role_allocation && !jsxc.master) { jsxc.debug('There is an other master tab'); return false; } if (jsxc.xmpp.conn && jsxc.xmpp.connected) { jsxc.debug('We are already connected'); return false; } if (arguments.length === 3) { $(document).one('attached.jsxc', function() { // save rid after first attachment jsxc.xmpp.onRidChange(jsxc.xmpp.conn._proto.rid); jsxc.onMaster(); }); } jsxc.xmpp.login.apply(this, arguments); }, /** * Returns true if login form is found. * * @memberOf jsxc * @returns {boolean} True if login form was found. */ isLoginForm: function() { return jsxc.options.loginForm.form && jsxc.el_exists(jsxc.options.loginForm.form) && jsxc.el_exists(jsxc.options.loginForm.jid) && jsxc.el_exists(jsxc.options.loginForm.pass); }, /** * Load settings and prepare jid. * * @memberOf jsxc * @param {string} username * @param {string} password * @param {function} cb Called after login is prepared with result as param */ prepareLogin: function(username, password, cb) { if (typeof username === 'function') { cb = username; username = null; } username = username || $(jsxc.options.loginForm.jid).val(); password = password || $(jsxc.options.loginForm.pass).val(); if (!jsxc.triggeredFromBox && (jsxc.options.loginForm.onConnecting === 'dialog' || typeof jsxc.options.loginForm.onConnecting === 'undefined')) { jsxc.gui.showWaitAlert($.t('Logging_in')); } var settings; if (typeof jsxc.options.loadSettings === 'function') { settings = jsxc.options.loadSettings.call(this, username, password, function(s) { jsxc._prepareLogin(username, password, cb, s); }); if (typeof settings !== 'undefined') { jsxc._prepareLogin(username, password, cb, settings); } } else { jsxc._prepareLogin(username, password, cb); } }, /** * Process xmpp settings and save loaded settings. * * @private * @memberOf jsxc * @param {string} username * @param {string} password * @param {function} cb Called after login is prepared with result as param * @param {object} [loadedSettings] additonal options */ _prepareLogin: function(username, password, cb, loadedSettings) { if (loadedSettings === false) { jsxc.warn('No settings provided'); cb(false); return; } // prevent to modify the original object var settings = $.extend(true, {}, jsxc.options); if (loadedSettings) { // overwrite current options with loaded settings; settings = $.extend(true, settings, loadedSettings); } else { loadedSettings = {}; } if (typeof settings.xmpp.username === 'string') { username = settings.xmpp.username; } var resource = (settings.xmpp.resource) ? '/' + settings.xmpp.resource : ''; var domain = settings.xmpp.domain; var jid; if (username.match(/@(.*)$/)) { jid = (username.match(/\/(.*)$/)) ? username : username + resource; } else { jid = username + '@' + domain + resource; } if (typeof jsxc.options.loginForm.preJid === 'function') { jid = jsxc.options.loginForm.preJid(jid); } jsxc.bid = jsxc.jidToBid(jid); settings.xmpp.username = jid.split('@')[0]; settings.xmpp.domain = jid.split('@')[1].split('/')[0]; settings.xmpp.resource = jid.split('@')[1].split('/')[1] || ""; if (!loadedSettings.xmpp) { // force xmpp settings to be saved to storage loadedSettings.xmpp = {}; } // save loaded settings to storage $.each(loadedSettings, function(key) { var old = jsxc.options.get(key); var val = settings[key]; val = $.extend(true, old, val); jsxc.options.set(key, val); }); jsxc.options.xmpp.jid = jid; jsxc.options.xmpp.password = password; cb(settings); }, /** * Called if the script is a slave */ onSlave: function() { jsxc.debug('I am the slave.'); jsxc.role_allocation = true; jsxc.bid = jsxc.jidToBid(jsxc.storage.getItem('jid')); jsxc.gui.init(); jsxc.restoreRoster(); jsxc.restoreWindows(); jsxc.restoreCompleted = true; $(document).trigger('restoreCompleted.jsxc'); }, /** * Called if the script is the master */ onMaster: function() { jsxc.debug('I am master.'); jsxc.master = true; // Init local storage jsxc.storage.setItem('alive', 0); jsxc.storage.setItem('alive_busy', 0); // Sending keepalive signal jsxc.startKeepAlive(); jsxc.role_allocation = true; jsxc.xmpp.login(); }, /** * Checks if there is a master */ checkMaster: function() { jsxc.debug('check master'); jsxc.to = window.setTimeout(jsxc.onMaster, 1000); jsxc.storage.ink('alive'); }, masterActions: function() { if (!jsxc.xmpp.conn || !jsxc.xmpp.conn.authenticated) { return; } //prepare notifications var noti = jsxc.storage.getUserItem('notification'); noti = (typeof noti === 'number') ? noti : 2; if (jsxc.options.notification && noti > 0 && jsxc.notification.hasSupport()) { if (jsxc.notification.hasPermission()) { jsxc.notification.init(); } else { jsxc.notification.prepareRequest(); } } else { // No support => disable jsxc.options.notification = false; } if (jsxc.options.get('otr').enable) { // create or load DSA key jsxc.otr.createDSA(); } jsxc.gui.updateAvatar($('#jsxc_roster > .jsxc_bottom'), jsxc.jidToBid(jsxc.storage.getItem('jid')), 'own'); }, /** * Start sending keep-alive signal */ startKeepAlive: function() { jsxc.keepalive = window.setInterval(jsxc.keepAlive, jsxc.options.timeout - 1000); }, /** * Sends the keep-alive signal to signal that the master is still there. */ keepAlive: function() { jsxc.storage.ink('alive'); }, /** * Send one keep-alive signal with higher timeout, and than resume with * normal signal */ keepBusyAlive: function() { if (jsxc.toBusy) { window.clearTimeout(jsxc.toBusy); } if (jsxc.keepalive) { window.clearInterval(jsxc.keepalive); } jsxc.storage.ink('alive_busy'); jsxc.toBusy = window.setTimeout(jsxc.startKeepAlive, jsxc.options.busyTimeout - 1000); }, /** * Generates a random integer number between 0 and max * * @param {Integer} max * @return {Integer} random integer between 0 and max */ random: function(max) { return Math.floor(Math.random() * max); }, /** * Checks if there is a element with the given selector * * @param {String} selector jQuery selector * @return {Boolean} */ el_exists: function(selector) { return $(selector).length > 0; }, /** * Creates a CSS compatible string from a JID * * @param {type} jid Valid Jabber ID * @returns {String} css Compatible string */ jidToCid: function(jid) { jsxc.warn('jsxc.jidToCid is deprecated!'); var cid = Strophe.getBareJidFromJid(jid).replace('@', '-').replace(/\./g, '-').toLowerCase(); return cid; }, /** * Create comparable bar jid. * * @memberOf jsxc * @param jid * @returns comparable bar jid */ jidToBid: function(jid) { return Strophe.unescapeNode(Strophe.getBareJidFromJid(jid).toLowerCase()); }, /** * Restore roster */ restoreRoster: function() { var buddies = jsxc.storage.getUserItem('buddylist'); if (!buddies || buddies.length === 0) { jsxc.debug('No saved buddylist.'); jsxc.gui.roster.empty(); return; } $.each(buddies, function(index, value) { jsxc.gui.roster.add(value); }); jsxc.gui.roster.loaded = true; $(document).trigger('cloaded.roster.jsxc'); }, /** * Restore all windows */ restoreWindows: function() { var windows = jsxc.storage.getUserItem('windowlist'); if (windows === null) { return; } $.each(windows, function(index, bid) { var win = jsxc.storage.getUserItem('window', bid); if (!win) { jsxc.debug('Associated window-element is missing: ' + bid); return true; } jsxc.gui.window.init(bid); if (!win.minimize) { jsxc.gui.window.show(bid); } else { jsxc.gui.window.hide(bid); } jsxc.gui.window.setText(bid, win.text); }); }, /** * This method submits the specified login form. */ submitLoginForm: function() { var form = jsxc.options.loginForm.form.off('submit'); // Attach original events var submits = form.data('submits') || []; $.each(submits, function(index, val) { form.submit(val); }); if (form.find('#submit').length > 0) { form.find('#submit').click(); } else { form.submit(); } }, /** * Escapes some characters to HTML character */ escapeHTML: function(text) { text = text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); return text.replace(/&/g, '&').replace(//g, '>'); }, /** * Removes all html tags. * * @memberOf jsxc * @param text * @returns stripped text */ removeHTML: function(text) { return $('').html(text).text(); }, /** * Executes only one of the given events * * @param {string} obj.key event name * @param {function} obj.value function to execute * @returns {string} namespace of all events */ switchEvents: function(obj) { var ns = Math.random().toString(36).substr(2, 12); var self = this; $.each(obj, function(key, val) { $(document).one(key + '.' + ns, function() { $(document).off('.' + ns); val.apply(self, arguments); }); }); return ns; }, /** * Checks if tab is hidden. * * @returns {boolean} True if tab is hidden */ isHidden: function() { var hidden = false; if (typeof document.hidden !== 'undefined') { hidden = document.hidden; } else if (typeof document.webkitHidden !== 'undefined') { hidden = document.webkitHidden; } else if (typeof document.mozHidden !== 'undefined') { hidden = document.mozHidden; } else if (typeof document.msHidden !== 'undefined') { hidden = document.msHidden; } // handle multiple tabs if (hidden && jsxc.master) { jsxc.storage.ink('hidden', 0); } else if (!hidden && !jsxc.master) { jsxc.storage.ink('hidden'); } return hidden; }, /** * Checks if tab has focus. * * @returns {boolean} True if tabs has focus */ hasFocus: function() { var focus = true; if (typeof document.hasFocus === 'function') { focus = document.hasFocus(); } if (!focus && jsxc.master) { jsxc.storage.ink('focus', 0); } else if (focus && !jsxc.master) { jsxc.storage.ink('focus'); } return focus; }, /** * Executes the given function in jsxc namespace. * * @memberOf jsxc * @param {string} fnName Function name * @param {array} fnParams Function parameters * @returns Function return value */ exec: function(fnName, fnParams) { var fnList = fnName.split('.'); var fn = jsxc[fnList[0]]; var i; for (i = 1; i < fnList.length; i++) { fn = fn[fnList[i]]; } if (typeof fn === 'function') { return fn.apply(null, fnParams); } }, /** * Hash string into 32-bit signed integer. * * @memberOf jsxc * @param {string} str input string * @returns {integer} 32-bit signed integer */ hashStr: function(str) { var hash = 0, i; if (str.length === 0) { return hash; } for (i = 0; i < str.length; i++) { hash = ((hash << 5) - hash) + str.charCodeAt(i); hash |= 0; // Convert to 32bit integer } return hash; }, isExtraSmallDevice: function() { return $(window).width() < 500; } }; /** * Handle XMPP stuff. * * @namespace jsxc.xmpp */ jsxc.xmpp = { conn: null, // connection /** * Create new connection or attach to old * * @name login * @memberOf jsxc.xmpp */ /** * Create new connection with given parameters. * * @name login^2 * @param {string} jid * @param {string} password * @memberOf jsxc.xmpp */ /** * Attach connection with given parameters. * * @name login^3 * @param {string} jid * @param {string} sid * @param {string} rid * @memberOf jsxc.xmpp */ login: function() { if (jsxc.xmpp.conn && jsxc.xmpp.conn.authenticated) { return; } var jid = null, password = null, sid = null, rid = null; switch (arguments.length) { case 2: jid = arguments[0]; password = arguments[1]; break; case 3: jid = arguments[0]; sid = arguments[1]; rid = arguments[2]; break; default: sid = jsxc.storage.getItem('sid'); rid = jsxc.storage.getItem('rid'); if (sid !== null && rid !== null) { jid = jsxc.storage.getItem('jid'); } else { sid = null; rid = null; jid = jsxc.options.xmpp.jid; } } if (!jid) { jsxc.warn('Jid required for login'); return; } if (!jsxc.bid) { jsxc.bid = jsxc.jidToBid(jid); } var url = jsxc.options.get('xmpp').url; if (!url) { jsxc.warn('xmpp.url required for login'); return; } if (!(jsxc.xmpp.conn && jsxc.xmpp.conn.connected)) { // Register eventlistener $(document).on('connected.jsxc', jsxc.xmpp.connected); $(document).on('attached.jsxc', jsxc.xmpp.attached); $(document).on('disconnected.jsxc', jsxc.xmpp.disconnected); $(document).on('connfail.jsxc', jsxc.xmpp.onConnfail); $(document).on('authfail.jsxc', jsxc.xmpp.onAuthFail); Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts'); } // Create new connection (no login) jsxc.xmpp.conn = new Strophe.Connection(url); if (jsxc.storage.getItem('debug') === true) { jsxc.xmpp.conn.xmlInput = function(data) { console.log('<', data); }; jsxc.xmpp.conn.xmlOutput = function(data) { console.log('>', data); }; } jsxc.xmpp.conn.nextValidRid = jsxc.xmpp.onRidChange; var callback = function(status, condition) { jsxc.debug(Object.getOwnPropertyNames(Strophe.Status)[status] + ': ' + condition); switch (status) { case Strophe.Status.CONNECTING: $(document).trigger('connecting.jsxc'); break; case Strophe.Status.CONNECTED: jsxc.bid = jsxc.jidToBid(jsxc.xmpp.conn.jid.toLowerCase()); $(document).trigger('connected.jsxc'); break; case Strophe.Status.ATTACHED: $(document).trigger('attached.jsxc'); break; case Strophe.Status.DISCONNECTED: $(document).trigger('disconnected.jsxc'); break; case Strophe.Status.CONNFAIL: $(document).trigger('connfail.jsxc'); break; case Strophe.Status.AUTHFAIL: $(document).trigger('authfail.jsxc'); break; } }; if (jsxc.xmpp.conn.caps) { jsxc.xmpp.conn.caps.node = 'http://jsxc.org/'; } if (sid && rid) { jsxc.debug('Try to attach'); jsxc.debug('SID: ' + sid); jsxc.reconnect = true; jsxc.xmpp.conn.attach(jid, sid, rid, callback); } else { jsxc.debug('New connection'); if (jsxc.xmpp.conn.caps) { // Add system handler, because user handler isn't called before // we are authenticated jsxc.xmpp.conn._addSysHandler(function(stanza) { var from = jsxc.xmpp.conn.domain, c = stanza.querySelector('c'), ver = c.getAttribute('ver'), node = c.getAttribute('node'); var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {}; jsxc.xmpp.conn.caps._jidVerIndex[from] = ver; _jidNodeIndex[from] = node; localStorage.setItem('strophe.caps._jidVerIndex', JSON.stringify(jsxc.xmpp.conn.caps._jidVerIndex)); localStorage.setItem('strophe.caps._jidNodeIndex', JSON.stringify(_jidNodeIndex)); }, Strophe.NS.CAPS); } jsxc.xmpp.conn.connect(jid, password || jsxc.options.xmpp.password, callback); } }, /** * Logs user out of his xmpp session and does some clean up. * * @param {boolean} complete If set to false, roster will not be removed * @returns {Boolean} */ logout: function(complete) { // instruct all tabs jsxc.storage.removeItem('sid'); // clean up jsxc.storage.removeUserItem('buddylist'); jsxc.storage.removeUserItem('windowlist'); jsxc.storage.removeUserItem('unreadMsg'); if (!jsxc.master) { $('#jsxc_roster').remove(); $('#jsxc_windowlist').remove(); return true; } if (jsxc.xmpp.conn === null) { return true; } // Hide dropdown menu $('body').click(); jsxc.triggeredFromElement = (typeof complete === 'boolean') ? complete : true; // restore all otr objects $.each(jsxc.storage.getUserItem('otrlist') || {}, function(i, val) { jsxc.otr.create(val); }); var numOtr = Object.keys(jsxc.otr.objects || {}).length + 1; var disReady = function() { if (--numOtr <= 0) { jsxc.xmpp.conn.flush(); setTimeout(function() { jsxc.xmpp.conn.disconnect(); }, 600); } }; // end all private conversations $.each(jsxc.otr.objects || {}, function(key, obj) { if (obj.msgstate === OTR.CONST.MSGSTATE_ENCRYPTED) { obj.endOtr.call(obj, function() { obj.init.call(obj); jsxc.otr.backup(key); disReady(); }); } else { disReady(); } }); disReady(); // Trigger real logout in jsxc.xmpp.disconnected() return false; }, /** * Triggered if connection is established * * @private */ connected: function() { jsxc.xmpp.conn.pause(); jsxc.xmpp.initNewConnection(); jsxc.xmpp.saveSessionParameter(); if (jsxc.options.loginForm.triggered) { switch (jsxc.options.loginForm.onConnected || 'submit') { case 'submit': jsxc.submitLoginForm(); return; case false: return; } } // start chat jsxc.gui.dialog.close(); jsxc.xmpp.conn.resume(); jsxc.onMaster(); $(document).trigger('attached.jsxc'); }, /** * Triggered if connection is attached * * @private */ attached: function() { $('#jsxc_roster').removeClass('jsxc_noConnection'); jsxc.xmpp.conn.addHandler(jsxc.xmpp.onRosterChanged, 'jabber:iq:roster', 'iq', 'set'); jsxc.xmpp.conn.addHandler(jsxc.xmpp.onMessage, null, 'message', 'chat'); jsxc.xmpp.conn.addHandler(jsxc.xmpp.onReceived, null, 'message'); jsxc.xmpp.conn.addHandler(jsxc.xmpp.onPresence, null, 'presence'); jsxc.gui.init(); var caps = jsxc.xmpp.conn.caps; var domain = jsxc.xmpp.conn.domain; if (caps) { var conditionalEnable = function() {}; if (jsxc.options.get('carbons').enable) { conditionalEnable = function() { if (jsxc.xmpp.conn.caps.hasFeatureByJid(domain, jsxc.CONST.NS.CARBONS)) { jsxc.xmpp.carbons.enable(); } }; $(document).on('caps.strophe', function onCaps(ev, from) { if (from !== domain) { return; } conditionalEnable(); $(document).off('caps.strophe', onCaps); }); } if (typeof caps._knownCapabilities[caps._jidVerIndex[domain]] === 'undefined') { var _jidNodeIndex = JSON.parse(localStorage.getItem('strophe.caps._jidNodeIndex')) || {}; jsxc.debug('Request server capabilities'); caps._requestCapabilities(jsxc.xmpp.conn.domain, _jidNodeIndex[domain], caps._jidVerIndex[domain]); } else { // We know server caps conditionalEnable(); } } // Only load roaster if necessary if (!jsxc.reconnect || !jsxc.storage.getUserItem('buddylist')) { // in order to not overide existing presence information, we send // pres first after roster is ready $(document).one('cloaded.roster.jsxc', jsxc.xmpp.sendPres); $('#jsxc_roster > p:first').remove(); var iq = $iq({ type: 'get' }).c('query', { xmlns: 'jabber:iq:roster' }); jsxc.xmpp.conn.sendIQ(iq, jsxc.xmpp.onRoster); } else { jsxc.xmpp.sendPres(); if (!jsxc.restoreCompleted) { jsxc.restoreRoster(); jsxc.restoreWindows(); jsxc.restoreCompleted = true; $(document).trigger('restoreCompleted.jsxc'); } } jsxc.xmpp.saveSessionParameter(); jsxc.masterActions(); }, saveSessionParameter: function() { var nomJid = Strophe.getBareJidFromJid(jsxc.xmpp.conn.jid).toLowerCase() + '/' + Strophe.getResourceFromJid(jsxc.xmpp.conn.jid); // Save sid and jid jsxc.storage.setItem('sid', jsxc.xmpp.conn._proto.sid); jsxc.storage.setItem('jid', nomJid); }, initNewConnection: function() { // make shure roster will be reloaded jsxc.storage.removeUserItem('buddylist'); jsxc.storage.removeUserItem('windowlist'); jsxc.storage.removeUserItem('own'); jsxc.storage.removeUserItem('avatar', 'own'); jsxc.storage.removeUserItem('otrlist'); jsxc.storage.removeUserItem('unreadMsg'); // reset user options jsxc.storage.removeUserElement('options', 'RTCPeerConfig'); }, /** * Sends presence stanza to server. */ sendPres: function() { // disco stuff if (jsxc.xmpp.conn.disco) { jsxc.xmpp.conn.disco.addIdentity('client', 'web', 'JSXC'); jsxc.xmpp.conn.disco.addFeature(Strophe.NS.DISCO_INFO); jsxc.xmpp.conn.disco.addFeature(Strophe.NS.RECEIPTS); } // create presence stanza var pres = $pres(); if (jsxc.xmpp.conn.caps) { // attach caps pres.c('c', jsxc.xmpp.conn.caps.generateCapsAttrs()).up(); } var presState = jsxc.storage.getUserItem('presence') || 'online'; if (presState !== 'online') { pres.c('show').t(presState).up(); } var priority = jsxc.options.get('priority'); if (priority && typeof priority[presState] !== 'undefined' && parseInt(priority[presState]) !== 0) { pres.c('priority').t(priority[presState]).up(); } jsxc.debug('Send presence', pres.toString()); jsxc.xmpp.conn.send(pres); }, /** * Triggered if lost connection * * @private */ disconnected: function() { jsxc.debug('disconnected'); jsxc.storage.removeItem('jid'); jsxc.storage.removeItem('sid'); jsxc.storage.removeItem('rid'); jsxc.storage.removeItem('hidden'); jsxc.storage.removeUserItem('avatar', 'own'); jsxc.storage.removeUserItem('otrlist'); $(document).off('connected.jsxc', jsxc.xmpp.connected); $(document).off('attached.jsxc', jsxc.xmpp.attached); $(document).off('disconnected.jsxc', jsxc.xmpp.disconnected); $(document).off('connfail.jsxc', jsxc.xmpp.onConnfail); $(document).off('authfail.jsxc', jsxc.xmpp.onAuthFail); jsxc.xmpp.conn = null; $('#jsxc_windowList').remove(); if (jsxc.triggeredFromElement) { $(document).trigger('toggle.roster.jsxc', ['hidden', 0]); $('#jsxc_roster').remove(); if (jsxc.triggeredFromLogout) { window.location = jsxc.options.logoutElement.attr('href'); } } else { jsxc.gui.roster.noConnection(); } window.clearInterval(jsxc.keepalive); }, /** * Triggered on connection fault * * @param {String} condition information why we lost the connection * @private */ onConnfail: function(ev, condition) { jsxc.debug('XMPP connection failed: ' + condition); if (jsxc.options.loginForm.triggered) { jsxc.submitLoginForm(); } }, /** * Triggered on auth fail. * * @private */ onAuthFail: function() { if (jsxc.options.loginForm.triggered) { switch (jsxc.options.loginForm.onAuthFail || 'ask') { case 'ask': jsxc.gui.showAuthFail(); break; case 'submit': jsxc.submitLoginForm(); break; case 'quiet': case false: return; } } }, /** * Triggered on initial roster load * * @param {dom} iq * @private */ onRoster: function(iq) { /* * ... */ jsxc.debug('Load roster', iq); var buddies = []; $(iq).find('item').each(function() { var jid = $(this).attr('jid'); var name = $(this).attr('name') || jid; var bid = jsxc.jidToBid(jid); var sub = $(this).attr('subscription'); buddies.push(bid); jsxc.storage.removeUserItem('res', bid); jsxc.storage.saveBuddy(bid, { jid: jid, name: name, status: 0, sub: sub, res: [] }); jsxc.gui.roster.add(bid); }); if (buddies.length === 0) { jsxc.gui.roster.empty(); } jsxc.storage.setUserItem('buddylist', buddies); // load bookmarks jsxc.xmpp.bookmarks.load(); jsxc.gui.roster.loaded = true; jsxc.debug('Roster loaded'); $(document).trigger('cloaded.roster.jsxc'); }, /** * Triggerd on roster changes * * @param {dom} iq * @returns {Boolean} True to preserve handler * @private */ onRosterChanged: function(iq) { /* * */ jsxc.debug('onRosterChanged', iq); $(iq).find('item').each(function() { var jid = $(this).attr('jid'); var name = $(this).attr('name') || jid; var bid = jsxc.jidToBid(jid); var sub = $(this).attr('subscription'); // var ask = $(this).attr('ask'); if (sub === 'remove') { jsxc.gui.roster.purge(bid); } else { var bl = jsxc.storage.getUserItem('buddylist'); if (bl.indexOf(bid) < 0) { bl.push(bid); // (INFO) push returns the new length jsxc.storage.setUserItem('buddylist', bl); } var temp = jsxc.storage.saveBuddy(bid, { jid: jid, name: name, sub: sub }); if (temp === 'updated') { jsxc.gui.update(bid); jsxc.gui.roster.reorder(bid); } else { jsxc.gui.roster.add(bid); } } // Remove pending friendship request from notice list if (sub === 'from' || sub === 'both') { var notices = jsxc.storage.getUserItem('notices'); var noticeKey = null, notice; for (noticeKey in notices) { notice = notices[noticeKey]; if (notice.fnName === 'gui.showApproveDialog' && notice.fnParams[0] === jid) { jsxc.debug('Remove notice with key ' + noticeKey); jsxc.notice.remove(noticeKey); } } } }); if (!jsxc.storage.getUserItem('buddylist') || jsxc.storage.getUserItem('buddylist').length === 0) { jsxc.gui.roster.empty(); } else { $('#jsxc_roster > p:first').remove(); } // preserve handler return true; }, /** * Triggered on incoming presence stanzas * * @param {dom} presence * @private */ onPresence: function(presence) { /* * * * 5 * * * chat * 5 */ jsxc.debug('onPresence', presence); var ptype = $(presence).attr('type'); var from = $(presence).attr('from'); var jid = Strophe.getBareJidFromJid(from).toLowerCase(); var r = Strophe.getResourceFromJid(from); var bid = jsxc.jidToBid(jid); var data = jsxc.storage.getUserItem('buddy', bid) || {}; var res = jsxc.storage.getUserItem('res', bid) || {}; var status = null; var xVCard = $(presence).find('x[xmlns="vcard-temp:x:update"]'); if (jid === Strophe.getBareJidFromJid(jsxc.storage.getItem("jid"))) { return true; } if (ptype === 'error') { $(document).trigger('error.presence.jsxc', [from, presence]); var error = $(presence).find('error'); //TODO display error message jsxc.error('[XMPP] ' + error.attr('code') + ' ' + error.find(">:first-child").prop('tagName')); return true; } // incoming friendship request if (ptype === 'subscribe') { var bl = jsxc.storage.getUserItem('buddylist'); if (bl.indexOf(bid) > -1) { jsxc.debug('Auto approve contact request, because he is already in our contact list.'); jsxc.xmpp.resFriendReq(jid, true); if (data.sub !== 'to') { jsxc.xmpp.addBuddy(jid, data.name); } return true; } jsxc.storage.setUserItem('friendReq', { jid: jid, approve: -1 }); jsxc.notice.add($.t('Friendship_request'), $.t('from') + ' ' + jid, 'gui.showApproveDialog', [jid]); return true; } else if (ptype === 'unavailable' || ptype === 'unsubscribed') { status = jsxc.CONST.STATUS.indexOf('offline'); } else { var show = $(presence).find('show').text(); if (show === '') { status = jsxc.CONST.STATUS.indexOf('online'); } else { status = jsxc.CONST.STATUS.indexOf(show); } } if (status === 0) { delete res[r]; } else { res[r] = status; } var maxVal = []; var max = 0, prop = null; for (prop in res) { if (res.hasOwnProperty(prop)) { if (max <= res[prop]) { if (max !== res[prop]) { maxVal = []; max = res[prop]; } maxVal.push(prop); } } } if (data.status === 0 && max > 0) { // buddy has come online jsxc.notification.notify({ title: data.name, msg: $.t('has_come_online'), source: bid }); } if (data.type === 'groupchat') { data.status = status; } else { data.status = max; } data.res = maxVal; data.jid = jid; // Looking for avatar if (xVCard.length > 0 && data.type !== 'groupchat') { var photo = xVCard.find('photo'); if (photo.length > 0 && photo.text() !== data.avatar) { jsxc.storage.removeUserItem('avatar', data.avatar); data.avatar = photo.text(); } } // Reset jid if (jsxc.gui.window.get(bid).length > 0) { jsxc.gui.window.get(bid).data('jid', jid); } jsxc.storage.setUserItem('buddy', bid, data); jsxc.storage.setUserItem('res', bid, res); jsxc.debug('Presence (' + from + '): ' + status); jsxc.gui.update(bid); jsxc.gui.roster.reorder(bid); $(document).trigger('presence.jsxc', [from, status, presence]); // preserve handler return true; }, /** * Triggered on incoming message stanzas * * @param {dom} presence * @returns {Boolean} * @private */ onMessage: function(stanza) { var forwarded = $(stanza).find('forwarded[xmlns="' + jsxc.CONST.NS.FORWARD + '"]'); var message, carbon; if (forwarded.length > 0) { message = forwarded.find('> message'); forwarded = true; carbon = $(stanza).find('> [xmlns="' + jsxc.CONST.NS.CARBONS + '"]'); if (carbon.length === 0) { carbon = false; } jsxc.debug('Incoming forwarded message', message); } else { message = stanza; forwarded = false; carbon = false; jsxc.debug('Incoming message', message); } var body = $(message).find('body:first').text(); if (!body || (body.match(/\?OTR/i) && forwarded)) { return true; } var type = $(message).attr('type'); var from = $(message).attr('from'); var mid = $(message).attr('id'); var bid; var delay = $(message).find('delay[xmlns="urn:xmpp:delay"]'); var stamp = (delay.length > 0) ? new Date(delay.attr('stamp')) : new Date(); stamp = stamp.getTime(); if (carbon) { var direction = (carbon.prop("tagName") === 'sent') ? jsxc.Message.OUT : jsxc.Message.IN; bid = jsxc.jidToBid((direction === 'out') ? $(message).attr('to') : from); jsxc.gui.window.postMessage({ bid: bid, direction: direction, msg: body, encrypted: false, forwarded: forwarded, stamp: stamp }); return true; } else if (forwarded) { // Someone forwarded a message to us body = from + ' ' + $.t('to') + ' ' + $(stanza).attr('to') + '"' + body + '"'; from = $(stanza).attr('from'); } var jid = Strophe.getBareJidFromJid(from); bid = jsxc.jidToBid(jid); var data = jsxc.storage.getUserItem('buddy', bid); var request = $(message).find("request[xmlns='urn:xmpp:receipts']"); if (data === null) { // jid not in roster var chat = jsxc.storage.getUserItem('chat', bid) || []; if (chat.length === 0) { jsxc.notice.add($.t('Unknown_sender'), $.t('You_received_a_message_from_an_unknown_sender') + ' (' + bid + ').', 'gui.showUnknownSender', [bid]); } var msg = jsxc.removeHTML(body); msg = jsxc.escapeHTML(msg); jsxc.storage.saveMessage(bid, 'in', msg, false, forwarded, stamp); return true; } var win = jsxc.gui.window.init(bid); // If we now the full jid, we use it if (type === 'chat') { win.data('jid', from); jsxc.storage.updateUserItem('buddy', bid, { jid: from }); } $(document).trigger('message.jsxc', [from, body]); // create related otr object if (jsxc.master && !jsxc.otr.objects[bid]) { jsxc.otr.create(bid); } if (!forwarded && mid !== null && request.length && data !== null && (data.sub === 'both' || data.sub === 'from') && type === 'chat') { // Send received according to XEP-0184 jsxc.xmpp.conn.send($msg({ to: from }).c('received', { xmlns: 'urn:xmpp:receipts', id: mid })); } if (jsxc.otr.objects.hasOwnProperty(bid)) { jsxc.otr.objects[bid].receiveMsg(body, { stamp: stamp, forwarded: forwarded }); } else { jsxc.gui.window.postMessage({ bid: bid, direction: jsxc.Message.IN, msg: body, encrypted: false, forwarded: forwarded, stamp: stamp }); } // preserve handler return true; }, /** * Triggerd if the rid changed * * @param {integer} rid next valid request id * @private */ onRidChange: function(rid) { jsxc.storage.setItem('rid', rid); }, /** * response to friendship request * * @param {string} from jid from original friendship req * @param {boolean} approve */ resFriendReq: function(from, approve) { if (jsxc.master) { jsxc.xmpp.conn.send($pres({ to: from, type: (approve) ? 'subscribed' : 'unsubscribed' })); jsxc.storage.removeUserItem('friendReq'); jsxc.gui.dialog.close(); } else { jsxc.storage.updateUserItem('friendReq', 'approve', approve); } }, /** * Add buddy to my friends * * @param {string} username jid * @param {string} alias */ addBuddy: function(username, alias) { var bid = jsxc.jidToBid(username); if (jsxc.master) { // add buddy to roster (trigger onRosterChanged) var iq = $iq({ type: 'set' }).c('query', { xmlns: 'jabber:iq:roster' }).c('item', { jid: username, name: alias || '' }); jsxc.xmpp.conn.sendIQ(iq); // send subscription request to buddy (trigger onRosterChanged) jsxc.xmpp.conn.send($pres({ to: username, type: 'subscribe' })); jsxc.storage.removeUserItem('add_' + bid); } else { jsxc.storage.setUserItem('add_' + bid, { username: username, alias: alias || null }); } }, /** * Remove buddy from my friends * * @param {type} jid */ removeBuddy: function(jid) { var bid = jsxc.jidToBid(jid); // Shortcut to remove buddy from roster and cancle all subscriptions var iq = $iq({ type: 'set' }).c('query', { xmlns: 'jabber:iq:roster' }).c('item', { jid: Strophe.getBareJidFromJid(jid), subscription: 'remove' }); jsxc.xmpp.conn.sendIQ(iq); jsxc.gui.roster.purge(bid); }, onReceived: function(stanza) { var received = $(stanza).find("received[xmlns='urn:xmpp:receipts']"); if (received.length) { var receivedId = received.attr('id'); var message = new jsxc.Message(receivedId); message.received(); } return true; }, /** * Public function to send message. * * @memberOf jsxc.xmpp * @param bid css jid of user * @param msg message * @param uid unique id */ sendMessage: function(bid, msg, uid) { if (jsxc.otr.objects.hasOwnProperty(bid)) { jsxc.otr.objects[bid].sendMsg(msg, uid); } else { jsxc.xmpp._sendMessage(jsxc.gui.window.get(bid).data('jid'), msg, uid); } }, /** * Create message stanza and send it. * * @memberOf jsxc.xmpp * @param jid Jabber id * @param msg Message * @param uid unique id * @private */ _sendMessage: function(jid, msg, uid) { var data = jsxc.storage.getUserItem('buddy', jsxc.jidToBid(jid)) || {}; var isBar = (Strophe.getBareJidFromJid(jid) === jid); var type = data.type || 'chat'; var xmlMsg = $msg({ to: jid, type: type, id: uid }).c('body').t(msg); if (jsxc.xmpp.carbons.enabled && msg.match(/^\?OTR/)) { xmlMsg.up().c("private", { xmlns: jsxc.CONST.NS.CARBONS }); } if (type === 'chat' && (isBar || jsxc.xmpp.conn.caps.hasFeatureByJid(jid, Strophe.NS.RECEIPTS))) { // Add request according to XEP-0184 xmlMsg.up().c('request', { xmlns: 'urn:xmpp:receipts' }); } jsxc.xmpp.conn.send(xmlMsg); }, /** * This function loads a vcard. * * @memberOf jsxc.xmpp * @param bid * @param cb * @param error_cb */ loadVcard: function(bid, cb, error_cb) { if (jsxc.master) { jsxc.xmpp.conn.vcard.get(cb, bid, error_cb); } else { jsxc.storage.setUserItem('vcard', bid, 'request:' + (new Date()).getTime()); $(document).one('loaded.vcard.jsxc', function(ev, result) { if (result && result.state === 'success') { cb($(result.data).get(0)); } else { error_cb(); } }); } }, /** * Retrieves capabilities. * * @memberOf jsxc.xmpp * @param jid * @returns List of known capabilities */ getCapabilitiesByJid: function(jid) { if (jsxc.xmpp.conn) { return jsxc.xmpp.conn.caps.getCapabilitiesByJid(jid); } var jidVerIndex = JSON.parse(localStorage.getItem('strophe.caps._jidVerIndex')) || {}; var knownCapabilities = JSON.parse(localStorage.getItem('strophe.caps._knownCapabilities')) || {}; if (jidVerIndex[jid]) { return knownCapabilities[jidVerIndex[jid]]; } return null; }, /** * Test if jid has given features * * @param {string} jid Jabber id * @param {string[]} feature Single feature or list of features * @param {Function} cb Called with the result as first param. * @return {boolean} True, if jid has all given features. Null, if we do not know it currently. */ hasFeatureByJid: function(jid, feature, cb) { var conn = jsxc.xmpp.conn; cb = cb || function() {}; if (!feature) { return false; } if (!$.isArray(feature)) { feature = $.makeArray(feature); } var check = function(knownCapabilities) { if (!knownCapabilities) { return null; } var i; for (i = 0; i < feature.length; i++) { if (knownCapabilities['features'].indexOf(feature[i]) < 0) { return false; } } return true; }; if (conn.caps._jidVerIndex[jid] && conn.caps._knownCapabilities[conn.caps._jidVerIndex[jid]]) { var hasFeature = check(conn.caps._knownCapabilities[conn.caps._jidVerIndex[jid]]); cb(hasFeature); return hasFeature; } $(document).on('strophe.caps', function(ev, j, capabilities) { if (j === jid) { cb(check(capabilities)); $(document).off(ev); } }); return null; } }; /** * Handle carbons (XEP-0280); * * @namespace jsxc.xmpp.carbons */ jsxc.xmpp.carbons = { enabled: false, /** * Enable carbons. * * @memberOf jsxc.xmpp.carbons * @param cb callback */ enable: function(cb) { var iq = $iq({ type: 'set' }).c('enable', { xmlns: jsxc.CONST.NS.CARBONS }); jsxc.xmpp.conn.sendIQ(iq, function() { jsxc.xmpp.carbons.enabled = true; jsxc.debug('Carbons enabled'); if (cb) { cb.call(this); } }, function(stanza) { jsxc.warn('Could not enable carbons', stanza); }); }, /** * Disable carbons. * * @memberOf jsxc.xmpp.carbons * @param cb callback */ disable: function(cb) { var iq = $iq({ type: 'set' }).c('disable', { xmlns: jsxc.CONST.NS.CARBONS }); jsxc.xmpp.conn.sendIQ(iq, function() { jsxc.xmpp.carbons.enabled = false; jsxc.debug('Carbons disabled'); if (cb) { cb.call(this); } }, function(stanza) { jsxc.warn('Could not disable carbons', stanza); }); }, /** * Enable/Disable carbons depending on options key. * * @memberOf jsxc.xmpp.carbons * @param err error message */ refresh: function(err) { if (err === false) { return; } if (jsxc.options.get('carbons').enable) { return jsxc.xmpp.carbons.enable(); } return jsxc.xmpp.carbons.disable(); } }; /** * Load message object with given uid. * * @class Message * @memberOf jsxc * @param {string} uid Unified identifier from message object */ /** * Create new message object. * * @class Message * @memberOf jsxc * @param {object} args New message properties * @param {string} args.bid * @param {direction} args.direction * @param {string} args.msg * @param {boolean} args.encrypted * @param {boolean} args.forwarded * @param {boolean} args.sender * @param {integer} args.stamp * @param {object} args.attachment Attached data * @param {string} args.attachment.name File name * @param {string} args.attachment.size File size * @param {string} args.attachment.type File type * @param {string} args.attachment.data File data */ jsxc.Message = function() { /** @member {string} */ this._uid = null; /** @member {boolean} */ this._received = false; /** @member {boolean} */ this.encrypted = false; /** @member {boolean} */ this.forwarded = false; /** @member {integer} */ this.stamp = new Date().getTime(); if (typeof arguments[0] === 'string' && arguments[0].length > 0 && arguments.length === 1) { this._uid = arguments[0]; this.load(this._uid); } else if (typeof arguments[0] === 'object' && arguments[0] !== null) { $.extend(this, arguments[0]); } if (!this._uid) { this._uid = new Date().getTime() + ':msg'; } }; /** * Load message properties. * * @memberof jsxc.Message * @param {string} uid */ jsxc.Message.prototype.load = function(uid) { var data = jsxc.storage.getUserItem('msg', uid); if (!data) { jsxc.debug('Could not load message with uid ' + uid); } $.extend(this, data); }; /** * Save message properties and create thumbnail. * * @memberOf jsxc.Message * @return {Message} this object */ jsxc.Message.prototype.save = function() { var history; if (this.bid) { history = jsxc.storage.getUserItem('history', this.bid) || []; if (history.indexOf(this._uid) < 0) { if (history.length > jsxc.options.get('numberOfMsg')) { jsxc.Message.delete(history.pop()); } } else { history = null; } } if (Image && this.attachment && this.attachment.type.match(/^image\//i) && this.attachment.data) { var sHeight, sWidth, sx, sy; var dHeight = 100, dWidth = 100; var canvas = $("").get(0); canvas.width = dWidth; canvas.height = dHeight; var ctx = canvas.getContext("2d"); var img = new Image(); img.src = this.attachment.data; if (img.height > img.width) { sHeight = img.width; sWidth = img.width; sx = 0; sy = (img.height - img.width) / 2; } else { sHeight = img.height; sWidth = img.height; sx = (img.width - img.height) / 2; sy = 0; } ctx.drawImage(img, sx, sy, sWidth, sHeight, 0, 0, dWidth, dHeight); this.attachment.thumbnail = canvas.toDataURL(); if (this.direction === 'out') { // save storage this.attachment.data = null; } } var data; if (this.attachment && this.attachment.size > jsxc.options.maxStorableSize && this.direction === 'in') { jsxc.debug('Attachment to large to store'); data = this.attachment.data; this.attachment.data = null; this.attachment.persistent = false; //TODO inform user } jsxc.storage.setUserItem('msg', this._uid, this); if (history) { history.unshift(this._uid); jsxc.storage.setUserItem('history', this.bid, history); } if (data && this.attachment) { this.attachment.data = data; } return this; }; /** * Remove object from storage. * * @memberOf jsxc.Message */ jsxc.Message.prototype.delete = function() { jsxc.Message.delete(this._uid); }; /** * Returns object as jquery object. * * @memberOf jsxc.Message * @return {jQuery} Representation in DOM */ jsxc.Message.prototype.getDOM = function() { return jsxc.Message.getDOM(this._uid); }; /** * Mark message as received. * * @memberOf jsxc.Message */ jsxc.Message.prototype.received = function() { this._received = true; this.save(); this.getDOM().addClass('jsxc_received'); }; /** * Returns true if the message was already received. * * @memberOf jsxc.Message * @return {boolean} true means received */ jsxc.Message.prototype.isReceived = function() { return this._received; }; /** * Remove message with uid. * * @memberOf jsxc.Message * @static * @param {string} uid message uid */ jsxc.Message.delete = function(uid) { var data = jsxc.storage.getUserItem('msg', uid); if (data) { jsxc.storage.removeUserItem('msg', uid); if (data.bid) { var history = jsxc.storage.getUserItem('history', data.bid) || []; history = $.grep(history, function(el) { return el !== uid; }); jsxc.storage.setUserItem('history', data.bid); } } }; /** * Returns message object as jquery object. * * @memberOf jsxc.Message * @static * @param {string} uid message uid * @return {jQuery} jQuery representation in DOM */ jsxc.Message.getDOM = function(uid) { return $('#' + uid.replace(/:/g, '-')); }; /** * Message direction can be incoming, outgoing or system. * * @typedef {(jsxc.Message.IN|jsxc.Message.OUT|jsxc.Message.SYS)} direction */ /** * @constant * @type {string} * @default */ jsxc.Message.IN = 'in'; /** * @constant * @type {string} * @default */ jsxc.Message.OUT = 'out'; /** * @constant * @type {string} * @default */ jsxc.Message.SYS = 'sys'; /* global Favico, emojione*/ /** * Handle functions for chat window's and buddylist * * @namespace jsxc.gui */ jsxc.gui = { /** Smilie token to file mapping */ emotions: [ ['O:-) O:)', 'innocent'], ['>:-( >:( >:-( >:(', 'angry'], [':-) :)', 'slight_smile'], [':-D :D', 'grin'], [':-( :(', 'disappointed'], [';-) ;)', 'wink'], [':-P :P', 'stuck_out_tongue'], ['=-O', 'astonished'], [':kiss: :-*', 'kissing_heart'], ['8-) :cool:', 'sunglasses'], [':-X :X', 'zipper_mouth'], [':yes:', 'thumbsup'], [':no:', 'thumbsdown'], [':beer:', 'beer'], [':coffee:', 'coffee'], [':devil:', 'smiling_imp'], [':kiss: :kissing:', 'kissing'], ['@->-- @->--', 'rose'], [':music:', 'musical_note'], [':love:', 'heart_eyes'], [':heart:', 'heart'], [':brokenheart:', 'broken_heart'], [':zzz:', 'zzz'], [':wait:', 'hand_splayed'] ], favicon: null, regShortNames: null, emoticonList: { 'core': { ':klaus:': ['klaus'], ':jabber:': ['jabber'], ':xmpp:': ['xmpp'], ':jsxc:': ['jsxc'], ':owncloud:': ['owncloud'] }, 'emojione': emojione.emojioneList }, /** * Different uri query actions as defined in XEP-0147. * * @namespace jsxc.gui.queryActions */ queryActions: { /** xmpp:JID?message[;body=TEXT] */ message: function(jid, params) { var win = jsxc.gui.window.open(jsxc.jidToBid(jid)); if (params && typeof params.body === 'string') { win.find('.jsxc_textinput').val(params.body); } }, /** xmpp:JID?remove */ remove: function(jid) { jsxc.gui.showRemoveDialog(jsxc.jidToBid(jid)); }, /** xmpp:JID?subscribe[;name=NAME] */ subscribe: function(jid, params) { jsxc.gui.showContactDialog(jid); if (params && typeof params.name) { $('#jsxc_alias').val(params.name); } }, /** xmpp:JID?vcard */ vcard: function(jid) { jsxc.gui.showVcard(jid); }, /** xmpp:JID?join[;password=TEXT] */ join: function(jid, params) { var password = (params && params.password) ? params.password : null; jsxc.muc.showJoinChat(jid, password); } }, /** * Creates application skeleton. * * @memberOf jsxc.gui */ init: function() { // Prevent duplicate windowList if ($('#jsxc_windowList').length > 0) { return; } jsxc.gui.regShortNames = new RegExp(emojione.regShortNames.source + '|(' + Object.keys(jsxc.gui.emoticonList.core).join('|') + ')', 'gi'); $('body').append($(jsxc.gui.template.get('windowList'))); $(window).resize(jsxc.gui.updateWindowListSB); $('#jsxc_windowList').resize(jsxc.gui.updateWindowListSB); $('#jsxc_windowListSB .jsxc_scrollLeft').click(function() { jsxc.gui.scrollWindowListBy(-200); }); $('#jsxc_windowListSB .jsxc_scrollRight').click(function() { jsxc.gui.scrollWindowListBy(200); }); $('#jsxc_windowList').on('wheel', function(ev) { if ($('#jsxc_windowList').data('isOver')) { jsxc.gui.scrollWindowListBy((ev.originalEvent.wheelDelta > 0) ? 200 : -200); } }); jsxc.gui.tooltip('#jsxc_windowList'); var fo = jsxc.options.get('favicon'); if (fo && fo.enable) { jsxc.gui.favicon = new Favico({ animation: 'pop', bgColor: fo.bgColor, textColor: fo.textColor }); jsxc.gui.favicon.badge(jsxc.storage.getUserItem('unreadMsg') || 0); } if (!jsxc.el_exists('#jsxc_roster')) { jsxc.gui.roster.init(); } // prepare regexp for emotions $.each(jsxc.gui.emotions, function(i, val) { // escape characters var reg = val[0].replace(/(\/|\||\*|\.|\+|\?|\^|\$|\(|\)|\[|\]|\{|\})/g, '\\$1'); reg = '(' + reg.split(' ').join('|') + ')'; jsxc.gui.emotions[i][2] = new RegExp(reg, 'g'); }); // We need this often, so we creates some template jquery objects jsxc.gui.windowTemplate = $(jsxc.gui.template.get('chatWindow')); jsxc.gui.buddyTemplate = $(jsxc.gui.template.get('rosterBuddy')); }, /** * Init tooltip plugin for given jQuery selector. * * @param {String} selector jQuery selector * @memberOf jsxc.gui */ tooltip: function(selector) { $(selector).tooltip({ show: { delay: 600 }, content: function() { return $(this).attr('title').replace(/\n/g, '
'); } }); }, /** * Updates Information in roster and chatbar * * @param {String} bid bar jid */ update: function(bid) { var data = jsxc.storage.getUserItem('buddy', bid); if (!data) { jsxc.debug('No data for ' + bid); return; } var ri = jsxc.gui.roster.getItem(bid); // roster item from user var we = jsxc.gui.window.get(bid); // window element from user var ue = ri.add(we); // both var spot = $('.jsxc_spot[data-bid="' + bid + '"]'); // Attach data to corresponding roster item ri.data(data); // Add online status jsxc.gui.updatePresence(bid, jsxc.CONST.STATUS[data.status]); // Change name and add title ue.find('.jsxc_name:first').add(spot).text(data.name).attr('title', $.t('is_', { status: $.t(jsxc.CONST.STATUS[data.status]) })); // Update gui according to encryption state switch (data.msgstate) { case 0: we.find('.jsxc_transfer').removeClass('jsxc_enc jsxc_fin').attr('title', $.t('your_connection_is_unencrypted')); we.find('.jsxc_settings .jsxc_verification').addClass('jsxc_disabled'); we.find('.jsxc_settings .jsxc_transfer').text($.t('start_private')); break; case 1: we.find('.jsxc_transfer').addClass('jsxc_enc').attr('title', $.t('your_connection_is_encrypted')); we.find('.jsxc_settings .jsxc_verification').removeClass('jsxc_disabled'); we.find('.jsxc_settings .jsxc_transfer').text($.t('close_private')); break; case 2: we.find('.jsxc_settings .jsxc_verification').addClass('jsxc_disabled'); we.find('.jsxc_transfer').removeClass('jsxc_enc').addClass('jsxc_fin').attr('title', $.t('your_buddy_closed_the_private_connection')); we.find('.jsxc_settings .jsxc_transfer').text($.t('close_private')); break; } // update gui according to verification state if (data.trust) { we.find('.jsxc_transfer').addClass('jsxc_trust').attr('title', $.t('your_buddy_is_verificated')); } else { we.find('.jsxc_transfer').removeClass('jsxc_trust'); } // update gui according to subscription state if (data.sub && data.sub !== 'both') { ue.addClass('jsxc_oneway'); } else { ue.removeClass('jsxc_oneway'); } var info = Strophe.getBareJidFromJid(data.jid) + '\n'; info += $.t('Subscription') + ': ' + $.t(data.sub) + '\n'; info += $.t('Status') + ': ' + $.t(jsxc.CONST.STATUS[data.status]); ri.find('.jsxc_name').attr('title', info); jsxc.gui.updateAvatar(ri.add(we.find('.jsxc_bar')), data.jid, data.avatar); }, /** * Update avatar on all given elements. * * @memberOf jsxc.gui * @param {jQuery} el Elements with subelement .jsxc_avatar * @param {string} jid Jid * @param {string} aid Avatar id (sha1 hash of image) */ updateAvatar: function(el, jid, aid) { var setAvatar = function(src) { if (src === 0 || src === '0') { if (typeof jsxc.options.defaultAvatar === 'function') { jsxc.options.defaultAvatar.call(el, jid); return; } jsxc.gui.avatarPlaceholder(el.find('.jsxc_avatar'), jid); return; } el.find('.jsxc_avatar').removeAttr('style'); el.find('.jsxc_avatar').css({ 'background-image': 'url(' + src + ')', 'text-indent': '999px' }); }; if (typeof aid === 'undefined') { setAvatar(0); return; } var avatarSrc = jsxc.storage.getUserItem('avatar', aid); if (avatarSrc !== null) { setAvatar(avatarSrc); } else { var handler_cb = function(stanza) { jsxc.debug('vCard', stanza); var vCard = $(stanza).find("vCard > PHOTO"); var src; if (vCard.length === 0) { jsxc.debug('No photo provided'); src = '0'; } else if (vCard.find('EXTVAL').length > 0) { src = vCard.find('EXTVAL').text(); } else { var img = vCard.find('BINVAL').text(); var type = vCard.find('TYPE').text(); src = 'data:' + type + ';base64,' + img; } // concat chunks src = src.replace(/[\t\r\n\f]/gi, ''); jsxc.storage.setUserItem('avatar', aid, src); setAvatar(src); }; var error_cb = function(msg) { jsxc.warn('Could not load vcard.', msg); jsxc.storage.setUserItem('avatar', aid, 0); setAvatar(0); }; // workaround for https://github.com/strophe/strophejs/issues/172 if (Strophe.getBareJidFromJid(jid) === Strophe.getBareJidFromJid(jsxc.xmpp.conn.jid)) { jsxc.xmpp.conn.vcard.get(handler_cb, error_cb); } else { jsxc.xmpp.conn.vcard.get(handler_cb, Strophe.getBareJidFromJid(jid), error_cb); } } }, /** * Updates scrollbar handlers. * * @memberOf jsxc.gui */ updateWindowListSB: function() { if ($('#jsxc_windowList>ul').width() > $('#jsxc_windowList').width()) { $('#jsxc_windowListSB > div').removeClass('jsxc_disabled'); } else { $('#jsxc_windowListSB > div').addClass('jsxc_disabled'); $('#jsxc_windowList>ul').css('right', '0px'); } }, /** * Scroll window list by offset. * * @memberOf jsxc.gui * @param offset */ scrollWindowListBy: function(offset) { var scrollWidth = $('#jsxc_windowList>ul').width(); var width = $('#jsxc_windowList').width(); var el = $('#jsxc_windowList>ul'); var right = parseInt(el.css('right')) - offset; var padding = $("#jsxc_windowListSB").width(); if (scrollWidth < width) { return; } if (right > 0) { right = 0; } if (right < width - scrollWidth - padding) { right = width - scrollWidth - padding; } el.css('right', right + 'px'); }, /** * Returns the window element * * @deprecated Use {@link jsxc.gui.window.get} instead. * @param {String} bid * @returns {jquery} jQuery object of the window element */ getWindow: function(bid) { jsxc.warn('jsxc.gui.getWindow is deprecated!'); return jsxc.gui.window.get(bid); }, /** * Toggle list with timeout, like menu or settings * * @memberof jsxc.gui */ toggleList: function(el) { var self = el || $(this); self.disableSelection(); self.addClass('jsxc_list'); var ul = self.find('ul'); var slideUp = null; slideUp = function() { self.removeClass('jsxc_opened'); $('body').off('click', null, slideUp); }; $(this).click(function() { if (!self.hasClass('jsxc_opened')) { // hide other lists $('body').click(); $('body').one('click', slideUp); } else { $('body').off('click', null, slideUp); } window.clearTimeout(ul.data('timer')); self.toggleClass('jsxc_opened'); return false; }).mouseleave(function() { ul.data('timer', window.setTimeout(slideUp, 2000)); }).mouseenter(function() { window.clearTimeout(ul.data('timer')); }); }, /** * Creates and show loginbox */ showLoginBox: function() { // Set focus to password field $(document).on("complete.dialog.jsxc", function() { $('#jsxc_password').focus(); }); jsxc.gui.dialog.open(jsxc.gui.template.get('loginBox')); var alert = $('#jsxc_dialog').find('.jsxc_alert'); alert.hide(); $('#jsxc_dialog').find('form').submit(function(ev) { ev.preventDefault(); $(this).find('button[data-jsxc-loading-text]').trigger('btnloading.jsxc'); jsxc.options.loginForm.form = $(this); jsxc.options.loginForm.jid = $(this).find('#jsxc_username'); jsxc.options.loginForm.pass = $(this).find('#jsxc_password'); jsxc.triggeredFromBox = true; jsxc.options.loginForm.triggered = false; jsxc.prepareLogin(function(settings) { if (settings === false) { onAuthFail(); } else { $(document).on('authfail.jsxc', onAuthFail); jsxc.xmpp.login(); } }); }); function onAuthFail() { alert.show(); jsxc.gui.dialog.resize(); $('#jsxc_dialog').find('button').trigger('btnfinished.jsxc'); $('#jsxc_dialog').find('input').one('keypress', function() { alert.hide(); jsxc.gui.dialog.resize(); }); } }, /** * Creates and show the fingerprint dialog * * @param {String} bid */ showFingerprints: function(bid) { jsxc.gui.dialog.open(jsxc.gui.template.get('fingerprintsDialog', bid)); }, /** * Creates and show the verification dialog * * @param {String} bid */ showVerification: function(bid) { // Check if there is a open dialog if ($('#jsxc_dialog').length > 0) { setTimeout(function() { jsxc.gui.showVerification(bid); }, 3000); return; } // verification only possible if the connection is encrypted if (jsxc.storage.getUserItem('buddy', bid).msgstate !== OTR.CONST.MSGSTATE_ENCRYPTED) { jsxc.warn('Connection not encrypted'); return; } jsxc.gui.dialog.open(jsxc.gui.template.get('authenticationDialog', bid), { name: 'smp' }); // Add handler $('#jsxc_dialog > div:gt(0)').hide(); $('#jsxc_dialog > div:eq(0) button').click(function() { $(this).siblings().removeClass('active'); $(this).addClass('active'); $(this).get(0).blur(); $('#jsxc_dialog > div:gt(0)').hide(); $('#jsxc_dialog > div:eq(' + ($(this).index() + 1) + ')').show().find('input:first').focus(); }); // Manual $('#jsxc_dialog > div:eq(1) .jsxc_submit').click(function() { if (jsxc.master) { jsxc.otr.objects[bid].trust = true; } jsxc.storage.updateUserItem('buddy', bid, 'trust', true); jsxc.gui.dialog.close('smp'); jsxc.storage.updateUserItem('buddy', bid, 'trust', true); jsxc.gui.window.postMessage({ bid: bid, direction: jsxc.Message.SYS, msg: $.t('conversation_is_now_verified') }); jsxc.gui.update(bid); }); // Question $('#jsxc_dialog > div:eq(2) .jsxc_submit').click(function() { var div = $('#jsxc_dialog > div:eq(2)'); var sec = div.find('#jsxc_secret2').val(); var quest = div.find('#jsxc_quest').val(); if (sec === '' || quest === '') { // Add information for the user which form is missing div.find('input[value=""]').addClass('jsxc_invalid').keyup(function() { if ($(this).val().match(/.*/)) { $(this).removeClass('jsxc_invalid'); } }); return; } if (jsxc.master) { jsxc.otr.sendSmpReq(bid, sec, quest); } else { jsxc.storage.setUserItem('smp', bid, { sec: sec, quest: quest }); } jsxc.gui.dialog.close('smp'); jsxc.gui.window.postMessage({ bid: bid, direction: jsxc.Message.SYS, msg: $.t('authentication_query_sent') }); }); // Secret $('#jsxc_dialog > div:eq(3) .jsxc_submit').click(function() { var div = $('#jsxc_dialog > div:eq(3)'); var sec = div.find('#jsxc_secret').val(); if (sec === '') { // Add information for the user which form is missing div.find('#jsxc_secret').addClass('jsxc_invalid').keyup(function() { if ($(this).val().match(/.*/)) { $(this).removeClass('jsxc_invalid'); } }); return; } if (jsxc.master) { jsxc.otr.sendSmpReq(bid, sec); } else { jsxc.storage.setUserItem('smp', bid, { sec: sec, quest: null }); } jsxc.gui.dialog.close('smp'); jsxc.gui.window.postMessage({ bid: bid, direction: 'sys', msg: $.t('authentication_query_sent') }); }); }, /** * Create and show approve dialog * * @param {type} from valid jid */ showApproveDialog: function(from) { jsxc.gui.dialog.open(jsxc.gui.template.get('approveDialog'), { 'noClose': true }); $('#jsxc_dialog .jsxc_their_jid').text(Strophe.getBareJidFromJid(from)); $('#jsxc_dialog .jsxc_deny').click(function(ev) { ev.stopPropagation(); jsxc.xmpp.resFriendReq(from, false); jsxc.gui.dialog.close(); }); $('#jsxc_dialog .jsxc_approve').click(function(ev) { ev.stopPropagation(); var data = jsxc.storage.getUserItem('buddy', jsxc.jidToBid(from)); jsxc.xmpp.resFriendReq(from, true); // If friendship is not mutual show contact dialog if (!data || data.sub === 'from') { jsxc.gui.showContactDialog(from); } }); }, /** * Create and show dialog to add a buddy * * @param {string} [username] jabber id */ showContactDialog: function(username) { jsxc.gui.dialog.open(jsxc.gui.template.get('contactDialog')); // If we got a friendship request, we would display the username in our // response if (username) { $('#jsxc_username').val(username); } $('#jsxc_username').keyup(function() { if (typeof jsxc.options.getUsers === 'function') { var val = $(this).val(); $('#jsxc_userlist').empty(); if (val !== '') { jsxc.options.getUsers.call(this, val, function(list) { $.each(list || {}, function(uid, displayname) { var option = $('