diff --git a/web/admin/admin-header.php b/web/admin/admin-header.php index c9421bb..b1222c5 100644 --- a/web/admin/admin-header.php +++ b/web/admin/admin-header.php @@ -7,7 +7,7 @@ require_once ("../include/my_func.inc.php"); - + + + + + + \ No newline at end of file diff --git a/web/bsadmin/assets/css/badge.css b/web/bsadmin/assets/css/badge.css deleted file mode 100644 index 8ac1c01..0000000 --- a/web/bsadmin/assets/css/badge.css +++ /dev/null @@ -1,34 +0,0 @@ -.badge { - padding: 5px 10px; - font-weight: 400; - border-radius: 4px; } - -.badge-primary { - background: #f96332; - color: #fff; } - -.badge-success { - background: #87de75; - color: #fff; } - -.badge-info { - background: #03a9f4; - color: #fff; } - -.badge-warning { - background: #f39c12; - color: #fff; } - -.badge-danger { - background: #e74c3c; - color: #fff; } - -.badge-pink { - background: #e6a1f2; - color: #fff; } - -.badge-dark { - background: #252525; - color: #fff; } - -/*# sourceMappingURL=badge.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/badge.css.map b/web/bsadmin/assets/css/badge.css.map deleted file mode 100644 index a0adad9..0000000 --- a/web/bsadmin/assets/css/badge.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AACA,MAAO;EACH,OAAO,EAAE,QAAQ;EACjB,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,GAAG;;AAGtB,cAAe;EACX,UAAU,ECAL,OAAO;EDCZ,KAAK,ECcF,IAAI;;ADXX,cAAe;EACX,UAAU,ECJL,OAAO;EDKZ,KAAK,ECSF,IAAI;;ADPX,WAAY;EACR,UAAU,ECPR,OAAO;EDQT,KAAK,ECKF,IAAI;;ADFX,cAAe;EACX,UAAU,ECVL,OAAO;EDWZ,KAAK,ECAF,IAAI;;ADGX,aAAc;EACV,UAAU,EChBN,OAAO;EDiBX,KAAK,ECLF,IAAI;;ADQX,WAAY;EACR,UAAU,ECnBR,OAAO;EDoBT,KAAK,ECVF,IAAI;;ADaX,WAAY;EACR,UAAU,ECvBR,OAAO;EDwBT,KAAK,ECfF,IAAI", -"sources": ["../sass/badge.scss","../sass/variable.scss"], -"names": [], -"file": "badge.css" -} diff --git a/web/bsadmin/assets/css/booking-system.css b/web/bsadmin/assets/css/booking-system.css deleted file mode 100644 index 3e58f04..0000000 --- a/web/bsadmin/assets/css/booking-system.css +++ /dev/null @@ -1,17 +0,0 @@ -.booking-system-feedback { - top: 5px !important; - right: 15px; } - -.booking-system-top { - padding-top: 15px; } - -.media-body { - vertical-align: middle; } - .media-body span { - font-size: 10px; - color: #f96332; } - .media-body p { - color: #878787; - line-height: 15px; } - -/*# sourceMappingURL=booking-system.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/booking-system.css.map b/web/bsadmin/assets/css/booking-system.css.map deleted file mode 100644 index 6edfaa7..0000000 --- a/web/bsadmin/assets/css/booking-system.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEA,wBAAwB;EACtB,GAAG,EAAE,cAAc;EACnB,KAAK,EAAE,IAAI;;AAIb,mBAAmB;EACjB,WAAW,EAAE,IAAI;;AAMjB,WAAW;EAEP,cAAc,EAAE,MAAM;EACxB,gBAAI;IACF,SAAS,EAAE,IAAI;IACf,KAAK,ECZF,OAAO;EDcZ,aAAC;IACC,KAAK,ECPL,OAAO;IDQP,WAAW,EAAE,IAAI", -"sources": ["../sass/booking-system.scss","../sass/variable.scss"], -"names": [], -"file": "booking-system.css" -} diff --git a/web/bsadmin/assets/css/button.css b/web/bsadmin/assets/css/button.css deleted file mode 100644 index 354c68e..0000000 --- a/web/bsadmin/assets/css/button.css +++ /dev/null @@ -1,130 +0,0 @@ -.btn-default { - background: #878787; - border-color: #878787; - color: #fff; } - .btn-default:hover, .btn-default:focus, .btn-default.active { - background: #6e6e6e; - border-color: #878787; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-primary { - background: #f96332; - border-color: #f96332; - color: #fff; } - .btn-primary:hover, .btn-primary:focus, .btn-primary.active { - background: #f14107; - border-color: #f96332; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-success { - background: #87de75; - border-color: #87de75; - color: #fff; } - .btn-success:hover, .btn-success:focus, .btn-success.active { - background: #63d44c; - border-color: #87de75; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-info { - background: #03a9f4; - border-color: #03a9f4; - color: #fff; } - .btn-info:hover, .btn-info:focus, .btn-info.active { - background: #0286c2; - border-color: #03a9f4; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-warning { - background: #f39c12; - border-color: #f39c12; - color: #fff; } - .btn-warning:hover, .btn-warning:focus, .btn-warning.active { - background: #c87f0a; - border-color: #f39c12; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-danger { - background: #e74c3c; - border-color: #e74c3c; - color: #fff; } - .btn-danger:hover, .btn-danger:focus, .btn-danger.active { - background: #d62c1a; - border-color: #e74c3c; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-pink { - background: #e6a1f2; - border-color: #e6a1f2; - color: #fff; } - .btn-pink:hover, .btn-pink:focus, .btn-pink.active { - background: #da74ec; - border-color: #e6a1f2; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-dark { - background: #252525; - border-color: #252525; - color: #fff; } - .btn-dark:hover, .btn-dark:focus, .btn-dark.active { - background: #0c0c0c; - border-color: #252525; - color: #fff; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-addon { - position: relative; - padding-left: 40px; } - .btn-addon i { - background: rgba(0, 0, 0, 0.1); - left: -1px; - margin-right: 20px; - padding: 10px; - position: absolute; - top: -1px; } - -.btn-addon.btn-lg { - padding-left: 60px; } - .btn-addon.btn-lg i { - padding: 14px; } - -.btn-addon.btn-md { - padding-left: 45px; } - .btn-addon.btn-md i { - padding: 10px; } - -.btn-addon.btn-sm { - padding-left: 40px; } - .btn-addon.btn-sm i { - padding: 9px; } - -.btn-addon.btn-xs { - padding-left: 25px; } - .btn-addon.btn-xs i { - padding: 5px; } - -.btn-rounded { - border-radius: 100px; } - -.btn-outline { - background: transparent; - color: #878787; } - -.btn-flat { - border-radius: 0px; } - -/*# sourceMappingURL=button.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/button.css.map b/web/bsadmin/assets/css/button.css.map deleted file mode 100644 index fc898d4..0000000 --- a/web/bsadmin/assets/css/button.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEA,YAAY;EACR,UAAU,ECYL,OAAO;EDXZ,YAAY,ECWP,OAAO;EDVZ,KAAK,ECkBF,IAAI;EDjBP,2DAAwB;IACpB,UAAU,EAAE,OAAoB;IAChC,YAAY,ECOX,OAAO;IDNR,KAAK,ECcN,IAAI;IDbH,UAAU,EAAE,IAAI;;AAGxB,YAAa;EACT,UAAU,ECNL,OAAO;EDOZ,YAAY,ECPP,OAAO;EDQZ,KAAK,ECOF,IAAI;EDNP,2DAES;IACL,UAAU,EAAE,OAAqB;IACjC,YAAY,ECbX,OAAO;IDcR,KAAK,ECCN,IAAI;IDAH,UAAU,EAAE,IAAI;;AAIxB,YAAa;EACT,UAAU,ECnBL,OAAO;EDoBZ,YAAY,ECpBP,OAAO;EDqBZ,KAAK,ECPF,IAAI;EDQP,2DAES;IACL,UAAU,EAAE,OAAqB;IACjC,YAAY,EC1BX,OAAO;ID2BR,KAAK,ECbN,IAAI;IDcH,UAAU,EAAE,IAAI;;AAIxB,SAAU;EACN,UAAU,EChCR,OAAO;EDiCT,YAAY,ECjCV,OAAO;EDkCT,KAAK,ECrBF,IAAI;EDsBP,kDAES;IACL,UAAU,EAAE,OAAkB;IAC9B,YAAY,ECvCd,OAAO;IDwCL,KAAK,EC3BN,IAAI;ID4BH,UAAU,EAAE,IAAI;;AAIxB,YAAa;EACT,UAAU,EC5CL,OAAO;ED6CZ,YAAY,EC7CP,OAAO;ED8CZ,KAAK,ECnCF,IAAI;EDoCP,2DAES;IACL,UAAU,EAAE,OAAqB;IACjC,YAAY,ECnDX,OAAO;IDoDR,KAAK,ECzCN,IAAI;ID0CH,UAAU,EAAE,IAAI;;AAIxB,WAAY;EACR,UAAU,EC3DN,OAAO;ED4DX,YAAY,EC5DR,OAAO;ED6DX,KAAK,ECjDF,IAAI;EDkDP,wDAES;IACL,UAAU,EAAE,OAAoB;IAChC,YAAY,EClEZ,OAAO;IDmEP,KAAK,ECvDN,IAAI;IDwDH,UAAU,EAAE,IAAI;;AAIxB,SAAU;EACN,UAAU,ECvER,OAAO;EDwET,YAAY,ECxEV,OAAO;EDyET,KAAK,EC/DF,IAAI;EDgEP,kDAES;IACL,UAAU,EAAE,OAAkB;IAC9B,YAAY,EC9Ed,OAAO;ID+EL,KAAK,ECrEN,IAAI;IDsEH,UAAU,EAAE,IAAI;;AAIxB,SAAU;EACN,UAAU,ECpFR,OAAO;EDqFT,YAAY,ECrFV,OAAO;EDsFT,KAAK,EC7EF,IAAI;ED8EP,kDAES;IACL,UAAU,EAAE,OAAkB;IAC9B,YAAY,EC3Fd,OAAO;ID4FL,KAAK,ECnFN,IAAI;IDoFH,UAAU,EAAE,IAAI;;AAIxB,UAAW;EACP,QAAQ,EAAE,QAAQ;EAClB,YAAY,EAAE,IAAI;EAClB,YAAE;IACE,UAAU,EAAE,kBAAkB;IAC9B,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;;AAIjB,iBAAkB;EACd,YAAY,EAAE,IAAI;EAClB,mBAAE;IACE,OAAO,EAAE,IAAI;;AAIrB,iBAAkB;EACd,YAAY,EAAE,IAAI;EAClB,mBAAE;IACE,OAAO,EAAE,IAAI;;AAIrB,iBAAkB;EACd,YAAY,EAAE,IAAI;EAClB,mBAAE;IACE,OAAO,EAAE,GAAG;;AAIpB,iBAAkB;EACd,YAAY,EAAE,IAAI;EAClB,mBAAE;IAEE,OAAO,EAAE,GAAG;;AAIpB,YAAa;EACT,aAAa,EAAE,KAAK;;AAGxB,YAAa;EACT,UAAU,EAAE,WAAW;EACvB,KAAK,EC/IH,OAAO;;ADkJb,SAAU;EACN,aAAa,EAAE,GAAG", -"sources": ["../sass/button.scss","../sass/variable.scss"], -"names": [], -"file": "button.css" -} diff --git a/web/bsadmin/assets/css/calendar.css b/web/bsadmin/assets/css/calendar.css deleted file mode 100644 index 189cc1e..0000000 --- a/web/bsadmin/assets/css/calendar.css +++ /dev/null @@ -1,100 +0,0 @@ -/* Calendar -================================================== */ -/* ============= - Calendar -============= */ -.calendar { - float: left; - margin-bottom: 0px; } - -.fc-view { - margin-top: 30px; } - -.none-border .modal-footer { - border-top: none; } - -.fc-toolbar { - margin-bottom: 5px; - margin-top: 15px; } - -.fc-toolbar h2 { - font-size: 18px; - font-weight: 600; - line-height: 30px; - text-transform: uppercase; } - -.fc-day { - background: #fff; } - -.fc-toolbar .fc-state-active, -.fc-toolbar .ui-state-active, -.fc-toolbar button:focus, -.fc-toolbar button:hover, -.fc-toolbar .ui-state-hover { - z-index: 0; } - -.fc-widget-header { - border: 1px solid #e7e7e7; } - -.fc-widget-content { - border: 1px solid #e7e7e7; } - -.fc th.fc-widget-header { - background: #e7e7e7; - font-size: 14px; - line-height: 20px; - padding: 10px 0px; - text-transform: uppercase; } - -.fc-button { - background: #fff; - border: 1px solid #e7e7e7; - color: #878787; - text-transform: capitalize; } - -.fc-text-arrow { - font-family: inherit; - font-size: 16px; } - -.fc-state-hover { - background: #f5f5f5 !important; } - -.fc-state-highlight { - background: #f5f5f5 !important; } - -.fc-cell-overlay { - background: #f5f5f5 !important; } - -.fc-unthemed .fc-today { - background: #fff !important; } - -.fc-event { - border-radius: 2px; - border: none; - cursor: move; - font-size: 13px; - margin: 5px 7px; - padding: 5px 5px; - text-align: center; } - -.external-event { - color: #fff; - cursor: move; - margin: 10px 0; - padding: 6px 10px; } - -.fc-basic-view td.fc-week-number span { - padding-right: 5px; } - -.fc-basic-view td.fc-day-number { - padding-right: 5px; } - -#drop-remove { - margin: 0px; - top: 3px; } - -#event-modal .modal-dialog, -#add-category .modal-dialog { - max-width: 600px; } - -/*# sourceMappingURL=calendar.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/calendar.css.map b/web/bsadmin/assets/css/calendar.css.map deleted file mode 100644 index 4216a69..0000000 --- a/web/bsadmin/assets/css/calendar.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEA;qDACqD;AAGrD;;gBAEgB;AAEhB,SAAU;EACN,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,GAAG;;AAGtB,QAAS;EACL,UAAU,EAAE,IAAI;;AAGpB,0BAA2B;EACvB,UAAU,EAAE,IAAI;;AAGpB,WAAY;EACR,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;;AAGpB,cAAe;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,SAAS;;AAG7B,OAAQ;EACJ,UAAU,ECbP,IAAI;;ADgBX;;;;2BAI4B;EACxB,OAAO,EAAE,CAAC;;AAGd,iBAAkB;EACd,MAAM,EAAE,iBAAiB;;AAG7B,kBAAmB;EACf,MAAM,EAAE,iBAAiB;;AAG7B,uBAAwB;EACpB,UAAU,EC9BN,OAAO;ED+BX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,QAAQ;EACjB,cAAc,EAAE,SAAS;;AAG7B,UAAW;EACP,UAAU,ECzCP,IAAI;ED0CP,MAAM,EAAE,iBAAiB;EACzB,KAAK,EClDH,OAAO;EDmDT,cAAc,EAAE,UAAU;;AAG9B,cAAe;EACX,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,IAAI;;AAGnB,eAAgB;EACZ,UAAU,EAAE,kBAAsB;;AAGtC,mBAAoB;EAChB,UAAU,EAAE,kBAAsB;;AAGtC,gBAAiB;EACb,UAAU,EAAE,kBAAsB;;AAGtC,sBAAuB;EACnB,UAAU,EAAE,eAAgB;;AAGhC,SAAU;EACN,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,IAAI;EACZ,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,OAAO;EAChB,UAAU,EAAE,MAAM;;AAGtB,eAAgB;EACZ,KAAK,EC/EF,IAAI;EDgFP,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,MAAM;EACd,OAAO,EAAE,QAAQ;;AAGrB,qCAAsC;EAClC,aAAa,EAAE,GAAG;;AAGtB,+BAAgC;EAC5B,aAAa,EAAE,GAAG;;AAGtB,YAAa;EACT,MAAM,EAAE,GAAG;EACX,GAAG,EAAE,GAAG;;AAMJ;2BAAc;EACV,SAAS,EAAE,KAAK", -"sources": ["../sass/calendar.scss","../sass/variable.scss"], -"names": [], -"file": "calendar.css" -} diff --git a/web/bsadmin/assets/css/card.css b/web/bsadmin/assets/css/card.css deleted file mode 100644 index 4616815..0000000 --- a/web/bsadmin/assets/css/card.css +++ /dev/null @@ -1,88 +0,0 @@ -.card-body { - background: #fff; } - -.card { - background: #fff; - margin: 15px 0px 15px 0px; - padding: 20px; - border: 0px; - border-radius: 0px; - -webkit-box-shadow: 0 0 10px 5px #e7e7e7; - box-shadow: 0 0 10px 5px #e7e7e7; } - -.card-header h4 { - display: inline-block; } -.card-header p { - font-family: "Quicksand", sans-serif; - margin-bottom: 12px; } - -.single-card h4 { - font-size: 16px; } -.single-card .sparkline-box { - float: right; } -.single-card .visit-count { - float: left; - padding-top: 18px; - line-height: 10px; - font-size: 18px; } - -.card-header-right-icon { - display: inline-block; - float: right; } - .card-header-right-icon li { - float: right; - padding-left: 14px; - color: #878787; - cursor: pointer; - vertical-align: middle; - -webkit-transition: all 0.5s ease-in-out; - transition: all 0.5s ease-in-out; - display: inline-block; } - .card-header-right-icon li .ti-close { - font-size: 12px; } - -.card-option { - position: relative; } - -.card-option-dropdown { - display: none; - left: auto; - right: 0; } - .card-option-dropdown li { - display: block; - float: left; - width: 100%; - padding: 0px; } - .card-option-dropdown li a { - line-height: 25px; - font-size: 12px; } - .card-option-dropdown li a i { - margin-right: 10px; } - -.doc-link { - float: right; - position: relative; - -webkit-transition: all 0.5s ease-in-out; - transition: all 0.5s ease-in-out; } - .doc-link:hover:after, .doc-link:focus:after { - opacity: 1; - visibility: visible; } - .doc-link:after { - border: 1px solid #e7e7e7; - border-radius: 5px; - content: "Documentation"; - font-size: 12px; - padding: 5px 10px; - position: absolute; - right: -30px; - top: -30px; - opacity: 0; - visibility: hidden; - -webkit-transition: all 0.5s ease-in-out; - transition: all 0.5s ease-in-out; } - -.jqstooltip { - -webkit-box-sizing: content-box; - box-sizing: content-box; } - -/*# sourceMappingURL=card.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/card.css.map b/web/bsadmin/assets/css/card.css.map deleted file mode 100644 index 1142929..0000000 --- a/web/bsadmin/assets/css/card.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAKA,UAAU;EACN,UAAU,ECiBP,IAAI;;ADbX,KAAM;EACF,UAAU,ECYP,IAAI;EDXP,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,GAAG;EACX,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,oBAAoB;;AAIhC,eAAG;EACC,OAAO,EAAE,YAAY;AAEzB,cAAE;EACE,WAAW,ECtBb,uBAAuB;EDuBrB,aAAa,EAAE,IAAI;;AAIvB,eAAG;EACC,SAAS,EAAC,IAAI;AAElB,2BAAe;EACX,KAAK,EAAC,KAAK;AAEf,yBAAa;EACT,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,IAAI;;AAIvB,uBAAwB;EACpB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,KAAK;EACZ,0BAAG;IACC,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,IAAI;IAClB,KAAK,EChCD,OAAO;IDiCX,MAAM,EAAE,OAAO;IACf,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,YAAY;IACrB,oCAAU;MACN,SAAS,EAAE,IAAI;;AAK3B,YAAa;EACT,QAAQ,EAAE,QAAQ;;AAGtB,qBAAsB;EAClB,OAAO,EAAE,IAAI;EAIb,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,CAAC;EAKR,wBAAG;IACC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,GAAG;IACZ,0BAAE;MACE,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE,IAAI;MACf,4BAAE;QACE,YAAY,EAAE,IAAI;;AAQlC,SAAU;EACN,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,oBAAoB;EAG5B,4CAAQ;IACJ,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,OAAO;EAG3B,eAAQ;IACJ,MAAM,EAAE,iBAAiB;IACzB,aAAa,EAAE,GAAG;IAClB,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,oBAAoB;;AAKxC,WAAY;EACV,kBAAkB,EAAE,WAAW;EAC/B,eAAe,EAAE,WAAW;EAC5B,UAAU,EAAE,WAAW", -"sources": ["../sass/card.scss","../sass/variable.scss"], -"names": [], -"file": "card.css" -} diff --git a/web/bsadmin/assets/css/carousel.css b/web/bsadmin/assets/css/carousel.css deleted file mode 100644 index b88d5e1..0000000 --- a/web/bsadmin/assets/css/carousel.css +++ /dev/null @@ -1,22 +0,0 @@ -.testimonial-widget-one .testimonial-content { - text-align: right; } -.testimonial-widget-one .testimonial-text { - margin-bottom: 30px; } -.testimonial-widget-one .testimonial-author-position { - font-family: "Quicksand", sans-serif; - margin-right: 75px; - position: relative; - top: -5px; } -.testimonial-widget-one .testimonial-author { - margin-right: 75px; - position: relative; - top: -5px; } -.testimonial-widget-one .testimonial-author-img { - height: 50px !important; - width: 50px !important; - border-radius: 100px; - position: absolute; - bottom: 0; - right: 0; } - -/*# sourceMappingURL=carousel.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/carousel.css.map b/web/bsadmin/assets/css/carousel.css.map deleted file mode 100644 index 09f6253..0000000 --- a/web/bsadmin/assets/css/carousel.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAGI,4CAAqB;EACjB,UAAU,EAAE,KAAK;AAErB,yCAAkB;EACd,aAAa,EAAE,IAAI;AAEvB,oDAA6B;EACzB,WAAW,ECRb,uBAAuB;EDSrB,YAAY,EAAE,IAAI;EAClB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;AAEb,2CAAoB;EAChB,YAAY,EAAE,IAAI;EAClB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;AAEb,+CAAwB;EACpB,MAAM,EAAE,eAAe;EACvB,KAAK,EAAE,eAAe;EACtB,aAAa,EAAE,KAAK;EACpB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC", -"sources": ["../sass/carousel.scss","../sass/variable.scss"], -"names": [], -"file": "carousel.css" -} diff --git a/web/bsadmin/assets/css/chart.css b/web/bsadmin/assets/css/chart.css deleted file mode 100644 index e735533..0000000 --- a/web/bsadmin/assets/css/chart.css +++ /dev/null @@ -1,22 +0,0 @@ -.cpu-load { - width: 100%; - height: 272px; - font-size: 14px; - line-height: 1.2em; } - -.cpu-load-data-content { - font-size: 18px; - font-weight: 400; - line-height: 40px; } - -.cpu-load-data { - margin-bottom: 30px; } - .cpu-load-data li { - display: inline-block; - width: 32.5%; - text-align: center; - border-right: 1px solid #e7e7e7; } - .cpu-load-data li:last-child { - border-right: 0px; } - -/*# sourceMappingURL=chart.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/chart.css.map b/web/bsadmin/assets/css/chart.css.map deleted file mode 100644 index 74d0ed0..0000000 --- a/web/bsadmin/assets/css/chart.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AACA,SAAU;EACN,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,KAAK;;AAGtB,sBAAuB;EACrB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EACd,WAAW,EAAE,IAAI;;AAGrB,cAAe;EACX,aAAa,EAAE,IAAI;EACnB,iBAAG;IACC,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,iBAAiB;IAC/B,4BAAY;MACR,YAAY,EAAE,GAAG", -"sources": ["../sass/chart.scss"], -"names": [], -"file": "chart.css" -} diff --git a/web/bsadmin/assets/css/chat.css b/web/bsadmin/assets/css/chat.css deleted file mode 100644 index e9bf188..0000000 --- a/web/bsadmin/assets/css/chat.css +++ /dev/null @@ -1,169 +0,0 @@ -.chat-sidebar { - background-color: #f5f5f5; - border-left: 1px solid #e7e7e7; - position: fixed; - right: -240px; - bottom: 0; - top: 55px; - width: 240px; - z-index: 2; - -webkit-transition: all 0.5s ease 0s; - transition: all 0.5s ease 0s; } - .chat-sidebar .user-name { - font-family: "Quicksand", sans-serif; } - .chat-sidebar .content { - font-family: "Quicksand", sans-serif; } - .chat-sidebar .textarea { - font-family: "Quicksand", sans-serif; } - .chat-sidebar .seen { - font-family: "Quicksand", sans-serif; } - -.chat-sidebar.is-active { - right: 0; } - -.chat-user-search .input-group-addon { - background: #fff; - border-radius: 0px; - border: 0px; } -.chat-user-search .form-control { - border: 0px; } - -.hidden { - display: none; } - -/* Home Chat Widget ----------------------------------*/ -.chat-widget .chat_window { - position: relative; - width: 100%; - height: 500px; - border-radius: 10px; - background-color: #ffffff; - background-color: #f8f8f8; - overflow: hidden; } -.chat-widget .messages { - position: relative; - list-style: none; - padding: 20px 10px 0 10px; - margin: 0; - min-height: 350px; - overflow: scroll; } - .chat-widget .messages .message { - clear: both; - overflow: hidden; - margin-bottom: 20px; - -webkit-transition: all 0.5s linear; - transition: all 0.5s linear; - opacity: 0; } - .chat-widget .messages .message .avatar { - width: 60px; - height: 60px; - border-radius: 50%; - display: inline-block; } - .chat-widget .messages .message .text_wrapper { - display: inline-block; - padding: 20px; - border-radius: 6px; - width: calc(100% - 100px); - min-width: 100px; - position: relative; } - .chat-widget .messages .message .text_wrapper .text { - font-size: 18px; - font-weight: 300; } - .chat-widget .messages .message .text_wrapper::after { - top: 18px; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; - border-width: 13px; - margin-top: 0px; } - .chat-widget .messages .message .text_wrapper:before { - top: 18px; - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; - pointer-events: none; } - .chat-widget .messages .message .text_wrapper::before { - border-width: 15px; - margin-top: -2px; } - .chat-widget .messages .message.left .text_wrapper::after, - .chat-widget .messages .message.left .text_wrapper::before { - right: 100%; - border-right-color: #ffe6cb; } - .chat-widget .messages .message.left .avatar { - background-color: #f5886e; - float: left; } - .chat-widget .messages .message.left .text_wrapper { - background-color: #ffe6cb; - margin-left: 20px; } - .chat-widget .messages .message.left .text { - color: #c48843; } - .chat-widget .messages .message.right .text_wrapper::after, - .chat-widget .messages .message.right .text_wrapper::before { - left: 100%; - border-left-color: #c7eafc; } - .chat-widget .messages .message.right .avatar { - background-color: #fdbf68; - float: right; } - .chat-widget .messages .message.right .text_wrapper { - background-color: #c7eafc; - margin-right: 20px; - float: right; } - .chat-widget .messages .message.right .text { - color: #45829b; } - .chat-widget .messages .message.appeared { - opacity: 1; } -.chat-widget .bottom_wrapper { - position: relative; - position: absolute; - width: 100%; - background-color: #ffffff; - padding: 20px 20px; - bottom: 0; } - .chat-widget .bottom_wrapper .message_input_wrapper { - display: inline-block; - height: 50px; - border-radius: 25px; - border: 1px solid #bcbdc0; - width: calc(100% - 160px); - position: relative; - padding: 0 20px; } - .chat-widget .bottom_wrapper .message_input_wrapper .message_input { - border: none; - height: 100%; - -webkit-box-sizing: border-box; - box-sizing: border-box; - width: calc(100% - 45px); - position: absolute; - outline-width: 0; - color: gray; } - .chat-widget .bottom_wrapper .send_message { - width: 140px; - height: 50px; - display: inline-block; - border-radius: 50px; - background-color: #a3d063; - border: 2px solid #a3d063; - color: #ffffff; - cursor: pointer; - -webkit-transition: all 0.2s linear; - transition: all 0.2s linear; - text-align: center; - float: right; } - .chat-widget .bottom_wrapper .send_message .text { - font-size: 18px; - font-weight: 300; - display: inline-block; - line-height: 48px; } - .chat-widget .bottom_wrapper .send_message:hover { - color: #a3d063; - background-color: #ffffff; } -.chat-widget .message_template { - display: none; } - -/*# sourceMappingURL=chat.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/chat.css.map b/web/bsadmin/assets/css/chat.css.map deleted file mode 100644 index bed1a6f..0000000 --- a/web/bsadmin/assets/css/chat.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AACA,aAAc;EACV,gBAAgB,ECsBP,OAAO;EDrBhB,WAAW,EAAE,iBAAiB;EAC9B,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,MAAM;EACb,MAAM,EAAE,CAAC;EACT,GAAG,EAAE,IAAI;EACT,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,CAAC;EACV,kBAAkB,EAAE,gBAAgB;EACpC,UAAU,EAAE,gBAAgB;EAC5B,wBAAW;IACP,WAAW,ECXb,uBAAuB;EDazB,sBAAS;IACL,WAAW,ECdb,uBAAuB;EDgBzB,uBAAU;IACN,WAAW,ECjBb,uBAAuB;EDmBzB,mBAAM;IACF,WAAW,ECpBb,uBAAuB;;ADwB7B,uBAAwB;EACpB,KAAK,EAAE,CAAC;;AAIR,oCAAmB;EACf,UAAU,ECTX,IAAI;EDUH,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,GAAG;AAEf,+BAAc;EACV,MAAM,EAAE,GAAG;;AAInB,OAAQ;EACJ,OAAO,EAAE,IAAI;;AAIjB;mCACmC;AAG/B,yBAAa;EACT,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EAET,MAAM,EAAC,KAAK;EACd,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,OAAO;EACzB,gBAAgB,EAAE,OAAO;EAKzB,QAAQ,EAAE,MAAM;AAkCpB,sBAAU;EACN,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,KAAK;EACjB,QAAQ,EAAE,MAAM;EAChB,+BAAS;IACL,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,eAAe;IAC3B,OAAO,EAAE,CAAC;IACV,uCAAQ;MACJ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,aAAa,EAAE,GAAG;MAClB,OAAO,EAAE,YAAY;IAEzB,6CAAc;MACV,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,IAAI;MACb,aAAa,EAAE,GAAG;MAClB,KAAK,EAAE,kBAAuB;MAC9B,SAAS,EAAE,KAAK;MAChB,QAAQ,EAAE,QAAQ;MAClB,mDAAM;QACF,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,GAAG;IAGxB,oDAAqB;MACjB,GAAG,EAAE,IAAI;MACT,MAAM,EAAE,iBAAiB;MACzB,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MACR,QAAQ,EAAE,QAAQ;MAClB,cAAc,EAAE,IAAI;MACpB,YAAY,EAAE,IAAI;MAClB,UAAU,EAAE,GAAG;IAEnB,oDAAqB;MACjB,GAAG,EAAE,IAAI;MACT,MAAM,EAAE,iBAAiB;MACzB,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,CAAC;MACR,QAAQ,EAAE,QAAQ;MAClB,cAAc,EAAE,IAAI;IAExB,qDAAsB;MAClB,YAAY,EAAE,IAAI;MAClB,UAAU,EAAE,IAAI;EAIpB;4DACsB;IAClB,KAAK,EAAE,IAAI;IACX,kBAAkB,EAAE,OAAO;EAE/B,4CAAQ;IACJ,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,IAAI;EAEf,kDAAc;IACV,gBAAgB,EAAE,OAAO;IACzB,WAAW,EAAE,IAAI;EAErB,0CAAM;IACF,KAAK,EAAE,OAAO;EAIlB;6DACsB;IAClB,IAAI,EAAE,IAAI;IACV,iBAAiB,EAAE,OAAO;EAE9B,6CAAQ;IACJ,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,KAAK;EAEhB,mDAAc;IACV,gBAAgB,EAAE,OAAO;IACzB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,KAAK;EAEhB,2CAAM;IACF,KAAK,EAAE,OAAO;EAGtB,wCAAkB;IACd,OAAO,EAAE,CAAC;AAGlB,4BAAgB;EACZ,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,CAAC;EACT,mDAAuB;IACnB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,kBAAuB;IAC9B,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,MAAM;IACf,kEAAe;MACX,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,IAAI;MACZ,UAAU,EAAE,UAAU;MACtB,KAAK,EAAE,iBAAsB;MAC7B,QAAQ,EAAE,QAAQ;MAClB,aAAa,EAAE,CAAC;MAChB,KAAK,EAAE,IAAI;EAGnB,0CAAc;IACV,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,IAAI;IACnB,gBAAgB,EAAE,OAAO;IACzB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,OAAO;IACf,UAAU,EAAE,eAAe;IAC3B,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,KAAK;IACZ,gDAAM;MACF,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,GAAG;MAChB,OAAO,EAAE,YAAY;MACrB,WAAW,EAAE,IAAI;EAGzB,gDAAoB;IAChB,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,OAAO;AAGjC,8BAAkB;EACd,OAAO,EAAE,IAAI", -"sources": ["../sass/chat.scss","../sass/variable.scss"], -"names": [], -"file": "chat.css" -} diff --git a/web/bsadmin/assets/css/compose-email.css b/web/bsadmin/assets/css/compose-email.css deleted file mode 100644 index e13adc6..0000000 --- a/web/bsadmin/assets/css/compose-email.css +++ /dev/null @@ -1,367 +0,0 @@ -.mail-box { - border-collapse: collapse; - border-spacing: 0; - display: table; - table-layout: fixed; - width: 100%; } - .mail-box aside { - display: table-cell; - float: none; - height: 100%; - padding: 0; - vertical-align: top; } - .mail-box .sm-side { - background: #fff; - border-radius: 4px 0 0 4px; - width: 25%; } - .mail-box .sm-side .user-head { - background: #fff; - border-radius: 4px 0 0; - color: #878787; - min-height: 80px; - padding: 10px; } - .mail-box .lg-side { - background: none repeat scroll 0 0 #fff; - border-radius: 0 4px 4px 0; - width: 75%; } - -.user-head .inbox-avatar { - float: left; - width: 65px; } - .user-head .inbox-avatar img { - border-radius: 100px; - height: 65px; - width: 65px; } -.user-head .user-name { - display: inline-block; - margin: 0 0 0 10px; } - .user-head .user-name h5 { - font-size: 14px; - font-weight: 300; - margin-bottom: 0; - margin-top: 15px; } - .user-head .user-name h5 a { - color: #878787; } - .user-head .user-name span a { - color: #878787; - font-size: 12px; } - -a.mail-dropdown { - background: none repeat scroll 0 0 #80d3d9; - border-radius: 2px; - color: #01a7b3; - font-size: 10px; - margin-top: 20px; - padding: 3px 5px; } - -.inbox-body { - padding: 20px 0px; } - .inbox-body .modal .modal-body input { - border: 1px solid #e6e6e6; - -webkit-box-shadow: none; - box-shadow: none; } - .inbox-body .modal .modal-body textarea { - border: 1px solid #e6e6e6; - -webkit-box-shadow: none; - box-shadow: none; } - -.btn-compose { - background: #f96332; - color: #fff; - padding: 12px 0; - text-align: center; - width: 70%; } - .btn-compose:hover, .btn-compose:focus, .btn-compose.active { - background: #f96332; - color: #fff; } - -ul.inbox-nav { - display: inline-block; - margin: 0; - padding: 0; - width: 100%; } - ul.inbox-nav li { - display: inline-block; - line-height: 45px; - width: 100%; } - ul.inbox-nav li a { - color: #6a6a6a; - display: inline-block; - line-height: 45px; - padding: 0 20px; - width: 100%; - font-family: "Quicksand", sans-serif; } - ul.inbox-nav li a:hover { - background: #f5f5f5; - color: #6a6a6a; } - ul.inbox-nav li a:focus { - background: #f5f5f5; - color: #6a6a6a; } - ul.inbox-nav li a i { - color: #6a6a6a; - font-size: 16px; - padding-right: 10px; } - ul.inbox-nav li a span.label { - margin-top: 13px; } - ul.inbox-nav li.active a { - background: #f5f5f5; - color: #6a6a6a; } - -.inbox-divider { - border-bottom: 1px solid #e7e7e7; } - -ul.labels-info li { - margin: 0; } - ul.labels-info li h4 { - color: #5c5c5e; - font-size: 13px; - padding-left: 15px; - padding-right: 15px; - padding-top: 20px; - text-transform: uppercase; } - ul.labels-info li a { - border-radius: 0; - color: #6a6a6a; - font-family: "Quicksand", sans-serif; } - ul.labels-info li a:hover { - background: #f5f5f5; - color: #6a6a6a; } - ul.labels-info li a:focus { - background: #f5f5f5; - color: #6a6a6a; } - ul.labels-info li a i { - padding-right: 10px; } - -.nav.nav-pills.nav-stacked.labels-info p { - color: #9d9f9e; - font-size: 11px; - margin-bottom: 0; - padding: 0 22px; } - -.inbox-head { - background: #f5f5f5; - border-radius: 4px 4px 0 0; - color: #878787; - min-height: 80px; - padding: 20px; } - .inbox-head h3 { - display: inline-block; - font-weight: 300; - margin: 0; - padding-top: 6px; } - .inbox-head .sr-input { - border: medium none; - border-radius: 4px 0 0 4px; - -webkit-box-shadow: none; - box-shadow: none; - color: #8a8a8a; - float: left; - height: 40px; - padding: 0 10px; } - .inbox-head .sr-btn { - background: #fff; - border: medium none; - border-radius: 0 4px 4px 0; - color: #878787; - height: 40px; - padding: 0 20px; } - -.table-inbox { - border: 1px solid #e7e7e7; - margin-bottom: 0; } - .table-inbox tr td { - padding: 12px !important; } - .table-inbox tr td:hover { - cursor: pointer; } - .table-inbox tr td .ti-star.inbox-started { - color: #f39c12; } - .table-inbox tr td .ti-star { - color: #d5d5d5; } - .table-inbox tr td .ti-star:hover { - color: #f39c12; } - .table-inbox tr.unread td { - background: #f5f5f5; } - -ul.inbox-pagination { - float: right; } - ul.inbox-pagination li { - float: left; } - -.mail-option { - display: inline-block; - margin: 26px 0; - width: 100%; - font-size: 12px; } - .mail-option .chk-all { - margin-right: 5px; - background: none repeat scroll 0 0 #fcfcfc; - border: 1px solid #e7e7e7; - border-radius: 3px !important; - color: #afafaf; - display: inline-block; - padding: 5px 16px; } - .mail-option .chk-all input[type="checkbox"] { - margin-top: 0; } - .mail-option .btn-group { - margin-right: 5px; } - .mail-option .btn-group a.btn { - background: #fff; - border: 1px solid #e7e7e7; - border-radius: 3px !important; - font-family: "Quicksand", sans-serif; - color: #878787; - display: inline-block; - padding: 5px 10px; - font-size: 12px; } - .mail-option .btn-group a.all { - border: medium none; - padding: 0; - margin-left: 5px; } - .mail-option .btn-group i { - margin-left: 5px; } - .mail-option .card-option-dropdown { - left: 0; - right: auto; } - -.inbox-pagination a.np-btn { - background: none repeat scroll 0 0 #fcfcfc; - border: 1px solid #e7e7e7; - border-radius: 3px !important; - color: #afafaf; - display: inline-block; - padding: 5px 15px; - margin-left: 5px; } -.inbox-pagination li span { - display: inline-block; - margin-right: 5px; - margin-top: 7px; } - -.fileinput-button { - background: none repeat scroll 0 0 #eeeeee; - border: 1px solid #e6e6e6; - float: left; - margin-right: 4px; - overflow: hidden; - position: relative; } - .fileinput-button input { - cursor: pointer; - direction: ltr; - font-size: 23px; - margin: 0; - opacity: 0; - position: absolute; - right: 0; - top: 0; - -webkit-transform: translate(-300px, 0px) scale(4); - transform: translate(-300px, 0px) scale(4); } - -.modal-header h4.modal-title { - font-weight: 300; } - -.modal-body label { - font-weight: 400; } - -.heading-inbox h4 { - border-bottom: 1px solid #ddd; - color: #444; - font-size: 18px; - margin-top: 20px; - padding-bottom: 10px; } - -.sender-info { - margin-bottom: 20px; } - .sender-info img { - height: 30px; - width: 30px; } - -.sender-dropdown { - background: none repeat scroll 0 0 #eaeaea; - color: #777; - font-size: 10px; - padding: 0 3px; } - -.view-mail a { - color: #e74c3c; } - -.attachment-mail { - margin-top: 30px; } - .attachment-mail ul { - display: inline-block; - margin-bottom: 30px; - width: 100%; } - .attachment-mail ul li { - float: left; - margin-bottom: 10px; - margin-right: 10px; - width: 150px; } - .attachment-mail ul li img { - width: 100%; } - .attachment-mail ul li span { - float: right; } - .attachment-mail .file-name { - float: left; } - .attachment-mail .links { - display: inline-block; - width: 100%; } - -.fileupload-buttonbar .btn { - margin-bottom: 5px; } -.fileupload-buttonbar .toggle { - margin-bottom: 5px; } - -.files .progress { - width: 200px; } - -.fileupload-processing .fileupload-loading { - display: block; } - -* html .fileinput-button { - line-height: 24px; - margin: 1px -3px 0 0; } -* + html .fileinput-button { - margin: 1px 0 0; - padding: 2px 15px; } - -ul { - list-style-type: none; - padding: 0px; - margin: 0px; } - -.inbox-small-cells { - text-align: center; } - -.mail-group-checkbox { - position: relative; - top: 2px; } - -.mail-checkbox.mail-group-checkbox { - position: relative; - top: 2px; - left: 2px; } - -.table-inbox > tbody > tr > td, -.table > tbody > tr > th, -.table > tfoot > tr > td, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > thead > tr > th { - border-top: 1px solid #e7e7e7; - line-height: 1.42857; - padding: 8px; - vertical-align: top; } - -@media (max-width: 767px) { - .files .btn span { - display: none; } - .files .preview * { - width: 40px; } - .files .name * { - display: inline-block; - width: 80px; - word-wrap: break-word; } - .files .progress { - width: 20px; } - .files .delete { - width: 60px; } } - -/*# sourceMappingURL=compose-email.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/compose-email.css.map b/web/bsadmin/assets/css/compose-email.css.map deleted file mode 100644 index 229a423..0000000 --- a/web/bsadmin/assets/css/compose-email.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAcA,SAAU;EACN,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC;EACjB,OAAO,EAAE,KAAK;EACd,YAAY,EAAE,KAAK;EACnB,KAAK,EAAE,IAAI;EACX,eAAM;IACF,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,GAAG;EAEvB,kBAAS;IACL,UAAU,EA3BR,IAAM;IA4BR,aAAa,EAAE,WAAW;IAC1B,KAAK,EAAE,GAAG;IACV,6BAAW;MACP,UAAU,EA/BZ,IAAM;MAgCJ,aAAa,EAAE,OAAO;MACtB,KAAK,EClBX,OAAO;MDmBD,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,IAAI;EAIrB,kBAAS;IACL,UAAU,EAAE,2BAA6B;IACzC,aAAa,EAAE,WAAW;IAC1B,KAAK,EAAE,GAAG;;AAKd,wBAAc;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,4BAAI;IACA,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;AAGnB,qBAAW;EACP,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,UAAU;EAClB,wBAAG;IACC,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,IAAI;IAChB,0BAAE;MACE,KAAK,EClDf,OAAO;EDsDD,4BAAE;IACE,KAAK,ECvDf,OAAO;IDwDG,SAAS,EAAE,IAAI;;AAM/B,eAAgB;EACZ,UAAU,EAAE,8BAA8B;EAC1C,aAAa,EAAE,GAAG;EAClB,KAAK,EA9EC,OAAO;EA+Eb,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,OAAO;;AAGpB,WAAY;EACR,OAAO,EAAE,QAAQ;EAGT,oCAAM;IACF,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,IAAI;EAEpB,uCAAS;IACL,MAAM,EAAE,iBAAiB;IACzB,UAAU,EAAE,IAAI;;AAMhC,YAAa;EACT,UAAU,EChGL,OAAO;EDiGZ,KAAK,EAxGC,IAAM;EAyGZ,OAAO,EAAE,MAAM;EACf,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,GAAG;EACV,2DAES;IACL,UAAU,ECxGT,OAAO;IDyGR,KAAK,EAhHH,IAAM;;AAoHhB,YAAa;EACT,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,eAAG;IACC,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,IAAI;IACX,iBAAE;MACE,KAAK,EA3HP,OAAO;MA4HL,OAAO,EAAE,YAAY;MACrB,WAAW,EAAE,IAAI;MACjB,OAAO,EAAE,MAAM;MACf,KAAK,EAAE,IAAI;MACX,WAAW,EClIjB,uBAAuB;MDmIjB,uBAAQ;QACJ,UAAU,EC9Gb,OAAO;QD+GJ,KAAK,EAnIX,OAAO;MAqIL,uBAAQ;QACJ,UAAU,EClHb,OAAO;QDmHJ,KAAK,EAvIX,OAAO;MAyIL,mBAAE;QACE,KAAK,EA1IX,OAAO;QA2ID,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,IAAI;MAEvB,4BAAW;QACP,UAAU,EAAE,IAAI;EAKxB,wBAAE;IACE,UAAU,ECjIT,OAAO;IDkIR,KAAK,EAtJP,OAAO;;AA2JjB,cAAe;EACX,aAAa,EAAE,iBAAiB;;AAIhC,iBAAG;EASC,MAAM,EAAE,CAAC;EART,oBAAG;IACC,KAAK,EAjKP,OAAO;IAkKL,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,SAAS;EAG7B,mBAAE;IACE,aAAa,EAAE,CAAC;IAChB,KAAK,EA5KP,OAAO;IA6KL,WAAW,EC/KjB,uBAAuB;IDgLjB,yBAAQ;MACJ,UAAU,EC3Jb,OAAO;MD4JJ,KAAK,EAhLX,OAAO;IAkLL,yBAAQ;MACJ,UAAU,EC/Jb,OAAO;MDgKJ,KAAK,EApLX,OAAO;IAsLL,qBAAE;MACE,aAAa,EAAE,IAAI;;AAO/B,wCAAE;EACE,KAAK,EA7LH,OAAO;EA8LT,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,CAAC;EAChB,OAAO,EAAE,MAAM;;AAIvB,WAAY;EACR,UAAU,ECnLD,OAAO;EDoLhB,aAAa,EAAE,WAAW;EAC1B,KAAK,EC7LH,OAAO;ED8LT,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,cAAG;IACC,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,GAAG;EAEpB,qBAAU;IACN,MAAM,EAAE,WAAW;IACnB,aAAa,EAAE,WAAW;IAC1B,UAAU,EAAE,IAAI;IAChB,KAAK,EAnNH,OAAO;IAoNT,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,MAAM;EAEnB,mBAAQ;IACJ,UAAU,EA/NR,IAAM;IAgOR,MAAM,EAAE,WAAW;IACnB,aAAa,EAAE,WAAW;IAC1B,KAAK,ECnNP,OAAO;IDoNL,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,MAAM;;AAIvB,YAAa;EACT,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,CAAC;EAEZ,kBAAG;IACC,OAAO,EAAE,eAAe;IACxB,wBAAQ;MACJ,MAAM,EAAE,OAAO;IAEnB,yCAAuB;MACnB,KAAK,ECvOZ,OAAO;IDyOJ,2BAAS;MAIL,KAAK,EAhPX,OAAO;MA6OD,iCAAQ;QACJ,KAAK,EC3OhB,OAAO;EDkPR,yBAAG;IACC,UAAU,ECvOT,OAAO;;AD6OpB,mBAAoB;EAChB,KAAK,EAAE,KAAK;EACZ,sBAAG;IACC,KAAK,EAAE,IAAI;;AAInB,YAAa;EACT,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,qBAAS;IACL,YAAY,EAAE,GAAG;IACjB,UAAU,EAAE,8BAA8B;IAC1C,MAAM,EAAE,iBAAiB;IACzB,aAAa,EAAE,cAAc;IAC7B,KAAK,EA5QF,OAAO;IA6QV,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,QAAQ;IACjB,4CAAuB;MACnB,UAAU,EAAE,CAAC;EAGrB,uBAAW;IACP,YAAY,EAAE,GAAG;IACjB,6BAAM;MACF,UAAU,EA/RZ,IAAM;MAgSJ,MAAM,EAAE,iBAAiB;MACzB,aAAa,EAAE,cAAc;MAC7B,WAAW,ECjSjB,uBAAuB;MDkSjB,KAAK,ECpRX,OAAO;MDqRD,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,QAAQ;MACjB,SAAS,EAAE,IAAI;IAEnB,6BAAM;MACF,MAAM,EAAE,WAAW;MACnB,OAAO,EAAE,CAAC;MACV,WAAW,EAAE,GAAG;IAEpB,yBAAE;MACE,WAAW,EAAE,GAAG;EAGxB,kCAAsB;IAClB,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI;;AAKf,0BAAS;EACL,UAAU,EAAE,8BAA8B;EAC1C,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,cAAc;EAC7B,KAAK,EAnTF,OAAO;EAoTV,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,QAAQ;EACjB,WAAW,EAAE,GAAG;AAGhB,yBAAK;EACD,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,GAAG;EACjB,UAAU,EAAE,GAAG;;AAK3B,iBAAkB;EACd,UAAU,EAAE,8BAA8B;EAC1C,MAAM,EAAE,iBAAiB;EACzB,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,GAAG;EACjB,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,QAAQ;EAClB,uBAAM;IACF,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,SAAS,EAAE,+BAA+B;;AAc9C,4BAAe;EAEX,WAAW,EAAE,GAAG;;AAKpB,iBAAM;EAEF,WAAW,EAAE,GAAG;;AAKpB,iBAAG;EACC,aAAa,EAAE,cAAc;EAC7B,KAAK,EA9WF,IAAI;EA+WP,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,cAAc,EAAE,IAAI;;AAI5B,YAAa;EACT,aAAa,EAAE,IAAI;EACnB,gBAAI;IACA,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;;AAInB,gBAAiB;EACb,UAAU,EAAE,8BAA8B;EAC1C,KAAK,EA9XE,IAAI;EA+XX,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK;;AAId,YAAE;EACE,KAAK,ECtYL,OAAO;;AD0Yf,gBAAiB;EACb,UAAU,EAAE,IAAI;EAChB,mBAAG;IACC,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,sBAAG;MACC,KAAK,EAAE,IAAI;MACX,aAAa,EAAE,IAAI;MACnB,YAAY,EAAE,IAAI;MAClB,KAAK,EAAE,KAAK;MACZ,0BAAI;QACA,KAAK,EAAE,IAAI;MAEf,2BAAK;QACD,KAAK,EAAE,KAAK;EAIxB,2BAAW;IACP,KAAK,EAAE,IAAI;EAEf,uBAAO;IACH,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;;AAKf,0BAAK;EACD,aAAa,EAAE,GAAG;AAEtB,6BAAQ;EACJ,aAAa,EAAE,GAAG;;AAKtB,gBAAU;EACN,KAAK,EAAE,KAAK;;AAKhB,0CAAoB;EAChB,OAAO,EAAE,KAAK;;AAMd,wBAAkB;EACd,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,YAAY;AAIxB,0BAAkB;EACd,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,QAAQ;;AAK7B,EAAG;EACC,eAAe,EAAE,IAAI;EACrB,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,GAAG;;AAGf,kBAAmB;EACf,UAAU,EAAE,MAAM;;AAGtB,oBAAqB;EACjB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;;AAGZ,kCAAmC;EAC/B,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;;AAGb;;;;;wBAKyB;EACrB,UAAU,EAAE,iBAAiB;EAC7B,WAAW,EAAE,OAAO;EACpB,OAAO,EAAE,GAAG;EACZ,cAAc,EAAE,GAAG;;AAGvB,yBAA0B;EAGd,gBAAK;IACD,OAAO,EAAE,IAAI;EAIjB,iBAAE;IACE,KAAK,EAAE,IAAI;EAIf,cAAE;IACE,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,UAAU;EAG7B,gBAAU;IACN,KAAK,EAAE,IAAI;EAEf,cAAQ;IACJ,KAAK,EAAE,IAAI", -"sources": ["../sass/compose-email.scss","../sass/variable.scss"], -"names": [], -"file": "compose-email.css" -} diff --git a/web/bsadmin/assets/css/data-table.css b/web/bsadmin/assets/css/data-table.css deleted file mode 100644 index 69fbe5a..0000000 --- a/web/bsadmin/assets/css/data-table.css +++ /dev/null @@ -1,74 +0,0 @@ -.bootstrap-data-table-panel .dataTables_filter { - text-align: right; } - .bootstrap-data-table-panel .dataTables_filter .form-control { - margin-left: 10px; } - .bootstrap-data-table-panel .dataTables_filter .form-control:hover, .bootstrap-data-table-panel .dataTables_filter .form-control:focus { - background: transparent; } - -.dataTables_length { - display: inline-block; - float: left; - margin-right: 30px; } - -.dt-buttons { - margin-bottom: 15px; } - .dt-buttons .dt-button { - background-image: none; - background: #fff; - color: #878787; - border-color: #e7e7e7; - margin-right: 10px; - padding: 7px 20px; - border-radius: 0px; } - .dt-buttons .dt-button:hover:not(.disabled), .dt-buttons .dt-button:focus, .dt-buttons .dt-button.active { - background-image: none; - background: #f96332; - color: #fff; } - -button.dt-button:hover:not(.disabled), -div.dt-button:hover:not(.disabled), -a.dt-button:hover:not(.disabled) { - background-color: #f96332; - background-image: none; - border: 1px solid #f96332; - -webkit-box-shadow: none; - box-shadow: none; - color: #fff; } - -button.dt-button:focus:not(.disabled), -div.dt-button:focus:not(.disabled), -a.dt-button:focus:not(.disabled) { - background-color: #f96332; - background-image: none; - border: 1px solid #f96332; - -webkit-box-shadow: none; - box-shadow: none; - color: #fff; } - -button.dt-button:active:hover:not(.disabled):not(.disabled), -button.dt-button.active:hover:not(.disabled):not(.disabled), -div.dt-button:active:hover:not(.disabled):not(.disabled), -div.dt-button.active:hover:not(.disabled):not(.disabled), -a.dt-button:active:hover:not(.disabled):not(.disabled), -a.dt-button.active:hover:not(.disabled):not(.disabled) { - background-color: #f96332; - background-image: none; - border: 1px solid #f96332; - -webkit-box-shadow: none; - box-shadow: none; - color: #fff; } - -button.dt-button:active:not(.disabled), -button.dt-button.active:not(.disabled), -div.dt-button:active:not(.disabled), -div.dt-button.active:not(.disabled), -a.dt-button:active:not(.disabled), -a.dt-button.active:not(.disabled) { - background-color: #f96332; - background-image: none; - border: 1px solid #f96332; - -webkit-box-shadow: none; - box-shadow: none; - color: #fff; } - -/*# sourceMappingURL=data-table.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/data-table.css.map b/web/bsadmin/assets/css/data-table.css.map deleted file mode 100644 index 973a438..0000000 --- a/web/bsadmin/assets/css/data-table.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEI,8CAAmB;EACf,UAAU,EAAE,KAAK;EACjB,4DAAa;IACT,WAAW,EAAE,IAAI;IACjB,sIAAe;MACX,UAAU,EAAE,WAAW;;AAcvC,kBAAmB;EACjB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,IAAI;;AAGpB,WAAY;EACR,aAAa,EAAE,IAAI;EACnB,sBAAW;IACP,gBAAgB,EAAE,IAAI;IACtB,UAAU,ECRX,IAAI;IDSH,KAAK,EChBP,OAAO;IDiBL,YAAY,ECPZ,OAAO;IDQP,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,QAAQ;IACjB,aAAa,EAAE,GAAG;IAClB,wGAES;MACL,gBAAgB,EAAE,IAAI;MACtB,UAAU,ECjCb,OAAO;MDkCJ,KAAK,ECnBV,IAAI;;ADwBX;;gCAEiC;EAC7B,gBAAgB,EC1CX,OAAO;ED2CZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAkB;EAC1B,UAAU,EAAE,IAAI;EAChB,KAAK,EC/BF,IAAI;;ADkCX;;gCAEiC;EAC7B,gBAAgB,ECpDX,OAAO;EDqDZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAkB;EAC1B,UAAU,EAAE,IAAI;EAChB,KAAK,ECzCF,IAAI;;AD4CX;;;;;sDAKuD;EACnD,gBAAgB,ECjEX,OAAO;EDkEZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAkB;EAC1B,UAAU,EAAE,IAAI;EAChB,KAAK,ECtDF,IAAI;;ADyDX;;;;;iCAKkC;EAC9B,gBAAgB,EC9EX,OAAO;ED+EZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAkB;EAC1B,UAAU,EAAE,IAAI;EAChB,KAAK,ECnEF,IAAI", -"sources": ["../sass/data-table.scss","../sass/variable.scss"], -"names": [], -"file": "data-table.css" -} diff --git a/web/bsadmin/assets/css/datamap.css b/web/bsadmin/assets/css/datamap.css deleted file mode 100644 index 50632c6..0000000 --- a/web/bsadmin/assets/css/datamap.css +++ /dev/null @@ -1,11 +0,0 @@ -.datamap-sales-hover-tooltip { - background: #252525; - font-family: "Quicksand", sans-serif; - padding: 5px 10px; - color: #fff; - font-weight: 400; - font-size: 12px; - text-transform: capitalize; - border-radius: 3px; } - -/*# sourceMappingURL=datamap.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/datamap.css.map b/web/bsadmin/assets/css/datamap.css.map deleted file mode 100644 index 3cf923e..0000000 --- a/web/bsadmin/assets/css/datamap.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAKA,4BAA4B;EACxB,UAAU,ECQR,OAAO;EDPT,WAAW,ECLT,uBAAuB;EDMzB,OAAO,EAAE,QAAQ;EACjB,KAAK,ECcF,IAAI;EDbP,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,cAAc,EAAE,UAAU;EAC1B,aAAa,EAAE,GAAG", -"sources": ["../sass/datamap.scss","../sass/variable.scss"], -"names": [], -"file": "datamap.css" -} diff --git a/web/bsadmin/assets/css/favourite_menu.css b/web/bsadmin/assets/css/favourite_menu.css deleted file mode 100644 index 4878e0b..0000000 --- a/web/bsadmin/assets/css/favourite_menu.css +++ /dev/null @@ -1,23 +0,0 @@ -.favourite-menu-details .table > tbody > tr > td { - border-top: none; - border-bottom: 1px solid #e7e7e7; } -.favourite-menu-details .favourite-menu-img { - border-right: 1px solid #e7e7e7; - margin-bottom: 25px; - width: 120px; } -.favourite-menu-details .favourite-menu-des { - margin-top: 40px; - margin-right: 465px; } - .favourite-menu-details .favourite-menu-des .product_name h4 { - font-weight: 600; - text-align: left; } -.favourite-menu-details .favourite-menu-button { - margin-top: 40px; } - .favourite-menu-details .favourite-menu-button .prdt_add_to_curt { - padding-top: 10px; } - .favourite-menu-details .favourite-menu-button .prdt_add_to_curt button { - font-size: 11px; - text-transform: uppercase; - font-weight: 600; } - -/*# sourceMappingURL=favourite_menu.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/favourite_menu.css.map b/web/bsadmin/assets/css/favourite_menu.css.map deleted file mode 100644 index f5a5a93..0000000 --- a/web/bsadmin/assets/css/favourite_menu.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAIE,gDAAkB;EAChB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,iBAAiB;AAElC,2CAAmB;EACjB,YAAY,EAAE,iBAAiB;EAC/B,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,KAAK;AAGd,2CAAmB;EACjB,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,KAAK;EAGjB,4DAAE;IACA,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,IAAI;AAOxB,8CAAsB;EACpB,UAAU,EAAE,IAAI;EAChB,gEAAiB;IACf,WAAW,EAAE,IAAI;IACjB,uEAAM;MACJ,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,SAAS;MACzB,WAAW,EAAE,GAAG", -"sources": ["../sass/favourite_menu.scss"], -"names": [], -"file": "favourite_menu.css" -} diff --git a/web/bsadmin/assets/css/flot-chart.css b/web/bsadmin/assets/css/flot-chart.css deleted file mode 100644 index 33ee296..0000000 --- a/web/bsadmin/assets/css/flot-chart.css +++ /dev/null @@ -1,31 +0,0 @@ -.flotTip { - background: #252525; - border: 1px solid #252525; - padding: 5px 15px; - color: #fff; } - -.flot-container { - -webkit-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - height: 275px; - padding: 20px 15px 15px 15px; - margin: 15px auto 30px auto; - background: #fff; } - -.flot-pie-container { - height: 275px; } - -.flotBar-container { - height: 275px; } - -.flot-line { - width: 100%; - height: 100%; - font-size: 14px; - line-height: 1.2em; } - -.legend table { - border-spacing: 5px; } - -/*# sourceMappingURL=flot-chart.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/flot-chart.css.map b/web/bsadmin/assets/css/flot-chart.css.map deleted file mode 100644 index cc7de74..0000000 --- a/web/bsadmin/assets/css/flot-chart.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAIA,QAAQ;EACJ,UAAU,ECoBP,OAAO;EDnBV,MAAM,EAAE,iBAAgB;EACxB,OAAO,EAAE,QAAQ;EACjB,KAAK,ECeF,IAAI;;ADXT,eAAgB;EACjB,UAAU,EAAE,UAAU;EACtB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,mBAAmB;EAC5B,MAAM,EAAE,mBAAmB;EAC3B,UAAU,ECKJ,IAAI;;ADFT,mBAAoB;EACrB,MAAM,EAAE,KAAK;;AAGZ,kBAAmB;EACpB,MAAM,EAAE,KAAK;;AAId,UAAU;EACT,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,KAAK;;AAGnB,aAAc;EACb,cAAc,EAAE,GAAG", -"sources": ["../sass/flot-chart.scss","../sass/variable.scss"], -"names": [], -"file": "flot-chart.css" -} diff --git a/web/bsadmin/assets/css/fonts.css b/web/bsadmin/assets/css/fonts.css deleted file mode 100644 index 3624b22..0000000 --- a/web/bsadmin/assets/css/fonts.css +++ /dev/null @@ -1,3 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Quicksand:400,500,700"); - -/*# sourceMappingURL=fonts.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/fonts.css.map b/web/bsadmin/assets/css/fonts.css.map deleted file mode 100644 index 3e1a55b..0000000 --- a/web/bsadmin/assets/css/fonts.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AACQ,4EAAoE", -"sources": ["../sass/fonts.scss"], -"names": [], -"file": "fonts.css" -} diff --git a/web/bsadmin/assets/css/form.css b/web/bsadmin/assets/css/form.css deleted file mode 100644 index 0c90d01..0000000 --- a/web/bsadmin/assets/css/form.css +++ /dev/null @@ -1,6 +0,0 @@ -/* Font Variable -----------------------*/ -/* Color Variable ------------------------*/ -/* Solid Color -------------------*/ diff --git a/web/bsadmin/assets/css/forms.css b/web/bsadmin/assets/css/forms.css deleted file mode 100644 index fc859a2..0000000 --- a/web/bsadmin/assets/css/forms.css +++ /dev/null @@ -1,168 +0,0 @@ -/* Input Style -------------------------*/ -.form-group { - margin-bottom: 20px; } - -.form-control { - height: 42px; - border-radius: 0px; - -webkit-box-shadow: none; - box-shadow: none; - border-color: #e7e7e7; - font-family: "Quicksand", sans-serif; } - .form-control:hover { - -webkit-box-shadow: none; - box-shadow: none; - border-color: #e7e7e7; } - .form-control:focus, .form-control.active { - -webkit-box-shadow: none; - box-shadow: none; - border-color: #878787; } - -.input-default { - border-radius: 4px; } - -.input-flat { - border-radius: 0px; } - -.input-rounded { - border-radius: 100px; } - -.input-focus { - border-color: #f96332; } - .input-focus:focus { - border-color: #f96332; } - -/* Search Box Input Button ---------------------------------*/ -.input-group-btn .btn { - padding: 10px 12px; } - -.input-group-default .form-control { - border-radius: 4px; } - -.input-group-flat .form-control { - border-radius: 4px; } -.input-group-flat .btn { - border-radius: 0px; - border-radius: 0px; } - -.input-group-rounded .form-control { - border-radius: 100px; } -.input-group-rounded .btn-group-left { - border-top-left-radius: 100px; - border-bottom-left-radius: 100px; } -.input-group-rounded .btn-group-right { - border-top-right-radius: 100px; - border-bottom-right-radius: 100px; } - -.input-group-close-icon { - background: none; - color: #252525; - border-color: #e7e7e7; } - .input-group-close-icon:hover, .input-group-close-icon:focus, .input-group-close-icon.active { - background: none; - border-color: #e7e7e7; - color: #252525; } - -/* Input States ------------------------*/ -.has-default .form-control:hover, .has-default .form-control:focus, .has-default .form-control.active, -.has-success .form-control:hover, -.has-success .form-control:focus, -.has-success .form-control.active, -.has-warning .form-control:hover, -.has-warning .form-control:focus, -.has-warning .form-control.active, -.has-error .form-control:hover, -.has-error .form-control:focus, -.has-error .form-control.active { - -webkit-box-shadow: none; - box-shadow: none; } - -.has-default .control-label { - color: #878787; } -.has-default .form-control { - border-color: #878787; } - .has-default .form-control:hover, .has-default .form-control:focus, .has-default .form-control.active { - border-color: #878787; } - -.has-success .control-label { - color: #87de75; } -.has-success .form-control { - border-color: #87de75; } - .has-success .form-control:hover, .has-success .form-control:focus, .has-success .form-control.active { - border-color: #87de75; } - -.has-warning .control-label { - color: #f39c12; } -.has-warning .form-control { - border-color: #f39c12; } - .has-warning .form-control:hover, .has-warning .form-control:focus, .has-warning .form-control.active { - border-color: #f39c12; } - -.has-error .control-label { - color: #e74c3c; } -.has-error .form-control { - border-color: #e74c3c; } - .has-error .form-control:hover, .has-error .form-control:focus, .has-error .form-control.active { - border-color: #e74c3c; } - -.has-feedback label ~ .form-control-feedback { - top: 35px; } - -.form-horizontal .has-feedback .form-control-feedback { - top: 5px; } - -.has-success .form-control-feedback { - color: #87de75; } - -.has-warning .form-control-feedback { - color: #f39c12; } - -.has-error .form-control-feedback { - color: #e74c3c; } - -.has-success .input-group-addon { - background-color: #e0f7dc; - border-color: #87de75; - color: #87de75; } - -.has-warning .input-group-addon { - background-color: #f9cf8b; - border-color: #f39c12; - color: #f39c12; } - -.has-error .input-group-addon { - background-color: #f5b4ae; - border-color: #e74c3c; - color: #e74c3c; } - -/* Input Size ---------------------*/ -.input-sm { - font-size: 12px; - height: 30px; - line-height: 1.5; } - -.input-lg { - font-size: 18px; - height: 46px; - line-height: 1.33333; } - -/* Basic form -----------------------*/ -label { - font-weight: 400; - margin-bottom: 10px; } - -/* Form Horizontal -----------------------*/ -.form-horizontal .control-label { - padding-top: 12px; } - -.form-horizontal .form-group { - margin-left: 0px; - margin-right: 0px; } - -/*# sourceMappingURL=forms.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/forms.css.map b/web/bsadmin/assets/css/forms.css.map deleted file mode 100644 index a183dc2..0000000 --- a/web/bsadmin/assets/css/forms.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEA;0BAC0B;AAE1B,WAAY;EACR,aAAa,EAAE,IAAI;;AAGvB,aAAc;EACV,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;EAChB,YAAY,ECaR,OAAO;EDZX,WAAW,ECZT,uBAAuB;EDazB,mBAAQ;IACJ,UAAU,EAAE,IAAI;IAChB,YAAY,ECSZ,OAAO;EDPX,yCACS;IACL,UAAU,EAAE,IAAI;IAChB,YAAY,ECPX,OAAO;;ADWhB,cAAe;EACX,aAAa,EAAE,GAAG;;AAGtB,WAAY;EACR,aAAa,EAAE,GAAG;;AAGtB,cAAe;EACX,aAAa,EAAE,KAAK;;AAGxB,YAAa;EACT,YAAY,EC/BP,OAAO;EDgCZ,kBAAQ;IACJ,YAAY,ECjCX,OAAO;;ADsChB;kCACkC;AAG9B,qBAAK;EACD,OAAO,EAAE,SAAS;;AAKtB,kCAAc;EACV,aAAa,EAAE,GAAG;;AAKtB,+BAAc;EACV,aAAa,EAAE,GAAG;AAEtB,sBAAK;EACD,aAAa,EAAE,GAAG;EAClB,aAAa,EAAE,GAAG;;AAKtB,kCAAc;EACV,aAAa,EAAE,KAAK;AAExB,oCAAgB;EACZ,sBAAsB,EAAE,KAAK;EAC7B,yBAAyB,EAAE,KAAK;AAEpC,qCAAiB;EACb,uBAAuB,EAAE,KAAK;EAC9B,0BAA0B,EAAE,KAAK;;AAIzC,uBAAwB;EACpB,UAAU,EAAE,IAAI;EAChB,KAAK,EC9DF,OAAO;ED+DV,YAAY,EC9DR,OAAO;EDgEX,4FAES;IACL,UAAU,EAAE,IAAI;IAChB,YAAY,ECpEZ,OAAO;IDqEP,KAAK,ECtEN,OAAO;;AD2Ed;yBACyB;AAOjB;;;;;;;;;+BAES;EACL,UAAU,EAAE,IAAI;;AAMxB,2BAAe;EACX,KAAK,ECvGJ,OAAO;ADyGZ,0BAAc;EACV,YAAY,EC1GX,OAAO;ED2GR,qGAES;IACL,YAAY,EC9Gf,OAAO;;ADoHZ,2BAAe;EACX,KAAK,EC3HJ,OAAO;AD6HZ,0BAAc;EACV,YAAY,EC9HX,OAAO;ED+HR,qGAES;IACL,YAAY,EClIf,OAAO;;ADwIZ,2BAAe;EACX,KAAK,ECtIJ,OAAO;ADwIZ,0BAAc;EACV,YAAY,ECzIX,OAAO;ED0IR,qGAES;IACL,YAAY,EC7If,OAAO;;ADmJZ,yBAAe;EACX,KAAK,ECrJL,OAAO;ADuJX,wBAAc;EACV,YAAY,ECxJZ,OAAO;EDyJP,+FAES;IACL,YAAY,EC5JhB,OAAO;;ADiKf,4CAA6C;EACzC,GAAG,EAAE,IAAI;;AAGb,qDAAsD;EACpD,GAAG,EAAE,GAAG;;AAIN,mCAAuB;EACnB,KAAK,EC7KJ,OAAO;;ADkLZ,mCAAuB;EACnB,KAAK,EChLJ,OAAO;;ADqLZ,iCAAuB;EACnB,KAAK,ECvLL,OAAO;;AD2Lf,+BAAgC;EAC5B,gBAAgB,EAAE,OAAsB;EACxC,YAAY,EC/LP,OAAO;EDgMZ,KAAK,EChMA,OAAO;;ADmMhB,+BAAgC;EAC5B,gBAAgB,EAAE,OAAsB;EACxC,YAAY,EClMP,OAAO;EDmMZ,KAAK,ECnMA,OAAO;;ADsMhB,6BAA8B;EAC1B,gBAAgB,EAAE,OAAqB;EACvC,YAAY,ECzMR,OAAO;ED0MX,KAAK,EC1MD,OAAO;;AD+Mf;sBACsB;AACtB,SAAU;EAER,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,GAAG;;AAIlB,SAAU;EAER,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,OAAO;;AAKtB;wBACwB;AAExB,KAAM;EACF,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,IAAI;;AAIvB;wBACwB;AAGpB,+BAAe;EACX,WAAW,EAAE,IAAI;;AAKrB,4BAAY;EACd,WAAW,EAAE,GAAG;EAChB,YAAY,EAAE,GAAG", -"sources": ["../sass/forms.scss","../sass/variable.scss"], -"names": [], -"file": "forms.css" -} diff --git a/web/bsadmin/assets/css/global.css b/web/bsadmin/assets/css/global.css deleted file mode 100644 index d2ec45f..0000000 --- a/web/bsadmin/assets/css/global.css +++ /dev/null @@ -1,155 +0,0 @@ -body { - font-family: "Quicksand", sans-serif; - background: #f5f5f5; - color: #878787; } - -a, -button { - outline: none !important; - text-decoration: none !important; - color: #878787; - -webkit-transition: all 0.2s ease 0s; - transition: all 0.2s ease 0s; } - a:hover, a:focus, a.active, - button:hover, - button:focus, - button.active { - color: #252525; - outline: none !important; - text-decoration: none !important; } - -ul { - padding: 0px; - margin: 0px; } - -li { - list-style: none; } - -p { - font-family: "Quicksand", sans-serif; - color: #878787; } - -.dib { - display: inline-block; } - -.rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); } - -.rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); } - -.main-content { - padding: 15px; } - -.alert h4 { - color: #878787; } - -/* Color Mixins --------------------*/ -.text-primary, -.color-primary { - color: #f96332; } - -.text-success, -.color-success { - color: #87de75; } - -.text-info, -.color-info { - color: #03a9f4; } - -.text-danger, -.color-danger { - color: #e74c3c; } - -.text-warning, -.color-warning { - color: #f39c12; } - -.text-pink, -.color-pink { - color: #e6a1f2; } - -.text-dark, -.color-dark { - color: #252525; } - -/* Background Mixins ---------------------------*/ -.bg-primary { - background: #f96332; - color: #fff; } - -.bg-success { - background: #87de75; - color: #fff; } - -.bg-info { - background: #03a9f4; - color: #fff; } - -.bg-danger { - background: #e74c3c; - color: #fff; } - -.bg-warning { - background: #f39c12; - color: #fff; } - -.bg-pink { - background: #e6a1f2; - color: #fff; } - -.bg-dark { - background: #252525; - color: #fff; } - -.bg-transparent { - background: transparent; - color: #252525; } - -/* Border Mixins ---------------------------*/ -.border-primary { - border-color: #f96332; } - -.border-success { - border-color: #87de75; } - -.border-info { - border-color: #03a9f4; } - -.border-danger { - border-color: #e74c3c; } - -.border-warning { - border-color: #f39c12; } - -.border-pink { - border-color: #e6a1f2; } - -.border-dark { - border-color: #252525; } - -.no-border { - border: 0px !important; } - -/* Brand Background ------------------------------*/ -.bg-facebook { - background: #3b5998; } - -.bg-twitter { - background: #1da1f2; } - -/* width ------------------------------*/ -.w10pr { - width: 10%; } - -.w12pr { - width: 12%; } - -/*# sourceMappingURL=global.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/global.css.map b/web/bsadmin/assets/css/global.css.map deleted file mode 100644 index 31452d2..0000000 --- a/web/bsadmin/assets/css/global.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AACA,IAAK;EACD,WAAW,ECDT,uBAAuB;EDEzB,UAAU,ECqBD,OAAO;EDpBnB,KAAK,ECaM,OAAO;;ADVnB;MACO;EACH,OAAO,EAAE,eAAc;EACvB,eAAe,EAAE,eAAc;EAC/B,KAAK,ECMG,OAAO;EDLf,UAAU,EAAE,gBAAgB;EAC5B;;;eAES;IACL,KAAK,ECSN,OAAO;IDRN,OAAO,EAAE,eAAc;IACvB,eAAe,EAAE,eAAc;;AAIvC,EAAG;EACC,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,GAAG;;AAGf,EAAG;EACC,UAAU,EAAE,IAAI;;AAGpB,CAAE;EAEE,WAAW,EC/BT,uBAAuB;EDgCzB,KAAK,ECjBG,OAAO;;ADkCnB,IAAK;EACD,OAAO,EAAE,YAAY;;AAGzB,UAAW;EACP,SAAS,EAAE,aAAa;;AAG5B,WAAY;EACR,SAAS,EAAE,cAAc;;AAG7B,aAAc;EACV,OAAO,EAAE,IAAI;;AAIb,SAAE;EACE,KAAK,ECrDP,OAAO;;AD2Db;qBACqB;AAErB;cACe;EACX,KAAK,ECxEA,OAAO;;AD2EhB;cACe;EACX,KAAK,EC5EA,OAAO;;AD+EhB;WACY;EACR,KAAK,EChFH,OAAO;;ADmFb;aACc;EACV,KAAK,ECpFD,OAAO;;ADuFf;cACe;EACX,KAAK,ECxFA,OAAO;;AD2FhB;WACY;EACR,KAAK,EC5FH,OAAO;;AD+Fb;WACY;EACR,KAAK,EChGH,OAAO;;ADoGb;4BAC4B;AAG5B,WAAY;EACR,UAAU,EC/GL,OAAO;EDgHZ,KAAK,ECjGF,IAAI;;ADoGX,WAAY;EACR,UAAU,ECnHL,OAAO;EDoHZ,KAAK,ECtGF,IAAI;;ADyGX,QAAS;EACL,UAAU,ECvHR,OAAO;EDwHT,KAAK,EC3GF,IAAI;;AD8GX,UAAW;EACP,UAAU,EC3HN,OAAO;ED4HX,KAAK,EChHF,IAAI;;ADmHX,WAAY;EACR,UAAU,EC/HL,OAAO;EDgIZ,KAAK,ECrHF,IAAI;;ADwHX,QAAS;EACL,UAAU,ECnIR,OAAO;EDoIT,KAAK,EC1HF,IAAI;;AD6HX,QAAS;EACL,UAAU,ECvIR,OAAO;EDwIT,KAAK,EC/HF,IAAI;;ADkIX,eAAgB;EACZ,UAAU,EAAE,WAAW;EACvB,KAAK,EClIF,OAAO;;ADyId;4BAC4B;AAG5B,eAAgB;EACZ,YAAY,EC/JP,OAAO;;ADkKhB,eAAgB;EACZ,YAAY,EClKP,OAAO;;ADqKhB,YAAa;EACT,YAAY,ECrKV,OAAO;;ADwKb,cAAe;EACX,YAAY,ECxKR,OAAO;;AD2Kf,eAAgB;EACZ,YAAY,EC3KP,OAAO;;AD8KhB,YAAa;EACT,YAAY,EC9KV,OAAO;;ADiLb,YAAa;EACT,YAAY,ECjLV,OAAO;;ADoLb,UAAW;EACP,MAAM,EAAE,cAAa;;AAOzB;+BAC+B;AAE/B,YAAY;EACR,UAAU,EC7KJ,OAAO;;ADgLjB,WAAW;EACP,UAAU,EChLL,OAAO;;ADsLhB;+BAC+B;AAE/B,MAAM;EACF,KAAK,EAAE,GAAG;;AAId,MAAM;EACF,KAAK,EAAE,GAAG", -"sources": ["../sass/global.scss","../sass/variable.scss"], -"names": [], -"file": "global.css" -} diff --git a/web/bsadmin/assets/css/gmap.css b/web/bsadmin/assets/css/gmap.css deleted file mode 100644 index 4359ad3..0000000 --- a/web/bsadmin/assets/css/gmap.css +++ /dev/null @@ -1,5 +0,0 @@ -.map { - width: 100%; - height: 400px; } - -/*# sourceMappingURL=gmap.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/gmap.css.map b/web/bsadmin/assets/css/gmap.css.map deleted file mode 100644 index c04bb26..0000000 --- a/web/bsadmin/assets/css/gmap.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEA,IAAK;EACH,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK", -"sources": ["../sass/gmap.scss"], -"names": [], -"file": "gmap.css" -} diff --git a/web/bsadmin/assets/css/header.css b/web/bsadmin/assets/css/header.css deleted file mode 100644 index fad9e3d..0000000 --- a/web/bsadmin/assets/css/header.css +++ /dev/null @@ -1,277 +0,0 @@ -/* Header ----------------*/ -.header { - background: #f96332; - position: fixed; - width: 100%; - min-height: 55px; - z-index: 999; } - -.logo { - background: #f96332; - display: inline-block; - padding: 0; - line-height: 50px; - text-align: center; - width: 250px; - -webkit-transition: width 300ms ease-in-out; - transition: width 300ms ease-in-out; } - .logo img { - height: 45px; - margin-right: 10px; - -webkit-transition: 300ms ease-in-out; - transition: 300ms ease-in-out; } - .logo .small-logo { - visibility: hidden; - opacify: 0; - width: 0; - height: 0; } - .logo span { - color: #fff; - font-size: 16px; - font-weight: 700; - letter-spacing: 3px; - padding-left: 20px; - text-transform: uppercase; } - -.sidebar-hide .logo { - width: 60px; } - .sidebar-hide .logo span { - display: none; } -.sidebar-hide .full-logo { - visibility: hidden; - opacify: 0; - width: 0; - height: 0; } -.sidebar-hide .small-logo { - visibility: visible; - opacify: 1; - width: auto; - height: 45px; } - -.header-icon { - font-size: 18px; - padding: 12px 15px; - color: #fff; - position: relative; - -webkit-transition: all 0.4s ease-in-out; - transition: all 0.4s ease-in-out; - display: inline-block; - vertical-align: middle; - float: left; - cursor: pointer; } - .header-icon:hover, .header-icon:focus, .header-icon.active { - background: #f95823; } - .header-icon .note-count { - position: absolute; - right: 3px; - top: 3px; - font-size: 10px; - width: 18px; - height: 18px; - line-height: 18px; - border-radius: 100%; - text-align: center; - background: #00a4b9; - z-index: 9999; - font-weight: 600; - -webkit-animation-name: noteblink; - animation-name: noteblink; - -webkit-animation-duration: 2s; - animation-duration: 2s; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-iteration-count: 5; - animation-iteration-count: 5; } - -@-webkit-keyframes noteblink { - 0%,30%,36%,45%,52%,100% { - background: #00a4b9; - color: white; } - 31%,35%,46%,51% { - background: white; - color: #00a4b9; } } - -@keyframes noteblink { - 0%,30%,36%,45%,52%,100% { - background: #00a4b9; - color: white; } - 31%,35%,46%,51% { - background: white; - color: #00a4b9; } } -/* Humberger icon ---------------------------*/ -.hamburger { - display: inline-block; - left: 10px; - position: relative; - top: 13px; - -webkit-transition: all 0.3s ease-in-out 0s; - transition: all 0.3s ease-in-out 0s; - width: 37px; - z-index: 999; - cursor: pointer; } - .hamburger > span { - color: white; - font-size: 25px; } - -.header-icon.active .drop-down { - visibility: visible; - opacity: 1; - -webkit-transform: translateY(0px); - transform: translateY(0px); } - -.drop-down { - background: #fff; - color: #252525; - visibility: hidden; - opacity: 0; - width: 320px; - position: absolute; - right: 0; - top: 55px; - -webkit-transform: translateY(50px); - transform: translateY(50px); - -webkit-transition: all 0.4s ease-in-out; - transition: all 0.4s ease-in-out; - border-top: 0px; - border: 1px solid #e7e7e7; } - -.header-left .drop-down { - left: 0; } - -.dropdown-content-heading { - padding: 10px 15px; } - .dropdown-content-heading span { - font-size: 13px; - color: #878787; } - .dropdown-content-heading i { - position: relative; - top: 5px; - opacity: 1 !important; - color: #f96332; } - -.dropdown-content-body li { - padding: 15px; - border-top: 1px solid #f5f5f5; } - .dropdown-content-body li:hover, .dropdown-content-body li:focus, .dropdown-content-body li.active { - background: #f5f5f5; - border-top: 1px solid #f5f5f5; } - .dropdown-content-body li a:hover, .dropdown-content-body li a:focus, .dropdown-content-body li a.active { - color: #878787; } - .dropdown-content-body li:last-child { - padding: 5px 15px; } - -.notification-heading { - font-size: 13px; - font-weight: 700; - color: #878787; } - -.avatar-img { - border-radius: 100px; - width: 25px; - position: relative; - top: -3px; } - -.header-icon > .avatar-img { - width: 24px; } - -.user-avatar { - margin-left: 10px; - font-size: 14px; - font-weight: 700; } - -@media screen and (max-width: 750px) { - .header-icon > .avatar-img { - margin-right: 42px; } - - .header-icon > .user-avatar { - display: none; } } -@media screen and (max-width: 450px) { - .header-icon > .avatar-img { - margin-right: 22px; } } -.notification-text { - font-size: 12px; - font-family: "Quicksand", sans-serif; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - padding-top: 3px; } - -.notification-timestamp { - font-size: 11px; } - -.notification-percentage { - font-size: 12px; - position: relative; - top: 12px; } - -.notification-unread { - background: #f5f5f5; } - .notification-unread .notification-heading { - color: #555; } - -.more-link { - font-size: 12px; - color: #f96332; - display: inline-block; } - -.dropdown-profile { - width: 200px; } - .dropdown-profile .trial-day { - font-size: 11px; - padding-top: 2px; - color: #f96332; } - .dropdown-profile li { - padding: 7px 15px; } - .dropdown-profile li a { - display: block; - color: #878787; } - .dropdown-profile li a:hover, .dropdown-profile li a:focus, .dropdown-profile li a.active { - color: #878787; } - .dropdown-profile li a span { - font-size: 14px; } - .dropdown-profile li a i { - margin-right: 5px; - font-size: 14px; } - .dropdown-profile li:last-child { - padding: 7px 15px; } - -.header-link { - position: relative; - top: -3px; - font-size: 14px; } - -.main .page-header { - min-height: 55px; - margin: 0px; - padding: 0px 15px; - background: #fff; - border-bottom: 0px; } - .main .page-header h1 { - font-size: 18px; - padding: 14px 0px; - margin: 0px; } - .main .page-header .breadcrumb { - margin: 0px; - padding: 14px 15px; - background: #fff; } - .main .page-header .breadcrumb li:hover, .main .page-header .breadcrumb li:focus, .main .page-header .breadcrumb li.active { - font-family: "Quicksand", sans-serif; - font-weight: normal; - font-size: 12px; } - .main .page-header .breadcrumb li a { - font-size: 12px; - font-family: "Quicksand", sans-serif; } - -.dropdown-task .progress { - height: 5px; - margin-bottom: 0px; - margin-top: 20px; - -webkit-box-shadow: none; - box-shadow: none; } -.dropdown-task .progress-bar { - -webkit-box-shadow: none; - box-shadow: none; } - -/*# sourceMappingURL=header.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/header.css.map b/web/bsadmin/assets/css/header.css.map deleted file mode 100644 index af1c4c4..0000000 --- a/web/bsadmin/assets/css/header.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAEA;iBACiB;AAEjB,OAAQ;EACJ,UAAU,ECEL,OAAO;EDDZ,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,GAAG;;AAGhB,KAAM;EACF,UAAU,ECNL,OAAO;EDOZ,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,CAAC;EACV,WAAW,EAAC,IAAI;EAChB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,uBAAuB;EACnC,SAAI;IACA,MAAM,EAAC,IAAI;IACX,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,iBAAiB;EAEjC,iBAAY;IACR,UAAU,EAAE,MAAM;IAClB,OAAO,EAAC,CAAC;IACT,KAAK,EAAC,CAAC;IACP,MAAM,EAAC,CAAC;EAEZ,UAAK;IACD,KAAK,ECVN,IAAI;IDWH,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,GAAG;IACnB,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,SAAS;;AAK7B,mBAAM;EACF,KAAK,EAAE,IAAI;EACX,wBAAK;IACD,OAAO,EAAE,IAAI;AAGrB,wBAAW;EACP,UAAU,EAAE,MAAM;EAClB,OAAO,EAAC,CAAC;EACT,KAAK,EAAC,CAAC;EACP,MAAM,EAAC,CAAC;AAEZ,yBAAY;EACR,UAAU,EAAE,OAAO;EACnB,OAAO,EAAC,CAAC;EACT,KAAK,EAAC,IAAI;EACV,MAAM,EAAC,IAAI;;AAInB,YAAa;EACT,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,SAAS;EAClB,KAAK,EC3CF,IAAI;ED4CP,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,oBAAoB;EAChC,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM;EACtB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,OAAO;EAEf,2DAES;IACL,UAAU,EAAE,OAAoB;EAEpC,wBAAY;IACR,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,GAAG;IACV,GAAG,EAAE,GAAG;IACR,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,SAAS;IACzB,kBAAkB,EAAE,EAAE;IACtB,yBAAyB,EAAE,MAAM;IACjC,yBAAyB,EAAE,CAAC;;AAIpC,oBASC;EARG,uBAAyB;IACrB,UAAU,EAAE,OAAO;IACnB,KAAK,EAAC,KAAK;EAEf,eAAgB;IACZ,UAAU,EAAE,KAAK;IACjB,KAAK,EAAC,OAAO;AAIrB;4BAC4B;AAE5B,UAAW;EACT,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,IAAI;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,UAAU,EAAE,uBAAuB;EACnC,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,OAAO;EACb,iBAAK;IACD,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,IAAI;;AAInB,8BAAW;EACP,UAAU,EAAE,OAAO;EACnB,OAAO,EAAE,CAAC;EACV,SAAS,EAAE,eAAe;;AAIlC,UAAW;EACP,UAAU,ECjHP,IAAI;EDkHP,KAAK,EChHF,OAAO;EDiHV,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,IAAI;EACT,SAAS,EAAE,gBAAgB;EAC3B,UAAU,EAAE,oBAAoB;EAChC,UAAU,EAAE,GAAG;EACf,MAAM,EAAE,iBAAiB;;AAIzB,uBAAW;EACP,IAAI,EAAE,CAAC;;AAIf,yBAA0B;EACtB,OAAO,EAAE,SAAS;EAClB,8BAAK;IACD,SAAS,EAAE,IAAI;IACf,KAAK,EChJP,OAAO;EDkJT,2BAAE;IACE,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,OAAO,EAAE,YAAW;IACpB,KAAK,EC9JJ,OAAO;;ADmKZ,yBAAG;EACC,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,iBAAsB;EAClC,kGAES;IACL,UAAU,ECzJT,OAAO;ID0JR,UAAU,EAAE,iBAAsB;EAGlC,wGAES;IACL,KAAK,ECvKT,OAAO;ED0KX,oCAAa;IACT,OAAO,EAAE,QAAQ;;AAK7B,qBAAsB;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,ECpLH,OAAO;;ADuLb,WAAY;EACR,aAAa,EAAE,KAAK;EACpB,KAAK,EAAE,IAAI;EACX,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;;AAEb,0BAAyB;EACjB,KAAK,EAAC,IAAI;;AAGlB,YAAa;EACT,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;;AAEpB,oCAAoC;EAChC,0BAAyB;IAAG,YAAY,EAAE,IAAI;;EAC9C,2BAAyB;IAAE,OAAO,EAAE,IAAI;AAE5C,oCAAoC;EAChC,0BAAyB;IAAG,YAAY,EAAE,IAAI;AAGlD,kBAAmB;EACf,SAAS,EAAE,IAAI;EACf,WAAW,EC9NT,uBAAuB;ED+NzB,SAAS,EAAE,IAAI;EACf,QAAQ,EAAE,MAAM;EAChB,aAAa,EAAE,QAAQ;EACvB,WAAW,EAAE,GAAG;;AAGpB,uBAAwB;EACpB,SAAS,EAAE,IAAI;;AAGnB,wBAAyB;EACrB,SAAS,EAAE,IAAI;EACf,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;;AAGb,oBAAqB;EACjB,UAAU,EC1ND,OAAO;ED2NhB,0CAAsB;IAClB,KAAK,EAAE,IAAI;;AAInB,UAAW;EACP,SAAS,EAAE,IAAI;EACf,KAAK,EClPA,OAAO;EDmPZ,OAAO,EAAE,YAAY;;AAGzB,iBAAkB;EACd,KAAK,EAAE,KAAK;EACZ,4BAAW;IACP,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,KAAK,EC3PJ,OAAO;ED6PZ,oBAAG;IACC,OAAO,EAAE,QAAQ;IACjB,sBAAE;MACE,OAAO,EAAE,KAAK;MACd,KAAK,ECzPX,OAAO;MD0PD,yFAES;QACL,KAAK,EC7Pf,OAAO;MD+PD,2BAAK;QACD,SAAS,EAAE,IAAI;MAEnB,wBAAE;QACE,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,IAAI;IAGvB,+BAAa;MACT,OAAO,EAAE,QAAQ;;AAK7B,YAAa;EACT,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,SAAS,EAAE,IAAI;;AAIf,kBAAa;EACT,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,QAAQ;EACjB,UAAU,ECjRX,IAAI;EDkRH,aAAa,EAAE,GAAG;EAClB,qBAAG;IACC,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,GAAG;EAEf,8BAAY;IACR,MAAM,EAAE,GAAG;IACX,OAAO,EAAE,SAAS;IAClB,UAAU,EC3Rf,IAAI;ID6RK,0HAES;MACL,WAAW,ECrTzB,uBAAuB;MDsTT,WAAW,EAAE,MAAM;MACnB,SAAS,EAAE,IAAI;IAEnB,mCAAE;MACE,SAAS,EAAE,IAAI;MACf,WAAW,EC3TzB,uBAAuB;;ADmUzB,wBAAU;EACN,MAAM,EAAE,GAAG;EACX,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,IAAI;AAEpB,4BAAc;EACV,UAAU,EAAE,IAAI", -"sources": ["../sass/header.scss","../sass/variable.scss"], -"names": [], -"file": "header.css" -} diff --git a/web/bsadmin/assets/css/home.css b/web/bsadmin/assets/css/home.css deleted file mode 100644 index a75d98f..0000000 --- a/web/bsadmin/assets/css/home.css +++ /dev/null @@ -1,229 +0,0 @@ -/* Font Variable -----------------------*/ -/* Color Variable ------------------------*/ -/* Solid Color -------------------*/ -/* Brand color -----------------------*/ -/* Header ----------------*/ -.header { - background: #ff2e44; - position: fixed; - width: 100%; - min-height: 50px; - z-index: 999; -} -.logo { - display: inline-block; - padding: 10px 0; - text-align: center; - width: 250px; - background: #fff; - transition: width 300ms ease-in-out; -} -.logo img { - width: 35px; - margin-right: 10px; -} -.logo span { - color: #ff2e44; - font-weight: 700; -} -.sidebar-hide .logo { - width: 60px; -} -.sidebar-hide .logo span { - display: none; -} -.header-icon { - font-size: 18px; - padding: 14px 15px; - color: #fff; - position: relative; - transition: all 0.4s ease-in-out; - display: inline-block; - vertical-align: middle; - float: left; -} -.header-icon i, -.header-icon img, -.header-icon span { - cursor: pointer; -} -.header-icon:hover, -.header-icon:focus, -.header-icon.active { - background: #81c0f5; -} -.header-icon.active .drop-down { - visibility: visible; - opacity: 1; - transform: translateY(0px); -} -.drop-down { - background: #fff; - color: #000; - visibility: hidden; - opacity: 0; - width: 320px; - position: absolute; - right: 0; - top: 55px; - transform: translateY(50px); - transition: all 0.4s ease-in-out; - border-top: 0px; - box-shadow: 10px 5px 10px #eee; - border: 1px solid #eee; -} -.header-left .drop-down { - left: 0; -} -.dropdown-content-heading { - padding: 10px 15px; -} -.dropdown-content-heading span { - font-size: 13px; - font-family: 'Montserrat', sans-serif; - color: #aaa; -} -.dropdown-content-heading i { - position: relative; - top: 5px; - opacity: 1!important; - color: #ff2e44; -} -.dropdown-content-body li { - padding: 15px; - border-top: 1px solid #f5f5f5; -} -.dropdown-content-body li:hover, -.dropdown-content-body li:focus, -.dropdown-content-body li.active { - background: #fcfcfc; -} -.dropdown-content-body li a:hover, -.dropdown-content-body li a:focus, -.dropdown-content-body li a.active { - color: #b9b9b9; -} -.dropdown-content-body li:last-child { - padding: 5px 15px; -} -.notification-heading { - font-size: 13px; - font-weight: 700; - color: #989898; -} -.avatar-img { - border-radius: 100px; - width: 25px; - position: relative; - top: -3px; -} -.user-avatar { - margin-left: 10px; - font-size: 14px; - font-weight: 700; -} -.notification-text { - font-size: 12px; - font-family: 'MontserratLight', sans-serif; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - padding-top: 3px; -} -.notification-timestamp { - font-size: 11px; -} -.notification-percentage { - font-size: 12px; - position: relative; - top: 12px; -} -.notification-unread { - background: #fcfcfc; -} -.notification-unread .notification-heading { - color: #555; -} -.more-link { - font-size: 12px; - color: #ff2e44; - display: inline-block; -} -.dropdown-profile { - width: 200px; -} -.dropdown-profile .trial-day { - font-size: 11px; - padding-top: 2px; - color: #ff2e44; -} -.dropdown-profile li { - padding: 7px 15px; -} -.dropdown-profile li a { - display: block; -} -.dropdown-profile li a span { - font-family: 'Montserrat', sans-serif; - font-size: 14px; -} -.dropdown-profile li a i { - margin-right: 5px; - font-size: 14px; -} -.dropdown-profile li:last-child { - padding: 7px 15px; -} -.header-link { - position: relative; - top: -3px; - font-size: 14px; -} -/* Search box -----------------------*/ -.chat-sidebar { - background-color: #fff; - position: fixed; - right: -240px; - bottom: 0; - top: 55px; - width: 240px; - z-index: 2; - -webkit-transition: all 0.5s ease 0s; - transition: all 0.5s ease 0s; -} -.chat-sidebar.is-active { - right: 0; -} -.main .page-header { - min-height: 50px; - margin: 0px; - padding: 0px 15px; - background: #fff; - border-bottom: 0px; -} -.main .page-header h1 { - font-size: 18px; - padding: 14px 0px; -} -.main .page-header .breadcrumb { - margin: 0px; - padding: 14px 15px; - background: #fff; -} -.main .page-header .breadcrumb li:hover, -.main .page-header .breadcrumb li:focus, -.main .page-header .breadcrumb li.active { - font-family: 'MontserratLight', sans-serif; - font-weight: normal; - font-size: 12px; -} -.main .page-header .breadcrumb li a { - font-size: 12px; - font-family: 'MontserratLight', sans-serif; -} diff --git a/web/bsadmin/assets/css/invoice-edit.css b/web/bsadmin/assets/css/invoice-edit.css deleted file mode 100644 index a94958e..0000000 --- a/web/bsadmin/assets/css/invoice-edit.css +++ /dev/null @@ -1,183 +0,0 @@ -@charset "UTF-8"; -[contenteditable]:hover, [contenteditable]:focus { - background: #fb9c7c; } - -.control-bar { - position: relative; - z-index: 100; - background: #f96332; - color: #fff; - padding: 15px; - margin-bottom: 30px; } - .control-bar .slogan { - font-weight: bold; - font-size: 1.2rem; - display: inline-block; - margin-right: 2rem; } - .control-bar label { - margin: 0px; - color: #fff; } - .control-bar a { - margin: 0; - padding: .5em 1em; - background: #fff; - color: #878787; } - .control-bar a:hover { - background: #fb9c7c; } - .control-bar input { - border: none; - background: #fb9c7c; - max-width: 30px; - text-align: center; - color: #878787; } - .control-bar input:hover { - background: #fb9c7c; } - -.hidetax .taxrelated { - display: none; } - -.showtax .notaxrelated { - display: none; } - -.hidedate .daterelated { - display: none; } - -.showdate .notdaterelated { - display: none; } - -.details input { - display: inline; - margin: 0 0 0 .5rem; - border: none; - width: 55px; - min-width: 0; - background: transparent; - text-align: left; } - -.invoice-edit .rate:before, -.invoice-edit .price:before, -.invoice-edit .sum:before, -.invoice-edit .tax:before, -.invoice-edit #total_price:before, -.invoice-edit #total_tax:before { - content: '€'; } -.invoice-edit .me, -.invoice-edit .info, -.invoice-edit .bank, -.invoice-edit .smallme, -.invoice-edit .client, -.invoice-edit .bill, -.invoice-edit .details { - padding: 15px; } - -.invoice-logo img { - display: block; - vertical-align: top; - width: 50px; } - -/** - * INVOICELIST BODY - */ -.invoicelist-body { - margin: 1rem; } - .invoicelist-body table { - width: 100%; } - .invoicelist-body thead { - text-align: left; - border-bottom: 2pt solid #666; } - .invoicelist-body td, - .invoicelist-body th { - position: relative; - padding: 1rem; } - .invoicelist-body tr:nth-child(even) { - background: #f5f5f5; } - .invoicelist-body tr:hover .removeRow { - display: block; } - .invoicelist-body input { - display: inline; - margin: 0; - border: none; - width: 80%; - min-width: 0; - background: transparent; - text-align: left; } - .invoicelist-body .control { - display: inline-block; - color: white; - background: #f96332; - padding: 3px 7px; - font-size: .9rem; - text-transform: uppercase; - cursor: pointer; } - .invoicelist-body .control:hover { - background: #fa764b; } - .invoicelist-body .newRow { - margin: .5rem 0; - float: left; } - .invoicelist-body .removeRow { - display: none; - position: absolute; - top: .1rem; - bottom: .1rem; - left: -1.3rem; - font-size: .7rem; - border-radius: 3px 0 0 3px; - padding: .5rem; } - -/** - * INVOICE LIST FOOTER - */ -.invoicelist-footer { - margin: 1rem; } - .invoicelist-footer table { - float: right; - width: 25%; } - .invoicelist-footer table td { - padding: 1rem 2rem 0 1rem; - text-align: right; } - .invoicelist-footer table tr:nth-child(2) td { - padding-top: 0; } - .invoicelist-footer table #total_price { - font-size: 2rem; - color: #f96332; } - -/** - * NOTE - */ -.note { - margin: 75px 15px; } - .hidenote .note { - display: none; } - .note h2 { - margin: 0; - font-size: 12px; - font-weight: bold; } - .note p { - font-size: 12px; - padding: 0px 5px; } - -/** - * FOOTER - */ -footer { - display: block; - margin: 1rem 0; - padding: 1rem 0 0; } - footer p { - font-size: 12px; } - -/** - * PRINT STYLE - */ -@media print { - .header, - .sidebar, - .chat-sidebar, - .control, - .control-bar { - display: none !important; } - - [contenteditable]:hover, [contenteditable]:focus { - outline: none; } } - -/*# sourceMappingURL=invoice-edit.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/invoice-edit.css.map b/web/bsadmin/assets/css/invoice-edit.css.map deleted file mode 100644 index 89f9565..0000000 --- a/web/bsadmin/assets/css/invoice-edit.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": ";AAEI,gDACQ;EACJ,UAAU,EAAE,OAAsB;;AAI1C,YAAa;EACP,QAAQ,EAAE,QAAQ;EACpB,OAAO,EAAE,GAAG;EACZ,UAAU,ECHL,OAAO;EDIZ,KAAK,ECWF,IAAI;EDVP,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EACnB,oBAAQ;IACJ,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,IAAI;EAEtB,kBAAM;IACF,MAAM,EAAE,GAAG;IACX,KAAK,ECAN,IAAI;EDEP,cAAE;IACE,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,QAAQ;IACjB,UAAU,ECLX,IAAI;IDMH,KAAK,ECbP,OAAO;IDcL,oBAAQ;MACJ,UAAU,EAAE,OAAsB;EAG1C,kBAAM;IACF,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,OAAsB;IAClC,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,MAAM;IAClB,KAAK,ECvBP,OAAO;IDwBL,wBAAQ;MACJ,UAAU,EAAE,OAAsB;;AAM1C,oBAAY;EACR,OAAO,EAAE,IAAI;;AAKjB,sBAAc;EACV,OAAO,EAAE,IAAI;;AAKjB,sBAAa;EACT,OAAO,EAAE,IAAI;;AAKjB,yBAAgB;EACZ,OAAO,EAAE,IAAI;;AAKjB,cAAM;EACF,OAAO,EAAE,MAAM;EACf,MAAM,EAAE,WAAW;EACnB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,CAAC;EACZ,UAAU,EAAE,WAAW;EACvB,UAAU,EAAE,IAAI;;AAapB;;;;;+BAAS;EACL,OAAO,EAAE,GAAG;AAGhB;;;;;;sBAMK;EACL,OAAO,EAAE,IAAI;;AAMjB,iBAAkB;EACd,OAAO,EAAE,KAAK;EACd,cAAc,EAAE,GAAG;EACnB,KAAK,EAAE,IAAI;;AAKf;;GAEG;AAEH,iBAAkB;EACd,MAAM,EAAE,IAAI;EACZ,uBAAM;IACF,KAAK,EAAE,IAAI;EAEf,uBAAM;IACF,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,cAAc;EAEjC;sBACG;IACC,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI;EAEjB,oCAAmB;IACf,UAAU,EC/GL,OAAO;EDmHR,qCAAW;IACP,OAAO,EAAE,KAAK;EAI1B,uBAAM;IACF,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,IAAI;EAEpB,0BAAS;IACL,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,KAAK;IACZ,UAAU,ECpJT,OAAO;IDqJR,OAAO,EAAE,OAAO;IAChB,SAAS,EAAG,KAAK;IACjB,cAAc,EAAE,SAAS;IACzB,MAAM,EAAE,OAAO;IACf,gCAAQ;MACJ,UAAU,EAAE,OAAqB;EAGzC,yBAAQ;IACJ,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,IAAI;EAEf,4BAAW;IACP,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAG,KAAK;IACX,MAAM,EAAG,KAAK;IACd,IAAI,EAAE,OAAO;IACb,SAAS,EAAG,KAAK;IACjB,aAAa,EAAE,WAAW;IAC1B,OAAO,EAAG,KAAK;;AAKvB;;GAEG;AAEH,mBAAoB;EAChB,MAAM,EAAE,IAAI;EACZ,yBAAM;IACF,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG;IACV,4BAAG;MACC,OAAO,EAAE,gBAAgB;MACzB,UAAU,EAAE,KAAK;IAGjB,4CAAG;MACC,WAAW,EAAE,CAAC;IAGtB,sCAAa;MACT,SAAS,EAAE,IAAI;MACf,KAAK,EClMR,OAAO;;ADwMhB;;GAEG;AAEH,KAAM;EACF,MAAM,EAAE,SAAS;EACjB,eAAY;IACR,OAAO,EAAE,IAAI;EAEjB,QAAG;IACC,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;EAErB,OAAE;IACE,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,OAAO;;AAKxB;;GAEG;AAEH,MAAO;EACH,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,MAAM;EACd,OAAO,EAAE,QAAQ;EACjB,QAAE;IACE,SAAS,EAAE,IAAI;;AAKvB;;GAEG;AAEH,YAAa;EACT;;;;cAIa;IACT,OAAO,EAAE,eAAe;;EAGxB,gDACQ;IACJ,OAAO,EAAE,IAAI", -"sources": ["../sass/invoice-edit.scss","../sass/variable.scss"], -"names": [], -"file": "invoice-edit.css" -} diff --git a/web/bsadmin/assets/css/invoice.css b/web/bsadmin/assets/css/invoice.css deleted file mode 100644 index d75afcf..0000000 --- a/web/bsadmin/assets/css/invoice.css +++ /dev/null @@ -1,112 +0,0 @@ -#invoice { - position: relative; - /* top: -290px;*/ - margin-bottom: 120px; - /* width: 700px;*/ - background: #fff; - padding: 30px; } - -#invoice-table { - /* Targets all id with 'col-' */ - border-bottom: 1px solid #e7e7e7; - padding: 30px 0px; } - -#invoice-top { - min-height: 120px; } - -#invoice-mid { - min-height: 120px; } - -#invoice-bot { - min-height: 250px; } - -.invoice-logo { - float: left; - height: 60px; - width: 60px; - background: url(http://michaeltruong.ca/images/logo1.png) no-repeat; - background-size: 60px 60px; } - -.clientlogo { - float: left; - height: 60px; - width: 60px; - background: url(http://michaeltruong.ca/images/client.jpg) no-repeat; - background-size: 60px 60px; - border-radius: 50px; } - -.invoice-info { - display: block; - float: left; - margin-left: 20px; } - .invoice-info h2 { - color: #878787; - font-size: 14px; } - .invoice-info p { - font-size: 12px; } - -.title { - float: right; } - .title h4 { - color: #878787; - text-align: right; } - -.title p { - text-align: right; - font-size: 12px; } - -#project { - margin-left: 52%; } - #project p { - font-size: 12px; } - -#invoice-table h2 { - font-size: 18px; } - -.tabletitle { - padding: 5px; - background: #e7e7e7; } - -.service { - border: 1px solid #e7e7e7; } - -.table-item { - width: 50%; } - -.itemtext { - font-size: .9em; } - -#legalcopy { - margin-top: 30px; } - #legalcopy p { - font-size: 12px; } - -.effect2 { - position: relative; } - -.effect2:before, -.effect2:after { - z-index: -1; - position: absolute; - content: ""; - bottom: 15px; - left: 10px; - width: 50%; - top: 80%; - max-width: 300px; - background: #777; - -webkit-box-shadow: 0 15px 10px #777; - box-shadow: 0 15px 10px #777; - -webkit-transform: rotate(-3deg); - transform: rotate(-3deg); } - -.effect2:after { - -webkit-transform: rotate(3deg); - transform: rotate(3deg); - right: 10px; - left: auto; } - -.legal { - width: 70%; } - -/*# sourceMappingURL=invoice.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/invoice.css.map b/web/bsadmin/assets/css/invoice.css.map deleted file mode 100644 index 2470b26..0000000 --- a/web/bsadmin/assets/css/invoice.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "AAGA,QAAS;EACL,QAAQ,EAAE,QAAQ;EAClB,kBAAkB;EAClB,aAAa,EAAE,KAAK;EACpB,mBAAmB;EACnB,UAAU,ECeP,IAAI;EDdP,OAAO,EAAE,IAAI;;AAGjB,cAAe;EACX,gCAAgC;EAChC,aAAa,EAAE,iBAAgB;EAC/B,OAAO,EAAE,QAAQ;;AAGrB,YAAa;EACT,UAAU,EAAE,KAAK;;AAGrB,YAAa;EACT,UAAU,EAAE,KAAK;;AAGrB,YAAa;EACT,UAAU,EAAE,KAAK;;AAGrB,aAAc;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,uDAAuD;EACnE,eAAe,EAAE,SAAS;;AAG9B,WAAY;EACR,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,wDAAwD;EACpE,eAAe,EAAE,SAAS;EAC1B,aAAa,EAAE,IAAI;;AAGvB,aAAc;EACV,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,IAAI;EACjB,gBAAE;IACE,KAAK,ECpCP,OAAO;IDqCL,SAAS,EAAE,IAAI;EAEnB,eAAC;IACG,SAAS,EAAE,IAAI;;AAIvB,MAAO;EACH,KAAK,EAAE,KAAK;EACZ,SAAE;IACE,KAAK,EC/CP,OAAO;IDgDL,UAAU,EAAE,KAAK;;AAIzB,QAAS;EACL,UAAU,EAAE,KAAK;EACjB,SAAS,EAAE,IAAI;;AAGnB,QAAS;EACL,WAAW,EAAE,GAAG;EAChB,UAAC;IACG,SAAS,EAAE,IAAI;;AAKnB,iBAAE;EACE,SAAS,EAAE,IAAI;;AAIvB,WAAY;EACR,OAAO,EAAE,GAAG;EACZ,UAAU,EC9DN,OAAO;;ADiEf,QAAS;EACL,MAAM,EAAE,iBAAgB;;AAG5B,WAAY;EACR,KAAK,EAAE,GAAG;;AAId,SAAU;EACN,SAAS,EAAG,IAAI;;AAGpB,UAAW;EACP,UAAU,EAAE,IAAI;EAChB,YAAC;IACG,SAAS,EAAE,IAAI;;AAUvB,QAAS;EACL,QAAQ,EAAE,QAAQ;;AAGtB;cACe;EACX,OAAO,EAAE,EAAE;EACX,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,EAAE;EACX,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,GAAG;EACV,GAAG,EAAE,GAAG;EACR,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,IAAI;EAChB,kBAAkB,EAAE,gBAAgB;EACpC,eAAe,EAAE,gBAAgB;EACjC,UAAU,EAAE,gBAAgB;EAC5B,iBAAiB,EAAE,aAAa;EAChC,cAAc,EAAE,aAAa;EAC7B,YAAY,EAAE,aAAa;EAC3B,aAAa,EAAE,aAAa;EAC5B,SAAS,EAAE,aAAa;;AAG5B,cAAe;EACX,iBAAiB,EAAE,YAAY;EAC/B,cAAc,EAAE,YAAY;EAC5B,YAAY,EAAE,YAAY;EAC1B,aAAa,EAAE,YAAY;EAC3B,SAAS,EAAE,YAAY;EACvB,KAAK,EAAE,IAAI;EACX,IAAI,EAAE,IAAI;;AAGd,MAAO;EACH,KAAK,EAAE,GAAG", -"sources": ["../sass/invoice.scss","../sass/variable.scss"], -"names": [], -"file": "invoice.css" -} diff --git a/web/bsadmin/assets/css/lib/barRating/barRating.css b/web/bsadmin/assets/css/lib/barRating/barRating.css deleted file mode 100644 index 94ceb79..0000000 --- a/web/bsadmin/assets/css/lib/barRating/barRating.css +++ /dev/null @@ -1,613 +0,0 @@ -/* - - - -*/ - - - - - - - - - - - - - - - -/*1.bars-1to10.css*/ - -.br-theme-bars-1to10 .br-widget { - height: 50px; - white-space: nowrap; -} -.br-theme-bars-1to10 .br-widget a { - display: block; - width: 12px; - padding: 5px 0; - height: 28px; - float: left; - background-color: #fbedd9; - margin: 1px; - text-align: center; -} -.br-theme-bars-1to10 .br-widget a.br-active, -.br-theme-bars-1to10 .br-widget a.br-selected { - background-color: #EDB867; -} -.br-theme-bars-1to10 .br-widget .br-current-rating { - font-size: 20px; - line-height: 2; - float: left; - padding: 0 20px 0 20px; - color: #EDB867; - font-weight: 400; -} -.br-theme-bars-1to10 .br-readonly a { - cursor: default; -} -.br-theme-bars-1to10 .br-readonly a.br-active, -.br-theme-bars-1to10 .br-readonly a.br-selected { - background-color: #f2cd95; -} -.br-theme-bars-1to10 .br-readonly .br-current-rating { - color: #f2cd95; -} -@media print { - .br-theme-bars-1to10 .br-widget a { - border: 1px solid #b3b3b3; - background: white; - height: 38px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .br-theme-bars-1to10 .br-widget a.br-active, - .br-theme-bars-1to10 .br-widget a.br-selected { - border: 1px solid black; - background: white; - } - .br-theme-bars-1to10 .br-widget .br-current-rating { - color: black; - } -} - - - - - - - - -/*2.bars-horizontal.css*/ - -.br-theme-bars-horizontal .br-widget { - width: 120px; - white-space: nowrap; -} -.br-theme-bars-horizontal .br-widget a { - display: block; - width: 120px; - height: 5px; - background-color: #fbedd9; - margin: 1px; -} -.br-theme-bars-horizontal .br-widget a.br-active, -.br-theme-bars-horizontal .br-widget a.br-selected { - background-color: #EDB867; -} -.br-theme-bars-horizontal .br-widget .br-current-rating { - width: 120px; - font-size: 18px; - font-weight: 600; - line-height: 2; - text-align: center; - color: #EDB867; -} -.br-theme-bars-horizontal .br-readonly a { - cursor: default; -} -.br-theme-bars-horizontal .br-readonly a.br-active, -.br-theme-bars-horizontal .br-readonly a.br-selected { - background-color: #f2cd95; -} -.br-theme-bars-horizontal .br-readonly .br-current-rating { - color: #f2cd95; -} -@media print { - .br-theme-bars-horizontal .br-widget a { - border: 1px solid #b3b3b3; - background: white; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .br-theme-bars-horizontal .br-widget a.br-active, - .br-theme-bars-horizontal .br-widget a.br-selected { - border: 1px solid black; - background: white; - } - .br-theme-bars-horizontal .br-widget .br-current-rating { - color: black; - } -} - - - - - - - - -/*3.bars-movie.css*/ - -.br-theme-bars-movie .br-widget { - height: 10px; - white-space: nowrap; -} -.br-theme-bars-movie .br-widget a { - display: block; - width: 60px; - height: 8px; - float: left; - background-color: #bbcefb; - margin: 1px; -} -.br-theme-bars-movie .br-widget a.br-active, -.br-theme-bars-movie .br-widget a.br-selected { - background-color: #4278F5; -} -.br-theme-bars-movie .br-widget .br-current-rating { - clear: both; - width: 240px; - text-align: center; - font-weight: 600; - display: block; - padding: .5em 0; - color: #4278F5; - font-weight: 400; -} -.br-theme-bars-movie .br-readonly a { - cursor: default; -} -.br-theme-bars-movie .br-readonly a.br-active, -.br-theme-bars-movie .br-readonly a.br-selected { - background-color: #729bf8; -} -.br-theme-bars-movie .br-readonly .br-current-rating { - color: #729bf8; -} -@media print { - .br-theme-bars-movie .br-widget a { - border: 1px solid #b3b3b3; - background: white; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .br-theme-bars-movie .br-widget a.br-active, - .br-theme-bars-movie .br-widget a.br-selected { - border: 1px solid black; - background: white; - } - .br-theme-bars-movie .br-widget .br-current-rating { - color: black; - } -} - - - - - -/*4.bars-pill.css*/ - -.br-theme-bars-pill .br-widget { - white-space: nowrap; -} -.br-theme-bars-pill .br-widget a { - padding: 7px 15px; - background-color: #bef5e8; - color: #50E3C2; - text-decoration: none; - font-size: 13px; - line-height: 3; - text-align: center; - font-weight: 400; -} -.br-theme-bars-pill .br-widget a:first-child { - -webkit-border-top-left-radius: 999px; - -webkit-border-bottom-left-radius: 999px; - -moz-border-radius-topleft: 999px; - -moz-border-radius-bottomleft: 999px; - border-top-left-radius: 999px; - border-bottom-left-radius: 999px; -} -.br-theme-bars-pill .br-widget a:last-child { - -webkit-border-top-right-radius: 999px; - -webkit-border-bottom-right-radius: 999px; - -moz-border-radius-topright: 999px; - -moz-border-radius-bottomright: 999px; - border-top-right-radius: 999px; - border-bottom-right-radius: 999px; -} -.br-theme-bars-pill .br-widget a.br-active, -.br-theme-bars-pill .br-widget a.br-selected { - background-color: #50E3C2; - color: white; -} -.br-theme-bars-pill .br-readonly a { - cursor: default; -} -.br-theme-bars-pill .br-readonly a.br-active, -.br-theme-bars-pill .br-readonly a.br-selected { - background-color: #7cead1; -} -@media print { - .br-theme-bars-pill .br-widget a { - border: 1px solid #b3b3b3; - border-left: none; - background: white; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .br-theme-bars-pill .br-widget a.br-active, - .br-theme-bars-pill .br-widget a.br-selected { - border: 1px solid black; - border-left: none; - background: white; - color: black; - } - .br-theme-bars-pill .br-widget a:first-child { - border-left: 1px solid black; - } -} - - - - - - - - - - -/*5.bars-reversed.css*/ - -.br-theme-bars-reversed .br-widget { - height: 25px; - white-space: nowrap; -} -.br-theme-bars-reversed .br-widget a { - display: block; - width: 22px; - height: 22px; - float: left; - background-color: #bef5e8; - margin: 1px; - font-size: 15px; - font-weight: 400; - line-height: 1.4; - color: #50E3C2; - text-align: center; -} -.br-theme-bars-reversed .br-widget a.br-active, -.br-theme-bars-reversed .br-widget a.br-selected { - background-color: #50E3C2; - color: white; -} -.br-theme-bars-reversed .br-widget .br-current-rating { - line-height: 1.3; - float: left; - padding: 0 20px 0 20px; - color: #50E3C2; - font-size: 17px; - font-weight: 400; -} -.br-theme-bars-reversed .br-readonly a { - cursor: default; -} -.br-theme-bars-reversed .br-readonly a.br-active, -.br-theme-bars-reversed .br-readonly a.br-selected { - background-color: #7cead1; -} -.br-theme-bars-reversed .br-readonly .br-current-rating { - color: #7cead1; -} -@media print { - .br-theme-bars-reversed .br-widget a { - border: 1px solid #b3b3b3; - background: white; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - } - .br-theme-bars-reversed .br-widget a.br-active, - .br-theme-bars-reversed .br-widget a.br-selected { - border: 1px solid black; - background: white; - } - .br-theme-bars-reversed .br-widget .br-current-rating { - color: black; - } -} - - - - - - - - -/*6.bars-square.css*/ - -.br-theme-bars-square .br-widget { - height: 15px; - white-space: nowrap; -} -.br-theme-bars-square .br-widget a { - display: block; - width: 30px; - height: 30px; - float: left; - border: 2px solid #bbcefb; - background-color: white; - margin: 2px; - text-decoration: none; - font-size: 14px; - font-weight: 400; - line-height: 2; - text-align: center; - color: #bbcefb; - font-weight: 600; -} -.br-theme-bars-square .br-widget a.br-active, -.br-theme-bars-square .br-widget a.br-selected { - border: 2px solid #4278F5; - color: #4278F5; -} -.br-theme-bars-square .br-widget .br-current-rating { - clear: both; - width: 330px; - text-align: center; - font-weight: 600; - display: block; - padding: .5em 0; - color: #646464; -} -.br-theme-bars-square .br-readonly a { - cursor: default; -} -.br-theme-bars-square .br-readonly a.br-active, -.br-theme-bars-square .br-readonly a.br-selected { - border: 2px solid #729bf8; - color: #729bf8; -} -@media print { - .br-theme-bars-square .br-widget a { - border: 2px solid #b3b3b3; - color: #b3b3b3; - } - .br-theme-bars-square .br-widget a.br-active, - .br-theme-bars-square .br-widget a.br-selected { - border: 2px solid black; - color: black; - } -} - - - - - - - - -/*7.bootstrap-stars.css*/ - -.br-theme-bootstrap-stars .br-widget { - height: 28px; - white-space: nowrap; -} -.br-theme-bootstrap-stars .br-widget a { - font: normal normal normal 18px/1 'Glyphicons Halflings'; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - text-decoration: none; - margin-right: 2px; -} -.br-theme-bootstrap-stars .br-widget a:after { - content: '\e006'; - color: #d2d2d2; -} -.br-theme-bootstrap-stars .br-widget a.br-active:after { - color: #EDB867; -} -.br-theme-bootstrap-stars .br-widget a.br-selected:after { - color: #EDB867; -} -.br-theme-bootstrap-stars .br-widget .br-current-rating { - display: none; -} -.br-theme-bootstrap-stars .br-readonly a { - cursor: default; -} -@media print { - .br-theme-bootstrap-stars .br-widget a:after { - content: '\e007'; - color: black; - } - .br-theme-bootstrap-stars .br-widget a.br-active:after, - .br-theme-bootstrap-stars .br-widget a.br-selected:after { - content: '\e006'; - color: black; - } -} - - - - - - - - -/*8.css-stars.css*/ - -.br-theme-css-stars .br-widget { - height: 28px; - white-space: nowrap; -} -.br-theme-css-stars .br-widget a { - text-decoration: none; - height: 18px; - width: 18px; - float: left; - font-size: 23px; - margin-right: 5px; -} -.br-theme-css-stars .br-widget a:after { - content: "\2605"; - color: #d2d2d2; -} -.br-theme-css-stars .br-widget a.br-active:after { - color: #EDB867; -} -.br-theme-css-stars .br-widget a.br-selected:after { - color: #EDB867; -} -.br-theme-css-stars .br-widget .br-current-rating { - display: none; -} -.br-theme-css-stars .br-readonly a { - cursor: default; -} -@media print { - .br-theme-css-stars .br-widget a:after { - content: "\2606"; - color: black; - } - .br-theme-css-stars .br-widget a.br-active:after, - .br-theme-css-stars .br-widget a.br-selected:after { - content: "\2605"; - color: black; - } -} - - - - - - -/*9.fontawesome-stars.css*/ - -.br-theme-fontawesome-stars .br-widget { - height: 28px; - white-space: nowrap; -} -.br-theme-fontawesome-stars .br-widget a { - font: normal normal normal 20px/1 FontAwesome; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - text-decoration: none; - margin-right: 2px; -} -.br-theme-fontawesome-stars .br-widget a:after { - content: '\f005'; - color: #d2d2d2; -} -.br-theme-fontawesome-stars .br-widget a.br-active:after { - color: #EDB867; -} -.br-theme-fontawesome-stars .br-widget a.br-selected:after { - color: #EDB867; -} -.br-theme-fontawesome-stars .br-widget .br-current-rating { - display: none; -} -.br-theme-fontawesome-stars .br-readonly a { - cursor: default; -} -@media print { - .br-theme-fontawesome-stars .br-widget a:after { - content: '\f006'; - color: black; - } - .br-theme-fontawesome-stars .br-widget a.br-active:after, - .br-theme-fontawesome-stars .br-widget a.br-selected:after { - content: '\f005'; - color: black; - } -} - - - - - - - -/*10.fontawesome-stars-o.css*/ - - -.br-theme-fontawesome-stars-o .br-widget { - height: 28px; - white-space: nowrap; -} -.br-theme-fontawesome-stars-o .br-widget a { - font: normal normal normal 20px/1 FontAwesome; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - text-decoration: none; - margin-right: 2px; -} -.br-theme-fontawesome-stars-o .br-widget a:after { - content: '\f006'; - color: #d2d2d2; -} -.br-theme-fontawesome-stars-o .br-widget a.br-active:after { - content: '\f005'; - color: #50E3C2; -} -.br-theme-fontawesome-stars-o .br-widget a.br-selected:after { - content: '\f005'; - color: #50E3C2; -} -.br-theme-fontawesome-stars-o .br-widget a.br-fractional:after { - content: '\f123'; - color: #50E3C2; -} -.br-theme-fontawesome-stars-o .br-widget .br-current-rating { - display: none; -} -.br-theme-fontawesome-stars-o .br-readonly a { - cursor: default; -} -.br-theme-fontawesome-stars-o .br-reverse a.br-fractional { - display: inline-block; - transform: scaleX(-1); - -moz-transform: scaleX(-1); - -webkit-transform: scaleX(-1); - filter: FlipH; - -ms-filter: "FlipH"; -} -@media print { - .br-theme-fontawesome-stars-o .br-widget a:after { - content: '\f006'; - color: black; - } - .br-theme-fontawesome-stars-o .br-widget a.br-active:after, - .br-theme-fontawesome-stars-o .br-widget a.br-selected:after { - content: '\f005'; - color: black; - } - .br-theme-fontawesome-stars-o .br-widget a.br-fractional:after { - content: '\f123'; - color: black; - } -} - - - - - diff --git a/web/bsadmin/assets/css/lib/bootstrap.min.css b/web/bsadmin/assets/css/lib/bootstrap.min.css deleted file mode 100644 index ed3905e..0000000 --- a/web/bsadmin/assets/css/lib/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;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}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/web/bsadmin/assets/css/lib/calendar/fullcalendar.css b/web/bsadmin/assets/css/lib/calendar/fullcalendar.css deleted file mode 100644 index a2f76c9..0000000 --- a/web/bsadmin/assets/css/lib/calendar/fullcalendar.css +++ /dev/null @@ -1,1404 +0,0 @@ -/*! - * FullCalendar v3.2.0 Stylesheet - * Docs & License: https://fullcalendar.io/ - * (c) 2017 Adam Shaw - */ - - -.fc { - direction: ltr; - text-align: left; -} - -.fc-rtl { - text-align: right; -} - -body .fc { /* extra precedence to overcome jqui */ - font-size: 1em; -} - - -/* Colors ---------------------------------------------------------------------------------------------------*/ - -.fc-unthemed th, -.fc-unthemed td, -.fc-unthemed thead, -.fc-unthemed tbody, -.fc-unthemed .fc-divider, -.fc-unthemed .fc-row, -.fc-unthemed .fc-content, /* for gutter border */ -.fc-unthemed .fc-popover, -.fc-unthemed .fc-list-view, -.fc-unthemed .fc-list-heading td { - border-color: #ddd; -} - -.fc-unthemed .fc-popover { - background-color: #fff; -} - -.fc-unthemed .fc-divider, -.fc-unthemed .fc-popover .fc-header, -.fc-unthemed .fc-list-heading td { - background: #eee; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - color: #666; -} - -.fc-unthemed td.fc-today { - background: #fcf8e3; -} - -.fc-highlight { /* when user is selecting cells */ - background: #bce8f1; - opacity: .3; -} - -.fc-bgevent { /* default look for background events */ - background: rgb(143, 223, 130); - opacity: .3; -} - -.fc-nonbusiness { /* default look for non-business-hours areas */ - /* will inherit .fc-bgevent's styles */ - background: #d7d7d7; -} - - -/* Icons (inline elements with styled text that mock arrow icons) ---------------------------------------------------------------------------------------------------*/ - -.fc-icon { - display: inline-block; - height: 1em; - line-height: 1em; - font-size: 1em; - text-align: center; - overflow: hidden; - font-family: "Courier New", Courier, monospace; - - /* don't allow browser text-selection */ - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - -/* -Acceptable font-family overrides for individual icons: - "Arial", sans-serif - "Times New Roman", serif - -NOTE: use percentage font sizes or else old IE chokes -*/ - -.fc-icon:after { - position: relative; -} - -.fc-icon-left-single-arrow:after { - content: "\02039"; - font-weight: bold; - font-size: 200%; - top: -7%; -} - -.fc-icon-right-single-arrow:after { - content: "\0203A"; - font-weight: bold; - font-size: 200%; - top: -7%; -} - -.fc-icon-left-double-arrow:after { - content: "\000AB"; - font-size: 160%; - top: -7%; -} - -.fc-icon-right-double-arrow:after { - content: "\000BB"; - font-size: 160%; - top: -7%; -} - -.fc-icon-left-triangle:after { - content: "\25C4"; - font-size: 125%; - top: 3%; -} - -.fc-icon-right-triangle:after { - content: "\25BA"; - font-size: 125%; - top: 3%; -} - -.fc-icon-down-triangle:after { - content: "\25BC"; - font-size: 125%; - top: 2%; -} - -.fc-icon-x:after { - content: "\000D7"; - font-size: 200%; - top: 6%; -} - - -/* Buttons (styled "); - $this.$modal.modal({ - backdrop: 'static' - }); - $this.$modal.find('.delete-event').show().end().find('.save-event').hide().end().find('.modal-body').empty().prepend(form).end().find('.delete-event').unbind('click').click(function () { - $this.$calendarObj.fullCalendar('removeEvents', function (ev) { - return (ev._id == calEvent._id); - }); - $this.$modal.modal('hide'); - }); - $this.$modal.find('form').on('submit', function () { - calEvent.title = form.find("input[type=text]").val(); - $this.$calendarObj.fullCalendar('updateEvent', calEvent); - $this.$modal.modal('hide'); - return false; - }); - }, - /* on select */ - CalendarApp.prototype.onSelect = function (start, end, allDay) { - var $this = this; - $this.$modal.modal({ - backdrop: 'static' - }); - var form = $("
"); - form.append("
"); - form.find(".row") - .append("
") - .append("
") - .find("select[name='category']") - .append("") - .append("") - .append("") - .append("") - .append("") - .append("") - .append(""); - $this.$modal.find('.delete-event').hide().end().find('.save-event').show().end().find('.modal-body').empty().prepend(form).end().find('.save-event').unbind('click').click(function () { - form.submit(); - }); - $this.$modal.find('form').on('submit', function () { - var title = form.find("input[name='title']").val(); - var beginning = form.find("input[name='beginning']").val(); - var ending = form.find("input[name='ending']").val(); - var categoryClass = form.find("select[name='category'] option:checked").val(); - if (title !== null && title.length != 0) { - $this.$calendarObj.fullCalendar('renderEvent', { - title: title, - start:start, - end: end, - allDay: false, - className: categoryClass - }, true); - $this.$modal.modal('hide'); - } - else{ - alert('You have to give a title to your event'); - } - return false; - - }); - $this.$calendarObj.fullCalendar('unselect'); - }, - CalendarApp.prototype.enableDrag = function() { - //init events - $(this.$event).each(function () { - // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/) - // it doesn't need to have a start or end - var eventObject = { - title: $.trim($(this).text()) // use the element's text as the event title - }; - // store the Event Object in the DOM element so we can get to it later - $(this).data('eventObject', eventObject); - // make the event draggable using jQuery UI - $(this).draggable({ - zIndex: 999, - revert: true, // will cause the event to go back to its - revertDuration: 0 // original position after the drag - }); - }); - } - /* Initializing */ - CalendarApp.prototype.init = function() { - this.enableDrag(); - /* Initialize the calendar */ - var date = new Date(); - var d = date.getDate(); - var m = date.getMonth(); - var y = date.getFullYear(); - var form = ''; - var today = new Date($.now()); - - var defaultEvents = [{ - title: 'Hey!', - start: new Date($.now() + 158000000), - className: 'bg-dark' - }, { - title: 'See John Deo', - start: today, - end: today, - className: 'bg-danger' - }, { - title: 'Buy a Theme', - start: new Date($.now() + 338000000), - className: 'bg-primary' - }]; - - var $this = this; - $this.$calendarObj = $this.$calendar.fullCalendar({ - slotDuration: '00:15:00', /* If we want to split day time each 15minutes */ - minTime: '08:00:00', - maxTime: '19:00:00', - defaultView: 'month', - handleWindowResize: true, - height: $(window).height() - 200, - header: { - left: 'prev,next today', - center: 'title', - right: 'month,agendaWeek,agendaDay' - }, - events: defaultEvents, - editable: true, - droppable: true, // this allows things to be dropped onto the calendar !!! - eventLimit: true, // allow "more" link when too many events - selectable: true, - drop: function(date) { $this.onDrop($(this), date); }, - select: function (start, end, allDay) { $this.onSelect(start, end, allDay); }, - eventClick: function(calEvent, jsEvent, view) { $this.onEventClick(calEvent, jsEvent, view); } - - }); - - //on new event - this.$saveCategoryBtn.on('click', function(){ - var categoryName = $this.$categoryForm.find("input[name='category-name']").val(); - var categoryColor = $this.$categoryForm.find("select[name='category-color']").val(); - if (categoryName !== null && categoryName.length != 0) { - $this.$extEvents.append('
' + categoryName + '
') - $this.enableDrag(); - } - - }); - }, - - //init CalendarApp - $.CalendarApp = new CalendarApp, $.CalendarApp.Constructor = CalendarApp - -}(window.jQuery), - -//initializing CalendarApp -function($) { - "use strict"; - $.CalendarApp.init() -}(window.jQuery); diff --git a/web/bsadmin/assets/js/lib/calendar/fullcalendar.min.js b/web/bsadmin/assets/js/lib/calendar/fullcalendar.min.js deleted file mode 100644 index c5eb8c7..0000000 --- a/web/bsadmin/assets/js/lib/calendar/fullcalendar.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * FullCalendar v3.2.0 - * Docs & License: https://fullcalendar.io/ - * (c) 2017 Adam Shaw - */ -!function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):"object"==typeof exports?module.exports=t(require("jquery"),require("moment")):t(jQuery,moment)}(function(t,e){function n(t){return q(t,Vt)}function i(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function r(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function s(){t("body").addClass("fc-not-allowed")}function o(){t("body").removeClass("fc-not-allowed")}function l(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],u=[],c=0;a(e),e.each(function(n,i){var a=n===e.length-1?s:r,d=t(i).outerHeight(!0);d *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function c(t,e){var n,i=t.add(e);return i.css({position:"relative",left:-1}),n=t.outerHeight()-e.outerHeight(),i.css({position:"",left:""}),n}function d(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function h(t,e){var n=t.offset(),i=n.left-(e?e.left:0),r=n.top-(e?e.top:0);return{left:i,right:i+t.outerWidth(),top:r,bottom:r+t.outerHeight()}}function f(t,e){var n=t.offset(),i=p(t),r=n.left+S(t,"border-left-width")+i.left-(e?e.left:0),s=n.top+S(t,"border-top-width")+i.top-(e?e.top:0);return{left:r,right:r+t[0].clientWidth,top:s,bottom:s+t[0].clientHeight}}function g(t,e){var n=t.offset(),i=n.left+S(t,"border-left-width")+S(t,"padding-left")-(e?e.left:0),r=n.top+S(t,"border-top-width")+S(t,"padding-top")-(e?e.top:0);return{left:i,right:i+t.width(),top:r,bottom:r+t.height()}}function p(t){var e,n=t.innerWidth()-t[0].clientWidth,i=t.innerHeight()-t[0].clientHeight;return n=v(n),i=v(i),e={left:0,right:0,top:0,bottom:i},m()&&"rtl"==t.css("direction")?e.left=n:e.right=n,e}function v(t){return t=Math.max(0,t),t=Math.round(t)}function m(){return null===Pt&&(Pt=y()),Pt}function y(){var e=t("
").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),n=e.children(),i=n.offset().left>e.offset().left;return e.remove(),i}function S(t,e){return parseFloat(t.css(e))||0}function w(t){return 1==t.which&&!t.ctrlKey}function E(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageX:t.pageX}function b(t){var e=t.originalEvent.touches;return e&&e.length?e[0].pageY:t.pageY}function D(t){return/^touch/.test(t.type)}function T(t){t.addClass("fc-unselectable").on("selectstart",H)}function C(t){t.removeClass("fc-unselectable").off("selectstart",H)}function H(t){t.preventDefault()}function x(t,e){var n={left:Math.max(t.left,e.left),right:Math.min(t.right,e.right),top:Math.max(t.top,e.top),bottom:Math.min(t.bottom,e.bottom)};return n.lefta&&o=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),l<=u?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}}function z(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function G(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function O(t,n,i){return e.duration(Math.round(t.diff(n,i,!0)),i)}function A(t,e){var n,i,r;for(n=0;n=1&&ot(r)));n++);return i}function V(t,n,i){return null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0)}function P(t,e,n){var i;return W(n)?(e-t)/n:(i=n.asMonths(),Math.abs(i)>=1&&ot(i)?e.diff(t,"months",!0)/i:e.diff(t,"days",!0)/n.asDays())}function _(t,e){var n,i;return W(t)||W(e)?t/e:(n=t.asMonths(),i=e.asMonths(),Math.abs(n)>=1&&ot(n)&&Math.abs(i)>=1&&ot(i)?n/i:t.asDays()/e.asDays())}function Y(t,n){var i;return W(t)?e.duration(t*n):(i=t.asMonths(),Math.abs(i)>=1&&ot(i)?e.duration({months:i*n}):e.duration({days:t.asDays()*n}))}function W(t){return Boolean(t.hours()||t.minutes()||t.seconds()||t.milliseconds())}function U(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function j(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function q(t,e){var n,i,r,s,o,l,a={};if(e)for(n=0;n=0;s--)if(o=t[s][i],"object"==typeof o)r.unshift(o);else if(void 0!==o){a[i]=o;break}r.length&&(a[i]=q(r))}for(n=t.length-1;n>=0;n--){l=t[n];for(i in l)i in a||(a[i]=l[i])}return a}function Z(t){var e=function(){};return e.prototype=t,new e}function $(t,e){for(var n in t)Q(t,n)&&(e[n]=t[n])}function Q(t,e){return Wt.call(t,e)}function X(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function K(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;r/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"
")}function et(t){return t.replace(/&.*?;/g,"")}function nt(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+":"+e)}),n.join(";")}function it(e){var n=[];return t.each(e,function(t,e){null!=e&&n.push(t+'="'+tt(e)+'"')}),n.join(" ")}function rt(t){return t.charAt(0).toUpperCase()+t.slice(1)}function st(t,e){return t-e}function ot(t){return t%1===0}function lt(t,e){var n=t[e];return function(){return n.apply(t,arguments)}}function at(t,e,n){var i,r,s,o,l,a=function(){var u=+new Date-o;u=t.leftCol)return!0;return!1}function Ct(t,e){return t.leftCol-e.leftCol}function Ht(t){var e,n,i,r=[];for(e=0;ee.top&&t.top"),g.append(o("left")).append(o("right")).append(o("center")).append('
')):s()}function s(){g&&(g.remove(),g=f.el=null)}function o(i){var r=t('
'),s=n.layout[i];return s&&t.each(s.split(" "),function(n){var i,s=t(),o=!0;t.each(this.split(","),function(n,i){var r,l,a,u,c,d,h,f,g,m;"title"==i?(s=s.add(t("

 

")),o=!1):((r=(e.options.customButtons||{})[i])?(a=function(t){r.click&&r.click.call(m[0],t)},u="",c=r.text):(l=e.getViewSpec(i))?(a=function(){e.changeView(i)},v.push(i),u=l.buttonTextOverride,c=l.buttonTextDefault):e[i]&&(a=function(){e[i]()},u=(e.overrides.buttonText||{})[i],c=e.options.buttonText[i]),a&&(d=r?r.themeIcon:e.options.themeButtonIcons[i],h=r?r.icon:e.options.buttonIcons[i],f=u?tt(u):d&&e.options.theme?"":h&&!e.options.theme?"":tt(c),g=["fc-"+i+"-button",p+"-button",p+"-state-default"],m=t('").click(function(t){m.hasClass(p+"-state-disabled")||(a(t),(m.hasClass(p+"-state-active")||m.hasClass(p+"-state-disabled"))&&m.removeClass(p+"-state-hover"))}).mousedown(function(){m.not("."+p+"-state-active").not("."+p+"-state-disabled").addClass(p+"-state-down")}).mouseup(function(){m.removeClass(p+"-state-down")}).hover(function(){m.not("."+p+"-state-active").not("."+p+"-state-disabled").addClass(p+"-state-hover")},function(){m.removeClass(p+"-state-hover").removeClass(p+"-state-down")}),s=s.add(m)))}),o&&s.first().addClass(p+"-corner-left").end().last().addClass(p+"-corner-right").end(),s.length>1?(i=t("
"),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function l(t){g&&g.find("h2").text(t)}function a(t){g&&g.find(".fc-"+t+"-button").addClass(p+"-state-active")}function u(t){g&&g.find(".fc-"+t+"-button").removeClass(p+"-state-active")}function c(t){g&&g.find(".fc-"+t+"-button").prop("disabled",!0).addClass(p+"-state-disabled")}function d(t){g&&g.find(".fc-"+t+"-button").prop("disabled",!1).removeClass(p+"-state-disabled")}function h(){return v}var f=this;f.setToolbarOptions=i,f.render=r,f.removeElement=s,f.updateTitle=l,f.activateButton=a,f.deactivateButton=u,f.disableButton=c,f.enableButton=d,f.getViewsWithButtons=h,f.el=null;var g,p,v=[]}function Bt(n,i){function r(t){t._locale=Y}function s(){q?a()&&(f(),u()):o()}function o(){n.addClass("fc"),n.on("click.fc","a[data-goto]",function(e){var n=t(this),i=n.data("goto"),r=_.moment(i.date),s=i.type,o=Q.opt("navLink"+rt(s)+"Click");"function"==typeof o?o(r,e):("string"==typeof o&&(s=o),B(r,s))}),_.bindOption("theme",function(t){$=t?"ui":"fc",n.toggleClass("ui-widget",t),n.toggleClass("fc-unthemed",!t)}),_.bindOptions(["isRTL","locale"],function(t){n.toggleClass("fc-ltr",!t),n.toggleClass("fc-rtl",t)}),q=t("
").prependTo(n);var e=y();W=new Lt(e),U=_.header=e[0],j=_.footer=e[1],E(),b(),u(_.options.defaultView),_.options.handleWindowResize&&(K=at(v,_.options.windowResizeDelay),t(window).resize(K))}function l(){Q&&Q.removeElement(),W.proxyCall("removeElement"),q.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),n.off(".fc"),K&&t(window).unbind("resize",K),se.unneeded()}function a(){return n.is(":visible")}function u(e,n){nt++;var i=Q&&e&&Q.type!==e;i&&(F(),c()),!Q&&e&&(Q=_.view=et[e]||(et[e]=_.instantiateView(e)),Q.setElement(t("
").appendTo(q)),W.proxyCall("activateButton",e)),Q&&(J=Q.massageCurrentDate(J),Q.isDateSet&&J>=Q.intervalStart&&J=Q.intervalStart&&tq&&i.push(n);return i}function s(t,e){return!q||tZ}function o(t,e){return q=t,Z=e,l()}function l(){return u(tt,"reset")}function a(t){return u(E(t))}function u(t,e){var n,i;for("reset"===e?nt=[]:"add"!==e&&(nt=C(nt,t)),n=0;ns&&(!a[o]||u.isSame(c,a[o]))&&(o-1!==s||"."!==f[o]);o--)v=f[o]+v;for(l=s;l<=o;l++)m+=f[l],y+=g[l];return(m||y)&&(S=r?y+i+m:m+i+y),h(p+S+v)}function r(t){return w[t]||(w[t]=s(t))}function s(t){var e=o(t);return{fakeFormatString:a(e),sameUnits:u(e)}}function o(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push.apply(n,l(e[1])):e[2]?n.push({maybe:o(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push.apply(n,l(e[5]));return n}function l(t){return". "===t?["."," "]:[t]}function a(t){var e,n,i=[];for(e=0;er.value)&&(r=i));return r?r.unit:null}Ot.formatDate=t,Ot.formatRange=n,Ot.oldMomentFormat=e,Ot.queryMostGranularFormatUnit=f;var g="\v",p="",v="",m=new RegExp(v+"([^"+v+"]*)"+v,"g"),y={t:function(t){return e(t,"a").charAt(0)},T:function(t){return e(t,"A").charAt(0)}},S={Y:{value:1,unit:"year"},M:{value:2,unit:"month"},W:{value:3,unit:"week"},w:{value:3,unit:"week"},D:{value:4,unit:"day"},d:{value:4,unit:"day"}},w={}}();var Qt=Ot.formatDate,Xt=Ot.formatRange,Kt=Ot.oldMomentFormat;Ot.Class=ct,ct.extend=function(){var t,e,n=arguments.length;for(t=0;t').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&this.listenTo(t(document),"mousedown",this.documentMousedown)},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(t(document),"mousedown")},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),c=t(window),h=d(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,h.is(window)||h.is(document)?(h=c,e=0,n=0):(i=h.offset(),e=i.top,n=i.left),e+=c.scrollTop(),n+=c.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+h.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+h.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),ne=Ot.CoordCache=ct.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(e){this.els=t(e.els),this.isHorizontal=e.isHorizontal,this.isVertical=e.isVertical,this.forcedOffsetParentEl=e.offsetParent?t(e.offsetParent):null},build:function(){var t=this.forcedOffsetParentEl;!t&&this.els.length>0&&(t=this.els.eq(0).offsetParent()),this.origin=t?t.offset():null,this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},buildElHorizontals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().left,l=s.outerWidth();e.push(o),n.push(o+l)}),this.lefts=e,this.rights=n},buildElVerticals:function(){var e=[],n=[];this.els.each(function(i,r){var s=t(r),o=s.offset().top,l=s.outerHeight();e.push(o),n.push(o+l)}),this.tops=e,this.bottoms=n},getHorizontalIndex:function(t){this.ensureBuilt();var e,n=this.lefts,i=this.rights,r=n.length;for(e=0;e=n[e]&&t=n[e]&&t0&&(t=d(this.els.eq(0)),!t.is(document))?f(t):null},isPointInBounds:function(t,e){return this.isLeftInBounds(t)&&this.isTopInBounds(e)},isLeftInBounds:function(t){return!this.boundingRect||t>=this.boundingRect.left&&t=this.boundingRect.top&&t=r*r&&this.handleDistanceSurpassed(t)),this.isDragging&&this.handleDrag(n,i,t)},handleDrag:function(t,e,n){this.trigger("drag",t,e,n),this.updateAutoScroll(n)},endDrag:function(t){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(t))},handleDragEnd:function(t){this.trigger("dragEnd",t)},startDelay:function(t){var e=this;this.delay?this.delayTimeoutId=setTimeout(function(){e.handleDelayEnd(t)},this.delay):this.handleDelayEnd(t)},handleDelayEnd:function(t){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(t)},handleDistanceSurpassed:function(t){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(t)},handleTouchMove:function(t){this.isDragging&&this.shouldCancelTouchScroll&&t.preventDefault(),this.handleMove(t)},handleMouseMove:function(t){this.handleMove(t)},handleTouchScroll:function(t){this.isDragging&&!this.scrollAlwaysKills||this.endInteraction(t,!0)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1)),this["_"+t]&&this["_"+t].apply(this,Array.prototype.slice.call(arguments,1))}});ie.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var t=this.scrollEl;this.isAutoScroll=this.options.scroll&&t&&!t.is(window)&&!t.is(document),this.isAutoScroll&&this.listenTo(t,"scroll",at(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=h(this.scrollEl))},updateAutoScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(b(t)-o.top))/s,n=(s-(o.bottom-b(t)))/s,i=(s-(E(t)-o.left))/s,r=(s-(o.right-E(t)))/s,e>=0&&e<=1?l=e*this.scrollSpeed*-1:n>=0&&n<=1&&(l=n*this.scrollSpeed),i>=0&&i<=1?a=i*this.scrollSpeed*-1:r>=0&&r<=1&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(t,e){this.scrollTopVel=t,this.scrollLeftVel=e,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(lt(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;this.scrollTopVel<0?t.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?t.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var re=ie.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(t,e){ie.call(this,e),this.component=t},handleInteractionStart:function(t){var e,n,i,r=this.subjectEl;this.component.hitsNeeded(),this.computeScrollBounds(),t?(n={left:E(t),top:b(t)},i=n,r&&(e=h(r),i=R(i,e)),this.origHit=this.queryHit(i.left,i.top),r&&this.options.subjectCenter&&(this.origHit&&(e=x(this.origHit,e)||e),i=I(e)),this.coordAdjust=k(i,n)):(this.origHit=null,this.coordAdjust=null),ie.prototype.handleInteractionStart.apply(this,arguments)},handleDragStart:function(t){var e;ie.prototype.handleDragStart.apply(this,arguments),e=this.queryHit(E(t),b(t)),e&&this.handleHitOver(e)},handleDrag:function(t,e,n){var i;ie.prototype.handleDrag.apply(this,arguments),i=this.queryHit(E(n),b(n)),pt(i,this.hit)||(this.hit&&this.handleHitOut(),i&&this.handleHitOver(i))},handleDragEnd:function(){this.handleHitDone(),ie.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(t){var e=pt(t,this.origHit);this.hit=t,this.trigger("hitOver",this.hit,e,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},handleInteractionEnd:function(){ie.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.hitsNotNeeded()},handleScrollEnd:function(){ie.prototype.handleScrollEnd.apply(this,arguments),this.isDragging&&(this.component.releaseHits(),this.component.prepareHits())},queryHit:function(t,e){return this.coordAdjust&&(t+=this.coordAdjust.left,e+=this.coordAdjust.top),this.component.queryHit(t,e)}});Ot.touchMouseIgnoreWait=500;var se=ct.extend(te,Jt,{isTouching:!1,mouseIgnoreDepth:0,handleScrollProxy:null,bind:function(){var e=this;this.listenTo(t(document),{touchstart:this.handleTouchStart,touchcancel:this.handleTouchCancel,touchend:this.handleTouchEnd,mousedown:this.handleMouseDown,mousemove:this.handleMouseMove,mouseup:this.handleMouseUp,click:this.handleClick,selectstart:this.handleSelectStart,contextmenu:this.handleContextMenu}),window.addEventListener("touchmove",this.handleTouchMoveProxy=function(n){e.handleTouchMove(t.Event(n))},{passive:!1}),window.addEventListener("scroll",this.handleScrollProxy=function(n){e.handleScroll(t.Event(n))},!0)},unbind:function(){this.stopListeningTo(t(document)),window.removeEventListener("touchmove",this.handleTouchMoveProxy),window.removeEventListener("scroll",this.handleScrollProxy,!0)},handleTouchStart:function(t){this.stopTouch(t,!0),this.isTouching=!0,this.trigger("touchstart",t)},handleTouchMove:function(t){this.isTouching&&this.trigger("touchmove",t)},handleTouchCancel:function(t){this.isTouching&&(this.trigger("touchcancel",t),this.stopTouch(t))},handleTouchEnd:function(t){this.stopTouch(t)},handleMouseDown:function(t){this.shouldIgnoreMouse()||this.trigger("mousedown",t)},handleMouseMove:function(t){this.shouldIgnoreMouse()||this.trigger("mousemove",t)},handleMouseUp:function(t){this.shouldIgnoreMouse()||this.trigger("mouseup",t)},handleClick:function(t){this.shouldIgnoreMouse()||this.trigger("click",t)},handleSelectStart:function(t){this.trigger("selectstart",t)},handleContextMenu:function(t){this.trigger("contextmenu",t)},handleScroll:function(t){this.trigger("scroll",t)},stopTouch:function(t,e){this.isTouching&&(this.isTouching=!1,this.trigger("touchend",t),e||this.startTouchMouseIgnore())},startTouchMouseIgnore:function(){var t=this,e=Ot.touchMouseIgnoreWait;e&&(this.mouseIgnoreDepth++,setTimeout(function(){t.mouseIgnoreDepth--},e))},shouldIgnoreMouse:function(){return this.isTouching||Boolean(this.mouseIgnoreDepth)}});!function(){var t=null,e=0;se.get=function(){return t||(t=new se,t.bind()),t},se.needed=function(){se.get(),e++},se.unneeded=function(){e--,e||(t.unbind(),t=null)}}();var oe=ct.extend(te,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.y0=b(e),this.x0=E(e),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),D(e)?this.listenTo(t(document),"touchmove",this.handleMove):this.listenTo(t(document),"mousemove",this.handleMove))},stop:function(e,n){function i(){r.isAnimating=!1,r.removeElement(),r.top0=r.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(t(document)),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(t=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),t.addClass("fc-unselectable"),t.appendTo(this.parentEl)),t},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(t){this.topDelta=b(t)-this.y0,this.leftDelta=E(t)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),le=Ot.Grid=ct.extend(te,{hasDayInteractions:!0,view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayClickListener:null,daySelectListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL"),this.elsByFill={},this.dayClickListener=this.buildDayClickListener(),this.daySelectListener=this.buildDaySelectListener()},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(t){this.start=t.start.clone(),this.end=t.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var t,e,n=this.view;this.eventTimeFormat=n.opt("eventTimeFormat")||n.opt("timeFormat")||this.computeEventTimeFormat(),t=n.opt("displayEventTime"),null==t&&(t=this.computeDisplayEventTime()),e=n.opt("displayEventEnd"),null==e&&(e=this.computeDisplayEventEnd()),this.displayEventTime=t,this.displayEventEnd=e},spanToSegs:function(t){},diffDates:function(t,e){return this.largeUnit?O(t,e,this.largeUnit):z(t,e)},hitsNeededDepth:0,hitsNeeded:function(){this.hitsNeededDepth++||this.prepareHits()},hitsNotNeeded:function(){this.hitsNeededDepth&&!--this.hitsNeededDepth&&this.releaseHits()},prepareHits:function(){},releaseHits:function(){},queryHit:function(t,e){},getHitSpan:function(t){},getHitEl:function(t){},setElement:function(t){this.el=t,this.hasDayInteractions&&(T(t),this.bindDayHandler("touchstart",this.dayTouchStart),this.bindDayHandler("mousedown",this.dayMousedown)),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(e,n){var i=this;this.el.on(e,function(e){if(!t(e.target).is(i.segSelector+","+i.segSelector+" *,.fc-more,a[data-goto]"))return n.call(i,e)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(t(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(t(document))},dayMousedown:function(t){var e=this.view;e.isSelected||e.selectedEvent||(this.dayClickListener.startInteraction(t),e.opt("selectable")&&this.daySelectListener.startInteraction(t,{distance:e.opt("selectMinDistance")}))},dayTouchStart:function(t){var e,n=this.view;n.isSelected||n.selectedEvent||(e=n.opt("selectLongPressDelay"),null==e&&(e=n.opt("longPressDelay")),this.dayClickListener.startInteraction(t),n.opt("selectable")&&this.daySelectListener.startInteraction(t,{delay:e}))},buildDayClickListener:function(){var t,e=this,n=this.view,i=new re(this,{scroll:n.opt("dragScroll"),interactionStart:function(){t=i.origHit},hitOver:function(e,n,i){n||(t=null)},hitOut:function(){t=null},interactionEnd:function(i,r){!r&&t&&n.triggerDayClick(e.getHitSpan(t),e.getHitEl(t),i)}});return i.shouldCancelTouchScroll=!1,i.scrollAlwaysKills=!0,i},buildDaySelectListener:function(){var t,e=this,n=this.view,i=new re(this,{scroll:n.opt("dragScroll"),interactionStart:function(){t=null},dragStart:function(){n.unselect()},hitOver:function(n,i,r){r&&(t=e.computeSelection(e.getHitSpan(r),e.getHitSpan(n)),t?e.renderSelection(t):t===!1&&s())},hitOut:function(){t=null,e.unrenderSelection()},hitDone:function(){o()},interactionEnd:function(e,i){!i&&t&&n.reportSelection(t,e)}});return i},clearDragListeners:function(){this.dayClickListener.endInteraction(),this.daySelectListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(t,e){var n=this.fabricateHelperEvent(t,e);return this.renderHelper(n,e)},fabricateHelperEvent:function(t,e){var n=e?Z(e.event):{};return n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDates(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),n},renderHelper:function(t,e){},unrenderHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(t,e){var n=this.computeSelectionSpan(t,e);return!(n&&!this.view.calendar.isSelectionSpanAllowed(n))&&n},computeSelectionSpan:function(t,e){var n=[t.start,t.end,e.start,e.end];return n.sort(st),{start:n[0].clone(),end:n[3].clone()}},renderHighlight:function(t){this.renderFill("highlight",this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},renderFill:function(t,e){},unrenderFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;i"},getDayClasses:function(t,e){var n=this.view,i=n.calendar.getNow(),r=["fc-"+_t[t.day()]];return 1==n.intervalDuration.as("months")&&t.month()!=n.intervalStart.month()&&r.push("fc-other-month"),t.isSame(i,"day")?(r.push("fc-today"),e!==!0&&r.push(n.highlightStateClass)):t *",mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(t){var e,n=[],i=[];for(e=0;el&&o.push({start:l,end:n.start}),l=n.end;return l=e.length?e[e.length-1]+1:e[n]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(t){var e,n,i,r,s,o=this.daysPerRow,l=this.view.computeDayRange(t),a=this.getDateDayIndex(l.start),u=this.getDateDayIndex(l.end.clone().subtract(1,"days")),c=[];for(e=0;e'+this.renderHeadTrHtml()+"
"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return""+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+""},renderHeadDateCellsHtml:function(){var t,e,n=[];for(t=0;t1?' colspan="'+e+'"':"")+(n?" "+n:"")+">"+i.buildGotoAnchorHtml({date:t,forceOff:this.rowCnt>1||1===this.colCnt},tt(t.format(this.colHeadFormat)))+""},renderBgTrHtml:function(t){return""+(this.isRTL?"":this.renderBgIntroHtml(t))+this.renderBgCellsHtml(t)+(this.isRTL?this.renderBgIntroHtml(t):"")+""},renderBgIntroHtml:function(t){return this.renderIntroHtml()},renderBgCellsHtml:function(t){var e,n,i=[];for(e=0;e"},renderIntroHtml:function(){},bookendCells:function(t){var e=this.renderIntroHtml();e&&(this.isRTL?t.append(e):t.prepend(e))}},ue=Ot.DayGrid=le.extend(ae,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(t){var e,n,i=this.view,r=this.rowCnt,s=this.colCnt,o="";for(e=0;e
'+this.renderBgTrHtml(t)+'
'+(this.numbersVisible?""+this.renderNumberTrHtml(t)+"":"")+"
"},renderNumberTrHtml:function(t){return""+(this.isRTL?"":this.renderNumberIntroHtml(t))+this.renderNumberCellsHtml(t)+(this.isRTL?this.renderNumberIntroHtml(t):"")+""},renderNumberIntroHtml:function(t){return this.renderIntroHtml()},renderNumberCellsHtml:function(t){var e,n,i=[];for(e=0;e',this.view.cellWeekNumbersVisible&&t.day()==n&&(i+=this.view.buildGotoAnchorHtml({date:t,type:"week"},{class:"fc-week-number"},t.format("w"))),this.view.dayNumbersVisible&&(i+=this.view.buildGotoAnchorHtml(t,{class:"fc-day-number"},t.date())),i+=""):""},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(t){var e,n,i=this.sliceRangeByRow(t);for(e=0;e');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n,i){var r,s,o,l=[];for(n=this.renderFillSegEls(e,n),r=0;r
'),s=r.find("tr"),l>0&&s.append(''),s.append(n.el.attr("colspan",a-l)),a'),this.bookendCells(s),r}});ue.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),le.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return le.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return le.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},unrenderFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;n'+tt(n)+"")),i=''+(tt(s.title||"")||" ")+"",'
'+(this.isRTL?i+" "+d:d+" "+i)+"
"+(l?'
':"")+(a?'
':"")+""},renderSegRow:function(e,n){function i(e){for(;o"),l.append(c)),v[r][o]=c,m[r][o]=c,o++}var r,s,o,l,a,u,c,d=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t(""),p=[],v=[],m=[];for(r=0;r"),p.push([]),v.push([]),m.push([]),s)for(a=0;a').append(u.el),u.leftCol!=u.rightCol?c.attr("colspan",u.rightCol-u.leftCol+1):m[r][o]=c;o<=u.rightCol;)v[r][o]=c,p[r][o]=u,o++;l.append(c)}i(d),this.bookendCells(l),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:v,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(this.sortEventSegs(t),e=0;e td > :first-child").each(n),r.position().top+s>l)return i;return!1},limitRow:function(e,n){function i(i){for(;b").append(y),h.append(m),E.push(m[0])),b++}var r,s,o,l,a,u,c,d,h,f,g,p,v,m,y,S=this,w=this.rowStructs[e],E=[],b=0;if(n&&n').attr("rowspan",f),u=d[p],y=this.renderMoreLink(e,a.leftCol+p,[a].concat(u)),m=t("
").append(y),v.append(m),g.push(v[0]),E.push(v[0]);h.addClass("fc-limited").after(t(g)),o.push(h[0])}}i(this.colCnt),w.moreEls=t(E),w.limitedEls=t(o)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n,i){var r=this,s=this.view;return t('').text(this.getMoreLinkText(i.length)).on("click",function(o){var l=s.opt("eventLimitClick"),a=r.getCellDate(e,n),u=t(this),c=r.getCellEl(e,n),d=r.getCellSegs(e,n),h=r.resliceDaySegs(d,a),f=r.resliceDaySegs(i,a);"function"==typeof l&&(l=s.publiclyTrigger("eventLimitClick",null,{date:a,dayEl:c,moreEl:u,segs:h,hiddenSegs:f},o)),"popover"===l?r.showSegPopover(e,n,u,h):"string"==typeof l&&s.calendar.zoomTo(a,l)})},showSegPopover:function(t,e,n,i){var r,s,o=this,l=this.view,a=n.parent();r=1==this.rowCnt?l.el:this.rowEls.eq(t),s={className:"fc-more-popover",content:this.renderSegPopoverContent(t,e,i),parentEl:this.view.el,top:r.offset().top,autoHide:!0,viewportConstrain:l.opt("popoverViewportConstrain"),hide:function(){if(o.popoverSegs)for(var t,e=0;e'+tt(l)+'
'),u=a.find(".fc-event-container");for(i=this.renderFgSegEls(i,!0),this.popoverSegs=i,r=0;r'+this.renderBgTrHtml(0)+'
"},renderSlatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=e.duration(+this.minTime);l"+(n?""+tt(t.format(this.labelFormat))+"":"")+"",o+='"+(s?"":i)+''+(s?i:"")+"",l.add(this.slotDuration);return o},processOptions:function(){var n,i=this.view,r=i.opt("slotDuration"),s=i.opt("snapDuration");r=e.duration(r),s=s?e.duration(s):r,this.slotDuration=r,this.snapDuration=s,this.snapsPerSlot=r/s,this.minResizeDuration=s,this.minTime=e.duration(i.opt("minTime")),this.maxTime=e.duration(i.opt("maxTime")),n=i.opt("slotLabelFormat"),t.isArray(n)&&(n=n[n.length-1]),this.labelFormat=n||i.opt("smallTimeFormat"),n=i.opt("slotLabelInterval"),this.labelInterval=n?e.duration(n):this.computeLabelInterval(r)},computeLabelInterval:function(t){var n,i,r;for(n=Re.length-1;n>=0;n--)if(i=e.duration(Re[n]),r=_(i,t),ot(r)&&r>1)return i;return e.duration(t)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(t,e){var n=this.snapsPerSlot,i=this.colCoordCache,r=this.slatCoordCache;if(i.isLeftInBounds(t)&&r.isTopInBounds(e)){var s=i.getHorizontalIndex(t),o=r.getVerticalIndex(e);if(null!=s&&null!=o){var l=r.getTopOffset(o),a=r.getHeight(o),u=(e-l)/a,c=Math.floor(u*n),d=o*n+c,h=l+c/n*a,f=l+(c+1)/n*a;return{col:s,snap:d,component:this,left:i.getLeftOffset(s),right:i.getRightOffset(s),top:h,bottom:f}}}},getHitSpan:function(t){var e,n=this.getCellDate(0,t.col),i=this.computeSnapTime(t.snap);return n.time(i),e=n.clone().add(this.snapDuration),{start:n,end:e}},getHitEl:function(t){return this.colEls.eq(t.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},spanToSegs:function(t){var e,n=this.sliceRangeByTimes(t);for(e=0;e
').css("top",r).appendTo(this.colContainerEls.eq(i[n].col))[0]);i.length>0&&s.push(t('
').css("top",r).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=t(s)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderEventLocationHelper(t):this.renderHighlight(t)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(t){this.renderHighlightSegs(this.spanToSegs(t))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});ce.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var e,n,i="";for(e=0;e
';n=t('
'+i+"
"),this.colContainerEls=n.find(".fc-content-col"),this.helperContainerEls=n.find(".fc-helper-container"),this.fgContainerEls=n.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=n.find(".fc-bgevent-container"),this.highlightContainerEls=n.find(".fc-highlight-container"),this.businessContainerEls=n.find(".fc-business-container"),this.bookendCells(n.find("tr")),this.el.append(n)},renderFgSegs:function(t){return t=this.renderFgSegsIntoContainers(t,this.fgContainerEls),this.fgSegs=t,t},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(e,n){var i,r,s,o=[];for(e=this.renderFgSegsIntoContainers(e,this.helperContainerEls),i=0;i
'+(n?'
'+tt(n)+"
":"")+(o.title?'
'+tt(o.title)+"
":"")+'
'+(u?'
':"")+""},updateSegVerticals:function(t){this.computeSegVerticals(t),this.assignSegVerticals(t)},computeSegVerticals:function(t){var e,n;for(e=0;e1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),Xt(t.start,i,e,n,this.opt("isRTL"))},getAllDayHtml:function(){return this.opt("allDayHtml")||tt(this.opt("allDayText"))},buildGotoAnchorHtml:function(e,n,i){var r,s,o,l;return t.isPlainObject(e)?(r=e.date,s=e.type,o=e.forceOff):r=e,r=Ot.moment(r),l={date:r.format("YYYY-MM-DD"),type:s||"day"},"string"==typeof n&&(i=n,n=null),n=n?" "+it(n):"",i=i||"",!o&&this.opt("navLinks")?"'+i+"":""+i+""},setElement:function(t){this.el=t,this.bindGlobalHandlers(),this.renderSkeleton()},removeElement:function(){this.unsetDate(),this.unrenderSkeleton(),this.unbindGlobalHandlers(),this.el.remove()},renderSkeleton:function(){},unrenderSkeleton:function(){},setDate:function(t){var e=this.isDateSet;this.isDateSet=!0,this.handleDate(t,e),this.trigger(e?"dateReset":"dateSet",t)},unsetDate:function(){this.isDateSet&&(this.isDateSet=!1,this.handleDateUnset(),this.trigger("dateUnset"))},handleDate:function(t,e){var n=this;this.unbindEvents(),this.requestDateRender(t).then(function(){n.bindEvents()})},handleDateUnset:function(){this.unbindEvents(),this.requestDateUnrender()},requestDateRender:function(t){var e=this;return this.dateRenderQueue.add(function(){return e.executeDateRender(t)})},requestDateUnrender:function(){var t=this;return this.dateRenderQueue.add(function(){return t.executeDateUnrender()})},executeDateRender:function(t){var e=this;return t?this.captureInitialScroll():this.captureScroll(),this.freezeHeight(),this.executeDateUnrender().then(function(){t&&e.setRange(e.computeRange(t)),e.render&&e.render(),e.renderDates(),e.updateSize(),e.renderBusinessHours(),e.startNowIndicator(),e.thawHeight(),e.releaseScroll(),e.isDateRendered=!0,e.onDateRender(),e.trigger("dateRender")})},executeDateUnrender:function(){var t=this;return t.isDateRendered?this.requestEventsUnrender().then(function(){t.unselect(),t.stopNowIndicator(),t.triggerUnrender(),t.unrenderBusinessHours(),t.unrenderDates(),t.destroy&&t.destroy(),t.isDateRendered=!1,t.trigger("dateUnrender")}):ft.resolve()},onDateRender:function(){this.triggerRender()},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.publiclyTrigger("viewRender",this,this,this.el)},triggerUnrender:function(){this.publiclyTrigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(se.get(),{touchstart:this.processUnselect,mousedown:this.handleDocumentMousedown})},unbindGlobalHandlers:function(){this.stopListeningTo(se.get())},initThemingProps:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var t,n,i,r=this;this.opt("nowIndicator")&&(t=this.getNowIndicatorUnit(),t&&(n=lt(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,i=this.initialNowDate.clone().startOf(t).add(1,t)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){r.nowIndicatorTimeoutID=null,n(),i=+e.duration(1,t),i=Math.max(100,i),r.nowIndicatorIntervalID=setInterval(n,i)},i)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(t){},unrenderNowIndicator:function(){},updateSize:function(t){t&&this.captureScroll(),this.updateHeight(t),this.updateWidth(t),this.updateNowIndicator(),t&&this.releaseScroll()},updateWidth:function(t){},updateHeight:function(t){var e=this.calendar;this.setHeight(e.getSuggestedViewHeight(),e.isHeightAuto())},setHeight:function(t,e){},capturedScroll:null,capturedScrollDepth:0,captureScroll:function(){return!this.capturedScrollDepth++&&(this.capturedScroll=this.isDateRendered?this.queryScroll():{},!0)},captureInitialScroll:function(e){this.captureScroll()&&(this.capturedScroll.isInitial=!0,e?t.extend(this.capturedScroll,e):this.capturedScroll.isComputed=!0)},releaseScroll:function(){var e=this.capturedScroll,n=this.discardScroll();e.isComputed&&(n?t.extend(e,this.computeInitialScroll()):e=null),e&&(e.isInitial?this.hardSetScroll(e):this.setScroll(e))},discardScroll:function(){return!--this.capturedScrollDepth&&(this.capturedScroll=null,!0)},computeInitialScroll:function(){return{}},queryScroll:function(){return{}},hardSetScroll:function(t){var e=this,n=function(){e.setScroll(t)};n(),setTimeout(n,0)},setScroll:function(t){},freezeHeight:function(){this.calendar.freezeContentHeight()},thawHeight:function(){this.calendar.thawContentHeight()},bindEvents:function(){var t=this;this.isEventsBound||(this.isEventsBound=!0,this.rejectOn("eventsUnbind",this.requestEvents()).then(function(e){t.listenTo(t.calendar,"eventsReset",t.setEvents),t.setEvents(e)}))},unbindEvents:function(){this.isEventsBound&&(this.isEventsBound=!1,this.stopListeningTo(this.calendar,"eventsReset"),this.unsetEvents(),this.trigger("eventsUnbind"))},setEvents:function(t){var e=this.isEventSet;this.isEventsSet=!0,this.handleEvents(t,e),this.trigger(e?"eventsReset":"eventsSet",t)},unsetEvents:function(){this.isEventsSet&&(this.isEventsSet=!1,this.handleEventsUnset(),this.trigger("eventsUnset"))},whenEventsSet:function(){var t=this;return this.isEventsSet?ft.resolve(this.getCurrentEvents()):new ft(function(e){t.one("eventsSet",e)})},handleEvents:function(t,e){this.requestEventsRender(t)},handleEventsUnset:function(){this.requestEventsUnrender()},requestEventsRender:function(t){var e=this;return this.eventRenderQueue.add(function(){return e.executeEventsRender(t)})},requestEventsUnrender:function(){var t=this;return this.isEventsRendered?this.eventRenderQueue.addQuickly(function(){return t.executeEventsUnrender()}):ft.resolve()},requestCurrentEventsRender:function(){return this.isEventsSet?void this.requestEventsRender(this.getCurrentEvents()):ft.reject()},executeEventsRender:function(t){var e=this;return this.captureScroll(),this.freezeHeight(),this.executeEventsUnrender().then(function(){e.renderEvents(t),e.thawHeight(),e.releaseScroll(),e.isEventsRendered=!0,e.onEventsRender(),e.trigger("eventsRender")})},executeEventsUnrender:function(){return this.isEventsRendered&&(this.onBeforeEventsUnrender(),this.captureScroll(),this.freezeHeight(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.thawHeight(),this.releaseScroll(),this.isEventsRendered=!1,this.trigger("eventsUnrender")),ft.resolve()},onEventsRender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger("eventAfterRender",t.event,t.event,t.el)}),this.publiclyTrigger("eventAfterAllRender")},onBeforeEventsUnrender:function(){this.renderedEventSegEach(function(t){this.publiclyTrigger("eventDestroy",t.event,t.event,t.el)})},renderEvents:function(t){},unrenderEvents:function(){},requestEvents:function(){return this.calendar.requestEvents(this.start,this.end)},getCurrentEvents:function(){return this.calendar.getPrunedEventCache()},resolveEventEl:function(e,n){var i=this.publiclyTrigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.renderedEventSegEach(function(t){t.el.css("visibility","hidden")},t)},renderedEventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;n=this.nextDayThreshold&&r.add(1,"days")),(!i||r<=n)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}}),he=Ot.Scroller=ct.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(t){t=t||{},this.overflowX=t.overflowX||t.overflow||"auto",this.overflowY=t.overflowY||t.overflow||"auto"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=t('
')},clear:function(){this.setHeight("auto"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},lockOverflow:function(t){var e=this.overflowX,n=this.overflowY;t=t||this.getScrollbarWidths(),"auto"===e&&(e=t.top||t.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===n&&(n=t.left||t.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":e,"overflow-y":n})},setHeight:function(t){this.scrollEl.height(t)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(t){this.scrollEl.scrollTop(t)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return p(this.scrollEl)}});Lt.prototype.proxyCall=function(t){var e=Array.prototype.slice.call(arguments,1),n=[];return this.items.forEach(function(i){n.push(i[t].apply(i,e))}),n};var fe=Ot.Calendar=ct.extend({dirDefaults:null,localeDefaults:null,overrides:null,dynamicOverrides:null,options:null,viewSpecCache:null,view:null,header:null,footer:null,loadingLevel:0,constructor:Bt,initialize:function(){},populateOptionsHash:function(){var t,e,i,r;t=J(this.dynamicOverrides.locale,this.overrides.locale),e=ge[t],e||(t=fe.defaults.locale,e=ge[t]||{}),i=J(this.dynamicOverrides.isRTL,this.overrides.isRTL,e.isRTL,fe.defaults.isRTL),r=i?fe.rtlDefaults:{},this.dirDefaults=r,this.localeDefaults=e,this.options=n([fe.defaults,r,e,this.overrides,this.dynamicOverrides]),Nt(this.options)},getViewSpec:function(t){var e=this.viewSpecCache;return e[t]||(e[t]=this.buildViewSpec(t))},getUnitViewSpec:function(e){var n,i,r;if(t.inArray(e,Yt)!=-1)for(n=this.header.getViewsWithButtons(),t.each(Ot.views,function(t){n.push(t)}),i=0;i=n&&e.end<=i},fe.prototype.getPeerEvents=function(t,e){var n,i,r=this.getEventCache(),s=[];for(n=0;nn};var we={id:"_fcBusinessHours",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"};fe.prototype.getCurrentBusinessHourEvents=function(t){return this.computeBusinessHourEvents(t,this.options.businessHours)},fe.prototype.computeBusinessHourEvents=function(e,n){return n===!0?this.expandBusinessHourEvents(e,[{}]):t.isPlainObject(n)?this.expandBusinessHourEvents(e,[n]):t.isArray(n)?this.expandBusinessHourEvents(e,n,!0):[]},fe.prototype.expandBusinessHourEvents=function(e,n,i){var r,s,o=this.getView(),l=[];for(r=0;r1,this.opt("weekNumbers")&&(this.opt("weekNumbersWithinDays")?(this.cellWeekNumbersVisible=!0,this.colWeekNumbersVisible=!1):(this.cellWeekNumbersVisible=!1,this.colWeekNumbersVisible=!0)),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.cellWeekNumbersVisible||this.colWeekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-day-grid-container"),n=t('
').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.dayGrid.setElement(n),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.dayGrid.unrenderBusinessHours()},renderSkeletonHtml:function(){return'
'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.colWeekNumbersVisible&&(this.weekNumberWidth=u(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,s,o=this.opt("eventLimit");this.scroller.clear(),r(this.headRowEl),this.dayGrid.removeSegPopover(),o&&"number"==typeof o&&this.dayGrid.limitRows(o),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),o&&"number"!=typeof o&&this.dayGrid.limitRows(o),e||(this.scroller.setHeight(n),s=this.scroller.getScrollbarWidths(),(s.left||s.right)&&(i(this.headRowEl,s),n=this.computeScrollerHeight(t),this.scroller.setHeight(n)),this.scroller.lockOverflow(s))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el)},setGridHeight:function(t,e){e?a(this.dayGrid.rowEls):l(this.dayGrid.rowEls,t,!0)},computeInitialScroll:function(){return{top:0}},queryScroll:function(){return{top:this.scroller.getScrollTop()}},setScroll:function(t){this.scroller.setScrollTop(t.top)},hitsNeeded:function(){this.dayGrid.hitsNeeded()},hitsNotNeeded:function(){this.dayGrid.hitsNotNeeded()},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(t,e){return this.dayGrid.queryHit(t,e)},getHitSpan:function(t){return this.dayGrid.getHitSpan(t)},getHitEl:function(t){return this.dayGrid.getHitEl(t)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),be={renderHeadIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'"+tt(t.opt("weekNumberTitle"))+"":""},renderNumberIntroHtml:function(t){var e=this.view,n=this.getCellDate(t,0);return e.colWeekNumbersVisible?'"+e.buildGotoAnchorHtml({date:n,type:"week",forceOff:1===this.colCnt},n.format("w"))+"":""},renderBgIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'":""},renderIntroHtml:function(){var t=this.view;return t.colWeekNumbersVisible?'":""}},De=Ot.MonthView=Ee.extend({computeRange:function(t){var e,n=Ee.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&(e=Math.ceil(n.end.diff(n.start,"weeks",!0)),n.end.add(6-e,"weeks")),n},setGridHeight:function(t,e){e&&(t*=this.rowCnt/6),l(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){return this.opt("fixedWeekCount")}});At.basic={class:Ee},At.basicDay={type:"basic",duration:{days:1}},At.basicWeek={type:"basic",duration:{weeks:1}},At.month={class:De,duration:{months:1},defaults:{fixedWeekCount:!0}};var Te=Ot.AgendaView=de.extend({scroller:null,timeGridClass:ce,timeGrid:null,dayGridClass:ue,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new he({overflowX:"hidden",overflowY:"auto"})},instantiateTimeGrid:function(){var t=this.timeGridClass.extend(Ce);return new t(this)},instantiateDayGrid:function(){var t=this.dayGridClass.extend(He);return new t(this)},setRange:function(t){de.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var e=this.scroller.el.addClass("fc-time-grid-container"),n=t('
').appendTo(e);this.el.find(".fc-body > tr > td").append(e),this.timeGrid.setElement(n),this.timeGrid.renderDates(),this.bottomRuleEl=t('
').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'
'+(this.dayGrid?'

':"")+"
"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(t){this.timeGrid.renderNowIndicator(t)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(t){this.timeGrid.updateSize(t),de.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=u(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,s,o;this.bottomRuleEl.hide(),this.scroller.clear(),r(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=xe),n&&this.dayGrid.limitRows(n)),e||(s=this.computeScrollerHeight(t),this.scroller.setHeight(s),o=this.scroller.getScrollbarWidths(),(o.left||o.right)&&(i(this.noScrollRowEls,o),s=this.computeScrollerHeight(t),this.scroller.setHeight(s)),this.scroller.lockOverflow(o),this.timeGrid.getTotalSlatHeight()"+e.buildGotoAnchorHtml({date:this.start,type:"week",forceOff:this.colCnt>1},tt(t))+""):'"},renderBgIntroHtml:function(){var t=this.view;return'"},renderIntroHtml:function(){var t=this.view;return'"}},He={renderBgIntroHtml:function(){var t=this.view;return'"+t.getAllDayHtml()+""},renderIntroHtml:function(){var t=this.view;return'"}},xe=5,Re=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];At.agenda={class:Te,defaults:{allDaySlot:!0,slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},At.agendaDay={type:"agenda",duration:{days:1}},At.agendaWeek={type:"agenda",duration:{weeks:1}};var Ie=de.extend({grid:null,scroller:null,initialize:function(){this.grid=new ke(this),this.scroller=new he({overflowX:"hidden",overflowY:"auto"})},setRange:function(t){de.prototype.setRange.call(this,t),this.grid.setRange(t)},renderSkeleton:function(){this.el.addClass("fc-list-view "+this.widgetContentClass),this.scroller.render(),this.scroller.el.appendTo(this.el),this.grid.setElement(this.scroller.scrollEl)},unrenderSkeleton:function(){this.scroller.destroy()},setHeight:function(t,e){this.scroller.setHeight(this.computeScrollerHeight(t))},computeScrollerHeight:function(t){return t-c(this.el,this.scroller.el)},renderEvents:function(t){this.grid.renderEvents(t)},unrenderEvents:function(){this.grid.unrenderEvents()},isEventResizable:function(t){return!1},isEventDraggable:function(t){return!1}}),ke=le.extend({segSelector:".fc-list-item",hasDayInteractions:!1,spanToSegs:function(t){for(var e,n=this.view,i=n.start.clone().time(0),r=0,s=[];i
'+tt(this.view.opt("noEventsMessage"))+"
")},renderSegList:function(e){var n,i,r,s=this.groupSegsByDay(e),o=t('
'),l=o.find("tbody");for(n=0;n'+(n?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-main"},tt(t.format(n))):"")+(i?e.buildGotoAnchorHtml(t,{class:"fc-list-heading-alt"},tt(t.format(i))):"")+""},fgSegHtml:function(t){var e,n=this.view,i=["fc-list-item"].concat(this.getSegCustomClasses(t)),r=this.getSegBackgroundColor(t),s=t.event,o=s.url;return e=s.allDay?n.getAllDayHtml():n.isMultiDayEvent(s)?t.isStart||t.isEnd?tt(this.getEventTimeText(t)):n.getAllDayHtml():tt(this.getEventTimeText(s)),o&&i.push("fc-has-url"),''+(this.displayEventTime?''+(e||"")+"":"")+'"+tt(t.event.title||"")+""}});return At.list={class:Ie,buttonTextKey:"list",defaults:{buttonText:"list",listDayFormat:"LL",noEventsMessage:"No events to display"}},At.listDay={type:"list",duration:{days:1},defaults:{listDayFormat:"dddd"}},At.listWeek={type:"list",duration:{weeks:1},defaults:{listDayFormat:"dddd",listDayAltFormat:"LL"}},At.listMonth={type:"list",duration:{month:1},defaults:{listDayAltFormat:"dddd"}},At.listYear={type:"list",duration:{year:1},defaults:{listDayAltFormat:"dddd"}},Ot}); \ No newline at end of file diff --git a/web/bsadmin/assets/js/lib/chart-js/Chart.bundle.js b/web/bsadmin/assets/js/lib/chart-js/Chart.bundle.js deleted file mode 100644 index dbcab8a..0000000 --- a/web/bsadmin/assets/js/lib/chart-js/Chart.bundle.js +++ /dev/null @@ -1,15855 +0,0 @@ -/*! - * Chart.js - * http://chartjs.org/ - * Version: 2.4.0 - * - * Copyright 2016 Nick Downie - * Released under the MIT license - * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md - */ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o lum2) { - return (lum1 + 0.05) / (lum2 + 0.05); - } - return (lum2 + 0.05) / (lum1 + 0.05); - }, - - level: function (color2) { - var contrastRatio = this.contrast(color2); - if (contrastRatio >= 7.1) { - return 'AAA'; - } - - return (contrastRatio >= 4.5) ? 'AA' : ''; - }, - - dark: function () { - // YIQ equation from http://24ways.org/2010/calculating-color-contrast - var rgb = this.values.rgb; - var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; - return yiq < 128; - }, - - light: function () { - return !this.dark(); - }, - - negate: function () { - var rgb = []; - for (var i = 0; i < 3; i++) { - rgb[i] = 255 - this.values.rgb[i]; - } - this.setValues('rgb', rgb); - return this; - }, - - lighten: function (ratio) { - var hsl = this.values.hsl; - hsl[2] += hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - darken: function (ratio) { - var hsl = this.values.hsl; - hsl[2] -= hsl[2] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - saturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] += hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - desaturate: function (ratio) { - var hsl = this.values.hsl; - hsl[1] -= hsl[1] * ratio; - this.setValues('hsl', hsl); - return this; - }, - - whiten: function (ratio) { - var hwb = this.values.hwb; - hwb[1] += hwb[1] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - blacken: function (ratio) { - var hwb = this.values.hwb; - hwb[2] += hwb[2] * ratio; - this.setValues('hwb', hwb); - return this; - }, - - greyscale: function () { - var rgb = this.values.rgb; - // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale - var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; - this.setValues('rgb', [val, val, val]); - return this; - }, - - clearer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha - (alpha * ratio)); - return this; - }, - - opaquer: function (ratio) { - var alpha = this.values.alpha; - this.setValues('alpha', alpha + (alpha * ratio)); - return this; - }, - - rotate: function (degrees) { - var hsl = this.values.hsl; - var hue = (hsl[0] + degrees) % 360; - hsl[0] = hue < 0 ? 360 + hue : hue; - this.setValues('hsl', hsl); - return this; - }, - - /** - * Ported from sass implementation in C - * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 - */ - mix: function (mixinColor, weight) { - var color1 = this; - var color2 = mixinColor; - var p = weight === undefined ? 0.5 : weight; - - var w = 2 * p - 1; - var a = color1.alpha() - color2.alpha(); - - var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; - var w2 = 1 - w1; - - return this - .rgb( - w1 * color1.red() + w2 * color2.red(), - w1 * color1.green() + w2 * color2.green(), - w1 * color1.blue() + w2 * color2.blue() - ) - .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); - }, - - toJSON: function () { - return this.rgb(); - }, - - clone: function () { - // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, - // making the final build way to big to embed in Chart.js. So let's do it manually, - // assuming that values to clone are 1 dimension arrays containing only numbers, - // except 'alpha' which is a number. - var result = new Color(); - var source = this.values; - var target = result.values; - var value, type; - - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - value = source[prop]; - type = ({}).toString.call(value); - if (type === '[object Array]') { - target[prop] = value.slice(0); - } else if (type === '[object Number]') { - target[prop] = value; - } else { - console.error('unexpected color value:', value); - } - } - } - - return result; - } -}; - -Color.prototype.spaces = { - rgb: ['red', 'green', 'blue'], - hsl: ['hue', 'saturation', 'lightness'], - hsv: ['hue', 'saturation', 'value'], - hwb: ['hue', 'whiteness', 'blackness'], - cmyk: ['cyan', 'magenta', 'yellow', 'black'] -}; - -Color.prototype.maxes = { - rgb: [255, 255, 255], - hsl: [360, 100, 100], - hsv: [360, 100, 100], - hwb: [360, 100, 100], - cmyk: [100, 100, 100, 100] -}; - -Color.prototype.getValues = function (space) { - var values = this.values; - var vals = {}; - - for (var i = 0; i < space.length; i++) { - vals[space.charAt(i)] = values[space][i]; - } - - if (values.alpha !== 1) { - vals.a = values.alpha; - } - - // {r: 255, g: 255, b: 255, a: 0.4} - return vals; -}; - -Color.prototype.setValues = function (space, vals) { - var values = this.values; - var spaces = this.spaces; - var maxes = this.maxes; - var alpha = 1; - var i; - - if (space === 'alpha') { - alpha = vals; - } else if (vals.length) { - // [10, 10, 10] - values[space] = vals.slice(0, space.length); - alpha = vals[space.length]; - } else if (vals[space.charAt(0)] !== undefined) { - // {r: 10, g: 10, b: 10} - for (i = 0; i < space.length; i++) { - values[space][i] = vals[space.charAt(i)]; - } - - alpha = vals.a; - } else if (vals[spaces[space][0]] !== undefined) { - // {red: 10, green: 10, blue: 10} - var chans = spaces[space]; - - for (i = 0; i < space.length; i++) { - values[space][i] = vals[chans[i]]; - } - - alpha = vals.alpha; - } - - values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); - - if (space === 'alpha') { - return false; - } - - var capped; - - // cap values of the space prior converting all values - for (i = 0; i < space.length; i++) { - capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); - values[space][i] = Math.round(capped); - } - - // convert to all the other color spaces - for (var sname in spaces) { - if (sname !== space) { - values[sname] = convert[space][sname](values[space]); - } - } - - return true; -}; - -Color.prototype.setSpace = function (space, args) { - var vals = args[0]; - - if (vals === undefined) { - // color.rgb() - return this.getValues(space); - } - - // color.rgb(10, 10, 10) - if (typeof vals === 'number') { - vals = Array.prototype.slice.call(args); - } - - this.setValues(space, vals); - return this; -}; - -Color.prototype.setChannel = function (space, index, val) { - var svalues = this.values[space]; - if (val === undefined) { - // color.red() - return svalues[index]; - } else if (val === svalues[index]) { - // color.red(color.red()) - return this; - } - - // color.red(100) - svalues[index] = val; - this.setValues(space, svalues); - - return this; -}; - -if (typeof window !== 'undefined') { - window.Color = Color; -} - -module.exports = Color; - -},{"1":1,"4":4}],3:[function(require,module,exports){ -/* MIT license */ - -module.exports = { - rgb2hsl: rgb2hsl, - rgb2hsv: rgb2hsv, - rgb2hwb: rgb2hwb, - rgb2cmyk: rgb2cmyk, - rgb2keyword: rgb2keyword, - rgb2xyz: rgb2xyz, - rgb2lab: rgb2lab, - rgb2lch: rgb2lch, - - hsl2rgb: hsl2rgb, - hsl2hsv: hsl2hsv, - hsl2hwb: hsl2hwb, - hsl2cmyk: hsl2cmyk, - hsl2keyword: hsl2keyword, - - hsv2rgb: hsv2rgb, - hsv2hsl: hsv2hsl, - hsv2hwb: hsv2hwb, - hsv2cmyk: hsv2cmyk, - hsv2keyword: hsv2keyword, - - hwb2rgb: hwb2rgb, - hwb2hsl: hwb2hsl, - hwb2hsv: hwb2hsv, - hwb2cmyk: hwb2cmyk, - hwb2keyword: hwb2keyword, - - cmyk2rgb: cmyk2rgb, - cmyk2hsl: cmyk2hsl, - cmyk2hsv: cmyk2hsv, - cmyk2hwb: cmyk2hwb, - cmyk2keyword: cmyk2keyword, - - keyword2rgb: keyword2rgb, - keyword2hsl: keyword2hsl, - keyword2hsv: keyword2hsv, - keyword2hwb: keyword2hwb, - keyword2cmyk: keyword2cmyk, - keyword2lab: keyword2lab, - keyword2xyz: keyword2xyz, - - xyz2rgb: xyz2rgb, - xyz2lab: xyz2lab, - xyz2lch: xyz2lch, - - lab2xyz: lab2xyz, - lab2rgb: lab2rgb, - lab2lch: lab2lch, - - lch2lab: lch2lab, - lch2xyz: lch2xyz, - lch2rgb: lch2rgb -} - - -function rgb2hsl(rgb) { - var r = rgb[0]/255, - g = rgb[1]/255, - b = rgb[2]/255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, l; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g)/ delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - l = (min + max) / 2; - - if (max == min) - s = 0; - else if (l <= 0.5) - s = delta / (max + min); - else - s = delta / (2 - max - min); - - return [h, s * 100, l * 100]; -} - -function rgb2hsv(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - min = Math.min(r, g, b), - max = Math.max(r, g, b), - delta = max - min, - h, s, v; - - if (max == 0) - s = 0; - else - s = (delta/max * 1000)/10; - - if (max == min) - h = 0; - else if (r == max) - h = (g - b) / delta; - else if (g == max) - h = 2 + (b - r) / delta; - else if (b == max) - h = 4 + (r - g) / delta; - - h = Math.min(h * 60, 360); - - if (h < 0) - h += 360; - - v = ((max / 255) * 1000) / 10; - - return [h, s, v]; -} - -function rgb2hwb(rgb) { - var r = rgb[0], - g = rgb[1], - b = rgb[2], - h = rgb2hsl(rgb)[0], - w = 1/255 * Math.min(r, Math.min(g, b)), - b = 1 - 1/255 * Math.max(r, Math.max(g, b)); - - return [h, w * 100, b * 100]; -} - -function rgb2cmyk(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255, - c, m, y, k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - return [c * 100, m * 100, y * 100, k * 100]; -} - -function rgb2keyword(rgb) { - return reverseKeywords[JSON.stringify(rgb)]; -} - -function rgb2xyz(rgb) { - var r = rgb[0] / 255, - g = rgb[1] / 255, - b = rgb[2] / 255; - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - - return [x * 100, y *100, z * 100]; -} - -function rgb2lab(rgb) { - var xyz = rgb2xyz(rgb), - x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -} - -function rgb2lch(args) { - return lab2lch(rgb2lab(args)); -} - -function hsl2rgb(hsl) { - var h = hsl[0] / 360, - s = hsl[1] / 100, - l = hsl[2] / 100, - t1, t2, t3, rgb, val; - - if (s == 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) - t2 = l * (1 + s); - else - t2 = l + s - l * s; - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * - (i - 1); - t3 < 0 && t3++; - t3 > 1 && t3--; - - if (6 * t3 < 1) - val = t1 + (t2 - t1) * 6 * t3; - else if (2 * t3 < 1) - val = t2; - else if (3 * t3 < 2) - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - else - val = t1; - - rgb[i] = val * 255; - } - - return rgb; -} - -function hsl2hsv(hsl) { - var h = hsl[0], - s = hsl[1] / 100, - l = hsl[2] / 100, - sv, v; - - if(l === 0) { - // no need to do calc on black - // also avoids divide by 0 error - return [0, 0, 0]; - } - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - v = (l + s) / 2; - sv = (2 * s) / (l + s); - return [h, sv * 100, v * 100]; -} - -function hsl2hwb(args) { - return rgb2hwb(hsl2rgb(args)); -} - -function hsl2cmyk(args) { - return rgb2cmyk(hsl2rgb(args)); -} - -function hsl2keyword(args) { - return rgb2keyword(hsl2rgb(args)); -} - - -function hsv2rgb(hsv) { - var h = hsv[0] / 60, - s = hsv[1] / 100, - v = hsv[2] / 100, - hi = Math.floor(h) % 6; - - var f = h - Math.floor(h), - p = 255 * v * (1 - s), - q = 255 * v * (1 - (s * f)), - t = 255 * v * (1 - (s * (1 - f))), - v = 255 * v; - - switch(hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -} - -function hsv2hsl(hsv) { - var h = hsv[0], - s = hsv[1] / 100, - v = hsv[2] / 100, - sl, l; - - l = (2 - s) * v; - sl = s * v; - sl /= (l <= 1) ? l : 2 - l; - sl = sl || 0; - l /= 2; - return [h, sl * 100, l * 100]; -} - -function hsv2hwb(args) { - return rgb2hwb(hsv2rgb(args)) -} - -function hsv2cmyk(args) { - return rgb2cmyk(hsv2rgb(args)); -} - -function hsv2keyword(args) { - return rgb2keyword(hsv2rgb(args)); -} - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -function hwb2rgb(hwb) { - var h = hwb[0] / 360, - wh = hwb[1] / 100, - bl = hwb[2] / 100, - ratio = wh + bl, - i, v, f, n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - if ((i & 0x01) != 0) { - f = 1 - f; - } - n = wh + f * (v - wh); // linear interpolation - - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; -} - -function hwb2hsl(args) { - return rgb2hsl(hwb2rgb(args)); -} - -function hwb2hsv(args) { - return rgb2hsv(hwb2rgb(args)); -} - -function hwb2cmyk(args) { - return rgb2cmyk(hwb2rgb(args)); -} - -function hwb2keyword(args) { - return rgb2keyword(hwb2rgb(args)); -} - -function cmyk2rgb(cmyk) { - var c = cmyk[0] / 100, - m = cmyk[1] / 100, - y = cmyk[2] / 100, - k = cmyk[3] / 100, - r, g, b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - return [r * 255, g * 255, b * 255]; -} - -function cmyk2hsl(args) { - return rgb2hsl(cmyk2rgb(args)); -} - -function cmyk2hsv(args) { - return rgb2hsv(cmyk2rgb(args)); -} - -function cmyk2hwb(args) { - return rgb2hwb(cmyk2rgb(args)); -} - -function cmyk2keyword(args) { - return rgb2keyword(cmyk2rgb(args)); -} - - -function xyz2rgb(xyz) { - var x = xyz[0] / 100, - y = xyz[1] / 100, - z = xyz[2] / 100, - r, g, b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - - // assume sRGB - r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r = (r * 12.92); - - g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g = (g * 12.92); - - b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b = (b * 12.92); - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - - return [r * 255, g * 255, b * 255]; -} - -function xyz2lab(xyz) { - var x = xyz[0], - y = xyz[1], - z = xyz[2], - l, a, b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -} - -function xyz2lch(args) { - return lab2lch(xyz2lab(args)); -} - -function lab2xyz(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - x, y, z, y2; - - if (l <= 8) { - y = (l * 100) / 903.3; - y2 = (7.787 * (y / 100)) + (16 / 116); - } else { - y = 100 * Math.pow((l + 16) / 116, 3); - y2 = Math.pow(y / 100, 1/3); - } - - x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); - - z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); - - return [x, y, z]; -} - -function lab2lch(lab) { - var l = lab[0], - a = lab[1], - b = lab[2], - hr, h, c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - if (h < 0) { - h += 360; - } - c = Math.sqrt(a * a + b * b); - return [l, c, h]; -} - -function lab2rgb(args) { - return xyz2rgb(lab2xyz(args)); -} - -function lch2lab(lch) { - var l = lch[0], - c = lch[1], - h = lch[2], - a, b, hr; - - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - return [l, a, b]; -} - -function lch2xyz(args) { - return lab2xyz(lch2lab(args)); -} - -function lch2rgb(args) { - return lab2rgb(lch2lab(args)); -} - -function keyword2rgb(keyword) { - return cssKeywords[keyword]; -} - -function keyword2hsl(args) { - return rgb2hsl(keyword2rgb(args)); -} - -function keyword2hsv(args) { - return rgb2hsv(keyword2rgb(args)); -} - -function keyword2hwb(args) { - return rgb2hwb(keyword2rgb(args)); -} - -function keyword2cmyk(args) { - return rgb2cmyk(keyword2rgb(args)); -} - -function keyword2lab(args) { - return rgb2lab(keyword2rgb(args)); -} - -function keyword2xyz(args) { - return rgb2xyz(keyword2rgb(args)); -} - -var cssKeywords = { - aliceblue: [240,248,255], - antiquewhite: [250,235,215], - aqua: [0,255,255], - aquamarine: [127,255,212], - azure: [240,255,255], - beige: [245,245,220], - bisque: [255,228,196], - black: [0,0,0], - blanchedalmond: [255,235,205], - blue: [0,0,255], - blueviolet: [138,43,226], - brown: [165,42,42], - burlywood: [222,184,135], - cadetblue: [95,158,160], - chartreuse: [127,255,0], - chocolate: [210,105,30], - coral: [255,127,80], - cornflowerblue: [100,149,237], - cornsilk: [255,248,220], - crimson: [220,20,60], - cyan: [0,255,255], - darkblue: [0,0,139], - darkcyan: [0,139,139], - darkgoldenrod: [184,134,11], - darkgray: [169,169,169], - darkgreen: [0,100,0], - darkgrey: [169,169,169], - darkkhaki: [189,183,107], - darkmagenta: [139,0,139], - darkolivegreen: [85,107,47], - darkorange: [255,140,0], - darkorchid: [153,50,204], - darkred: [139,0,0], - darksalmon: [233,150,122], - darkseagreen: [143,188,143], - darkslateblue: [72,61,139], - darkslategray: [47,79,79], - darkslategrey: [47,79,79], - darkturquoise: [0,206,209], - darkviolet: [148,0,211], - deeppink: [255,20,147], - deepskyblue: [0,191,255], - dimgray: [105,105,105], - dimgrey: [105,105,105], - dodgerblue: [30,144,255], - firebrick: [178,34,34], - floralwhite: [255,250,240], - forestgreen: [34,139,34], - fuchsia: [255,0,255], - gainsboro: [220,220,220], - ghostwhite: [248,248,255], - gold: [255,215,0], - goldenrod: [218,165,32], - gray: [128,128,128], - green: [0,128,0], - greenyellow: [173,255,47], - grey: [128,128,128], - honeydew: [240,255,240], - hotpink: [255,105,180], - indianred: [205,92,92], - indigo: [75,0,130], - ivory: [255,255,240], - khaki: [240,230,140], - lavender: [230,230,250], - lavenderblush: [255,240,245], - lawngreen: [124,252,0], - lemonchiffon: [255,250,205], - lightblue: [173,216,230], - lightcoral: [240,128,128], - lightcyan: [224,255,255], - lightgoldenrodyellow: [250,250,210], - lightgray: [211,211,211], - lightgreen: [144,238,144], - lightgrey: [211,211,211], - lightpink: [255,182,193], - lightsalmon: [255,160,122], - lightseagreen: [32,178,170], - lightskyblue: [135,206,250], - lightslategray: [119,136,153], - lightslategrey: [119,136,153], - lightsteelblue: [176,196,222], - lightyellow: [255,255,224], - lime: [0,255,0], - limegreen: [50,205,50], - linen: [250,240,230], - magenta: [255,0,255], - maroon: [128,0,0], - mediumaquamarine: [102,205,170], - mediumblue: [0,0,205], - mediumorchid: [186,85,211], - mediumpurple: [147,112,219], - mediumseagreen: [60,179,113], - mediumslateblue: [123,104,238], - mediumspringgreen: [0,250,154], - mediumturquoise: [72,209,204], - mediumvioletred: [199,21,133], - midnightblue: [25,25,112], - mintcream: [245,255,250], - mistyrose: [255,228,225], - moccasin: [255,228,181], - navajowhite: [255,222,173], - navy: [0,0,128], - oldlace: [253,245,230], - olive: [128,128,0], - olivedrab: [107,142,35], - orange: [255,165,0], - orangered: [255,69,0], - orchid: [218,112,214], - palegoldenrod: [238,232,170], - palegreen: [152,251,152], - paleturquoise: [175,238,238], - palevioletred: [219,112,147], - papayawhip: [255,239,213], - peachpuff: [255,218,185], - peru: [205,133,63], - pink: [255,192,203], - plum: [221,160,221], - powderblue: [176,224,230], - purple: [128,0,128], - rebeccapurple: [102, 51, 153], - red: [255,0,0], - rosybrown: [188,143,143], - royalblue: [65,105,225], - saddlebrown: [139,69,19], - salmon: [250,128,114], - sandybrown: [244,164,96], - seagreen: [46,139,87], - seashell: [255,245,238], - sienna: [160,82,45], - silver: [192,192,192], - skyblue: [135,206,235], - slateblue: [106,90,205], - slategray: [112,128,144], - slategrey: [112,128,144], - snow: [255,250,250], - springgreen: [0,255,127], - steelblue: [70,130,180], - tan: [210,180,140], - teal: [0,128,128], - thistle: [216,191,216], - tomato: [255,99,71], - turquoise: [64,224,208], - violet: [238,130,238], - wheat: [245,222,179], - white: [255,255,255], - whitesmoke: [245,245,245], - yellow: [255,255,0], - yellowgreen: [154,205,50] -}; - -var reverseKeywords = {}; -for (var key in cssKeywords) { - reverseKeywords[JSON.stringify(cssKeywords[key])] = key; -} - -},{}],4:[function(require,module,exports){ -var conversions = require(3); - -var convert = function() { - return new Converter(); -} - -for (var func in conversions) { - // export Raw versions - convert[func + "Raw"] = (function(func) { - // accept array or plain args - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - return conversions[func](arg); - } - })(func); - - var pair = /(\w+)2(\w+)/.exec(func), - from = pair[1], - to = pair[2]; - - // export rgb2hsl and ["rgb"]["hsl"] - convert[from] = convert[from] || {}; - - convert[from][to] = convert[func] = (function(func) { - return function(arg) { - if (typeof arg == "number") - arg = Array.prototype.slice.call(arguments); - - var val = conversions[func](arg); - if (typeof val == "string" || val === undefined) - return val; // keyword - - for (var i = 0; i < val.length; i++) - val[i] = Math.round(val[i]); - return val; - } - })(func); -} - - -/* Converter does lazy conversion and caching */ -var Converter = function() { - this.convs = {}; -}; - -/* Either get the values for a space or - set the values for a space, depending on args */ -Converter.prototype.routeSpace = function(space, args) { - var values = args[0]; - if (values === undefined) { - // color.rgb() - return this.getValues(space); - } - // color.rgb(10, 10, 10) - if (typeof values == "number") { - values = Array.prototype.slice.call(args); - } - - return this.setValues(space, values); -}; - -/* Set the values for a space, invalidating cache */ -Converter.prototype.setValues = function(space, values) { - this.space = space; - this.convs = {}; - this.convs[space] = values; - return this; -}; - -/* Get the values for a space. If there's already - a conversion for the space, fetch it, otherwise - compute it */ -Converter.prototype.getValues = function(space) { - var vals = this.convs[space]; - if (!vals) { - var fspace = this.space, - from = this.convs[fspace]; - vals = convert[fspace][space](from); - - this.convs[space] = vals; - } - return vals; -}; - -["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { - Converter.prototype[space] = function(vals) { - return this.routeSpace(space, arguments); - } -}); - -module.exports = convert; -},{"3":3}],5:[function(require,module,exports){ -module.exports = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; -},{}],6:[function(require,module,exports){ -//! moment.js -//! version : 2.16.0 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com - -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, (function () { 'use strict'; - -var hookCallback; - -function hooks () { - return hookCallback.apply(null, arguments); -} - -// This is done to register the method called with moment() -// without creating circular dependencies. -function setHookCallback (callback) { - hookCallback = callback; -} - -function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; -} - -function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return input != null && Object.prototype.toString.call(input) === '[object Object]'; -} - -function isObjectEmpty(obj) { - var k; - for (k in obj) { - // even if its not own property I'd still call it non-empty - return false; - } - return true; -} - -function isNumber(input) { - return typeof value === 'number' || Object.prototype.toString.call(input) === '[object Number]'; -} - -function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; -} - -function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; -} - -function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); -} - -function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; -} - -function createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); -} - -function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null - }; -} - -function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; -} - -var some; -if (Array.prototype.some) { - some = Array.prototype.some; -} else { - some = function (fun) { - var t = Object(this); - var len = t.length >>> 0; - - for (var i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } - - return false; - }; -} - -var some$1 = some; - -function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some$1.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - - if (m._strict) { - isNowValid = isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } - else { - return isNowValid; - } - } - return m._isValid; -} - -function createInvalid (flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; -} - -function isUndefined(input) { - return input === void 0; -} - -// Plugins that add properties should also add the key here (null value), -// so we can properly clone ourselves. -var momentProperties = hooks.momentProperties = []; - -function copyConfig(to, from) { - var i, prop, val; - - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i in momentProperties) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } - - return to; -} - -var updateInProgress = false; - -// Moment prototype object -function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } -} - -function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); -} - -function absFloor (number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } -} - -function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; -} - -// compare two arrays, return the number of differences -function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; -} - -function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); - } -} - -function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); -} - -var deprecations = {}; - -function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } -} - -hooks.suppressDeprecationWarnings = false; -hooks.deprecationHandler = null; - -function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; -} - -function set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); -} - -function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; - } - } - } - for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); - } - } - return res; -} - -function Locale(config) { - if (config != null) { - this.set(config); - } -} - -var keys; - -if (Object.keys) { - keys = Object.keys; -} else { - keys = function (obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; -} - -var keys$1 = keys; - -var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' -}; - -function calendar (key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; -} - -var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' -}; - -function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; -} - -var defaultInvalidDate = 'Invalid date'; - -function invalidDate () { - return this._invalidDate; -} - -var defaultOrdinal = '%d'; -var defaultOrdinalParse = /\d{1,2}/; - -function ordinal (number) { - return this._ordinal.replace('%d', number); -} - -var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' -}; - -function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); -} - -function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); -} - -var aliases = {}; - -function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; -} - -function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; -} - -function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; -} - -var priorities = {}; - -function addUnitPriority(unit, priority) { - priorities[unit] = priority; -} - -function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; -} - -function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; -} - -function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; -} - -function set$1 (mom, unit, value) { - if (mom.isValid()) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } -} - -// MOMENTS - -function stringGet (units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; -} - - -function stringSet (units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; -} - -function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; -} - -var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - -var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - -var formatFunctions = {}; - -var formatTokenFunctions = {}; - -// token: 'M' -// padded: ['MM', 2] -// ordinal: 'Mo' -// callback: function () { this.month() + 1 } -function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } -} - -function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); -} - -function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = '', i; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; - } - return output; - }; -} - -// format date using native date object -function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); -} - -function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; -} - -var match1 = /\d/; // 0 - 9 -var match2 = /\d\d/; // 00 - 99 -var match3 = /\d{3}/; // 000 - 999 -var match4 = /\d{4}/; // 0000 - 9999 -var match6 = /[+-]?\d{6}/; // -999999 - 999999 -var match1to2 = /\d\d?/; // 0 - 99 -var match3to4 = /\d\d\d\d?/; // 999 - 9999 -var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 -var match1to3 = /\d{1,3}/; // 0 - 999 -var match1to4 = /\d{1,4}/; // 0 - 9999 -var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - -var matchUnsigned = /\d+/; // 0 - inf -var matchSigned = /[+-]?\d+/; // -inf - inf - -var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z -var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z - -var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - -// any word (or two) characters or numbers including two/three word month in arabic. -// includes scottish gaelic two word and hyphenated months -var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; - - -var regexes = {}; - -function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; -} - -function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); -} - -// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript -function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); -} - -function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); -} - -var tokens = {}; - -function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } -} - -function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); -} - -function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } -} - -var YEAR = 0; -var MONTH = 1; -var DATE = 2; -var HOUR = 3; -var MINUTE = 4; -var SECOND = 5; -var MILLISECOND = 6; -var WEEK = 7; -var WEEKDAY = 8; - -var indexOf; - -if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; -} else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; -} - -var indexOf$1 = indexOf; - -function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); -} - -// FORMATTING - -addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; -}); - -addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); -}); - -addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); -}); - -// ALIASES - -addUnitAlias('month', 'M'); - -// PRIORITY - -addUnitPriority('month', 8); - -// PARSING - -addRegexToken('M', match1to2); -addRegexToken('MM', match1to2, match2); -addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); -}); -addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); -}); - -addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; -}); - -addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } -}); - -// LOCALES - -var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; -var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); -function localeMonths (m, format) { - if (!m) { - return this._months; - } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; -} - -var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); -function localeMonthsShort (m, format) { - if (!m) { - return this._monthsShort; - } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; -} - -function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'MMM') { - ii = indexOf$1.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf$1.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } -} - -function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } -} - -// MOMENTS - -function setMonth (mom, value) { - var dayOfMonth; - - if (!mom.isValid()) { - // No op - return mom; - } - - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; - } - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; -} - -function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } -} - -function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); -} - -var defaultMonthsShortRegex = matchWord; -function monthsShortRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; - } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; - } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; - } -} - -var defaultMonthsRegex = matchWord; -function monthsRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; - } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; - } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; - } -} - -function computeMonthsParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); -} - -// FORMATTING - -addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; -}); - -addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; -}); - -addFormatToken(0, ['YYYY', 4], 0, 'year'); -addFormatToken(0, ['YYYYY', 5], 0, 'year'); -addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - -// ALIASES - -addUnitAlias('year', 'y'); - -// PRIORITIES - -addUnitPriority('year', 1); - -// PARSING - -addRegexToken('Y', matchSigned); -addRegexToken('YY', match1to2, match2); -addRegexToken('YYYY', match1to4, match4); -addRegexToken('YYYYY', match1to6, match6); -addRegexToken('YYYYYY', match1to6, match6); - -addParseToken(['YYYYY', 'YYYYYY'], YEAR); -addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); -}); -addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); -}); -addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); -}); - -// HELPERS - -function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; -} - -function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; -} - -// HOOKS - -hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); -}; - -// MOMENTS - -var getSetYear = makeGetSet('FullYear', true); - -function getIsLeapYear () { - return isLeapYear(this.year()); -} - -function createDate (y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); - - //the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { - date.setFullYear(y); - } - return date; -} - -function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - - //the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); - } - return date; -} - -// start-of-first-week - start-of-year -function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - - return -fwdlw + fwd - 1; -} - -//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday -function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; - - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } - - return { - year: resYear, - dayOfYear: resDayOfYear - }; -} - -function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; - - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } - - return { - week: resWeek, - year: resYear - }; -} - -function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; -} - -// FORMATTING - -addFormatToken('w', ['ww', 2], 'wo', 'week'); -addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - -// ALIASES - -addUnitAlias('week', 'w'); -addUnitAlias('isoWeek', 'W'); - -// PRIORITIES - -addUnitPriority('week', 5); -addUnitPriority('isoWeek', 5); - -// PARSING - -addRegexToken('w', match1to2); -addRegexToken('ww', match1to2, match2); -addRegexToken('W', match1to2); -addRegexToken('WW', match1to2, match2); - -addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); -}); - -// HELPERS - -// LOCALES - -function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; -} - -var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. -}; - -function localeFirstDayOfWeek () { - return this._week.dow; -} - -function localeFirstDayOfYear () { - return this._week.doy; -} - -// MOMENTS - -function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); -} - -function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); -} - -// FORMATTING - -addFormatToken('d', 0, 'do', 'day'); - -addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); -}); - -addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); -}); - -addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); -}); - -addFormatToken('e', 0, 0, 'weekday'); -addFormatToken('E', 0, 0, 'isoWeekday'); - -// ALIASES - -addUnitAlias('day', 'd'); -addUnitAlias('weekday', 'e'); -addUnitAlias('isoWeekday', 'E'); - -// PRIORITY -addUnitPriority('day', 11); -addUnitPriority('weekday', 11); -addUnitPriority('isoWeekday', 11); - -// PARSING - -addRegexToken('d', match1to2); -addRegexToken('e', match1to2); -addRegexToken('E', match1to2); -addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); -}); -addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); -}); -addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); -}); - -addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } -}); - -addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); -}); - -// HELPERS - -function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; -} - -function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; - } - return isNaN(input) ? null : input; -} - -// LOCALES - -var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); -function localeWeekdays (m, format) { - if (!m) { - return this._weekdays; - } - return isArray(this._weekdays) ? this._weekdays[m.day()] : - this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; -} - -var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); -function localeWeekdaysShort (m) { - return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; -} - -var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); -function localeWeekdaysMin (m) { - return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; -} - -function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; - - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'dddd') { - ii = indexOf$1.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf$1.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf$1.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf$1.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } -} - -function localeWeekdaysParse (weekdayName, format, strict) { - var i, mom, regex; - - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); - } - if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } -} - -// MOMENTS - -function getSetDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } -} - -function getSetLocaleDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); -} - -function getSetISODayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; - } -} - -var defaultWeekdaysRegex = matchWord; -function weekdaysRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; - } -} - -var defaultWeekdaysShortRegex = matchWord; -function weekdaysShortRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; - } -} - -var defaultWeekdaysMinRegex = matchWord; -function weekdaysMinRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; - } -} - - -function computeWeekdaysParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; - - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); -} - -// FORMATTING - -function hFormat() { - return this.hours() % 12 || 12; -} - -function kFormat() { - return this.hours() || 24; -} - -addFormatToken('H', ['HH', 2], 0, 'hour'); -addFormatToken('h', ['hh', 2], 0, hFormat); -addFormatToken('k', ['kk', 2], 0, kFormat); - -addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); -}); - -addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); -}); - -addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); -}); - -addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); -}); - -function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); -} - -meridiem('a', true); -meridiem('A', false); - -// ALIASES - -addUnitAlias('hour', 'h'); - -// PRIORITY -addUnitPriority('hour', 13); - -// PARSING - -function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; -} - -addRegexToken('a', matchMeridiem); -addRegexToken('A', matchMeridiem); -addRegexToken('H', match1to2); -addRegexToken('h', match1to2); -addRegexToken('HH', match1to2, match2); -addRegexToken('hh', match1to2, match2); - -addRegexToken('hmm', match3to4); -addRegexToken('hmmss', match5to6); -addRegexToken('Hmm', match3to4); -addRegexToken('Hmmss', match5to6); - -addParseToken(['H', 'HH'], HOUR); -addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; -}); -addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; -}); -addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; -}); -addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; -}); -addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); -}); -addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); -}); - -// LOCALES - -function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); -} - -var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; -function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } -} - - -// MOMENTS - -// Setting the hour should keep the time, because the user explicitly -// specified which hour he wants. So trying to maintain the same hour (in -// a new timezone) makes sense. Adding/subtracting hours does not follow -// this rule. -var getSetHour = makeGetSet('Hours', true); - -// months -// week -// weekdays -// meridiem -var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - ordinalParse: defaultOrdinalParse, - relativeTime: defaultRelativeTime, - - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, - - week: defaultLocaleWeek, - - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, - - meridiemParse: defaultLocaleMeridiemParse -}; - -// internal storage for locale config files -var locales = {}; -var localeFamilies = {}; -var globalLocale; - -function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; -} - -// pick the locale from the array -// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each -// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root -function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; -} - -function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && (typeof module !== 'undefined') && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we - // want to undo that for lazy loaded locales - getSetGlobalLocale(oldLocale); - } catch (e) { } - } - return locales[name]; -} - -// This function will load locale and then set the global locale. If -// no arguments are passed in, it will simply return the current global -// locale key. -function getSetGlobalLocale (key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - } - - return globalLocale._abbr; -} - -function defineLocale (name, config) { - if (config !== null) { - var parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config - }); - return null; - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); - - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } - - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); - - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } -} - -function updateLocale(name, config) { - if (config != null) { - var locale, parentConfig = baseConfig; - // MERGE - if (locales[name] != null) { - parentConfig = locales[name]._config; - } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; - - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - } else if (locales[name] != null) { - delete locales[name]; - } - } - } - return locales[name]; -} - -// returns locale data -function getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); -} - -function listLocales() { - return keys$1(locales); -} - -function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; -} - -// iso 8601 regex -// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) -var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; -var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - -var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - -var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] -]; - -// iso time formats and regexes -var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] -]; - -var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - -// date from iso format -function configFromISO(config) { - var i, l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; - - if (match) { - getParsingFlags(config).iso = true; - - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; - } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; - } else { - config._isValid = false; - return; - } - } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } -} - -// date from iso format or fallback -function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - hooks.createFromInputFallback(config); - } -} - -hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } -); - -// Pick the first defined of two or three arguments. -function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; -} - -function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; -} - -// convert an array to a date. -// the array should mirror the parameters below -// note: all values past the year are optional and will default to the lowest possible value. -// [year, month, day , hour, minute, second, millisecond] -function configFromArray (config) { - var i, date, input = [], currentDate, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse)) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } -} - -function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - var curWeek = weekOfYear(createLocal(), dow, doy); - - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - - // Default to current week. - week = defaults(w.w, curWeek.week); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to begining of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } -} - -// constant that refers to the ISO standard -hooks.ISO_8601 = function () {}; - -// date from string and format string -function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - // console.log('token', token, 'parsedInput', parsedInput, - // 'regex', getParseRegexForToken(token, config)); - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); -} - - -function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } -} - -// date from string and array of format strings -function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); -} - -function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); - - configFromArray(config); -} - -function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; -} - -function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } - - if (!isValid(config)) { - config._d = null; - } - - return config; -} - -function configFromInput(config) { - var input = config._i; - if (input === undefined) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (typeof(input) === 'object') { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } -} - -function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } - - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { - input = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); -} - -function createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); -} - -var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } -); - -var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } -); - -// Pick a moment m from moments so that m[fn](other) is true for all -// other. This relies on the function fn to be transitive. -// -// moments should either be an array of moment objects or an array, whose -// first element is an array of moment objects. -function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; -} - -// TODO: Use [].sort instead? -function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); -} - -function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); -} - -var now = function () { - return Date.now ? Date.now() : +(new Date()); -}; - -function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = getLocale(); - - this._bubble(); -} - -function isDuration (obj) { - return obj instanceof Duration; -} - -function absRound (number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } -} - -// FORMATTING - -function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); -} - -offset('Z', ':'); -offset('ZZ', ''); - -// PARSING - -addRegexToken('Z', matchShortOffset); -addRegexToken('ZZ', matchShortOffset); -addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); -}); - -// HELPERS - -// timezone chunker -// '+10:00' > ['10', '00'] -// '-1530' > ['-15', '30'] -var chunkOffset = /([\+\-]|\d\d)/gi; - -function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); - - if (matches === null) { - return null; - } - - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; -} - -// Return a moment from input, that is local/utc/zone equivalent to model. -function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } -} - -function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; -} - -// HOOKS - -// This function will be called whenever a moment is mutated. -// It is intended to keep the offset in sync with the timezone. -hooks.updateOffset = function () {}; - -// MOMENTS - -// keepLocalTime = true means only change the timezone, without -// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> -// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset -// +0200, so we adjust the time as needed, to be valid. -// -// Keeping the time actually adds/subtracts (one hour) -// from the actual represented time. That is why we call updateOffset -// a second time. In case it wants us to change the offset again -// _changeInProgress == true case, then we have to adjust, because -// there is no such time in the given timezone. -function getSetOffset (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } -} - -function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } -} - -function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); -} - -function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; -} - -function setOffsetToParsedOffset () { - if (this._tzm != null) { - this.utcOffset(this._tzm); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } - else { - this.utcOffset(0, true); - } - } - return this; -} - -function hasAlignedHourOffset (input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; -} - -function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); -} - -function isDaylightSavingTimeShifted () { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; -} - -function isLocal () { - return this.isValid() ? !this._isUTC : false; -} - -function isUtcOffset () { - return this.isValid() ? this._isUTC : false; -} - -function isUtc () { - return this.isValid() ? this._isUTC && this._offset === 0 : false; -} - -// ASP.NET json date format regex -var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; - -// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html -// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere -// and further modified to allow for strings containing both week and day -var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; - -function createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (isNumber(input)) { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match - }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; -} - -createDuration.fn = Duration.prototype; - -function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; -} - -function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; -} - -function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; - } - - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; -} - -// TODO: remove 'name' arg after deprecation is removed -function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; -} - -function addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); - - if (!mom.isValid()) { - // No op - return; - } - - updateOffset = updateOffset == null ? true : updateOffset; - - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } -} - -var add = createAdder(1, 'add'); -var subtract = createAdder(-1, 'subtract'); - -function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; -} - -function calendar$1 (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; - - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); -} - -function clone () { - return new Moment(this); -} - -function isAfter (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } -} - -function isBefore (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } -} - -function isBetween (from, to, units, inclusivity) { - inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && - (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); -} - -function isSame (input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); - } -} - -function isSameOrAfter (input, units) { - return this.isSame(input, units) || this.isAfter(input,units); -} - -function isSameOrBefore (input, units) { - return this.isSame(input, units) || this.isBefore(input,units); -} - -function diff (input, units, asFloat) { - var that, - zoneDelta, - delta, output; - - if (!this.isValid()) { - return NaN; - } - - that = cloneWithOffset(input, this); - - if (!that.isValid()) { - return NaN; - } - - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - - units = normalizeUnits(units); - - if (units === 'year' || units === 'month' || units === 'quarter') { - output = monthDiff(this, that); - if (units === 'quarter') { - output = output / 3; - } else if (units === 'year') { - output = output / 12; - } - } else { - delta = this - that; - output = units === 'second' ? delta / 1e3 : // 1000 - units === 'minute' ? delta / 6e4 : // 1000 * 60 - units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - delta; - } - return asFloat ? output : absFloor(output); -} - -function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; -} - -hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; -hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - -function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); -} - -function toISOString () { - var m = this.clone().utc(); - if (0 < m.year() && m.year() <= 9999) { - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } -} - -/** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */ -function inspect () { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment'; - var zone = ''; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; - } - var prefix = '[' + func + '("]'; - var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; - - return this.format(prefix + year + datetime + suffix); -} - -function format (inputString) { - if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); -} - -function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } -} - -function fromNow (withoutSuffix) { - return this.from(createLocal(), withoutSuffix); -} - -function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } -} - -function toNow (withoutSuffix) { - return this.to(createLocal(), withoutSuffix); -} - -// If passed a locale key, it will set the locale for this -// instance. Otherwise, it will return the locale configuration -// variables for this instance. -function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } -} - -var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } -); - -function localeData () { - return this._locale; -} - -function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - case 'date': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; -} - -function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - - // 'date' is an alias for 'day', so it should be considered as such. - if (units === 'date') { - units = 'day'; - } - - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); -} - -function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); -} - -function unix () { - return Math.floor(this.valueOf() / 1000); -} - -function toDate () { - return new Date(this.valueOf()); -} - -function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; -} - -function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; -} - -function toJSON () { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; -} - -function isValid$1 () { - return isValid(this); -} - -function parsingFlags () { - return extend({}, getParsingFlags(this)); -} - -function invalidAt () { - return getParsingFlags(this).overflow; -} - -function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; -} - -// FORMATTING - -addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; -}); - -addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; -}); - -function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); -} - -addWeekYearFormatToken('gggg', 'weekYear'); -addWeekYearFormatToken('ggggg', 'weekYear'); -addWeekYearFormatToken('GGGG', 'isoWeekYear'); -addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - -// ALIASES - -addUnitAlias('weekYear', 'gg'); -addUnitAlias('isoWeekYear', 'GG'); - -// PRIORITY - -addUnitPriority('weekYear', 1); -addUnitPriority('isoWeekYear', 1); - - -// PARSING - -addRegexToken('G', matchSigned); -addRegexToken('g', matchSigned); -addRegexToken('GG', match1to2, match2); -addRegexToken('gg', match1to2, match2); -addRegexToken('GGGG', match1to4, match4); -addRegexToken('gggg', match1to4, match4); -addRegexToken('GGGGG', match1to6, match6); -addRegexToken('ggggg', match1to6, match6); - -addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); -}); - -addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); -}); - -// MOMENTS - -function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); -} - -function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); -} - -function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); -} - -function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); -} - -function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } -} - -function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; -} - -// FORMATTING - -addFormatToken('Q', 0, 'Qo', 'quarter'); - -// ALIASES - -addUnitAlias('quarter', 'Q'); - -// PRIORITY - -addUnitPriority('quarter', 7); - -// PARSING - -addRegexToken('Q', match1); -addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; -}); - -// MOMENTS - -function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); -} - -// FORMATTING - -addFormatToken('D', ['DD', 2], 'Do', 'date'); - -// ALIASES - -addUnitAlias('date', 'D'); - -// PRIOROITY -addUnitPriority('date', 9); - -// PARSING - -addRegexToken('D', match1to2); -addRegexToken('DD', match1to2, match2); -addRegexToken('Do', function (isStrict, locale) { - return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; -}); - -addParseToken(['D', 'DD'], DATE); -addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0], 10); -}); - -// MOMENTS - -var getSetDayOfMonth = makeGetSet('Date', true); - -// FORMATTING - -addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - -// ALIASES - -addUnitAlias('dayOfYear', 'DDD'); - -// PRIORITY -addUnitPriority('dayOfYear', 4); - -// PARSING - -addRegexToken('DDD', match1to3); -addRegexToken('DDDD', match3); -addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); -}); - -// HELPERS - -// MOMENTS - -function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); -} - -// FORMATTING - -addFormatToken('m', ['mm', 2], 0, 'minute'); - -// ALIASES - -addUnitAlias('minute', 'm'); - -// PRIORITY - -addUnitPriority('minute', 14); - -// PARSING - -addRegexToken('m', match1to2); -addRegexToken('mm', match1to2, match2); -addParseToken(['m', 'mm'], MINUTE); - -// MOMENTS - -var getSetMinute = makeGetSet('Minutes', false); - -// FORMATTING - -addFormatToken('s', ['ss', 2], 0, 'second'); - -// ALIASES - -addUnitAlias('second', 's'); - -// PRIORITY - -addUnitPriority('second', 15); - -// PARSING - -addRegexToken('s', match1to2); -addRegexToken('ss', match1to2, match2); -addParseToken(['s', 'ss'], SECOND); - -// MOMENTS - -var getSetSecond = makeGetSet('Seconds', false); - -// FORMATTING - -addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); -}); - -addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); -}); - -addFormatToken(0, ['SSS', 3], 0, 'millisecond'); -addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; -}); -addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; -}); -addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; -}); -addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; -}); -addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; -}); -addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; -}); - - -// ALIASES - -addUnitAlias('millisecond', 'ms'); - -// PRIORITY - -addUnitPriority('millisecond', 16); - -// PARSING - -addRegexToken('S', match1to3, match1); -addRegexToken('SS', match1to3, match2); -addRegexToken('SSS', match1to3, match3); - -var token; -for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); -} - -function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); -} - -for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); -} -// MOMENTS - -var getSetMillisecond = makeGetSet('Milliseconds', false); - -// FORMATTING - -addFormatToken('z', 0, 0, 'zoneAbbr'); -addFormatToken('zz', 0, 0, 'zoneName'); - -// MOMENTS - -function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; -} - -function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; -} - -var proto = Moment.prototype; - -proto.add = add; -proto.calendar = calendar$1; -proto.clone = clone; -proto.diff = diff; -proto.endOf = endOf; -proto.format = format; -proto.from = from; -proto.fromNow = fromNow; -proto.to = to; -proto.toNow = toNow; -proto.get = stringGet; -proto.invalidAt = invalidAt; -proto.isAfter = isAfter; -proto.isBefore = isBefore; -proto.isBetween = isBetween; -proto.isSame = isSame; -proto.isSameOrAfter = isSameOrAfter; -proto.isSameOrBefore = isSameOrBefore; -proto.isValid = isValid$1; -proto.lang = lang; -proto.locale = locale; -proto.localeData = localeData; -proto.max = prototypeMax; -proto.min = prototypeMin; -proto.parsingFlags = parsingFlags; -proto.set = stringSet; -proto.startOf = startOf; -proto.subtract = subtract; -proto.toArray = toArray; -proto.toObject = toObject; -proto.toDate = toDate; -proto.toISOString = toISOString; -proto.inspect = inspect; -proto.toJSON = toJSON; -proto.toString = toString; -proto.unix = unix; -proto.valueOf = valueOf; -proto.creationData = creationData; - -// Year -proto.year = getSetYear; -proto.isLeapYear = getIsLeapYear; - -// Week Year -proto.weekYear = getSetWeekYear; -proto.isoWeekYear = getSetISOWeekYear; - -// Quarter -proto.quarter = proto.quarters = getSetQuarter; - -// Month -proto.month = getSetMonth; -proto.daysInMonth = getDaysInMonth; - -// Week -proto.week = proto.weeks = getSetWeek; -proto.isoWeek = proto.isoWeeks = getSetISOWeek; -proto.weeksInYear = getWeeksInYear; -proto.isoWeeksInYear = getISOWeeksInYear; - -// Day -proto.date = getSetDayOfMonth; -proto.day = proto.days = getSetDayOfWeek; -proto.weekday = getSetLocaleDayOfWeek; -proto.isoWeekday = getSetISODayOfWeek; -proto.dayOfYear = getSetDayOfYear; - -// Hour -proto.hour = proto.hours = getSetHour; - -// Minute -proto.minute = proto.minutes = getSetMinute; - -// Second -proto.second = proto.seconds = getSetSecond; - -// Millisecond -proto.millisecond = proto.milliseconds = getSetMillisecond; - -// Offset -proto.utcOffset = getSetOffset; -proto.utc = setOffsetToUTC; -proto.local = setOffsetToLocal; -proto.parseZone = setOffsetToParsedOffset; -proto.hasAlignedHourOffset = hasAlignedHourOffset; -proto.isDST = isDaylightSavingTime; -proto.isLocal = isLocal; -proto.isUtcOffset = isUtcOffset; -proto.isUtc = isUtc; -proto.isUTC = isUtc; - -// Timezone -proto.zoneAbbr = getZoneAbbr; -proto.zoneName = getZoneName; - -// Deprecations -proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); -proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); -proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); -proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); -proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); - -function createUnix (input) { - return createLocal(input * 1000); -} - -function createInZone () { - return createLocal.apply(null, arguments).parseZone(); -} - -function preParsePostFormat (string) { - return string; -} - -var proto$1 = Locale.prototype; - -proto$1.calendar = calendar; -proto$1.longDateFormat = longDateFormat; -proto$1.invalidDate = invalidDate; -proto$1.ordinal = ordinal; -proto$1.preparse = preParsePostFormat; -proto$1.postformat = preParsePostFormat; -proto$1.relativeTime = relativeTime; -proto$1.pastFuture = pastFuture; -proto$1.set = set; - -// Month -proto$1.months = localeMonths; -proto$1.monthsShort = localeMonthsShort; -proto$1.monthsParse = localeMonthsParse; -proto$1.monthsRegex = monthsRegex; -proto$1.monthsShortRegex = monthsShortRegex; - -// Week -proto$1.week = localeWeek; -proto$1.firstDayOfYear = localeFirstDayOfYear; -proto$1.firstDayOfWeek = localeFirstDayOfWeek; - -// Day of Week -proto$1.weekdays = localeWeekdays; -proto$1.weekdaysMin = localeWeekdaysMin; -proto$1.weekdaysShort = localeWeekdaysShort; -proto$1.weekdaysParse = localeWeekdaysParse; - -proto$1.weekdaysRegex = weekdaysRegex; -proto$1.weekdaysShortRegex = weekdaysShortRegex; -proto$1.weekdaysMinRegex = weekdaysMinRegex; - -// Hours -proto$1.isPM = localeIsPM; -proto$1.meridiem = localeMeridiem; - -function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); - return locale[field](utc, format); -} - -function listMonthsImpl (format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return get$1(format, index, field, 'month'); - } - - var i; - var out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; -} - -// () -// (5) -// (fmt, 5) -// (fmt) -// (true) -// (true, 5) -// (true, fmt, 5) -// (true, fmt) -function listWeekdaysImpl (localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; - - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } - - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; - - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); - } - - var i; - var out = []; - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); - } - return out; -} - -function listMonths (format, index) { - return listMonthsImpl(format, index, 'months'); -} - -function listMonthsShort (format, index) { - return listMonthsImpl(format, index, 'monthsShort'); -} - -function listWeekdays (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); -} - -function listWeekdaysShort (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); -} - -function listWeekdaysMin (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); -} - -getSetGlobalLocale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } -}); - -// Side effect imports -hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); -hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); - -var mathAbs = Math.abs; - -function abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; -} - -function addSubtract$1 (duration, input, value, direction) { - var other = createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); -} - -// supports only 2.0-style add(1, 's') or add(duration) -function add$1 (input, value) { - return addSubtract$1(this, input, value, 1); -} - -// supports only 2.0-style subtract(1, 's') or subtract(duration) -function subtract$1 (input, value) { - return addSubtract$1(this, input, value, -1); -} - -function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } -} - -function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; -} - -function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; -} - -function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; -} - -function as (units) { - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } -} - -// TODO: Use this.as('ms')? -function valueOf$1 () { - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); -} - -function makeAs (alias) { - return function () { - return this.as(alias); - }; -} - -var asMilliseconds = makeAs('ms'); -var asSeconds = makeAs('s'); -var asMinutes = makeAs('m'); -var asHours = makeAs('h'); -var asDays = makeAs('d'); -var asWeeks = makeAs('w'); -var asMonths = makeAs('M'); -var asYears = makeAs('y'); - -function get$2 (units) { - units = normalizeUnits(units); - return this[units + 's'](); -} - -function makeGetter(name) { - return function () { - return this._data[name]; - }; -} - -var milliseconds = makeGetter('milliseconds'); -var seconds = makeGetter('seconds'); -var minutes = makeGetter('minutes'); -var hours = makeGetter('hours'); -var days = makeGetter('days'); -var months = makeGetter('months'); -var years = makeGetter('years'); - -function weeks () { - return absFloor(this.days() / 7); -} - -var round = Math.round; -var thresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year -}; - -// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize -function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); -} - -function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds < thresholds.s && ['s', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); -} - -// This function allows you to set the rounding function for relative time strings -function getSetRelativeTimeRounding (roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof(roundingFunction) === 'function') { - round = roundingFunction; - return true; - } - return false; -} - -// This function allows you to set a threshold for relative time strings -function getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - return true; -} - -function humanize (withSuffix) { - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); -} - -var abs$1 = Math.abs; - -function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - return (total < 0 ? '-' : '') + - 'P' + - (Y ? Y + 'Y' : '') + - (M ? M + 'M' : '') + - (D ? D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? h + 'H' : '') + - (m ? m + 'M' : '') + - (s ? s + 'S' : ''); -} - -var proto$2 = Duration.prototype; - -proto$2.abs = abs; -proto$2.add = add$1; -proto$2.subtract = subtract$1; -proto$2.as = as; -proto$2.asMilliseconds = asMilliseconds; -proto$2.asSeconds = asSeconds; -proto$2.asMinutes = asMinutes; -proto$2.asHours = asHours; -proto$2.asDays = asDays; -proto$2.asWeeks = asWeeks; -proto$2.asMonths = asMonths; -proto$2.asYears = asYears; -proto$2.valueOf = valueOf$1; -proto$2._bubble = bubble; -proto$2.get = get$2; -proto$2.milliseconds = milliseconds; -proto$2.seconds = seconds; -proto$2.minutes = minutes; -proto$2.hours = hours; -proto$2.days = days; -proto$2.weeks = weeks; -proto$2.months = months; -proto$2.years = years; -proto$2.humanize = humanize; -proto$2.toISOString = toISOString$1; -proto$2.toString = toISOString$1; -proto$2.toJSON = toISOString$1; -proto$2.locale = locale; -proto$2.localeData = localeData; - -// Deprecations -proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); -proto$2.lang = lang; - -// Side effect imports - -// FORMATTING - -addFormatToken('X', 0, 0, 'unix'); -addFormatToken('x', 0, 0, 'valueOf'); - -// PARSING - -addRegexToken('x', matchSigned); -addRegexToken('X', matchTimestamp); -addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); -}); -addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); -}); - -// Side effect imports - - -hooks.version = '2.16.0'; - -setHookCallback(createLocal); - -hooks.fn = proto; -hooks.min = min; -hooks.max = max; -hooks.now = now; -hooks.utc = createUTC; -hooks.unix = createUnix; -hooks.months = listMonths; -hooks.isDate = isDate; -hooks.locale = getSetGlobalLocale; -hooks.invalid = createInvalid; -hooks.duration = createDuration; -hooks.isMoment = isMoment; -hooks.weekdays = listWeekdays; -hooks.parseZone = createInZone; -hooks.localeData = getLocale; -hooks.isDuration = isDuration; -hooks.monthsShort = listMonthsShort; -hooks.weekdaysMin = listWeekdaysMin; -hooks.defineLocale = defineLocale; -hooks.updateLocale = updateLocale; -hooks.locales = listLocales; -hooks.weekdaysShort = listWeekdaysShort; -hooks.normalizeUnits = normalizeUnits; -hooks.relativeTimeRounding = getSetRelativeTimeRounding; -hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; -hooks.calendarFormat = getCalendarFormat; -hooks.prototype = proto; - -return hooks; - -}))); - -},{}],7:[function(require,module,exports){ -/** - * @namespace Chart - */ -var Chart = require(28)(); - -require(26)(Chart); -require(22)(Chart); -require(25)(Chart); -require(21)(Chart); -require(23)(Chart); -require(24)(Chart); -require(29)(Chart); -require(33)(Chart); -require(31)(Chart); -require(34)(Chart); -require(32)(Chart); -require(35)(Chart); -require(30)(Chart); -require(27)(Chart); -require(36)(Chart); - -require(37)(Chart); -require(38)(Chart); -require(39)(Chart); -require(40)(Chart); - -require(43)(Chart); -require(41)(Chart); -require(42)(Chart); -require(44)(Chart); -require(45)(Chart); -require(46)(Chart); - -// Controllers must be loaded after elements -// See Chart.core.datasetController.dataElementType -require(15)(Chart); -require(16)(Chart); -require(17)(Chart); -require(18)(Chart); -require(19)(Chart); -require(20)(Chart); - -require(8)(Chart); -require(9)(Chart); -require(10)(Chart); -require(11)(Chart); -require(12)(Chart); -require(13)(Chart); -require(14)(Chart); - -window.Chart = module.exports = Chart; - -},{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"34":34,"35":35,"36":36,"37":37,"38":38,"39":39,"40":40,"41":41,"42":42,"43":43,"44":44,"45":45,"46":46,"8":8,"9":9}],8:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Bar = function(context, config) { - config.type = 'bar'; - - return new Chart(context, config); - }; - -}; - -},{}],9:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Bubble = function(context, config) { - config.type = 'bubble'; - return new Chart(context, config); - }; - -}; - -},{}],10:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Doughnut = function(context, config) { - config.type = 'doughnut'; - - return new Chart(context, config); - }; - -}; - -},{}],11:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Line = function(context, config) { - config.type = 'line'; - - return new Chart(context, config); - }; - -}; - -},{}],12:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.PolarArea = function(context, config) { - config.type = 'polarArea'; - - return new Chart(context, config); - }; - -}; - -},{}],13:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - Chart.Radar = function(context, config) { - config.type = 'radar'; - - return new Chart(context, config); - }; - -}; - -},{}],14:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var defaultConfig = { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - type: 'linear', // scatter should not use a category axis - position: 'bottom', - id: 'x-axis-1' // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: 'linear', - position: 'left', - id: 'y-axis-1' - }] - }, - - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(tooltipItem) { - return '(' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ')'; - } - } - } - }; - - // Register the default config for this type - Chart.defaults.scatter = defaultConfig; - - // Scatter charts use line controllers - Chart.controllers.scatter = Chart.controllers.line; - - Chart.Scatter = function(context, config) { - config.type = 'scatter'; - return new Chart(context, config); - }; - -}; - -},{}],15:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.bar = { - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - - // Specific to Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, - - // grid line settings - gridLines: { - offsetGridLines: true - } - }], - yAxes: [{ - type: 'linear' - }] - } - }; - - Chart.controllers.bar = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Rectangle, - - initialize: function(chart, datasetIndex) { - Chart.DatasetController.prototype.initialize.call(this, chart, datasetIndex); - - // Use this to indicate that this is a bar dataset. - this.getMeta().bar = true; - }, - - // Get the number of datasets that display bars. We use this to correctly calculate the bar width - getBarCount: function() { - var me = this; - var barCount = 0; - helpers.each(me.chart.data.datasets, function(dataset, datasetIndex) { - var meta = me.chart.getDatasetMeta(datasetIndex); - if (meta.bar && me.chart.isDatasetVisible(datasetIndex)) { - ++barCount; - } - }, me); - return barCount; - }, - - update: function(reset) { - var me = this; - helpers.each(me.getMeta().data, function(rectangle, index) { - me.updateElement(rectangle, index, reset); - }, me); - }, - - updateElement: function(rectangle, index, reset) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var scaleBase = yScale.getBasePixel(); - var rectangleElementOptions = me.chart.options.elements.rectangle; - var custom = rectangle.custom || {}; - var dataset = me.getDataset(); - - rectangle._xScale = xScale; - rectangle._yScale = yScale; - rectangle._datasetIndex = me.index; - rectangle._index = index; - - var ruler = me.getRuler(index); - rectangle._model = { - x: me.calculateBarX(index, me.index, ruler), - y: reset ? scaleBase : me.calculateBarY(index, me.index), - - // Tooltip - label: me.chart.data.labels[index], - datasetLabel: dataset.label, - - // Appearance - base: reset ? scaleBase : me.calculateBarBase(me.index, index), - width: me.calculateBarWidth(ruler), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor), - borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped, - borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth) - }; - - rectangle.pivot(); - }, - - calculateBarBase: function(datasetIndex, index) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var base = 0; - - if (yScale.options.stacked) { - var chart = me.chart; - var datasets = chart.data.datasets; - var value = Number(datasets[datasetIndex].data[index]); - - for (var i = 0; i < datasetIndex; i++) { - var currentDs = datasets[i]; - var currentDsMeta = chart.getDatasetMeta(i); - if (currentDsMeta.bar && currentDsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { - var currentVal = Number(currentDs.data[index]); - base += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0); - } - } - - return yScale.getPixelForValue(base); - } - - return yScale.getBasePixel(); - }, - - getRuler: function(index) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var datasetCount = me.getBarCount(); - - var tickWidth; - - if (xScale.options.type === 'category') { - tickWidth = xScale.getPixelForTick(index + 1) - xScale.getPixelForTick(index); - } else { - // Average width - tickWidth = xScale.width / xScale.ticks.length; - } - var categoryWidth = tickWidth * xScale.options.categoryPercentage; - var categorySpacing = (tickWidth - (tickWidth * xScale.options.categoryPercentage)) / 2; - var fullBarWidth = categoryWidth / datasetCount; - - if (xScale.ticks.length !== me.chart.data.labels.length) { - var perc = xScale.ticks.length / me.chart.data.labels.length; - fullBarWidth = fullBarWidth * perc; - } - - var barWidth = fullBarWidth * xScale.options.barPercentage; - var barSpacing = fullBarWidth - (fullBarWidth * xScale.options.barPercentage); - - return { - datasetCount: datasetCount, - tickWidth: tickWidth, - categoryWidth: categoryWidth, - categorySpacing: categorySpacing, - fullBarWidth: fullBarWidth, - barWidth: barWidth, - barSpacing: barSpacing - }; - }, - - calculateBarWidth: function(ruler) { - var xScale = this.getScaleForId(this.getMeta().xAxisID); - if (xScale.options.barThickness) { - return xScale.options.barThickness; - } - return xScale.options.stacked ? ruler.categoryWidth : ruler.barWidth; - }, - - // Get bar index from the given dataset index accounting for the fact that not all bars are visible - getBarIndex: function(datasetIndex) { - var barIndex = 0; - var meta, j; - - for (j = 0; j < datasetIndex; ++j) { - meta = this.chart.getDatasetMeta(j); - if (meta.bar && this.chart.isDatasetVisible(j)) { - ++barIndex; - } - } - - return barIndex; - }, - - calculateBarX: function(index, datasetIndex, ruler) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var barIndex = me.getBarIndex(datasetIndex); - var leftTick = xScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo); - leftTick -= me.chart.isCombo ? (ruler.tickWidth / 2) : 0; - - if (xScale.options.stacked) { - return leftTick + (ruler.categoryWidth / 2) + ruler.categorySpacing; - } - - return leftTick + - (ruler.barWidth / 2) + - ruler.categorySpacing + - (ruler.barWidth * barIndex) + - (ruler.barSpacing / 2) + - (ruler.barSpacing * barIndex); - }, - - calculateBarY: function(index, datasetIndex) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var value = Number(me.getDataset().data[index]); - - if (yScale.options.stacked) { - - var sumPos = 0, - sumNeg = 0; - - for (var i = 0; i < datasetIndex; i++) { - var ds = me.chart.data.datasets[i]; - var dsMeta = me.chart.getDatasetMeta(i); - if (dsMeta.bar && dsMeta.yAxisID === yScale.id && me.chart.isDatasetVisible(i)) { - var stackedVal = Number(ds.data[index]); - if (stackedVal < 0) { - sumNeg += stackedVal || 0; - } else { - sumPos += stackedVal || 0; - } - } - } - - if (value < 0) { - return yScale.getPixelForValue(sumNeg + value); - } - return yScale.getPixelForValue(sumPos + value); - } - - return yScale.getPixelForValue(value); - }, - - draw: function(ease) { - var me = this; - var easingDecimal = ease || 1; - var metaData = me.getMeta().data; - var dataset = me.getDataset(); - var i, len; - - for (i = 0, len = metaData.length; i < len; ++i) { - var d = dataset.data[i]; - if (d !== null && d !== undefined && !isNaN(d)) { - metaData[i].transition(easingDecimal).draw(); - } - } - }, - - setHoverStyle: function(rectangle) { - var dataset = this.chart.data.datasets[rectangle._datasetIndex]; - var index = rectangle._index; - - var custom = rectangle.custom || {}; - var model = rectangle._model; - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); - }, - - removeHoverStyle: function(rectangle) { - var dataset = this.chart.data.datasets[rectangle._datasetIndex]; - var index = rectangle._index; - var custom = rectangle.custom || {}; - var model = rectangle._model; - var rectangleElementOptions = this.chart.options.elements.rectangle; - - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth); - } - - }); - - - // including horizontalBar in the bar file, instead of a file of its own - // it extends bar (like pie extends doughnut) - Chart.defaults.horizontalBar = { - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'linear', - position: 'bottom' - }], - yAxes: [{ - position: 'left', - type: 'category', - - // Specific to Horizontal Bar Controller - categoryPercentage: 0.8, - barPercentage: 0.9, - - // grid line settings - gridLines: { - offsetGridLines: true - } - }] - }, - elements: { - rectangle: { - borderSkipped: 'left' - } - }, - tooltips: { - callbacks: { - title: function(tooltipItems, data) { - // Pick first xLabel for now - var title = ''; - - if (tooltipItems.length > 0) { - if (tooltipItems[0].yLabel) { - title = tooltipItems[0].yLabel; - } else if (data.labels.length > 0 && tooltipItems[0].index < data.labels.length) { - title = data.labels[tooltipItems[0].index]; - } - } - - return title; - }, - label: function(tooltipItem, data) { - var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || ''; - return datasetLabel + ': ' + tooltipItem.xLabel; - } - } - } - }; - - Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ - updateElement: function(rectangle, index, reset) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - var scaleBase = xScale.getBasePixel(); - var custom = rectangle.custom || {}; - var dataset = me.getDataset(); - var rectangleElementOptions = me.chart.options.elements.rectangle; - - rectangle._xScale = xScale; - rectangle._yScale = yScale; - rectangle._datasetIndex = me.index; - rectangle._index = index; - - var ruler = me.getRuler(index); - rectangle._model = { - x: reset ? scaleBase : me.calculateBarX(index, me.index), - y: me.calculateBarY(index, me.index, ruler), - - // Tooltip - label: me.chart.data.labels[index], - datasetLabel: dataset.label, - - // Appearance - base: reset ? scaleBase : me.calculateBarBase(me.index, index), - height: me.calculateBarHeight(ruler), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor), - borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped, - borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth) - }; - rectangle.draw = function() { - var ctx = this._chart.ctx; - var vm = this._view; - - var halfHeight = vm.height / 2, - topY = vm.y - halfHeight, - bottomY = vm.y + halfHeight, - right = vm.base - (vm.base - vm.x), - halfStroke = vm.borderWidth / 2; - - // Canvas doesn't allow us to stroke inside the width so we can - // adjust the sizes to fit if we're setting a stroke on the line - if (vm.borderWidth) { - topY += halfStroke; - bottomY -= halfStroke; - right += halfStroke; - } - - ctx.beginPath(); - - ctx.fillStyle = vm.backgroundColor; - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; - - // Corner points, from bottom-left to bottom-right clockwise - // | 1 2 | - // | 0 3 | - var corners = [ - [vm.base, bottomY], - [vm.base, topY], - [right, topY], - [right, bottomY] - ]; - - // Find first (starting) corner with fallback to 'bottom' - var borders = ['bottom', 'left', 'top', 'right']; - var startCorner = borders.indexOf(vm.borderSkipped, 0); - if (startCorner === -1) { - startCorner = 0; - } - - function cornerAt(cornerIndex) { - return corners[(startCorner + cornerIndex) % 4]; - } - - // Draw rectangle from 'startCorner' - ctx.moveTo.apply(ctx, cornerAt(0)); - for (var i = 1; i < 4; i++) { - ctx.lineTo.apply(ctx, cornerAt(i)); - } - - ctx.fill(); - if (vm.borderWidth) { - ctx.stroke(); - } - }; - - rectangle.pivot(); - }, - - calculateBarBase: function(datasetIndex, index) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var base = 0; - - if (xScale.options.stacked) { - var chart = me.chart; - var datasets = chart.data.datasets; - var value = Number(datasets[datasetIndex].data[index]); - - for (var i = 0; i < datasetIndex; i++) { - var currentDs = datasets[i]; - var currentDsMeta = chart.getDatasetMeta(i); - if (currentDsMeta.bar && currentDsMeta.xAxisID === xScale.id && chart.isDatasetVisible(i)) { - var currentVal = Number(currentDs.data[index]); - base += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0); - } - } - - return xScale.getPixelForValue(base); - } - - return xScale.getBasePixel(); - }, - - getRuler: function(index) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var datasetCount = me.getBarCount(); - - var tickHeight; - if (yScale.options.type === 'category') { - tickHeight = yScale.getPixelForTick(index + 1) - yScale.getPixelForTick(index); - } else { - // Average width - tickHeight = yScale.width / yScale.ticks.length; - } - var categoryHeight = tickHeight * yScale.options.categoryPercentage; - var categorySpacing = (tickHeight - (tickHeight * yScale.options.categoryPercentage)) / 2; - var fullBarHeight = categoryHeight / datasetCount; - - if (yScale.ticks.length !== me.chart.data.labels.length) { - var perc = yScale.ticks.length / me.chart.data.labels.length; - fullBarHeight = fullBarHeight * perc; - } - - var barHeight = fullBarHeight * yScale.options.barPercentage; - var barSpacing = fullBarHeight - (fullBarHeight * yScale.options.barPercentage); - - return { - datasetCount: datasetCount, - tickHeight: tickHeight, - categoryHeight: categoryHeight, - categorySpacing: categorySpacing, - fullBarHeight: fullBarHeight, - barHeight: barHeight, - barSpacing: barSpacing - }; - }, - - calculateBarHeight: function(ruler) { - var me = this; - var yScale = me.getScaleForId(me.getMeta().yAxisID); - if (yScale.options.barThickness) { - return yScale.options.barThickness; - } - return yScale.options.stacked ? ruler.categoryHeight : ruler.barHeight; - }, - - calculateBarX: function(index, datasetIndex) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var value = Number(me.getDataset().data[index]); - - if (xScale.options.stacked) { - - var sumPos = 0, - sumNeg = 0; - - for (var i = 0; i < datasetIndex; i++) { - var ds = me.chart.data.datasets[i]; - var dsMeta = me.chart.getDatasetMeta(i); - if (dsMeta.bar && dsMeta.xAxisID === xScale.id && me.chart.isDatasetVisible(i)) { - var stackedVal = Number(ds.data[index]); - if (stackedVal < 0) { - sumNeg += stackedVal || 0; - } else { - sumPos += stackedVal || 0; - } - } - } - - if (value < 0) { - return xScale.getPixelForValue(sumNeg + value); - } - return xScale.getPixelForValue(sumPos + value); - } - - return xScale.getPixelForValue(value); - }, - - calculateBarY: function(index, datasetIndex, ruler) { - var me = this; - var meta = me.getMeta(); - var yScale = me.getScaleForId(meta.yAxisID); - var barIndex = me.getBarIndex(datasetIndex); - var topTick = yScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo); - topTick -= me.chart.isCombo ? (ruler.tickHeight / 2) : 0; - - if (yScale.options.stacked) { - return topTick + (ruler.categoryHeight / 2) + ruler.categorySpacing; - } - - return topTick + - (ruler.barHeight / 2) + - ruler.categorySpacing + - (ruler.barHeight * barIndex) + - (ruler.barSpacing / 2) + - (ruler.barSpacing * barIndex); - } - }); -}; - -},{}],16:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.bubble = { - hover: { - mode: 'single' - }, - - scales: { - xAxes: [{ - type: 'linear', // bubble should probably use a linear scale by default - position: 'bottom', - id: 'x-axis-0' // need an ID so datasets can reference the scale - }], - yAxes: [{ - type: 'linear', - position: 'left', - id: 'y-axis-0' - }] - }, - - tooltips: { - callbacks: { - title: function() { - // Title doesn't make sense for scatter since we format the data as a point - return ''; - }, - label: function(tooltipItem, data) { - var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || ''; - var dataPoint = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; - return datasetLabel + ': (' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ', ' + dataPoint.r + ')'; - } - } - } - }; - - Chart.controllers.bubble = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Point, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var points = meta.data; - - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }); - }, - - updateElement: function(point, index, reset) { - var me = this; - var meta = me.getMeta(); - var xScale = me.getScaleForId(meta.xAxisID); - var yScale = me.getScaleForId(meta.yAxisID); - - var custom = point.custom || {}; - var dataset = me.getDataset(); - var data = dataset.data[index]; - var pointElementOptions = me.chart.options.elements.point; - var dsIndex = me.index; - - helpers.extend(point, { - // Utility - _xScale: xScale, - _yScale: yScale, - _datasetIndex: dsIndex, - _index: index, - - // Desired view properties - _model: { - x: reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex, me.chart.isCombo), - y: reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex), - // Appearance - radius: reset ? 0 : custom.radius ? custom.radius : me.getRadius(data), - - // Tooltip - hitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius) - } - }); - - // Trick to reset the styles of the point - Chart.DatasetController.prototype.removeHoverStyle.call(me, point, pointElementOptions); - - var model = point._model; - model.skip = custom.skip ? custom.skip : (isNaN(model.x) || isNaN(model.y)); - - point.pivot(); - }, - - getRadius: function(value) { - return value.r || this.chart.options.elements.point.radius; - }, - - setHoverStyle: function(point) { - var me = this; - Chart.DatasetController.prototype.setHoverStyle.call(me, point); - - // Radius - var dataset = me.chart.data.datasets[point._datasetIndex]; - var index = point._index; - var custom = point.custom || {}; - var model = point._model; - model.radius = custom.hoverRadius ? custom.hoverRadius : (helpers.getValueAtIndexOrDefault(dataset.hoverRadius, index, me.chart.options.elements.point.hoverRadius)) + me.getRadius(dataset.data[index]); - }, - - removeHoverStyle: function(point) { - var me = this; - Chart.DatasetController.prototype.removeHoverStyle.call(me, point, me.chart.options.elements.point); - - var dataVal = me.chart.data.datasets[point._datasetIndex].data[point._index]; - var custom = point.custom || {}; - var model = point._model; - - model.radius = custom.radius ? custom.radius : me.getRadius(dataVal); - } - }); -}; - -},{}],17:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers, - defaults = Chart.defaults; - - defaults.doughnut = { - animation: { - // Boolean - Whether we animate the rotation of the Doughnut - animateRotate: true, - // Boolean - Whether we animate scaling the Doughnut from the centre - animateScale: false - }, - aspectRatio: 1, - hover: { - mode: 'single' - }, - legendCallback: function(chart) { - var text = []; - text.push('
    '); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push('
'); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc && arc.custom || {}; - var getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - // toggle visibility of index if exists - if (meta.data[index]) { - meta.data[index].hidden = !meta.data[index].hidden; - } - } - - chart.update(); - } - }, - - // The percentage of the chart that we cut out of the middle. - cutoutPercentage: 50, - - // The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, - - // The total circumference of the chart. - circumference: Math.PI * 2.0, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - var dataLabel = data.labels[tooltipItem.index]; - var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; - - if (helpers.isArray(dataLabel)) { - // show value on first line of multiline label - // need to clone because we are changing the value - dataLabel = dataLabel.slice(); - dataLabel[0] += value; - } else { - dataLabel += value; - } - - return dataLabel; - } - } - } - }; - - defaults.pie = helpers.clone(defaults.doughnut); - helpers.extend(defaults.pie, { - cutoutPercentage: 0 - }); - - - Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Arc, - - linkScales: helpers.noop, - - // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly - getRingIndex: function(datasetIndex) { - var ringIndex = 0; - - for (var j = 0; j < datasetIndex; ++j) { - if (this.chart.isDatasetVisible(j)) { - ++ringIndex; - } - } - - return ringIndex; - }, - - update: function(reset) { - var me = this; - var chart = me.chart, - chartArea = chart.chartArea, - opts = chart.options, - arcOpts = opts.elements.arc, - availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth, - availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth, - minSize = Math.min(availableWidth, availableHeight), - offset = { - x: 0, - y: 0 - }, - meta = me.getMeta(), - cutoutPercentage = opts.cutoutPercentage, - circumference = opts.circumference; - - // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); - var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && 0 <= endAngle) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; - } - - chart.borderWidth = me.getMaxBorderWidth(meta.data); - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; - - meta.total = me.calculateTotal(); - - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); - me.innerRadius = me.outerRadius - chart.radiusLength; - - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart, - chartArea = chart.chartArea, - opts = chart.options, - animationOpts = opts.animation, - centerX = (chartArea.left + chartArea.right) / 2, - centerY = (chartArea.top + chartArea.bottom) / 2, - startAngle = opts.rotation, // non reset case handled later - endAngle = opts.rotation, // non reset case handled later - dataset = me.getDataset(), - circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)), - innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius, - outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius, - valueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - - // Desired view properties - _model: { - x: centerX + chart.offsetX, - y: centerY + chart.offsetY, - startAngle: startAngle, - endAngle: endAngle, - circumference: circumference, - outerRadius: outerRadius, - innerRadius: innerRadius, - label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) - } - }); - - var model = arc._model; - // Resets the visual styles - this.removeHoverStyle(arc); - - // Set correct angles if not resetting - if (!reset || !animationOpts.animateRotate) { - if (index === 0) { - model.startAngle = opts.rotation; - } else { - model.startAngle = me.getMeta().data[index - 1]._model.endAngle; - } - - model.endAngle = model.startAngle + model.circumference; - } - - arc.pivot(); - }, - - removeHoverStyle: function(arc) { - Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); - }, - - calculateTotal: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var total = 0; - var value; - - helpers.each(meta.data, function(element, index) { - value = dataset.data[index]; - if (!isNaN(value) && !element.hidden) { - total += Math.abs(value); - } - }); - - /* if (total === 0) { - total = NaN; - }*/ - - return total; - }, - - calculateCircumference: function(value) { - var total = this.getMeta().total; - if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (value / total); - } - return 0; - }, - - // gets the max border or hover width to properly scale pie charts - getMaxBorderWidth: function(elements) { - var max = 0, - index = this.index, - length = elements.length, - borderWidth, - hoverWidth; - - for (var i = 0; i < length; i++) { - borderWidth = elements[i]._model ? elements[i]._model.borderWidth : 0; - hoverWidth = elements[i]._chart ? elements[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; - - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; - } - return max; - } - }); -}; - -},{}],18:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.line = { - showLines: true, - spanGaps: false, - - hover: { - mode: 'label' - }, - - scales: { - xAxes: [{ - type: 'category', - id: 'x-axis-0' - }], - yAxes: [{ - type: 'linear', - id: 'y-axis-0' - }] - } - }; - - function lineEnabled(dataset, options) { - return helpers.getValueOrDefault(dataset.showLine, options.showLines); - } - - Chart.controllers.line = Chart.DatasetController.extend({ - - datasetElementType: Chart.elements.Line, - - dataElementType: Chart.elements.Point, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data || []; - var options = me.chart.options; - var lineElementOptions = options.elements.line; - var scale = me.getScaleForId(meta.yAxisID); - var i, ilen, custom; - var dataset = me.getDataset(); - var showLine = lineEnabled(dataset, options); - - // Update Line - if (showLine) { - custom = line.custom || {}; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - // Utility - line._scale = scale; - line._datasetIndex = me.index; - // Data - line._children = points; - // Model - line._model = { - // Appearance - // The default behavior of lines is to break at null values, according - // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 - // This option gives lines the ability to span gaps - spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, - tension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - steppedLine: custom.steppedLine ? custom.steppedLine : helpers.getValueOrDefault(dataset.steppedLine, lineElementOptions.stepped), - cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.getValueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), - // Scale - scaleTop: scale.top, - scaleBottom: scale.bottom, - scaleZero: scale.getBasePixel() - }; - - line.pivot(); - } - - // Update Points - for (i=0, ilen=points.length; i'); - - var data = chart.data; - var datasets = data.datasets; - var labels = data.labels; - - if (datasets.length) { - for (var i = 0; i < datasets[0].data.length; ++i) { - text.push('
  • '); - if (labels[i]) { - text.push(labels[i]); - } - text.push('
  • '); - } - } - - text.push(''); - return text.join(''); - }, - legend: { - labels: { - generateLabels: function(chart) { - var data = chart.data; - if (data.labels.length && data.datasets.length) { - return data.labels.map(function(label, i) { - var meta = chart.getDatasetMeta(0); - var ds = data.datasets[0]; - var arc = meta.data[i]; - var custom = arc.custom || {}; - var getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - var arcOpts = chart.options.elements.arc; - var fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); - var stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); - var bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); - - return { - text: label, - fillStyle: fill, - strokeStyle: stroke, - lineWidth: bw, - hidden: isNaN(ds.data[i]) || meta.data[i].hidden, - - // Extra data used for toggling the correct item - index: i - }; - }); - } - return []; - } - }, - - onClick: function(e, legendItem) { - var index = legendItem.index; - var chart = this.chart; - var i, ilen, meta; - - for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { - meta = chart.getDatasetMeta(i); - meta.data[index].hidden = !meta.data[index].hidden; - } - - chart.update(); - } - }, - - // Need to override these to give a nice default - tooltips: { - callbacks: { - title: function() { - return ''; - }, - label: function(tooltipItem, data) { - return data.labels[tooltipItem.index] + ': ' + tooltipItem.yLabel; - } - } - } - }; - - Chart.controllers.polarArea = Chart.DatasetController.extend({ - - dataElementType: Chart.elements.Arc, - - linkScales: helpers.noop, - - update: function(reset) { - var me = this; - var chart = me.chart; - var chartArea = chart.chartArea; - var meta = me.getMeta(); - var opts = chart.options; - var arcOpts = opts.elements.arc; - var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); - chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); - chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); - - me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); - me.innerRadius = me.outerRadius - chart.radiusLength; - - meta.count = me.countVisibleElements(); - - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); - }, - - updateElement: function(arc, index, reset) { - var me = this; - var chart = me.chart; - var dataset = me.getDataset(); - var opts = chart.options; - var animationOpts = opts.animation; - var scale = chart.scale; - var getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault; - var labels = chart.data.labels; - - var circumference = me.calculateCircumference(dataset.data[index]); - var centerX = scale.xCenter; - var centerY = scale.yCenter; - - // If there is NaN data before us, we need to calculate the starting angle correctly. - // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data - var visibleCount = 0; - var meta = me.getMeta(); - for (var i = 0; i < index; ++i) { - if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) { - ++visibleCount; - } - } - - // var negHalfPI = -0.5 * Math.PI; - var datasetStartAngle = opts.startAngle; - var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - var startAngle = datasetStartAngle + (circumference * visibleCount); - var endAngle = startAngle + (arc.hidden ? 0 : circumference); - - var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); - - helpers.extend(arc, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: centerX, - y: centerY, - innerRadius: 0, - outerRadius: reset ? resetRadius : distance, - startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, - endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, - label: getValueAtIndexOrDefault(labels, index, labels[index]) - } - }); - - // Apply border and fill style - me.removeHoverStyle(arc); - - arc.pivot(); - }, - - removeHoverStyle: function(arc) { - Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); - }, - - countVisibleElements: function() { - var dataset = this.getDataset(); - var meta = this.getMeta(); - var count = 0; - - helpers.each(meta.data, function(element, index) { - if (!isNaN(dataset.data[index]) && !element.hidden) { - count++; - } - }); - - return count; - }, - - calculateCircumference: function(value) { - var count = this.getMeta().count; - if (count > 0 && !isNaN(value)) { - return (2 * Math.PI) / count; - } - return 0; - } - }); -}; - -},{}],20:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.radar = { - aspectRatio: 1, - scale: { - type: 'radialLinear' - }, - elements: { - line: { - tension: 0 // no bezier in radar - } - } - }; - - Chart.controllers.radar = Chart.DatasetController.extend({ - - datasetElementType: Chart.elements.Line, - - dataElementType: Chart.elements.Point, - - linkScales: helpers.noop, - - update: function(reset) { - var me = this; - var meta = me.getMeta(); - var line = meta.dataset; - var points = meta.data; - var custom = line.custom || {}; - var dataset = me.getDataset(); - var lineElementOptions = me.chart.options.elements.line; - var scale = me.chart.scale; - - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { - dataset.lineTension = dataset.tension; - } - - helpers.extend(meta.dataset, { - // Utility - _datasetIndex: me.index, - // Data - _children: points, - _loop: true, - // Model - _model: { - // Appearance - tension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), - borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), - borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), - fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), - borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), - borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), - borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), - borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), - - // Scale - scaleTop: scale.top, - scaleBottom: scale.bottom, - scaleZero: scale.getBasePosition() - } - }); - - meta.dataset.pivot(); - - // Update Points - helpers.each(points, function(point, index) { - me.updateElement(point, index, reset); - }, me); - - // Update bezier control points - me.updateBezierControlPoints(); - }, - updateElement: function(point, index, reset) { - var me = this; - var custom = point.custom || {}; - var dataset = me.getDataset(); - var scale = me.chart.scale; - var pointElementOptions = me.chart.options.elements.point; - var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); - - helpers.extend(point, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales - y: reset ? scale.yCenter : pointPosition.y, - - // Appearance - tension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.tension, me.chart.options.elements.line.tension), - radius: custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), - backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), - borderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), - borderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), - pointStyle: custom.pointStyle ? custom.pointStyle : helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), - - // Tooltip - hitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius) - } - }); - - point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); - }, - updateBezierControlPoints: function() { - var chartArea = this.chart.chartArea; - var meta = this.getMeta(); - - helpers.each(meta.data, function(point, index) { - var model = point._model; - var controlPoints = helpers.splineCurve( - helpers.previousItem(meta.data, index, true)._model, - model, - helpers.nextItem(meta.data, index, true)._model, - model.tension - ); - - // Prevent the bezier going outside of the bounds of the graph - model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); - model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); - - model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); - model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); - - // Now pivot the point for animation - point.pivot(); - }); - }, - - draw: function(ease) { - var meta = this.getMeta(); - var easingDecimal = ease || 1; - - // Transition Point Locations - helpers.each(meta.data, function(point) { - point.transition(easingDecimal); - }); - - // Transition and Draw the line - meta.dataset.transition(easingDecimal).draw(); - - // Draw the points - helpers.each(meta.data, function(point) { - point.draw(); - }); - }, - - setHoverStyle: function(point) { - // Point - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; - var model = point._model; - - model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); - model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); - model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); - model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); - }, - - removeHoverStyle: function(point) { - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; - var model = point._model; - var pointElementOptions = this.chart.options.elements.point; - - model.radius = custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.radius, index, pointElementOptions.radius); - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth); - } - }); -}; - -},{}],21:[function(require,module,exports){ -/* global window: false */ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers; - - Chart.defaults.global.animation = { - duration: 1000, - easing: 'easeOutQuart', - onProgress: helpers.noop, - onComplete: helpers.noop - }; - - Chart.Animation = Chart.Element.extend({ - currentStep: null, // the current animation step - numSteps: 60, // default number of steps - easing: '', // the easing to use for this animation - render: null, // render function used by the animation service - - onAnimationProgress: null, // user specified callback to fire on each step of the animation - onAnimationComplete: null // user specified callback to fire when the animation finishes - }); - - Chart.animationService = { - frameDuration: 17, - animations: [], - dropFrames: 0, - request: null, - - /** - * @function Chart.animationService.addAnimation - * @param chartInstance {ChartController} the chart to animate - * @param animationObject {IAnimation} the animation that we will animate - * @param duration {Number} length of animation in ms - * @param lazy {Boolean} if true, the chart is not marked as animating to enable more responsive interactions - */ - addAnimation: function(chartInstance, animationObject, duration, lazy) { - var me = this; - - if (!lazy) { - chartInstance.animating = true; - } - - for (var index = 0; index < me.animations.length; ++index) { - if (me.animations[index].chartInstance === chartInstance) { - // replacing an in progress animation - me.animations[index].animationObject = animationObject; - return; - } - } - - me.animations.push({ - chartInstance: chartInstance, - animationObject: animationObject - }); - - // If there are no animations queued, manually kickstart a digest, for lack of a better word - if (me.animations.length === 1) { - me.requestAnimationFrame(); - } - }, - // Cancel the animation for a given chart instance - cancelAnimation: function(chartInstance) { - var index = helpers.findIndex(this.animations, function(animationWrapper) { - return animationWrapper.chartInstance === chartInstance; - }); - - if (index !== -1) { - this.animations.splice(index, 1); - chartInstance.animating = false; - } - }, - requestAnimationFrame: function() { - var me = this; - if (me.request === null) { - // Skip animation frame requests until the active one is executed. - // This can happen when processing mouse events, e.g. 'mousemove' - // and 'mouseout' events will trigger multiple renders. - me.request = helpers.requestAnimFrame.call(window, function() { - me.request = null; - me.startDigest(); - }); - } - }, - startDigest: function() { - var me = this; - - var startTime = Date.now(); - var framesToDrop = 0; - - if (me.dropFrames > 1) { - framesToDrop = Math.floor(me.dropFrames); - me.dropFrames = me.dropFrames % 1; - } - - var i = 0; - while (i < me.animations.length) { - if (me.animations[i].animationObject.currentStep === null) { - me.animations[i].animationObject.currentStep = 0; - } - - me.animations[i].animationObject.currentStep += 1 + framesToDrop; - - if (me.animations[i].animationObject.currentStep > me.animations[i].animationObject.numSteps) { - me.animations[i].animationObject.currentStep = me.animations[i].animationObject.numSteps; - } - - me.animations[i].animationObject.render(me.animations[i].chartInstance, me.animations[i].animationObject); - if (me.animations[i].animationObject.onAnimationProgress && me.animations[i].animationObject.onAnimationProgress.call) { - me.animations[i].animationObject.onAnimationProgress.call(me.animations[i].chartInstance, me.animations[i]); - } - - if (me.animations[i].animationObject.currentStep === me.animations[i].animationObject.numSteps) { - if (me.animations[i].animationObject.onAnimationComplete && me.animations[i].animationObject.onAnimationComplete.call) { - me.animations[i].animationObject.onAnimationComplete.call(me.animations[i].chartInstance, me.animations[i]); - } - - // executed the last frame. Remove the animation. - me.animations[i].chartInstance.animating = false; - - me.animations.splice(i, 1); - } else { - ++i; - } - } - - var endTime = Date.now(); - var dropFrames = (endTime - startTime) / me.frameDuration; - - me.dropFrames += dropFrames; - - // Do we have more stuff to animate? - if (me.animations.length > 0) { - me.requestAnimationFrame(); - } - } - }; -}; - -},{}],22:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - // Global Chart canvas helpers object for drawing items to canvas - var helpers = Chart.canvasHelpers = {}; - - helpers.drawPoint = function(ctx, pointStyle, radius, x, y) { - var type, edgeLength, xOffset, yOffset, height, size; - - if (typeof pointStyle === 'object') { - type = pointStyle.toString(); - if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { - ctx.drawImage(pointStyle, x - pointStyle.width / 2, y - pointStyle.height / 2); - return; - } - } - - if (isNaN(radius) || radius <= 0) { - return; - } - - switch (pointStyle) { - // Default includes circle - default: - ctx.beginPath(); - ctx.arc(x, y, radius, 0, Math.PI * 2); - ctx.closePath(); - ctx.fill(); - break; - case 'triangle': - ctx.beginPath(); - edgeLength = 3 * radius / Math.sqrt(3); - height = edgeLength * Math.sqrt(3) / 2; - ctx.moveTo(x - edgeLength / 2, y + height / 3); - ctx.lineTo(x + edgeLength / 2, y + height / 3); - ctx.lineTo(x, y - 2 * height / 3); - ctx.closePath(); - ctx.fill(); - break; - case 'rect': - size = 1 / Math.SQRT2 * radius; - ctx.beginPath(); - ctx.fillRect(x - size, y - size, 2 * size, 2 * size); - ctx.strokeRect(x - size, y - size, 2 * size, 2 * size); - break; - case 'rectRot': - size = 1 / Math.SQRT2 * radius; - ctx.beginPath(); - ctx.moveTo(x - size, y); - ctx.lineTo(x, y + size); - ctx.lineTo(x + size, y); - ctx.lineTo(x, y - size); - ctx.closePath(); - ctx.fill(); - break; - case 'cross': - ctx.beginPath(); - ctx.moveTo(x, y + radius); - ctx.lineTo(x, y - radius); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - case 'crossRot': - ctx.beginPath(); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x - xOffset, y + yOffset); - ctx.lineTo(x + xOffset, y - yOffset); - ctx.closePath(); - break; - case 'star': - ctx.beginPath(); - ctx.moveTo(x, y + radius); - ctx.lineTo(x, y - radius); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(x - xOffset, y - yOffset); - ctx.lineTo(x + xOffset, y + yOffset); - ctx.moveTo(x - xOffset, y + yOffset); - ctx.lineTo(x + xOffset, y - yOffset); - ctx.closePath(); - break; - case 'line': - ctx.beginPath(); - ctx.moveTo(x - radius, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - case 'dash': - ctx.beginPath(); - ctx.moveTo(x, y); - ctx.lineTo(x + radius, y); - ctx.closePath(); - break; - } - - ctx.stroke(); - }; -}; - -},{}],23:[function(require,module,exports){ -'use strict'; - -module.exports = function(Chart) { - - var helpers = Chart.helpers; - - // Create a dictionary of chart types, to allow for extension of existing types - Chart.types = {}; - - // Store a reference to each instance - allowing us to globally resize chart instances on window resize. - // Destroy method on the chart will remove the instance of the chart from this reference. - Chart.instances = {}; - - // Controllers available for dataset visualization eg. bar, line, slice, etc. - Chart.controllers = {}; - - /** - * The "used" size is the final value of a dimension property after all calculations have - * been performed. This method uses the computed style of `element` but returns undefined - * if the computed style is not expressed in pixels. That can happen in some cases where - * `element` has a size relative to its parent and this last one is not yet displayed, - * for example because of `display: none` on a parent node. - * TODO(SB) Move this method in the upcoming core.platform class. - * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value - * @returns {Number} Size in pixels or undefined if unknown. - */ - function readUsedSize(element, property) { - var value = helpers.getStyle(element, property); - var matches = value && value.match(/(\d+)px/); - return matches? Number(matches[1]) : undefined; - } - - /** - * Initializes the canvas style and render size without modifying the canvas display size, - * since responsiveness is handled by the controller.resize() method. The config is used - * to determine the aspect ratio to apply in case no explicit height has been specified. - * TODO(SB) Move this method in the upcoming core.platform class. - */ - function initCanvas(canvas, config) { - var style = canvas.style; - - // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it - // returns null or '' if no explicit value has been set to the canvas attribute. - var renderHeight = canvas.getAttribute('height'); - var renderWidth = canvas.getAttribute('width'); - - // Chart.js modifies some canvas values that we want to restore on destroy - canvas._chartjs = { - initial: { - height: renderHeight, - width: renderWidth, - style: { - display: style.display, - height: style.height, - width: style.width - } - } - }; - - // Force canvas to display as block to avoid extra space caused by inline - // elements, which would interfere with the responsive resize process. - // https://github.com/chartjs/Chart.js/issues/2538 - style.display = style.display || 'block'; - - if (renderWidth === null || renderWidth === '') { - var displayWidth = readUsedSize(canvas, 'width'); - if (displayWidth !== undefined) { - canvas.width = displayWidth; - } - } - - if (renderHeight === null || renderHeight === '') { - if (canvas.style.height === '') { - // If no explicit render height and style height, let's apply the aspect ratio, - // which one can be specified by the user but also by charts as default option - // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. - canvas.height = canvas.width / (config.options.aspectRatio || 2); - } else { - var displayHeight = readUsedSize(canvas, 'height'); - if (displayWidth !== undefined) { - canvas.height = displayHeight; - } - } - } - - return canvas; - } - - /** - * Restores the canvas initial state, such as render/display sizes and style. - * TODO(SB) Move this method in the upcoming core.platform class. - */ - function releaseCanvas(canvas) { - if (!canvas._chartjs) { - return; - } - - var initial = canvas._chartjs.initial; - ['height', 'width'].forEach(function(prop) { - var value = initial[prop]; - if (value === undefined || value === null) { - canvas.removeAttribute(prop); - } else { - canvas.setAttribute(prop, value); - } - }); - - helpers.each(initial.style || {}, function(value, key) { - canvas.style[key] = value; - }); - - // The canvas render size might have been changed (and thus the state stack discarded), - // we can't use save() and restore() to restore the initial state. So make sure that at - // least the canvas context is reset to the default state by setting the canvas width. - // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html - canvas.width = canvas.width; - - delete canvas._chartjs; - } - - /** - * TODO(SB) Move this method in the upcoming core.platform class. - */ - function acquireContext(item, config) { - if (typeof item === 'string') { - item = document.getElementById(item); - } else if (item.length) { - // Support for array based queries (such as jQuery) - item = item[0]; - } - - if (item && item.canvas) { - // Support for any object associated to a canvas (including a context2d) - item = item.canvas; - } - - if (item instanceof HTMLCanvasElement) { - // To prevent canvas fingerprinting, some add-ons undefine the getContext - // method, for example: https://github.com/kkapsner/CanvasBlocker - // https://github.com/chartjs/Chart.js/issues/2807 - var context = item.getContext && item.getContext('2d'); - if (context instanceof CanvasRenderingContext2D) { - initCanvas(item, config); - return context; - } - } - - return null; - } - - /** - * Initializes the given config with global and chart default values. - */ - function initConfig(config) { - config = config || {}; - - // Do NOT use configMerge() for the data object because this method merges arrays - // and so would change references to labels and datasets, preventing data updates. - var data = config.data = config.data || {}; - data.datasets = data.datasets || []; - data.labels = data.labels || []; - - config.options = helpers.configMerge( - Chart.defaults.global, - Chart.defaults[config.type], - config.options || {}); - - return config; - } - - /** - * @class Chart.Controller - * The main controller of a chart. - */ - Chart.Controller = function(item, config, instance) { - var me = this; - - config = initConfig(config); - - var context = acquireContext(item, config); - var canvas = context && context.canvas; - var height = canvas && canvas.height; - var width = canvas && canvas.width; - - instance.ctx = context; - instance.canvas = canvas; - instance.config = config; - instance.width = width; - instance.height = height; - instance.aspectRatio = height? width / height : null; - - me.id = helpers.uid(); - me.chart = instance; - me.config = config; - me.options = config.options; - me._bufferedRender = false; - - // Add the chart instance to the global namespace - Chart.instances[me.id] = me; - - Object.defineProperty(me, 'data', { - get: function() { - return me.config.data; - } - }); - - if (!context || !canvas) { - // The given item is not a compatible context2d element, let's return before finalizing - // the chart initialization but after setting basic chart / controller properties that - // can help to figure out that the chart is not valid (e.g chart.canvas !== null); - // https://github.com/chartjs/Chart.js/issues/2807 - console.error("Failed to create chart: can't acquire context from the given item"); - return me; - } - - helpers.retinaScale(instance); - - // Responsiveness is currently based on the use of an iframe, however this method causes - // performance issues and could be troublesome when used with ad blockers. So make sure - // that the user is still able to create a chart without iframe when responsive is false. - // See https://github.com/chartjs/Chart.js/issues/2210 - if (me.options.responsive) { - helpers.addResizeListener(canvas.parentNode, function() { - me.resize(); - }); - - // Initial resize before chart draws (must be silent to preserve initial animations). - me.resize(true); - } - - me.initialize(); - - return me; - }; - - helpers.extend(Chart.Controller.prototype, /** @lends Chart.Controller */ { - initialize: function() { - var me = this; - - // Before init plugin notification - Chart.plugins.notify('beforeInit', [me]); - - me.bindEvents(); - - // Make sure controllers are built first so that each dataset is bound to an axis before the scales - // are built - me.ensureScalesHaveIDs(); - me.buildOrUpdateControllers(); - me.buildScales(); - me.updateLayout(); - me.resetElements(); - me.initToolTip(); - me.update(); - - // After init plugin notification - Chart.plugins.notify('afterInit', [me]); - - return me; - }, - - clear: function() { - helpers.clear(this.chart); - return this; - }, - - stop: function() { - // Stops any current animation loop occurring - Chart.animationService.cancelAnimation(this); - return this; - }, - - resize: function(silent) { - var me = this; - var chart = me.chart; - var options = me.options; - var canvas = chart.canvas; - var aspectRatio = (options.maintainAspectRatio && chart.aspectRatio) || null; - - // the canvas render width and height will be casted to integers so make sure that - // the canvas display style uses the same integer values to avoid blurring effect. - var newWidth = Math.floor(helpers.getMaximumWidth(canvas)); - var newHeight = Math.floor(aspectRatio? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)); - - if (chart.width === newWidth && chart.height === newHeight) { - return; - } - - canvas.width = chart.width = newWidth; - canvas.height = chart.height = newHeight; - canvas.style.width = newWidth + 'px'; - canvas.style.height = newHeight + 'px'; - - helpers.retinaScale(chart); - - // Notify any plugins about the resize - var newSize = {width: newWidth, height: newHeight}; - Chart.plugins.notify('resize', [me, newSize]); - - // Notify of resize - if (me.options.onResize) { - me.options.onResize(me, newSize); - } - - if (!silent) { - me.stop(); - me.update(me.options.responsiveAnimationDuration); - } - }, - - ensureScalesHaveIDs: function() { - var options = this.options; - var scalesOptions = options.scales || {}; - var scaleOptions = options.scale; - - helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { - xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); - }); - - helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { - yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); - }); - - if (scaleOptions) { - scaleOptions.id = scaleOptions.id || 'scale'; - } - }, - - /** - * Builds a map of scale ID to scale object for future lookup. - */ - buildScales: function() { - var me = this; - var options = me.options; - var scales = me.scales = {}; - var items = []; - - if (options.scales) { - items = items.concat( - (options.scales.xAxes || []).map(function(xAxisOptions) { - return {options: xAxisOptions, dtype: 'category'}; - }), - (options.scales.yAxes || []).map(function(yAxisOptions) { - return {options: yAxisOptions, dtype: 'linear'}; - }) - ); - } - - if (options.scale) { - items.push({options: options.scale, dtype: 'radialLinear', isDefault: true}); - } - - helpers.each(items, function(item) { - var scaleOptions = item.options; - var scaleType = helpers.getValueOrDefault(scaleOptions.type, item.dtype); - var scaleClass = Chart.scaleService.getScaleConstructor(scaleType); - if (!scaleClass) { - return; - } - - var scale = new scaleClass({ - id: scaleOptions.id, - options: scaleOptions, - ctx: me.chart.ctx, - chart: me - }); - - scales[scale.id] = scale; - - // TODO(SB): I think we should be able to remove this custom case (options.scale) - // and consider it as a regular scale part of the "scales"" map only! This would - // make the logic easier and remove some useless? custom code. - if (item.isDefault) { - me.scale = scale; - } - }); - - Chart.scaleService.addScalesToLayout(this); - }, - - updateLayout: function() { - Chart.layoutService.update(this, this.chart.width, this.chart.height); - }, - - buildOrUpdateControllers: function() { - var me = this; - var types = []; - var newControllers = []; - - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - var meta = me.getDatasetMeta(datasetIndex); - if (!meta.type) { - meta.type = dataset.type || me.config.type; - } - - types.push(meta.type); - - if (meta.controller) { - meta.controller.updateIndex(datasetIndex); - } else { - meta.controller = new Chart.controllers[meta.type](me, datasetIndex); - newControllers.push(meta.controller); - } - }, me); - - if (types.length > 1) { - for (var i = 1; i < types.length; i++) { - if (types[i] !== types[i - 1]) { - me.isCombo = true; - break; - } - } - } - - return newControllers; - }, - - /** - * Reset the elements of all datasets - * @method resetElements - * @private - */ - resetElements: function() { - var me = this; - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.reset(); - }, me); - }, - - /** - * Resets the chart back to it's state before the initial animation - * @method reset - */ - reset: function() { - this.resetElements(); - this.tooltip.initialize(); - }, - - update: function(animationDuration, lazy) { - var me = this; - Chart.plugins.notify('beforeUpdate', [me]); - - // In case the entire data object changed - me.tooltip._data = me.data; - - // Make sure dataset controllers are updated and new controllers are reset - var newControllers = me.buildOrUpdateControllers(); - - // Make sure all dataset controllers have correct meta data counts - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); - }, me); - - Chart.layoutService.update(me, me.chart.width, me.chart.height); - - // Apply changes to the datasets that require the scales to have been calculated i.e BorderColor changes - Chart.plugins.notify('afterScaleUpdate', [me]); - - // Can only reset the new controllers after the scales have been updated - helpers.each(newControllers, function(controller) { - controller.reset(); - }); - - me.updateDatasets(); - - // Do this before render so that any plugins that need final scale updates can use it - Chart.plugins.notify('afterUpdate', [me]); - - if (me._bufferedRender) { - me._bufferedRequest = { - lazy: lazy, - duration: animationDuration - }; - } else { - me.render(animationDuration, lazy); - } - }, - - /** - * @method beforeDatasetsUpdate - * @description Called before all datasets are updated. If a plugin returns false, - * the datasets update will be cancelled until another chart update is triggered. - * @param {Object} instance the chart instance being updated. - * @returns {Boolean} false to cancel the datasets update. - * @memberof Chart.PluginBase - * @since version 2.1.5 - * @instance - */ - - /** - * @method afterDatasetsUpdate - * @description Called after all datasets have been updated. Note that this - * extension will not be called if the datasets update has been cancelled. - * @param {Object} instance the chart instance being updated. - * @memberof Chart.PluginBase - * @since version 2.1.5 - * @instance - */ - - /** - * Updates all datasets unless a plugin returns false to the beforeDatasetsUpdate - * extension, in which case no datasets will be updated and the afterDatasetsUpdate - * notification will be skipped. - * @protected - * @instance - */ - updateDatasets: function() { - var me = this; - var i, ilen; - - if (Chart.plugins.notify('beforeDatasetsUpdate', [me])) { - for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { - me.getDatasetMeta(i).controller.update(); - } - - Chart.plugins.notify('afterDatasetsUpdate', [me]); - } - }, - - render: function(duration, lazy) { - var me = this; - Chart.plugins.notify('beforeRender', [me]); - - var animationOptions = me.options.animation; - if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { - var animation = new Chart.Animation(); - animation.numSteps = (duration || animationOptions.duration) / 16.66; // 60 fps - animation.easing = animationOptions.easing; - - // render function - animation.render = function(chartInstance, animationObject) { - var easingFunction = helpers.easingEffects[animationObject.easing]; - var stepDecimal = animationObject.currentStep / animationObject.numSteps; - var easeDecimal = easingFunction(stepDecimal); - - chartInstance.draw(easeDecimal, stepDecimal, animationObject.currentStep); - }; - - // user events - animation.onAnimationProgress = animationOptions.onProgress; - animation.onAnimationComplete = animationOptions.onComplete; - - Chart.animationService.addAnimation(me, animation, duration, lazy); - } else { - me.draw(); - if (animationOptions && animationOptions.onComplete && animationOptions.onComplete.call) { - animationOptions.onComplete.call(me); - } - } - return me; - }, - - draw: function(ease) { - var me = this; - var easingDecimal = ease || 1; - me.clear(); - - Chart.plugins.notify('beforeDraw', [me, easingDecimal]); - - // Draw all the scales - helpers.each(me.boxes, function(box) { - box.draw(me.chartArea); - }, me); - if (me.scale) { - me.scale.draw(); - } - - Chart.plugins.notify('beforeDatasetsDraw', [me, easingDecimal]); - - // Draw each dataset via its respective controller (reversed to support proper line stacking) - helpers.each(me.data.datasets, function(dataset, datasetIndex) { - if (me.isDatasetVisible(datasetIndex)) { - me.getDatasetMeta(datasetIndex).controller.draw(ease); - } - }, me, true); - - Chart.plugins.notify('afterDatasetsDraw', [me, easingDecimal]); - - // Finally draw the tooltip - me.tooltip.transition(easingDecimal).draw(); - - Chart.plugins.notify('afterDraw', [me, easingDecimal]); - }, - - // Get the single element that was clicked on - // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw - getElementAtEvent: function(e) { - return Chart.Interaction.modes.single(this, e); - }, - - getElementsAtEvent: function(e) { - return Chart.Interaction.modes.label(this, e, {intersect: true}); - }, - - getElementsAtXAxis: function(e) { - return Chart.Interaction.modes['x-axis'](this, e, {intersect: true}); - }, - - getElementsAtEventForMode: function(e, mode, options) { - var method = Chart.Interaction.modes[mode]; - if (typeof method === 'function') { - return method(this, e, options); - } - - return []; - }, - - getDatasetAtEvent: function(e) { - return Chart.Interaction.modes.dataset(this, e); - }, - - getDatasetMeta: function(datasetIndex) { - var me = this; - var dataset = me.data.datasets[datasetIndex]; - if (!dataset._meta) { - dataset._meta = {}; - } - - var meta = dataset._meta[me.id]; - if (!meta) { - meta = dataset._meta[me.id] = { - type: null, - data: [], - dataset: null, - controller: null, - hidden: null, // See isDatasetVisible() comment - xAxisID: null, - yAxisID: null - }; - } - - return meta; - }, - - getVisibleDatasetCount: function() { - var count = 0; - for (var i = 0, ilen = this.data.datasets.length; i
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/contest_df_change.php b/web/bsadmin/contest_df_change.php deleted file mode 100644 index 16aabd9..0000000 --- a/web/bsadmin/contest_df_change.php +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/web/bsadmin/contest_edit.php b/web/bsadmin/contest_edit.php deleted file mode 100644 index 2afe593..0000000 --- a/web/bsadmin/contest_edit.php +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    C

    -
    -
      -
    • -
    -
    -
    -
    - ", "", $description); - $description = str_replace("

    ", "
    ", $description); - $description = str_replace(",", ",", $description); - - - $sql = "UPDATE `contest` SET `title`=?,`description`=?,`start_time`=?,`end_time`=?,`private`=?,`langmask`=?,`password`=? WHERE `contest_id`=?"; - //echo $sql; - pdo_query($sql,$title,$description,$starttime,$endtime,$private,$langmask,$password,$cid); - - $sql = "DELETE FROM `contest_problem` WHERE `contest_id`=?"; - pdo_query($sql,$cid); - $plist=trim($_POST['cproblem']); - $pieces = explode(',', $plist); - - if(count($pieces)>0 && strlen($pieces[0])>0){ - $sql_1 = "INSERT INTO `contest_problem`(`contest_id`,`problem_id`,`num`) VALUES (?,?,?)"; - for($i=0; $i0 && strlen($pieces[0])>0){ - $sql_1 = "INSERT INTO `privilege`(`user_id`,`rightstr`) VALUES (?,?)"; - for($i=0; $iwindow.location.href=\"contest_list.php\";"; - exit(); -}else{ - $cid = intval($_GET['cid']); - $sql = "SELECT * FROM `contest` WHERE `contest_id`=?"; - $result = pdo_query($sql,$cid); - - if(count($result)!=1){ - echo "No such Contest!"; - exit(0); - } - - $row = $result[0]; - $starttime = $row['start_time']; - $endtime = $row['end_time']; - $private = $row['private']; - $password = $row['password']; - $langmask = $row['langmask']; - $description = $row['description']; - $title = htmlentities($row['title'],ENT_QUOTES,"UTF-8"); - - $plist = ""; - $sql = "SELECT `problem_id` FROM `contest_problem` WHERE `contest_id`=? ORDER BY `num`"; - $result=pdo_query($sql,$cid); - - foreach($result as $row){ - if($plist) $plist .= ","; - $plist.=$row[0]; - } - - $ulist = ""; - $sql = "SELECT `user_id` FROM `privilege` WHERE `rightstr`=? order by user_id"; - $result = pdo_query($sql,"c$cid"); - - foreach($result as $row){ - if($ulist) $ulist .= "\n"; - $ulist .= $row[0]; - } -} -?> -
    - - > - - - -

    - - 时 - 分 -

    -
    - - 时 - 分 -

    - - - - -

    - - - -

    - - - - - - - - - -
    -

    - -
    - - -

    -
    -

    - : - - : - '> -

    -
    -

    - - -
    - -

    -
    - - - -

    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/contest_list.php b/web/bsadmin/contest_list.php deleted file mode 100644 index 615be31..0000000 --- a/web/bsadmin/contest_list.php +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    -
    -
      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    - - - - - - - - - - - - - - - "; - echo ""; - echo ""; - echo ""; - echo ""; - $cid = $row['contest_id']; - if(isset($_SESSION[$OJ_NAME.'_'.'administrator'])||isset($_SESSION[$OJ_NAME.'_'."m$cid"])){ - echo ""; - echo ""; - echo ""; - echo ""; - if(isset($_SESSION[$OJ_NAME.'_'.'administrator'])){ - echo ""; - }else{ - echo ""; - } - echo ""; - }else{ - echo ""; - echo ""; - } - ?> -
    IDCOPYLOGSSUSPECT
    ".$row['contest_id']."".$row['title']."".$row['start_time']."".$row['end_time']."".($row['private']=="0"?"$MSG_Public":"$MSG_Private")."".($row['defunct']=="N"?"Available":"Reserved")."$MSG_EDITCOPY$MSG_EXPORT LOGSCOPY"; - } - echo "SUSPECT
    - -"; - echo "
  • <<
  • "; - echo "
  • <
  • "; - for($i=$spage; $i<=$epage; $i++){ - echo "
  • ".$i."
  • "; - } - echo "
  • >
  • "; - echo "
  • >>
  • "; - echo ""; -} -?> -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/contest_pr_change.php b/web/bsadmin/contest_pr_change.php deleted file mode 100644 index 79a937a..0000000 --- a/web/bsadmin/contest_pr_change.php +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/web/bsadmin/footer-files.php b/web/bsadmin/footer-files.php deleted file mode 100644 index c922039..0000000 --- a/web/bsadmin/footer-files.php +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - \ No newline at end of file diff --git a/web/bsadmin/header-files.php b/web/bsadmin/header-files.php deleted file mode 100644 index 50cbc60..0000000 --- a/web/bsadmin/header-files.php +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - diff --git a/web/bsadmin/index.php b/web/bsadmin/index.php deleted file mode 100644 index d02ee1a..0000000 --- a/web/bsadmin/index.php +++ /dev/null @@ -1,507 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    最近一周提交记录

    -
    -
      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -

    用户个数

    -
    -
    - -
    -
    - -
    -
    - -
    -
    -

    评测次数

    -
    -
    - -
    -
    - -
    -
    -
    -
    -

    题目个数

    -
    -
    - -
    -
    - -
    -
    -
    -
    -

    竞赛个数

    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -

    DEMOS

    -
    -
      -
    • -
    -
    -
    -
    -
    -
    -
    Hustoj兼容版
    -
    -

    包含普通Hustoj的所有内容,配bshark主题和bsadmin后台

    -
    -
    -
    -
    -
    VegeTableOJ
    -
    -

    自主研发,包含更多丰富内容

    -
    -
    -
    -
    -
    -
    -
    -
    -

    开发人员

    -
    -
      -
    • -
    -
    -
    -
    -
    -
    - ... -
    -
    -
    Yemaster
    -
    -

    主要开发人员

    -
    -
    -
    -
    - ... -
    -
    -
    HP:)
    -
    -

    主要开发人员

    -
    -
    -
    -
    - ... -
    -
    -
    野心
    -
    -

    主要开发人员

    -
    -
    -
    -
    -
    -
    -
    -
    -

    时间线

    -
    -
      -
    • -
    -
    -
    -
    -
      -
    • -
      -
      -
      -
      BShark主题诞生
      -
      -
      -

      2019年8月1日

      -
      -
      -
    • - -
    • -
      -
      -
      -
      BSadmin诞生
      -
      -
      -

      2019年10月23日

      -
      -
      -
    • - -
    • -
      -
      -
      -
      BShark系列开源
      -
      -
      -

      2020年2月10日

      -
      -
      -
    • -
    -
    -
    - -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    欢迎您!Hacker!

    -
    -
      -
    • -
    -
    -
    -
    -

    欢迎您的到来。Hacker!

    -

    想必破解这个后台地址一定费了不少劲吧!

    -

    系统已经自动记录下了您的信息!

    -

    - 您的代理信息:
    - 您的ip地址:
    - 以这个ip注册的用户有:
    - 以这个ip登陆过的用户有:
    -

    -
    -
    -
    -
    -
    -
    -
    -
    -

    开发人员

    -
    -
      -
    • -
    -
    -
    -
    -
    -
    - ... -
    -
    -
    Yemaster
    -
    -

    主要开发人员

    -
    -
    -
    -
    - ... -
    -
    -
    HP:)
    -
    -

    主要开发人员

    -
    -
    -
    -
    - ... -
    -
    -
    野心
    -
    -

    主要开发人员

    -
    -
    -
    -
    -
    -
    -
    -
    -

    时间线

    -
    -
      -
    • -
    -
    -
    -
    -
      -
    • -
      -
      -
      -
      OJ诞生
      -
      -
      -

      2019年2月13日

      -
      -
      -
    • - -
    • -
      -
      -
      -
      用户人数达到180
      -
      -
      -

      2019年7月23日

      -
      -
      -
    • - -
    • -
      -
      -
      -
      采用自主的Bshark主题
      -
      -
      -

      2019年8月1日

      -
      -
      -
    • -
    -
    -
    - -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - - diff --git a/web/bsadmin/kindeditor.php b/web/bsadmin/kindeditor.php deleted file mode 100644 index b00361a..0000000 --- a/web/bsadmin/kindeditor.php +++ /dev/null @@ -1,26 +0,0 @@ - - - - diff --git a/web/bsadmin/msg.txt b/web/bsadmin/msg.txt deleted file mode 100644 index 4ef9bca..0000000 --- a/web/bsadmin/msg.txt +++ /dev/null @@ -1,3 +0,0 @@ -

    - 2333 -

    \ No newline at end of file diff --git a/web/bsadmin/nav.php b/web/bsadmin/nav.php deleted file mode 100644 index f8b2103..0000000 --- a/web/bsadmin/nav.php +++ /dev/null @@ -1,79 +0,0 @@ - - -
    -
    - - -
    - -
    -
      -
    • - -
    • -
    -
    -
    diff --git a/web/bsadmin/news_add.php b/web/bsadmin/news_add.php deleted file mode 100644 index 88d4f44..0000000 --- a/web/bsadmin/news_add.php +++ /dev/null @@ -1,33 +0,0 @@ -", "", $content); -$content = str_replace("

    ", "
    ", $content); -$content = str_replace(",", ",", $content); - -$title=RemoveXSS($title); -$content=RemoveXSS($content); - -$sql = "INSERT INTO news(`user_id`,`title`,`content`,`time`) VALUES(?,?,?,now())"; -pdo_query($sql,$user_id,$title,$content); - -echo ""; -?> diff --git a/web/bsadmin/news_add_page.php b/web/bsadmin/news_add_page.php deleted file mode 100644 index e89e29e..0000000 --- a/web/bsadmin/news_add_page.php +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    新闻添加

    -
    -
      -
    • -
    -
    -
    -
    -
    - - "> - 内容 -
    - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - \ No newline at end of file diff --git a/web/bsadmin/news_df_change.php b/web/bsadmin/news_df_change.php deleted file mode 100644 index fe0b082..0000000 --- a/web/bsadmin/news_df_change.php +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/web/bsadmin/news_edit.php b/web/bsadmin/news_edit.php deleted file mode 100644 index 207408b..0000000 --- a/web/bsadmin/news_edit.php +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - -", "", $content); - $content = str_replace("

    ", "
    ", $content); - $content = str_replace(",", ",", $content); - - $user_id = $_SESSION[$OJ_NAME.'_'.'user_id']; - $news_id = intval($_POST['news_id']); - - if(false){ - $title = stripslashes($title); - $content = stripslashes($content); - } - - - - $title = RemoveXSS($title); - $content = RemoveXSS($content); - - $sql = "UPDATE `news` SET `title`=?,`time`=now(),`content`=?,user_id=? WHERE `news_id`=?"; - echo $sql; - pdo_query($sql,$title,$content,$user_id,$news_id) ; - - ?> -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    新闻修改 N

    -
    -
      -
    • -
    -
    -
    -
    -
    - - - 内容 -
    - > - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/news_list.php b/web/bsadmin/news_list.php deleted file mode 100644 index b1599d7..0000000 --- a/web/bsadmin/news_list.php +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    新闻列表

    -
    -
      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    - - -
    -
    -
    - - - - - - - - - "; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - } - ?> - -
    ID标题更新时间状态复制
    ".$row['news_id']."".$row['title'].""."".$row['time']."".($row['defunct']=="N"?"可用":"不可用").""."复制
    - "; - echo "
  • <<
  • "; - echo "
  • <
  • "; - for($i=$spage; $i<=$epage; $i++){ - echo "
  • ".$i."
  • "; - } - echo "
  • >
  • "; - echo "
  • >>
  • "; - echo ""; -} -?> -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/phpfm.php b/web/bsadmin/phpfm.php deleted file mode 100644 index 769d002..0000000 --- a/web/bsadmin/phpfm.php +++ /dev/null @@ -1,5400 +0,0 @@ -Please Login First!"; - exit(1); -} -// this is not a webshell , and it need administrator / problem editor membership to use, -// if aliyun warn you about this file , don't panic -// 这不是后门(Webshell)文件,不要理会阿里云的误报。 - $charset = "UTF-8"; - //@setlocale(LC_CTYPE, 'C'); - header("Pragma: no-cache"); - header("Cache-Control: no-store"); - header("Content-Type: text/html; charset=".$charset); - //@ini_set('default_charset', $charset); - if (false) { - function stripslashes_deep($value){ - return is_array($value)? array_map('stripslashes_deep', $value):$value; - } - $_POST = array_map('stripslashes_deep', $_POST); - $_GET = array_map('stripslashes_deep', $_GET); - $_COOKIE = array_map('stripslashes_deep', $_COOKIE); - } - // Server Vars - function get_client_ip() { - $ipaddress = ''; - if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; - else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; - else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; - else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; - else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; - else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; - // proxy transparente não esconde o IP local, colocando ele após o IP da rede, separado por vírgula - if (strpos($ipaddress, ',') !== false) { - $ips = explode(',', $ipaddress); - $ipaddress = trim($ips[0]); - } - if ($ipaddress == '::1') $ipaddress = ''; - return $ipaddress; - } - $ip = get_client_ip(); - $islinux = !(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'); - function getServerURL() { - $url = (isset($_SERVER["HTTPS"])&&$_SERVER["HTTPS"] == "on")?"https://":"http://"; - $url .= $_SERVER["SERVER_NAME"]; // $_SERVER["HTTP_HOST"] is equivalent - if ($_SERVER["SERVER_PORT"] != "80") $url .= ":".$_SERVER["SERVER_PORT"]; - return $url; - } - function getCompleteURL() { - return getServerURL().$_SERVER["REQUEST_URI"]; - } - $url = getCompleteURL(); - $url_info = parse_url($url); - if( !isset($_SERVER['DOCUMENT_ROOT']) ) { - if ( isset($_SERVER['SCRIPT_FILENAME']) ) $path = $_SERVER['SCRIPT_FILENAME']; - elseif ( isset($_SERVER['PATH_TRANSLATED']) ) $path = str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']); - $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($path, 0, 0-strlen($_SERVER['PHP_SELF']))); - } - $doc_root = str_replace('//','/',str_replace(DIRECTORY_SEPARATOR,'/',$_SERVER["DOCUMENT_ROOT"])); - $fm_self = $doc_root.$_SERVER["PHP_SELF"]; - $path_info = pathinfo($fm_self); - // Register Globals - $blockKeys = array('_SERVER','_SESSION','_GET','_POST','_COOKIE','charset','ip','islinux','url','url_info','doc_root','fm_self','path_info'); - foreach ($_GET as $key => $val) if (array_search($key,$blockKeys) === false) $$key=$val; - foreach ($_POST as $key => $val) if (array_search($key,$blockKeys) === false) $$key=$val; - foreach ($_COOKIE as $key => $val) if (array_search($key,$blockKeys) === false) $$key=$val; -// +-------------------------------------------------- -// | Config -// +-------------------------------------------------- - $cfg = new config(); - $cfg->load(); - switch ($error_reporting){ - case 0: error_reporting(0); @ini_set("display_errors",0); break; - case 1: error_reporting(E_ERROR | E_PARSE | E_COMPILE_ERROR); @ini_set("display_errors",1); break; - case 2: error_reporting(E_ALL); @ini_set("display_errors",1); break; - } - if(isset($_GET['pid'])){ - $current_dir="$OJ_DATA/".intval($_GET['pid'])."/"; - }else{ - $pid=intval(basename($current_dir)); - if($pid==0) $pid=intval(basename($dir_dest)); - - $current_dir="$OJ_DATA/".intval($pid)."/"; - } - $dir_dest=$current_dir; - if (!isset($current_dir)){ - $current_dir = $path_info["dirname"]."/"; - if (!$islinux) $current_dir = ucfirst($current_dir); - //@chmod($current_dir,0711); - } else $current_dir = format_path($current_dir); - // Auto Expand Local Path - if (!isset($expanded_dir_list)){ - $expanded_dir_list = ""; - $mat = explode("/",$path_info["dirname"]); - for ($x=0;$x$color){ - $fm_color[$tag]=strtolower($color); - } -// +-------------------------------------------------- -// | File Manager Actions -// +-------------------------------------------------- -if ($loggedon==$auth_pass){ - switch ($frame){ - case 1: break; // Empty Frame - case 2: frame2(); break; - case 3: frame3(); break; - default: - switch($action){ - case 1: logout(); break; - case 2: config_form(); break; - case 3: download(); break; - case 4: view(); break; - case 5: server_info(); break; - //case 6: execute_cmd(); break; - case 7: edit_file_form(); break; - //case 8: chmod_form(); break; - //case 9: shell_form(); break; - case 10: upload_form(); break; - //case 11: execute_file(); break; - default: frameset(); - } - } -} else { - if (isset($pass)) login(); - else login_form(); -} -// +-------------------------------------------------- -// | Config Class -// +-------------------------------------------------- -class config { - var $data; - var $filename; - function config(){ - global $fm_self; - global $OJ_LANG; - $this->data = array( - 'lang'=>'en', - 'auth_pass'=>md5(''), - 'quota_mb'=>0, - 'upload_ext_filter'=>array(), - 'download_ext_filter'=>array(), - 'error_reporting'=>1, - 'fm_root'=>'', - 'cookie_cache_time'=>60*60*24*30, // 30 Days - 'version'=>'0.9.8' - ); - $data = false; - $this->filename = $fm_self; - if (file_exists($this->filename)){ - $mat = file($this->filename); - $objdata = trim(substr($mat[1],2)); - if (strlen($objdata)) $data = unserialize($objdata); - } - if (is_array($data)&&count($data)==count($this->data)) $this->data = $data; - else $this->save(); - if($OJ_LANG == "cn" ) $this->data['lang']="cn"; - } - function save(){ - $objdata = "data).chr(13).chr(10); - if (strlen($objdata)){ - if (file_exists($this->filename)){ - $mat = file($this->filename); - if ($fh = @fopen($this->filename, "w")){ - @fputs($fh,$objdata,strlen($objdata)); - for ($x=2;$xdata as $key => $val) $GLOBALS[$key] = $val; - } -} -// +-------------------------------------------------- -// | Internationalization -// +-------------------------------------------------- -function et($tag){ - global $lang; - - // English - by Fabricio Seger Kolling - $en['Version'] = 'Version'; - $en['DocRoot'] = 'Document Root'; - $en['FLRoot'] = 'File Manager Root'; - $en['Name'] = 'Name'; - $en['And'] = 'and'; - $en['Enter'] = 'Enter'; - $en['Send'] = 'Send'; - $en['Refresh'] = 'Refresh'; - $en['SaveConfig'] = 'Save Configurations'; - $en['SavePass'] = 'Save Password'; - $en['SaveFile'] = 'Save File'; - $en['Save'] = 'Save'; - $en['Leave'] = 'Leave'; - $en['Edit'] = 'Edit'; - $en['View'] = 'View'; - $en['Config'] = 'Config'; - $en['Ren'] = 'Rename'; - $en['Rem'] = 'Delete'; - $en['Compress'] = 'Compress'; - $en['Decompress'] = 'Decompress'; - $en['ResolveIDs'] = 'Resolve IDs'; - $en['Move'] = 'Move'; - $en['Copy'] = 'Copy'; - $en['ServerInfo'] = 'Server Info'; - $en['CreateDir'] = 'Create Directory'; - $en['CreateArq'] = 'Create File'; - $en['ExecCmd'] = 'Execute Command'; - $en['Upload'] = 'Upload'; - $en['UploadEnd'] = 'Upload Finished'; - $en['Perm'] = 'Perm'; - $en['Perms'] = 'Permissions'; - $en['Owner'] = 'Owner'; - $en['Group'] = 'Group'; - $en['Other'] = 'Other'; - $en['Size'] = 'Size'; - $en['Date'] = 'Date'; - $en['Type'] = 'Type'; - $en['Free'] = 'free'; - $en['Shell'] = 'Shell'; - $en['Read'] = 'Read'; - $en['Write'] = 'Write'; - $en['Exec'] = 'Execute'; - $en['Apply'] = 'Apply'; - $en['StickyBit'] = 'Sticky Bit'; - $en['Pass'] = 'Password'; - $en['Lang'] = 'Language'; - $en['File'] = 'File'; - $en['File_s'] = 'file(s)'; - $en['Dir_s'] = 'directory(s)'; - $en['To'] = 'to'; - $en['Destination'] = 'Destination'; - $en['Configurations'] = 'Configurations'; - $en['JSError'] = 'JavaScript Error'; - $en['NoSel'] = 'There are no selected itens'; - $en['SelDir'] = 'Select the destination directory on the left tree'; - $en['TypeDir'] = 'Enter the directory name'; - $en['TypeArq'] = 'Enter the file name'; - $en['TypeCmd'] = 'Enter the command'; - $en['TypeArqComp'] = 'Enter the file name.\\nThe extension will define the compression type.\\nEx:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $en['RemSel'] = 'DELETE selected itens'; - $en['NoDestDir'] = 'There is no selected destination directory'; - $en['DestEqOrig'] = 'Origin and destination directories are equal'; - $en['InvalidDest'] = 'Destination directory is invalid'; - $en['NoNewPerm'] = 'New permission not set'; - $en['CopyTo'] = 'COPY to'; - $en['MoveTo'] = 'MOVE to'; - $en['AlterPermTo'] = 'CHANGE PERMISSIONS to'; - $en['ConfExec'] = 'Confirm EXECUTE'; - $en['ConfRem'] = 'Confirm DELETE'; - $en['EmptyDir'] = 'Empty directory'; - $en['IOError'] = 'I/O Error'; - $en['FileMan'] = 'PHP File Manager'; - $en['TypePass'] = 'Enter the password'; - $en['InvPass'] = 'Invalid Password'; - $en['ReadDenied'] = 'Read Access Denied'; - $en['FileNotFound'] = 'File not found'; - $en['AutoClose'] = 'Close on Complete'; - $en['OutDocRoot'] = 'File beyond DOCUMENT_ROOT'; - $en['NoCmd'] = 'Error: Command not informed'; - $en['ConfTrySave'] = 'File without write permisson.\\nTry to save anyway'; - $en['ConfSaved'] = 'Configurations saved'; - $en['PassSaved'] = 'Password saved'; - $en['FileDirExists'] = 'File or directory already exists'; - $en['NoPhpinfo'] = 'Function phpinfo disabled'; - $en['NoReturn'] = 'no return'; - $en['FileSent'] = 'File sent'; - $en['SpaceLimReached'] = 'Space limit reached'; - $en['InvExt'] = 'Invalid extension'; - $en['FileNoOverw'] = 'File could not be overwritten'; - $en['FileOverw'] = 'File overwritten'; - $en['FileIgnored'] = 'File ignored'; - $en['ChkVer'] = 'Check for new version'; - $en['ChkVerAvailable'] = 'New version, click here to begin download!!'; - $en['ChkVerNotAvailable'] = 'No new version available. :('; - $en['ChkVerError'] = 'Connection Error.'; - $en['Website'] = 'Website'; - $en['SendingForm'] = 'Sending files, please wait'; - $en['NoFileSel'] = 'No file selected'; - $en['SelAll'] = 'All'; - $en['SelNone'] = 'None'; - $en['SelInverse'] = 'Inverse'; - $en['Selected_s'] = 'selected'; - $en['Total'] = 'total'; - $en['Partition'] = 'Partition'; - $en['RenderTime'] = 'Time to render this page'; - $en['Seconds'] = 'sec'; - $en['ErrorReport'] = 'Error Reporting'; - $en['Random-data'] = 'Random-data generator'; - - // chinese - $cn['Version'] = '版本'; - $cn['DocRoot'] = '根目录'; - $cn['FLRoot'] = '文件管理器根目录'; - $cn['Name'] = '名字'; - $cn['And'] = '和'; - $cn['Enter'] = '进入'; - $cn['Send'] = '发送'; - $cn['Refresh'] = '刷新'; - $cn['SaveConfig'] = '保存配置'; - $cn['SavePass'] = '保存密码'; - $cn['SaveFile'] = '保存文件'; - $cn['Save'] = '保存'; - $cn['Leave'] = '退出'; - $cn['Edit'] = '编辑'; - $cn['View'] = '查看'; - $cn['Config'] = '配置'; - $cn['Ren'] = '重命名'; - $cn['Rem'] = '删除'; - $cn['Compress'] = '压缩'; - $cn['Decompress'] = '解压'; - $cn['ResolveIDs'] = '刷新/解析ID'; - $cn['Move'] = '移动'; - $cn['Copy'] = '复制'; - $cn['ServerInfo'] = '服务器信息'; - $cn['CreateDir'] = '创建目录'; - $cn['CreateArq'] = '创建文件'; - $cn['ExecCmd'] = '执行命令'; - $cn['Upload'] = '上传'; - $cn['UploadEnd'] = '上传完成'; - $cn['Perms'] = '权限'; - $cn['Owner'] = '所有者'; - $cn['Group'] = '组群'; - $cn['Other'] = '其他'; - $cn['Size'] = '大小'; - $cn['Date'] = '日期'; - $cn['Type'] = '类型'; - $cn['Free'] = '空闲'; - $cn['Shell'] = '控制台'; - $cn['Read'] = '读'; - $cn['Write'] = '写'; - $cn['Exec'] = '执行'; - $cn['Apply'] = '应用'; - $cn['StickyBit'] = 'Sticky Bit'; - $cn['Pass'] = '密码'; - $cn['Lang'] = '语言'; - $cn['File'] = '文件'; - $cn['File_s'] = '文件'; - $cn['Dir_s'] = '目录'; - $cn['To'] = '到'; - $cn['Destination'] = '目标'; - $cn['Configurations'] = '配置'; - $cn['JSError'] = 'JS脚本错误'; - $cn['NoSel'] = '未选择文件或目录'; - $cn['SelDir'] = '在左边的目录树中选择目标目录'; - $cn['TypeDir'] = '请输入目录名'; - $cn['TypeArq'] = '请输入文件名'; - $cn['TypeCmd'] = '请输入命令'; - $cn['TypeArqComp'] = '请输入文件名.扩展名将确定其压缩格式.\\n如:file.zip, file.tar, file.bzip, file.gzip'; - $cn['RemSel'] = '删除选中项'; - $cn['NoDestDir'] = '未选择目标目录'; - $cn['DestEqOrig'] = '目标目录和原始目录相同'; - $cn['InvalidDest'] = '目标目录错误'; - $cn['NoNewPerm'] = '新权限未设置'; - $cn['CopyTo'] = '复制到'; - $cn['MoveTo'] = '移动到'; - $cn['AlterPermTo'] = '更改权限为'; - $cn['ConfExec'] = '确认执行'; - $cn['ConfRem'] = '确认删除'; - $cn['EmptyDir'] = '空目录'; - $cn['IOError'] = 'I/O 错误'; - $cn['FileMan'] = 'PHP 文件管理器'; - $cn['TypePass'] = '请输入密码'; - $cn['InvPass'] = '密码错误'; - $cn['ReadDenied'] = '访问被拒绝'; - $cn['FileNotFound'] = '文件不存在'; - $cn['AutoClose'] = '完成后关闭'; - $cn['OutDocRoot'] = '文件不在根目录中'; - $cn['NoCmd'] = '错误: 命令不正确'; - $cn['ConfTrySave'] = '文件不可写.\\n请尝试保存在其他地方'; - $cn['ConfSaved'] = '配置已保存'; - $cn['PassSaved'] = '密码已保存'; - $cn['FileDirExists'] = '文件或目录已存在'; - $cn['NoPhpinfo'] = '函数 phpinfo 已禁用'; - $cn['NoReturn'] = '无返回'; - $cn['FileSent'] = '发送文件'; - $cn['SpaceLimReached'] = '空间限制'; - $cn['InvExt'] = '非法扩展名'; - $cn['FileNoOverw'] = '文件无法覆盖'; - $cn['FileOverw'] = '覆盖'; - $cn['FileIgnored'] = '忽略'; - $cn['ChkVer'] = '从 sf.net 查询新版本'; - $cn['ChkVerAvailable'] = '发现新版本, 请点击这里下载!!'; - $cn['ChkVerNotAvailable'] = '当前无新版本可用. :('; - $cn['ChkVerError'] = '连接错误.'; - $cn['Website'] = '站点'; - $cn['SendingForm'] = '正在发送文件,请稍后'; - $cn['NoFileSel'] = '未选择文件'; - $cn['SelAll'] = '全选'; - $cn['SelNone'] = '不选'; - $cn['SelInverse'] = '反选'; - $cn['Selected_s'] = '已选择'; - $cn['Total'] = '总数'; - $cn['Partition'] = '磁盘分区'; - $cn['RenderTime'] = '页面执行时间'; - $cn['Seconds'] = '秒'; - $cn['ErrorReport'] = '错误报告'; - $en['Random-data'] = '随机测试数据生成器'; - - // Portuguese by - Fabricio Seger Kolling - $pt['Version'] = 'Versão'; - $pt['DocRoot'] = 'Document Root'; - $pt['FLRoot'] = 'File Manager Root'; - $pt['Name'] = 'Nome'; - $pt['And'] = 'e'; - $pt['Enter'] = 'Entrar'; - $pt['Send'] = 'Enviar'; - $pt['Refresh'] = 'Atualizar'; - $pt['SaveConfig'] = 'Salvar Configurações'; - $pt['SavePass'] = 'Salvar Senha'; - $pt['SaveFile'] = 'Salvar Arquivo'; - $pt['Save'] = 'Salvar'; - $pt['Leave'] = 'Sair'; - $pt['Edit'] = 'Editar'; - $pt['View'] = 'Visualizar'; - $pt['Config'] = 'Config'; - $pt['Ren'] = 'Renomear'; - $pt['Rem'] = 'Apagar'; - $pt['Compress'] = 'Compactar'; - $pt['Decompress'] = 'Descompactar'; - $pt['ResolveIDs'] = 'Resolver IDs'; - $pt['Move'] = 'Mover'; - $pt['Copy'] = 'Copiar'; - $pt['ServerInfo'] = 'Server Info'; - $pt['CreateDir'] = 'Criar Diretório'; - $pt['CreateArq'] = 'Criar Arquivo'; - $pt['ExecCmd'] = 'Executar Comando'; - $pt['Upload'] = 'Upload'; - $pt['UploadEnd'] = 'Upload Terminado'; - $pt['Perm'] = 'Perm'; - $pt['Perms'] = 'Permissões'; - $pt['Owner'] = 'Dono'; - $pt['Group'] = 'Grupo'; - $pt['Other'] = 'Outros'; - $pt['Size'] = 'Tamanho'; - $pt['Date'] = 'Data'; - $pt['Type'] = 'Tipo'; - $pt['Free'] = 'livre'; - $pt['Shell'] = 'Shell'; - $pt['Read'] = 'Ler'; - $pt['Write'] = 'Escrever'; - $pt['Exec'] = 'Executar'; - $pt['Apply'] = 'Aplicar'; - $pt['StickyBit'] = 'Sticky Bit'; - $pt['Pass'] = 'Senha'; - $pt['Lang'] = 'Idioma'; - $pt['File'] = 'Arquivo'; - $pt['File_s'] = 'arquivo(s)'; - $pt['Dir_s'] = 'diretorio(s)'; - $pt['To'] = 'para'; - $pt['Destination'] = 'Destino'; - $pt['Configurations'] = 'Configurações'; - $pt['JSError'] = 'Erro de JavaScript'; - $pt['NoSel'] = 'Não há itens selecionados'; - $pt['SelDir'] = 'Selecione o diretório de destino na árvore a esquerda'; - $pt['TypeDir'] = 'Digite o nome do diretório'; - $pt['TypeArq'] = 'Digite o nome do arquivo'; - $pt['TypeCmd'] = 'Digite o commando'; - $pt['TypeArqComp'] = 'Digite o nome do arquivo.\\nA extensão determina o tipo de compactação.\\nEx:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $pt['RemSel'] = 'APAGAR itens selecionados'; - $pt['NoDestDir'] = 'Não há um diretório de destino selecionado'; - $pt['DestEqOrig'] = 'Diretório de origem e destino iguais'; - $pt['InvalidDest'] = 'Diretório de destino inválido'; - $pt['NoNewPerm'] = 'Nova permissão não foi setada'; - $pt['CopyTo'] = 'COPIAR para'; - $pt['MoveTo'] = 'MOVER para'; - $pt['AlterPermTo'] = 'ALTERAR PERMISSÕES para'; - $pt['ConfExec'] = 'Confirma EXECUTAR'; - $pt['ConfRem'] = 'Confirma APAGAR'; - $pt['EmptyDir'] = 'Diretório vazio'; - $pt['IOError'] = 'Erro de E/S'; - $pt['FileMan'] = 'PHP File Manager'; - $pt['TypePass'] = 'Digite a senha'; - $pt['InvPass'] = 'Senha Inválida'; - $pt['ReadDenied'] = 'Acesso de leitura negado'; - $pt['FileNotFound'] = 'Arquivo não encontrado'; - $pt['AutoClose'] = 'Fechar Automaticamente'; - $pt['OutDocRoot'] = 'Arquivo fora do DOCUMENT_ROOT'; - $pt['NoCmd'] = 'Erro: Comando não informado'; - $pt['ConfTrySave'] = 'Arquivo sem permissão de escrita.\\nTentar salvar assim mesmo'; - $pt['ConfSaved'] = 'Configurações salvas'; - $pt['PassSaved'] = 'Senha salva'; - $pt['FileDirExists'] = 'Arquivo ou diretório já existe'; - $pt['NoPhpinfo'] = 'Função phpinfo desabilitada'; - $pt['NoReturn'] = 'sem retorno'; - $pt['FileSent'] = 'Arquivo enviado'; - $pt['SpaceLimReached'] = 'Limite de espaço alcançado'; - $pt['InvExt'] = 'Extensão inválida'; - $pt['FileNoOverw'] = 'Arquivo não pode ser sobreescrito'; - $pt['FileOverw'] = 'Arquivo sobreescrito'; - $pt['FileIgnored'] = 'Arquivo omitido'; - $pt['ChkVer'] = 'Verificar por nova versão'; - $pt['ChkVerAvailable'] = 'Nova versão, clique aqui para iniciar download!!'; - $pt['ChkVerNotAvailable'] = 'Não há nova versão disponível. :('; - $pt['ChkVerError'] = 'Erro de conexão.'; - $pt['Website'] = 'Website'; - $pt['SendingForm'] = 'Enviando arquivos, aguarde'; - $pt['NoFileSel'] = 'Nenhum arquivo selecionado'; - $pt['SelAll'] = 'Tudo'; - $pt['SelNone'] = 'Nada'; - $pt['SelInverse'] = 'Inverso'; - $pt['Selected_s'] = 'selecionado(s)'; - $pt['Total'] = 'total'; - $pt['Partition'] = 'Partição'; - $pt['RenderTime'] = 'Tempo para gerar esta página'; - $pt['Seconds'] = 'seg'; - $pt['ErrorReport'] = 'Error Reporting'; - - // Spanish - by Sh Studios - $es['Version'] = 'Versión'; - $es['DocRoot'] = 'Raiz del programa'; - $es['FLRoot'] = 'Raiz del administrador de archivos'; - $es['Name'] = 'Nombre'; - $es['And'] = 'y'; - $es['Enter'] = 'Enter'; - $es['Send'] = 'Enviar'; - $es['Refresh'] = 'Refrescar'; - $es['SaveConfig'] = 'Guardar configuraciones'; - $es['SavePass'] = 'Cuardar Contraseña'; - $es['SaveFile'] = 'Guardar Archivo'; - $es['Save'] = 'Guardar'; - $es['Leave'] = 'Salir'; - $es['Edit'] = 'Editar'; - $es['View'] = 'Mirar'; - $es['Config'] = 'Config.'; - $es['Ren'] = 'Renombrar'; - $es['Rem'] = 'Borrar'; - $es['Compress'] = 'Comprimir'; - $es['Decompress'] = 'Decomprimir'; - $es['ResolveIDs'] = 'Resolver IDs'; - $es['Move'] = 'Mover'; - $es['Copy'] = 'Copiar'; - $es['ServerInfo'] = 'Info del Server'; - $es['CreateDir'] = 'Crear Directorio'; - $es['CreateArq'] = 'Crear Archivo'; - $es['ExecCmd'] = 'Ejecutar Comando'; - $es['Upload'] = 'Subir'; - $es['UploadEnd'] = 'Subida exitosa'; - $es['Perm'] = 'Perm'; - $es['Perms'] = 'Permisiones'; - $es['Owner'] = 'Propietario'; - $es['Group'] = 'Grupo'; - $es['Other'] = 'Otro'; - $es['Size'] = 'Tamaño'; - $es['Date'] = 'Fecha'; - $es['Type'] = 'Tipo'; - $es['Free'] = 'libre'; - $es['Shell'] = 'Ejecutar'; - $es['Read'] = 'Leer'; - $es['Write'] = 'Escribir'; - $es['Exec'] = 'Ejecutar'; - $es['Apply'] = 'Aplicar'; - $es['StickyBit'] = 'Sticky Bit'; - $es['Pass'] = 'Contraseña'; - $es['Lang'] = 'Lenguage'; - $es['File'] = 'Archivos'; - $es['File_s'] = 'archivo(s)'; - $es['Dir_s'] = 'directorio(s)'; - $es['To'] = 'a'; - $es['Destination'] = 'Destino'; - $es['Configurations'] = 'Configuracion'; - $es['JSError'] = 'Error de JavaScript'; - $es['NoSel'] = 'No hay items seleccionados'; - $es['SelDir'] = 'Seleccione el directorio de destino en el arbol derecho'; - $es['TypeDir'] = 'Escriba el nombre del directorio'; - $es['TypeArq'] = 'Escriba el nombre del archivo'; - $es['TypeCmd'] = 'Escriba el comando'; - $es['TypeArqComp'] = 'Escriba el nombre del directorio.\\nLa extension definira el tipo de compresion.\\nEj:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $es['RemSel'] = 'BORRAR items seleccionados'; - $es['NoDestDir'] = 'No se ha seleccionado el directorio de destino'; - $es['DestEqOrig'] = 'El origen y el destino son iguales'; - $es['InvalidDest'] = 'El destino del directorio es invalido'; - $es['NoNewPerm'] = 'Las permisiones no se pudieron establecer'; - $es['CopyTo'] = 'COPIAR a'; - $es['MoveTo'] = 'MOVER a'; - $es['AlterPermTo'] = 'CAMBIAR PERMISIONES a'; - $es['ConfExec'] = 'Confirmar EJECUCION'; - $es['ConfRem'] = 'Confirmar BORRADO'; - $es['EmptyDir'] = 'Directorio Vacio'; - $es['IOError'] = 'Error I/O'; - $es['FileMan'] = 'PHP File Manager'; - $es['TypePass'] = 'Escriba la contraseña'; - $es['InvPass'] = 'Contraseña invalida'; - $es['ReadDenied'] = 'Acceso de lectura denegado'; - $es['FileNotFound'] = 'Archivo no encontrado'; - $es['AutoClose'] = 'Cerrar al completar'; - $es['OutDocRoot'] = 'Archivo antes de DOCUMENT_ROOT'; - $es['NoCmd'] = 'Error: No se ha escrito ningun comando'; - $es['ConfTrySave'] = 'Archivo sin permisos de escritura.\\nIntente guardar en otro lugar'; - $es['ConfSaved'] = 'Configuracion Guardada'; - $es['PassSaved'] = 'Contraseña guardada'; - $es['FileDirExists'] = 'Archivo o directorio ya existente'; - $es['NoPhpinfo'] = 'Funcion phpinfo() inhabilitada'; - $es['NoReturn'] = 'sin retorno'; - $es['FileSent'] = 'Archivo enviado'; - $es['SpaceLimReached'] = 'Limite de espacio en disco alcanzado'; - $es['InvExt'] = 'Extension inalida'; - $es['FileNoOverw'] = 'El archivo no pudo ser sobreescrito'; - $es['FileOverw'] = 'Archivo sobreescrito'; - $es['FileIgnored'] = 'Archivo ignorado'; - $es['ChkVer'] = 'Chequear las actualizaciones'; - $es['ChkVerAvailable'] = 'Nueva version, haga click aqui para descargar!!'; - $es['ChkVerNotAvailable'] = 'Su version es la mas reciente.'; - $es['ChkVerError'] = 'Error de coneccion.'; - $es['Website'] = 'Sitio Web'; - $es['SendingForm'] = 'Enviando archivos, espere!'; - $es['NoFileSel'] = 'Ningun archivo seleccionado'; - $es['SelAll'] = 'Todos'; - $es['SelNone'] = 'Ninguno'; - $es['SelInverse'] = 'Inverso'; - $es['Selected_s'] = 'seleccionado'; - $es['Total'] = 'total'; - $es['Partition'] = 'Particion'; - $es['RenderTime'] = 'Generado en'; - $es['Seconds'] = 'seg'; - $es['ErrorReport'] = 'Reporte de error'; - - // Korean - by Airplanez - $kr['Version'] = '버전'; - $kr['DocRoot'] = '웹서버 루트'; - $kr['FLRoot'] = '파일 매니저 루트'; - $kr['Name'] = '이름'; - $kr['Enter'] = '입력'; - $kr['Send'] = '전송'; - $kr['Refresh'] = '새로고침'; - $kr['SaveConfig'] = '환경 저장'; - $kr['SavePass'] = '비밀번호 저장'; - $kr['SaveFile'] = '파일 저장'; - $kr['Save'] = '저장'; - $kr['Leave'] = '나가기'; - $kr['Edit'] = '수정'; - $kr['View'] = '보기'; - $kr['Config'] = '환경'; - $kr['Ren'] = '이름바꾸기'; - $kr['Rem'] = '삭제'; - $kr['Compress'] = '압축하기'; - $kr['Decompress'] = '압축풀기'; - $kr['ResolveIDs'] = '소유자'; - $kr['Move'] = '이동'; - $kr['Copy'] = '복사'; - $kr['ServerInfo'] = '서버 정보'; - $kr['CreateDir'] = '디렉토리 생성'; - $kr['CreateArq'] = '파일 생성'; - $kr['ExecCmd'] = '명령 실행'; - $kr['Upload'] = '업로드'; - $kr['UploadEnd'] = '업로드가 완료되었습니다.'; - $kr['Perm'] = '권한'; - $kr['Perms'] = '권한'; - $kr['Owner'] = '소유자'; - $kr['Group'] = '그룹'; - $kr['Other'] = '모든사용자'; - $kr['Size'] = '크기'; - $kr['Date'] = '날짜'; - $kr['Type'] = '종류'; - $kr['Free'] = '여유'; - $kr['Shell'] = '쉘'; - $kr['Read'] = '읽기'; - $kr['Write'] = '쓰기'; - $kr['Exec'] = '실행'; - $kr['Apply'] = '적용'; - $kr['StickyBit'] = '스티키 비트'; - $kr['Pass'] = '비밀번호'; - $kr['Lang'] = '언어'; - $kr['File'] = '파일'; - $kr['File_s'] = '파일'; - $kr['To'] = '으로'; - $kr['Destination'] = '대상'; - $kr['Configurations'] = '환경'; - $kr['JSError'] = '자바스크립트 오류'; - $kr['NoSel'] = '선택된 것이 없습니다'; - $kr['SelDir'] = '왼쪽리스트에서 대상 디렉토리를 선택하세요'; - $kr['TypeDir'] = '디렉토리명을 입력하세요'; - $kr['TypeArq'] = '파일명을 입력하세요'; - $kr['TypeCmd'] = '명령을 입력하세요'; - $kr['TypeArqComp'] = '파일명을 입력하세요.\\n확장자에 따라 압축형식이 정해집니다.\\n예:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $kr['RemSel'] = '선택된 것을 삭제했습니다'; - $kr['NoDestDir'] = '선택된 대상 디렉토리가 없습니다.'; - $kr['DestEqOrig'] = '원래 디렉토리와 대상 디렉토리가 같습니다'; - $kr['NoNewPerm'] = '새로운 권한이 설정되지 않았습니다'; - $kr['CopyTo'] = '여기에 복사'; - $kr['MoveTo'] = '여기로 이동'; - $kr['AlterPermTo'] = '으로 권한변경'; - $kr['ConfExec'] = '실행 확인'; - $kr['ConfRem'] = '삭제 확인'; - $kr['EmptyDir'] = '빈 디렉토리'; - $kr['IOError'] = '입/출력 오류'; - $kr['FileMan'] = 'PHP 파일 매니저'; - $kr['TypePass'] = '비밀번호를 입력하세요'; - $kr['InvPass'] = '비밀번호가 틀립니다'; - $kr['ReadDenied'] = '읽기가 거부되었습니다'; - $kr['FileNotFound'] = '파일이 없습니다'; - $kr['AutoClose'] = '완료후 닫기'; - $kr['OutDocRoot'] = 'DOCUMENT_ROOT 이내의 파일이 아닙니다'; - $kr['NoCmd'] = '오류: 명령이 실행되지 않았습니다'; - $kr['ConfTrySave'] = '파일에 쓰기 권한이 없습니다.\\n그래도 저장하시겠습니까'; - $kr['ConfSaved'] = '환경이 저장되었습니다'; - $kr['PassSaved'] = '비밀번호 저장'; - $kr['FileDirExists'] = '파일 또는 디렉토리가 이미 존재합니다'; - $kr['NoPhpinfo'] = 'PHPINFO()를 사용할수 없습니다'; - $kr['NoReturn'] = '반환값 없음'; - $kr['FileSent'] = '파일 전송'; - $kr['SpaceLimReached'] = '저장공가 여유가 없습니다'; - $kr['InvExt'] = '유효하지 않은 확장자'; - $kr['FileNoOverw'] = '파일을 덮어 쓸수 없습니다'; - $kr['FileOverw'] = '파일을 덮어 썼습니다'; - $kr['FileIgnored'] = '파일이 무시되었습니다'; - $kr['ChkVer'] = '에서 새버전 확인'; - $kr['ChkVerAvailable'] = '새로운 버전이 있습니다. 다운받으려면 클릭하세요!!'; - $kr['ChkVerNotAvailable'] = '새로운 버전이 없습니다. :('; - $kr['ChkVerError'] = '연결 오류'; - $kr['Website'] = '웹사이트'; - $kr['SendingForm'] = '파일을 전송중입니다. 기다리세요'; - $kr['NoFileSel'] = '파일이 선택되지 않았습니다'; - $kr['SelAll'] = '모든'; - $kr['SelNone'] = '제로'; - $kr['SelInverse'] = '역'; - - // German - by Guido Ogrzal - $de1['Version'] = 'Version'; - $de1['DocRoot'] = 'Dokument Wurzelverzeichnis'; - $de1['FLRoot'] = 'Dateimanager Wurzelverzeichnis'; - $de1['Name'] = 'Name'; - $de1['And'] = 'und'; - $de1['Enter'] = 'Eintreten'; - $de1['Send'] = 'Senden'; - $de1['Refresh'] = 'Aktualisieren'; - $de1['SaveConfig'] = 'Konfiguration speichern'; - $de1['SavePass'] = 'Passwort speichern'; - $de1['SaveFile'] = 'Datei speichern'; - $de1['Save'] = 'Speichern'; - $de1['Leave'] = 'Verlassen'; - $de1['Edit'] = 'Bearbeiten'; - $de1['View'] = 'Ansehen'; - $de1['Config'] = 'Konfigurieren'; - $de1['Ren'] = 'Umbenennen'; - $de1['Rem'] = 'Löschen'; - $de1['Compress'] = 'Komprimieren'; - $de1['Decompress'] = 'Dekomprimieren'; - $de1['ResolveIDs'] = 'Resolve IDs'; - $de1['Move'] = 'Verschieben'; - $de1['Copy'] = 'Kopieren'; - $de1['ServerInfo'] = 'Server-Info'; - $de1['CreateDir'] = 'Neues Verzeichnis'; - $de1['CreateArq'] = 'Neue Datei'; - $de1['ExecCmd'] = 'Kommando'; - $de1['Upload'] = 'Datei hochladen'; - $de1['UploadEnd'] = 'Datei hochladen beendet'; - $de1['Perm'] = 'Erlaubnis'; - $de1['Perms'] = 'Erlaubnis'; - $de1['Owner'] = 'Besitzer'; - $de1['Group'] = 'Gruppe'; - $de1['Other'] = 'Andere'; - $de1['Size'] = 'Größe'; - $de1['Date'] = 'Datum'; - $de1['Type'] = 'Typ'; - $de1['Free'] = 'frei'; - $de1['Shell'] = 'Shell'; - $de1['Read'] = 'Lesen'; - $de1['Write'] = 'Schreiben'; - $de1['Exec'] = 'Ausführen'; - $de1['Apply'] = 'Bestätigen'; - $de1['StickyBit'] = 'Sticky Bit'; - $de1['Pass'] = 'Passwort'; - $de1['Lang'] = 'Sprache'; - $de1['File'] = 'Datei'; - $de1['File_s'] = 'Datei(en)'; - $de1['Dir_s'] = 'Verzeichniss(e)'; - $de1['To'] = '->'; - $de1['Destination'] = 'Ziel'; - $de1['Configurations'] = 'Konfiguration'; - $de1['JSError'] = 'JavaScript Fehler'; - $de1['NoSel'] = 'Es gibt keine selektierten Objekte'; - $de1['SelDir'] = 'Selektiere das Zielverzeichnis im linken Verzeichnisbaum'; - $de1['TypeDir'] = 'Trage den Verzeichnisnamen ein'; - $de1['TypeArq'] = 'Trage den Dateinamen ein'; - $de1['TypeCmd'] = 'Gib das Kommando ein'; - $de1['TypeArqComp'] = 'Trage den Dateinamen ein.\\nDie Dateierweiterung wird den Kompressiontyp bestimmen.\\nBsp.:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $de1['RemSel'] = 'LÖSCHE die selektierten Objekte'; - $de1['NoDestDir'] = 'Das selektierte Zielverzeichnis existiert nicht'; - $de1['DestEqOrig'] = 'Quell- und Zielverzeichnis stimmen überein'; - $de1['InvalidDest'] = 'Zielverzeichnis ist ungültig'; - $de1['NoNewPerm'] = 'Neue Zugriffserlaubnis konnte nicht gesetzt werden'; - $de1['CopyTo'] = 'KOPIERE nach'; - $de1['MoveTo'] = 'VERSCHIEBE nach'; - $de1['AlterPermTo'] = 'ÄNDERE ZUGRIFFSERLAUBSNIS in'; - $de1['ConfExec'] = 'Bestätige AUSFÜHRUNG'; - $de1['ConfRem'] = 'Bestätige LÖSCHEN'; - $de1['EmptyDir'] = 'Leeres Verzeichnis'; - $de1['IOError'] = 'Eingabe/Ausgabe-Fehler'; - $de1['FileMan'] = 'PHP File Manager'; - $de1['TypePass'] = 'Trage das Passwort ein'; - $de1['InvPass'] = 'Ungültiges Passwort'; - $de1['ReadDenied'] = 'Lesezugriff verweigert'; - $de1['FileNotFound'] = 'Datei nicht gefunden'; - $de1['AutoClose'] = 'Schließen, wenn fertig'; - $de1['OutDocRoot'] = 'Datei außerhalb von DOCUMENT_ROOT'; - $de1['NoCmd'] = 'Fehler: Es wurde kein Kommando eingetragen'; - $de1['ConfTrySave'] = 'Keine Schreibberechtigung für die Datei.\\nVersuche trotzdem zu speichern'; - $de1['ConfSaved'] = 'Konfiguration gespeichert'; - $de1['PassSaved'] = 'Passwort gespeichert'; - $de1['FileDirExists'] = 'Datei oder Verzeichnis existiert schon'; - $de1['NoPhpinfo'] = 'Funktion phpinfo ist inaktiv'; - $de1['NoReturn'] = 'keine Rückgabe'; - $de1['FileSent'] = 'Datei wurde gesendet'; - $de1['SpaceLimReached'] = 'Verfügbares Speicherlimit wurde erreicht'; - $de1['InvExt'] = 'Ungültige Dateiendung'; - $de1['FileNoOverw'] = 'Datei kann nicht überschrieben werden'; - $de1['FileOverw'] = 'Datei überschrieben'; - $de1['FileIgnored'] = 'Datei ignoriert'; - $de1['ChkVer'] = 'Prüfe auf neue Version'; - $de1['ChkVerAvailable'] = 'Neue Version verfügbar; klicke hier, um den Download zu starten!!'; - $de1['ChkVerNotAvailable'] = 'Keine neue Version gefunden. :('; - $de1['ChkVerError'] = 'Verbindungsfehler.'; - $de1['Website'] = 'Webseite'; - $de1['SendingForm'] = 'Sende Dateien... Bitte warten.'; - $de1['NoFileSel'] = 'Keine Datei selektiert'; - $de1['SelAll'] = 'Alle'; - $de1['SelNone'] = 'Keine'; - $de1['SelInverse'] = 'Invertieren'; - $de1['Selected_s'] = 'selektiert'; - $de1['Total'] = 'Gesamt'; - $de1['Partition'] = 'Partition'; - $de1['RenderTime'] = 'Zeit, um die Seite anzuzeigen'; - $de1['Seconds'] = 's'; - $de1['ErrorReport'] = 'Fehlerreport'; - - // German - by AXL - $de2['Version'] = 'Version'; - $de2['DocRoot'] = 'Document Stammverzeichnis'; - $de2['FLRoot'] = 'Datei Manager Stammverzeichnis'; - $de2['Name'] = 'Name'; - $de2['And'] = 'und'; - $de2['Enter'] = 'Enter'; - $de2['Send'] = 'Senden'; - $de2['Refresh'] = 'Aktualisieren'; - $de2['SaveConfig'] = 'Konfiguration speichern'; - $de2['SavePass'] = 'Passwort speichern'; - $de2['SaveFile'] = 'Datei speichern'; - $de2['Save'] = 'Speichern'; - $de2['Leave'] = 'Verlassen'; - $de2['Edit'] = 'Bearb.'; - $de2['View'] = 'Anzeigen'; - $de2['Config'] = 'Konfigurieren'; - $de2['Ren'] = 'Umb.'; - $de2['Rem'] = 'Löschen'; - $de2['Compress'] = 'Komprimieren'; - $de2['Decompress'] = 'De-Komprimieren'; - $de2['ResolveIDs'] = 'IDs auflösen'; - $de2['Move'] = 'Versch.'; - $de2['Copy'] = 'Kopie'; - $de2['ServerInfo'] = 'Server Info'; - $de2['CreateDir'] = 'Verzeichnis erstellen'; - $de2['CreateArq'] = 'Datei erstellen'; - $de2['ExecCmd'] = 'Befehl ausführen'; - $de2['Upload'] = 'Upload'; - $de2['UploadEnd'] = 'Upload abgeschlossen'; - $de2['Perm'] = 'Rechte'; - $de2['Perms'] = 'Rechte'; - $de2['Owner'] = 'Besitzer'; - $de2['Group'] = 'Gruppe'; - $de2['Other'] = 'Andere'; - $de2['Size'] = 'Größe'; - $de2['Date'] = 'Datum'; - $de2['Type'] = 'Typ'; - $de2['Free'] = 'frei'; - $de2['Shell'] = 'Shell'; - $de2['Read'] = 'Read'; - $de2['Write'] = 'Write'; - $de2['Exec'] = 'Execute'; - $de2['Apply'] = 'Anwenden'; - $de2['StickyBit'] = 'Sticky Bit'; - $de2['Pass'] = 'Passwort'; - $de2['Lang'] = 'Sprache'; - $de2['File'] = 'Datei'; - $de2['File_s'] = 'Datei(en)'; - $de2['Dir_s'] = 'Verzeichnis(se)'; - $de2['To'] = 'an'; - $de2['Destination'] = 'Ziel'; - $de2['Configurations'] = 'Konfigurationen'; - $de2['JSError'] = 'JavaScript Fehler'; - $de2['NoSel'] = 'Keine Einträge ausgewählt'; - $de2['SelDir'] = 'Wählen Sie das Zeilverzeichnis im Verzeichnis links'; - $de2['TypeDir'] = 'Geben Sie den Verzeichnisnamen ein'; - $de2['TypeArq'] = 'Geben Sie den Dateinamen ein'; - $de2['TypeCmd'] = 'Geben Sie den Befehl ein'; - $de2['TypeArqComp'] = 'Geben Sie den Dateinamen ein.\\nDie Datei-Extension legt den Kopressionstyp fest.\\nBeispiel:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $de2['RemSel'] = 'Ausgewählte Dateien LÖSCHEN'; - $de2['NoDestDir'] = 'Es wurde kein Zielverzeichnis angegeben'; - $de2['DestEqOrig'] = 'Quell- und Zielverzeichnis sind identisch'; - $de2['InvalidDest'] = 'Zielverzeichnis ungültig'; - $de2['NoNewPerm'] = 'Unzureichende Rechte'; - $de2['CopyTo'] = 'KOPIEREN nach'; - $de2['MoveTo'] = 'VERSCHIEBEN nach'; - $de2['AlterPermTo'] = 'RECHTE ÄNDERN in'; - $de2['ConfExec'] = 'Bestätigung AUSFÜHREN'; - $de2['ConfRem'] = 'Bestätigung LÖSCHEN'; - $de2['EmptyDir'] = 'Leeres Verzeichnis'; - $de2['IOError'] = 'Ein-/Ausgabe-Fehler'; - $de2['FileMan'] = 'PHP File Manager'; - $de2['TypePass'] = 'Bitte geben Sie das Passwort ein'; - $de2['InvPass'] = 'Ungültiges Passwort'; - $de2['ReadDenied'] = 'Leasezugriff verweigert'; - $de2['FileNotFound'] = 'Datei nicht gefunden'; - $de2['AutoClose'] = 'Schliessen nach Beenden'; - $de2['OutDocRoot'] = 'Datei oberhalb DOCUMENT_ROOT'; - $de2['NoCmd'] = 'Fehler: Befehl nicht informed'; - $de2['ConfTrySave'] = 'Datei ohne Schreibberechtigung.\\nTrotzdem versuchen zu speichern'; - $de2['ConfSaved'] = 'Konfigurationen gespeichert'; - $de2['PassSaved'] = 'Passwort gespeichert'; - $de2['FileDirExists'] = 'Datei oder Verzeichnis existiert bereits'; - $de2['NoPhpinfo'] = 'Funktion phpinfo ausgeschaltet'; - $de2['NoReturn'] = 'keine Rückgabe'; - $de2['FileSent'] = 'Datei versandt'; - $de2['SpaceLimReached'] = 'Plattenplatz erschöpft'; - $de2['InvExt'] = 'Ungültige datei-Extension'; - $de2['FileNoOverw'] = 'Datei kann nicht überschrieben werden'; - $de2['FileOverw'] = 'Datei überschrieben'; - $de2['FileIgnored'] = 'Datei ignoriert'; - $de2['ChkVer'] = 'Überprüfe neuer Version'; - $de2['ChkVerAvailable'] = 'Neue Version. Hier klicken für Download!!'; - $de2['ChkVerNotAvailable'] = 'Keine neue Version verfügbar. :('; - $de2['ChkVerError'] = 'Verbindungsfehler.'; - $de2['Website'] = 'Webseite'; - $de2['SendingForm'] = 'Sende Dateien, bitte warten'; - $de2['NoFileSel'] = 'Keine Dateien ausgewählt'; - $de2['SelAll'] = 'Alle'; - $de2['SelNone'] = 'Keine'; - $de2['SelInverse'] = 'Invers'; - $de2['Selected_s'] = 'ausgewählt'; - $de2['Total'] = 'Total'; - $de2['Partition'] = 'Partition'; - $de2['RenderTime'] = 'Zeit zum Erzeugen der Seite'; - $de2['Seconds'] = 'Sekunden'; - $de2['ErrorReport'] = 'Fehler berichten'; - - // German - by Mathias Rothe - $de3['Version'] = 'Version'; - $de3['DocRoot'] = 'Dokumenten Root'; - $de3['FLRoot'] = 'Datei Manager Root'; - $de3['Name'] = 'Name'; - $de3['And'] = 'und'; - $de3['Enter'] = 'Enter'; - $de3['Send'] = 'Senden'; - $de3['Refresh'] = 'Refresh'; - $de3['SaveConfig'] = 'Konfiguration speichern'; - $de3['SavePass'] = 'Passwort speichern'; - $de3['SaveFile'] = 'Datei speichern'; - $de3['Save'] = 'Speichern'; - $de3['Leave'] = 'Abbrechen'; - $de3['Edit'] = 'Bearbeiten'; - $de3['View'] = 'Anzeigen'; - $de3['Config'] = 'Konfiguration'; - $de3['Ren'] = 'Umbenennen'; - $de3['Rem'] = 'Entfernen'; - $de3['Compress'] = 'Packen'; - $de3['Decompress'] = 'Entpacken'; - $de3['ResolveIDs'] = 'IDs aufloesen'; - $de3['Move'] = 'Verschieben'; - $de3['Copy'] = 'Kopie'; - $de3['ServerInfo'] = 'Server Info'; - $de3['CreateDir'] = 'Neuer Ordner'; - $de3['CreateArq'] = 'Neue Datei'; - $de3['ExecCmd'] = 'Befehl ausfuehren'; - $de3['Upload'] = 'Upload'; - $de3['UploadEnd'] = 'Upload beendet'; - $de3['Perm'] = 'Rechte'; - $de3['Perms'] = 'Rechte'; - $de3['Owner'] = 'Eigent'; - $de3['Group'] = 'Gruppe'; - $de3['Other'] = 'Andere'; - $de3['Size'] = 'Groesse'; - $de3['Date'] = 'Datum'; - $de3['Type'] = 'Typ'; - $de3['Free'] = 'frei'; - $de3['Shell'] = 'Shell'; - $de3['Read'] = 'Lesen'; - $de3['Write'] = 'Schreiben'; - $de3['Exec'] = 'Ausfuehren'; - $de3['Apply'] = 'Bestaetigen'; - $de3['StickyBit'] = 'Sticky Bit'; - $de3['Pass'] = 'Passwort'; - $de3['Lang'] = 'Sprache'; - $de3['File'] = 'Datei'; - $de3['File_s'] = 'Datei(en)'; - $de3['Dir_s'] = 'Ordner'; - $de3['To'] = 'nach'; - $de3['Destination'] = 'Ziel'; - $de3['Configurations'] = 'Konfiguration'; - $de3['JSError'] = 'JavaScript Error'; - $de3['NoSel'] = 'Keine Objekte ausgewaehlt'; - $de3['SelDir'] = 'Waehlen Sie links das Zielverzeichnis aus'; - $de3['TypeDir'] = 'Verzeichnisname eingeben'; - $de3['TypeArq'] = 'Dateiname eingeben'; - $de3['TypeCmd'] = 'Befehl eingeben'; - $de3['TypeArqComp'] = 'Dateinamen eingeben.\\nDie Erweiterung definiert den Archiv-Typ.\\nEx:\\nname.zip\\nname.tar\\nname.bzip\\nname.gzip'; - $de3['RemSel'] = 'Entferne ausgewaehlte Objekte'; - $de3['NoDestDir'] = 'Kein Zielverzeichnis ausgewaehlt'; - $de3['DestEqOrig'] = 'Quelle und Zielverzeichnis sind gleich'; - $de3['InvalidDest'] = 'Zielverzeichnis ungueltig'; - $de3['NoNewPerm'] = 'Neue Rechte nicht gesetzt'; - $de3['CopyTo'] = 'Kopiere nach'; - $de3['MoveTo'] = 'Verschiebe nach'; - $de3['AlterPermTo'] = 'Aendere Rechte zu'; - $de3['ConfExec'] = 'Ausfuehren bestaetigen'; - $de3['ConfRem'] = 'Entfernen bestaetigen'; - $de3['EmptyDir'] = 'Leerer Ordner'; - $de3['IOError'] = 'I/O Fehler'; - $de3['FileMan'] = 'PHP Datei Manager'; - $de3['TypePass'] = 'Bitte Passwort eingeben'; - $de3['InvPass'] = 'Falsches Passwort'; - $de3['ReadDenied'] = 'Kein Lesezugriff'; - $de3['FileNotFound'] = 'Datei nicht gefunden'; - $de3['AutoClose'] = 'Beenden bei Fertigstellung'; - $de3['OutDocRoot'] = 'Datei ausserhalb des DOCUMENT_ROOT'; - $de3['NoCmd'] = 'Fehler: unbekannter Befehl'; - $de3['ConfTrySave'] = 'Datei ohne Schreibrecht.\\nVersuche dennoch zu speichern'; - $de3['ConfSaved'] = 'Konfiguration gespeichert'; - $de3['PassSaved'] = 'Passwort gespeichert'; - $de3['FileDirExists'] = 'Datei oder Verzeichnis existiert bereits'; - $de3['NoPhpinfo'] = 'Funktion phpinfo gesperrt'; - $de3['NoReturn'] = 'kein zurueck'; - $de3['FileSent'] = 'Datei gesendet'; - $de3['SpaceLimReached'] = 'Speicherplatz Grenze erreicht'; - $de3['InvExt'] = 'Ungueltige Erweiterung'; - $de3['FileNoOverw'] = 'Datei konnte nicht ueberschrieben werden'; - $de3['FileOverw'] = 'Datei ueberschrieben'; - $de3['FileIgnored'] = 'Datei ignoriert'; - $de3['ChkVer'] = 'Puefe eine neuere Version'; - $de3['ChkVerAvailable'] = 'Neue Version, hier klicken zum Download!!'; - $de3['ChkVerNotAvailable'] = 'Keine neuere Version vorhanden. :('; - $de3['ChkVerError'] = 'Verbindungsfehler.'; - $de3['Website'] = 'Website'; - $de3['SendingForm'] = 'Dateien werden gesendet, bitte warten'; - $de3['NoFileSel'] = 'Keine Datei ausgewaehlt'; - $de3['SelAll'] = 'Alle'; - $de3['SelNone'] = 'Keine'; - $de3['SelInverse'] = 'Invertiere'; - $de3['Selected_s'] = 'ausgewaehlt'; - $de3['Total'] = 'gesamt'; - $de3['Partition'] = 'Partition'; - $de3['RenderTime'] = 'Zeit zur Erzeugung dieser Seite'; - $de3['Seconds'] = 'sec'; - $de3['ErrorReport'] = 'Fehlermeldungen'; - - // French - by Jean Bilwes - $fr1['Version'] = 'Version'; - $fr1['DocRoot'] = 'Racine des documents'; - $fr1['FLRoot'] = 'Racine du gestionnaire de fichers'; - $fr1['Name'] = 'Nom'; - $fr1['And'] = 'et'; - $fr1['Enter'] = 'Enter'; - $fr1['Send'] = 'Envoyer'; - $fr1['Refresh'] = 'Rafraichir'; - $fr1['SaveConfig'] = 'Enregistrer la Configuration'; - $fr1['SavePass'] = 'Enregistrer le mot de passe'; - $fr1['SaveFile'] = 'Enregistrer le fichier'; - $fr1['Save'] = 'Enregistrer'; - $fr1['Leave'] = 'Quitter'; - $fr1['Edit'] = 'Modifier'; - $fr1['View'] = 'Voir'; - $fr1['Config'] = 'Config'; - $fr1['Ren'] = 'Renommer'; - $fr1['Rem'] = 'Detruire'; - $fr1['Compress'] = 'Compresser'; - $fr1['Decompress'] = 'Decompresser'; - $fr1['ResolveIDs'] = 'Resoudre les IDs'; - $fr1['Move'] = 'Déplacer'; - $fr1['Copy'] = 'Copier'; - $fr1['ServerInfo'] = 'info du sreveur'; - $fr1['CreateDir'] = 'Créer un répertoire'; - $fr1['CreateArq'] = 'Créer un fichier'; - $fr1['ExecCmd'] = 'Executer une Commande'; - $fr1['Upload'] = 'Téléversement(upload)'; - $fr1['UploadEnd'] = 'Téléversement Fini'; - $fr1['Perm'] = 'Perm'; - $fr1['Perms'] = 'Permissions'; - $fr1['Owner'] = 'Propriétaire'; - $fr1['Group'] = 'Groupe'; - $fr1['Other'] = 'Autre'; - $fr1['Size'] = 'Taille'; - $fr1['Date'] = 'Date'; - $fr1['Type'] = 'Type'; - $fr1['Free'] = 'libre'; - $fr1['Shell'] = 'Shell'; - $fr1['Read'] = 'Lecture'; - $fr1['Write'] = 'Ecriture'; - $fr1['Exec'] = 'Executer'; - $fr1['Apply'] = 'Appliquer'; - $fr1['StickyBit'] = 'Sticky Bit'; - $fr1['Pass'] = 'Mot de passe'; - $fr1['Lang'] = 'Langage'; - $fr1['File'] = 'Fichier'; - $fr1['File_s'] = 'fichier(s)'; - $fr1['Dir_s'] = 'répertoire(s)'; - $fr1['To'] = 'à'; - $fr1['Destination'] = 'Destination'; - $fr1['Configurations'] = 'Configurations'; - $fr1['JSError'] = 'Erreur JavaScript'; - $fr1['NoSel'] = 'Rien n\'est sélectionné'; - $fr1['SelDir'] = 'Selectionnez le répertoire de destination dans le panneau gauche'; - $fr1['TypeDir'] = 'Entrer le nom du répertoire'; - $fr1['TypeArq'] = 'Entrer le nom du fichier'; - $fr1['TypeCmd'] = 'Entrer la commande'; - $fr1['TypeArqComp'] = 'Entrer le nom du fichier.\\nL\'extension définira le type de compression.\\nEx:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $fr1['RemSel'] = 'EFFACER les objets sélectionnés'; - $fr1['NoDestDir'] = 'Aucun répertoire de destination n\'est sélectionné'; - $fr1['DestEqOrig'] = 'Les répertoires source et destination sont identiques'; - $fr1['InvalidDest'] = 'Le répertoire de destination est invalide'; - $fr1['NoNewPerm'] = 'Nouvelle permission non établie'; - $fr1['CopyTo'] = 'COPIER vers'; - $fr1['MoveTo'] = 'DEPLACER vers'; - $fr1['AlterPermTo'] = 'CHANGER LES PERMISSIONS'; - $fr1['ConfExec'] = 'Confirmer l\'EXECUTION'; - $fr1['ConfRem'] = 'Confirmer la DESTRUCTION'; - $fr1['EmptyDir'] = 'Répertoire vide'; - $fr1['IOError'] = 'I/O Error'; - $fr1['FileMan'] = 'PHP File Manager'; - $fr1['TypePass'] = 'Entrer le mot de passe'; - $fr1['InvPass'] = 'Mot de passe invalide'; - $fr1['ReadDenied'] = 'Droit de lecture refusé'; - $fr1['FileNotFound'] = 'Fichier introuvable'; - $fr1['AutoClose'] = 'Fermer sur fin'; - $fr1['OutDocRoot'] = 'Fichier au delà de DOCUMENT_ROOT'; - $fr1['NoCmd'] = 'Erreur: Commande non renseignée'; - $fr1['ConfTrySave'] = 'Fichier sans permission d\'écriture.\\nJ\'essaie de l\'enregister'; - $fr1['ConfSaved'] = 'Configurations enreristrée'; - $fr1['PassSaved'] = 'Mot de passe enreristré'; - $fr1['FileDirExists'] = 'Le fichier ou le répertoire existe déjà'; - $fr1['NoPhpinfo'] = 'Function phpinfo désactivée'; - $fr1['NoReturn'] = 'pas de retour'; - $fr1['FileSent'] = 'Fichier envoyé'; - $fr1['SpaceLimReached'] = 'Espace maxi atteint'; - $fr1['InvExt'] = 'Extension invalide'; - $fr1['FileNoOverw'] = 'Le fichier ne peut pas etre écrasé'; - $fr1['FileOverw'] = 'Fichier écrasé'; - $fr1['FileIgnored'] = 'Fichier ignoré'; - $fr1['ChkVer'] = 'Verifier nouvelle version'; - $fr1['ChkVerAvailable'] = 'Nouvelle version, cliquer ici pour la téléchager!!'; - $fr1['ChkVerNotAvailable'] = 'Aucune mise a jour de disponible. :('; - $fr1['ChkVerError'] = 'Erreur de connection.'; - $fr1['Website'] = 'siteweb'; - $fr1['SendingForm'] = 'Envoi des fichiers en cours, Patienter'; - $fr1['NoFileSel'] = 'Aucun fichier sélectionné'; - $fr1['SelAll'] = 'Tous'; - $fr1['SelNone'] = 'Aucun'; - $fr1['SelInverse'] = 'Inverser'; - $fr1['Selected_s'] = 'selectioné'; - $fr1['Total'] = 'total'; - $fr1['Partition'] = 'Partition'; - $fr1['RenderTime'] = 'Temps pour afficher cette page'; - $fr1['Seconds'] = 'sec'; - $fr1['ErrorReport'] = 'Rapport d\'erreur'; - - // French - by Sharky - $fr2['Version'] = 'Version'; - $fr2['DocRoot'] = 'Racine document'; - $fr2['FLRoot'] = 'Gestion des fichiers racine'; - $fr2['Name'] = 'Nom'; - $fr2['And'] = 'et'; - $fr2['Enter'] = 'Entrer'; - $fr2['Send'] = 'Envoi'; - $fr2['Refresh'] = 'Rafraîchir'; - $fr2['SaveConfig'] = 'Sauver configurations'; - $fr2['SavePass'] = 'Sauver mot de passe'; - $fr2['SaveFile'] = 'Sauver fichier'; - $fr2['Save'] = 'Sauver'; - $fr2['Leave'] = 'Permission'; - $fr2['Edit'] = 'Éditer'; - $fr2['View'] = 'Afficher'; - $fr2['Config'] = 'config'; - $fr2['Ren'] = 'Renommer'; - $fr2['Rem'] = 'Effacer'; - $fr2['Compress'] = 'Compresser'; - $fr2['Decompress'] = 'Décompresser'; - $fr2['ResolveIDs'] = 'Résoudre ID'; - $fr2['Move'] = 'Déplacer'; - $fr2['Copy'] = 'Copier'; - $fr2['ServerInfo'] = 'Information Serveur'; - $fr2['CreateDir'] = 'Créer un répertoire'; - $fr2['CreateArq'] = 'Créer un fichier'; - $fr2['ExecCmd'] = 'Executé une commande'; - $fr2['Upload'] = 'Transférer'; - $fr2['UploadEnd'] = 'Transfert terminé'; - $fr2['Perm'] = 'Perm'; - $fr2['Perms'] = 'Permissions'; - $fr2['Owner'] = 'Propriétaire'; - $fr2['Group'] = 'Groupe'; - $fr2['Other'] = 'Autre'; - $fr2['Size'] = 'Taille'; - $fr2['Date'] = 'date'; - $fr2['Type'] = 'Type'; - $fr2['Free'] = 'Libre'; - $fr2['Shell'] = 'Shell'; - $fr2['Read'] = 'lecture'; - $fr2['Write'] = 'écriture'; - $fr2['Exec'] = 'Execute'; - $fr2['Apply'] = 'Appliquer'; - $fr2['StickyBit'] = 'Bit figer'; - $fr2['Pass'] = 'mot de passe'; - $fr2['Lang'] = 'Language'; - $fr2['File'] = 'Fichier'; - $fr2['File_s'] = 'fichier(s)'; - $fr2['Dir_s'] = 'répertoire(s)'; - $fr2['To'] = 'à'; - $fr2['Destination'] = 'Destination'; - $fr2['Configurations'] = 'Configurations'; - $fr2['JSError'] = 'Erreur JavaScript'; - $fr2['NoSel'] = 'Il n\'y a pas d\'objets sélectionnés'; - $fr2['SelDir'] = 'Sélectionnez le répertoire de destination sur l\'arborescence de gauche'; - $fr2['TypeDir'] = 'Entrez le nom du répertoire'; - $fr2['TypeArq'] = 'Entrez le nom du fichier'; - $fr2['TypeCmd'] = 'Entrez la commande'; - $fr2['TypeArqComp'] = 'Entrez le fichier.\\nL\'extension définira le type de compression.\\nEx:\\nnom.zip\\nnom.tar\\nnom.bzip\\nnom.gzip'; - $fr2['RemSel'] = 'EFFACEZ l\'objet sélectionné'; - $fr2['NoDestDir'] = 'Il n\'y a aucun répertoire de destination sélectionné'; - $fr2['DestEqOrig'] = 'Origine et répertoires de destination sont identique'; - $fr2['InvalidDest'] = 'Répertoire de destination est invalide'; - $fr2['NoNewPerm'] = 'Nouvelle autorisation n\'a pas été configuré'; - $fr2['CopyTo'] = 'COPIE dans'; - $fr2['MoveTo'] = 'DÉPLACER dans'; - $fr2['AlterPermTo'] = 'CHANGER PERMISSIONS dans'; - $fr2['ConfExec'] = 'Confirmer EXECUTE'; - $fr2['ConfRem'] = 'Confirmer EFFACER'; - $fr2['EmptyDir'] = 'Répertoire vide'; - $fr2['IOError'] = 'I/O Erreur'; - $fr2['FileMan'] = 'Gestion de fichiers PHP'; - $fr2['TypePass'] = 'Entrer le mot de passe'; - $fr2['InvPass'] = 'Mot de passe invalide'; - $fr2['ReadDenied'] = 'Accès en lecture refuser'; - $fr2['FileNotFound'] = 'Fichier non-trouvé'; - $fr2['AutoClose'] = 'Fermez a la fin'; - $fr2['OutDocRoot'] = 'Fichier au-delà DOCUMENT_ROOT'; - $fr2['NoCmd'] = 'Erreur: Commande inconnue'; - $fr2['ConfTrySave'] = 'Fichier sans permission d\'écriture.\\nEssayez de sauver'; - $fr2['ConfSaved'] = 'Configurations sauvée'; - $fr2['PassSaved'] = 'Mot de passe sauvé'; - $fr2['FileDirExists'] = 'Fichier ou répertoire déjà existant'; - $fr2['NoPhpinfo'] = 'Function phpinfo désactivé'; - $fr2['NoReturn'] = 'sans retour possible'; - $fr2['FileSent'] = 'Fichier envoyé'; - $fr2['SpaceLimReached'] = 'Limite de d\'espace atteint'; - $fr2['InvExt'] = 'Extension invalide'; - $fr2['FileNoOverw'] = 'Fichier ne peut pas être écrasé'; - $fr2['FileOverw'] = 'Fichier écrasé'; - $fr2['FileIgnored'] = 'Fichier ignoré'; - $fr2['ChkVer'] = 'Check nouvelle version'; - $fr2['ChkVerAvailable'] = 'Nouvelle version, cliquez ici pour commencer le téléchargement!!'; - $fr2['ChkVerNotAvailable'] = 'Aucune nouvelle version disponible. :('; - $fr2['ChkVerError'] = 'Erreur de connection.'; - $fr2['Website'] = 'Site Web'; - $fr2['SendingForm'] = 'Envoye de fichier, s\'il vous plaît patientez'; - $fr2['NoFileSel'] = 'Aucun fichier sélectionné'; - $fr2['SelAll'] = 'Tout'; - $fr2['SelNone'] = 'Aucuns'; - $fr2['SelInverse'] = 'Inverser'; - $fr2['Selected_s'] = 'sélectionné'; - $fr2['Total'] = 'total'; - $fr2['Partition'] = 'Partition'; - $fr2['RenderTime'] = 'Temps pour afficher la page'; - $fr2['Seconds'] = 'sec'; - $fr2['ErrorReport'] = 'Liste des erreurs'; - - // French - by Michel Lainey - $fr3['Version'] = 'Version'; - $fr3['DocRoot'] = 'Racine Document'; - $fr3['FLRoot'] = 'Racine File Manager'; - $fr3['Name'] = 'Nom'; - $fr3['And'] = 'et'; - $fr3['Enter'] = 'Valider'; - $fr3['Send'] = 'Envoyer'; - $fr3['Refresh'] = 'Raffraichir'; - $fr3['SaveConfig'] = 'Sauvegarder Config'; - $fr3['SavePass'] = 'Sauvegarder Password'; - $fr3['SaveFile'] = 'Sauvegarder Fichier'; - $fr3['Save'] = 'Sauvegarder'; - $fr3['Leave'] = 'Quitter'; - $fr3['Edit'] = 'Editer'; - $fr3['View'] = 'Visualiser'; - $fr3['Config'] = 'Config'; - $fr3['Ren'] = 'Renommer'; - $fr3['Rem'] = 'Supprimer'; - $fr3['Compress'] = 'Compresser'; - $fr3['Decompress'] = 'Décompresser'; - $fr3['ResolveIDs'] = 'Resoudre IDs'; - $fr3['Move'] = 'Déplacer'; - $fr3['Copy'] = 'Copier'; - $fr3['ServerInfo'] = 'Server Info'; - $fr3['CreateDir'] = 'Créer Répertoire'; - $fr3['CreateArq'] = 'Créer Fichier'; - $fr3['ExecCmd'] = 'Executer Commande'; - $fr3['Upload'] = 'Upload'; - $fr3['UploadEnd'] = 'Upload Fini'; - $fr3['Perm'] = 'Perm'; - $fr3['Perms'] = 'Permissions'; - $fr3['Owner'] = 'Propriétaire'; - $fr3['Group'] = 'Groupe'; - $fr3['Other'] = 'Autres'; - $fr3['Size'] = 'Taille'; - $fr3['Date'] = 'Date'; - $fr3['Type'] = 'Type'; - $fr3['Free'] = 'libre'; - $fr3['Shell'] = 'Shell'; - $fr3['Read'] = 'Lecture'; - $fr3['Write'] = 'Ecriture'; - $fr3['Exec'] = 'Execute'; - $fr3['Apply'] = 'Application'; - $fr3['StickyBit'] = 'Sticky Bit'; - $fr3['Pass'] = 'Password'; - $fr3['Lang'] = 'Language'; - $fr3['File'] = 'Fichier'; - $fr3['File_s'] = 'fichier(s)'; - $fr3['Dir_s'] = 'répertoire(s)'; - $fr3['To'] = 'à'; - $fr3['Destination'] = 'Destination'; - $fr3['Configurations'] = 'Configurations'; - $fr3['JSError'] = 'Erreur JavaScript'; - $fr3['NoSel'] = 'Aucun élément sélectionné'; - $fr3['SelDir'] = "Sélectionner le répertoire de destination dans l'arboresence de gauchethe destination directory on the left tree"; - $fr3['TypeDir'] = 'Indiquer le nom du répertoire'; - $fr3['TypeArq'] = 'Indiquer le nom du fichier'; - $fr3['TypeCmd'] = 'Entrer une commande'; - $fr3['TypeArqComp'] = "Indiquer le nom du fichier.\\nL'extension définira le type de compression.\\nEx:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip"; - $fr3['RemSel'] = "SUPPRIMER l'élément sélectionné"; - $fr3['NoDestDir'] = "Il n'y a pas de répertoire destination sélectionné"; - $fr3['DestEqOrig'] = 'Répertoire Origine et Destination sont identiques'; - $fr3['InvalidDest'] = 'Le répertoire de destination est invalide'; - $fr3['NoNewPerm'] = 'Nouvelle permission non appliquée'; - $fr3['CopyTo'] = 'COPIER vers'; - $fr3['MoveTo'] = 'DEPLACER vers'; - $fr3['AlterPermTo'] = 'CHANGER LES PERMISSIONS vers'; - $fr3['ConfExec'] = 'Confirmer EXECUTION'; - $fr3['ConfRem'] = 'Confirmer SUPPRESSION'; - $fr3['EmptyDir'] = 'Répertoire vide'; - $fr3['IOError'] = 'Erreur entrée/sortie'; - $fr3['FileMan'] = 'PHP File Manager'; - $fr3['TypePass'] = 'Saisir le mot de passe'; - $fr3['InvPass'] = 'Mot de passe invalide'; - $fr3['ReadDenied'] = 'Accès en lecture refusé'; - $fr3['FileNotFound'] = 'Fichier non trouvé'; - $fr3['AutoClose'] = 'Fermeture en fin de traitement'; - $fr3['OutDocRoot'] = 'Fichier en dessous de DOCUMENT_ROOT'; - $fr3['NoCmd'] = 'Erreur : Commande non renseignée'; - $fr3['ConfTrySave'] = "Fichier sans permission d'écriture.\\nTenter de sauver malgré tout"; - $fr3['ConfSaved'] = 'Configurations sauvegardée'; - $fr3['PassSaved'] = 'Password sauvegardé'; - $fr3['FileDirExists'] = 'Fichier ou répertoire déjà existant'; - $fr3['NoPhpinfo'] = 'Fonction phpinfo disactivée'; - $fr3['NoReturn'] = 'pas de retour'; - $fr3['FileSent'] = 'Fichier envoyé'; - $fr3['SpaceLimReached'] = 'Capacité maximale atteinte'; - $fr3['InvExt'] = 'Extension invalide'; - $fr3['FileNoOverw'] = 'Fichier ne pouvant être remplacé'; - $fr3['FileOverw'] = 'Fichier remplacé'; - $fr3['FileIgnored'] = 'Fichier ignoré'; - $fr3['ChkVer'] = 'Vérifier nouvelle version'; - $fr3['ChkVerAvailable'] = 'Nouvelle version, cliquer ici pour commencer le téléchargement !'; - $fr3['ChkVerNotAvailable'] = 'Pas de nouvelle version disponible. :('; - $fr3['ChkVerError'] = 'Erreur de connection.'; - $fr3['Website'] = 'Site Web'; - $fr3['SendingForm'] = "Fichiers en cours d'envoi, merci de patienter"; - $fr3['NoFileSel'] = 'Pas de fichier sélectionné'; - $fr3['SelAll'] = 'Tous'; - $fr3['SelNone'] = 'Aucun'; - $fr3['SelInverse'] = 'Inverser'; - $fr3['Selected_s'] = 'sélectionné'; - $fr3['Total'] = 'total'; - $fr3['Partition'] = 'Partition'; - $fr3['RenderTime'] = 'Temps nécessaire pour obtenir cette page'; - $fr3['Seconds'] = 'sec'; - $fr3['ErrorReport'] = 'Erreur de compte rendu'; - - // Dutch - by Leon Buijs - $nl['Version'] = 'Versie'; - $nl['DocRoot'] = 'Document Root'; - $nl['FLRoot'] = 'File Manager Root'; - $nl['Name'] = 'Naam'; - $nl['And'] = 'en'; - $nl['Enter'] = 'Enter'; - $nl['Send'] = 'Verzend'; - $nl['Refresh'] = 'Vernieuw'; - $nl['SaveConfig'] = 'Configuratie opslaan'; - $nl['SavePass'] = 'Wachtwoord opslaan'; - $nl['SaveFile'] = 'Bestand opslaan'; - $nl['Save'] = 'Opslaan'; - $nl['Leave'] = 'Verlaten'; - $nl['Edit'] = 'Wijzigen'; - $nl['View'] = 'Toon'; - $nl['Config'] = 'Configuratie'; - $nl['Ren'] = 'Naam wijzigen'; - $nl['Rem'] = 'Verwijderen'; - $nl['Compress'] = 'Comprimeren'; - $nl['Decompress'] = 'Decomprimeren'; - $nl['ResolveIDs'] = 'Resolve IDs'; - $nl['Move'] = 'Verplaats'; - $nl['Copy'] = 'Kopieer'; - $nl['ServerInfo'] = 'Serverinformatie'; - $nl['CreateDir'] = 'Nieuwe map'; - $nl['CreateArq'] = 'Nieuw bestand'; - $nl['ExecCmd'] = 'Commando uitvoeren'; - $nl['Upload'] = 'Upload'; - $nl['UploadEnd'] = 'Upload voltooid'; - $nl['Perm'] = 'Rechten'; - $nl['Perms'] = 'Rechten'; - $nl['Owner'] = 'Eigenaar'; - $nl['Group'] = 'Groep'; - $nl['Other'] = 'Anderen'; - $nl['Size'] = 'Grootte'; - $nl['Date'] = 'Datum'; - $nl['Type'] = 'Type'; - $nl['Free'] = 'free'; - $nl['Shell'] = 'Shell'; - $nl['Read'] = 'Lezen'; - $nl['Write'] = 'Schrijven'; - $nl['Exec'] = 'Uitvoeren'; - $nl['Apply'] = 'Toepassen'; - $nl['StickyBit'] = 'Sticky Bit'; - $nl['Pass'] = 'Wachtwoord'; - $nl['Lang'] = 'Taal'; - $nl['File'] = 'Bestand'; - $nl['File_s'] = 'bestand(en)'; - $nl['Dir_s'] = 'map(pen)'; - $nl['To'] = 'naar'; - $nl['Destination'] = 'Bestemming'; - $nl['Configurations'] = 'Instellingen'; - $nl['JSError'] = 'Javascriptfout'; - $nl['NoSel'] = 'Er zijn geen bestanden geselecteerd'; - $nl['SelDir'] = 'Kies de bestemming in de boom aan de linker kant'; - $nl['TypeDir'] = 'Voer de mapnaam in'; - $nl['TypeArq'] = 'Voer de bestandsnaam in'; - $nl['TypeCmd'] = 'Voer het commando in'; - $nl['TypeArqComp'] = 'Voer de bestandsnaam in.\\nDe extensie zal het compressietype bepalen.\\nEx:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $nl['RemSel'] = 'VERWIJDER geselecteerde itens'; - $nl['NoDestDir'] = 'Er is geen doelmap geselecteerd'; - $nl['DestEqOrig'] = 'Bron- en doelmap zijn hetzelfde'; - $nl['InvalidDest'] = 'Doelmap is ongeldig'; - $nl['NoNewPerm'] = 'Nieuwe rechten niet geset'; - $nl['CopyTo'] = 'KOPIEER naar'; - $nl['MoveTo'] = 'VERPLAATS naar'; - $nl['AlterPermTo'] = 'VERANDER RECHTEN in'; - $nl['ConfExec'] = 'Bevestig UITVOEREN'; - $nl['ConfRem'] = 'Bevestig VERWIJDEREN'; - $nl['EmptyDir'] = 'Lege map'; - $nl['IOError'] = 'I/O Error'; - $nl['FileMan'] = 'PHP File Manager'; - $nl['TypePass'] = 'Voer het wachtwoord in'; - $nl['InvPass'] = 'Ongeldig wachtwoord'; - $nl['ReadDenied'] = 'Leestoegang ontzegd'; - $nl['FileNotFound'] = 'Bestand niet gevonden'; - $nl['AutoClose'] = 'Sluit na voltooien'; - $nl['OutDocRoot'] = 'Bestand buiten DOCUMENT_ROOT'; - $nl['NoCmd'] = 'Error: Command not informed'; - $nl['ConfTrySave'] = 'Bestand zonder schrijfrechten.\\nProbeer een andere manier'; - $nl['ConfSaved'] = 'Instellingen opgeslagen'; - $nl['PassSaved'] = 'Wachtwoord opgeslagen'; - $nl['FileDirExists'] = 'Bestand of map bestaat al'; - $nl['NoPhpinfo'] = 'Functie \'phpinfo\' is uitgeschakeld'; - $nl['NoReturn'] = 'no return'; - $nl['FileSent'] = 'Bestand verzonden'; - $nl['SpaceLimReached'] = 'Opslagruimtelimiet bereikt'; - $nl['InvExt'] = 'Ongeldige extensie'; - $nl['FileNoOverw'] = 'Bestand kan niet worden overgeschreven'; - $nl['FileOverw'] = 'Bestand overgeschreven'; - $nl['FileIgnored'] = 'Bestand genegeerd'; - $nl['ChkVer'] = 'Controleer nieuwe versie'; - $nl['ChkVerAvailable'] = 'Nieuwe versie, klik hier om de download te starten'; - $nl['ChkVerNotAvailable'] = 'Geen nieuwe versie beschikbaar'; - $nl['ChkVerError'] = 'Verbindingsfout.'; - $nl['Website'] = 'Website'; - $nl['SendingForm'] = 'Bestanden worden verzonden. Even geduld...'; - $nl['NoFileSel'] = 'Geen bestanden geselecteerd'; - $nl['SelAll'] = 'Alles'; - $nl['SelNone'] = 'Geen'; - $nl['SelInverse'] = 'Keer om'; - $nl['Selected_s'] = 'geselecteerd'; - $nl['Total'] = 'totaal'; - $nl['Partition'] = 'Partitie'; - $nl['RenderTime'] = 'Tijd voor maken van deze pagina'; - $nl['Seconds'] = 'sec'; - $nl['ErrorReport'] = 'Foutenrapport'; - - // Italian - by Valerio Capello - $it1['Version'] = 'Versione'; - $it1['DocRoot'] = 'Document Root'; - $it1['FLRoot'] = 'File Manager Root'; - $it1['Name'] = 'Nome'; - $it1['And'] = 'e'; - $it1['Enter'] = 'Immetti'; - $it1['Send'] = 'Invia'; - $it1['Refresh'] = 'Aggiorna'; - $it1['SaveConfig'] = 'Salva la Configurazione'; - $it1['SavePass'] = 'Salva la Password'; - $it1['SaveFile'] = 'Salva il File'; - $it1['Save'] = 'Salva'; - $it1['Leave'] = 'Abbandona'; - $it1['Edit'] = 'Modifica'; - $it1['View'] = 'Guarda'; - $it1['Config'] = 'Configurazione'; - $it1['Ren'] = 'Rinomina'; - $it1['Rem'] = 'Elimina'; - $it1['Compress'] = 'Comprimi'; - $it1['Decompress'] = 'Decomprimi'; - $it1['ResolveIDs'] = 'Risolvi IDs'; - $it1['Move'] = 'Sposta'; - $it1['Copy'] = 'Copia'; - $it1['ServerInfo'] = 'Informazioni sul Server'; - $it1['CreateDir'] = 'Crea Directory'; - $it1['CreateArq'] = 'Crea File'; - $it1['ExecCmd'] = 'Esegui Comando'; - $it1['Upload'] = 'Carica'; - $it1['UploadEnd'] = 'Caricamento terminato'; - $it1['Perm'] = 'Perm'; - $it1['Perms'] = 'Permessi'; - $it1['Owner'] = 'Proprietario'; - $it1['Group'] = 'Gruppo'; - $it1['Other'] = 'Altri'; - $it1['Size'] = 'Dimensioni'; - $it1['Date'] = 'Data'; - $it1['Type'] = 'Tipo'; - $it1['Free'] = 'liberi'; - $it1['Shell'] = 'Shell'; - $it1['Read'] = 'Lettura'; - $it1['Write'] = 'Scrittura'; - $it1['Exec'] = 'Esecuzione'; - $it1['Apply'] = 'Applica'; - $it1['StickyBit'] = 'Sticky Bit'; - $it1['Pass'] = 'Password'; - $it1['Lang'] = 'Lingua'; - $it1['File'] = 'File'; - $it1['File_s'] = 'file'; - $it1['Dir_s'] = 'directory'; - $it1['To'] = 'a'; - $it1['Destination'] = 'Destinazione'; - $it1['Configurations'] = 'Configurazione'; - $it1['JSError'] = 'Errore JavaScript'; - $it1['NoSel'] = 'Non ci sono elementi selezionati'; - $it1['SelDir'] = 'Scegli la directory di destinazione'; - $it1['TypeDir'] = 'Inserisci il nome della directory'; - $it1['TypeArq'] = 'Inserisci il nome del file'; - $it1['TypeCmd'] = 'Inserisci il comando'; - $it1['TypeArqComp'] = 'Inserisci il nome del file.\\nLa estensione definirà il tipo di compressione.\\nEsempio:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $it1['RemSel'] = 'ELIMINA gli elementi selezionati'; - $it1['NoDestDir'] = 'LA directory di destinazione non è stata selezionata'; - $it1['DestEqOrig'] = 'La directory di origine e di destinazione sono la stessa'; - $it1['InvalidDest'] = 'La directory di destinazione non è valida'; - $it1['NoNewPerm'] = 'Nuovi permessi non attivati'; - $it1['CopyTo'] = 'COPIA in'; - $it1['MoveTo'] = 'SPOSTA in'; - $it1['AlterPermTo'] = 'CAMBIA I PERMESSI: '; - $it1['ConfExec'] = 'Conferma ESECUZIONE'; - $it1['ConfRem'] = 'Conferma ELIMINAZIONE'; - $it1['EmptyDir'] = 'Directory vuota'; - $it1['IOError'] = 'Errore di I/O'; - $it1['FileMan'] = 'PHP File Manager'; - $it1['TypePass'] = 'Immetti la password'; - $it1['InvPass'] = 'Password non valida'; - $it1['ReadDenied'] = 'Permesso di lettura negato'; - $it1['FileNotFound'] = 'File non trovato'; - $it1['AutoClose'] = 'Chiudi la finestra al termine'; - $it1['OutDocRoot'] = 'File oltre DOCUMENT_ROOT'; - $it1['NoCmd'] = 'Errore: Comando non informato'; - $it1['ConfTrySave'] = 'File senza permesso di scrittura.\\nProvo a salvare comunque'; - $it1['ConfSaved'] = 'Configurazione salvata'; - $it1['PassSaved'] = 'Password salvata'; - $it1['FileDirExists'] = 'Il file o la directory esiste già'; - $it1['NoPhpinfo'] = 'La funzione phpinfo è disabilitata'; - $it1['NoReturn'] = 'senza Return'; - $it1['FileSent'] = 'File inviato'; - $it1['SpaceLimReached'] = 'è stato raggiunto il limite di spazio disponibile'; - $it1['InvExt'] = 'Estensione non valida'; - $it1['FileNoOverw'] = 'Il file non può essere sovrascritto'; - $it1['FileOverw'] = 'File sovrascritto'; - $it1['FileIgnored'] = 'File ignorato'; - $it1['ChkVer'] = 'Controlla se è disponibile una nuova versione'; - $it1['ChkVerAvailable'] = 'è disponibile una nuova versione: premi qui per scaricarla.'; - $it1['ChkVerNotAvailable'] = 'Non è disponibile nessuna nuova versione. :('; - $it1['ChkVerError'] = 'Errore di connessione.'; - $it1['Website'] = 'Sito Web'; - $it1['SendingForm'] = 'Invio file, attendere prego'; - $it1['NoFileSel'] = 'Nessun file selezionato'; - $it1['SelAll'] = 'Tutti'; - $it1['SelNone'] = 'Nessuno'; - $it1['SelInverse'] = 'Inverti'; - $it1['Selected_s'] = 'selezionato'; - $it1['Total'] = 'totali'; - $it1['Partition'] = 'Partizione'; - $it1['RenderTime'] = 'Tempo per elaborare questa pagina'; - $it1['Seconds'] = 'sec'; - $it1['ErrorReport'] = 'Error Reporting'; - - // Italian - by Federico Corrà - $it2['Version'] = 'Versione'; - $it2['DocRoot'] = 'Root Documenti'; - $it2['FLRoot'] = 'Root del File Manager'; - $it2['Name'] = 'Nome'; - $it2['And'] = 'e'; - $it2['Enter'] = 'Invio'; - $it2['Send'] = 'Spedisci'; - $it2['Refresh'] = 'Aggiorna'; - $it2['SaveConfig'] = 'Salva configurazioni'; - $it2['SavePass'] = 'Salva password'; - $it2['SaveFile'] = 'Salva file'; - $it2['Save'] = 'Salva'; - $it2['Leave'] = 'Esci'; - $it2['Edit'] = 'Modifica'; - $it2['View'] = 'Visualizza'; - $it2['Config'] = 'Configura'; - $it2['Ren'] = 'Rinomina'; - $it2['Rem'] = 'Cancella'; - $it2['Compress'] = 'Comprimi'; - $it2['Decompress'] = 'Decomprimi'; - $it2['ResolveIDs'] = 'Risolvi ID'; - $it2['Move'] = 'Muovi'; - $it2['Copy'] = 'Copia'; - $it2['ServerInfo'] = 'Server info'; - $it2['CreateDir'] = 'Crea cartella'; - $it2['CreateArq'] = 'Crea file'; - $it2['ExecCmd'] = 'Esegui comando'; - $it2['Upload'] = 'Upload'; - $it2['UploadEnd'] = 'Upload terminato'; - $it2['Perm'] = 'Perm'; - $it2['Perms'] = 'Permessi'; - $it2['Owner'] = 'Owner'; - $it2['Group'] = 'Grouppo'; - $it2['Other'] = 'Altro'; - $it2['Size'] = 'Dimensione'; - $it2['Date'] = 'Data'; - $it2['Type'] = 'Tipo'; - $it2['Free'] = 'liberi'; - $it2['Shell'] = 'Shell'; - $it2['Read'] = 'Lettura'; - $it2['Write'] = 'Scrittura'; - $it2['Exec'] = 'Esecuzione'; - $it2['Apply'] = 'Applica'; - $it2['StickyBit'] = 'Sticky Bit'; - $it2['Pass'] = 'Password'; - $it2['Lang'] = 'Lingua'; - $it2['File'] = 'File'; - $it2['File_s'] = 'file'; - $it2['Dir_s'] = 'cartella'; - $it2['To'] = 'a'; - $it2['Destination'] = 'Destinazione'; - $it2['Configurations'] = 'Configurazioni'; - $it2['JSError'] = 'Errore JavaScript'; - $it2['NoSel'] = 'Nessun item selezionato'; - $it2['SelDir'] = 'Scegli la cartella di destinazione sull\'albero a sinistra'; - $it2['TypeDir'] = 'Inserisci il nome della cartella'; - $it2['TypeArq'] = 'Inserisci il nome del file'; - $it2['TypeCmd'] = 'Inserisci il comando'; - $it2['TypeArqComp'] = 'Inserisci il nome del file.\\nL\'estensione definirà le modalità di compressione.\\nEx:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $it2['RemSel'] = 'ELIMINA gli item selezionati'; - $it2['NoDestDir'] = 'Non è stata selezionata la cartella di destinazione'; - $it2['DestEqOrig'] = 'La cartella di origine e di destinazione coincidono'; - $it2['InvalidDest'] = 'La cartella di destinazione non è valida'; - $it2['NoNewPerm'] = 'Nuovo permesso non definito'; - $it2['CopyTo'] = 'COPIA in'; - $it2['MoveTo'] = 'MUOVI in'; - $it2['AlterPermTo'] = 'CAMBIA PERMESSI in'; - $it2['ConfExec'] = 'Conferma ESECUZIONE'; - $it2['ConfRem'] = 'Conferma CANCELLA'; - $it2['EmptyDir'] = 'Cartella Vuota'; - $it2['IOError'] = 'Errore I/O'; - $it2['FileMan'] = 'PHP File Manager'; - $it2['TypePass'] = 'Inserisci la password'; - $it2['InvPass'] = 'Password non valida'; - $it2['ReadDenied'] = 'Accesso in lettura non consentito'; - $it2['FileNotFound'] = 'File non trovato'; - $it2['AutoClose'] = 'Chiudi dopo aver completato'; - $it2['OutDocRoot'] = 'File oltre DOCUMENT_ROOT'; - $it2['NoCmd'] = 'Errore: comando non informato'; - $it2['ConfTrySave'] = 'Accesso in scrittura non consentito.\\nProva a salvare comunque'; - $it2['ConfSaved'] = 'Configurazioni salvate'; - $it2['PassSaved'] = 'Password salvate'; - $it2['FileDirExists'] = 'Il file o la cartella esiste già'; - $it2['NoPhpinfo'] = 'Funzione phpinfo disabilitata'; - $it2['NoReturn'] = 'Nessun ritorno'; - $it2['FileSent'] = 'File spedito'; - $it2['SpaceLimReached'] = 'Limite di spazio raggiunto'; - $it2['InvExt'] = 'Estensione non valida'; - $it2['FileNoOverw'] = 'Il file non potrebbe essere sovrascritto'; - $it2['FileOverw'] = 'File sovrascritto'; - $it2['FileIgnored'] = 'File ignorato'; - $it2['ChkVer'] = 'Check nuova versione'; - $it2['ChkVerAvailable'] = 'Nuova versione, clicca qui per iniziare il download!!'; - $it2['ChkVerNotAvailable'] = 'Nessuna nuova versione disponibile. :('; - $it2['ChkVerError'] = 'Errore di connessione.'; - $it2['Website'] = 'Sito Web'; - $it2['SendingForm'] = 'Invio file, prego attendi'; - $it2['NoFileSel'] = 'Nessun file selezionato'; - $it2['SelAll'] = 'Tutti'; - $it2['SelNone'] = 'Nessuno'; - $it2['SelInverse'] = 'Inverti'; - $it2['Selected_s'] = 'selezionati'; - $it2['Total'] = 'totale'; - $it2['Partition'] = 'Partizione'; - $it2['RenderTime'] = 'Tempo per renderizzare questa pagina'; - $it2['Seconds'] = 'sec'; - $it2['ErrorReport'] = 'Report errori'; - - // Italian - by Luca Zorzi - $it3['Version'] = 'Versione'; - $it3['DocRoot'] = 'Document Root'; - $it3['FLRoot'] = 'Root del File Manager'; - $it3['Name'] = 'Nome'; - $it3['And'] = 'e'; - $it3['Enter'] = 'Invio'; - $it3['Send'] = 'Invia'; - $it3['Refresh'] = 'Aggiorna'; - $it3['SaveConfig'] = 'Salva le impostazioni'; - $it3['SavePass'] = 'Salva la Password'; - $it3['SaveFile'] = 'Salva il File'; - $it3['Save'] = 'Salva'; - $it3['Leave'] = 'Annulla'; - $it3['Edit'] = 'Modifica'; - $it3['View'] = 'Guarda'; - $it3['Config'] = 'Impostazioni'; - $it3['Ren'] = 'Rinomina'; - $it3['Rem'] = 'Elimina'; - $it3['Compress'] = 'Comprimi'; - $it3['Decompress'] = 'Decomprimi'; - $it3['ResolveIDs'] = 'Risolvi ID'; - $it3['Move'] = 'Sposta'; - $it3['Copy'] = 'Copia'; - $it3['ServerInfo'] = 'Server Info'; - $it3['CreateDir'] = 'Crea Cartella'; - $it3['CreateArq'] = 'Crea File'; - $it3['ExecCmd'] = 'Esegui Comando'; - $it3['Upload'] = 'Upload'; - $it3['UploadEnd'] = 'Upload completato'; - $it3['Perm'] = 'Perm'; - $it3['Perms'] = 'Permessi'; - $it3['Owner'] = 'Proprietario'; - $it3['Group'] = 'Gruppo'; - $it3['Other'] = 'Altri'; - $it3['Size'] = 'Dimensione'; - $it3['Date'] = 'Data'; - $it3['Type'] = 'Tipo'; - $it3['Free'] = 'libero'; - $it3['Shell'] = 'Shell'; - $it3['Read'] = 'Lettura'; - $it3['Write'] = 'Scruttura'; - $it3['Exec'] = 'Esecuzione'; - $it3['Apply'] = 'Applica'; - $it3['StickyBit'] = 'Bit Sticky'; - $it3['Pass'] = 'Password'; - $it3['Lang'] = 'Lingua'; - $it3['File'] = 'File'; - $it3['File_s'] = 'file'; - $it3['Dir_s'] = 'cartella/e'; - $it3['To'] = 'a'; - $it3['Destination'] = 'Destinazione'; - $it3['Configurations'] = 'Configurazioni'; - $it3['JSError'] = 'Errore JavaScript'; - $it3['NoSel'] = 'Non ci sono elementi selezioneti'; - $it3['SelDir'] = 'Scegli la cartella di destinazione nell\'elenco a sinistra'; - $it3['TypeDir'] = 'Inserisci il nome della cartella'; - $it3['TypeArq'] = 'Inserisci il nome del file'; - $it3['TypeCmd'] = 'Inserisci il comando'; - $it3['TypeArqComp'] = 'Inserisci il nome del file.\\nIl nome definir à il tipo della compressione .\\nEs:\\nnome.zip\\nnome.tar\\nnome.bzip\\nnome.gzip'; - $it3['RemSel'] = 'ELIMINA gli elementi selezionati'; - $it3['NoDestDir'] = 'Non hai selezionato la cartella di destinazione'; - $it3['DestEqOrig'] = 'La cartella di origine e destinazione è la stessa'; - $it3['InvalidDest'] = 'La cartella di destinazione non è valida'; - $it3['NoNewPerm'] = 'Nuovi permessi non impostati'; - $it3['CopyTo'] = 'COPIA in'; - $it3['MoveTo'] = 'SPOSTA in'; - $it3['AlterPermTo'] = 'CAMBIA I PERMESSI a'; - $it3['ConfExec'] = 'Conferma ESECUZIONE'; - $it3['ConfRem'] = 'Conferma ELIMINAZIONE'; - $it3['EmptyDir'] = 'CArtella vuota'; - $it3['IOError'] = 'Errore di I/O'; - $it3['FileMan'] = 'PHP File Manager'; - $it3['TypePass'] = 'Inserisci la password'; - $it3['InvPass'] = 'Password errata'; - $it3['ReadDenied'] = 'Accesso in lettura negato'; - $it3['FileNotFound'] = 'File non trovato'; - $it3['AutoClose'] = 'Chiudi alla fine'; - $it3['OutDocRoot'] = 'File fuori dalla DOCUMENT_ROOT'; - $it3['NoCmd'] = 'Errore: Comando non informato'; - $it3['ConfTrySave'] = 'File senza il permesso di scrittura.\\nProvare a salvarlo comunque'; - $it3['ConfSaved'] = 'Configurazione salvata'; - $it3['PassSaved'] = 'Password salvata'; - $it3['FileDirExists'] = 'Il file o la cartella esiste già'; - $it3['NoPhpinfo'] = 'Funzione phpinfo disabilitata'; - $it3['NoReturn'] = 'no return'; - $it3['FileSent'] = 'File inviato'; - $it3['SpaceLimReached'] = 'Limite di spazio raggiunto'; - $it3['InvExt'] = 'Estensione non valida'; - $it3['FileNoOverw'] = 'Il file non può essere sovrascritto'; - $it3['FileOverw'] = 'File sovrascritto'; - $it3['FileIgnored'] = 'File ignorato'; - $it3['ChkVer'] = 'Controlla la presnza di una nuova versione'; - $it3['ChkVerAvailable'] = 'Nuova versione, clicca qui per avviare il download!!'; - $it3['ChkVerNotAvailable'] = 'Nessuna nuova versione disponibile. :('; - $it3['ChkVerError'] = 'Errore di connessione.'; - $it3['Website'] = 'Sito'; - $it3['SendingForm'] = 'Invio dei file, attendi'; - $it3['NoFileSel'] = 'Nessun file selezionato'; - $it3['SelAll'] = 'Tutti'; - $it3['SelNone'] = 'Nessuno'; - $it3['SelInverse'] = 'Inverti selezione'; - $it3['Selected_s'] = 'selezionato'; - $it3['Total'] = 'totale'; - $it3['Partition'] = 'Partizione'; - $it3['RenderTime'] = 'Tempo di generazione'; - $it3['Seconds'] = 'sec'; - $it3['ErrorReport'] = 'Error Reporting'; - - // Italian - by Gianni - $it4['Version'] = 'Versione'; - $it4['DocRoot'] = 'Root documenti'; - $it4['FLRoot'] = 'Root file manager'; - $it4['Name'] = 'Nome'; - $it4['And'] = 'e'; - $it4['Enter'] = 'Entra'; - $it4['Send'] = 'Invia'; - $it4['Refresh'] = 'Aggiorna'; - $it4['SaveConfig'] = 'Salva configurazioni'; - $it4['SavePass'] = 'Salva password'; - $it4['SaveFile'] = 'Salva file'; - $it4['Save'] = 'Salva'; - $it4['Leave'] = 'Esci'; - $it4['Edit'] = 'Modifica'; - $it4['View'] = 'Vedi'; - $it4['Config'] = 'Preferenze'; - $it4['Ren'] = 'Rinomina'; - $it4['Rem'] = 'Cancella'; - $it4['Compress'] = 'Comprimi'; - $it4['Decompress'] = 'Decomprimi'; - $it4['ResolveIDs'] = 'Risolvi IDs'; - $it4['Move'] = 'Sposta'; - $it4['Copy'] = 'Copia'; - $it4['ServerInfo'] = 'Versione PHP'; - $it4['CreateDir'] = 'Crea directory'; - $it4['CreateArq'] = 'Crea file'; - $it4['ExecCmd'] = 'Esegui comando'; - $it4['Upload'] = 'Upload'; - $it4['UploadEnd'] = 'Upload terminato'; - $it4['Perm'] = 'Perm'; - $it4['Perms'] = 'Permessi'; - $it4['Owner'] = 'Proprietario'; - $it4['Group'] = 'Gruppo'; - $it4['Other'] = 'Altro'; - $it4['Size'] = 'Dimensione'; - $it4['Date'] = 'Data'; - $it4['Type'] = 'Tipo'; - $it4['Free'] = 'liberi'; - $it4['Shell'] = 'Shell'; - $it4['Read'] = 'Lettura'; - $it4['Write'] = 'Scrittura'; - $it4['Exec'] = 'Esecuzione'; - $it4['Apply'] = 'Applica'; - $it4['StickyBit'] = 'Sticky Bit'; - $it4['Pass'] = 'Password'; - $it4['Lang'] = 'Lingua'; - $it4['File'] = 'File'; - $it4['File_s'] = 'files'; - $it4['Dir_s'] = 'directory'; - $it4['To'] = 'in'; - $it4['Destination'] = 'Destinazione'; - $it4['Configurations'] = 'Preferenze'; - $it4['JSError'] = 'Errore JavaScript'; - $it4['NoSel'] = 'Non ci sono elementi selezionati'; - $it4['SelDir'] = 'Seleziona una directory di destinazione a sinistra'; - $it4['TypeDir'] = 'Inserisci il nome della directory'; - $it4['TypeArq'] = 'Inserisci il nome del file'; - $it4['TypeCmd'] = 'Inserisci il comando'; - $it4['TypeArqComp'] = 'Inserisci il nome del file e tipo di compressione\\n(.Zip .Tar .Bzip .Gzip)'; - $it4['RemSel'] = 'Cancella gli elementi selezionati'; - $it4['NoDestDir'] = 'Seleziona una directory di destinazione'; - $it4['DestEqOrig'] = 'Origine e destinazione sono uguali'; - $it4['InvalidDest'] = 'Directory di destinazione non valida'; - $it4['NoNewPerm'] = 'Nuovi permessi non impostati'; - $it4['CopyTo'] = 'Copia in'; - $it4['MoveTo'] = 'Sposta in'; - $it4['AlterPermTo'] = 'Cambia permessi in'; - $it4['ConfExec'] = 'Conferma esecuzione'; - $it4['ConfRem'] = 'Conferma eliminazione'; - $it4['EmptyDir'] = 'Directory Vuota'; - $it4['IOError'] = 'Errore I/O'; - $it4['FileMan'] = 'PHP File Manager'; - $it4['TypePass'] = 'Inserisci la password'; - $it4['InvPass'] = 'Password non valida'; - $it4['ReadDenied'] = 'Accesso in lettura negato'; - $it4['FileNotFound'] = 'File non trovato'; - $it4['AutoClose'] = 'Chiudi al termine'; - $it4['OutDocRoot'] = 'File fuori dalla Root documenti'; - $it4['NoCmd'] = 'Errore: comando non informato'; - $it4['ConfTrySave'] = 'File senza permessi di scrittura.\\nRiprova a salvare'; - $it4['ConfSaved'] = 'Preferenze salvate'; - $it4['PassSaved'] = 'Password salvata'; - $it4['FileDirExists'] = 'Il file o la directory esistono già'; - $it4['NoPhpinfo'] = 'Funzione phpinfo disabilitata'; - $it4['NoReturn'] = 'Nessun ritorno'; - $it4['FileSent'] = 'File inviato'; - $it4['SpaceLimReached'] = 'Raggiunto spazio limite'; - $it4['InvExt'] = 'Estensione non valida'; - $it4['FileNoOverw'] = 'Il file non può essere sovrascritto'; - $it4['FileOverw'] = 'File sovrascritto'; - $it4['FileIgnored'] = 'File ignorato'; - $it4['ChkVer'] = 'Controlla aggiornamenti'; - $it4['ChkVerAvailable'] = 'Nuova versione, click qui per effettuare il download!'; - $it4['ChkVerNotAvailable'] = 'Nessuna nuova versione'; - $it4['ChkVerError'] = 'Errore di connessione'; - $it4['Website'] = 'Sito'; - $it4['SendingForm'] = 'Invio files, attendere...'; - $it4['NoFileSel'] = 'Nessun file selezionato'; - $it4['SelAll'] = 'Tutti'; - $it4['SelNone'] = 'Nessuno'; - $it4['SelInverse'] = 'Inverti'; - $it4['Selected_s'] = 'selezionati'; - $it4['Total'] = 'totale'; - $it4['Partition'] = 'Partizione'; - $it4['RenderTime'] = 'Tempo per il render di questa pagina'; - $it4['Seconds'] = 'sec'; - $it4['ErrorReport'] = 'Report errori'; - - // Turkish - by Necdet Yazilimlari - $tr['Version'] = 'Versiyon'; - $tr['DocRoot'] = 'Kok dosya'; - $tr['FLRoot'] = 'Kok dosya yoneticisi'; - $tr['Name'] = 'Isim'; - $tr['And'] = 've'; - $tr['Enter'] = 'Giris'; - $tr['Send'] = 'Yolla'; - $tr['Refresh'] = 'Yenile'; - $tr['SaveConfig'] = 'Ayarlari kaydet'; - $tr['SavePass'] = 'Parolayi kaydet'; - $tr['SaveFile'] = 'Dosyayi kaydet'; - $tr['Save'] = 'Kaydet'; - $tr['Leave'] = 'Ayril'; - $tr['Edit'] = 'Duzenle'; - $tr['View'] = 'Goster'; - $tr['Config'] = 'Yapilandirma'; - $tr['Ren'] = 'Yeniden adlandir'; - $tr['Rem'] = 'Sil'; - $tr['Compress'] = '.Zip'; - $tr['Decompress'] = '.ZipCoz'; - $tr['ResolveIDs'] = 'Kimlikleri coz'; - $tr['Move'] = 'Tasi'; - $tr['Copy'] = 'Kopyala'; - $tr['ServerInfo'] = 'Sunucu Bilgisi'; - $tr['CreateDir'] = 'Dizin olustur'; - $tr['CreateArq'] = 'Dosya olusutur'; - $tr['ExecCmd'] = 'Komut calistir'; - $tr['Upload'] = 'Dosya yukle'; - $tr['UploadEnd'] = 'Yukleme tamamlandi'; - $tr['Perm'] = 'Izinler'; - $tr['Perms'] = 'Izinler'; - $tr['Owner'] = 'Sahip'; - $tr['Group'] = 'Grup'; - $tr['Other'] = 'Diger'; - $tr['Size'] = 'Boyut'; - $tr['Date'] = 'Tarih'; - $tr['Type'] = 'Tip'; - $tr['Free'] = 'Bos'; - $tr['Shell'] = 'Kabuk'; - $tr['Read'] = 'Oku'; - $tr['Write'] = 'Yaz'; - $tr['Exec'] = 'Calistir'; - $tr['Apply'] = 'Uygula'; - $tr['StickyBit'] = 'Sabit bit'; - $tr['Pass'] = 'Parola'; - $tr['Lang'] = 'Dil'; - $tr['File'] = 'Dosya'; - $tr['File_s'] = 'Dosya(lar)'; - $tr['Dir_s'] = 'Dizin(ler)'; - $tr['To'] = 'icin'; - $tr['Destination'] = 'Hedef'; - $tr['Configurations'] = 'Yapilandirmalar'; - $tr['JSError'] = 'JavaScript hatasi'; - $tr['NoSel'] = 'Secilen oge yok'; - $tr['SelDir'] = 'Soldaki hedef dizin agaci secin'; - $tr['TypeDir'] = 'Dizin adini girin'; - $tr['TypeArq'] = 'Dosya adini girin'; - $tr['TypeCmd'] = 'Komut girin'; - $tr['TypeArqComp'] = 'Dosya ismini yazdiktan sonra sonuna .zip ekleyin'; - $tr['RemSel'] = 'Secili ogeleri sil'; - $tr['NoDestDir'] = 'Secili dizin yok'; - $tr['DestEqOrig'] = 'Kokenli ve esit gidis rehberi'; - $tr['InvalidDest'] = 'Hedef dizin gecersiz'; - $tr['NoNewPerm'] = 'Izinler uygun degil'; - $tr['CopyTo'] = 'Kopya icin'; - $tr['MoveTo'] = 'Tasi icin'; - $tr['AlterPermTo'] = 'Permission secin'; - $tr['ConfExec'] = 'Yapilandirmayi onayla'; - $tr['ConfRem'] = 'Simeyi onayla'; - $tr['EmptyDir'] = 'Dizin bos'; - $tr['IOError'] = 'Hata'; - $tr['FileMan'] = 'Necdet_Yazilimlari'; - $tr['TypePass'] = 'Parolayi girin'; - $tr['InvPass'] = 'Gecersiz parola'; - $tr['ReadDenied'] = 'Okumaya erisim engellendi'; - $tr['FileNotFound'] = 'Dosya bulunamadi'; - $tr['AutoClose'] = 'Otomatik kapat'; - $tr['OutDocRoot'] = 'Kok klasor disindaki dosya'; - $tr['NoCmd'] = 'Hata: Komut haberdar degil'; - $tr['ConfTrySave'] = 'Dosya yazma izniniz yok. Yine de kaydetmeyi deneyebilirsiniz.'; - $tr['ConfSaved'] = 'Ayarlar kaydedildi'; - $tr['PassSaved'] = 'Parola kaydedildi'; - $tr['FileDirExists'] = 'Dosya veya dizin zaten var'; - $tr['NoPhpinfo'] = 'Php fonksiyon bilgisi devre disi'; - $tr['NoReturn'] = 'Deger dondurmuyor'; - $tr['FileSent'] = 'Dosya gonderildi'; - $tr['SpaceLimReached'] = 'Disk limitine ulasildi'; - $tr['InvExt'] = 'Gecersiz uzanti'; - $tr['FileNoOverw'] = 'Dosya degistirilemiyor'; - $tr['FileOverw'] = 'Dosya degistiribiliyor'; - $tr['FileIgnored'] = 'Dosya kabul edildi'; - $tr['ChkVer'] = 'Yeni versiyonu kontrol et'; - $tr['ChkVerAvailable'] = 'Yeni surum bulundu. Indirmek icin buraya tiklayin.'; - $tr['ChkVerNotAvailable'] = 'Yeni surum bulunamadi.'; - $tr['ChkVerError'] = 'Baglanti hatasi'; - $tr['Website'] = 'Website'; - $tr['SendingForm'] = 'Dosyalar gonderiliyor, lutfen bekleyin'; - $tr['NoFileSel'] = 'Secili dosya yok'; - $tr['SelAll'] = 'Hepsi'; - $tr['SelNone'] = 'Hicbiri'; - $tr['SelInverse'] = 'Ters'; - $tr['Selected_s'] = 'Secili oge(ler)'; - $tr['Total'] = 'Toplam'; - $tr['Partition'] = 'Bolme'; - $tr['RenderTime'] = 'Olusturuluyor'; - $tr['Seconds'] = 'Saniye'; - $tr['ErrorReport'] = 'Hata raporu'; - - // Россия - Евгений Рашев - $ru['Version']='Версия'; - $ru['DocRoot']='Документ Root '; - $ru['FLRoot']='Файловый менеджер'; - $ru['Name']='Имя'; - $ru['And']='и'; - $ru['Enter']='Enter'; - $ru['Send']='Отправить'; - $ru['Refresh']='Обновить'; - $ru['SaveConfig']='Сохранить конфигурацию'; - $ru['SavePass']='Сохранить пароль'; - $ru['SaveFile']='Сохранить файл '; - $ru['Save']='Сохранить'; - $ru['Leave']='Оставь'; - $ru['Edit']='Изменить'; - $ru['View']='Просмотр'; - $ru['Config']='Настройки'; - $ru['Ren']='Переименовать'; - $ru['Rem']='Удалить'; - $ru['Compress']='Сжать'; - $ru['Decompress']='Распаковать'; - $ru['ResolveIDs']='Определять id'; - $ru['Move']='Переместить'; - $ru['Copy']='Копировать'; - $ru['ServerInfo']='Инфо о сервере'; - $ru['CreateDir']='Создать папку'; - $ru['CreateArq']='Создайте файл '; - $ru['ExecCmd']='Выполнить'; - $ru['Upload']='Загрузить'; - $ru['UploadEnd']='Загружено'; - $ru['Perm']='Права'; - $ru['Perms']='Разрешения'; - $ru['Owner']='Владелец'; - $ru['Group']='Группа'; - $ru['Other']='Другие'; - $ru['Size']='Размер'; - $ru['Date']='Дата'; - $ru['Type']='Тип'; - $ru['Free']='Свободно'; - $ru['Shell']='Shell'; - $ru['Read']='Читать'; - $ru['Write']='Писать'; - $ru['Exec']='Выполнять'; - $ru['Apply']='Применить'; - $ru['StickyBit']='StickyBit'; - $ru['Pass']='Пароль'; - $ru['Lang']='Язык'; - $ru['File']='Файл'; - $ru['File_s']='Файл..'; - $ru['Dir_s']='Пап..'; - $ru['To']='в'; - $ru['Destination']='Назначение'; - $ru['Configurations']='Конфигурация'; - $ru['JSError']='Ошибка JavaScript'; - $ru['NoSel']='нет выбранных элементов'; - $ru['SelDir']='Выберите папку назначения на левом дереве '; - $ru['TypeDir']='Введите имя каталога '; - $ru['TypeArq']='Введите имя файла'; - $ru['TypeCmd']='Введите команду '; - $ru['TypeArqComp']='Введите имя файла ,расширение\\n это позволит определить тип сжатия \\n Пример:.. \\n nome.zip \\n nome.tar \\n nome.bzip \\n nome.gzip '; - $ru['RemSel']='Удалить выбранные элементы'; - $ru['NoDestDir']='нет выбранного каталога назначения'; - $ru['DestEqOrig']='Происхождение и назначение каталогов равны '; - $ru['InvalidDest']='Назначение каталога недействительно'; - $ru['NoNewPerm']='Новые разрешения не установлены'; - $ru['CopyTo']='Копировать в '; - $ru['MoveTo']='Переместить в'; - $ru['AlterPermTo']='Изменение разрешений в '; - $ru['ConfExec']='Подтвердить ВЫПОЛНИТЬ '; - $ru['ConfRem']='Подтвердить УДАЛЕНИЕ'; - $ru['EmptyDir']='Пустой каталог '; - $ru['IOError']='I/O Error'; - $ru['FileMan']='PHP Файловый менеджер '; - $ru['TypePass']='Введите пароль'; - $ru['InvPass']='Неверный пароль'; - $ru['ReadDenied']='Доступ запрещен '; - $ru['FileNotFound']='Файл не найден'; - $ru['AutoClose']='Закрыть полностью '; - $ru['OutDocRoot']='Файлы за пределами DOCUMENT_ROOT'; - $ru['NoCmd']='Ошибка: Не поддерживаемая команда'; - $ru['ConfTrySave']='Файл без прав на запись. \\n Сохранить в любом случае. '; - $ru['ConfSaved']='Конфигурация сохранена'; - $ru['PassSaved']='Пароль сохранен'; - $ru['FileDirExists']='Файл или каталог уже существует'; - $ru['NoPhpinfo']='Функция PHPInfo отключена'; - $ru['NoReturn']='Нет возврата'; - $ru['FileSent']='Файл отправлен'; - $ru['SpaceLimReached']='Достигнут предел Пространства'; - $ru['InvExt']='Неверное расширение'; - $ru['FileNoOverw']='Файл не может быть перезаписан '; - $ru['FileOverw']='Файл перезаписывается'; - $ru['FileIgnored']='Файл игнорируется'; - $ru['ChkVer']='Проверить обновление'; - $ru['ChkVerAvailable']=' Доступна новая версия, нажмите здесь, чтобы начать загрузку! '; - $ru['ChkVerNotAvailable']='Нет новой версии. :('; - $ru['ChkVerError']='Ошибка подключения. '; - $ru['Website']='Сайт'; - $ru['SendingForm']='Отправка файлов, пожалуйста, подождите '; - $ru['NoFileSel']='Нет выбранных файлов'; - $ru['SelAll']='Выделить все'; - $ru['SelNone']='Отмена'; - $ru['SelInverse']='Обратить'; - $ru['Selected_s']='Выбран'; - $ru['Total']='Всего'; - $ru['Partition']='Раздел'; - $ru['RenderTime']='Скрипт выполнен за'; - $ru['Seconds']='Секунд'; - $ru['ErrorReport']='Отчет об ошибках'; - - // Catalan - by Pere Borràs AKA @Norl - $cat['Version'] = 'Versió'; - $cat['DocRoot'] = 'Arrel del programa'; - $cat['FLRoot'] = 'Arrel de l`administrador d`arxius'; - $cat['Name'] = 'Nom'; - $cat['And'] = 'i'; - $cat['Enter'] = 'Entrar'; - $cat['Send'] = 'Enviar'; - $cat['Refresh'] = 'Refrescar'; - $cat['SaveConfig'] = 'Desar configuracions'; - $cat['SavePass'] = 'Desar clau'; - $cat['SaveFile'] = 'Desar Arxiu'; - $cat['Save'] = 'Desar'; - $cat['Leave'] = 'Sortir'; - $cat['Edit'] = 'Editar'; - $cat['View'] = 'Mirar'; - $cat['Config'] = 'Config.'; - $cat['Ren'] = 'Canviar nom'; - $cat['Rem'] = 'Esborrar'; - $cat['Compress'] = 'Comprimir'; - $cat['Decompress'] = 'Descomprimir'; - $cat['ResolveIDs'] = 'Resoldre IDs'; - $cat['Move'] = 'Moure'; - $cat['Copy'] = 'Copiar'; - $cat['ServerInfo'] = 'Info del Server'; - $cat['CreateDir'] = 'Crear Directori'; - $cat['CreateArq'] = 'Crear Arxiu'; - $cat['ExecCmd'] = 'Executar Comandament'; - $cat['Upload'] = 'Pujar'; - $cat['UploadEnd'] = 'Pujat amb èxit'; - $cat['Perm'] = 'Perm'; - $cat['Perms'] = 'Permisos'; - $cat['Owner'] = 'Propietari'; - $cat['Group'] = 'Grup'; - $cat['Other'] = 'Altre'; - $cat['Size'] = 'Tamany'; - $cat['Date'] = 'Data'; - $cat['Type'] = 'Tipus'; - $cat['Free'] = 'lliure'; - $cat['Shell'] = 'Executar'; - $cat['Read'] = 'Llegir'; - $cat['Write'] = 'Escriure'; - $cat['Exec'] = 'Executar'; - $cat['Apply'] = 'Aplicar'; - $cat['StickyBit'] = 'Sticky Bit'; - $cat['Pass'] = 'Clau'; - $cat['Lang'] = 'Llenguatje'; - $cat['File'] = 'Arxius'; - $cat['File_s'] = 'arxiu(s)'; - $cat['Dir_s'] = 'directori(s)'; - $cat['To'] = 'a'; - $cat['Destination'] = 'Destí'; - $cat['Configurations'] = 'Configuracions'; - $cat['JSError'] = 'Error de JavaScript'; - $cat['NoSel'] = 'No hi ha items seleccionats'; - $cat['SelDir'] = 'Seleccioneu el directori de destí a l`arbre de la dreta'; - $cat['TypeDir'] = 'Escrigui el nom del directori'; - $cat['TypeArq'] = 'Escrigui el nom de l`arxiu'; - $cat['TypeCmd'] = 'Escrigui el comandament'; - $cat['TypeArqComp'] = 'Escrigui el nombre del directorio.\\nL`extensió definirà el tipus de compressió.\\nEx:\\nnom.zip\\nnom.tar\\nnom.bzip\\nnom.gzip'; - $cat['RemSel'] = 'ESBORRAR items seleccionats'; - $cat['NoDestDir'] = 'No s`ha seleccionat el directori de destí'; - $cat['DestEqOrig'] = 'L`origen i el destí són iguals'; - $cat['InvalidDest'] = 'El destí del directori és invàlid'; - $cat['NoNewPerm'] = 'Els permisos no s`han pogut establir'; - $cat['CopyTo'] = 'COPIAR a'; - $cat['MoveTo'] = 'MOURE a'; - $cat['AlterPermTo'] = 'CAMBIAR PERMISOS a'; - $cat['ConfExec'] = 'Confirmar EXECUCIÓ'; - $cat['ConfRem'] = 'Confirmar ESBORRAT'; - $cat['EmptyDir'] = 'Directori buit'; - $cat['IOError'] = 'Error I/O'; - $cat['FileMan'] = 'PHP File Manager'; - $cat['TypePass'] = 'Escrigui la clau'; - $cat['InvPass'] = 'Clau invàlida'; - $cat['ReadDenied'] = 'Accés de lectura denegat'; - $cat['FileNotFound'] = 'Arxiu no trobat'; - $cat['AutoClose'] = 'Tancar al completar'; - $cat['OutDocRoot'] = 'Arxiu abans de DOCUMENT_ROOT'; - $cat['NoCmd'] = 'Error: No s`ha escrit cap comandament'; - $cat['ConfTrySave'] = 'Arxiu sense permisos d`escriptura.\\nIntenteu desar a un altre lloc'; - $cat['ConfSaved'] = 'Configuració Desada'; - $cat['PassSaved'] = 'Clau desada'; - $cat['FileDirExists'] = 'Arxiu o directori ja existent'; - $cat['NoPhpinfo'] = 'Funció phpinfo() no habilitada'; - $cat['NoReturn'] = 'sense retorn'; - $cat['FileSent'] = 'Arxiu enviat'; - $cat['SpaceLimReached'] = 'Límit d`espaci al disc assolit'; - $cat['InvExt'] = 'Extensió no vàlida'; - $cat['FileNoOverw'] = 'L`arxiu no ha pogut ser sobreescrit'; - $cat['FileOverw'] = 'Arxiu sobreescrit'; - $cat['FileIgnored'] = 'Arxiu ignorat'; - $cat['ChkVer'] = 'Revisar les actualitzacions'; - $cat['ChkVerAvailable'] = 'Nova versió, feu clic aquí per descarregar'; - $cat['ChkVerNotAvailable'] = 'La vostra versió és la més recent.'; - $cat['ChkVerError'] = 'Error de connexió.'; - $cat['Website'] = 'Lloc Web'; - $cat['SendingForm'] = 'Enviant arxius, esperi'; - $cat['NoFileSel'] = 'Cap arxiu seleccionat'; - $cat['SelAll'] = 'Tots'; - $cat['SelNone'] = 'Cap'; - $cat['SelInverse'] = 'Invers'; - $cat['Selected_s'] = 'seleccionat'; - $cat['Total'] = 'total'; - $cat['Partition'] = 'Partició'; - $cat['RenderTime'] = 'Generat en'; - $cat['Seconds'] = 'seg'; - $cat['ErrorReport'] = 'Informe d`error'; - - $lang_ = $$lang; - if (isset($lang_[$tag])) return html_encode($lang_[$tag]); - //else return "[$tag]"; // So we can know what is missing - return $en[$tag]; -} -// +-------------------------------------------------- -// | File System -// +-------------------------------------------------- -function total_size($arg) { - $total = 0; - if (file_exists($arg)) { - if (is_dir($arg)) { - $handle = opendir($arg); - while($aux = readdir($handle)) { - if ($aux != "." && $aux != "..") $total += total_size($arg."/".$aux); - } - @closedir($handle); - } else $total = filesize($arg); - } - return $total; -} -function total_delete($arg) { - if (file_exists($arg)) { - @chmod($arg,0711); - if (is_dir($arg)) { - $handle = opendir($arg); - while($aux = readdir($handle)) { - if ($aux != "." && $aux != "..") total_delete($arg."/".$aux); - } - @closedir($handle); - rmdir($arg); - } else unlink($arg); - } -} -function total_copy($orig,$dest) { - $ok = true; - if (file_exists($orig)) { - if (is_dir($orig)) { - mkdir($dest,0711); - $handle = opendir($orig); - while(($aux = readdir($handle))&&($ok)) { - if ($aux != "." && $aux != "..") $ok = total_copy($orig."/".$aux,$dest."/".$aux); - } - @closedir($handle); - } else $ok = copy((string)$orig,(string)$dest); - } - return $ok; -} -function total_move($orig,$dest) { - // Just why doesn't it has a MOVE alias?! - return rename((string)$orig,(string)$dest); -} -function download(){ - global $current_dir,$filename; - $filename = remove_special_chars($filename); - $file = $current_dir.$filename; - if(file_exists($file)){ - $is_denied = false; - foreach($download_ext_filter as $key=>$ext){ - if (preg_match($ext,$filename)){ - $is_denied = true; - break; - } - } - if (!$is_denied){ - $size = filesize($file); - header("Content-Type: application/save"); - header("Content-Length: $size"); - header("Content-Disposition: attachment; filename=\"$filename\""); - header("Content-Transfer-Encoding: binary"); - if ($fh = fopen("$file", "rb")){ - fpassthru($fh); - fclose($fh); - } else alert(et('ReadDenied').": ".$file); - } else alert(et('ReadDenied').": ".$file); - } else alert(et('FileNotFound').": ".$file); -} -function save_upload($temp_file,$filename,$dir_dest) { - global $upload_ext_filter; - $filename = remove_special_chars($filename); - $file = $dir_dest.$filename; - $filesize = filesize($temp_file); - $is_denied = false; - foreach($upload_ext_filter as $key=>$ext){ - if (preg_match($ext,$filename)){ - $is_denied = true; - break; - } - } - if (!$is_denied){ - if (!check_limit($filesize)){ - //echo "file:$file"; - if (file_exists($file)){ - if (unlink($file)){ - if (copy($temp_file,$file)){ - @chmod($file,0611); - $out = 6; - } else $out = 2; - } else $out = 5; - } else { - if (copy($temp_file,$file)){ - @chmod($file,0611); - $out = 1; - } else $out = 2; - } - if(file_exists("/usr/bin/dos2unix")&&function_exists("system")) system("/usr/bin/dos2unix ".$file); - } else $out = 3; - } else $out = 4; - return $out; -} -function zip_extract(){ - global $cmd_arg,$current_dir,$islinux; - $zip = zip_open($current_dir.$cmd_arg); - if ($zip) { - while ($zip_entry = zip_read($zip)) { - if (zip_entry_filesize($zip_entry)) { - $complete_path = $path.dirname(zip_entry_name($zip_entry)); - $complete_name = $path.zip_entry_name($zip_entry); - $complete_path=remove_special_chars($complete_path); - if(!file_exists($complete_path)) { - $tmp = ''; - foreach(explode('/',$complete_path) AS $k) { - $tmp .= $k.'/'; - if(!file_exists($tmp)) { - @mkdir($current_dir.$tmp, 0611); - } - } - } - if (zip_entry_open($zip, $zip_entry, "r")) { - $complete_name=remove_special_chars($complete_name); - if ($fd = fopen($current_dir.$complete_name, 'w')){ - fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry))); - fclose($fd); - } else echo "fopen($current_dir.$complete_name) error
    "; - zip_entry_close($zip_entry); - } else echo "zip_entry_open($zip,$zip_entry) error
    "; - } - } - zip_close($zip); - } -} -// +-------------------------------------------------- -// | Data Formating -// +-------------------------------------------------- -function html_encode($str){ - global $charSet; - $str = preg_replace(array('/&/', '//', '/"/'), array('&', '<', '>', '"'), $str); // Bypass PHP to allow any charset!! - $str = htmlentities($str, ENT_QUOTES, $charSet, false); - return $str; -} -function rep($x,$y){ - if ($x) { - $aux = ""; - for ($a=1;$a<=$x;$a++) $aux .= $y; - return $aux; - } else return ""; -} -function str_zero($arg1,$arg2){ - if (strstr($arg1,"-") == false){ - $aux = intval($arg2) - strlen($arg1); - if ($aux) return rep($aux,"0").$arg1; - else return $arg1; - } else { - return "[$arg1]"; - } -} -function replace_double($sub,$str){ - $out=str_replace($sub.$sub,$sub,$str); - while ( strlen($out) != strlen($str) ){ - $str=$out; - $out=str_replace($sub.$sub,$sub,$str); - } - return $out; -} -function remove_special_chars($str){ - // $str = trim($str); - // $str = strtr($str,"¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ!@#%&*()[]{}+=?/\\", - // "YuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy_________________"); - $str = mb_ereg_replace ("\\.\\.","",$str); - $str = mb_ereg_replace("\\\\","",$str); - $str = mb_ereg_replace ("/","",$str); - $str = mb_ereg_replace ("\\$","",$str); - return $str; -} -function format_path($str){ - global $islinux; - $str = trim($str); - $str = str_replace("..","",str_replace("\\","/",str_replace("\$","",$str))); - $done = false; - while (!$done) { - $str2 = str_replace("//","/",$str); - if (strlen($str) == strlen($str2)) $done = true; - else $str = $str2; - } - $tam = strlen($str); - if ($tam){ - $last_char = $tam - 1; - if ($str[$last_char] != "/") $str .= "/"; - if (!$islinux) $str = ucfirst($str); - } - return $str; -} -function array_csort() { - $args = func_get_args(); - $marray = array_shift($args); - $msortline = "return(array_multisort("; - foreach ($args as $arg) { - $i++; - if (is_string($arg)) { - foreach ($marray as $row) { - $sortarr[$i][] = $row[$arg]; - } - } else { - $sortarr[$i] = $arg; - } - $msortline .= "\$sortarr[".$i."],"; - } - $msortline .= "\$marray));"; - eval($msortline); - return $marray; -} -function show_perms( $P ) { - $sP = ""; - if($P & 0x1000) $sP .= 'p'; // FIFO pipe - elseif($P & 0x2000) $sP .= 'c'; // Character special - elseif($P & 0x4000) $sP .= 'd'; // Directory - elseif($P & 0x6000) $sP .= 'b'; // Block special - elseif($P & 0x8000) $sP .= '−'; // Regular - elseif($P & 0xA000) $sP .= 'l'; // Symbolic Link - elseif($P & 0xC000) $sP .= 's'; // Socket - else $sP .= 'u'; // UNKNOWN - $sP .= ""; - // owner - group - others - $sP .= (($P & 0x0100) ? 'r' : '−') . (($P & 0x0080) ? 'w' : '−') . (($P & 0x0040) ? (($P & 0x0800) ? 's' : 'x' ) : (($P & 0x0800) ? 'S' : '−')); - $sP .= (($P & 0x0020) ? 'r' : '−') . (($P & 0x0010) ? 'w' : '−') . (($P & 0x0008) ? (($P & 0x0400) ? 's' : 'x' ) : (($P & 0x0400) ? 'S' : '−')); - $sP .= (($P & 0x0004) ? 'r' : '−') . (($P & 0x0002) ? 'w' : '−') . (($P & 0x0001) ? (($P & 0x0200) ? 't' : 'x' ) : (($P & 0x0200) ? 'T' : '−')); - return $sP; -} -function format_size($arg) { - if ($arg>0){ - $j = 0; - $ext = array(" bytes"," Kb"," Mb"," Gb"," Tb"); - while ($arg >= pow(1024,$j)) ++$j; - return round($arg / pow(1024,$j-1) * 100) / 100 . $ext[$j-1]; - } else return "0 bytes"; -} -function get_size($file) { - return format_size(filesize($file)); -} -function check_limit($new_filesize=0) { - global $fm_current_root; - global $quota_mb; - if($quota_mb){ - $total = total_size($fm_current_root); - if (floor(($total+$new_filesize)/(1024*1024)) > $quota_mb) return true; - } - return false; -} -function get_user($arg) { - global $mat_passwd; - $aux = "x:".trim($arg).":"; - for($x=0;$x - - - - ...:::: ".et('FileMan')." - - $header - - - "; -} -function reloadframe($ref,$frame_number,$Plus=""){ - global $current_dir,$path_info; - echo " - - "; -} -function alert($arg){ - echo " - - "; -} -function tree($dir_before,$dir_current,$indice){ - global $fm_current_root, $current_dir, $islinux; - global $expanded_dir_list; - $indice++; - $num_dir = 0; - $dir_name = str_replace($dir_before,"",$dir_current); - $dir_before = str_replace("//","/",$dir_before); - $dir_current = str_replace("//","/",$dir_current); - $is_denied = false; - if ($islinux) { - $denied_list = "/proc#/dev"; - $mat = explode("#",$denied_list); - foreach($mat as $key => $val){ - if ($dir_current == $val){ - $is_denied = true; - break; - } - } - unset($mat); - } - if (!$is_denied){ - if ($handle = @opendir($dir_current)){ - // Permitido - while ($file = readdir($handle)){ - if ($file != "." && $file != ".." && is_dir("$dir_current/$file")) - $mat_dir[] = $file; - } - @closedir($handle); - if (count($mat_dir)){ - sort($mat_dir,SORT_STRING); - // with Sub-dir - if ($indice != 0){ - for ($aux=1;$aux<$indice;$aux++) echo "    "; - } - if ($dir_before != $dir_current){ - if (strstr($expanded_dir_list,":$dir_current/$dir_name")) $op_str = "[–]"; - else $op_str = "[+]"; - echo "$op_str $dir_name
    \n"; - } else { - echo "$fm_current_root
    \n"; - } - for ($x=0;$x[  ]"; - echo " $dir_name
    \n"; - } else { - echo " $fm_current_root
    \n"; - } - } - } else { - // denied - if ($dir_before != $dir_current){ - for ($aux=1;$aux<$indice;$aux++) echo "    "; - echo "[  ]"; - echo " $dir_name
    \n"; - } else { - echo " $fm_current_root
    \n"; - } - - } - } else { - // denied - if ($dir_before != $dir_current){ - for ($aux=1;$aux<$indice;$aux++) echo "    "; - echo "[  ]"; - echo " $dir_name
    \n"; - } else { - echo " $fm_current_root
    \n"; - } - } -} -function show_tree(){ - global $fm_current_root,$path_info,$setflag,$islinux,$cookie_cache_time; - html_header(" - "); - echo "\n"; - echo " - - "; - echo "\n"; - echo ""; - echo ""; - echo " - - - - - - "; - echo "
    "; - if (!$islinux){ - echo " "; - } - echo "
    "; - clearstatcache(); - tree($fm_current_root,$fm_current_root,-1,0); - echo "
    -
    \n"; - echo "\n"; -} -function getmicrotime(){ - list($usec, $sec) = explode(" ", microtime()); - return ((float)$usec + (float)$sec); -} -function dir_list_form() { - global $fm_current_root,$current_dir,$quota_mb,$resolveIDs,$order_dir_list_by,$islinux,$cmd_name,$ip,$path_info,$fm_color; - $ti = getmicrotime(); - clearstatcache(); - $out = "\n"; - if ($opdir = @opendir($current_dir)) { - $has_files = false; - $entry_count = 0; - $total_size = 0; - $entry_list = array(); - while ($file = readdir($opdir)) { - if (($file != ".")&&($file != "..")){ - $entry_list[$entry_count]["size"] = 0; - $entry_list[$entry_count]["sizet"] = 0; - $entry_list[$entry_count]["type"] = "none"; - if (is_file($current_dir.$file)){ - $ext = lowercase(strrchr($file,".")); - $entry_list[$entry_count]["type"] = "file"; - // Função filetype() returns only "file"... - $entry_list[$entry_count]["size"] = filesize($current_dir.$file); - $entry_list[$entry_count]["sizet"] = format_size($entry_list[$entry_count]["size"]); - if (strstr($ext,".")){ - $entry_list[$entry_count]["ext"] = $ext; - $entry_list[$entry_count]["extt"] = $ext; - } else { - $entry_list[$entry_count]["ext"] = ""; - $entry_list[$entry_count]["extt"] = " "; - } - $has_files = true; - } elseif (is_dir($current_dir.$file)) { - // Recursive directory size disabled - // $entry_list[$entry_count]["size"] = total_size($current_dir.$file); - continue; // don't display subdir - $entry_list[$entry_count]["size"] = 0; - $entry_list[$entry_count]["sizet"] = " "; - $entry_list[$entry_count]["type"] = "dir"; - } - $entry_list[$entry_count]["name"] = $file; - $entry_list[$entry_count]["date"] = date("Ymd", filemtime($current_dir.$file)); - $entry_list[$entry_count]["time"] = date("his", filemtime($current_dir.$file)); - $entry_list[$entry_count]["datet"] = date("d/m/y h:i", filemtime($current_dir.$file)); - if ($islinux && $resolveIDs){ - $entry_list[$entry_count]["p"] = show_perms(fileperms($current_dir.$file)); - $entry_list[$entry_count]["u"] = get_user(fileowner($current_dir.$file)); - $entry_list[$entry_count]["g"] = get_group(filegroup($current_dir.$file)); - } else { - $entry_list[$entry_count]["p"] = base_convert(fileperms($current_dir.$file),10,8); - $entry_list[$entry_count]["p"] = substr($entry_list[$entry_count]["p"],strlen($entry_list[$entry_count]["p"])-3); - $entry_list[$entry_count]["u"] = fileowner($current_dir.$file); - $entry_list[$entry_count]["g"] = filegroup($current_dir.$file); - } - $total_size += $entry_list[$entry_count]["size"]; - $entry_count++; - } - } - @closedir($opdir); - - if($entry_count){ - $or1="1A"; - $or2="2D"; - $or3="3A"; - $or4="4A"; - $or5="5A"; - $or6="6D"; - $or7="7D"; - switch($order_dir_list_by){ - case "1A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"name",SORT_STRING,SORT_ASC); $or1="1D"; break; - case "1D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"name",SORT_STRING,SORT_DESC); $or1="1A"; break; - case "2A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"p",SORT_STRING,SORT_ASC,"g",SORT_STRING,SORT_ASC,"u",SORT_STRING,SORT_ASC); $or2="2D"; break; - case "2D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"p",SORT_STRING,SORT_DESC,"g",SORT_STRING,SORT_ASC,"u",SORT_STRING,SORT_ASC); $or2="2A"; break; - case "3A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"u",SORT_STRING,SORT_ASC,"g",SORT_STRING,SORT_ASC); $or3="3D"; break; - case "3D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"u",SORT_STRING,SORT_DESC,"g",SORT_STRING,SORT_ASC); $or3="3A"; break; - case "4A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"g",SORT_STRING,SORT_ASC,"u",SORT_STRING,SORT_DESC); $or4="4D"; break; - case "4D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"g",SORT_STRING,SORT_DESC,"u",SORT_STRING,SORT_DESC); $or4="4A"; break; - case "5A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"size",SORT_NUMERIC,SORT_ASC); $or5="5D"; break; - case "5D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"size",SORT_NUMERIC,SORT_DESC); $or5="5A"; break; - case "6A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"date",SORT_STRING,SORT_ASC,"time",SORT_STRING,SORT_ASC,"name",SORT_STRING,SORT_ASC); $or6="6D"; break; - case "6D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"date",SORT_STRING,SORT_DESC,"time",SORT_STRING,SORT_DESC,"name",SORT_STRING,SORT_ASC); $or6="6A"; break; - case "7A": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"ext",SORT_STRING,SORT_ASC,"name",SORT_STRING,SORT_ASC); $or7="7D"; break; - case "7D": $entry_list = array_csort ($entry_list,"type",SORT_STRING,SORT_ASC,"ext",SORT_STRING,SORT_DESC,"name",SORT_STRING,SORT_ASC); $or7="7A"; break; - } - } - $out .= " - "; - $out .= " - - - - - - - - - - "; - $out .= " - - - - - - - - "; - $file_count = 0; - $dir_count = 0; - $dir_out = array(); - $file_out = array(); - $max_opt = 0; - foreach ($entry_list as $ind=>$dir_entry) { - $file = $dir_entry["name"]; - if ($dir_entry["type"]=="dir"){ - $dir_out[$dir_count] = array(); - $dir_out[$dir_count][] = " - - "; - $dir_out[$dir_count][] = ""; - if ($islinux) { - $dir_out[$dir_count][] = ""; - $dir_out[$dir_count][] = ""; - } - $dir_out[$dir_count][] = ""; - $dir_out[$dir_count][] = ""; - if ($has_files) $dir_out[$dir_count][] = ""; - // Opções de diretório - if ( is_writable($current_dir.$file) ) $dir_out[$dir_count][] = " - - "; - $file_out[$file_count][] = ""; - if ($islinux) { - $file_out[$file_count][] = ""; - $file_out[$file_count][] = ""; - } - $file_out[$file_count][] = ""; - $file_out[$file_count][] = ""; - $file_out[$file_count][] = ""; - // Opções de arquivo - if ( is_writable($current_dir.$file) ) $file_out[$file_count][] = " - "; - if ( is_writable($current_dir.$file) ) $file_out[$file_count][] = " - "; - if ( is_readable($current_dir.$file) && (strpos(".wav#.mp3#.mid#.avi#.mov#.mpeg#.mpg#.rm#.iso#.bin#.img#.dll#.psd#.fla#.swf#.class#.ppt#.tif#.tiff#.pcx#.jpg#.gif#.png#.wmf#.eps#.bmp#.msi#.exe#.com#.rar#.tar#.zip#.bz2#.tbz2#.bz#.tbz#.bzip#.gzip#.gz#.tgz#", $dir_entry["ext"]."#" ) === false)) $file_out[$file_count][] = " - "; - if ( is_readable($current_dir.$file) && (strpos(".txt#.sys#.bat#.ini#.conf#.swf#.php#.php3#.asp#.html#.htm#.jpg#.gif#.png#.bmp#", $dir_entry["ext"]."#" ) !== false)) $file_out[$file_count][] = " - "; - if ( is_readable($current_dir.$file) && strlen($dir_entry["ext"]) && (strpos(".tar#.zip#.bz2#.tbz2#.bz#.tbz#.bzip#.gzip#.gz#.tgz#", $dir_entry["ext"]."#" ) !== false)) $file_out[$file_count][] = " - "; - if ( is_readable($current_dir.$file) && strlen($dir_entry["ext"]) && (strpos(".exe#.com#.sh#.bat#", $dir_entry["ext"]."#" ) !== false)) $file_out[$file_count][] = " - "; - if (count($file_out[$file_count])>$max_opt){ - $max_opt = count($file_out[$file_count]); - } - $file_count++; - } - } - if ($dir_count){ - $out .= " - - - "; - if ($islinux) $out .= " - - "; - $out .= " - - "; - if ($file_count) $out .= " - "; - $out .= " - - "; - - } - foreach($dir_out as $k=>$v){ - while (count($dir_out[$k])<$max_opt) { - $dir_out[$k][] = ""; - } - $out .= implode($dir_out[$k]); - $out .= ""; - } - if ($file_count){ - $out .= " - - - "; - if ($islinux) $out .= " - - "; - $out .= " - - - - - "; - - } - foreach($file_out as $k=>$v){ - while (count($file_out[$k])<$max_opt) { - $file_out[$k][] = ""; - } - $out .= implode($file_out[$k]); - $out .= ""; - } - $out .= " - - - "; - $out .= " - "; - $out .= " - "; - if ($quota_mb) { - $out .= " - "; - } else { - $out .= " - "; - } - $tf = getmicrotime(); - $tt = ($tf - $ti); - $out .= " - "; - $out .= " - "; - } else { - $out .= " - - "; - } - } else $out .= "
    - - - $ip - ".et('Random-data')." - "; - $uplink = ""; - if ($current_dir != $fm_current_root){ - $mat = explode("/",$current_dir); - $dir_before = ""; - for($x=0;$x<(count($mat)-2);$x++) $dir_before .= $mat[$x]."/"; - $uplink = "<< "; - } - if($entry_count){ - $out .= " -
    - - - - "; - if ($islinux) $out .= " - "; - $out .= " -
    ".et('SelDir')."...
    $file".$dir_entry["p"]."".$dir_entry["u"]."".$dir_entry["g"]."".$dir_entry["sizet"]."".$dir_entry["datet"]." ".et('Rem').""; - if ( is_writable($current_dir.$file) ) $dir_out[$dir_count][] = " - ".et('Ren').""; - if (count($dir_out[$dir_count])>$max_opt){ - $max_opt = count($dir_out[$dir_count]); - } - $dir_count++; - } else { - $file_out[$file_count] = array(); - $file_out[$file_count][] = " -
    $file".$dir_entry["p"]."".$dir_entry["u"]."".$dir_entry["g"]."".$dir_entry["sizet"]."".$dir_entry["datet"]."".$dir_entry["extt"]."".et('Rem').""; - else $file_out[$file_count][] = " ".et('Ren').""; - else $file_out[$file_count][] = " ".et('Edit').""; - else $file_out[$file_count][] = " ".et('View').""; - else $file_out[$file_count][] = " ".et('Decompress').""; - else $file_out[$file_count][] = " ".et('Exec').""; - else $file_out[$file_count][] = " 
    ".et('Name')."".et('Perm')."".et('Owner')."".et('Group')."".et('Size')."".et('Date')."".et('Type')." 
     
    ".et('Name')."".et('Perm')."".et('Owner')."".et('Group')."".et('Size')."".et('Date')."".et('Type')." 
     
    - - - - "; - if ($islinux) $out .= " - "; - $out .= " -
    $dir_count ".et('Dir_s')." ".et('And')." $file_count ".et('File_s')." = ".format_size($total_size)."
    ".et('Partition').": ".format_size(($quota_mb*1024*1024))." ".et('Total')." - ".format_size(($quota_mb*1024*1024)-total_size($fm_current_root))." ".et('Free')."
    ".et('Partition').": ".format_size(disk_total_space($current_dir))." ".et('Total')." - ".format_size(disk_free_space($current_dir))." ".et('Free')."
    ".et('RenderTime').": ".substr($tt,0,strrpos($tt,".")+5)." ".et('Seconds')."
    $uplink$current_dir -
    ".et('EmptyDir').".
    ".et('IOError').".
    $current_dir
    "; - $out .= "
    "; - echo $out; -} -function upload_form(){ - global $_FILES,$current_dir,$dir_dest,$fechar,$quota_mb,$path_info; - $num_uploads = 5; - html_header(); - echo ""; - if (count($_FILES)==0){ - echo " - - - - - - - -
    ".et('Upload')."
    ".et('Destination').":".basename($current_dir).""; - for ($x=0;$x<$num_uploads;$x++){ - echo "
    ".et('File').":"; - $test_js .= "(document.upload_form.file$x.value.length>0)||"; - } - echo " - -
    ".et('AutoClose')." -
    zip file can be decompressed on the server later. - just don't add dirs,please
    - 可以上传zip文件,之后点击decompress解压缩,但是请不要在zip文件中包含子目录。 -
    - "; - } else { - $out = "".et('UploadEnd')." - ".et('Destination').": ".basename($dir_dest).""; - for ($x=0;$x<$num_uploads;$x++){ - $temp_file = $_FILES["file".$x]["tmp_name"]; - $filename = $_FILES["file".$x]["name"]; - if (strlen($filename)) $resul = save_upload($temp_file,$filename,$dir_dest); - else $resul = 7; - switch($resul){ - case 1: - $out .= "".str_zero($x+1,3).". ".et('FileSent').":".$filename."\n"; - break; - case 2: - $out .= "".et('IOError')."\n"; - $x = $upload_num; - break; - case 3: - $out .= "".et('SpaceLimReached')." ($quota_mb Mb)\n"; - $x = $upload_num; - break; - case 4: - $out .= "".str_zero($x+1,3).". ".et('InvExt').":".$filename."\n"; - break; - case 5: - $out .= "".str_zero($x+1,3).". ".et('FileNoOverw')."".$filename."\n"; - break; - case 6: - $out .= "".str_zero($x+1,3).". ".et('FileOverw').":".$filename."\n"; - break; - case 7: - $out .= "".str_zero($x+1,3).". ".et('FileIgnored')."\n"; - } - } - if ($fechar) { - echo " - - "; - } else { - echo " - - $out - -
    - - "; - } - } - echo "\n"; -} -function chmod_form(){ - html_header(" - "); - echo " -
    - - - - - - -
    ".et('Perms')."
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    ".et('Owner')." - ".et('Group')." - ".et('Other')." -
    ".et('Read')." - - - - -
    ".et('Write')." - - - -
    ".et('Exec')." - - - - -
    - - -
    ".et('StickyBit')."
    -
    - \n"; -} -function get_mime_type($ext = ''){ - $mimes = array( - 'hqx' => 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'doc' => 'application/msword', - 'bin' => 'application/macbinary', - 'dms' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'exe' => 'application/octet-stream', - 'class' => 'application/octet-stream', - 'psd' => 'application/octet-stream', - 'so' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => 'application/pdf', - 'ai' => 'application/postscript', - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => 'application/vnd.ms-excel', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pptx' => 'application/vnd.ms-powerpoint', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'php' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => 'application/x-javascript', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => 'application/x-tar', - 'xhtml' => 'application/xhtml+xml', - 'xht' => 'application/xhtml+xml', - 'zip' => 'application/zip', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mpga' => 'audio/mpeg', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'aif' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'rv' => 'video/vnd.rn-realvideo', - 'wav' => 'audio/x-wav', - 'bmp' => 'image/bmp', - 'gif' => 'image/gif', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'jpe' => 'image/jpeg', - 'png' => 'image/png', - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'css' => 'text/css', - 'html' => 'text/html', - 'htm' => 'text/html', - 'shtml' => 'text/html', - 'txt' => 'text/plain', - 'text' => 'text/plain', - 'log' => 'text/plain', - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => 'text/xml', - 'xsl' => 'text/xml', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'qt' => 'video/quicktime', - 'mov' => 'video/quicktime', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'doc' => 'application/msword', - 'docx' => 'application/msword', - 'word' => 'application/msword', - 'xl' => 'application/excel', - 'xls' => 'application/excel', - 'xlsx' => 'application/excel', - 'eml' => 'message/rfc822' - ); - return (!isset($mimes[lowercase($ext)])) ? 'application/octet-stream' : $mimes[lowercase($ext)]; -} -function view(){ - global $doc_root,$path_info,$url_info,$current_dir,$islinux,$filename,$passthru; - if (intval($passthru)){ - $filename = remove_special_chars($filename); - $file = $current_dir.$filename; - if(file_exists($file)){ - $is_denied = false; - foreach($download_ext_filter as $key=>$ext){ - if (preg_match($ext,$filename)){ - $is_denied = true; - break; - } - } - if (!$is_denied){ - if ($fh = fopen("$file", "rb")){ - fclose($fh); - $ext = pathinfo($file, PATHINFO_EXTENSION); - $ctype = get_mime_type($ext); - if ($ctype == "application/octet-stream") $ctype = "text/plain"; - header("Pragma: public"); - header("Expires: 0"); - header("Connection: close"); - header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); - header("Cache-Control: public"); - header("Content-Description: File Transfer"); - header("Content-Type: ".$ctype); - header("Content-Disposition: inline; filename=\"".pathinfo($file, PATHINFO_BASENAME)."\";"); - header("Content-Transfer-Encoding: binary"); - header("Content-Length: ".filesize($file)); - @readfile($file); - exit(); - } else alert(et('ReadDenied').": ".$file); - } else alert(et('ReadDenied').": ".$file); - } else alert(et('FileNotFound').": ".$file); - echo " - "; - } else { - html_header(); - echo ""; - $is_reachable_thru_webserver = (stristr($current_dir,$doc_root)!==false); - if ($is_reachable_thru_webserver){ - $url = $url_info["scheme"]."://".$url_info["host"]; - if (strlen($url_info["port"])) $url .= ":".$url_info["port"]; - // Malditas variaveis de sistema!! No windows doc_root é sempre em lowercase... cadê o str_ireplace() ?? - $url .= str_replace($doc_root,"","/".$current_dir).$filename; - } else { - $url = addslashes($path_info["basename"])."?action=4¤t_dir=".addslashes($current_dir)."&filename=".addslashes($filename)."&passthru=1"; - } - echo " - - \n"; - } -} -function edit_file_form(){ - global $current_dir,$filename,$file_data,$save_file,$path_info; - $filename=remove_special_chars($filename); - // echo "[$filename]"; - $file = $current_dir.$filename; - if ($save_file){ - $fh=fopen($file,"w"); - $file_data=preg_replace("(\r\n)","\n",$file_data); - fputs($fh,$file_data,strlen($file_data)); - fclose($fh); - } - $fh=fopen($file,"r"); - $file_data=fread($fh, filesize($file)); - fclose($fh); - html_header(); - echo " - - - - - - - - - - - - - - - -
    ".$filename."
    - - \n"; -} -function config_form(){ - global $cfg; - global $current_dir,$fm_self,$doc_root,$path_info,$fm_current_root,$lang,$error_reporting,$version; - global $config_action,$newpass,$newlang,$newerror,$newfm_root; - $Warning = ""; - switch ($config_action){ - case 1: - if ($fh = fopen("http://phpfm.sf.net/latest.php","r")){ - $data = ""; - while (!feof($fh)) $data .= fread($fh,1024); - fclose($fh); - $data = unserialize($data); - $ChkVerWarning = " "; - if (is_array($data)&&count($data)){ - $ChkVerWarning .= " - \"SourceForge.net - "; - if (str_replace(".","",$data['version'])>str_replace(".","",$cfg->data['version'])) $ChkVerWarning .= "".et('ChkVerAvailable').""; - else $ChkVerWarning .= "".et('ChkVerNotAvailable').""; - } else $ChkVerWarning .= "".et('ChkVerError').""; - } else $ChkVerWarning .= "".et('ChkVerError').""; - break; - case 2: - $reload = false; - if ($cfg->data['lang'] != $newlang){ - $cfg->data['lang'] = $newlang; - $lang = $newlang; - $reload = true; - } - if ($cfg->data['error_reporting'] != $newerror){ - $cfg->data['error_reporting'] = $newerror; - $error_reporting = $newerror; - $reload = true; - } - $newfm_root = format_path($newfm_root); - if ($cfg->data['fm_root'] != $newfm_root){ - $cfg->data['fm_root'] = $newfm_root; - if (strlen($newfm_root)) $current_dir = $newfm_root; - else $current_dir = $path_info["dirname"]."/"; - setcookie("fm_current_root", $newfm_root , 0 , "/"); - $reload = true; - } - $cfg->save(); - if ($reload){ - reloadframe("window.opener.parent",2); - reloadframe("window.opener.parent",3); - } - $Warning1 = et('ConfSaved')."..."; - break; - case 3: - if ($cfg->data['auth_pass'] != md5($newpass)){ - $cfg->data['auth_pass'] = md5($newpass); - setcookie("loggedon", md5($newpass) , 0 , "/"); - } - $cfg->save(); - $Warning2 = et('PassSaved')."..."; - break; - } - html_header(); - echo "\n"; - echo " - - -
    ".uppercase(et('Configurations'))."
    - - - - - "; - if (strlen($ChkVerWarning)) echo $ChkVerWarning.$data['warnings']; - echo " - - - - - - - - - - - "; - echo " - -
    ".et('Version').":$version (".get_size($fm_self).")
    ".et('Website').":http://phpfm.sf.net   
    Like this project? -
    - - - - - - - - - - - - - - - - - - -
    -
    ".et('DocRoot').":".$doc_root."
    ".et('FLRoot').":data['fm_root']."\" onkeypress=\"enterSubmit(event,'test_config_form(2)')\">
    ".et('Lang').": -
    ".et('ErrorReport').":
    "; - if (strlen($Warning1)) echo " $Warning1"; - echo " -
    ".et('Pass').":
    "; - if (strlen($Warning2)) echo " $Warning2"; - echo "
    - - "; - echo "\n"; -} -function server_info(){ -/* - if (!@phpinfo()) echo et('NoPhpinfo')."..."; - echo "

    "; - $a=ini_get_all(); - $output=""; - $output.=""; - while(list($key, $value)=each($a)) { - list($k, $v)= each($a[$key]); - $output.=""; - } - $output.="
    ini_get_all()
    $key$v
    "; - echo $output; - echo "

    "; - $output=""; - $output.=""; - foreach ($_SERVER as $k=>$v) { - $output.=""; - } - $output.="
    \$_SERVER
    $k$v
    "; - echo $output; - echo "

    "; - echo ""; - $safe_mode=trim(ini_get("safe_mode")); - if ((strlen($safe_mode)==0)||($safe_mode==0)) $safe_mode=false; - else $safe_mode=true; - $is_windows_server = (uppercase(substr(PHP_OS, 0, 3)) === 'WIN'); - echo "
    ".php_uname(); - echo "
    safe_mode".($safe_mode?"on":"off"); - if ($is_windows_server) echo "
    sisopWindows
    "; - else echo "
    sisopLinux
    "; - echo "


    "; - $display_errors=ini_get("display_errors"); - $ignore_user_abort = ignore_user_abort(); - $max_execution_time = ini_get("max_execution_time"); - $upload_max_filesize = ini_get("upload_max_filesize"); - $memory_limit=ini_get("memory_limit"); - $output_buffering=ini_get("output_buffering"); - $default_socket_timeout=ini_get("default_socket_timeout"); - $allow_url_fopen = ini_get("allow_url_fopen"); - $magic_quotes_gpc = ini_get("magic_quotes_gpc"); - ignore_user_abort(true); - ini_set("display_errors",0); - ini_set("max_execution_time",0); - ini_set("upload_max_filesize","10M"); - ini_set("memory_limit","20M"); - ini_set("output_buffering",0); - ini_set("default_socket_timeout",30); - ini_set("allow_url_fopen",1); - ini_set("magic_quotes_gpc",0); - echo "
    GetSetGet"; - echo "
    display_errors$display_errors0".ini_get("display_errors"); - echo "
    ignore_user_abort".($ignore_user_abort?"on":"off")."on".(ignore_user_abort()?"on":"off"); - echo "
    max_execution_time$max_execution_time0".ini_get("max_execution_time"); - echo "
    upload_max_filesize$upload_max_filesize10M".ini_get("upload_max_filesize"); - echo "
    memory_limit$memory_limit20M".ini_get("memory_limit"); - echo "
    output_buffering$output_buffering0".ini_get("output_buffering"); - echo "
    default_socket_timeout$default_socket_timeout30".ini_get("default_socket_timeout"); - echo "
    allow_url_fopen$allow_url_fopen1".ini_get("allow_url_fopen"); - echo "
    magic_quotes_gpc$magic_quotes_gpc0".ini_get("magic_quotes_gpc"); - echo "


    "; - echo " - "; - echo "\n"; - */ -} -// +-------------------------------------------------- -// | Session -// +-------------------------------------------------- -function logout(){ - setcookie("loggedon",0,0,"/"); - login_form(); -} -function login(){ - global $pass,$auth_pass,$path_info; - if (md5(trim($pass)) == $auth_pass){ - setcookie("loggedon",$auth_pass,0,"/"); - header ("Location: ".$path_info["basename"].""); - } else header ("Location: ".$path_info["basename"]."?erro=1"); -} -function login_form(){ - global $erro,$auth_pass,$path_info; - html_header(); - echo "\n"; - if ($auth_pass != md5("")){ - echo " - - - - - - - - - "; - if (strlen($erro)) echo " - - - "; - echo " - -
    ".et('FileMan')." -
    ".et('TypePass').". -
    -
    ".et('InvPass').". -
    - - "; - } else { - echo " - - - - - - - - - -
    ".et('FileMan')." -
    -
    - "; - } - echo "\n"; -} -function frame3(){ - global $islinux,$cmd_arg,$chmod_arg,$zip_dir,$fm_current_root,$cookie_cache_time; - global $dir_dest,$current_dir,$dir_before; - global $selected_file_list,$selected_dir_list,$old_name,$new_name; - global $action,$or_by,$order_dir_list_by; - if (!isset($order_dir_list_by)){ - $order_dir_list_by = "1A"; - setcookie("order_dir_list_by", $order_dir_list_by , time()+$cookie_cache_time , "/"); - } elseif (strlen($or_by)){ - $order_dir_list_by = $or_by; - setcookie("order_dir_list_by", $or_by , time()+$cookie_cache_time , "/"); - } - html_header(); - echo "\n"; - if ($action){ - switch ($action){ - case 1: // create dir - if (strlen($cmd_arg)){ - $cmd_arg = format_path($current_dir.$cmd_arg); - if (!file_exists($cmd_arg)){ - // @mkdir($cmd_arg,0711); - @chmod($cmd_arg,0711); - reloadframe("parent",2,"&ec_dir=".$cmd_arg); - } else alert(et('FileDirExists')."."); - } - break; - case 2: // create arq - if (strlen($cmd_arg)){ - $cmd_arg = $current_dir.$cmd_arg; - if (!file_exists($cmd_arg)){ - if ($fh = @fopen($cmd_arg, "w")){ - @fclose($fh); - } - @chmod($cmd_arg,0644); - } else alert(et('FileDirExists')."."); - } - break; - case 3: // rename arq ou dir - if ((strlen($old_name))&&(strlen($new_name))){ - rename($current_dir.$old_name,$current_dir.$new_name); - if (is_dir($current_dir.$new_name)) reloadframe("parent",2); - } - break; - case 4: // delete sel - if(strstr($current_dir,$fm_current_root)){ - if (strlen($selected_file_list)){ - $selected_file_list = explode("<|*|>",$selected_file_list); - if (count($selected_file_list)) { - for($x=0;$x",$selected_dir_list); - if (count($selected_dir_list)) { - for($x=0;$x",$selected_file_list); - if (count($selected_file_list)) { - for($x=0;$x",$selected_dir_list); - if (count($selected_dir_list)) { - for($x=0;$x",$selected_file_list); - if (count($selected_file_list)) { - for($x=0;$x",$selected_dir_list); - if (count($selected_dir_list)) { - for($x=0;$xset_options(array('basedir'=>$current_dir,'overwrite'=>1,'level'=>3)); - if (strlen($selected_file_list)){ - $selected_file_list = explode("<|*|>",$selected_file_list); - if (count($selected_file_list)) { - for($x=0;$xadd_files($selected_file_list[$x]); - } - } - } - if (strlen($selected_dir_list)){ - $selected_dir_list = explode("<|*|>",$selected_dir_list); - if (count($selected_dir_list)) { - for($x=0;$xadd_files($selected_dir_list[$x]); - } - } - } - $zipfile->create_archive(); - } - unset($zipfile); - } - break; - case 72: // decompress arq - if (strlen($cmd_arg)){ - if (file_exists($current_dir.$cmd_arg)){ - $zipfile=false; - if (strstr($cmd_arg,".zip")) zip_extract(); - elseif (strstr($cmd_arg,".bzip")||strstr($cmd_arg,".bz2")||strstr($cmd_arg,".tbz2")||strstr($cmd_arg,".bz")||strstr($cmd_arg,".tbz")) $zipfile = new bzip_file($cmd_arg); - elseif (strstr($cmd_arg,".gzip")||strstr($cmd_arg,".gz")||strstr($cmd_arg,".tgz")) $zipfile = new gzip_file($cmd_arg); - elseif (strstr($cmd_arg,".tar")) $zipfile = new tar_file($cmd_arg); - if ($zipfile){ - $zipfile->set_options(array('basedir'=>$current_dir,'overwrite'=>1)); - $zipfile->extract_files(); - } - unset($zipfile); - if(function_exists("system"))system("/home/judge/src/install/ans2out ".$current_dir); - if(file_exists("/usr/bin/dos2unix")&&function_exists("system")) system("/usr/bin/dos2unix ".$current_dir."/*"); - reloadframe("parent",2); - } - } - break; - case 8: // delete arq/dir - if (strlen($cmd_arg)){ - if (file_exists($current_dir.$cmd_arg)) total_delete($current_dir.$cmd_arg); - if (is_dir($current_dir.$cmd_arg)) reloadframe("parent",2); - } - break; - case 9: // CHMOD - if((strlen($chmod_arg) == 4)&&(strlen($current_dir))){ - if ($chmod_arg[0]=="1") $chmod_arg = "0".$chmod_arg; - else $chmod_arg = "0".substr($chmod_arg,strlen($chmod_arg)-3); - $new_mod = octdec($chmod_arg); - if (strlen($selected_file_list)){ - $selected_file_list = explode("<|*|>",$selected_file_list); - if (count($selected_file_list)) { - for($x=0;$x",$selected_dir_list); - if (count($selected_dir_list)) { - for($x=0;$x\n"; -} -function frame2(){ - global $expanded_dir_list,$ec_dir; - if (!isset($expanded_dir_list)) $expanded_dir_list = ""; - if (strlen($ec_dir)){ - if (strstr($expanded_dir_list,":".$ec_dir)) $expanded_dir_list = str_replace(":".$ec_dir,"",$expanded_dir_list); - else $expanded_dir_list .= ":".$ec_dir; - setcookie("expanded_dir_list", $expanded_dir_list , 0 , "/"); - } - show_tree(); -} -function frameset(){ - global $path_info,$leftFrameWidth; - if (!isset($leftFrameWidth)) $leftFrameWidth = 300; - html_header(); - echo " - - - - - - - - "; -} -// +-------------------------------------------------- -// | Open Source Contributions -// +-------------------------------------------------- - /*------------------------------------------------- - | TAR/GZIP/BZIP2/ZIP ARCHIVE CLASSES 2.0 - | By Devin Doucette - | Copyright (c) 2004 Devin Doucette - | Email: darksnoopy@shaw.ca - +-------------------------------------------------- - | Email bugs/suggestions to darksnoopy@shaw.ca - +-------------------------------------------------- - | This script has been created and released under - | the GNU GPL and is free to use and redistribute - | only if this copyright statement is not removed - +-------------------------------------------------- - | Limitations: - | - Only USTAR archives are officially supported for extraction, but others may work. - | - Extraction of bzip2 and gzip archives is limited to compatible tar files that have - | been compressed by either bzip2 or gzip. For greater support, use the functions - | bzopen and gzopen respectively for bzip2 and gzip extraction. - | - Zip extraction is not supported due to the wide variety of algorithms that may be - | used for compression and newer features such as encryption. - +-------------------------------------------------- - */ -class archive -{ - function archive($name) - { - $this->options = array( - 'basedir'=>".", - 'name'=>$name, - 'prepend'=>"", - 'inmemory'=>0, - 'overwrite'=>0, - 'recurse'=>1, - 'storepaths'=>1, - 'level'=>3, - 'method'=>1, - 'sfx'=>"", - 'type'=>"", - 'comment'=>"" - ); - $this->files = array(); - $this->exclude = array(); - $this->storeonly = array(); - $this->error = array(); - } - - function set_options($options) - { - foreach($options as $key => $value) - { - $this->options[$key] = $value; - } - if(!empty($this->options['basedir'])) - { - $this->options['basedir'] = str_replace("\\","/",$this->options['basedir']); - $this->options['basedir'] = preg_replace("/\/+/","/",$this->options['basedir']); - $this->options['basedir'] = preg_replace("/\/$/","",$this->options['basedir']); - } - if(!empty($this->options['name'])) - { - $this->options['name'] = str_replace("\\","/",$this->options['name']); - $this->options['name'] = preg_replace("/\/+/","/",$this->options['name']); - } - if(!empty($this->options['prepend'])) - { - $this->options['prepend'] = str_replace("\\","/",$this->options['prepend']); - $this->options['prepend'] = preg_replace("/^(\.*\/+)+/","",$this->options['prepend']); - $this->options['prepend'] = preg_replace("/\/+/","/",$this->options['prepend']); - $this->options['prepend'] = preg_replace("/\/$/","",$this->options['prepend']) . "/"; - } - } - - function create_archive() - { - $this->make_list(); - - if($this->options['inmemory'] == 0) - { - $Pwd = getcwd(); - chdir($this->options['basedir']); - if($this->options['overwrite'] == 0 && file_exists($this->options['name'] . ($this->options['type'] == "gzip" || $this->options['type'] == "bzip"? ".tmp" : ""))) - { - $this->error[] = "File {$this->options['name']} already exists."; - chdir($Pwd); - return 0; - } - else if($this->archive = @fopen($this->options['name'] . ($this->options['type'] == "gzip" || $this->options['type'] == "bzip"? ".tmp" : ""),"wb+")) - { - chdir($Pwd); - } - else - { - $this->error[] = "Could not open {$this->options['name']} for writing."; - chdir($Pwd); - return 0; - } - } - else - { - $this->archive = ""; - } - - switch($this->options['type']) - { - case "zip": - if(!$this->create_zip()) - { - $this->error[] = "Could not create zip file."; - return 0; - } - break; - case "bzip": - if(!$this->create_tar()) - { - $this->error[] = "Could not create tar file."; - return 0; - } - if(!$this->create_bzip()) - { - $this->error[] = "Could not create bzip2 file."; - return 0; - } - break; - case "gzip": - if(!$this->create_tar()) - { - $this->error[] = "Could not create tar file."; - return 0; - } - if(!$this->create_gzip()) - { - $this->error[] = "Could not create gzip file."; - return 0; - } - break; - case "tar": - if(!$this->create_tar()) - { - $this->error[] = "Could not create tar file."; - return 0; - } - } - - if($this->options['inmemory'] == 0) - { - fclose($this->archive); - @chmod($this->options['name'],0644); - if($this->options['type'] == "gzip" || $this->options['type'] == "bzip") - { - unlink($this->options['basedir'] . "/" . $this->options['name'] . ".tmp"); - } - } - } - - function add_data($data) - { - if($this->options['inmemory'] == 0) - { - fwrite($this->archive,$data); - } - else - { - $this->archive .= $data; - } - } - - function make_list() - { - if(!empty($this->exclude)) - { - foreach($this->files as $key => $value) - { - foreach($this->exclude as $current) - { - if($value['name'] == $current['name']) - { - unset($this->files[$key]); - } - } - } - } - if(!empty($this->storeonly)) - { - foreach($this->files as $key => $value) - { - foreach($this->storeonly as $current) - { - if($value['name'] == $current['name']) - { - $this->files[$key]['method'] = 0; - } - } - } - } - unset($this->exclude,$this->storeonly); - } - - - function add_files($list) - { - $temp = $this->list_files($list); - foreach($temp as $current) - { - $this->files[] = $current; - } - } - - function exclude_files($list) - { - $temp = $this->list_files($list); - foreach($temp as $current) - { - $this->exclude[] = $current; - } - } - - function store_files($list) - { - $temp = $this->list_files($list); - foreach($temp as $current) - { - $this->storeonly[] = $current; - } - } - - function list_files($list) - { - if(!is_array($list)) - { - $temp = $list; - $list = array($temp); - unset($temp); - } - - $files = array(); - - $Pwd = getcwd(); - chdir($this->options['basedir']); - - foreach($list as $current) - { - $current = str_replace("\\","/",$current); - $current = preg_replace("/\/+/","/",$current); - $current = preg_replace("/\/$/","",$current); - if(strstr($current,"*")) - { - $regex = preg_replace("/([\\\^\$\.\[\]\|\(\)\?\+\{\}\/])/","\\\\\\1",$current); - $regex = str_replace("*",".*",$regex); - $dir = strstr($current,"/")? substr($current,0,strrpos($current,"/")) : "."; - $temp = $this->parse_dir($dir); - foreach($temp as $current2) - { - if(preg_match("/^{$regex}$/i",$current2['name'])) - { - $files[] = $current2; - } - } - unset($regex,$dir,$temp,$current); - } - else if(@is_dir($current)) - { - $temp = $this->parse_dir($current); - foreach($temp as $file) - { - $files[] = $file; - } - unset($temp,$file); - } - else if(@file_exists($current)) - { - $files[] = array('name'=>$current,'name2'=>$this->options['prepend'] . - preg_replace("/(\.+\/+)+/","",($this->options['storepaths'] == 0 && strstr($current,"/"))? - substr($current,strrpos($current,"/") + 1) : $current),'type'=>0, - 'ext'=>substr($current,strrpos($current,".")),'stat'=>stat($current)); - } - } - - chdir($Pwd); - - unset($current,$Pwd); - - usort($files,array("archive","sort_files")); - - return $files; - } - - function parse_dir($dirname) - { - if($this->options['storepaths'] == 1 && !preg_match("/^(\.+\/*)+$/",$dirname)) - { - $files = array(array('name'=>$dirname,'name2'=>$this->options['prepend'] . - preg_replace("/(\.+\/+)+/","",($this->options['storepaths'] == 0 && strstr($dirname,"/"))? - substr($dirname,strrpos($dirname,"/") + 1) : $dirname),'type'=>5,'stat'=>stat($dirname))); - } - else - { - $files = array(); - } - $dir = @opendir($dirname); - - while($file = @readdir($dir)) - { - if($file == "." || $file == "..") - { - continue; - } - else if(@is_dir($dirname."/".$file)) - { - if(empty($this->options['recurse'])) - { - continue; - } - $temp = $this->parse_dir($dirname."/".$file); - foreach($temp as $file2) - { - $files[] = $file2; - } - } - else if(@file_exists($dirname."/".$file)) - { - $files[] = array('name'=>$dirname."/".$file,'name2'=>$this->options['prepend'] . - preg_replace("/(\.+\/+)+/","",($this->options['storepaths'] == 0 && strstr($dirname."/".$file,"/"))? - substr($dirname."/".$file,strrpos($dirname."/".$file,"/") + 1) : $dirname."/".$file),'type'=>0, - 'ext'=>substr($file,strrpos($file,".")),'stat'=>stat($dirname."/".$file)); - } - } - - @closedir($dir); - - return $files; - } - - function sort_files($a,$b) - { - if($a['type'] != $b['type']) - { - return $a['type'] > $b['type']? -1 : 1; - } - else if($a['type'] == 5) - { - return strcmp(strtolower($a['name']),strtolower($b['name'])); - } - else - { - if($a['ext'] != $b['ext']) - { - return strcmp($a['ext'],$b['ext']); - } - else if($a['stat'][7] != $b['stat'][7]) - { - return $a['stat'][7] > $b['stat'][7]? -1 : 1; - } - else - { - return strcmp(strtolower($a['name']),strtolower($b['name'])); - } - } - return 0; - } - - function download_file() - { - if($this->options['inmemory'] == 0) - { - $this->error[] = "Can only use download_file() if archive is in memory. Redirect to file otherwise, it is faster."; - return; - } - switch($this->options['type']) - { - case "zip": - header("Content-type:application/zip"); - break; - case "bzip": - header("Content-type:application/x-compressed"); - break; - case "gzip": - header("Content-type:application/x-compressed"); - break; - case "tar": - header("Content-type:application/x-tar"); - } - $header = "Content-disposition: attachment; filename=\""; - $header .= strstr($this->options['name'],"/")? substr($this->options['name'],strrpos($this->options['name'],"/") + 1) : $this->options['name']; - $header .= "\""; - header($header); - header("Content-length: " . strlen($this->archive)); - header("Content-transfer-encoding: binary"); - header("Cache-control: no-cache, must-revalidate, post-check=0, pre-check=0"); - header("Pragma: no-cache"); - header("Expires: 0"); - print($this->archive); - } -} - -class tar_file extends archive -{ - function tar_file($name) - { - $this->archive($name); - $this->options['type'] = "tar"; - } - - function create_tar() - { - $Pwd = getcwd(); - chdir($this->options['basedir']); - - foreach($this->files as $current) - { - if($current['name'] == $this->options['name']) - { - continue; - } - if(strlen($current['name2']) > 99) - { - $Path = substr($current['name2'],0,strpos($current['name2'],"/",strlen($current['name2']) - 100) + 1); - $current['name2'] = substr($current['name2'],strlen($Path)); - if(strlen($Path) > 154 || strlen($current['name2']) > 99) - { - $this->error[] = "Could not add {$Path}{$current['name2']} to archive because the filename is too long."; - continue; - } - } - $block = pack("a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12",$current['name2'],decoct($current['stat'][2]), - sprintf("%6s ",decoct($current['stat'][4])),sprintf("%6s ",decoct($current['stat'][5])), - sprintf("%11s ",decoct($current['stat'][7])),sprintf("%11s ",decoct($current['stat'][9])), - " ",$current['type'],"","ustar","00","Unknown","Unknown","","",!empty($Path)? $Path : "",""); - - $checksum = 0; - for($i = 0; $i < 512; $i++) - { - $checksum += ord(substr($block,$i,1)); - } - $checksum = pack("a8",sprintf("%6s ",decoct($checksum))); - $block = substr_replace($block,$checksum,148,8); - - if($current['stat'][7] == 0) - { - $this->add_data($block); - } - else if($fp = @fopen($current['name'],"rb")) - { - $this->add_data($block); - while($temp = fread($fp,1048576)) - { - $this->add_data($temp); - } - if($current['stat'][7] % 512 > 0) - { - $temp = ""; - for($i = 0; $i < 512 - $current['stat'][7] % 512; $i++) - { - $temp .= "\0"; - } - $this->add_data($temp); - } - fclose($fp); - } - else - { - $this->error[] = "Could not open file {$current['name']} for reading. It was not added."; - } - } - - $this->add_data(pack("a512","")); - - chdir($Pwd); - - return 1; - - } - - function extract_files() - { - $Pwd = getcwd(); - chdir($this->options['basedir']); - - if($fp = $this->open_archive()) - { - if($this->options['inmemory'] == 1) - { - $this->files = array(); - } - - while($block = fread($fp,512)) - { - $temp = unpack("a100name/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1type/a100temp/a6magic/a2temp/a32temp/a32temp/a8temp/a8temp/a155prefix/a12temp",$block); - $file = array( - 'name'=>$temp['prefix'] . $temp['name'], - 'stat'=>array( - 2=>$temp['mode'], - 4=>octdec($temp['uid']), - 5=>octdec($temp['gid']), - 7=>octdec($temp['size']), - 9=>octdec($temp['mtime']), - ), - 'checksum'=>octdec($temp['checksum']), - 'type'=>$temp['type'], - 'magic'=>$temp['magic'], - ); - if($file['checksum'] == 0x00000000) - { - break; - } - else if($file['magic'] != "ustar") - { - $this->error[] = "This script does not support extracting this type of tar file."; - break; - } - $block = substr_replace($block," ",148,8); - $checksum = 0; - for($i = 0; $i < 512; $i++) - { - $checksum += ord(substr($block,$i,1)); - } - if($file['checksum'] != $checksum) - { - $this->error[] = "Could not extract from {$this->options['name']}, it is corrupt."; - } - - if($this->options['inmemory'] == 1) - { - $file['data'] = fread($fp,$file['stat'][7]); - fread($fp,(512 - $file['stat'][7] % 512) == 512? 0 : (512 - $file['stat'][7] % 512)); - unset($file['checksum'],$file['magic']); - $this->files[] = $file; - } - else - { - if($file['type'] == 5) - { - if(!is_dir($file['name'])) - { - mkdir($file['name'],0711); - //mkdir($file['name'],$file['stat'][2]); - //chown($file['name'],$file['stat'][4]); - //chgrp($file['name'],$file['stat'][5]); - } - } - else if($this->options['overwrite'] == 0 && file_exists($file['name'])) - { - $this->error[] = "{$file['name']} already exists."; - } - else if($new = @fopen($file['name'],"wb")) - { - fwrite($new,fread($fp,$file['stat'][7])); - fread($fp,(512 - $file['stat'][7] % 512) == 512? 0 : (512 - $file['stat'][7] % 512)); - fclose($new); - @chmod($file['name'],0644); - //chmod($file['name'],$file['stat'][2]); - //chown($file['name'],$file['stat'][4]); - //chgrp($file['name'],$file['stat'][5]); - } - else - { - $this->error[] = "Could not open {$file['name']} for writing."; - } - } - unset($file); - } - } - else - { - $this->error[] = "Could not open file {$this->options['name']}"; - } - - chdir($Pwd); - } - - function open_archive() - { - return @fopen($this->options['name'],"rb"); - } -} - -class gzip_file extends tar_file -{ - function gzip_file($name) - { - $this->tar_file($name); - $this->options['type'] = "gzip"; - } - - function create_gzip() - { - if($this->options['inmemory'] == 0) - { - $Pwd = getcwd(); - chdir($this->options['basedir']); - if($fp = gzopen($this->options['name'],"wb{$this->options['level']}")) - { - fseek($this->archive,0); - while($temp = fread($this->archive,1048576)) - { - gzwrite($fp,$temp); - } - gzclose($fp); - chdir($Pwd); - } - else - { - $this->error[] = "Could not open {$this->options['name']} for writing."; - chdir($Pwd); - return 0; - } - } - else - { - $this->archive = gzencode($this->archive,$this->options['level']); - } - - return 1; - } - - function open_archive() - { - return @gzopen($this->options['name'],"rb"); - } -} - -class bzip_file extends tar_file -{ - function bzip_file($name) - { - $this->tar_file($name); - $this->options['type'] = "bzip"; - } - - function create_bzip() - { - if($this->options['inmemory'] == 0) - { - $Pwd = getcwd(); - chdir($this->options['basedir']); - if($fp = bzopen($this->options['name'],"wb")) - { - fseek($this->archive,0); - while($temp = fread($this->archive,1048576)) - { - bzwrite($fp,$temp); - } - bzclose($fp); - chdir($Pwd); - } - else - { - $this->error[] = "Could not open {$this->options['name']} for writing."; - chdir($Pwd); - return 0; - } - } - else - { - $this->archive = bzcompress($this->archive,$this->options['level']); - } - - return 1; - } - - function open_archive() - { - return @bzopen($this->options['name'],"rb"); - } -} - -class zip_file extends archive -{ - function zip_file($name) - { - $this->archive($name); - $this->options['type'] = "zip"; - } - - function create_zip() - { - $files = 0; - $offset = 0; - $central = ""; - - if(!empty($this->options['sfx'])) - { - if($fp = @fopen($this->options['sfx'],"rb")) - { - $temp = fread($fp,filesize($this->options['sfx'])); - fclose($fp); - $this->add_data($temp); - $offset += strlen($temp); - unset($temp); - } - else - { - $this->error[] = "Could not open sfx module from {$this->options['sfx']}."; - } - } - - $Pwd = getcwd(); - chdir($this->options['basedir']); - - foreach($this->files as $current) - { - if($current['name'] == $this->options['name']) - { - continue; - } - $translate = array('Ç'=>pack("C",128),'ü'=>pack("C",129),'é'=>pack("C",130),'â'=>pack("C",131),'ä'=>pack("C",132), - 'à'=>pack("C",133),'å'=>pack("C",134),'ç'=>pack("C",135),'ê'=>pack("C",136),'ë'=>pack("C",137), - 'è'=>pack("C",138),'ï'=>pack("C",139),'î'=>pack("C",140),'ì'=>pack("C",141),'Ä'=>pack("C",142), - 'Å'=>pack("C",143),'É'=>pack("C",144),'æ'=>pack("C",145),'Æ'=>pack("C",146),'ô'=>pack("C",147), - 'ö'=>pack("C",148),'ò'=>pack("C",149),'û'=>pack("C",150),'ù'=>pack("C",151),'_'=>pack("C",152), - 'Ö'=>pack("C",153),'Ü'=>pack("C",154),'£'=>pack("C",156),'¥'=>pack("C",157),'_'=>pack("C",158), - 'ƒ'=>pack("C",159),'á'=>pack("C",160),'í'=>pack("C",161),'ó'=>pack("C",162),'ú'=>pack("C",163), - 'ñ'=>pack("C",164),'Ñ'=>pack("C",165)); - $current['name2'] = strtr($current['name2'],$translate); - - $timedate = explode(" ",date("Y n j G i s",$current['stat'][9])); - $timedate = ($timedate[0] - 1980 << 25) | ($timedate[1] << 21) | ($timedate[2] << 16) | - ($timedate[3] << 11) | ($timedate[4] << 5) | ($timedate[5]); - - $block = pack("VvvvV",0x04034b50,0x000A,0x0000,(isset($current['method']) || $this->options['method'] == 0)? 0x0000 : 0x0008,$timedate); - - if($current['stat'][7] == 0 && $current['type'] == 5) - { - $block .= pack("VVVvv",0x00000000,0x00000000,0x00000000,strlen($current['name2']) + 1,0x0000); - $block .= $current['name2'] . "/"; - $this->add_data($block); - $central .= pack("VvvvvVVVVvvvvvVV",0x02014b50,0x0014,$this->options['method'] == 0? 0x0000 : 0x000A,0x0000, - (isset($current['method']) || $this->options['method'] == 0)? 0x0000 : 0x0008,$timedate, - 0x00000000,0x00000000,0x00000000,strlen($current['name2']) + 1,0x0000,0x0000,0x0000,0x0000,$current['type'] == 5? 0x00000010 : 0x00000000,$offset); - $central .= $current['name2'] . "/"; - $files++; - $offset += (31 + strlen($current['name2'])); - } - else if($current['stat'][7] == 0) - { - $block .= pack("VVVvv",0x00000000,0x00000000,0x00000000,strlen($current['name2']),0x0000); - $block .= $current['name2']; - $this->add_data($block); - $central .= pack("VvvvvVVVVvvvvvVV",0x02014b50,0x0014,$this->options['method'] == 0? 0x0000 : 0x000A,0x0000, - (isset($current['method']) || $this->options['method'] == 0)? 0x0000 : 0x0008,$timedate, - 0x00000000,0x00000000,0x00000000,strlen($current['name2']),0x0000,0x0000,0x0000,0x0000,$current['type'] == 5? 0x00000010 : 0x00000000,$offset); - $central .= $current['name2']; - $files++; - $offset += (30 + strlen($current['name2'])); - } - else if($fp = @fopen($current['name'],"rb")) - { - $temp = fread($fp,$current['stat'][7]); - fclose($fp); - $crc32 = crc32($temp); - if(!isset($current['method']) && $this->options['method'] == 1) - { - $temp = gzcompress($temp,$this->options['level']); - $size = strlen($temp) - 6; - $temp = substr($temp,2,$size); - } - else - { - $size = strlen($temp); - } - $block .= pack("VVVvv",$crc32,$size,$current['stat'][7],strlen($current['name2']),0x0000); - $block .= $current['name2']; - $this->add_data($block); - $this->add_data($temp); - unset($temp); - $central .= pack("VvvvvVVVVvvvvvVV",0x02014b50,0x0014,$this->options['method'] == 0? 0x0000 : 0x000A,0x0000, - (isset($current['method']) || $this->options['method'] == 0)? 0x0000 : 0x0008,$timedate, - $crc32,$size,$current['stat'][7],strlen($current['name2']),0x0000,0x0000,0x0000,0x0000,0x00000000,$offset); - $central .= $current['name2']; - $files++; - $offset += (30 + strlen($current['name2']) + $size); - } - else - { - $this->error[] = "Could not open file {$current['name']} for reading. It was not added."; - } - } - - $this->add_data($central); - - $this->add_data(pack("VvvvvVVv",0x06054b50,0x0000,0x0000,$files,$files,strlen($central),$offset, - !empty($this->options['comment'])? strlen($this->options['comment']) : 0x0000)); - - if(!empty($this->options['comment'])) - { - $this->add_data($this->options['comment']); - } - - chdir($Pwd); - - return 1; - } -} -// +-------------------------------------------------- -// | THE END -// +-------------------------------------------------- -?> diff --git a/web/bsadmin/privilege_add.php b/web/bsadmin/privilege_add.php deleted file mode 100644 index ceeba4a..0000000 --- a/web/bsadmin/privilege_add.php +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    添加权限

    -
    -
      -
    • -
    -
    -
    -
    -

    User ".htmlentities($_POST['user_id'], ENT_QUOTES, 'UTF-8')."'s Privilege Added!

    "; -} -?> -
    - - 给用户添加全站权限
    - 用户名
    - 权限 -
    - - -
    -
    -
    - 给用户添加竞赛权限
    - 用户名
    - 竞赛编号 - - - - -
    -
    -
    - 给用户添加题目提交查看权限
    - 用户名
    - 题目编号
    - - - - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/privilege_delete.php b/web/bsadmin/privilege_delete.php deleted file mode 100644 index 2a8e3ad..0000000 --- a/web/bsadmin/privilege_delete.php +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    权限删除

    -
    -
      -
    • -
    -
    -
    -
    -Please Login First!"; - exit(1); -} -if(isset($_GET['uid'])){ - $user_id=$_GET['uid']; - $rightstr =$_GET['rightstr']; - $sql="delete from `privilege` where user_id=? and rightstr=?"; - $rows=pdo_query($sql,$user_id,$rightstr); - echo "$user_id $rightstr deleted!"; -} -?> - - -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/privilege_list.php b/web/bsadmin/privilege_list.php deleted file mode 100644 index 1c1212a..0000000 --- a/web/bsadmin/privilege_list.php +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    权限列表

    -
    -
      -
    • -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    - - - - - - - "; - echo ""; - echo ""; - echo ""; - echo ""; - } - ?> -
    用户名权限移除
    ".$row['user_id']."".$row['rightstr']."Delete
    - "; - echo "
  • <<
  • "; - echo "
  • <
  • "; - for($i=$spage; $i<=$epage; $i++){ - echo "
  • ".$i."
  • "; - } - echo "
  • >
  • "; - echo "
  • >>
  • "; - echo ""; -} -?> -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/problem_add.php b/web/bsadmin/problem_add.php deleted file mode 100644 index 6970d3c..0000000 --- a/web/bsadmin/problem_add.php +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    新建问题

    -
    -
      -
    • -
    -
    -
    -
    ", "", $description); -$description = str_replace("

    ", "
    ", $description); -$description = str_replace(",", ",", $description); - -$input = $_POST['input']; -$input = str_replace("

    ", "", $input); -$input = str_replace("

    ", "
    ", $input); -$input = str_replace(",", ",", $input); - -$output = $_POST['output']; -$output = str_replace("

    ", "", $output); -$output = str_replace("

    ", "
    ", $output); -$output = str_replace(",", ",", $output); - -$sample_input = $_POST['sample_input']; -$sample_output = $_POST['sample_output']; -$test_input = $_POST['test_input']; -$test_output = $_POST['test_output']; - -$hint = $_POST['hint']; -$hint = str_replace("

    ", "", $hint); -$hint = str_replace("

    ", "
    ", $hint); -$hint = str_replace(",", ",", $hint); - -$source = $_POST['source']; - -$spj = $_POST['spj']; - - -if(false){ - $title = stripslashes($title); - $time_limit = stripslashes($time_limit); - $memory_limit = stripslashes($memory_limit); - $description = stripslashes($description); - $input = stripslashes($input); - $output = stripslashes($output); - $sample_input = stripslashes($sample_input); - $sample_output = stripslashes($sample_output); - $test_input = stripslashes($test_input); - $test_output = stripslashes($test_output); - $hint = stripslashes($hint); - $source = stripslashes($source); - $spj = stripslashes($spj); - $source = stripslashes($source); -} - -$title = RemoveXSS($title); -$description = RemoveXSS($description); -$input = RemoveXSS($input); -$output = RemoveXSS($output); -$hint = RemoveXSS($hint); -//echo "->".$OJ_DATA."<-"; -$pid = addproblem($title, $time_limit, $memory_limit, $description, $input, $output, $sample_input, $sample_output, $hint, $source, $spj, $OJ_DATA); -$basedir = "$OJ_DATA/$pid"; -mkdir($basedir); -if(strlen($sample_output) && !strlen($sample_input)) $sample_input = "0"; -if(strlen($sample_input)) mkdata($pid, "sample.in", $sample_input, $OJ_DATA); -if(strlen($sample_output)) mkdata($pid, "sample.out", $sample_output, $OJ_DATA); -if(strlen($test_output) && !strlen($test_input)) $test_input = "0"; -if(strlen($test_input)) mkdata($pid,"test.in", $test_input, $OJ_DATA); -if(strlen($test_output)) mkdata($pid,"test.out", $test_output, $OJ_DATA); - -$sql = "insert into `privilege` (`user_id`,`rightstr`) values(?,?)"; -pdo_query($sql, $_SESSION[$OJ_NAME.'_'.'user_id'], "p$pid"); -$_SESSION[$OJ_NAME.'_'."p$pid"] = true; - -echo "Add more TestData now!"; -/* */ -?> - - - -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/problem_add_page.php b/web/bsadmin/problem_add_page.php deleted file mode 100644 index cc036f4..0000000 --- a/web/bsadmin/problem_add_page.php +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    新建问题

    -
    -
      -
    • -
    -
    -
    -
    -
    - - - - -
    秒 - MB
    - 题目描述 -
    - 输入格式 -
    - 输出格式 -
    - 样例输入 -
    - 样例输出 -
    - 提示 -
    - 来源 -
    - -

    - 竞赛&作业"?> -
    - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/problem_del.php b/web/bsadmin/problem_del.php deleted file mode 100644 index fd0d0c2..0000000 --- a/web/bsadmin/problem_del.php +++ /dev/null @@ -1,49 +0,0 @@ - -16){ - system("rm -rf $basedir"); - } - } - $sql="delete FROM `problem` WHERE `problem_id`=?"; - pdo_query($sql,$id) ; - $sql="select max(problem_id) FROM `problem`" ; - $result=pdo_query($sql); - $row=$result[0]; - $max_id=$row[0]; - $max_id++; - if($max_id<1000)$max_id=1000; - - $sql="ALTER TABLE problem AUTO_INCREMENT = $max_id"; - pdo_query($sql); - ?> - - - - diff --git a/web/bsadmin/problem_df_change.php b/web/bsadmin/problem_df_change.php deleted file mode 100644 index f0b83cc..0000000 --- a/web/bsadmin/problem_df_change.php +++ /dev/null @@ -1,47 +0,0 @@ - - - - - diff --git a/web/bsadmin/problem_edit.php b/web/bsadmin/problem_edit.php deleted file mode 100644 index 3828f1d..0000000 --- a/web/bsadmin/problem_edit.php +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    编辑问题 P

    -
    -
      -
    • -
    -
    -
    -
    - -
    - - - '> - "> - -
    秒 - MB
    - 题目描述 -
    - 输入格式 -
    - 输出格式 -
    - 样例输入 -
    - 样例输出 -
    - 提示 -
    - 来源 -
    - - >>

    - -
    - ", "", $description); - $description = str_replace("

    ", "
    ", $description); - $description = str_replace(",", ",", $description); - - $input=$_POST['input']; - $input = str_replace("

    ", "", $input); - $input = str_replace("

    ", "
    ", $input); - $input = str_replace(",", ",", $input); - - $output=$_POST['output']; - $output = str_replace("

    ", "", $output); - $output = str_replace("

    ", "
    ", $output); - $output = str_replace(",", ",", $output); - - $sample_input=$_POST['sample_input']; - $sample_output=$_POST['sample_output']; - $hint=$_POST['hint']; - $hint = str_replace("

    ", "", $hint); - $hint = str_replace("

    ", "
    ", $hint); - $hint = str_replace(",", ",", $hint); - - $source=$_POST['source']; - $spj=$_POST['spj']; - - if(false){ - $title = stripslashes($title); - $time_limit = stripslashes($time_limit); - $memory_limit = stripslashes($memory_limit); - $description = stripslashes($description); - $input = stripslashes($input); - $output = stripslashes($output); - $sample_input = stripslashes($sample_input); - $sample_output = stripslashes($sample_output); - //$test_input = stripslashes($test_input); - //$test_output = stripslashes($test_output); - $hint = stripslashes($hint); - $source = stripslashes($source); - $spj = stripslashes($spj); - $source = stripslashes($source); - } - - $title=($title); - $description=RemoveXSS($description); - $input=RemoveXSS($input); - $output=RemoveXSS($output); - $hint=RemoveXSS($hint); - $basedir=$OJ_DATA."/$id"; - - echo "样例数据文件已经更新!!
    "; - - if($sample_input&&file_exists($basedir."/sample.in")){ - //mkdir($basedir); - $fp=fopen($basedir."/sample.in","w"); - fputs($fp,preg_replace("(\r\n)","\n",$sample_input)); - fclose($fp); - - $fp=fopen($basedir."/sample.out","w"); - fputs($fp,preg_replace("(\r\n)","\n",$sample_output)); - fclose($fp); - } - - $spj=intval($spj); - - $sql="UPDATE `problem` set `title`=?,`time_limit`=?,`memory_limit`=?, - `description`=?,`input`=?,`output`=?,`sample_input`=?,`sample_output`=?,`hint`=?,`source`=?,`spj`=?,`in_date`=NOW() - WHERE `problem_id`=?"; - - @pdo_query($sql,$title,$time_limit,$memory_limit,$description,$input,$output,$sample_input,$sample_output,$hint,$source,$spj,$id) ; - echo "编辑成功!"; - echo "查看问题"; - } - ?> -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/problem_export.php b/web/bsadmin/problem_export.php deleted file mode 100644 index 425efa3..0000000 --- a/web/bsadmin/problem_export.php +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    导出问题

    -
    -
      -
    • -
    -
    -
    -
    - -* 如果你输入了从问题P***到问题P***,系统将导出这些问题
    -例如输入了从问题P1000到问题P1234,系统将导出1000~1234这些问题
    -* 如果你直接输入题目编号,前面的输入(从问题P***到问题P***)将不会有效
    -* 例如[1000,1234]将会导出1000和1234这2个问题 -
    -从问题P: -到问题P:
    -或者直接输入题目编号(","隔开)
    - - - - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/problem_export_xml.php b/web/bsadmin/problem_export_xml.php deleted file mode 100644 index b7bde9a..0000000 --- a/web/bsadmin/problem_export_xml.php +++ /dev/null @@ -1,288 +0,0 @@ -","]]]]>",$content); -} -function getTestFileIn($pid, $testfile,$OJ_DATA) { - if ($testfile != "") - return file_get_contents ( "$OJ_DATA/$pid/" . $testfile . ".in" ); - else - return ""; -} -function getTestFileOut($pid, $testfile,$OJ_DATA) { - if ($testfile != "") - return file_get_contents ( ); - else - return ""; -} -function printTestCases($pid,$OJ_DATA){ - -if(strstr($OJ_DATA,"saestor:")) { - // echo "$pid"; - $store = new SaeStorage(); - $ret = $store->getList("data", "$pid",100,0 ); - foreach($ret as $file) { - // echo "$file"; - - if(!strstr($file,"sae-dir-tag")){ - - $pinfo = pathinfo ( $file ); - if (isset($pinfo ['extension']) - &&$pinfo ['extension'] == "in" - && $pinfo ['basename'] != "sample.in") { - $f = basename ( $pinfo ['basename'], "." . $pinfo ['extension'] ); - - $outfile="$pid/" . $f . ".out"; - $infile="$pid/" . $f . ".in"; - if( $store->fileExists ("data",$infile)){ - echo "read ("data",$infile))."]]>\n"; - }if($store->fileExists ("data",$outfile)){ - echo "read ("data",$outfile))."]]>\n"; - } -// break; - } - - - - } - - } - -}else{ - - - $ret = ""; - $pdir = opendir ( "$OJ_DATA/$pid/" ); - while ( $file = readdir ( $pdir ) ) { - $pinfo = pathinfo ( $file ); - if (isset($pinfo ['extension']) - &&$pinfo ['extension'] == "in" - && $pinfo ['basename'] != "sample.in") { - $ret = basename ( $pinfo ['basename'], "." . $pinfo ['extension'] ); - - $outfile="$OJ_DATA/$pid/" . $ret . ".out"; - $infile="$OJ_DATA/$pid/" . $ret . ".in"; - if(file_exists($infile)){ - echo "\n"; - }if(file_exists($outfile)){ - echo "\n"; - } -// break; - } - } - closedir ( $pdir ); - return $ret; -} -} -class Solution{ - var $language=""; - var $source_code=""; -} -function getSolution($pid,$lang){ - $ret=new Solution(); - - $language_name=$GLOBALS['language_name']; - - $sql = "select `solution_id`,`language` from solution where problem_id=? and result=4 and language=? limit 1"; -// echo $sql; - $result = pdo_query($sql,$pid, $lang) ; - if($result&&$row = $result[0] ){ - $solution_id=$row[0]; - $ret->language=$language_name[$row[1]]; - $sql = "select source from source_code where solution_id=?"; - $result = pdo_query( $sql,$solution_id ) ; - if($row = $result[0] ){ - $ret->source_code=$row['source']; - } - } - - return $ret; -} -function fixurl($img_url){ - $img_url= html_entity_decode( $img_url,ENT_QUOTES,"UTF-8"); - - if (substr($img_url,0,4)!="http"){ - if(substr($img_url,0,1)=="/"){ - $ret='http://'.$_SERVER['HTTP_HOST'].':'.$_SERVER["SERVER_PORT"].$img_url; - }else{ - $path= dirname($_SERVER['PHP_SELF']); - $ret='http://'.$_SERVER['HTTP_HOST'].':'.$_SERVER["SERVER_PORT"].$path."/../".$img_url; - } - }else{ - $ret=$img_url; - } - return $ret; -} -function image_base64_encode($img_url){ - $img_url=fixurl($img_url); - if (substr($img_url,0,4)!="http") return false; - $handle = @fopen($img_url, "rb"); - if($handle){ - $contents = stream_get_contents($handle); - $encoded_img= base64_encode($contents); - fclose($handle); - return $encoded_img; - }else - return false; -} -function getImages($content){ - preg_match_all("<[iI][mM][gG][^<>]+[sS][rR][cC]=\"?([^ \"\>]+)/?>",$content,$images); - return $images; -} - -function fixImageURL(&$html,&$did){ - $images=getImages($html); - $imgs=array_unique($images[1]); - foreach($imgs as $img){ - $html=str_replace($img,fixurl($img),$html); - //print_r($did); - if(!in_array($img,$did)){ - $base64=image_base64_encode($img); - if($base64){ - echo ""; - } - array_push($did,$img); - } - } -} - -if (! isset ( $_SESSION[$OJ_NAME.'_'.'administrator'] )) { - echo ""; - echo "Please Login First!"; - exit ( 1 ); -} - - -if (isset($_POST ['do'])||isset($_GET['cid'])) { - if(isset($_POST ['in'])&&strlen($_POST ['in'])>0){ - require_once("../include/check_post_key.php"); - $in= $_POST ['in'] ; - $ins=explode(",",$in); - $in=""; - foreach($ins as $pid){ - $pid=intval($pid); - if($in)$in.=","; - $in.=$pid; - } - $sql = "select * from problem where problem_id in($in)"; - $result = pdo_query( $sql ); - - $filename="-$in"; - }else if (isset($_GET['cid'])){ - require_once("../include/check_get_key.php"); - $cid=intval( $_GET['cid'] ); - $sql= "select title from contest where contest_id=?"; - $result = pdo_query( $sql,$cid ); - $row = $result[0]; - $filename='-'.$row['title']; - $sql = "select * from problem where problem_id in(select problem_id from contest_problem where contest_id=?)"; - $result = pdo_query( $sql ,$cid); - - - }else{ - require_once("../include/check_post_key.php"); - $start = intval ( $_POST ['start'] ); - $end = intval ( $_POST ['end'] ); - $sql = "select * from problem where problem_id>=? and problem_id<=? order by problem_id "; - $result = pdo_query( $sql,$start ,$end); - - $filename="-$start-$end"; - } - - - //echo $sql; - - if (isset($_POST ['submit'])&&$_POST ['submit'] == "Export") - header ( 'Content-Type: text/xml' ); - else { - header ( "content-type: application/file" ); - header ( "content-disposition: attachment; filename=\"fps-".$_SESSION[$OJ_NAME.'_'.'user_id'].$filename.".xml\"" ); - } - echo ""; - - ?> - - - - - -<![CDATA[<?php echo $row['title']?>]]> -]]> -]]> - - -]]> -]]> -]]> -]]> -]]> - -]]> -]]> -language){?> - source_code)?>]]> - "; - if (file_exists($append_file)){?> - < language="">]]>> - -"; - } - elseif(file_exists( $filecc )){ - echo ""; - } - } -?> - -"; - -} -?> - diff --git a/web/bsadmin/problem_import.php b/web/bsadmin/problem_import.php deleted file mode 100644 index 1044d7a..0000000 --- a/web/bsadmin/problem_import.php +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    导入问题

    -
    -
      -
    • -
    -
    -
    -
    - 导入FPS格式的数据,确保文件大小在[]以内
    -或者在php.ini中修改upload_max_filesize和post_max_filesize
    -如果你失败了或者想导入大文件[10M+],尝试在php.ini中加大[memory_limit]的设置
    -或者你需要执行:
    - chmod 775 -R $OJ_DATA && chgrp -R www-data $OJ_DATA
    - 此时不能使用导入函数。
    "; - $show_form=false; - } - if(!file_exists("../upload"))mkdir("../upload"); - if(!writable("../upload")){ - - echo "../upload 不是可写的, 对它执行chmod 770.
    "; - $show_form=false; - } - } - if($show_form){ -?> -
    - -
    - - -
    - -
    - -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/problem_import_xml.php b/web/bsadmin/problem_import_xml.php deleted file mode 100644 index bd77b66..0000000 --- a/web/bsadmin/problem_import_xml.php +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - MasterOJ - Admin - - - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    导入问题

    -
    -
      -
    • -
    -
    -
    -
    - - -Import Free Problem Set ...
    - -$TagName; -} -function getAttribute($Node, $TagName,$attribute) { - return $Node->children()->$TagName->attributes()->$attribute; -} -function hasProblem($title){ -//return false; - $md5=md5($title); - $sql="select 1 from problem where md5(title)=?"; - $result=pdo_query( $sql,$md5 ); - $rows_cnt=count($result); - - //echo "row->$rows_cnt"; - return ($rows_cnt>0); - -} -function mkpta($pid,$prepends,$node){ - $language_ext=$GLOBALS['language_ext']; - $OJ_DATA=$GLOBALS['OJ_DATA']; - foreach($prepends as $prepend) { - $language =$prepend->attributes()->language; - $lang=getLang($language); - $file_ext=$language_ext[$lang]; - $basedir = "$OJ_DATA/$pid"; - $file_name="$basedir/$node.$file_ext"; - file_put_contents($file_name,$prepend); - } -} -function get_extension($file){ - $info = pathinfo($file); - return $info['extension']; -} -function import_fps($tempfile){ - global $OJ_DATA,$OJ_SAE,$OJ_REDIS,$OJ_REDISSERVER,$OJ_REDISPORT,$OJ_REDISQNAME; - $xmlDoc=simplexml_load_file($tempfile, 'SimpleXMLElement', LIBXML_PARSEHUGE); - $searchNodes = $xmlDoc->xpath ( "/fps/item" ); - $spid=0; - foreach($searchNodes as $searchNode) { - //echo $searchNode->title,"\n"; - - $title =$searchNode->title; - - $time_limit = $searchNode->time_limit; - $unit=getAttribute($searchNode,'time_limit','unit'); - //echo $unit; - if($unit=='ms') $time_limit/=1000; - - $memory_limit = getValue ( $searchNode, 'memory_limit' ); - $unit=getAttribute($searchNode,'memory_limit','unit'); - if($unit=='kb') $memory_limit/=1024; - - $description = getValue ( $searchNode, 'description' ); - $input = getValue ( $searchNode, 'input' ); - $output = getValue ( $searchNode, 'output' ); - $sample_input = getValue ( $searchNode, 'sample_input' ); - $sample_output = getValue ( $searchNode, 'sample_output' ); -// $test_input = getValue ( $searchNode, 'test_input' ); -// $test_output = getValue ( $searchNode, 'test_output' ); - $hint = getValue ( $searchNode, 'hint' ); - $source = getValue ( $searchNode, 'source' ); - - - $spjcode = getValue ( $searchNode, 'spj' ); - $spj = trim($spjcode)?1:0; - if(!hasProblem($title )){ - $pid=addproblem ( $title, $time_limit, $memory_limit, $description, $input, $output, $sample_input, $sample_output, $hint, $source, $spj, $OJ_DATA ); - if($spid==0) $spid=$pid; - $basedir = "$OJ_DATA/$pid"; - mkdir ( $basedir ); - if(strlen($sample_input)) mkdata($pid,"sample.in",$sample_input,$OJ_DATA); - if(strlen($sample_output)) mkdata($pid,"sample.out",$sample_output,$OJ_DATA); - // if(!isset($OJ_SAE)||!$OJ_SAE){ - $testinputs=$searchNode->children()->test_input; - $testno=0; - - foreach($testinputs as $testNode){ - //if($testNode->nodeValue) - mkdata($pid,"test".$testno++.".in",$testNode,$OJ_DATA); - } - unset($testinputs); - $testinputs=$searchNode->children()->test_output; - $testno=0; - foreach($testinputs as $testNode){ - //if($testNode->nodeValue) - mkdata($pid,"test".$testno++.".out",$testNode,$OJ_DATA); - } - unset($testinputs); - // } - $images=($searchNode->children()->img); - $did=array(); - $testno=0; - foreach($images as $img){ - // - $src=getValue($img,"src"); - if(!in_array($src,$did)){ - $base64=getValue($img,"base64"); - $ext=pathinfo($src); - $ext=strtolower($ext['extension']); - if(!stristr(",jpeg,jpg,svg,png,gif,bmp",$ext)){ - $ext="bad"; - exit(1); - } - $testno++; - $newpath="../upload/pimg".$pid."_".$testno.".".$ext; - if($OJ_SAE) $newpath="saestor://web/upload/pimg".$pid."_".$testno.".".$ext; - - image_save_file($newpath,$base64); - $newpath=dirname($_SERVER['REQUEST_URI'] )."/../upload/pimg".$pid."_".$testno.".".$ext; - if($OJ_SAE) $newpath=$SAE_STORAGE_ROOT."upload/pimg".$pid."_".$testno.".".$ext; - - $sql="update problem set description=replace(description,?,?) where problem_id=?"; - pdo_query( $sql,$src,$newpath,$pid); - $sql="update problem set input=replace(input,?,?) where problem_id=?"; - pdo_query( $sql,$src,$newpath,$pid); - $sql="update problem set output=replace(output,?,?) where problem_id=?"; - pdo_query( $sql,$src,$newpath,$pid); - $sql="update problem set hint=replace(hint,?,?) where problem_id=?"; - pdo_query( $sql,$src,$newpath,$pid); - array_push($did,$src); - } - - } - - if(!isset($OJ_SAE)||!$OJ_SAE){ - if($spj) { - $basedir = "$OJ_DATA/$pid"; - $fp=fopen("$basedir/spj.cc","w"); - fputs($fp, $spjcode); - fclose($fp); - ////system( " g++ -o $basedir/spj $basedir/spj.cc "); - if(!file_exists("$basedir/spj") ){ - $fp=fopen("$basedir/spj.c","w"); - fputs($fp, $spjcode); - fclose($fp); - ////system( " gcc -o $basedir/spj $basedir/spj.c "); - if(!file_exists("$basedir/spj")){ - echo "you need to compile $basedir/spj.cc for spj[ g++ -o $basedir/spj $basedir/spj.cc ]
    and rejudge $pid"; - - }else{ - - unlink("$basedir/spj.cc"); - } - - - } - } - } - - $solutions = $searchNode->children()->solution; - foreach($solutions as $solution) { - $language =$solution->attributes()->language; - submitSolution($pid,$solution,$language); - } - unset($solutions); - $prepends = $searchNode->children()->prepend; - mkpta($pid,$prepends,"prepend"); - $prepends = $searchNode->children()->template; - mkpta($pid,$prepends,"template"); - $prepends = $searchNode->children()->append; - mkpta($pid,$prepends,"append"); - - - }else{ - echo "
    $title is already in this OJ"; - } - - } - unlink ( $tempfile ); - if(isset($OJ_REDIS)&&$OJ_REDIS){ - $redis = new Redis(); - $redis->connect($OJ_REDISSERVER, $OJ_REDISPORT); - $sql="select solution_id from solution where result=0 and problem_id>0"; - $result=pdo_query($sql); - foreach($result as $row){ - echo $row['solution_id']."\n"; - $redis->lpush($OJ_REDISQNAME,$row['solution_id']); - } - - } - - if($spid>0){ - require_once("../include/set_get_key.php"); - echo "
    Use these problems to create a contest."; - } -} - -if ($_FILES ["fps"] ["error"] > 0) { - echo "Error: " . $_FILES ["fps"] ["error"] . "File size is too big, change in PHP.ini
    "; -} else { - $tempfile = $_FILES ["fps"] ["tmp_name"]; - if(get_extension( $_FILES ["fps"] ["name"])=="zip"){ - echo "zip file , only fps/xml files in root dir are supported"; - $resource = zip_open($tempfile); - $i = 1; - $tempfile=tempnam("/tmp", "fps"); - while ($dir_resource = zip_read($resource)) { - if (zip_entry_open($resource,$dir_resource)) { - $file_name = $path.zip_entry_name($dir_resource); - $file_path = substr($file_name,0,strrpos($file_name, "/")); - if(!is_dir($file_name)){ - $file_size = zip_entry_filesize($dir_resource); - $file_content = zip_entry_read($dir_resource,$file_size); - file_put_contents($tempfile,$file_content); - import_fps($tempfile); - } - zip_entry_close($dir_resource); - } - } - zip_close($resource); - unlink ( $_FILES ["fps"] ["tmp_name"] ); - }else{ - import_fps($tempfile); - } -// echo "Upload: " . $_FILES ["fps"] ["name"] . "
    "; -// echo "Type: " . $_FILES ["fps"] ["type"] . "
    "; -// echo "Size: " . ($_FILES ["fps"] ["size"] / 1024) . " Kb
    "; -// echo "Stored in: " . $tempfile; - - //$xmlDoc = new DOMDocument (); - //$xmlDoc->load ( $tempfile ); - //$xmlcontent=file_get_contents($tempfile ); -} -?> - -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/problem_list.php b/web/bsadmin/problem_list.php deleted file mode 100644 index b704751..0000000 --- a/web/bsadmin/problem_list.php +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    题目列表

    -
    -
      -
    • -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    - - - - - - - - - 状态"; - echo ""; - } - ?> - - "; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - if(isset($_SESSION[$OJ_NAME.'_'.'administrator'])||isset($_SESSION[$OJ_NAME.'_'.'problem_editor'])){ - if(isset($_SESSION[$OJ_NAME.'_'.'administrator'])){ - echo ""; - } -?> - - - - - -
    ID 标题AC时间删除编辑数据
    ".$row['problem_id']." ".$row['title']."".$row['accepted']."".$row['in_date']."".($row['defunct']=="N"?"可用":"不可用").""; - if($OJ_SAE||function_exists("system")){ - ?> - &getkey="'>删除 - 编辑"; - echo "测试数据"; - } - } - echo "
    选中项 - - - - - - -
    - -"; - echo "
  • <<
  • "; - echo "
  • <
  • "; - for($i=$spage; $i<=$epage; $i++){ - echo "
  • ".$i."
  • "; - } - echo "
  • >
  • "; - echo "
  • >>
  • "; - echo ""; -} -?> -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/problem_rejudge.php b/web/bsadmin/problem_rejudge.php deleted file mode 100644 index d04c683..0000000 --- a/web/bsadmin/problem_rejudge.php +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -0"; - pdo_query($sql,$rjpid) ; - $sql="delete from `sim` WHERE `s_id` in (select solution_id from solution where `problem_id`=?)"; - pdo_query($sql,$rjpid) ; - $url="../status.php?problem_id=".$rjpid; - echo "Rejudged Problem ".$rjpid; - echo ""; - } - else if (isset($_POST['rjsid'])){ - $rjsid=intval($_POST['rjsid']); - $sql="delete from `sim` WHERE `s_id`=?"; - pdo_query($sql,$rjsid) ; - $sql="UPDATE `solution` SET `result`=1 WHERE `solution_id`=? and problem_id>0" ; - pdo_query($sql,$rjsid) ; - $url="../status.php?top=".($rjsid+1); - echo "Rejudged Runid ".$rjsid; - echo ""; - }else if (isset($_POST['rjcid'])){ - $rjcid=intval($_POST['rjcid']); - $sql="UPDATE `solution` SET `result`=1 WHERE `contest_id`=? and problem_id>0"; - pdo_query($sql,$rjcid) ; - $url="../status.php?cid=".($rjcid); - echo "Rejudged Contest id :".$rjcid; - echo ""; - } - echo str_repeat(" ",4096); - flush(); - if($OJ_REDIS){ - $redis = new Redis(); - $redis->connect($OJ_REDISSERVER, $OJ_REDISPORT); - if(isset($OJ_REDISAUTH)) $redis->auth($OJ_REDISAUTH); - $sql="select solution_id from solution where result=1 and problem_id>0"; - $result=pdo_query($sql); - foreach($result as $row){ - echo $row['solution_id']."\n"; - $redis->lpush($OJ_REDISQNAME,$row['solution_id']); - } - $redis->close(); - } - -} -?> -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    题目重判

    -
    -
      -
    • -
    -
    -
    -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/readme.md b/web/bsadmin/readme.md deleted file mode 100644 index 6e9c919..0000000 --- a/web/bsadmin/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -## BShark主题后台 - -请在web目录下添加`404.html`,在用户无权限访时将自动显示404(浏览器地址不变) - -如果您的数据库结构适应MasterOJ的数据库,则可以开启全部内容。 - -数据表差异 - -- contest中有type字段,用于记录是ACM竞赛还是OI竞赛 - -- users中score,qq,suffix,codeshare,hb,backimg,mailok,headtitle分别记录积分,qq,???,代码分享(新),壕币,是否完成邮箱验证,头衔 - -- activity记录活动,mailcheck用于邮箱验证 diff --git a/web/bsadmin/setmsg.php b/web/bsadmin/setmsg.php deleted file mode 100644 index a9703e4..0000000 --- a/web/bsadmin/setmsg.php +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - ", "", $msg); - $msg = str_replace("

    ", "
    ", $msg); - $msg = str_replace(",", ",", $msg); - - if(false){ - $title = stripslashes($title); - } - - $msg = RemoveXSS($msg); - fputs($fp,$msg); - fclose($fp); - echo "Update At ".date('Y-m-d h:i:s'); -} - -$msg = file_get_contents($OJ_SAE?"saestor://web/msg.txt":"msg.txt"); - -include("kindeditor.php"); -?> -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    设置公告(没用的)

    -
    -
      -
    • -
    -
    -
    -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/suspect_list.php b/web/bsadmin/suspect_list.php deleted file mode 100644 index d1f7abf..0000000 --- a/web/bsadmin/suspect_list.php +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    用户修改

    -
    -
      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/team_generate.php b/web/bsadmin/team_generate.php deleted file mode 100644 index 941258a..0000000 --- a/web/bsadmin/team_generate.php +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    账号生成

    -
    -
      -
    • -
    -
    -
    -
    - 0){ - echo ""; - echo ""; - echo ""; - for($i=1;$i<=$teamnumber;$i++){ - - $user_id=$prefix.($i<10?('0'.$i):$i); - $password=strtoupper(substr(MD5($user_id.rand(0,9999999)),0,10)); - if(isset($pieces[$i-1])) - $nick=$pieces[$i-1]; - else - $nick="可爱的OIer"; - if($teamnumber==1) $user_id=$prefix; - - echo ""; - - $password=pwGen($password); - $email="a@b"; - - $school="我是可爱的OIer"; - $ip = ($_SERVER['REMOTE_ADDR']); - if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ){ - $REMOTE_ADDR = $_SERVER['HTTP_X_FORWARDED_FOR']; - $tmp_ip=explode(',',$REMOTE_ADDR); - $ip =(htmlentities($tmp_ip[0],ENT_QUOTES,"UTF-8")); - } - $sql="INSERT INTO `users`("."`user_id`,`email`,`ip`,`accesstime`,`password`,`reg_time`,`nick`,`school`)". - "VALUES(?,?,?,NOW(),?,NOW(),?,?)on DUPLICATE KEY UPDATE `email`=?,`ip`=?,`accesstime`=NOW(),`password`=?,`reg_time`=now(),nick=?,`school`=?, `qq`=?, `backimg`=?, `codeshare`=?, `mailok`=?"; - pdo_query($sql,$user_id,$email,$ip,$password,$nick,$school,$email,$ip,$password,$nick,$school,'12345678', './template/meto/1.jpg', 'Y', '0') ; - } - echo "
    账号列表(请复制)
    昵称用户名密码
    $nick$user_id$password
    "; - - - } - -} -?> -
    -
    - 个账号
    -
    - - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - \ No newline at end of file diff --git a/web/bsadmin/update_db.php b/web/bsadmin/update_db.php deleted file mode 100644 index 7e0e994..0000000 --- a/web/bsadmin/update_db.php +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    -
    -
      -
    • -
    -
    -
    -
    - "; - for($i=0;isset($tsql[$i]);$i++){ - if(pdo_query($tsql[$i])){ - echo $csql[$i]."
    "; - pdo_query($csql[$i]); - }else{ - echo $tsql[$i]."
    "; - } - - } -} -?>Update DataBase - Create New Tables ,drop useless columes. - Necessary for using plagiarism detection. -
    - - - -
    - - - Upgrade all users password storage form to get more security. - * only do once ! - -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/update_pw.php b/web/bsadmin/update_pw.php deleted file mode 100644 index 69f3f17..0000000 --- a/web/bsadmin/update_pw.php +++ /dev/null @@ -1,28 +0,0 @@ -".update_for_user($uid)."\n"; -} -unlink("update_pw.php"); -?> diff --git a/web/bsadmin/user_df_change.php b/web/bsadmin/user_df_change.php deleted file mode 100644 index 127b913..0000000 --- a/web/bsadmin/user_df_change.php +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/web/bsadmin/user_edit.php b/web/bsadmin/user_edit.php deleted file mode 100644 index 2df04c2..0000000 --- a/web/bsadmin/user_edit.php +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    用户修改

    -
    -
      -
    • -
    -
    -
    -
    - history.back(-1);"; - if ($isadmin == 0) { - if (isset($_POST['password'])) { - $passwd = $_POST['password']; - if (false) { - $user_id = stripslashes ( $user_id); - $passwd = stripslashes ( $passwd); - } - $passwd=pwGen($passwd); - $sql="update `users` set `password`=? where `user_id`=? and user_id not in( select user_id from privilege where rightstr='administrator') "; - - pdo_query($sql,$passwd,$user_id); - } - } - } - ?> - -
    - - - - 用户名: - - 昵称: - > - 密码: - > - 邮箱: - "> - 学校 - > - -
    -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/bsadmin/user_list.php b/web/bsadmin/user_list.php deleted file mode 100644 index 9388a5d..0000000 --- a/web/bsadmin/user_list.php +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - <?php echo $OJ_NAME;?> - Admin - - - - - - - - -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    用户列表

    -
    -
      -
    • -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    - - - - - - - - - "; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - } - ?> -
    ID昵称注册时间状态编辑信息
    ".$row['user_id']."".$row['nick']."".$row['reg_time']."".($row['defunct']=="N"?"可用":"不可用")."编辑
    - "; - echo "
  • <<
  • "; - echo "
  • <
  • "; - for($i=$spage; $i<=$epage; $i++){ - echo "
  • ".$i."
  • "; - } - echo "
  • >
  • "; - echo "
  • >>
  • "; - echo ""; -} -?> -
    -
    -
    -
    -
    - - CopyRight © 1999- MasterOJ.All rights reserved -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - diff --git a/web/include/db_info.inc.php b/web/include/db_info.inc.php index ec88c6d..8ee3d87 100644 --- a/web/include/db_info.inc.php +++ b/web/include/db_info.inc.php @@ -52,7 +52,7 @@ static $OJ_REDISPORT=6379; static $OJ_REDISQNAME="hustoj"; static $SAE_STORAGE_ROOT="http://hustoj-web.stor.sinaapp.com/"; //新浪云存储引擎 static $OJ_CDN_URL=""; // 如果服务器带宽较小,可选用他人同版本的OJ作为静态资源来源 http://cdn.m.hustoj.com:8090/ -static $OJ_TEMPLATE="syzoj"; //使用的默认模板,template目录下的每个子目录都是一个模板, [bs3 mdui sweet syzoj sidebar bshark] work with discuss3 +static $OJ_TEMPLATE="syzoj"; //使用的默认模板,当前部署仅保留 syzoj。 static $OJ_BG="/image/background.jpg"; //双引号里面填写背景图片的url。 // $OJ_BG="/image/bing".date('H').".jpg"; //每个整点更换壁纸,例如准备bing[00~23].jpg在image目录。 static $OJ_LOGIN_MOD="hustoj"; //需要在include目录下配置login-xxxx.php来调用其他登录模块。 diff --git a/web/include/editor-upload.php b/web/include/editor-upload.php new file mode 100644 index 0000000..48d262e --- /dev/null +++ b/web/include/editor-upload.php @@ -0,0 +1,127 @@ +Please Login First!"; + exit(1); +} + +$savePath = realpath(__DIR__ . '/../upload/') . '/'; +$saveUrl = dirname(dirname($_SERVER['PHP_SELF'])) . '/upload/'; +$extMap = array( + 'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'), + 'flash' => array('swf', 'flv'), + 'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb', 'mp4'), + 'file' => array('pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'), +); +$maxSize = 400 * 1024 * 1024; + +if (!empty($_FILES['imgFile']['error'])) { + switch ($_FILES['imgFile']['error']) { + case '1': + upload_error('超过php.ini允许的大小。'); + break; + case '2': + upload_error('超过表单允许的大小。'); + break; + case '3': + upload_error('图片只有部分被上传。'); + break; + case '4': + upload_error('请选择图片。'); + break; + case '6': + upload_error('找不到临时目录。'); + break; + case '7': + upload_error('写文件到硬盘出错。'); + break; + case '8': + upload_error('File upload stopped by extension。'); + break; + case '999': + default: + upload_error('未知错误。'); + break; + } +} + +if (!empty($_FILES)) { + $fileName = $_FILES['imgFile']['name']; + $tmpName = $_FILES['imgFile']['tmp_name']; + $fileSize = $_FILES['imgFile']['size']; + + if (!$fileName) { + upload_error('请选择文件。'); + } + if (@is_dir($savePath) === false) { + upload_error('上传目录不存在。'); + } + if (@is_writable($savePath) === false) { + upload_error("上传目录没有写权限。在服务器上执行下述命令解决该问题:\n chown www-data -R \"$savePath\" \n"); + } + if (@is_uploaded_file($tmpName) === false) { + upload_error('上传失败。'); + } + if ($fileSize > $maxSize) { + upload_error('上传文件大小超过限制。'); + } + + $tempArr = explode('.', $fileName); + $fileExt = strtolower(trim(array_pop($tempArr))); + $dirName = ''; + + foreach ($extMap as $key => $extensions) { + if (in_array($fileExt, $extensions)) { + $dirName = $key; + break; + } + } + + if ($dirName === '') { + $dirName = 'image'; + } + if (empty($extMap[$dirName])) { + upload_error('目录名不正确。'); + } + if (in_array($fileExt, $extMap[$dirName]) === false) { + upload_error('上传文件扩展名是不允许的扩展名。\n只允许' . implode(',', $extMap[$dirName]) . '格式。'); + } + + $savePath .= $dirName . '/'; + $saveUrl .= $dirName . '/'; + if (!file_exists($savePath)) { + mkdir($savePath, 0744, true); + } + + $ymd = date('Ymd'); + $savePath .= $ymd . '/'; + $saveUrl .= $ymd . '/'; + if (!file_exists($savePath)) { + mkdir($savePath, 0744, true); + } + + $newFileName = date('YmdHis') . '_' . rand(10000, 99999) . '.' . $fileExt; + $filePath = $savePath . $newFileName; + if (move_uploaded_file($tmpName, $filePath) === false) { + upload_error('上传文件失败。'); + } + @chmod($filePath, 0644); + + upload_success($saveUrl . $newFileName); +} + +function upload_success($fileUrl) { + header('Content-type: text/html; charset=UTF-8'); + echo json_encode(array('error' => 0, 'url' => $fileUrl), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + exit; +} + +function upload_error($message) { + header('Content-type: text/html; charset=UTF-8'); + echo json_encode(array('error' => 1, 'message' => $message), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + exit; +} \ No newline at end of file diff --git a/web/include/init.php b/web/include/init.php index d9a1dea..aa22b58 100644 --- a/web/include/init.php +++ b/web/include/init.php @@ -51,8 +51,8 @@ if($OJ_SaaS_ENABLE){ $DOMAIN=$domain; } -if(isset($_SERVER["HTTP_USER_AGENT"])&&strpos($_SERVER["HTTP_USER_AGENT"],"MSIE")){ // 360 or IE use bs3 instead - $OJ_TEMPLATE="bs3"; +if(isset($_SERVER["HTTP_USER_AGENT"])&&strpos($_SERVER["HTTP_USER_AGENT"],"MSIE")){ // 360 or IE keep using the only remaining syzoj template + $OJ_TEMPLATE="syzoj"; } diff --git a/web/include/vditor-adapter.js b/web/include/vditor-adapter.js index 8fb5711..f8b243e 100644 --- a/web/include/vditor-adapter.js +++ b/web/include/vditor-adapter.js @@ -378,7 +378,7 @@ }); } - function kindEditorUploadFormatter(files, responseText) { + function editorUploadFormatter(files, responseText) { var payload; var fileName = 'upload'; var result; @@ -436,7 +436,7 @@ fieldName: options.fieldName || 'imgFile', accept: options.accept || '*/*', format: function (files, responseText) { - return kindEditorUploadFormatter(files, responseText); + return editorUploadFormatter(files, responseText); } }; } @@ -962,7 +962,7 @@ function initTextareaVditors(options) { return ensureAssets(options).then(function () { - var selector = (options && options.selector) || 'textarea.kindeditor'; + var selector = (options && options.selector) || 'textarea.vditor-editor'; var textareas = documentRef.querySelectorAll(selector); var tasks = []; @@ -983,6 +983,6 @@ renderMarkdownBlocks: renderMarkdownBlocks, aceThemeToVditorTheme: aceThemeToVditorTheme, decodeHtmlEntities: decodeHtmlEntities, - kindEditorUploadFormatter: kindEditorUploadFormatter + editorUploadFormatter: editorUploadFormatter }; })(window); \ No newline at end of file diff --git a/web/kindeditor/kindeditor-all-min.js b/web/kindeditor/kindeditor-all-min.js deleted file mode 100644 index 9d4aacb..0000000 --- a/web/kindeditor/kindeditor-all-min.js +++ /dev/null @@ -1,7 +0,0 @@ -/* KindEditor 4.1.11 (2016-03-31), Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */ -!function(window,undefined){function _isArray(a){return a?"[object Array]"===Object.prototype.toString.call(a):!1}function _isFunction(a){return a?"[object Function]"===Object.prototype.toString.call(a):!1}function _inArray(a,b){for(var c=0,d=b.length;d>c;c++)if(a===b[c])return c;return-1}function _each(a,b){if(_isArray(a))for(var c=0,d=a.length;d>c&&b.call(a[c],c,a[c])!==!1;c++);else for(var e in a)if(a.hasOwnProperty(e)&&b.call(a[e],e,a[e])===!1)break}function _trim(a){return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}function _inString(a,b,c){return c=c===undefined?",":c,(c+b+c).indexOf(c+a+c)>=0}function _addUnit(a,b){return b=b||"px",a&&/^-?\d+(?:\.\d+)?$/.test(a)?a+b:a}function _removeUnit(a){var b;return a&&(b=/(\d+)/.exec(a))?parseInt(b[1],10):0}function _escape(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function _unescape(a){return a.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(a){var b=a.split("-");return a="",_each(b,function(b,c){a+=b>0?c.charAt(0).toUpperCase()+c.substr(1):c}),a}function _toHex(a){function b(a){var b=parseInt(a,10).toString(16).toUpperCase();return b.length>1?b:"0"+b}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function(a,c,d,e){return"#"+b(c)+b(d)+b(e)})}function _toMap(a,b){b=b===undefined?",":b;var c,d={},e=_isArray(a)?a:a.split(b);return _each(e,function(a,b){if(c=/^(\d+)\.\.(\d+)$/.exec(b))for(var e=parseInt(c[1],10);e<=parseInt(c[2],10);e++)d[e.toString()]=!0;else d[b]=!0}),d}function _toArray(a,b){return Array.prototype.slice.call(a,b||0)}function _undef(a,b){return a===undefined?b:a}function _invalidUrl(a){return!a||/[<>"]/.test(a)}function _addParam(a,b){return a.indexOf("?")>=0?a+"&"+b:a+"?"+b}function _extend(a,b,c){c||(c=b,b=null);var d;if(b){var e=function(){};e.prototype=b.prototype,d=new e,_each(c,function(a,b){d[a]=b})}else d=c;d.constructor=a,a.prototype=d,a.parent=b?b.prototype:null}function _json(text){var match;(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))&&(text=match[0]);var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+text+")");throw"JSON parse error"}function _getBasePath(){for(var a,b=document.getElementsByTagName("script"),c=0,d=b.length;d>c;c++)if(a=b[c].src||"",/kindeditor[\w\-\.]*\.js/.test(a))return a.substring(0,a.lastIndexOf("/")+1);return""}function _bindEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,_useCapture):a.attachEvent&&a.attachEvent("on"+b,c)}function _unbindEvent(a,b,c){a.removeEventListener?a.removeEventListener(b,c,_useCapture):a.detachEvent&&a.detachEvent("on"+b,c)}function KEvent(a,b){this.init(a,b)}function _getId(a){return a[_eventExpendo]||null}function _setId(a){return a[_eventExpendo]=++_eventId,_eventId}function _removeId(a){try{delete a[_eventExpendo]}catch(b){a.removeAttribute&&a.removeAttribute(_eventExpendo)}}function _bind(a,b,c){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_bind(a,this,c)});var d=_getId(a);d||(d=_setId(a)),_eventData[d]===undefined&&(_eventData[d]={});var e=_eventData[d][b];e&&e.length>0?_unbindEvent(a,b,e[0]):(_eventData[d][b]=[],_eventData[d].el=a),e=_eventData[d][b],0===e.length&&(e[0]=function(b){var c=b?new KEvent(a,b):undefined;_each(e,function(b,d){b>0&&d&&d.call(a,c)})}),_inArray(c,e)<0&&e.push(c),_bindEvent(a,b,e[0])}function _unbind(a,b,c){if(b&&b.indexOf(",")>=0)return void _each(b.split(","),function(){_unbind(a,this,c)});var d=_getId(a);if(d){if(b===undefined)return void(d in _eventData&&(_each(_eventData[d],function(b,c){"el"!=b&&c.length>0&&_unbindEvent(a,b,c[0])}),delete _eventData[d],_removeId(a)));if(_eventData[d]){var e=_eventData[d][b];if(e&&e.length>0){c===undefined?(_unbindEvent(a,b,e[0]),delete _eventData[d][b]):(_each(e,function(a,b){a>0&&b===c&&e.splice(a,1)}),1==e.length&&(_unbindEvent(a,b,e[0]),delete _eventData[d][b]));var f=0;_each(_eventData[d],function(){f++}),2>f&&(delete _eventData[d],_removeId(a))}}}}function _fire(a,b){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_fire(a,this)});var c=_getId(a);if(c){var d=_eventData[c][b];_eventData[c]&&d&&d.length>0&&d[0]()}}function _ctrl(a,b,c){b=/^\d{2,}$/.test(b)?b:b.toUpperCase().charCodeAt(0),_bind(a,"keydown",function(d){!d.ctrlKey||d.which!=b||d.shiftKey||d.altKey||(c.call(a),d.stop())})}function _ready(a){function b(){e||(e=!0,a(KindEditor),_readyFinished=!0)}function c(){if(!e){try{document.documentElement.doScroll("left")}catch(a){return void setTimeout(c,100)}b()}}function d(){"complete"===document.readyState&&b()}if(_readyFinished)return void a(KindEditor);var e=!1;if(document.addEventListener)_bind(document,"DOMContentLoaded",b);else if(document.attachEvent){_bind(document,"readystatechange",d);var f=!1;try{f=null==window.frameElement}catch(g){}document.documentElement.doScroll&&f&&c()}_bind(window,"load",b)}function _getCssList(a){for(var b,c={},d=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g;b=d.exec(a);){var e=_trim(b[1].toLowerCase()),f=_trim(_toHex(b[2]));c[e]=f}return c}function _getAttrList(a){for(var b,c={},d=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g;b=d.exec(a);){var e=(b[1]||b[2]||b[4]||b[6]).toLowerCase(),f=(b[2]?b[3]:b[4]?b[5]:b[7])||"";c[e]=f}return c}function _addClassToTag(a,b){return a=/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,c,d,e){return(" "+d+" ").indexOf(" "+b+" ")<0?""===d?c+b+e:c+d+" "+b+e:a}):a.substr(0,a.length-1)+' class="'+b+'">'}function _formatCss(a){var b="";return _each(_getCssList(a),function(a,c){b+=a+":"+c+";"}),b}function _formatUrl(a,b,c,d){function e(a){for(var b=a.split("/"),c=[],d=0,e=b.length;e>d;d++){var f=b[d];".."==f?c.length>0&&c.pop():""!==f&&"."!=f&&c.push(f)}return"/"+c.join("/")}function f(b,c){if(a.substr(0,b.length)===b){for(var e=[],g=0;c>g;g++)e.push("..");var i=".";return e.length>0&&(i+="/"+e.join("/")),"/"==d&&(i+="/"),i+a.substr(b.length)}return(h=/^(.*)\//.exec(b))?f(h[1],++c):void 0}if(b=_undef(b,"").toLowerCase(),"data:"!=a.substr(0,5)&&(a=a.replace(/([^:])\/\//g,"$1/")),_inArray(b,["absolute","relative","domain"])<0)return a;if(c=c||location.protocol+"//"+location.host,d===undefined){var g=location.pathname.match(/^(\/.*)\//);d=g?g[1]:""}var h;if(h=/^(\w+:\/\/[^\/]*)/.exec(a)){if(h[1]!==c)return a}else if(/^\w+:/.test(a))return a;return/^\//.test(a)?a=c+e(a.substr(1)):/^\w+:\/\//.test(a)||(a=c+e(d+"/"+a)),"relative"===b?a=f(c+d,0).substr(2):"absolute"===b&&a.substr(0,c.length)===c&&(a=a.substr(c.length)),a}function _formatHtml(a,b,c,d,e){null==a&&(a=""),c=c||"",d=_undef(d,!1),e=_undef(e," ");var f="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+d}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,"

    "),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1
    $2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"©"),a=a.replace(/\u00AE/g,"®"),a=a.replace(/\u2003/g," "),a=a.replace(/\u3000/g," "),a=a.replace(/<[^>]+/g,function(a){return a.replace(/\s+/g," ")});var g={};b&&(_each(b,function(a,b){for(var c=a.split(","),d=0,e=c.length;e>d;d++)g[c[d]]=_toMap(b)}),g.script||(a=a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi,"")),g.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")));var h=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,i=[];return a=a.replace(h,function(a,h,j,k,l,m,n){var o=a,p=h||"",q=j||"",r=k.toLowerCase(),s=l||"",t=m?" "+m:"",u=n||"";if(b&&!g[r])return"";if(""===t&&_SINGLE_TAG_MAP[r]&&(t=" /"),_INLINE_TAG_MAP[r]&&(p&&(p=" "),u&&(u=" ")),_PRE_TAG_MAP[r]&&(q?u="\n":p="\n"),d&&"br"==r&&(u="\n"),_BLOCK_TAG_MAP[r]&&!_PRE_TAG_MAP[r])if(d){q&&i.length>0&&i[i.length-1]===r?i.pop():i.push(r),p="\n",u="\n";for(var v=0,w=q?i.length:i.length-1;w>v;v++)p+=e,q||(u+=e);t?i.pop():q||(u+=e)}else p=u="";if(""!==s){var x=_getAttrList(o);if("font"===r){var y={},z="";_each(x,function(a,b){"color"===a&&(y.color=b,delete x[a]),"size"===a&&(y["font-size"]=f[parseInt(b,10)-1]||"",delete x[a]),"face"===a&&(y["font-family"]=b,delete x[a]),"style"===a&&(z=b)}),z&&!/;$/.test(z)&&(z+=";"),_each(y,function(a,b){""!==b&&(/\s/.test(b)&&(b="'"+b+"'"),z+=a+":"+b+";")}),x.style=z}_each(x,function(a,d){if(_FILL_ATTR_MAP[a]&&(x[a]=a),_inArray(a,["src","href"])>=0&&(x[a]=_formatUrl(d,c)),(b&&"style"!==a&&!g[r]["*"]&&!g[r][a]||"body"===r&&"contenteditable"===a||/^kindeditor_\d+$/.test(a))&&delete x[a],"style"===a&&""!==d){var e=_getCssList(d);_each(e,function(a){!b||g[r].style||g[r]["."+a]||delete e[a]});var f="";_each(e,function(a,b){f+=a+":"+b+";"}),x.style=f}}),s="",_each(x,function(a,b){("style"!==a||""!==b)&&(b=b.replace(/"/g,"""),s+=" "+a+'="'+b+'"')})}return"font"===r&&(r="span"),p+"<"+q+r+s+t+">"+u}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/\n/g,'\n')+d}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/\n/g,"\n"),_trim(a)}function _clearMsWord(a,b){return a=a.replace(//gi,"").replace(//gi,"").replace(/]*>[\s\S]*?<\/style>/gi,"").replace(/]*>[\s\S]*?<\/script>/gi,"").replace(/]+>[\s\S]*?<\/w:[^>]+>/gi,"").replace(/]+>[\s\S]*?<\/o:[^>]+>/gi,"").replace(/[\s\S]*?<\/xml>/gi,"").replace(/<(?:table|td)[^>]*>/gi,function(a){return a.replace(/border-bottom:([#\w\s]+)/gi,"border:$1")}),_formatHtml(a,b)}function _mediaType(a){return/\.(rm|rmvb)(\?|$)/i.test(a)?"audio/x-pn-realaudio-plugin":/\.(swf|flv)(\?|$)/i.test(a)?"application/x-shockwave-flash":"video/x-ms-asf-plugin"}function _mediaClass(a){return/realaudio/i.test(a)?"ke-rm":/flash/i.test(a)?"ke-flash":"ke-media"}function _mediaAttrs(a){return _getAttrList(unescape(a))}function _mediaEmbed(a){var b="0&&(g+="width:"+c+"px;"),/\D/.test(d)?g+="height:"+d+";":d>0&&(g+="height:"+d+"px;");var h=''}function _tmpl(a,b){var c=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return b?c(b):c}function _contains(a,b){if(9==a.nodeType&&9!=b.nodeType)return!0;for(;b=b.parentNode;)if(b==a)return!0;return!1}function _getAttr(a,b){b=b.toLowerCase();var c=null;if(_GET_SET_ATTRIBUTE||"script"==a.nodeName.toLowerCase())try{c=a.getAttribute(b,2)}catch(d){c=a.getAttribute(b,1)}else{var e=a.ownerDocument.createElement("div");e.appendChild(a.cloneNode(!1));var f=_getAttrList(_unescape(e.innerHTML));b in f&&(c=f[b])}return"style"===b&&null!==c&&(c=_formatCss(c)),c}function _queryAll(a,b){function c(a){return"string"!=typeof a?a:a.replace(/([^\w\-])/g,"\\$1")}function d(a){return a.replace(/\\/g,"")}function e(a,b){return"*"===a||a.toLowerCase()===c(b.toLowerCase())}function f(a,b,c){var f=[],g=c.ownerDocument||c,h=g.getElementById(d(a));return h&&e(b,h.nodeName)&&_contains(c,h)&&f.push(h),f}function g(a,b,c){var f,g,h,i,j=c.ownerDocument||c,k=[];if(c.getElementsByClassName)for(f=c.getElementsByClassName(d(a)),g=0,h=f.length;h>g;g++)i=f[g],e(b,i.nodeName)&&k.push(i);else if(j.querySelectorAll)for(f=j.querySelectorAll(("#document"!==c.nodeName?c.nodeName+" ":"")+b+"."+a),g=0,h=f.length;h>g;g++)i=f[g],_contains(c,i)&&k.push(i);else for(f=c.getElementsByTagName(b),a=" "+a+" ",g=0,h=f.length;h>g;g++)if(i=f[g],1==i.nodeType){var l=i.className;l&&(" "+l+" ").indexOf(a)>-1&&k.push(i)}return k}function h(a,b,c){for(var f,g=[],h=c.ownerDocument||c,i=h.getElementsByName(d(a)),j=0,k=i.length;k>j;j++)f=i[j],e(b,f.nodeName)&&_contains(c,f)&&null!==f.getAttribute("name")&&g.push(f);return g}function i(a,b,d,e){for(var f,g=[],h=e.getElementsByTagName(d),i=0,j=h.length;j>i;i++)f=h[i],1==f.nodeType&&(null===b?null!==_getAttr(f,a)&&g.push(f):b===c(_getAttr(f,a))&&g.push(f));return g}function j(a,b){var c,d=[];c=/^((?:\\.|[^.#\s\[<>])+)/.exec(a);var e=c?c[1]:"*";if(c=/#((?:[\w\-]|\\.)+)$/.exec(a))d=f(c[1],e,b);else if(c=/\.((?:[\w\-]|\\.)+)$/.exec(a))d=g(c[1],e,b);else if(c=/\[((?:[\w\-]|\\.)+)\]/.exec(a))d=i(c[1].toLowerCase(),null,e,b);else if(c=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(a)){var j=c[1].toLowerCase(),k=c[2];d="id"===j?f(k,e,b):"class"===j?g(k,e,b):"name"===j?h(k,e,b):i(j,k,e,b)}else for(var l,m=b.getElementsByTagName(e),n=0,o=m.length;o>n;n++)l=m[n],1==l.nodeType&&d.push(l);return d}var k=a.split(",");if(k.length>1){var l=[];return _each(k,function(){_each(_queryAll(this,b),function(){_inArray(this,l)<0&&l.push(this)})}),l}b=b||document;for(var m,n=[],o=/((?:\\.|[^\s>])+|[\s>])/g;m=o.exec(a);)" "!==m[1]&&n.push(m[1]);var p=[];if(1==n.length)return j(n[0],b);var q,r,s,t,u,v,w,x,y,z,A=!1;for(v=0,lenth=n.length;v"!==q){if(v>0){for(r=[],w=0,y=p.length;y>w;w++)for(t=p[w],s=j(q,t),x=0,z=s.length;z>x;x++)u=s[x],A?t===u.parentNode&&r.push(u):r.push(u);p=r}else p=j(q,b);if(0===p.length)return[]}else A=!0;return p}function _query(a,b){var c=_queryAll(a,b);return c.length>0?c[0]:null}function _get(a){return K(a)[0]}function _getDoc(a){return a?a.ownerDocument||a.document||a:document}function _getWin(a){if(!a)return window;var b=_getDoc(a);return b.parentWindow||b.defaultView}function _setHtml(a,b){if(1==a.nodeType){var c=_getDoc(a);try{a.innerHTML=''+b;var d=c.getElementById("__kindeditor_temp_tag__");d.parentNode.removeChild(d)}catch(e){K(a).empty(),K("@"+b,c).each(function(){a.appendChild(this)})}}}function _hasClass(a,b){return _inString(b,a.className," ")}function _setAttr(a,b,c){_IE&&8>_V&&"class"==b.toLowerCase()&&(b="className"),a.setAttribute(b,""+c)}function _removeAttr(a,b){_IE&&8>_V&&"class"==b.toLowerCase()&&(b="className"),_setAttr(a,b,""),a.removeAttribute(b)}function _getNodeName(a){return a&&a.nodeName?a.nodeName.toLowerCase():""}function _computedCss(a,b){var c=_getWin(a),d=_toCamel(b),e="";if(c.getComputedStyle){var f=c.getComputedStyle(a,null);e=f[d]||f.getPropertyValue(b)||a.style[d]}else a.currentStyle&&(e=a.currentStyle[d]||a.style[d]);return e}function _hasVal(a){return!!_VALUE_TAG_MAP[_getNodeName(a)]}function _docElement(a){return a=a||document,_QUIRKS?a.body:a.documentElement}function _docHeight(a){var b=_docElement(a);return Math.max(b.scrollHeight,b.clientHeight)}function _docWidth(a){var b=_docElement(a);return Math.max(b.scrollWidth,b.clientWidth)}function _getScrollPos(a){a=a||document;var b,c;return _IE||_NEWIE||_OPERA?(b=_docElement(a).scrollLeft,c=_docElement(a).scrollTop):(b=_getWin(a).scrollX,c=_getWin(a).scrollY),{x:b,y:c}}function KNode(a){this.init(a)}function _updateCollapsed(a){return a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset,a}function _copyAndDelete(a,b,c){function d(d,e,f){var g,i=d.nodeValue.length;if(b){var j=d.cloneNode(!0);g=e>0?j.splitText(e):j,i>f&&g.splitText(f-e)}if(c){var k=d;if(e>0&&(k=d.splitText(e),a.setStart(d,e)),i>f){var l=k.splitText(f-e);a.setEnd(l,0)}h.push(k)}return g}function e(){c&&a.up().collapse(!0);for(var b=0,d=h.length;d>b;b++){var e=h[b];e.parentNode&&e.parentNode.removeChild(e)}}function f(e,n){for(var o,p=e.firstChild;p;){var q=new KRange(g).selectNode(p);if(j=q.compareBoundaryPoints(_START_TO_END,a),j>=0&&0>=k&&(k=q.compareBoundaryPoints(_START_TO_START,a)),k>=0&&0>=l&&(l=q.compareBoundaryPoints(_END_TO_END,a)),l>=0&&0>=m&&(m=q.compareBoundaryPoints(_END_TO_START,a)),m>=0)return!1;if(o=p.nextSibling,j>0)if(1==p.nodeType)if(k>=0&&0>=l)b&&n.appendChild(p.cloneNode(!0)),c&&h.push(p);else{var r;if(b&&(r=p.cloneNode(!1),n.appendChild(r)),f(p,r)===!1)return!1}else if(3==p.nodeType){var s;if(s=p==i.startContainer?d(p,i.startOffset,p.nodeValue.length):p==i.endContainer?d(p,0,i.endOffset):d(p,0,p.nodeValue.length),b)try{n.appendChild(s)}catch(t){}}p=o}}var g=a.doc,h=[],i=a.cloneRange().down(),j=-1,k=-1,l=-1,m=-1,n=a.commonAncestor(),o=g.createDocumentFragment();if(3==n.nodeType){var p=d(n,a.startOffset,a.endOffset);return b&&o.appendChild(p),e(),b?o:a}f(n,o),c&&a.up().collapse(!0);for(var q=0,r=h.length;r>q;q++){var s=h[q];s.parentNode&&s.parentNode.removeChild(s)}return b?o:a}function _moveToElementText(a,b){for(var c=b;c;){var d=K(c);if("marquee"==d.name||"select"==d.name)return;c=c.parentNode}try{a.moveToElementText(b)}catch(e){}}function _getStartEnd(a,b){var c=a.parentElement().ownerDocument,d=a.duplicate();d.collapse(b);var e=d.parentElement(),f=e.childNodes;if(0===f.length)return{node:e.parentNode,offset:K(e).index()};var g=c,h=0,i=-1,j=a.duplicate();_moveToElementText(j,e);for(var k=0,l=f.length;l>k;k++){var m=f[k];if(i=j.compareEndPoints("StartToStart",d),0===i)return{node:m.parentNode,offset:k};if(1==m.nodeType){var n,o=a.duplicate(),p=K(m),q=m;p.isControl()&&(n=c.createElement("span"),p.after(n),q=n,h+=p.text().replace(/\r\n|\n|\r/g,"").length),_moveToElementText(o,q),j.setEndPoint("StartToEnd",o),i>0?h+=o.text.replace(/\r\n|\n|\r/g,"").length:h=0,n&&K(n).remove()}else 3==m.nodeType&&(j.moveStart("character",m.nodeValue.length),h+=m.nodeValue.length);0>i&&(g=m)}if(0>i&&1==g.nodeType)return{node:e,offset:K(e.lastChild).index()+1};if(i>0)for(;g.nextSibling&&1==g.nodeType;)g=g.nextSibling;if(j=a.duplicate(),_moveToElementText(j,e),j.setEndPoint("StartToEnd",d),h-=j.text.replace(/\r\n|\n|\r/g,"").length,i>0&&3==g.nodeType)for(var r=g.previousSibling;r&&3==r.nodeType;)h-=r.nodeValue.length,r=r.previousSibling;return{node:g,offset:h}}function _getEndRange(a,b){var c=a.ownerDocument||a,d=c.body.createTextRange();if(c==a)return d.collapse(!0),d;if(1==a.nodeType&&a.childNodes.length>0){var e,f,g=a.childNodes;if(0===b?(f=g[0],e=!0):(f=g[b-1],e=!1),!f)return d;if("head"===K(f).name)return 1===b&&(e=!0),2===b&&(e=!1),d.collapse(e),d;if(1==f.nodeType){var h,i=K(f);return i.isControl()&&(h=c.createElement("span"),e?i.before(h):i.after(h),f=h),_moveToElementText(d,f),d.collapse(e),h&&K(h).remove(),d}a=f,b=e?0:f.nodeValue.length}var j=c.createElement("span");return K(a).before(j),_moveToElementText(d,j),d.moveStart("character",b),K(j).remove(),d}function _toRange(a){function b(a){"tr"==K(a.node).name&&(a.node=a.node.cells[a.offset],a.offset=0)}var c,d;if(_IERANGE){if(a.item)return c=_getDoc(a.item(0)),d=new KRange(c),d.selectNode(a.item(0)),d;c=a.parentElement().ownerDocument;var e=_getStartEnd(a,!0),f=_getStartEnd(a,!1);return b(e),b(f),d=new KRange(c),d.setStart(e.node,e.offset),d.setEnd(f.node,f.offset),d}var g=a.startContainer;return c=g.ownerDocument||g,d=new KRange(c),d.setStart(g,a.startOffset),d.setEnd(a.endContainer,a.endOffset),d}function KRange(a){this.init(a)}function _range(a){return a.nodeName?new KRange(a):a.constructor===KRange?a:_toRange(a)}function _nativeCommand(a,b,c){try{a.execCommand(b,!1,c)}catch(d){}}function _nativeCommandValue(a,b){var c="";try{c=a.queryCommandValue(b)}catch(d){}return"string"!=typeof c&&(c=""),c}function _getSel(a){var b=_getWin(a);return _IERANGE?a.selection:b.getSelection()}function _getRng(a){var b,c=_getSel(a);try{b=c.rangeCount>0?c.getRangeAt(0):c.createRange()}catch(d){}return!_IERANGE||b&&(b.item||b.parentElement().ownerDocument===a)?b:null}function _singleKeyMap(a){var b,c,d={};return _each(a,function(a,e){b=a.split(",");for(var f=0,g=b.length;g>f;f++)c=b[f],d[c]=e}),d}function _hasAttrOrCss(a,b){return _hasAttrOrCssByKey(a,b,"*")||_hasAttrOrCssByKey(a,b)}function _hasAttrOrCssByKey(a,b,c){if(c=c||a.name,1!==a.type)return!1;var d=_singleKeyMap(b);if(!d[c])return!1;for(var e=d[c].split(","),f=0,g=e.length;g>f;f++){var h=e[f];if("*"===h)return!0;var i=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(h),j=i[1]?"css":"attr";h=i[2];var k=i[3]||"";if(""===k&&""!==a[j](h))return!0;if(""!==k&&a[j](h)===k)return!0}return!1}function _removeAttrOrCss(a,b){1==a.type&&(_removeAttrOrCssByKey(a,b,"*"),_removeAttrOrCssByKey(a,b))}function _removeAttrOrCssByKey(a,b,c){if(c=c||a.name,1===a.type){var d=_singleKeyMap(b);if(d[c]){for(var e=d[c].split(","),f=!1,g=0,h=e.length;h>g;g++){var i=e[g];if("*"===i){f=!0;break}var j=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(i);i=j[2],j[1]?(i=_toCamel(i),a[0].style[i]&&(a[0].style[i]="")):a.removeAttr(i)}f&&a.remove(!0)}}}function _getInnerNode(a){for(var b=a;b.first();)b=b.first();return b}function _isEmptyNode(a){return 1!=a.type||a.isSingle()?!1:""===a.html().replace(/<[^>]+>/g,"")}function _mergeWrapper(a,b){a=a.clone(!0);for(var c=_getInnerNode(a),d=a,e=!1;b;){for(;d;)d.name===b.name&&(_mergeAttrs(d,b.attr(),b.css()),e=!0),d=d.first();e||c.append(b.clone(!1)),e=!1,b=b.first()}return a}function _wrapNode(a,b){if(b=b.clone(!0),3==a.type)return _getInnerNode(b).append(a.clone(!1)),a.replaceWith(b),b;for(var c,d=a;(c=a.first())&&1==c.children().length;)a=c;c=a.first();for(var e=a.doc.createDocumentFragment();c;)e.appendChild(c[0]),c=c.next();return b=_mergeWrapper(d,b),e.firstChild&&_getInnerNode(b).append(e),d.replaceWith(b),b}function _mergeAttrs(a,b,c){_each(b,function(b,c){"style"!==b&&a.attr(b,c)}),_each(c,function(b,c){a.css(b,c)})}function _inPreElement(a){for(;a&&"body"!=a.name;){if(_PRE_TAG_MAP[a.name]||"div"==a.name&&a.hasClass("ke-script"))return!0;a=a.parent()}return!1}function KCmd(a){this.init(a)}function _cmd(a){if(a.nodeName){var b=_getDoc(a);a=_range(b).selectNodeContents(b.body).collapse(!1)}return new KCmd(a)}function _drag(a){var b=a.moveEl,c=a.moveFn,d=a.clickEl||b,e=a.beforeDrag,f=a.iframeFix===undefined?!0:a.iframeFix,g=[document];f&&K("iframe").each(function(){var a=_formatUrl(this.src||"","absolute");if(!/^https?:\/\//.test(a)){var b;try{b=_iframeDoc(this)}catch(c){}if(b){var d=K(this).pos();K(b).data("pos-x",d.x),K(b).data("pos-y",d.y),g.push(b)}}}),d.mousedown(function(a){function f(a){a.preventDefault();var b=K(_getDoc(a.target)),e=_round((b.data("pos-x")||0)+a.pageX-o),f=_round((b.data("pos-y")||0)+a.pageY-p);c.call(d,k,l,m,n,e,f)}function h(a){a.preventDefault()}function i(a){a.preventDefault(),K(g).unbind("mousemove",f).unbind("mouseup",i).unbind("selectstart",h),j.releaseCapture&&j.releaseCapture()}if(0===a.button||1===a.button){a.stopPropagation();var j=d.get(),k=_removeUnit(b.css("left")),l=_removeUnit(b.css("top")),m=b.width(),n=b.height(),o=a.pageX,p=a.pageY;e&&e(),K(g).mousemove(f).mouseup(i).bind("selectstart",h),j.setCapture&&j.setCapture()}})}function KWidget(a){this.init(a)}function _widget(a){return new KWidget(a)}function _iframeDoc(a){return a=_get(a),a.contentDocument||a.contentWindow.document}function _getInitHtml(a,b,c,d){var e=[""===_direction?"":'','',""];return _isArray(c)||(c=[c]),_each(c,function(a,b){b&&e.push('')}),d&&e.push(""),e.push(""),e.join("\n")}function _elementVal(a,b){if(a.hasVal()){if(b===undefined){var c=a.val();return c=c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,"")}return a.val(b)}return a.html(b)}function KEdit(a){this.init(a)}function _edit(a){return new KEdit(a)}function _selectToolbar(a,b){var c=this,d=c.get(a);if(d){if(d.hasClass("ke-disabled"))return;b(d)}}function KToolbar(a){this.init(a)}function _toolbar(a){return new KToolbar(a)}function KMenu(a){this.init(a)}function _menu(a){return new KMenu(a)}function KColorPicker(a){this.init(a)}function _colorpicker(a){return new KColorPicker(a)}function KUploadButton(a){this.init(a)}function _uploadbutton(a){return new KUploadButton(a)}function _createButton(a){a=a||{};var b=a.name||"",c=K(''),d=K('');return a.click&&d.click(a.click),c.append(d),c}function KDialog(a){this.init(a)}function _dialog(a){return new KDialog(a)}function _tabs(a){var b=_widget(a),c=b.remove,d=a.afterSelect,e=b.div,f=[];e.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",function(a){a.preventDefault()});var g=K('
      ');return e.append(g),b.add=function(a){var b=K('
    • '+a.title+"
    • ");b.data("tab",a),f.push(b),g.append(b)},b.selectedIndex=0,b.select=function(a){b.selectedIndex=a,_each(f,function(c,d){d.unbind(),c===a?(d.addClass("ke-tabs-li-selected"),K(d.data("tab").panel).show("")):(d.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function(){K(this).addClass("ke-tabs-li-on")}).mouseout(function(){K(this).removeClass("ke-tabs-li-on")}).click(function(){b.select(c)}),K(d.data("tab").panel).hide())}),d&&d.call(b,a)},b.remove=function(){_each(f,function(){this.remove()}),g.remove(),c.call(b)},b}function _loadScript(a,b){var c=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),d=document.createElement("script");c.appendChild(d),d.src=a,d.charset="utf-8",d.onload=d.onreadystatechange=function(){this.readyState&&"loaded"!==this.readyState||(b&&b(),d.onload=d.onreadystatechange=null,c.removeChild(d))}}function _chopQuery(a){var b=a.indexOf("?");return b>0?a.substr(0,b):a}function _loadStyle(a){for(var b=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),c=document.createElement("link"),d=_chopQuery(_formatUrl(a,"absolute")),e=K('link[rel="stylesheet"]',b),f=0,g=e.length;g>f;f++)if(_chopQuery(_formatUrl(e[f].href,"absolute"))===d)return;b.appendChild(c),c.href=a,c.rel="stylesheet"}function _ajax(a,b,c,d,e){c=c||"GET",e=e||"json";var f=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");if(f.open(c,a,!0),f.onreadystatechange=function(){if(4==f.readyState&&200==f.status&&b){var a=_trim(f.responseText);"json"==e&&(a=_json(a)),b(a)}},"POST"==c){var g=[];_each(d,function(a,b){g.push(encodeURIComponent(a)+"="+encodeURIComponent(b))});try{f.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(h){}f.send(g.join("&"))}else f.send(null)}function _plugin(a,b){return a===undefined?_plugins:b?void(_plugins[a]=b):_plugins[a]}function _parseLangKey(a){var b,c="core";return(b=/^(\w+)\.(\w+)$/.exec(a))&&(c=b[1],a=b[2]),{ns:c,key:a}}function _lang(a,b){if(b=b===undefined?K.options.langType:b,"string"==typeof a){if(!_language[b])return"no language";var c=a.length-1;if("."===a.substr(c))return _language[b][a.substr(0,c)];var d=_parseLangKey(a);return _language[b][d.ns][d.key]}_each(a,function(a,c){var d=_parseLangKey(a);_language[b]||(_language[b]={}),_language[b][d.ns]||(_language[b][d.ns]={}),_language[b][d.ns][d.key]=c})}function _getImageFromRange(a,b){if(!a.collapsed){a=a.cloneRange().up();var c=a.startContainer,d=a.startOffset;if(_WEBKIT||a.isControl()){var e=K(c.childNodes[d]);if(e&&"img"==e.name)return b(e)?e:void 0}}}function _bindContextmenuEvent(){var a=this,b=a.edit.doc;K(b).contextmenu(function(b){if(a.menu&&a.hideMenu(),!a.useContextmenu)return void b.preventDefault();if(0!==a._contextmenus.length){var c=0,d=[];for(_each(a._contextmenus,function(){return"-"==this.title?void d.push(this):void(this.cond&&this.cond()&&(d.push(this),this.width&&this.width>c&&(c=this.width)))});d.length>0&&"-"==d[0].title;)d.shift();for(;d.length>0&&"-"==d[d.length-1].title;)d.pop();var e=null;if(_each(d,function(a){"-"==this.title&&"-"==e.title&&delete d[a],e=this}),d.length>0){b.preventDefault();var f=K(a.edit.iframe).pos(),g=_menu({x:f.x+b.clientX,y:f.y+b.clientY,width:c,css:{visibility:"hidden"},shadowMode:a.shadowMode});_each(d,function(){this.title&&g.addItem(this)});var h=_docElement(g.doc),i=g.div.height();b.clientY+i>=h.clientHeight-100&&g.pos(g.x,_removeUnit(g.y)-i),g.div.css("visibility","visible"),a.menu=g}}})}function _bindNewlineEvent(){function a(a){for(var b=K(a.commonAncestor());b&&(1!=b.type||b.isStyle());)b=b.parent();return b.name}var b=this,c=b.edit.doc,d=b.newlineTag;if(!(_IE&&"br"!==d||_GECKO&&3>_V&&"p"!==d||_OPERA&&9>_V)){var e=_toMap("h1,h2,h3,h4,h5,h6,pre,li"),f=_toMap("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");K(c).keydown(function(g){if(!(13!=g.which||g.shiftKey||g.ctrlKey||g.altKey)){b.cmd.selection();var h=a(b.cmd.range);if("marquee"!=h&&"select"!=h)return"br"!==d||e[h]?void(f[h]||_nativeCommand(c,"formatblock","

      ")):(g.preventDefault(),void b.insertHtml("
      "+(_IE&&9>_V?"":"​")))}}),K(c).keyup(function(e){if(!(13!=e.which||e.shiftKey||e.ctrlKey||e.altKey)&&"br"!=d){if(_GECKO){var g=b.cmd.commonAncestor("p"),h=b.cmd.commonAncestor("a");return void(h&&""==h.text()&&(h.remove(!0),b.cmd.range.selectNodeContents(g[0]).collapse(!0),b.cmd.select()))}b.cmd.selection();var i=a(b.cmd.range);if("marquee"!=i&&"select"!=i){f[i]||_nativeCommand(c,"formatblock","

      ");var j=b.cmd.commonAncestor("div");if(j){for(var k=K("

      "),l=j[0].firstChild;l;){var m=l.nextSibling;k.append(l),l=m}j.before(k),j.remove(),b.cmd.range.selectNodeContents(k[0]),b.cmd.select()}}}})}}function _bindTabEvent(){var a=this,b=a.edit.doc;K(b).keydown(function(c){if(9==c.which){if(c.preventDefault(),a.afterTab)return void a.afterTab.call(a,c);var d=a.cmd,e=d.range;e.shrink(),e.collapsed&&1==e.startContainer.nodeType&&(e.insertNode(K("@ ",b)[0]),d.select()),a.insertHtml("    ")}})}function _bindFocusEvent(){var a=this;K(a.edit.textarea[0],a.edit.win).focus(function(b){a.afterFocus&&a.afterFocus.call(a,b)}).blur(function(b){a.afterBlur&&a.afterBlur.call(a,b)})}function _removeBookmarkTag(a){return _trim(a.replace(/]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/gi,""))}function _removeTempTag(a){return a.replace(/]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/gi,"")}function _addBookmarkToStack(a,b){if(0===a.length)return void a.push(b);var c=a[a.length-1];_removeBookmarkTag(b.html)!==_removeBookmarkTag(c.html)&&a.push(b)}function _undoToRedo(a,b){var c,d,e=this,f=e.edit,g=f.doc.body;if(0===a.length)return e;f.designMode?(c=e.cmd.range,d=c.createBookmark(!0),d.html=g.innerHTML):d={html:g.innerHTML},_addBookmarkToStack(b,d); -var h=a.pop();return _removeBookmarkTag(d.html)===_removeBookmarkTag(h.html)&&a.length>0&&(h=a.pop()),f.designMode?(f.html(h.html),h.start&&(c.moveToBookmark(h),e.select())):K(g).html(_removeBookmarkTag(h.html)),e}function KEditor(a){function b(a,b){KEditor.prototype[a]===undefined&&(c[a]=b),c.options[a]=b}var c=this;c.options={},_each(a,function(c){b(c,a[c])}),_each(K.options,function(a,d){c[a]===undefined&&b(a,d)});var d=K(c.srcElement||"').css("width","100%"),c.tabIndex=isNaN(parseInt(a.tabIndex,10))?c.srcElement.attr("tabindex"):parseInt(a.tabIndex,10),c.iframe.attr("tabindex",c.tabIndex),c.textarea.attr("tabindex",c.tabIndex),c.width&&c.setWidth(c.width),c.height&&c.setHeight(c.height),c.designMode?c.textarea.hide():c.iframe.hide(),h&&c.iframe.bind("load",function(){c.iframe.unbind("load"),_IE?b():setTimeout(b,0)}),c.div.append(c.iframe),c.div.append(c.textarea),c.srcElement.hide(),!h&&b()},setWidth:function(a){var b=this;return a=_addUnit(a),b.width=a,b.div.css("width",a),b},setHeight:function(a){var b=this;return a=_addUnit(a),b.height=a,b.div.css("height",a),b.iframe.css("height",a),(_IE&&8>_V||_QUIRKS)&&(a=_addUnit(_removeUnit(a)-2)),b.textarea.css("height",a),b},remove:function(){var a=this,b=a.doc;K(b.body).unbind(),K(b).unbind(),K(a.win).unbind(),a._mousedownHandler&&K(document).unbind("mousedown",a._mousedownHandler),_elementVal(a.srcElement,a.html()),a.srcElement.show(),a.iframe.unbind(),a.textarea.unbind(),KEdit.parent.remove.call(a)},html:function(a,b){var c=this,d=c.doc;if(c.designMode){var e=d.body;return a===undefined?(a=b?""+e.parentNode.innerHTML+"":e.innerHTML,c.beforeGetHtml&&(a=c.beforeGetHtml(a)),_GECKO&&"
      "==a&&(a=""),a):(c.beforeSetHtml&&(a=c.beforeSetHtml(a)),_IE&&_V>=9&&(a=a.replace(/(<.*?checked=")checked(".*>)/gi,"$1$2")),K(e).html(a),c.afterSetHtml&&c.afterSetHtml(),c)}return a===undefined?c.textarea.val():(c.textarea.val(a),c)},design:function(a){var b,c=this;if(a===undefined?!c.designMode:a){if(!c.designMode){b=c.html(),c.designMode=!0,c.textarea.hide(),c.html(b);var d=c.iframe,e=_removeUnit(c.height);d.height(e-2),d.show(),setTimeout(function(){d.height(e)},0)}}else c.designMode&&(b=c.html(),c.designMode=!1,c.html(b),c.iframe.hide(),c.textarea.show());return c.focus()},focus:function(){var a=this;return a.designMode?a.win.focus():a.textarea[0].focus(),a},blur:function(){var a=this;if(_IE){var b=K('',a.div);a.div.append(b),b[0].focus(),b.remove()}else a.designMode?a.win.blur():a.textarea[0].blur();return a},afterChange:function(a){function b(b){setTimeout(function(){a(b)},1)}var c=this,d=c.doc,e=d.body;return K(d).keyup(function(b){b.ctrlKey||b.altKey||!_CHANGE_KEY_MAP[b.which]||a(b)}),K(d).mouseup(a).contextmenu(a),K(c.win).blur(a),K(e).bind("paste",b),K(e).bind("cut",b),c}}),K.EditClass=KEdit,K.edit=_edit,K.iframeDoc=_iframeDoc,_extend(KToolbar,KWidget,{init:function(a){function b(a){var b=K(a);return b.hasClass("ke-outline")?b:b.hasClass("ke-toolbar-icon")?b.parent():void 0}function c(a,c){var d=b(a.target);if(d){if(d.hasClass("ke-disabled"))return;if(d.hasClass("ke-selected"))return;d[c]("ke-on")}}var d=this;KToolbar.parent.init.call(d,a),d.disableMode=_undef(a.disableMode,!1),d.noDisableItemMap=_toMap(_undef(a.noDisableItems,[])),d._itemMap={},d.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(a){a.preventDefault()}).attr("unselectable","on"),d.div.mouseover(function(a){c(a,"addClass")}).mouseout(function(a){c(a,"removeClass")}).click(function(a){var c=b(a.target);if(c){if(c.hasClass("ke-disabled"))return;d.options.click.call(this,a,c.attr("data-name"))}})},get:function(a){return this._itemMap[a]?this._itemMap[a]:this._itemMap[a]=K("span.ke-icon-"+a,this.div).parent()},select:function(a){return _selectToolbar.call(this,a,function(a){a.addClass("ke-selected")}),self},unselect:function(a){return _selectToolbar.call(this,a,function(a){a.removeClass("ke-selected").removeClass("ke-on")}),self},enable:function(a){var b=this,c=a.get?a:b.get(a);return c&&(c.removeClass("ke-disabled"),c.opacity(1)),b},disable:function(a){var b=this,c=a.get?a:b.get(a);return c&&(c.removeClass("ke-selected").addClass("ke-disabled"),c.opacity(.5)),b},disableAll:function(a,b){var c=this,d=c.noDisableItemMap;return b&&(d=_toMap(b)),(a===undefined?!c.disableMode:a)?(K("span.ke-outline",c.div).each(function(){var a=K(this),b=a[0].getAttribute("data-name",2);d[b]||c.disable(a)}),c.disableMode=!0):(K("span.ke-outline",c.div).each(function(){var a=K(this),b=a[0].getAttribute("data-name",2);d[b]||c.enable(a)}),c.disableMode=!1),c}}),K.ToolbarClass=KToolbar,K.toolbar=_toolbar,_extend(KMenu,KWidget,{init:function(a){var b=this;a.z=a.z||811213,KMenu.parent.init.call(b,a),b.centerLineMode=_undef(a.centerLineMode,!0),b.div.addClass("ke-menu").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on")},addItem:function(a){var b=this;if("-"===a.title)return void b.div.append(K('
      '));var c=K('
      '),d=K('
      '),e=K('
      '),f=_addUnit(a.height),g=_undef(a.iconClass,"");b.div.append(c),f&&(c.css("height",f),e.css("line-height",f));var h;return b.centerLineMode&&(h=K('
      '),f&&h.css("height",f)),c.mouseover(function(){K(this).addClass("ke-menu-item-on"),h&&h.addClass("ke-menu-item-center-on")}).mouseout(function(){K(this).removeClass("ke-menu-item-on"),h&&h.removeClass("ke-menu-item-center-on")}).click(function(b){a.click.call(K(this)),b.stopPropagation()}).append(d),h&&c.append(h),c.append(e),a.checked&&(g="ke-icon-checked"),""!==g&&d.html(''),e.html(a.title),b},remove:function(){var a=this;return a.options.beforeRemove&&a.options.beforeRemove.call(a),K(".ke-menu-item",a.div[0]).unbind(),KMenu.parent.remove.call(a),a}}),K.MenuClass=KMenu,K.menu=_menu,_extend(KColorPicker,KWidget,{init:function(a){var b=this;a.z=a.z||811213,KColorPicker.parent.init.call(b,a);var c=a.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];b.selectedColor=(a.selectedColor||"").toLowerCase(),b._cells=[],b.div.addClass("ke-colorpicker").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on");var d=b.doc.createElement("table");b.div.append(d),d.className="ke-colorpicker-table",d.cellPadding=0,d.cellSpacing=0,d.border=0;var e=d.insertRow(0),f=e.insertCell(0);f.colSpan=c[0].length,b._addAttr(f,"","ke-colorpicker-cell-top");for(var g=0;g
      ').css("background-color",b)):a.html(d.options.noColor),K(a).attr("unselectable","on"),d._cells.push(a)},remove:function(){var a=this;return _each(a._cells,function(){this.unbind()}),KColorPicker.parent.remove.call(a),a}}),K.ColorPickerClass=KColorPicker,K.colorpicker=_colorpicker,_extend(KUploadButton,{init:function(a){var b=this,c=K(a.button),d=a.fieldName||"file",e=a.url||"",f=c.val(),g=a.extraParams||{},h=c[0].className||"",i=a.target||"kindeditor_upload_iframe_"+(new Date).getTime();a.afterError=a.afterError||function(a){alert(a)};var j=[];for(var k in g)j.push('');var l=['
      ',a.target?"":'',a.form?'
      ':'
      ','',j.join(""),'',"",'',a.form?"
      ":"","
      "].join(""),m=K(l,c.doc);c.hide(),c.before(m),b.div=m,b.button=c,b.iframe=a.target?K('iframe[name="'+i+'"]'):K("iframe",m),b.form=a.form?K(a.form):K("form",m),b.fileBox=K(".ke-upload-file",m);var n=a.width||K(".ke-button-common",m).width();K(".ke-upload-area",m).width(n),b.options=a},submit:function(){var a=this,b=a.iframe;return b.bind("load",function(){b.unbind();var c=document.createElement("form");a.fileBox.before(c),K(c).append(a.fileBox),c.reset(),K(c).remove(!0);var d,e=K.iframeDoc(b),f=e.getElementsByTagName("pre")[0],g="";g=f?f.innerHTML:e.body.innerHTML,g=_unescape(g),b[0].src="javascript:false";try{d=K.json(g)}catch(h){a.options.afterError.call(a,""+e.body.parentNode.innerHTML+"")}d&&a.options.afterUpload.call(a,d)}),a.form[0].submit(),a},remove:function(){var a=this;return a.fileBox&&a.fileBox.unbind(),a.iframe.remove(),a.div.remove(),a.button.show(),a}}),K.UploadButtonClass=KUploadButton,K.uploadbutton=_uploadbutton,_extend(KDialog,KWidget,{init:function(a){var b=this,c=_undef(a.shadowMode,!0);a.z=a.z||811213,a.shadowMode=!1,a.autoScroll=_undef(a.autoScroll,!0),KDialog.parent.init.call(b,a);var d=a.title,e=K(a.body,b.doc),f=a.previewBtn,g=a.yesBtn,h=a.noBtn,i=a.closeBtn,j=_undef(a.showMask,!0);b.div.addClass("ke-dialog").bind("click,mousedown",function(a){a.stopPropagation()});var k=K('
      ').appendTo(b.div);_IE&&7>_V?b.iframeMask=K('').appendTo(b.div):c&&K('
      ').appendTo(b.div);var l=K('
      ');k.append(l),l.html(d),b.closeIcon=K('').click(i.click),l.append(b.closeIcon),b.draggable({clickEl:l,beforeDrag:a.beforeDrag});var m=K('
      ');k.append(m),m.append(e);var n=K('');if((f||g||h)&&k.append(n),_each([{btn:f,name:"preview"},{btn:g,name:"yes"},{btn:h,name:"no"}],function(){if(this.btn){var a=_createButton(this.btn);a.addClass("ke-dialog-"+this.name),n.append(a)}}),b.height&&m.height(_removeUnit(b.height)-l.height()-n.height()),b.div.width(b.div.width()),b.div.height(b.div.height()),b.mask=null,j){var o=_docElement(b.doc),p=Math.max(o.scrollWidth,o.clientWidth),q=Math.max(o.scrollHeight,o.clientHeight);b.mask=_widget({x:0,y:0,z:b.z-1,cls:"ke-dialog-mask",width:p,height:q})}b.autoPos(b.div.width(),b.div.height()),b.footerDiv=n,b.bodyDiv=m,b.headerDiv=l,b.isLoading=!1},setMaskIndex:function(a){var b=this;b.mask.div.css("z-index",a)},showLoading:function(a){a=_undef(a,"");var b=this,c=b.bodyDiv;return b.loading=K('
      '+a+"
      ").width(c.width()).height(c.height()).css("top",b.headerDiv.height()+"px"),c.css("visibility","hidden").after(b.loading),b.isLoading=!0,b},hideLoading:function(){return this.loading&&this.loading.remove(),this.bodyDiv.css("visibility","visible"),this.isLoading=!1,this},remove:function(){var a=this;return a.options.beforeRemove&&a.options.beforeRemove.call(a),a.mask&&a.mask.remove(),a.iframeMask&&a.iframeMask.remove(),a.closeIcon.unbind(),K("input",a.div).unbind(),K("button",a.div).unbind(),a.footerDiv.unbind(),a.bodyDiv.unbind(),a.headerDiv.unbind(),K("iframe",a.div).each(function(){K(this).remove()}),KDialog.parent.remove.call(a),a}}),K.DialogClass=KDialog,K.dialog=_dialog,K.tabs=_tabs,K.loadScript=_loadScript,K.loadStyle=_loadStyle,K.ajax=_ajax;var _plugins={},_language={};KEditor.prototype={lang:function(a){return _lang(a,this.langType)},loadPlugin:function(a,b){var c=this,d=this._pluginStatus;return d||(d=this._pluginStatus={}),_plugins[a]?_isFunction(_plugins[a])?(d[a]||(_plugins[a].call(c,KindEditor),d[a]="inited"),b&&b.call(c),c):(setTimeout(function(){c.loadPlugin(a,b)},100),c):(_plugins[a]="loading",_loadScript(c.pluginsPath+a+"/"+a+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){setTimeout(function(){_plugins[a]&&c.loadPlugin(a,b)},0)}),c)},handler:function(a,b){var c=this;return c._handlers[a]||(c._handlers[a]=[]),_isFunction(b)?(c._handlers[a].push(b),c):(_each(c._handlers[a],function(){b=this.call(c,b)}),b)},clickToolbar:function(a,b){var c=this,d="clickToolbar"+a;return b===undefined?c._handlers[d]?c.handler(d):(c.loadPlugin(a,function(){c.handler(d)}),c):c.handler(d,b)},updateState:function(){var a=this;return _each("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),function(b,c){a.cmd.state(c)?a.toolbar.select(c):a.toolbar.unselect(c)}),a},addContextmenu:function(a){return this._contextmenus.push(a),this},afterCreate:function(a){return this.handler("afterCreate",a)},beforeRemove:function(a){return this.handler("beforeRemove",a)},beforeGetHtml:function(a){return this.handler("beforeGetHtml",a)},beforeSetHtml:function(a){return this.handler("beforeSetHtml",a)},afterSetHtml:function(a){return this.handler("afterSetHtml",a)},create:function(){function a(){return 0===i.height()?void setTimeout(a,100):void b.resize(d,e,!1)}var b=this,c=b.fullscreenMode;if(b.isCreated)return b;if(b.srcElement.data("kindeditor"))return b;b.srcElement.data("kindeditor","true"),_docElement().style.overflow=c?"hidden":"";var d=c?_docElement().clientWidth+"px":b.width,e=c?_docElement().clientHeight+"px":b.height;(_IE&&8>_V||_QUIRKS)&&(e=_addUnit(_removeUnit(e)+2));var f=b.container=K(b.layout);c?K(document.body).append(f):b.srcElement.before(f);var g=K(".toolbar",f),h=K(".edit",f),i=b.statusbar=K(".statusbar",f);f.removeClass("container").addClass("ke-container ke-container-"+b.themeType).css("width",d),c?(f.css({position:"absolute",left:0,top:0,"z-index":811211}),_GECKO||(b._scrollPos=_getScrollPos()),window.scrollTo(0,0),K(document.body).css({height:"1px",overflow:"hidden"}),K(document.body.parentNode).css("overflow","hidden"),b._fullscreenExecuted=!0):(b._fullscreenExecuted&&(K(document.body).css({height:"",overflow:""}),K(document.body.parentNode).css("overflow","")),b._scrollPos&&window.scrollTo(b._scrollPos.x,b._scrollPos.y));var j=[];K.each(b.items,function(a,c){"|"==c?j.push(''):"/"==c?j.push('
      '):(j.push(''),j.push(''))});var k=b.toolbar=_toolbar({src:g,html:j.join(""),noDisableItems:b.noDisableItems,click:function(a,c){if(a.stop(),b.menu){var d=b.menu.name;if(b.hideMenu(),d===c)return}b.clickToolbar(c)}}),l=_removeUnit(e)-k.div.height(),m=b.edit=_edit({height:l>0&&_removeUnit(e)>b.minHeight?l:b.minHeight,src:h,srcElement:b.srcElement,designMode:b.designMode,themesPath:b.themesPath,bodyClass:b.bodyClass,cssPath:b.cssPath,cssData:b.cssData,beforeGetHtml:function(a){return a=b.beforeGetHtml(a),a=_removeBookmarkTag(_removeTempTag(a)),_formatHtml(a,b.filterMode?b.htmlTags:null,b.urlType,b.wellFormatMode,b.indentChar)},beforeSetHtml:function(a){return a=_formatHtml(a,b.filterMode?b.htmlTags:null,"",!1),b.beforeSetHtml(a)},afterSetHtml:function(){b.edit=m=this,b.afterSetHtml()},afterCreate:function(){if(b.edit=m=this,b.cmd=m.cmd,b._docMousedownFn=function(){b.menu&&b.hideMenu()},K(m.doc,document).mousedown(b._docMousedownFn),_bindContextmenuEvent.call(b),_bindNewlineEvent.call(b),_bindTabEvent.call(b),_bindFocusEvent.call(b),m.afterChange(function(){m.designMode&&(b.updateState(),b.addBookmark(),b.options.afterChange&&b.options.afterChange.call(b))}),m.textarea.keyup(function(a){a.ctrlKey||a.altKey||!_INPUT_KEY_MAP[a.which]||b.options.afterChange&&b.options.afterChange.call(b)}),b.readonlyMode&&b.readonly(),b.isCreated=!0,""===b.initContent&&(b.initContent=b.html()),b._undoStack.length>0){var a=b._undoStack.pop();a.start&&(b.html(a.html),m.cmd.range.moveToBookmark(a),b.select())}b.afterCreate(),b.options.afterCreate&&b.options.afterCreate.call(b)}});return i.removeClass("statusbar").addClass("ke-statusbar").append('').append(''),b._fullscreenResizeHandler&&(K(window).unbind("resize",b._fullscreenResizeHandler),b._fullscreenResizeHandler=null),a(),c?(b._fullscreenResizeHandler=function(){b.isCreated&&b.resize(_docElement().clientWidth,_docElement().clientHeight,!1)},K(window).bind("resize",b._fullscreenResizeHandler),k.select("fullscreen"),i.first().css("visibility","hidden"),i.last().css("visibility","hidden")):(_GECKO&&K(window).bind("scroll",function(){b._scrollPos=_getScrollPos()}),b.resizeType>0?_drag({moveEl:f,clickEl:i,moveFn:function(a,c,d,e,f,g){e+=g,b.resize(null,e)}}):i.first().css("visibility","hidden"),2===b.resizeType?_drag({moveEl:f,clickEl:i.last(),moveFn:function(a,c,d,e,f,g){d+=f,e+=g,b.resize(d,e)}}):i.last().css("visibility","hidden")),b},remove:function(){var a=this;return a.isCreated?(a.beforeRemove(),a.srcElement.data("kindeditor",""),a.menu&&a.hideMenu(),_each(a.dialogs,function(){a.hideDialog()}),K(document).unbind("mousedown",a._docMousedownFn),a.toolbar.remove(),a.edit.remove(),a.statusbar.last().unbind(),a.statusbar.unbind(),a.container.remove(),a.container=a.toolbar=a.edit=a.menu=null,a.dialogs=[],a.isCreated=!1,a):a},resize:function(a,b,c){var d=this;return c=_undef(c,!0),a&&(/%/.test(a)||(a=_removeUnit(a),a=a/gi,"").replace(/ /gi," ")):b.html(_escape(a))},isEmpty:function(){return""===_trim(this.text().replace(/\r\n|\n|\r/,""))},isDirty:function(){return _trim(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==_trim(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){var a=this.isCreated?this.cmd.range.html():"";return a=_removeBookmarkTag(_removeTempTag(a))},count:function(a){var b=this;return a=(a||"html").toLowerCase(),"html"===a?b.html().length:"text"===a?b.text().replace(/<(?:img|embed).*?>/gi,"K").replace(/\r\n|\n|\r/g,"").length:0},exec:function(a){a=a.toLowerCase();var b=this,c=b.cmd,d=_inArray(a,"selectall,copy,paste,print".split(","))<0;return d&&b.addBookmark(!1),c[a].apply(c,_toArray(arguments,1)),d&&(b.updateState(),b.addBookmark(!1),b.options.afterChange&&b.options.afterChange.call(b)),b},insertHtml:function(a,b){return this.isCreated?(a=this.beforeSetHtml(a),this.exec("inserthtml",a,b),this):this},appendHtml:function(a){if(this.html(this.html()+a),this.isCreated){var b=this.cmd;b.range.selectNodeContents(b.doc.body).collapse(!1),b.select()}return this},sync:function(){return _elementVal(this.srcElement,this.html()),this},focus:function(){return this.isCreated?this.edit.focus():this.srcElement[0].focus(),this},blur:function(){return this.isCreated?this.edit.blur():this.srcElement[0].blur(),this},addBookmark:function(a){a=_undef(a,!0);var b,c=this,d=c.edit,e=d.doc.body,f=_removeTempTag(e.innerHTML);if(a&&c._undoStack.length>0){var g=c._undoStack[c._undoStack.length-1];if(Math.abs(f.length-_removeBookmarkTag(g.html).length)0){var c=b.dialogs[0],d=b.dialogs[b.dialogs.length-1];c.setMaskIndex(d.z+2),a.z=d.z+3,a.showMask=!1}var e=_dialog(a);return b.dialogs.push(e),e},hideDialog:function(){var a=this;if(a.dialogs.length>0&&a.dialogs.pop().remove(),a.dialogs.length>0){var b=a.dialogs[0],c=a.dialogs[a.dialogs.length-1];b.setMaskIndex(c.z-1)}return a},errorDialog:function(a){var b=this,c=b.createDialog({width:750,title:b.lang("uploadError"),body:'
      '}),d=K("iframe",c.div),e=K.iframeDoc(d);return e.open(),e.write(a),e.close(),K(e.body).css("background-color","#FFF"),d[0].contentWindow.focus(),b}},_instances=[],K.remove=function(a){_eachEditor(a,function(a){this.remove(),_instances.splice(a,1)})},K.sync=function(a){_eachEditor(a,function(){this.sync()})},K.html=function(a,b){_eachEditor(a,function(){this.html(b)})},K.insertHtml=function(a,b){_eachEditor(a,function(){this.insertHtml(b)})},K.appendHtml=function(a,b){_eachEditor(a,function(){this.appendHtml(b)})},_IE&&7>_V&&_nativeCommand(document,"BackgroundImageCache",!0),K.EditorClass=KEditor,K.editor=_editor,K.create=_create,K.instances=_instances,K.plugin=_plugin,K.lang=_lang,_plugin("core",function(a){var b=this,c={undo:"Z",redo:"Y",bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};if(b.afterSetHtml(function(){b.options.afterChange&&b.options.afterChange.call(b)}),b.afterCreate(function(){if("form"==b.syncType){for(var c=a(b.srcElement),d=!1;c=c.parent();)if("form"==c.name){d=!0;break}if(d){c.bind("submit",function(){b.sync(),a(window).bind("unload",function(){b.edit.textarea.remove()})});var e=a('[type="reset"]',c);e.click(function(){b.html(b.initContent),b.cmd.selection()}),b.beforeRemove(function(){c.unbind(),e.unbind()})}}}),b.clickToolbar("source",function(){b.edit.designMode?(b.toolbar.disableAll(!0),b.edit.design(!1),b.toolbar.select("source")):(b.toolbar.disableAll(!1),b.edit.design(!0),b.toolbar.unselect("source"),_GECKO?setTimeout(function(){b.cmd.selection()},0):b.cmd.selection()),b.designMode=b.edit.designMode}),b.afterCreate(function(){b.designMode||b.toolbar.disableAll(!0).select("source")}),b.clickToolbar("fullscreen",function(){b.fullscreen()}),b.fullscreenShortcut){var d=!1;b.afterCreate(function(){if(a(b.edit.doc,b.edit.textarea).keyup(function(a){27==a.which&&setTimeout(function(){b.fullscreen()},0)}),d){if(_IE&&!b.designMode)return;b.focus()}d||(d=!0)})}_each("undo,redo".split(","),function(a,d){c[d]&&b.afterCreate(function(){_ctrl(this.edit.doc,c[d],function(){b.clickToolbar(d)})}),b.clickToolbar(d,function(){b[d]()})}),b.clickToolbar("formatblock",function(){var a=b.lang("formatblock.formatBlock"),c={h1:28,h2:24,h3:18,H4:14,p:12},d=b.cmd.val("formatblock"),e=b.createMenu({name:"formatblock",width:"en"==b.langType?200:150});_each(a,function(a,f){var g="font-size:"+c[a]+"px;";"h"===a.charAt(0)&&(g+="font-weight:bold;"),e.addItem({title:''+f+"",height:c[a]+12,checked:d===a||d===f,click:function(){b.select().exec("formatblock","<"+a+">").hideMenu()}})})}),b.clickToolbar("fontname",function(){var a=b.cmd.val("fontname"),c=b.createMenu({name:"fontname",width:150});_each(b.lang("fontname.fontName"),function(d,e){c.addItem({title:''+e+"",checked:a===d.toLowerCase()||a===e.toLowerCase(),click:function(){b.exec("fontname",d).hideMenu()}})})}),b.clickToolbar("fontsize",function(){var a=b.cmd.val("fontsize"),c=b.createMenu({name:"fontsize",width:150});_each(b.fontSizeTable,function(d,e){c.addItem({title:''+e+"",height:_removeUnit(e)+12,checked:a===e,click:function(){b.exec("fontsize",e).hideMenu()}})})}),_each("forecolor,hilitecolor".split(","),function(a,c){b.clickToolbar(c,function(){b.createMenu({name:c,selectedColor:b.cmd.val(c)||"default",colors:b.colorTable,click:function(a){b.exec(c,a).hideMenu()}})})}),_each("cut,copy,paste".split(","),function(a,c){b.clickToolbar(c,function(){b.focus();try{b.exec(c,null)}catch(a){alert(b.lang(c+"Error"))}})}),b.clickToolbar("about",function(){var a='
      KindEditor '+_VERSION+'
      Copyright © kindsoft.net All rights reserved.
      ';b.createDialog({name:"about",width:350,title:b.lang("about"),body:a})}),b.plugin.getSelectedLink=function(){return b.cmd.commonAncestor("a")},b.plugin.getSelectedImage=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return!/^ke-\w+$/i.test(a[0].className)})},b.plugin.getSelectedFlash=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return"ke-flash"==a[0].className})},b.plugin.getSelectedMedia=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return"ke-media"==a[0].className||"ke-rm"==a[0].className})},b.plugin.getSelectedAnchor=function(){return _getImageFromRange(b.edit.cmd.range,function(a){return"ke-anchor"==a[0].className})},_each("link,image,flash,media,anchor".split(","),function(a,c){var d=c.charAt(0).toUpperCase()+c.substr(1);_each("edit,delete".split(","),function(a,e){b.addContextmenu({title:b.lang(e+d),click:function(){b.loadPlugin(c,function(){b.plugin[c][e](),b.hideMenu()})},cond:b.plugin["getSelected"+d],width:150,iconClass:"edit"==e?"ke-icon-"+c:undefined}) -}),b.addContextmenu({title:"-"})}),b.plugin.getSelectedTable=function(){return b.cmd.commonAncestor("table")},b.plugin.getSelectedRow=function(){return b.cmd.commonAncestor("tr")},b.plugin.getSelectedCell=function(){return b.cmd.commonAncestor("td")},_each("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,insert,delete".split(","),function(a,c){var d=_inArray(c,["prop","delete"])<0?b.plugin.getSelectedCell:b.plugin.getSelectedTable;b.addContextmenu({title:b.lang("table"+c),click:function(){b.loadPlugin("table",function(){b.plugin.table[c](),b.hideMenu()})},cond:d,width:170,iconClass:"ke-icon-table"+c})}),b.addContextmenu({title:"-"}),_each("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),function(a,d){c[d]&&b.afterCreate(function(){_ctrl(this.edit.doc,c[d],function(){b.cmd.selection(),b.clickToolbar(d)})}),b.clickToolbar(d,function(){b.focus().exec(d,null)})}),b.afterCreate(function(){function c(){d.range.moveToBookmark(e),d.select(),_WEBKIT&&(a("div."+h,f).each(function(){a(this).after("
      ").remove(!0)}),a("span.Apple-style-span",f).remove(!0),a("span.Apple-tab-span",f).remove(!0),a("span[style]",f).each(function(){"nowrap"==a(this).css("white-space")&&a(this).remove(!0)}),a("meta",f).remove());var c=f[0].innerHTML;f.remove(),""!==c&&(_WEBKIT&&(c=c.replace(/(
      )\1/gi,"$1")),2===b.pasteType&&(c=c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,""),/schemas-microsoft-com|worddocument|mso-\w+/i.test(c)?c=_clearMsWord(c,b.filterMode?b.htmlTags:a.options.htmlTags):(c=_formatHtml(c,b.filterMode?b.htmlTags:null),c=b.beforeSetHtml(c))),1===b.pasteType&&(c=c.replace(/ /gi," "),c=c.replace(/\n\s*\n/g,"\n"),c=c.replace(/]*>/gi,"\n"),c=c.replace(/<\/p>]*>/gi,"\n"),c=c.replace(/<[^>]+>/g,""),c=c.replace(/ {2}/g,"  "),"p"==b.newlineTag?/\n/.test(c)&&(c=c.replace(/^/,"

      ").replace(/$/,"

      ").replace(/\n/g,"

      ")):c=c.replace(/\n/g,"
      $&")),b.insertHtml(c,!0))}var d,e,f,g=b.edit.doc,h="__kindeditor_paste__",i=!1;a(g.body).bind("paste",function(j){if(0===b.pasteType)return void j.stop();if(!i){if(i=!0,a("div."+h,g).remove(),d=b.cmd.selection(),e=d.range.createBookmark(),f=a('

      ',g).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:a(e.start).pos().y+"px","white-space":"nowrap"}),a(g.body).append(f),_IE){var k=d.range.get(!0);k.moveToElementText(f[0]),k.select(),k.execCommand("paste"),j.preventDefault()}else d.range.selectNodeContents(f[0]),d.select(),f[0].tabIndex=-1,f[0].focus();setTimeout(function(){c(),i=!1},0)}})}),b.beforeGetHtml(function(a){return _IE&&8>=_V&&(a=a.replace(/]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(a,b){return unescape(b)}),a=a.replace(/(]*)?>)/gi,function(a,b,c){return/\s+type="[^"]+"/i.test(a)?a:b+' type="text"'+c})),a.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,function(a,b,c,d){return b+_unescape(c).replace(/\s+/g," ")+d}).replace(/]*class="?ke-(flash|rm|media)"?[^>]*>/gi,function(a){var b=_getAttrList(a),c=_getCssList(b.style||""),d=_mediaAttrs(b["data-ke-tag"]),e=_undef(c.width,""),f=_undef(c.height,"");return/px/i.test(e)&&(e=_removeUnit(e)),/px/i.test(f)&&(f=_removeUnit(f)),d.width=_undef(b.width,e),d.height=_undef(b.height,f),_mediaEmbed(d)}).replace(/]*class="?ke-anchor"?[^>]*>/gi,function(a){var b=_getAttrList(a);return''}).replace(/]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(a,b,c){return""+unescape(c)+""}).replace(/]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(a,b,c){return""+unescape(c)+""}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,function(a,b,c){return a=a.replace(/(\s+(?:href|src)=")[^"]*(")/i,function(a,b,d){return b+_unescape(c)+d}),a=a.replace(/\s+data-ke-src="[^"]*"/i,"")}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,function(a,b,c){return b+c})}),b.beforeSetHtml(function(a){return _IE&&8>=_V&&(a=a.replace(/]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,function(a){var b=_getAttrList(a),c=_getCssList(b.style||"");return"none"==c.display?'
      ':a})),a.replace(/]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,function(a){var c=_getAttrList(a);return c.src=_undef(c.src,""),c.width=_undef(c.width,0),c.height=_undef(c.height,0),_mediaImg(b.themesPath+"common/blank.gif",c)}).replace(/]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,function(a){var c=_getAttrList(a);return c.href!==undefined?a:''}).replace(/]*)>([\s\S]*?)<\/script>/gi,function(a,b,c){return'
      '+escape(c)+"
      "}).replace(/]*)>([\s\S]*?)<\/noscript>/gi,function(a,b,c){return'
      '+escape(c)+"
      "}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,function(a,b,c,d,e){return a.match(/\sdata-ke-src="[^"]*"/i)?a:a=b+c+'="'+d+'" data-ke-src="'+_escape(d)+'"'+e}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,function(a,b,c){return b+"data-ke-"+c}).replace(/]*\s+border="0"[^>]*>/gi,function(a){return a.indexOf("ke-zeroborder")>=0?a:_addClassToTag(a,"ke-zeroborder")})})})}}(window),KindEditor.lang({source:"HTML代码",preview:"预览",undo:"后退(Ctrl+Z)",redo:"前进(Ctrl+Y)",cut:"剪切(Ctrl+X)",copy:"复制(Ctrl+C)",paste:"粘贴(Ctrl+V)",plainpaste:"粘贴为无格式文本",wordpaste:"从Word粘贴",selectall:"全选(Ctrl+A)",justifyleft:"左对齐",justifycenter:"居中",justifyright:"右对齐",justifyfull:"两端对齐",insertorderedlist:"编号",insertunorderedlist:"项目符号",indent:"增加缩进",outdent:"减少缩进",subscript:"下标",superscript:"上标",formatblock:"段落",fontname:"字体",fontsize:"文字大小",forecolor:"文字颜色",hilitecolor:"文字背景",bold:"粗体(Ctrl+B)",italic:"斜体(Ctrl+I)",underline:"下划线(Ctrl+U)",strikethrough:"删除线",removeformat:"删除格式",image:"图片",multiimage:"批量图片上传",flash:"Flash",media:"视音频",table:"表格",tablecell:"单元格",hr:"插入横线",emoticons:"插入表情",link:"超级链接",unlink:"取消超级链接",fullscreen:"全屏显示",about:"关于",print:"打印(Ctrl+P)",filemanager:"文件空间",code:"插入程序代码",map:"Google地图",baidumap:"百度地图",lineheight:"行距",clearhtml:"清理HTML代码",pagebreak:"插入分页符",quickformat:"一键排版",insertfile:"插入文件",template:"插入模板",anchor:"锚点",yes:"确定",no:"取消",close:"关闭",editImage:"图片属性",deleteImage:"删除图片",editFlash:"Flash属性",deleteFlash:"删除Flash",editMedia:"视音频属性",deleteMedia:"删除视音频",editLink:"超级链接属性",deleteLink:"取消超级链接",editAnchor:"锚点属性",deleteAnchor:"删除锚点",tableprop:"表格属性",tablecellprop:"单元格属性",tableinsert:"插入表格",tabledelete:"删除表格",tablecolinsertleft:"左侧插入列",tablecolinsertright:"右侧插入列",tablerowinsertabove:"上方插入行",tablerowinsertbelow:"下方插入行",tablerowmerge:"向下合并单元格",tablecolmerge:"向右合并单元格",tablerowsplit:"拆分行",tablecolsplit:"拆分列",tablecoldelete:"删除列",tablerowdelete:"删除行",noColor:"无颜色",pleaseSelectFile:"请选择文件。",invalidImg:"请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",invalidMedia:"请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",invalidWidth:"宽度必须为数字。",invalidHeight:"高度必须为数字。",invalidBorder:"边框必须为数字。",invalidUrl:"请输入有效的URL地址。",invalidRows:"行数为必选项,只允许输入大于0的数字。",invalidCols:"列数为必选项,只允许输入大于0的数字。",invalidPadding:"边距必须为数字。",invalidSpacing:"间距必须为数字。",invalidJson:"服务器发生故障。",uploadSuccess:"上传成功。",cutError:"您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",copyError:"您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",pasteError:"您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",ajaxLoading:"加载中,请稍候 ...",uploadLoading:"上传中,请稍候 ...",uploadError:"上传错误","plainpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","wordpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","code.pleaseInput":"请输入程序代码。","link.url":"URL","link.linkType":"打开类型","link.newWindow":"新窗口","link.selfWindow":"当前窗口","flash.url":"URL","flash.width":"宽度","flash.height":"高度","flash.upload":"上传","flash.viewServer":"文件空间","media.url":"URL","media.width":"宽度","media.height":"高度","media.autostart":"自动播放","media.upload":"上传","media.viewServer":"文件空间","image.remoteImage":"网络图片","image.localImage":"本地上传","image.remoteUrl":"图片地址","image.localUrl":"上传文件","image.size":"图片大小","image.width":"宽","image.height":"高","image.resetSize":"重置大小","image.align":"对齐方式","image.defaultAlign":"默认方式","image.leftAlign":"左对齐","image.rightAlign":"右对齐","image.imgTitle":"图片说明","image.upload":"浏览...","image.viewServer":"图片空间","multiimage.uploadDesc":"允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>","multiimage.startUpload":"开始上传","multiimage.clearAll":"全部清空","multiimage.insertAll":"全部插入","multiimage.queueLimitExceeded":"文件数量超过限制。","multiimage.fileExceedsSizeLimit":"文件大小超过限制。","multiimage.zeroByteFile":"无法上传空文件。","multiimage.invalidFiletype":"文件类型不正确。","multiimage.unknownError":"发生异常,无法上传。","multiimage.pending":"等待上传","multiimage.uploadError":"上传失败","filemanager.emptyFolder":"空文件夹","filemanager.moveup":"移到上一级文件夹","filemanager.viewType":"显示方式:","filemanager.viewImage":"缩略图","filemanager.listImage":"详细信息","filemanager.orderType":"排序方式:","filemanager.fileName":"名称","filemanager.fileSize":"大小","filemanager.fileType":"类型","insertfile.url":"URL","insertfile.title":"文件说明","insertfile.upload":"上传","insertfile.viewServer":"文件空间","table.cells":"单元格数","table.rows":"行数","table.cols":"列数","table.size":"大小","table.width":"宽度","table.height":"高度","table.percent":"%","table.px":"px","table.space":"边距间距","table.padding":"边距","table.spacing":"间距","table.align":"对齐方式","table.textAlign":"水平对齐","table.verticalAlign":"垂直对齐","table.alignDefault":"默认","table.alignLeft":"左对齐","table.alignCenter":"居中","table.alignRight":"右对齐","table.alignTop":"顶部","table.alignMiddle":"中部","table.alignBottom":"底部","table.alignBaseline":"基线","table.border":"边框","table.borderWidth":"边框","table.borderColor":"颜色","table.backgroundColor":"背景颜色","map.address":"地址: ","map.search":"搜索","baidumap.address":"地址: ","baidumap.search":"搜索","baidumap.insertDynamicMap":"插入动态地图","anchor.name":"锚点名称","formatblock.formatBlock":{h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",p:"正 文"},"fontname.fontName":{SimSun:"宋体",NSimSun:"新宋体",FangSong_GB2312:"仿宋_GB2312",KaiTi_GB2312:"楷体_GB2312",SimHei:"黑体","Microsoft YaHei":"微软雅黑",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"单倍行距"},{1.5:"1.5倍行距"},{2:"2倍行距"},{2.5:"2.5倍行距"},{3:"3倍行距"}],"template.selectTemplate":"可选模板","template.replaceContent":"替换当前内容","template.fileList":{"1.html":"图片和文字","2.html":"表格","3.html":"项目编号"}},"zh-CN"),KindEditor.options.langType="zh-CN",KindEditor.plugin("anchor",function(a){var b=this,c="anchor",d=b.lang(c+".");b.plugin.anchor={edit:function(){var e=['
      ','
      ','",'',"
      ","
      "].join(""),f=b.createDialog({name:c,width:300,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(){b.insertHtml('').hideDialog().focus()}}}),g=f.div,h=a('input[name="name"]',g),i=b.plugin.getSelectedAnchor();i&&h.val(unescape(i.attr("data-ke-name"))),h[0].focus(),h[0].select()},"delete":function(){b.plugin.getSelectedAnchor().remove()}},b.clickToolbar(c,b.plugin.anchor.edit)}),KindEditor.plugin("autoheight",function(a){function b(){var a=e.edit,b=a.doc.body;a.iframe[0].scroll="no",b.style.overflowY="hidden"}function c(){var b=e.edit,c=b.doc.body;b.iframe.height(f),e.resize(null,Math.max((a.IE?c.scrollHeight:c.offsetHeight)+76,f))}function d(){f=a.removeUnit(e.height),e.edit.afterChange(c),b(),c()}var e=this;if(e.autoHeightMode){var f;e.isCreated?d():e.afterCreate(d)}}),KindEditor.plugin("baidumap",function(a){var b=this,c="baidumap",d=b.lang(c+"."),e=a.undef(b.mapWidth,558),f=a.undef(b.mapHeight,360);b.clickToolbar(c,function(){function g(){h=p[0].contentWindow,i=a.iframeDoc(p)}var h,i,j=['
      ','
      ','
      ',d.address+' ','','',"","
      ",'
      ',' ","
      ",'
      ',"
      ",'
      ',"
      "].join(""),k=b.createDialog({name:c,width:e+42,title:b.lang(c),body:j,yesBtn:{name:b.lang("yes"),click:function(){var a=h.map,c=a.getCenter(),d=c.lng+","+c.lat,g=a.getZoom(),i=[o[0].checked?b.pluginsPath+"baidumap/index.html":"http://api.map.baidu.com/staticimage","?center="+encodeURIComponent(d),"&zoom="+encodeURIComponent(g),"&width="+e,"&height="+f,"&markers="+encodeURIComponent(d),"&markerStyles="+encodeURIComponent("l,A")].join("");o[0].checked?b.insertHtml(''):b.exec("insertimage",i),b.hideDialog().focus()}},beforeRemove:function(){n.remove(),i&&i.write(""),p.remove()}}),l=k.div,m=a('[name="address"]',l),n=a('[name="searchBtn"]',l),o=a('[name="insertDynamicMap"]',k.div),p=a('');p.bind("load",function(){p.unbind("load"),a.IE?g():setTimeout(g,0)}),a(".ke-map",l).replaceWith(p),n.click(function(){h.search(m.val())})})}),KindEditor.plugin("map",function(a){var b=this,c="map",d=b.lang(c+".");b.clickToolbar(c,function(){function e(){f=m[0].contentWindow,g=a.iframeDoc(m)}var f,g,h=['
      ','
      ',d.address+' ','','',"","
      ",'
      ',"
      "].join(""),i=b.createDialog({name:c,width:600,title:b.lang(c),body:h,yesBtn:{name:b.lang("yes"),click:function(){var a=(f.geocoder,f.map),c=a.getCenter().lat()+","+a.getCenter().lng(),d=a.getZoom(),e=a.getMapTypeId(),g="http://maps.googleapis.com/maps/api/staticmap";g+="?center="+encodeURIComponent(c),g+="&zoom="+encodeURIComponent(d),g+="&size=558x360",g+="&maptype="+encodeURIComponent(e),g+="&markers="+encodeURIComponent(c),g+="&language="+b.langType,g+="&sensor=false",b.exec("insertimage",g).hideDialog().focus()}},beforeRemove:function(){l.remove(),g&&g.write(""),m.remove()}}),j=i.div,k=a('[name="address"]',j),l=a('[name="searchBtn"]',j),m=(["",'',"",'',"","",'','
      ',""].join("\n"),a(''));m.bind("load",function(){m.unbind("load"),a.IE?e():setTimeout(e,0)}),a(".ke-map",j).replaceWith(m),l.click(function(){f.search(k.val())})})}),KindEditor.plugin("clearhtml",function(a){var b=this,c="clearhtml";b.clickToolbar(c,function(){b.focus();var c=b.html();c=c.replace(/(]*>)([\s\S]*?)(<\/script>)/gi,""),c=c.replace(/(]*>)([\s\S]*?)(<\/style>)/gi,""),c=a.formatHtml(c,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]}),b.html(c),b.cmd.selection(!0),b.addBookmark()})}),KindEditor.plugin("code",function(a){var b=this,c="code";b.clickToolbar(c,function(){var d=b.lang(c+"."),e=['
      ','
      ','","
      ",'',"
      "].join(""),f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(){var c=a(".ke-code-type",f.div).val(),e=g.val(),h=""===c?"":" lang-"+c,i='
      \n'+a.escape(e)+"
      ";return""===a.trim(e)?(alert(d.pleaseInput),void g[0].focus()):void b.insertHtml(i).hideDialog().focus()}}}),g=a("textarea",f.div);g[0].focus()})}),KindEditor.plugin("emoticons",function(a){var b=this,c="emoticons",d=b.emoticonsPath||b.pluginsPath+"emoticons/images/",e=void 0===b.allowPreviewEmoticons?!0:b.allowPreviewEmoticons,f=1;b.clickToolbar(c,function(){function g(c,e,f){c.mouseover(v?function(){e>r?(v.css("left",0),v.css("right","")):(v.css("left",""),v.css("right",0)),w.attr("src",d+f+".gif"),a(this).addClass("ke-on")}:function(){a(this).addClass("ke-on")}),c.mouseout(function(){a(this).removeClass("ke-on")}),c.click(function(a){b.insertHtml('').hideMenu().focus(),a.stop()})}function h(b,c){var e=document.createElement("table");c.append(e),v&&(a(e).mouseover(function(){v.show("block")}),a(e).mouseout(function(){v.hide()}),t.push(a(e))),e.className="ke-table",e.cellPadding=0,e.cellSpacing=0,e.border=0;for(var f=(b-1)*p+o,h=0;l>h;h++)for(var i=e.insertRow(h),j=0;m>j;j++){var k=a(i.insertCell(j));k.addClass("ke-cell"),g(k,j,f);var n=a('').css("background-position","-"+24*f+"px 0px").css("background-image","url("+d+"static.gif)");k.append(n),t.push(k),f++}return e}function i(){a.each(t,function(){this.unbind()})}function j(a,b){a.click(function(a){i(),y.parentNode.removeChild(y),x.remove(),y=h(b,s),k(b),f=b,a.stop()})}function k(b){x=a('
      '),s.append(x);for(var c=1;q>=c;c++){if(b!==c){var d=a('
      ['+c+"]");j(d,c),x.append(d),t.push(d)}else x.append(a("@["+c+"]"));x.append(a("@ "))}}var l=5,m=9,n=135,o=0,p=l*m,q=Math.ceil(n/p),r=Math.floor(m/2),s=a('
      '),t=[],u=b.createMenu({name:c,beforeRemove:function(){i()}});u.div.append(s);var v,w;e&&(v=a('
      ').css("right",0),w=a(''),s.append(v),v.append(w));var x,y=h(f,s);k(f)})}),KindEditor.plugin("filemanager",function(a){function b(a,b,c){return a+" ("+Math.ceil(b/1024)+"KB, "+c+")"}function c(a,c){c.is_dir?a.attr("title",c.filename):a.attr("title",b(c.filename,c.filesize,c.datetime))}var d=this,e="filemanager",f=a.undef(d.fileManagerJson,d.basePath+"php/file_manager_json.php"),g=d.pluginsPath+e+"/images/",h=d.lang(e+".");d.plugin.filemanagerDialog=function(b){function i(b,c,e){var g="path="+b+"&order="+c+"&dir="+p;t.showLoading(d.lang("ajaxLoading")),a.ajax(a.addParam(f,g+"&"+(new Date).getTime()),function(a){t.hideLoading(),e(a)})}function j(b,c,d,e){var f=a.formatUrl(c.current_url+d.filename,"absolute"),g=encodeURIComponent(c.current_dir_path+d.filename+"/");b.click(d.is_dir?function(){i(g,y.val(),e)}:d.is_photo?function(){r.call(this,f,d.filename)}:function(){r.call(this,f,d.filename)}),z.push(b)}function k(b,c){function d(){"VIEW"==x.val()?i(b.current_dir_path,y.val(),m):i(b.current_dir_path,y.val(),l)}a.each(z,function(){this.unbind()}),w.unbind(),x.unbind(),y.unbind(),b.current_dir_path&&w.click(function(){i(b.moveup_dir_path,y.val(),c)}),x.change(d),y.change(d),v.html("")}function l(b){k(b,l);var c=document.createElement("table");c.className="ke-table",c.cellPadding=0,c.cellSpacing=0,c.border=0,v.append(c);for(var d=b.file_list,e=0,f=d.length;f>e;e++){var i=d[e],m=a(c.insertRow(e));m.mouseover(function(){a(this).addClass("ke-on")}).mouseout(function(){a(this).removeClass("ke-on")});var n=g+(i.is_dir?"folder-16.gif":"file-16.gif"),o=a(''+i.filename+''),p=a(m[0].insertCell(0)).addClass("ke-cell ke-name").append(o).append(document.createTextNode(" "+i.filename));!i.is_dir||i.has_file?(m.css("cursor","pointer"),p.attr("title",i.filename),j(p,b,i,l)):p.attr("title",h.emptyFolder),a(m[0].insertCell(1)).addClass("ke-cell ke-size").html(i.is_dir?"-":Math.ceil(i.filesize/1024)+"KB"),a(m[0].insertCell(2)).addClass("ke-cell ke-datetime").html(i.datetime)}}function m(b){k(b,m);for(var d=b.file_list,e=0,f=d.length;f>e;e++){var i=d[e],l=a('
      ');v.append(l);var n=a('
      ').mouseover(function(){a(this).addClass("ke-on")}).mouseout(function(){a(this).removeClass("ke-on")});l.append(n);var o=b.current_url+i.filename,p=i.is_dir?g+"folder-64.gif":i.is_photo?o:g+"file-64.gif",q=a(''+i.filename+'');!i.is_dir||i.has_file?(n.css("cursor","pointer"),c(n,i),j(n,b,i,m)):n.attr("title",h.emptyFolder),n.append(q),l.append('
      '+i.filename+"
      ")}}var n=a.undef(b.width,650),o=a.undef(b.height,510),p=a.undef(b.dirName,""),q=a.undef(b.viewType,"VIEW").toUpperCase(),r=b.clickFn,s=['
      ','
      ','
      ',' ',''+h.moveup+"","
      ",'
      ',h.viewType+' ",h.orderType+' ","
      ",'
      ',"
      ",'
      ',"
      "].join(""),t=d.createDialog({name:e,width:n,height:o,title:d.lang(e),body:s}),u=t.div,v=a(".ke-plugin-filemanager-body",u),w=(a('[name="moveupImg"]',u),a('[name="moveupLink"]',u)),x=(a('[name="viewServer"]',u),a('[name="viewType"]',u)),y=a('[name="orderType"]',u),z=[];return x.val(q),i("",y.val(),"VIEW"==q?m:l),t}}),KindEditor.plugin("flash",function(a){var b=this,c="flash",d=b.lang(c+"."),e=a.undef(b.allowFlashUpload,!0),f=a.undef(b.allowFileManager,!1),g=a.undef(b.formatUploadUrl,!0),h=a.undef(b.extraFileUploadParams,{}),i=a.undef(b.filePostName,"imgFile"),j=a.undef(b.uploadJson,b.basePath+"php/upload_json.php");b.plugin.flash={edit:function(){var k=['
      ','
      ','",'  ','  ','','',"","
      ",'
      ','",' ',"
      ",'
      ','",' ',"
      ","
      "].join(""),l=b.createDialog({name:c,width:450,title:b.lang(c),body:k,yesBtn:{name:b.lang("yes"),click:function(){var c=a.trim(n.val()),d=p.val(),e=q.val();if("http://"==c||a.invalidUrl(c))return alert(b.lang("invalidUrl")),void n[0].focus();if(!/^\d*$/.test(d))return alert(b.lang("invalidWidth")),void p[0].focus();if(!/^\d*$/.test(e))return alert(b.lang("invalidHeight")),void q[0].focus();var f=a.mediaImg(b.themesPath+"common/blank.gif",{src:c,type:a.mediaType(".swf"),width:d,height:e,quality:"high"});b.insertHtml(f).hideDialog().focus()}}}),m=l.div,n=a('[name="url"]',m),o=a('[name="viewServer"]',m),p=a('[name="width"]',m),q=a('[name="height"]',m);if(n.val("http://"),e){var r=a.uploadbutton({button:a(".ke-upload-button",m)[0],fieldName:i,extraParams:h,url:a.addParam(j,"dir=flash"),afterUpload:function(d){if(l.hideLoading(),0===d.error){var e=d.url;g&&(e=a.formatUrl(e,"absolute")),n.val(e),b.afterUpload&&b.afterUpload.call(b,e,d,c),alert(b.lang("uploadSuccess"))}else alert(d.message)},afterError:function(a){l.hideLoading(),b.errorDialog(a)}});r.fileBox.change(function(){l.showLoading(b.lang("uploadLoading")),r.submit()})}else a(".ke-upload-button",m).hide();f?o.click(function(){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({viewType:"LIST",dirName:"flash",clickFn:function(c){b.dialogs.length>1&&(a('[name="url"]',m).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c),b.hideDialog())}})})}):o.hide();var s=b.plugin.getSelectedFlash();if(s){var t=a.mediaAttrs(s.attr("data-ke-tag"));n.val(t.src),p.val(a.removeUnit(s.css("width"))||t.width||0),q.val(a.removeUnit(s.css("height"))||t.height||0)}n[0].focus(),n[0].select()},"delete":function(){b.plugin.getSelectedFlash().remove(),b.addBookmark()}},b.clickToolbar(c,b.plugin.flash.edit)}),KindEditor.plugin("image",function(a){var b=this,c="image",d=a.undef(b.allowImageUpload,!0),e=a.undef(b.allowImageRemote,!0),f=a.undef(b.formatUploadUrl,!0),g=a.undef(b.allowFileManager,!1),h=a.undef(b.uploadJson,b.basePath+"php/upload_json.php"),i=a.undef(b.imageTabIndex,0),j=b.pluginsPath+"image/images/",k=a.undef(b.extraFileUploadParams,{}),l=a.undef(b.filePostName,"imgFile"),m=a.undef(b.fillDescAfterUploadImage,!1),n=b.lang(c+".");b.plugin.imageDialog=function(d){function e(a,b){D.val(a),E.val(b),J=a,K=b}var i=(d.imageUrl,a.undef(d.imageWidth,""),a.undef(d.imageHeight,""),a.undef(d.imageTitle,""),a.undef(d.imageAlign,""),a.undef(d.showRemote,!0)),o=a.undef(d.showLocal,!0),p=a.undef(d.tabIndex,0),q=d.clickFn,r="kindeditor_upload_iframe_"+(new Date).getTime(),s=[];for(var t in k)s.push('');var u,v=['
      ','
      ','",'","
      "].join(""),w=o||g?450:400,x=o&&i?300:250,y=b.createDialog({name:c,width:w,height:x,title:b.lang(c),body:v,yesBtn:{name:b.lang("yes"),click:function(){if(!y.isLoading){if(o&&i&&u&&1===u.selectedIndex||!i)return""==I.fileBox.val()?void alert(b.lang("pleaseSelectFile")):(y.showLoading(b.lang("uploadLoading")),I.submit(),void B.val(""));var c=a.trim(A.val()),d=D.val(),e=E.val(),f=G.val(),g="";return H.each(function(){return this.checked?(g=this.value,!1):void 0}),"http://"==c||a.invalidUrl(c)?(alert(b.lang("invalidUrl")),void A[0].focus()):/^\d*$/.test(d)?/^\d*$/.test(e)?void q.call(b,c,f,d,e,0,g):(alert(b.lang("invalidHeight")),void E[0].focus()):(alert(b.lang("invalidWidth")),void D[0].focus())}}},beforeRemove:function(){C.unbind(),D.unbind(),E.unbind(),F.unbind()}}),z=y.div,A=a('[name="url"]',z),B=a('[name="localUrl"]',z),C=a('[name="viewServer"]',z),D=a('.tab1 [name="width"]',z),E=a('.tab1 [name="height"]',z),F=a(".ke-refresh-btn",z),G=a('.tab1 [name="title"]',z),H=a('.tab1 [name="align"]',z);i&&o?(u=a.tabs({src:a(".tabs",z),afterSelect:function(){}}),u.add({title:n.remoteImage,panel:a(".tab1",z)}),u.add({title:n.localImage,panel:a(".tab2",z)}),u.select(p)):i?a(".tab1",z).show():o&&a(".tab2",z).show(); -var I=a.uploadbutton({button:a(".ke-upload-button",z)[0],fieldName:l,form:a(".ke-form",z),target:r,width:60,afterUpload:function(d){if(y.hideLoading(),0===d.error){var e=d.url;f&&(e=a.formatUrl(e,"absolute")),b.afterUpload&&b.afterUpload.call(b,e,d,c),m?(a(".ke-dialog-row #remoteUrl",z).val(e),a(".ke-tabs-li",z)[0].click(),a(".ke-refresh-btn",z).click()):q.call(b,e,d.title,d.width,d.height,d.border,d.align)}else alert(d.message)},afterError:function(a){y.hideLoading(),b.errorDialog(a)}});I.fileBox.change(function(){B.val(I.fileBox.val())}),g?C.click(function(){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({viewType:"VIEW",dirName:"image",clickFn:function(c){b.dialogs.length>1&&(a('[name="url"]',z).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c),b.hideDialog())}})})}):C.hide();var J=0,K=0;return F.click(function(){var b=a('',document).css({position:"absolute",visibility:"hidden",top:0,left:"-1000px"});b.bind("load",function(){e(b.width(),b.height()),b.remove()}),a(document.body).append(b)}),D.change(function(){J>0&&E.val(Math.round(K/J*parseInt(this.value,10)))}),E.change(function(){K>0&&D.val(Math.round(J/K*parseInt(this.value,10)))}),A.val(d.imageUrl),e(d.imageWidth,d.imageHeight),G.val(d.imageTitle),H.each(function(){return this.value===d.imageAlign?(this.checked=!0,!1):void 0}),i&&0===p&&(A[0].focus(),A[0].select()),y},b.plugin.image={edit:function(){var a=b.plugin.getSelectedImage();b.plugin.imageDialog({imageUrl:a?a.attr("data-ke-src"):"http://",imageWidth:a?a.width():"",imageHeight:a?a.height():"",imageTitle:a?a.attr("title"):"",imageAlign:a?a.attr("align"):"",showRemote:e,showLocal:d,tabIndex:a?0:i,clickFn:function(c,d,e,f,g,h){a?(a.attr("src",c),a.attr("data-ke-src",c),a.attr("width",e),a.attr("height",f),a.attr("title",d),a.attr("align",h),a.attr("alt",d)):b.exec("insertimage",c,d,e,f,g,h),setTimeout(function(){b.hideDialog().focus()},0)}})},"delete":function(){var a=b.plugin.getSelectedImage();"a"==a.parent().name&&(a=a.parent()),a.remove(),b.addBookmark()}},b.clickToolbar(c,b.plugin.image.edit)}),KindEditor.plugin("insertfile",function(a){var b=this,c="insertfile",d=a.undef(b.allowFileUpload,!0),e=a.undef(b.allowFileManager,!1),f=a.undef(b.formatUploadUrl,!0),g=a.undef(b.uploadJson,b.basePath+"php/upload_json.php"),h=a.undef(b.extraFileUploadParams,{}),i=a.undef(b.filePostName,"imgFile"),j=b.lang(c+".");b.plugin.fileDialog=function(k){var l=a.undef(k.fileUrl,"http://"),m=a.undef(k.fileTitle,""),n=k.clickFn,o=['
      ','
      ','",'  ','  ','','',"","
      ",'
      ','",'
      ',"
      ","",""].join(""),p=b.createDialog({name:c,width:450,title:b.lang(c),body:o,yesBtn:{name:b.lang("yes"),click:function(){var c=a.trim(r.val()),d=t.val();return"http://"==c||a.invalidUrl(c)?(alert(b.lang("invalidUrl")),void r[0].focus()):(""===a.trim(d)&&(d=c),void n.call(b,c,d))}}}),q=p.div,r=a('[name="url"]',q),s=a('[name="viewServer"]',q),t=a('[name="title"]',q);if(d){var u=a.uploadbutton({button:a(".ke-upload-button",q)[0],fieldName:i,url:a.addParam(g,"dir=file"),extraParams:h,afterUpload:function(d){if(p.hideLoading(),0===d.error){var e=d.url;f&&(e=a.formatUrl(e,"absolute")),r.val(e),b.afterUpload&&b.afterUpload.call(b,e,d,c),alert(b.lang("uploadSuccess"))}else alert(d.message)},afterError:function(a){p.hideLoading(),b.errorDialog(a)}});u.fileBox.change(function(){p.showLoading(b.lang("uploadLoading")),u.submit()})}else a(".ke-upload-button",q).hide();e?s.click(function(){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(c){b.dialogs.length>1&&(a('[name="url"]',q).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c),b.hideDialog())}})})}):s.hide(),r.val(l),t.val(m),r[0].focus(),r[0].select()},b.clickToolbar(c,function(){b.plugin.fileDialog({clickFn:function(a,c){var d=''+c+"";b.insertHtml(d).hideDialog().focus()}})})}),KindEditor.plugin("lineheight",function(a){var b=this,c="lineheight",d=b.lang(c+".");b.clickToolbar(c,function(){var e="",f=b.cmd.commonNode({"*":".line-height"});f&&(e=f.css("line-height"));var g=b.createMenu({name:c,width:150});a.each(d.lineHeight,function(c,d){a.each(d,function(a,c){g.addItem({title:c,checked:e===a,click:function(){b.cmd.toggle('',{span:".line-height="+a}),b.updateState(),b.addBookmark(),b.hideMenu()}})})})})}),KindEditor.plugin("link",function(a){var b=this,c="link";b.plugin.link={edit:function(){var d=b.lang(c+"."),e='
      ',f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(){var c=a.trim(h.val());return"http://"==c||a.invalidUrl(c)?(alert(b.lang("invalidUrl")),void h[0].focus()):void b.exec("createlink",c,i.val()).hideDialog().focus()}}}),g=f.div,h=a('input[name="url"]',g),i=a('select[name="type"]',g);h.val("http://"),i[0].options[0]=new Option(d.newWindow,"_blank"),i[0].options[1]=new Option(d.selfWindow,""),b.cmd.selection();var j=b.plugin.getSelectedLink();j&&(b.cmd.range.selectNode(j[0]),b.cmd.select(),h.val(j.attr("data-ke-src")),i.val(j.attr("target"))),h[0].focus(),h[0].select()},"delete":function(){b.exec("unlink",null)}},b.clickToolbar(c,b.plugin.link.edit)}),KindEditor.plugin("media",function(a){var b=this,c="media",d=b.lang(c+"."),e=a.undef(b.allowMediaUpload,!0),f=a.undef(b.allowFileManager,!1),g=a.undef(b.formatUploadUrl,!0),h=a.undef(b.extraFileUploadParams,{}),i=a.undef(b.filePostName,"imgFile"),j=a.undef(b.uploadJson,b.basePath+"php/upload_json.php");b.plugin.media={edit:function(){var k=['
      ','
      ','",'  ','  ','','',"","
      ",'
      ','",'',"
      ",'
      ','",'',"
      ",'
      ','",' ',"
      ","
      "].join(""),l=b.createDialog({name:c,width:450,height:230,title:b.lang(c),body:k,yesBtn:{name:b.lang("yes"),click:function(){var c=a.trim(n.val()),d=p.val(),e=q.val();if("http://"==c||a.invalidUrl(c))return alert(b.lang("invalidUrl")),void n[0].focus();if(!/^\d*$/.test(d))return alert(b.lang("invalidWidth")),void p[0].focus();if(!/^\d*$/.test(e))return alert(b.lang("invalidHeight")),void q[0].focus();var f=a.mediaImg(b.themesPath+"common/blank.gif",{src:c,type:a.mediaType(c),width:d,height:e,autostart:r[0].checked?"true":"false",loop:"true"});b.insertHtml(f).hideDialog().focus()}}}),m=l.div,n=a('[name="url"]',m),o=a('[name="viewServer"]',m),p=a('[name="width"]',m),q=a('[name="height"]',m),r=a('[name="autostart"]',m);if(n.val("http://"),e){var s=a.uploadbutton({button:a(".ke-upload-button",m)[0],fieldName:i,extraParams:h,url:a.addParam(j,"dir=media"),afterUpload:function(d){if(l.hideLoading(),0===d.error){var e=d.url;g&&(e=a.formatUrl(e,"absolute")),n.val(e),b.afterUpload&&b.afterUpload.call(b,e,d,c),alert(b.lang("uploadSuccess"))}else alert(d.message)},afterError:function(a){l.hideLoading(),b.errorDialog(a)}});s.fileBox.change(function(){l.showLoading(b.lang("uploadLoading")),s.submit()})}else a(".ke-upload-button",m).hide();f?o.click(function(){b.loadPlugin("filemanager",function(){b.plugin.filemanagerDialog({viewType:"LIST",dirName:"media",clickFn:function(c){b.dialogs.length>1&&(a('[name="url"]',m).val(c),b.afterSelectFile&&b.afterSelectFile.call(b,c),b.hideDialog())}})})}):o.hide();var t=b.plugin.getSelectedMedia();if(t){var u=a.mediaAttrs(t.attr("data-ke-tag"));n.val(u.src),p.val(a.removeUnit(t.css("width"))||u.width||0),q.val(a.removeUnit(t.css("height"))||u.height||0),r[0].checked="true"===u.autostart}n[0].focus(),n[0].select()},"delete":function(){b.plugin.getSelectedMedia().remove(),b.addBookmark()}},b.clickToolbar(c,b.plugin.media.edit)}),function(a){function b(a){this.init(a)}a.extend(b,{init:function(b){function c(b,c){a(".ke-status > div",b).hide(),a(".ke-message",b).addClass("ke-error").show().html(a.escape(c))}var d=this;b.afterError=b.afterError||function(a){alert(a)},d.options=b,d.progressbars={},d.div=a(b.container).html(['
      ','
      ','
      ','',"
      ",'
      '+b.uploadDesc+"
      ",'','',"","
      ",'
      ',"
      "].join("")),d.bodyDiv=a(".ke-swfupload-body",d.div);var e={debug:!1,upload_url:b.uploadUrl,flash_url:b.flashUrl,file_post_name:b.filePostName,button_placeholder:a(".ke-swfupload-button > input",d.div)[0],button_image_url:b.buttonImageUrl,button_width:b.buttonWidth,button_height:b.buttonHeight,button_cursor:SWFUpload.CURSOR.HAND,file_types:b.fileTypes,file_types_description:b.fileTypesDesc,file_upload_limit:b.fileUploadLimit,file_size_limit:b.fileSizeLimit,post_params:b.postParams,file_queued_handler:function(a){a.url=d.options.fileIconUrl,d.appendFile(a)},file_queue_error_handler:function(c,d){var e="";switch(d){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:e=b.queueLimitExceeded;break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:e=b.fileExceedsSizeLimit;break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:e=b.zeroByteFile;break;case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:e=b.invalidFiletype;break;default:e=b.unknownError}a.DEBUG&&alert(e)},upload_start_handler:function(b){var c=this,d=a('div[data-id="'+b.id+'"]',c.bodyDiv);a(".ke-status > div",d).hide(),a(".ke-progressbar",d).show()},upload_progress_handler:function(a,b,c){var e=Math.round(100*b/c),f=d.progressbars[a.id];f.bar.css("width",Math.round(80*e/100)+"px"),f.percent.html(e+"%")},upload_error_handler:function(b){if(b&&b.filestatus==SWFUpload.FILE_STATUS.ERROR){var e=a('div[data-id="'+b.id+'"]',d.bodyDiv).eq(0);c(e,d.options.errorMessage)}},upload_success_handler:function(b,e){var f=a('div[data-id="'+b.id+'"]',d.bodyDiv).eq(0),g={};try{g=a.json(e)}catch(h){d.options.afterError.call(this,""+e+"")}return 0!==g.error?void c(f,a.DEBUG?g.message:d.options.errorMessage):(b.url=g.url,a(".ke-img",f).attr("src",b.url).attr("data-status",b.filestatus).data("data",g),void a(".ke-status > div",f).hide())}};d.swfu=new SWFUpload(e),a(".ke-swfupload-startupload input",d.div).click(function(){d.swfu.startUpload()})},getUrlList:function(){var b=[];return a(".ke-img",self.bodyDiv).each(function(){var c=a(this),d=c.attr("data-status");d==SWFUpload.FILE_STATUS.COMPLETE&&b.push(c.data("data"))}),b},removeFile:function(b){var c=this;c.swfu.cancelUpload(b);var d=a('div[data-id="'+b+'"]',c.bodyDiv);a(".ke-photo",d).unbind(),a(".ke-delete",d).unbind(),d.remove()},removeFiles:function(){var b=this;a(".ke-item",b.bodyDiv).each(function(){b.removeFile(a(this).attr("data-id"))})},appendFile:function(b){var c=this,d=a('
      ');c.bodyDiv.append(d);var e=a('
      ').mouseover(function(){a(this).addClass("ke-on")}).mouseout(function(){a(this).removeClass("ke-on")});d.append(e);var f=a(''+b.name+'');e.append(f),a('').appendTo(e).click(function(){c.removeFile(b.id)});var g=a('
      ').appendTo(e);a(['
      ','
      ','
      0%
      '].join("")).hide().appendTo(g),a('
      '+c.options.pendingMessage+"
      ").appendTo(g),d.append('
      '+b.name+"
      "),c.progressbars[b.id]={bar:a(".ke-progressbar-bar-inner",e),percent:a(".ke-progressbar-percent",e)}},remove:function(){this.removeFiles(),this.swfu.destroy(),this.div.html("")}}),a.swfupload=function(a,c){return new b(a,c)}}(KindEditor),KindEditor.plugin("multiimage",function(a){var b=this,c="multiimage",d=(a.undef(b.formatUploadUrl,!0),a.undef(b.uploadJson,b.basePath+"php/upload_json.php")),e=b.pluginsPath+"multiimage/images/",f=a.undef(b.imageSizeLimit,"1MB"),g=(a.undef(b.imageFileTypes,"*.jpg;*.gif;*.png"),a.undef(b.imageUploadLimit,20)),h=a.undef(b.filePostName,"imgFile"),i=b.lang(c+".");b.plugin.multiImageDialog=function(j){var k=j.clickFn,l=a.tmpl(i.uploadDesc,{uploadLimit:g,sizeLimit:f}),m=['
      ','
      ',"
      ","
      "].join(""),n=b.createDialog({name:c,width:650,height:510,title:b.lang(c),body:m,previewBtn:{name:i.insertAll,click:function(){k.call(b,p.getUrlList())}},yesBtn:{name:i.clearAll,click:function(){p.removeFiles()}},beforeRemove:function(){(!a.IE||a.V<=8)&&p.remove()}}),o=n.div,p=a.swfupload({container:a(".swfupload",o),buttonImageUrl:e+("zh-CN"==b.langType?"select-files-zh-CN.png":"select-files-en.png"),buttonWidth:"zh-CN"==b.langType?72:88,buttonHeight:23,fileIconUrl:e+"image.png",uploadDesc:l,startButtonValue:i.startUpload,uploadUrl:a.addParam(d,"dir=image"),flashUrl:e+"swfupload.swf",filePostName:h,fileTypes:"*.jpg;*.jpeg;*.gif;*.png;*.bmp",fileTypesDesc:"Image Files",fileUploadLimit:g,fileSizeLimit:f,postParams:a.undef(b.extraFileUploadParams,{}),queueLimitExceeded:i.queueLimitExceeded,fileExceedsSizeLimit:i.fileExceedsSizeLimit,zeroByteFile:i.zeroByteFile,invalidFiletype:i.invalidFiletype,unknownError:i.unknownError,pendingMessage:i.pending,errorMessage:i.uploadError,afterError:function(a){b.errorDialog(a)}});return n},b.clickToolbar(c,function(){b.plugin.multiImageDialog({clickFn:function(c){0!==c.length&&(a.each(c,function(a,c){b.afterUpload&&b.afterUpload.call(b,c.url,c,"multiimage"),b.exec("insertimage",c.url,c.title,c.width,c.height,c.border,c.align)}),setTimeout(function(){b.hideDialog().focus()},0))}})})}),function(){window.SWFUpload=function(a){this.initSWFUpload(a)},SWFUpload.prototype.initSWFUpload=function(a){try{this.customSettings={},this.settings=a,this.eventQueue=[],this.movieName="KindEditor_SWFUpload_"+SWFUpload.movieCount++,this.movieElement=null,SWFUpload.instances[this.movieName]=this,this.initSettings(),this.loadFlash(),this.displayDebugInfo()}catch(b){throw delete SWFUpload.instances[this.movieName],b}},SWFUpload.instances={},SWFUpload.movieCount=0,SWFUpload.version="2.2.0 2009-03-25",SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130},SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290},SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5},SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120},SWFUpload.CURSOR={ARROW:-1,HAND:-2},SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"},SWFUpload.completeURL=function(a){if("string"!=typeof a||a.match(/^https?:\/\//i)||a.match(/^\//))return a;var b=(window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:""),window.location.pathname.lastIndexOf("/"));return path=0>=b?"/":window.location.pathname.substr(0,b)+"/",path+a},SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(a,b){this.settings[a]=void 0==this.settings[a]?b:this.settings[a]},this.ensureDefault("upload_url",""),this.ensureDefault("preserve_relative_urls",!1),this.ensureDefault("file_post_name","Filedata"),this.ensureDefault("post_params",{}),this.ensureDefault("use_query_string",!1),this.ensureDefault("requeue_on_error",!1),this.ensureDefault("http_success",[]),this.ensureDefault("assume_success_timeout",0),this.ensureDefault("file_types","*.*"),this.ensureDefault("file_types_description","All Files"),this.ensureDefault("file_size_limit",0),this.ensureDefault("file_upload_limit",0),this.ensureDefault("file_queue_limit",0),this.ensureDefault("flash_url","swfupload.swf"),this.ensureDefault("prevent_swf_caching",!0),this.ensureDefault("button_image_url",""),this.ensureDefault("button_width",1),this.ensureDefault("button_height",1),this.ensureDefault("button_text",""),this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;"),this.ensureDefault("button_text_top_padding",0),this.ensureDefault("button_text_left_padding",0),this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES),this.ensureDefault("button_disabled",!1),this.ensureDefault("button_placeholder_id",""),this.ensureDefault("button_placeholder",null),this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW),this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW),this.ensureDefault("debug",!1),this.settings.debug_enabled=this.settings.debug,this.settings.return_upload_start_handler=this.returnUploadStart,this.ensureDefault("swfupload_loaded_handler",null),this.ensureDefault("file_dialog_start_handler",null),this.ensureDefault("file_queued_handler",null),this.ensureDefault("file_queue_error_handler",null),this.ensureDefault("file_dialog_complete_handler",null),this.ensureDefault("upload_start_handler",null),this.ensureDefault("upload_progress_handler",null),this.ensureDefault("upload_error_handler",null),this.ensureDefault("upload_success_handler",null),this.ensureDefault("upload_complete_handler",null),this.ensureDefault("debug_handler",this.debugMessage),this.ensureDefault("custom_settings",{}),this.customSettings=this.settings.custom_settings,this.settings.prevent_swf_caching&&(this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+(new Date).getTime()),this.settings.preserve_relative_urls||(this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url),this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url)),delete this.ensureDefault},SWFUpload.prototype.loadFlash=function(){var a,b;if(null!==document.getElementById(this.movieName))throw"ID "+this.movieName+" is already in use. The Flash Object could not be added";if(a=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder,void 0==a)throw"Could not find the placeholder element: "+this.settings.button_placeholder_id;b=document.createElement("div"),b.innerHTML=this.getFlashHTML(),a.parentNode.replaceChild(b.firstChild,a),void 0==window[this.movieName]&&(window[this.movieName]=this.getMovieElement())},SWFUpload.prototype.getFlashHTML=function(){var a="";return KindEditor.IE&&KindEditor.V>8&&(a=' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'),['','','','','','','',""].join("")},SWFUpload.prototype.getFlashVars=function(){var a=this.buildParamString(),b=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&uploadURL=",encodeURIComponent(this.settings.upload_url),"&useQueryString=",encodeURIComponent(this.settings.use_query_string),"&requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&httpSuccess=",encodeURIComponent(b),"&assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&params=",encodeURIComponent(a),"&filePostName=",encodeURIComponent(this.settings.file_post_name),"&fileTypes=",encodeURIComponent(this.settings.file_types),"&fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&buttonWidth=",encodeURIComponent(this.settings.button_width),"&buttonHeight=",encodeURIComponent(this.settings.button_height),"&buttonText=",encodeURIComponent(this.settings.button_text),"&buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&buttonAction=",encodeURIComponent(this.settings.button_action),"&buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")},SWFUpload.prototype.getMovieElement=function(){if(void 0==this.movieElement&&(this.movieElement=document.getElementById(this.movieName)),null===this.movieElement)throw"Could not find Flash element";return this.movieElement},SWFUpload.prototype.buildParamString=function(){var a=this.settings.post_params,b=[];if("object"==typeof a)for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c.toString())+"="+encodeURIComponent(a[c].toString()));return b.join("&")},SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,!1);var a=null;if(a=this.getMovieElement(),a&&"unknown"==typeof a.CallFunction){for(var b in a)try{"function"==typeof a[b]&&(a[b]=null)}catch(c){}try{a.parentNode.removeChild(a)}catch(d){}}return window[this.movieName]=null,SWFUpload.instances[this.movieName]=null,delete SWFUpload.instances[this.movieName],this.movieElement=null,this.settings=null,this.customSettings=null,this.eventQueue=null,this.movieName=null,!0}catch(e){return!1}},SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n"," ","upload_url: ",this.settings.upload_url,"\n"," ","flash_url: ",this.settings.flash_url,"\n"," ","use_query_string: ",this.settings.use_query_string.toString(),"\n"," ","requeue_on_error: ",this.settings.requeue_on_error.toString(),"\n"," ","http_success: ",this.settings.http_success.join(", "),"\n"," ","assume_success_timeout: ",this.settings.assume_success_timeout,"\n"," ","file_post_name: ",this.settings.file_post_name,"\n"," ","post_params: ",this.settings.post_params.toString(),"\n"," ","file_types: ",this.settings.file_types,"\n"," ","file_types_description: ",this.settings.file_types_description,"\n"," ","file_size_limit: ",this.settings.file_size_limit,"\n"," ","file_upload_limit: ",this.settings.file_upload_limit,"\n"," ","file_queue_limit: ",this.settings.file_queue_limit,"\n"," ","debug: ",this.settings.debug.toString(),"\n"," ","prevent_swf_caching: ",this.settings.prevent_swf_caching.toString(),"\n"," ","button_placeholder_id: ",this.settings.button_placeholder_id.toString(),"\n"," ","button_placeholder: ",this.settings.button_placeholder?"Set":"Not Set","\n"," ","button_image_url: ",this.settings.button_image_url.toString(),"\n"," ","button_width: ",this.settings.button_width.toString(),"\n"," ","button_height: ",this.settings.button_height.toString(),"\n"," ","button_text: ",this.settings.button_text.toString(),"\n"," ","button_text_style: ",this.settings.button_text_style.toString(),"\n"," ","button_text_top_padding: ",this.settings.button_text_top_padding.toString(),"\n"," ","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n"," ","button_action: ",this.settings.button_action.toString(),"\n"," ","button_disabled: ",this.settings.button_disabled.toString(),"\n"," ","custom_settings: ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n"," ","swfupload_loaded_handler assigned: ",("function"==typeof this.settings.swfupload_loaded_handler).toString(),"\n"," ","file_dialog_start_handler assigned: ",("function"==typeof this.settings.file_dialog_start_handler).toString(),"\n"," ","file_queued_handler assigned: ",("function"==typeof this.settings.file_queued_handler).toString(),"\n"," ","file_queue_error_handler assigned: ",("function"==typeof this.settings.file_queue_error_handler).toString(),"\n"," ","upload_start_handler assigned: ",("function"==typeof this.settings.upload_start_handler).toString(),"\n"," ","upload_progress_handler assigned: ",("function"==typeof this.settings.upload_progress_handler).toString(),"\n"," ","upload_error_handler assigned: ",("function"==typeof this.settings.upload_error_handler).toString(),"\n"," ","upload_success_handler assigned: ",("function"==typeof this.settings.upload_success_handler).toString(),"\n"," ","upload_complete_handler assigned: ",("function"==typeof this.settings.upload_complete_handler).toString(),"\n"," ","debug_handler assigned: ",("function"==typeof this.settings.debug_handler).toString(),"\n"].join(""))},SWFUpload.prototype.addSetting=function(a,b,c){return this.settings[a]=void 0==b?c:b},SWFUpload.prototype.getSetting=function(a){return void 0!=this.settings[a]?this.settings[a]:""},SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement(),returnValue,returnString;try{returnString=movieElement.CallFunction(''+__flash__argumentsToXML(argumentArray,0)+""),returnValue=eval(returnString)}catch(ex){throw"Call to "+functionName+" failed"}return void 0!=returnValue&&"object"==typeof returnValue.post&&(returnValue=this.unescapeFilePostParams(returnValue)),returnValue},SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")},SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")},SWFUpload.prototype.startUpload=function(a){this.callFlash("StartUpload",[a])},SWFUpload.prototype.cancelUpload=function(a,b){b!==!1&&(b=!0),this.callFlash("CancelUpload",[a,b])},SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")},SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")},SWFUpload.prototype.setStats=function(a){this.callFlash("SetStats",[a])},SWFUpload.prototype.getFile=function(a){return"number"==typeof a?this.callFlash("GetFileByIndex",[a]):this.callFlash("GetFile",[a])},SWFUpload.prototype.addFileParam=function(a,b,c){return this.callFlash("AddFileParam",[a,b,c])},SWFUpload.prototype.removeFileParam=function(a,b){this.callFlash("RemoveFileParam",[a,b])},SWFUpload.prototype.setUploadURL=function(a){this.settings.upload_url=a.toString(),this.callFlash("SetUploadURL",[a])},SWFUpload.prototype.setPostParams=function(a){this.settings.post_params=a,this.callFlash("SetPostParams",[a])},SWFUpload.prototype.addPostParam=function(a,b){this.settings.post_params[a]=b,this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.removePostParam=function(a){delete this.settings.post_params[a],this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.setFileTypes=function(a,b){this.settings.file_types=a,this.settings.file_types_description=b,this.callFlash("SetFileTypes",[a,b])},SWFUpload.prototype.setFileSizeLimit=function(a){this.settings.file_size_limit=a,this.callFlash("SetFileSizeLimit",[a])},SWFUpload.prototype.setFileUploadLimit=function(a){this.settings.file_upload_limit=a,this.callFlash("SetFileUploadLimit",[a])},SWFUpload.prototype.setFileQueueLimit=function(a){this.settings.file_queue_limit=a,this.callFlash("SetFileQueueLimit",[a])},SWFUpload.prototype.setFilePostName=function(a){this.settings.file_post_name=a,this.callFlash("SetFilePostName",[a])},SWFUpload.prototype.setUseQueryString=function(a){this.settings.use_query_string=a,this.callFlash("SetUseQueryString",[a])},SWFUpload.prototype.setRequeueOnError=function(a){this.settings.requeue_on_error=a,this.callFlash("SetRequeueOnError",[a])},SWFUpload.prototype.setHTTPSuccess=function(a){"string"==typeof a&&(a=a.replace(" ","").split(",")),this.settings.http_success=a,this.callFlash("SetHTTPSuccess",[a])},SWFUpload.prototype.setAssumeSuccessTimeout=function(a){this.settings.assume_success_timeout=a,this.callFlash("SetAssumeSuccessTimeout",[a])},SWFUpload.prototype.setDebugEnabled=function(a){this.settings.debug_enabled=a,this.callFlash("SetDebugEnabled",[a])},SWFUpload.prototype.setButtonImageURL=function(a){void 0==a&&(a=""),this.settings.button_image_url=a,this.callFlash("SetButtonImageURL",[a])},SWFUpload.prototype.setButtonDimensions=function(a,b){this.settings.button_width=a,this.settings.button_height=b;var c=this.getMovieElement();void 0!=c&&(c.style.width=a+"px",c.style.height=b+"px"),this.callFlash("SetButtonDimensions",[a,b])},SWFUpload.prototype.setButtonText=function(a){this.settings.button_text=a,this.callFlash("SetButtonText",[a])},SWFUpload.prototype.setButtonTextPadding=function(a,b){this.settings.button_text_top_padding=b,this.settings.button_text_left_padding=a,this.callFlash("SetButtonTextPadding",[a,b])},SWFUpload.prototype.setButtonTextStyle=function(a){this.settings.button_text_style=a,this.callFlash("SetButtonTextStyle",[a])},SWFUpload.prototype.setButtonDisabled=function(a){this.settings.button_disabled=a,this.callFlash("SetButtonDisabled",[a])},SWFUpload.prototype.setButtonAction=function(a){this.settings.button_action=a,this.callFlash("SetButtonAction",[a])},SWFUpload.prototype.setButtonCursor=function(a){this.settings.button_cursor=a,this.callFlash("SetButtonCursor",[a])},SWFUpload.prototype.queueEvent=function(a,b){void 0==b?b=[]:b instanceof Array||(b=[b]);var c=this;if("function"==typeof this.settings[a])this.eventQueue.push(function(){this.settings[a].apply(this,b) -}),setTimeout(function(){c.executeNextEvent()},0);else if(null!==this.settings[a])throw"Event handler "+a+" is unknown or is not a function"},SWFUpload.prototype.executeNextEvent=function(){var a=this.eventQueue?this.eventQueue.shift():null;"function"==typeof a&&a.apply(this)},SWFUpload.prototype.unescapeFilePostParams=function(a){var b,c=/[$]([0-9a-f]{4})/i,d={};if(void 0!=a){for(var e in a.post)if(a.post.hasOwnProperty(e)){b=e;for(var f;null!==(f=c.exec(b));)b=b.replace(f[0],String.fromCharCode(parseInt("0x"+f[1],16)));d[b]=a.post[e]}a.post=d}return a},SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(a){return!1}},SWFUpload.prototype.flashReady=function(){var a=this.getMovieElement();return a?(this.cleanUp(a),void this.queueEvent("swfupload_loaded_handler")):void this.debug("Flash called back ready but the flash movie can't be found.")},SWFUpload.prototype.cleanUp=function(a){try{if(this.movieElement&&"unknown"==typeof a.CallFunction){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var b in a)try{"function"==typeof a[b]&&(a[b]=null)}catch(c){}}}catch(d){}window.__flash__removeCallback=function(a,b){try{a&&(a[b]=null)}catch(c){}}},SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")},SWFUpload.prototype.fileQueued=function(a){a=this.unescapeFilePostParams(a),this.queueEvent("file_queued_handler",a)},SWFUpload.prototype.fileQueueError=function(a,b,c){a=this.unescapeFilePostParams(a),this.queueEvent("file_queue_error_handler",[a,b,c])},SWFUpload.prototype.fileDialogComplete=function(a,b,c){this.queueEvent("file_dialog_complete_handler",[a,b,c])},SWFUpload.prototype.uploadStart=function(a){a=this.unescapeFilePostParams(a),this.queueEvent("return_upload_start_handler",a)},SWFUpload.prototype.returnUploadStart=function(a){var b;if("function"==typeof this.settings.upload_start_handler)a=this.unescapeFilePostParams(a),b=this.settings.upload_start_handler.call(this,a);else if(void 0!=this.settings.upload_start_handler)throw"upload_start_handler must be a function";void 0===b&&(b=!0),b=!!b,this.callFlash("ReturnUploadStart",[b])},SWFUpload.prototype.uploadProgress=function(a,b,c){a=this.unescapeFilePostParams(a),this.queueEvent("upload_progress_handler",[a,b,c])},SWFUpload.prototype.uploadError=function(a,b,c){a=this.unescapeFilePostParams(a),this.queueEvent("upload_error_handler",[a,b,c])},SWFUpload.prototype.uploadSuccess=function(a,b,c){a=this.unescapeFilePostParams(a),this.queueEvent("upload_success_handler",[a,b,c])},SWFUpload.prototype.uploadComplete=function(a){a=this.unescapeFilePostParams(a),this.queueEvent("upload_complete_handler",a)},SWFUpload.prototype.debug=function(a){this.queueEvent("debug_handler",a)},SWFUpload.prototype.debugMessage=function(a){if(this.settings.debug){var b,c=[];if("object"==typeof a&&"string"==typeof a.name&&"string"==typeof a.message){for(var d in a)a.hasOwnProperty(d)&&c.push(d+": "+a[d]);b=c.join("\n")||"",c=b.split("\n"),b="EXCEPTION: "+c.join("\nEXCEPTION: "),SWFUpload.Console.writeLine(b)}else SWFUpload.Console.writeLine(a)}},SWFUpload.Console={},SWFUpload.Console.writeLine=function(a){var b,c;try{b=document.getElementById("SWFUpload_Console"),b||(c=document.createElement("form"),document.getElementsByTagName("body")[0].appendChild(c),b=document.createElement("textarea"),b.id="SWFUpload_Console",b.style.fontFamily="monospace",b.setAttribute("wrap","off"),b.wrap="off",b.style.overflow="auto",b.style.width="700px",b.style.height="350px",b.style.margin="5px",c.appendChild(b)),b.value+=a+"\n",b.scrollTop=b.scrollHeight-b.clientHeight}catch(d){alert("Exception: "+d.name+" Message: "+d.message)}}}(),function(){"function"==typeof SWFUpload&&(SWFUpload.queue={},SWFUpload.prototype.initSettings=function(a){return function(){"function"==typeof a&&a.call(this),this.queueSettings={},this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0,this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler,this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler,this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler,this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler,this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}}(SWFUpload.prototype.initSettings),SWFUpload.prototype.startUpload=function(a){this.queueSettings.queue_cancelled_flag=!1,this.callFlash("StartUpload",[a])},SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=!0,this.stopUpload();for(var a=this.getStats();a.files_queued>0;)this.cancelUpload(),a=this.getStats()},SWFUpload.queue.uploadStartHandler=function(a){var b;return"function"==typeof this.queueSettings.user_upload_start_handler&&(b=this.queueSettings.user_upload_start_handler.call(this,a)),b=b===!1?!1:!0,this.queueSettings.queue_cancelled_flag=!b,b},SWFUpload.queue.uploadCompleteHandler=function(a){var b,c=this.queueSettings.user_upload_complete_handler;if(a.filestatus===SWFUpload.FILE_STATUS.COMPLETE&&this.queueSettings.queue_upload_count++,b="function"==typeof c?c.call(this,a)===!1?!1:!0:a.filestatus===SWFUpload.FILE_STATUS.QUEUED?!1:!0){var d=this.getStats();d.files_queued>0&&this.queueSettings.queue_cancelled_flag===!1?this.startUpload():this.queueSettings.queue_cancelled_flag===!1?(this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]),this.queueSettings.queue_upload_count=0):(this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0)}})}(),KindEditor.plugin("pagebreak",function(a){var b=this,c="pagebreak",d=a.undef(b.pagebreakHtml,'
      ');b.clickToolbar(c,function(){var c=b.cmd,e=c.range;b.focus();var f="br"==b.newlineTag||a.WEBKIT?"":'';if(b.insertHtml(d+f),""!==f){var g=a("#__kindeditor_tail_tag__",b.edit.doc);e.selectNodeContents(g[0]),g.removeAttr("id"),c.select()}})}),KindEditor.plugin("plainpaste",function(a){var b=this,c="plainpaste";b.clickToolbar(c,function(){var d=b.lang(c+"."),e='
      '+d.comment+'
      ',f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(){var c=g.val();c=a.escape(c),c=c.replace(/ {2}/g,"  "),c="p"==b.newlineTag?c.replace(/^/,"

      ").replace(/$/,"

      ").replace(/\n/g,"

      "):c.replace(/\n/g,"
      $&"),b.insertHtml(c).hideDialog().focus()}}}),g=a("textarea",f.div);g[0].focus()})}),KindEditor.plugin("preview",function(a){var b=this,c="preview";b.clickToolbar(c,function(){var d=(b.lang(c+"."),'

      '),e=b.createDialog({name:c,width:750,title:b.lang(c),body:d}),f=a("iframe",e.div),g=a.iframeDoc(f);g.open(),g.write(b.fullHtml()),g.close(),a(g.body).css("background-color","#FFF"),f[0].contentWindow.focus()})}),KindEditor.plugin("quickformat",function(a){function b(a){for(var b=a.first();b&&b.first();)b=b.first();return b}var c=this,d="quickformat",e=a.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");c.clickToolbar(d,function(){c.focus();for(var d,f=c.edit.doc,g=c.cmd.range,h=a(f.body).first(),i=[],j=[],k=g.createBookmark(!0);h;){d=h.next();var l=b(h);l&&"img"==l.name||(e[h.name]?(h.html(h.html().replace(/^(\s| | )+/gi,"")),h.css("text-indent","2em")):j.push(h),(!d||e[d.name]||e[h.name]&&!e[d.name])&&(j.length>0&&i.push(j),j=[])),h=d}a.each(i,function(b,c){var d=a('

      ',f);c[0].before(d),a.each(c,function(a,b){d.append(b)})}),g.moveToBookmark(k),c.addBookmark()})}),KindEditor.plugin("table",function(a){function b(a,b){b=b.toUpperCase(),a.css("background-color",b),a.css("color","#000000"===b?"#FFFFFF":"#000000"),a.html(b)}function c(c,d){function f(){a.each(i,function(){this.remove()}),i=[],a(document).unbind("click,mousedown",f),c.unbind("click,mousedown",f)}d.bind("click,mousedown",function(a){a.stopPropagation()}),d.click(function(){f();var d=a(this),g=d.pos(),h=a.colorpicker({x:g.x,y:g.y+d.height(),z:811214,selectedColor:a(this).html(),colors:e.colorTable,noColor:e.lang("noColor"),shadowMode:e.shadowMode,click:function(a){b(d,a),f()}});i.push(h),a(document).bind("click,mousedown",f),c.bind("click,mousedown",f)})}function d(a,b,c){for(var d=0,e=0,f=b.cells.length;f>e&&b.cells[e]!=c;e++)d+=b.cells[e].rowSpan-1;return c.cellIndex-d}var e=this,f="table",g=e.lang(f+"."),h="ke-zeroborder",i=[];e.plugin.table={prop:function(d){var i=['
      ','
      ','",g.rows+'   ',g.cols+' ',"
      ",'
      ','",g.width+'   ','   ",g.height+'   ','","
      ",'
      ','",g.padding+'   ',g.spacing+' ',"
      ",'
      ','",'","
      ",'
      ','",g.borderWidth+'   ',g.borderColor+' ',"
      ",'
      ','",'',"
      ","
      "].join(""),j=e.cmd.range.createBookmark(),k=e.createDialog({name:f,width:500,title:e.lang(f),body:i,beforeRemove:function(){w.unbind()},yesBtn:{name:e.lang("yes"),click:function(){var b=m.val(),c=n.val(),d=o.val(),f=p.val(),g=q.val(),i=r.val(),k=s.val(),l=t.val(),y=u.val(),z=v.val(),A=a(w[0]).html()||"",B=a(w[1]).html()||"";if(0==b||!/^\d+$/.test(b))return alert(e.lang("invalidRows")),void m[0].focus();if(0==c||!/^\d+$/.test(c))return alert(e.lang("invalidRows")),void n[0].focus();if(!/^\d*$/.test(d))return alert(e.lang("invalidWidth")),void o[0].focus();if(!/^\d*$/.test(f))return alert(e.lang("invalidHeight")),void p[0].focus();if(!/^\d*$/.test(k))return alert(e.lang("invalidPadding")),void s[0].focus();if(!/^\d*$/.test(l))return alert(e.lang("invalidSpacing")),void t[0].focus();if(!/^\d*$/.test(z))return alert(e.lang("invalidBorder")),void v[0].focus();if(x)return""!==d?x.width(d+g):x.css("width",""),void 0!==x[0].width&&x.removeAttr("width"),""!==f?x.height(f+i):x.css("height",""),void 0!==x[0].height&&x.removeAttr("height"),x.css("background-color",B),void 0!==x[0].bgColor&&x.removeAttr("bgColor"),""!==k?x[0].cellPadding=k:x.removeAttr("cellPadding"),""!==l?x[0].cellSpacing=l:x.removeAttr("cellSpacing"),""!==y?x[0].align=y:x.removeAttr("align"),""!==z?x.attr("border",z):x.removeAttr("border"),""===z||"0"===z?x.addClass(h):x.removeClass(h),""!==A?x.attr("borderColor",A):x.removeAttr("borderColor"),e.hideDialog().focus(),e.cmd.range.moveToBookmark(j),e.cmd.select(),void e.addBookmark();var C="";""!==d&&(C+="width:"+d+g+";"),""!==f&&(C+="height:"+f+i+";"),""!==B&&(C+="background-color:"+B+";");var D="E;E++){D+="";for(var F=0;c>F;F++)D+=""+(a.IE?" ":"
      ")+"";D+=""}D+="",a.IE||(D+="
      "),e.insertHtml(D),e.select().hideDialog().focus(),e.addBookmark()}}}),l=k.div,m=a('[name="rows"]',l).val(3),n=a('[name="cols"]',l).val(2),o=a('[name="width"]',l).val(100),p=a('[name="height"]',l),q=a('[name="widthType"]',l),r=a('[name="heightType"]',l),s=a('[name="padding"]',l).val(2),t=a('[name="spacing"]',l).val(0),u=a('[name="align"]',l),v=a('[name="border"]',l).val(1),w=a(".ke-input-color",l);c(l,w.eq(0)),c(l,w.eq(1)),b(w.eq(0),"#000000"),b(w.eq(1),""),m[0].focus(),m[0].select();var x;if(!d&&(x=e.plugin.getSelectedTable())){m.val(x[0].rows.length),n.val(x[0].rows.length>0?x[0].rows[0].cells.length:0),m.attr("disabled",!0),n.attr("disabled",!0);var y,z=x[0].style.width||x[0].width,A=x[0].style.height||x[0].height;void 0!==z&&(y=/^(\d+)((?:px|%)*)$/.exec(z))?(o.val(y[1]),q.val(y[2])):o.val(""),void 0!==A&&(y=/^(\d+)((?:px|%)*)$/.exec(A))&&(p.val(y[1]),r.val(y[2])),s.val(x[0].cellPadding||""),t.val(x[0].cellSpacing||""),u.val(x[0].align||""),v.val(void 0===x[0].border?"":x[0].border),b(w.eq(0),a.toHex(x.attr("borderColor")||"")),b(w.eq(1),a.toHex(x[0].style.backgroundColor||x[0].bgColor||"")),o[0].focus(),o[0].select()}},cellprop:function(){var d=['
      ','
      ','",g.width+'   ','   ",g.height+'   ','","
      ",'
      ','",g.textAlign+' ",g.verticalAlign+' ","
      ",'
      ','",g.borderWidth+'   ',g.borderColor+' ',"
      ",'
      ','",'',"
      ","
      "].join(""),h=e.cmd.range.createBookmark(),i=e.createDialog({name:f,width:500,title:e.lang("tablecell"),body:d,beforeRemove:function(){t.unbind()},yesBtn:{name:e.lang("yes"),click:function(){var b=k.val(),c=l.val(),d=m.val(),f=n.val(),g=(o.val(),p.val(),q.val()),i=r.val(),j=s.val(),u=a(t[0]).html()||"",w=a(t[1]).html()||"";return/^\d*$/.test(b)?/^\d*$/.test(c)?/^\d*$/.test(j)?(v.css({width:""!==b?b+d:"",height:""!==c?c+f:"","background-color":w,"text-align":g,"vertical-align":i,"border-width":j,"border-style":""!==j?"solid":"","border-color":u}),e.hideDialog().focus(),e.cmd.range.moveToBookmark(h),e.cmd.select(),void e.addBookmark()):(alert(e.lang("invalidBorder")),void s[0].focus()):(alert(e.lang("invalidHeight")),void l[0].focus()):(alert(e.lang("invalidWidth")),void k[0].focus())}}}),j=i.div,k=a('[name="width"]',j).val(100),l=a('[name="height"]',j),m=a('[name="widthType"]',j),n=a('[name="heightType"]',j),o=a('[name="padding"]',j).val(2),p=a('[name="spacing"]',j).val(0),q=a('[name="textAlign"]',j),r=a('[name="verticalAlign"]',j),s=a('[name="border"]',j).val(1),t=a(".ke-input-color",j);c(j,t.eq(0)),c(j,t.eq(1)),b(t.eq(0),"#000000"),b(t.eq(1),""),k[0].focus(),k[0].select();var u,v=e.plugin.getSelectedCell(),w=v[0].style.width||v[0].width||"",x=v[0].style.height||v[0].height||"";(u=/^(\d+)((?:px|%)*)$/.exec(w))?(k.val(u[1]),m.val(u[2])):k.val(""),(u=/^(\d+)((?:px|%)*)$/.exec(x))&&(l.val(u[1]),n.val(u[2])),q.val(v[0].style.textAlign||""),r.val(v[0].style.verticalAlign||"");var y=v[0].style.borderWidth||"";y&&(y=parseInt(y)),s.val(y),b(t.eq(0),a.toHex(v[0].style.borderColor||"")),b(t.eq(1),a.toHex(v[0].style.backgroundColor||"")),k[0].focus(),k[0].select()},insert:function(){this.prop(!0)},"delete":function(){var a=e.plugin.getSelectedTable();e.cmd.range.setStartBefore(a[0]).collapse(!0),e.cmd.select(),a.remove(),e.addBookmark()},colinsert:function(b){var c=e.plugin.getSelectedTable()[0],f=e.plugin.getSelectedRow()[0],g=e.plugin.getSelectedCell()[0],h=g.cellIndex+b;h+=c.rows[0].cells.length-f.cells.length;for(var i=0,j=c.rows.length;j>i;i++){var k=c.rows[i],l=k.insertCell(h);l.innerHTML=a.IE?"":"
      ",h=d(c,k,l)}e.cmd.range.selectNodeContents(g).collapse(!0),e.cmd.select(),e.addBookmark()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(b){var c=e.plugin.getSelectedTable()[0],d=e.plugin.getSelectedRow()[0],f=e.plugin.getSelectedCell()[0],g=d.rowIndex;1===b&&(g=d.rowIndex+(f.rowSpan-1)+b);for(var h=c.insertRow(g),i=0,j=d.cells.length;j>i;i++){d.cells[i].rowSpan>1&&(j-=d.cells[i].rowSpan-1);var k=h.insertCell(i);1===b&&d.cells[i].colSpan>1&&(k.colSpan=d.cells[i].colSpan),k.innerHTML=a.IE?"":"
      "}for(var l=g;l>=0;l--){var m=c.rows[l].cells;if(m.length>i){for(var n=f.cellIndex;n>=0;n--)m[n].rowSpan>1&&(m[n].rowSpan+=1);break}}e.cmd.range.selectNodeContents(f).collapse(!0),e.cmd.select(),e.addBookmark()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var a=e.plugin.getSelectedTable()[0],b=e.plugin.getSelectedRow()[0],c=e.plugin.getSelectedCell()[0],d=b.rowIndex,f=d+c.rowSpan,g=a.rows[f];if(!(a.rows.length<=f)){var h=c.cellIndex;if(!(g.cells.length<=h)){var i=g.cells[h];c.colSpan===i.colSpan&&(c.rowSpan+=i.rowSpan,g.deleteCell(h),e.cmd.range.selectNodeContents(c).collapse(!0),e.cmd.select(),e.addBookmark())}}},colmerge:function(){var a=(e.plugin.getSelectedTable()[0],e.plugin.getSelectedRow()[0]),b=e.plugin.getSelectedCell()[0],c=(a.rowIndex,b.cellIndex),d=c+1;if(!(a.cells.length<=d)){var f=a.cells[d];b.rowSpan===f.rowSpan&&(b.colSpan+=f.colSpan,a.deleteCell(d),e.cmd.range.selectNodeContents(b).collapse(!0),e.cmd.select(),e.addBookmark())}},rowsplit:function(){var b=e.plugin.getSelectedTable()[0],c=e.plugin.getSelectedRow()[0],f=e.plugin.getSelectedCell()[0],g=c.rowIndex;if(1!==f.rowSpan){for(var h=d(b,c,f),i=1,j=f.rowSpan;j>i;i++){var k=b.rows[g+i],l=k.insertCell(h);f.colSpan>1&&(l.colSpan=f.colSpan),l.innerHTML=a.IE?"":"
      ",h=d(b,k,l)}a(f).removeAttr("rowSpan"),e.cmd.range.selectNodeContents(f).collapse(!0),e.cmd.select(),e.addBookmark()}},colsplit:function(){var b=(e.plugin.getSelectedTable()[0],e.plugin.getSelectedRow()[0]),c=e.plugin.getSelectedCell()[0],d=c.cellIndex;if(1!==c.colSpan){for(var f=1,g=c.colSpan;g>f;f++){var h=b.insertCell(d+f);c.rowSpan>1&&(h.rowSpan=c.rowSpan),h.innerHTML=a.IE?"":"
      "}a(c).removeAttr("colSpan"),e.cmd.range.selectNodeContents(c).collapse(!0),e.cmd.select(),e.addBookmark()}},coldelete:function(){for(var b=e.plugin.getSelectedTable()[0],c=e.plugin.getSelectedRow()[0],d=e.plugin.getSelectedCell()[0],f=d.cellIndex,g=0,h=b.rows.length;h>g;g++){var i=b.rows[g],j=i.cells[f];j.colSpan>1?(j.colSpan-=1,1===j.colSpan&&a(j).removeAttr("colSpan")):i.deleteCell(f),j.rowSpan>1&&(g+=j.rowSpan-1)}0===c.cells.length?(e.cmd.range.setStartBefore(b).collapse(!0),e.cmd.select(),a(b).remove()):e.cmd.selection(!0),e.addBookmark()},rowdelete:function(){for(var b=e.plugin.getSelectedTable()[0],c=e.plugin.getSelectedRow()[0],d=e.plugin.getSelectedCell()[0],f=c.rowIndex,g=d.rowSpan-1;g>=0;g--)b.deleteRow(f+g);0===b.rows.length?(e.cmd.range.setStartBefore(b).collapse(!0),e.cmd.select(),a(b).remove()):e.cmd.selection(!0),e.addBookmark()}},e.clickToolbar(f,e.plugin.table.prop)}),KindEditor.plugin("template",function(a){function b(b){return e+b+"?ver="+encodeURIComponent(a.DEBUG?a.TIME:a.VERSION)}var c=this,d="template",e=(c.lang(d+"."),c.pluginsPath+d+"/html/");c.clickToolbar(d,function(){var e=c.lang(d+"."),f=['
      ','
      ','
      ',e.selectTemplate+"
      ",'
      ',' ","
      ",'
      ',"
      ",'',"
      "].join("");var g=c.createDialog({name:d,width:500,title:c.lang(d),body:html,yesBtn:{name:c.lang("yes"),click:function(){var b=a.iframeDoc(j);c[i[0].checked?"html":"insertHtml"](b.body.innerHTML).hideDialog().focus()}}}),h=a("select",g.div),i=a('[name="replaceFlag"]',g.div),j=a("iframe",g.div);i[0].checked=!0,j.attr("src",b(h.val())),h.change(function(){j.attr("src",b(this.value))})})}),KindEditor.plugin("wordpaste",function(a){var b=this,c="wordpaste";b.clickToolbar(c,function(){var d=b.lang(c+"."),e='
      '+d.comment+'
      ',f=b.createDialog({name:c,width:450,title:b.lang(c),body:e,yesBtn:{name:b.lang("yes"),click:function(){var c=i.body.innerHTML;c=a.clearMsWord(c,b.filterMode?b.htmlTags:a.options.htmlTags),b.insertHtml(c).hideDialog().focus()}}}),g=f.div,h=a("iframe",g),i=a.iframeDoc(h);a.IE||(i.designMode="on"),i.open(),i.write("WordPaste"),i.write(''),a.IE||i.write("
      "),i.write(""),i.close(),a.IE&&(i.body.contentEditable="true"),h[0].contentWindow.focus()})}),KindEditor.plugin("fixtoolbar",function(a){function b(){var b=a(".ke-toolbar"),c=b.pos().y;a(window).bind("scroll",function(){"fixed"==b.css("position")?document.body.scrollTop-c<0&&(b.css("position","static"),b.css("top","auto")):b.pos().y-document.body.scrollTop<0&&(b.css("position","fixed"),b.css("top",0))})}var c=this;c.fixToolBar&&(c.isCreated?b():c.afterCreate(b))}); \ No newline at end of file diff --git a/web/kindeditor/kindeditor.js b/web/kindeditor/kindeditor.js deleted file mode 100644 index f646288..0000000 --- a/web/kindeditor/kindeditor.js +++ /dev/null @@ -1,7 +0,0 @@ -/* KindEditor 4.1.11 (2016-03-31), Copyright (C) kindsoft.net, Licence: http://kindeditor.net/license.php */ -!function(window,undefined){function _isArray(a){return a?"[object Array]"===Object.prototype.toString.call(a):!1}function _isFunction(a){return a?"[object Function]"===Object.prototype.toString.call(a):!1}function _inArray(a,b){for(var c=0,d=b.length;d>c;c++)if(a===b[c])return c;return-1}function _each(a,b){if(_isArray(a))for(var c=0,d=a.length;d>c&&b.call(a[c],c,a[c])!==!1;c++);else for(var e in a)if(a.hasOwnProperty(e)&&b.call(a[e],e,a[e])===!1)break}function _trim(a){return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}function _inString(a,b,c){return c=c===undefined?",":c,(c+b+c).indexOf(c+a+c)>=0}function _addUnit(a,b){return b=b||"px",a&&/^-?\d+(?:\.\d+)?$/.test(a)?a+b:a}function _removeUnit(a){var b;return a&&(b=/(\d+)/.exec(a))?parseInt(b[1],10):0}function _escape(a){return a.replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function _unescape(a){return a.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(a){var b=a.split("-");return a="",_each(b,function(b,c){a+=b>0?c.charAt(0).toUpperCase()+c.substr(1):c}),a}function _toHex(a){function b(a){var b=parseInt(a,10).toString(16).toUpperCase();return b.length>1?b:"0"+b}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function(a,c,d,e){return"#"+b(c)+b(d)+b(e)})}function _toMap(a,b){b=b===undefined?",":b;var c,d={},e=_isArray(a)?a:a.split(b);return _each(e,function(a,b){if(c=/^(\d+)\.\.(\d+)$/.exec(b))for(var e=parseInt(c[1],10);e<=parseInt(c[2],10);e++)d[e.toString()]=!0;else d[b]=!0}),d}function _toArray(a,b){return Array.prototype.slice.call(a,b||0)}function _undef(a,b){return a===undefined?b:a}function _invalidUrl(a){return!a||/[<>"]/.test(a)}function _addParam(a,b){return a.indexOf("?")>=0?a+"&"+b:a+"?"+b}function _extend(a,b,c){c||(c=b,b=null);var d;if(b){var e=function(){};e.prototype=b.prototype,d=new e,_each(c,function(a,b){d[a]=b})}else d=c;d.constructor=a,a.prototype=d,a.parent=b?b.prototype:null}function _json(text){var match;(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))&&(text=match[0]);var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+text+")");throw"JSON parse error"}function _getBasePath(){for(var a,b=document.getElementsByTagName("script"),c=0,d=b.length;d>c;c++)if(a=b[c].src||"",/kindeditor[\w\-\.]*\.js/.test(a))return a.substring(0,a.lastIndexOf("/")+1);return""}function _bindEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,_useCapture):a.attachEvent&&a.attachEvent("on"+b,c)}function _unbindEvent(a,b,c){a.removeEventListener?a.removeEventListener(b,c,_useCapture):a.detachEvent&&a.detachEvent("on"+b,c)}function KEvent(a,b){this.init(a,b)}function _getId(a){return a[_eventExpendo]||null}function _setId(a){return a[_eventExpendo]=++_eventId,_eventId}function _removeId(a){try{delete a[_eventExpendo]}catch(b){a.removeAttribute&&a.removeAttribute(_eventExpendo)}}function _bind(a,b,c){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_bind(a,this,c)});var d=_getId(a);d||(d=_setId(a)),_eventData[d]===undefined&&(_eventData[d]={});var e=_eventData[d][b];e&&e.length>0?_unbindEvent(a,b,e[0]):(_eventData[d][b]=[],_eventData[d].el=a),e=_eventData[d][b],0===e.length&&(e[0]=function(b){var c=b?new KEvent(a,b):undefined;_each(e,function(b,d){b>0&&d&&d.call(a,c)})}),_inArray(c,e)<0&&e.push(c),_bindEvent(a,b,e[0])}function _unbind(a,b,c){if(b&&b.indexOf(",")>=0)return void _each(b.split(","),function(){_unbind(a,this,c)});var d=_getId(a);if(d){if(b===undefined)return void(d in _eventData&&(_each(_eventData[d],function(b,c){"el"!=b&&c.length>0&&_unbindEvent(a,b,c[0])}),delete _eventData[d],_removeId(a)));if(_eventData[d]){var e=_eventData[d][b];if(e&&e.length>0){c===undefined?(_unbindEvent(a,b,e[0]),delete _eventData[d][b]):(_each(e,function(a,b){a>0&&b===c&&e.splice(a,1)}),1==e.length&&(_unbindEvent(a,b,e[0]),delete _eventData[d][b]));var f=0;_each(_eventData[d],function(){f++}),2>f&&(delete _eventData[d],_removeId(a))}}}}function _fire(a,b){if(b.indexOf(",")>=0)return void _each(b.split(","),function(){_fire(a,this)});var c=_getId(a);if(c){var d=_eventData[c][b];_eventData[c]&&d&&d.length>0&&d[0]()}}function _ctrl(a,b,c){b=/^\d{2,}$/.test(b)?b:b.toUpperCase().charCodeAt(0),_bind(a,"keydown",function(d){!d.ctrlKey||d.which!=b||d.shiftKey||d.altKey||(c.call(a),d.stop())})}function _ready(a){function b(){e||(e=!0,a(KindEditor),_readyFinished=!0)}function c(){if(!e){try{document.documentElement.doScroll("left")}catch(a){return void setTimeout(c,100)}b()}}function d(){"complete"===document.readyState&&b()}if(_readyFinished)return void a(KindEditor);var e=!1;if(document.addEventListener)_bind(document,"DOMContentLoaded",b);else if(document.attachEvent){_bind(document,"readystatechange",d);var f=!1;try{f=null==window.frameElement}catch(g){}document.documentElement.doScroll&&f&&c()}_bind(window,"load",b)}function _getCssList(a){for(var b,c={},d=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g;b=d.exec(a);){var e=_trim(b[1].toLowerCase()),f=_trim(_toHex(b[2]));c[e]=f}return c}function _getAttrList(a){for(var b,c={},d=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g;b=d.exec(a);){var e=(b[1]||b[2]||b[4]||b[6]).toLowerCase(),f=(b[2]?b[3]:b[4]?b[5]:b[7])||"";c[e]=f}return c}function _addClassToTag(a,b){return a=/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,c,d,e){return(" "+d+" ").indexOf(" "+b+" ")<0?""===d?c+b+e:c+d+" "+b+e:a}):a.substr(0,a.length-1)+' class="'+b+'">'}function _formatCss(a){var b="";return _each(_getCssList(a),function(a,c){b+=a+":"+c+";"}),b}function _formatUrl(a,b,c,d){function e(a){for(var b=a.split("/"),c=[],d=0,e=b.length;e>d;d++){var f=b[d];".."==f?c.length>0&&c.pop():""!==f&&"."!=f&&c.push(f)}return"/"+c.join("/")}function f(b,c){if(a.substr(0,b.length)===b){for(var e=[],g=0;c>g;g++)e.push("..");var i=".";return e.length>0&&(i+="/"+e.join("/")),"/"==d&&(i+="/"),i+a.substr(b.length)}return(h=/^(.*)\//.exec(b))?f(h[1],++c):void 0}if(b=_undef(b,"").toLowerCase(),"data:"!=a.substr(0,5)&&(a=a.replace(/([^:])\/\//g,"$1/")),_inArray(b,["absolute","relative","domain"])<0)return a;if(c=c||location.protocol+"//"+location.host,d===undefined){var g=location.pathname.match(/^(\/.*)\//);d=g?g[1]:""}var h;if(h=/^(\w+:\/\/[^\/]*)/.exec(a)){if(h[1]!==c)return a}else if(/^\w+:/.test(a))return a;return/^\//.test(a)?a=c+e(a.substr(1)):/^\w+:\/\//.test(a)||(a=c+e(d+"/"+a)),"relative"===b?a=f(c+d,0).substr(2):"absolute"===b&&a.substr(0,c.length)===c&&(a=a.substr(c.length)),a}function _formatHtml(a,b,c,d,e){null==a&&(a=""),c=c||"",d=_undef(d,!1),e=_undef(e," ");var f="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+d}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,"

      "),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1
      $2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"©"),a=a.replace(/\u00AE/g,"®"),a=a.replace(/\u2003/g," "),a=a.replace(/\u3000/g," "),a=a.replace(/<[^>]+/g,function(a){return a.replace(/\s+/g," ")});var g={};b&&(_each(b,function(a,b){for(var c=a.split(","),d=0,e=c.length;e>d;d++)g[c[d]]=_toMap(b)}),g.script||(a=a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi,"")),g.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")));var h=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g,i=[];return a=a.replace(h,function(a,h,j,k,l,m,n){var o=a,p=h||"",q=j||"",r=k.toLowerCase(),s=l||"",t=m?" "+m:"",u=n||"";if(b&&!g[r])return"";if(""===t&&_SINGLE_TAG_MAP[r]&&(t=" /"),_INLINE_TAG_MAP[r]&&(p&&(p=" "),u&&(u=" ")),_PRE_TAG_MAP[r]&&(q?u="\n":p="\n"),d&&"br"==r&&(u="\n"),_BLOCK_TAG_MAP[r]&&!_PRE_TAG_MAP[r])if(d){q&&i.length>0&&i[i.length-1]===r?i.pop():i.push(r),p="\n",u="\n";for(var v=0,w=q?i.length:i.length-1;w>v;v++)p+=e,q||(u+=e);t?i.pop():q||(u+=e)}else p=u="";if(""!==s){var x=_getAttrList(o);if("font"===r){var y={},z="";_each(x,function(a,b){"color"===a&&(y.color=b,delete x[a]),"size"===a&&(y["font-size"]=f[parseInt(b,10)-1]||"",delete x[a]),"face"===a&&(y["font-family"]=b,delete x[a]),"style"===a&&(z=b)}),z&&!/;$/.test(z)&&(z+=";"),_each(y,function(a,b){""!==b&&(/\s/.test(b)&&(b="'"+b+"'"),z+=a+":"+b+";")}),x.style=z}_each(x,function(a,d){if(_FILL_ATTR_MAP[a]&&(x[a]=a),_inArray(a,["src","href"])>=0&&(x[a]=_formatUrl(d,c)),(b&&"style"!==a&&!g[r]["*"]&&!g[r][a]||"body"===r&&"contenteditable"===a||/^kindeditor_\d+$/.test(a))&&delete x[a],"style"===a&&""!==d){var e=_getCssList(d);_each(e,function(a){!b||g[r].style||g[r]["."+a]||delete e[a]});var f="";_each(e,function(a,b){f+=a+":"+b+";"}),x.style=f}}),s="",_each(x,function(a,b){("style"!==a||""!==b)&&(b=b.replace(/"/g,"""),s+=" "+a+'="'+b+'"')})}return"font"===r&&(r="span"),p+"<"+q+r+s+t+">"+u}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function(a,b,c,d){return b+c.replace(/\n/g,'\n')+d}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/\n/g,"\n"),_trim(a)}function _clearMsWord(a,b){return a=a.replace(//gi,"").replace(//gi,"").replace(/]*>[\s\S]*?<\/style>/gi,"").replace(/]*>[\s\S]*?<\/script>/gi,"").replace(/]+>[\s\S]*?<\/w:[^>]+>/gi,"").replace(/]+>[\s\S]*?<\/o:[^>]+>/gi,"").replace(/[\s\S]*?<\/xml>/gi,"").replace(/<(?:table|td)[^>]*>/gi,function(a){return a.replace(/border-bottom:([#\w\s]+)/gi,"border:$1")}),_formatHtml(a,b)}function _mediaType(a){return/\.(rm|rmvb)(\?|$)/i.test(a)?"audio/x-pn-realaudio-plugin":/\.(swf|flv)(\?|$)/i.test(a)?"application/x-shockwave-flash":"video/mp4"}function _mediaClass(a){return/realaudio/i.test(a)?"ke-rm":/flash/i.test(a)?"ke-flash":"ke-media"}function _mediaAttrs(a){return _getAttrList(unescape(a))}function _mediaEmbed(a){var b="