├── .gitignore ├── README.md ├── cfg └── .placeholder ├── package.json ├── public ├── app.js ├── css │ ├── styles.css │ └── ui-lightness │ │ ├── images │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_228ef1_256x240.png │ │ ├── ui-icons_ef8c08_256x240.png │ │ ├── ui-icons_ffd27a_256x240.png │ │ └── ui-icons_ffffff_256x240.png │ │ └── jquery-ui-1.8.16.custom.css ├── img │ ├── busy.gif │ ├── error.gif │ └── success.gif ├── index.html ├── js │ ├── jquery-ui-1.8.16.custom.min.js │ ├── jquery.dataTables.min.js │ ├── jquery.min.js │ ├── knockout-latest.js │ ├── knockout.custom.js │ ├── ko.slider.js │ ├── model.js │ ├── require.js │ └── splitter.js ├── models │ ├── connectionSettings.js │ ├── main.js │ ├── navigation.js │ └── query.js └── templates │ ├── connectionSettings.tmpl │ ├── main.tmpl │ ├── navigation.tmpl │ └── query.tmpl └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | /cfg/cfg.json 2 | /.project 3 | /node_modules 4 | /test-db -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sample application using NodeJS and Firebird SQL. 2 | 3 | ## Dependencies: 4 | - [ExpressJS](http://expressjs.com/) 5 | - [node-firebird-libfbclient](https://github.com/xdenser/node-firebird-libfbclient) 6 | - [NodeJS](http://nodejs.org/) 7 | - [libfbclient](http://www.firebirdsql.org/) 8 | 9 | ## Starting Installing node dependencies 10 | 11 | cd node-fb-sample 12 | npm install 13 | 14 | ## Starting Run 15 | 16 | node server 17 | 18 | from program root directory. 19 | Direct your browser to 20 | 21 | http://localhost:8080 22 | 23 | 24 | ## On Windows 25 | You may use ready to run [zipped package](https://github.com/downloads/xdenser/node-fb-sample/fb-isql.zip) from project downloads section on github. 26 | It needs only properly installed Firebird Client. 27 | -------------------------------------------------------------------------------- /cfg/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/cfg/.placeholder -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-fb-sample", 3 | "description": "Sample node-firebird-libfbclient application using NodeJS and Firebird SQL (libfbclient is required)", 4 | "version": "0.0.2", 5 | "dependencies": { 6 | "express": "4.*", 7 | "firebird": "*", 8 | "body-parser": "*" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/xdenser/node-fb-sample.git" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /public/app.js: -------------------------------------------------------------------------------- 1 | require(['models/main'],function(){ 2 | $.get("templates/main.tmpl", function(template) { 3 | $("body").append( template ); 4 | ko.applyBindings(ko.getModel('main')); 5 | }); 6 | }) 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/css/styles.css: -------------------------------------------------------------------------------- 1 | .nav-panel{ 2 | width: 20%; 3 | height: 100%; 4 | } 5 | .main-panel{ 6 | width: 80%; 7 | height: 100%; 8 | } 9 | 10 | #spliter{ 11 | width: 100%; 12 | height: 100%; 13 | } 14 | 15 | html, body{ 16 | height: 100%; 17 | width: 100%; 18 | overflow: hidden; 19 | } 20 | 21 | .vsplitbar { 22 | width: 5px; 23 | background: #aaa; 24 | } 25 | .dialog{ 26 | display: none; 27 | } 28 | -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /public/css/ui-lightness/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/css/ui-lightness/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /public/css/ui-lightness/jquery-ui-1.8.16.custom.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI CSS Framework 1.8.16 3 | * 4 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming/API 9 | */ 10 | 11 | /* Layout helpers 12 | ----------------------------------*/ 13 | .ui-helper-hidden { display: none; } 14 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 15 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 16 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 17 | .ui-helper-clearfix { display: inline-block; } 18 | /* required comment for clearfix to work in Opera \*/ 19 | * html .ui-helper-clearfix { height:1%; } 20 | .ui-helper-clearfix { display:block; } 21 | /* end clearfix */ 22 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 23 | 24 | 25 | /* Interaction Cues 26 | ----------------------------------*/ 27 | .ui-state-disabled { cursor: default !important; } 28 | 29 | 30 | /* Icons 31 | ----------------------------------*/ 32 | 33 | /* states and images */ 34 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 35 | 36 | 37 | /* Misc visuals 38 | ----------------------------------*/ 39 | 40 | /* Overlays */ 41 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 42 | 43 | 44 | /* 45 | * jQuery UI CSS Framework 1.8.16 46 | * 47 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 48 | * Dual licensed under the MIT or GPL Version 2 licenses. 49 | * http://jquery.org/license 50 | * 51 | * http://docs.jquery.com/UI/Theming/API 52 | * 53 | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px 54 | */ 55 | 56 | 57 | /* Component containers 58 | ----------------------------------*/ 59 | .ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } 60 | .ui-widget .ui-widget { font-size: 1em; } 61 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } 62 | .ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } 63 | .ui-widget-content a { color: #333333; } 64 | .ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } 65 | .ui-widget-header a { color: #ffffff; } 66 | 67 | /* Interaction states 68 | ----------------------------------*/ 69 | .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } 70 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } 71 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } 72 | .ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } 73 | .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } 74 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } 75 | .ui-widget :active { outline: none; } 76 | 77 | /* Interaction Cues 78 | ----------------------------------*/ 79 | .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } 80 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } 81 | .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } 82 | .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } 83 | .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } 84 | .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } 85 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 86 | .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 87 | 88 | /* Icons 89 | ----------------------------------*/ 90 | 91 | /* states and images */ 92 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } 93 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } 94 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } 95 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } 96 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } 97 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } 98 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } 99 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } 100 | 101 | /* positioning */ 102 | .ui-icon-carat-1-n { background-position: 0 0; } 103 | .ui-icon-carat-1-ne { background-position: -16px 0; } 104 | .ui-icon-carat-1-e { background-position: -32px 0; } 105 | .ui-icon-carat-1-se { background-position: -48px 0; } 106 | .ui-icon-carat-1-s { background-position: -64px 0; } 107 | .ui-icon-carat-1-sw { background-position: -80px 0; } 108 | .ui-icon-carat-1-w { background-position: -96px 0; } 109 | .ui-icon-carat-1-nw { background-position: -112px 0; } 110 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 111 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 112 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 113 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 114 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 115 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 116 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 117 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 118 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 119 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 120 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 121 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 122 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 123 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 124 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 125 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 126 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 127 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 128 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 129 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 130 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 131 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 132 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 133 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 134 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 135 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 136 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 137 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 138 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 139 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 140 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 141 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 142 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 143 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 144 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 145 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 146 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 147 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 148 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 149 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 150 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 151 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 152 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 153 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 154 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 155 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 156 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 157 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 158 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 159 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 160 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 161 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 162 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 163 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 164 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 165 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 166 | .ui-icon-arrow-4 { background-position: 0 -80px; } 167 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 168 | .ui-icon-extlink { background-position: -32px -80px; } 169 | .ui-icon-newwin { background-position: -48px -80px; } 170 | .ui-icon-refresh { background-position: -64px -80px; } 171 | .ui-icon-shuffle { background-position: -80px -80px; } 172 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 173 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 174 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 175 | .ui-icon-folder-open { background-position: -16px -96px; } 176 | .ui-icon-document { background-position: -32px -96px; } 177 | .ui-icon-document-b { background-position: -48px -96px; } 178 | .ui-icon-note { background-position: -64px -96px; } 179 | .ui-icon-mail-closed { background-position: -80px -96px; } 180 | .ui-icon-mail-open { background-position: -96px -96px; } 181 | .ui-icon-suitcase { background-position: -112px -96px; } 182 | .ui-icon-comment { background-position: -128px -96px; } 183 | .ui-icon-person { background-position: -144px -96px; } 184 | .ui-icon-print { background-position: -160px -96px; } 185 | .ui-icon-trash { background-position: -176px -96px; } 186 | .ui-icon-locked { background-position: -192px -96px; } 187 | .ui-icon-unlocked { background-position: -208px -96px; } 188 | .ui-icon-bookmark { background-position: -224px -96px; } 189 | .ui-icon-tag { background-position: -240px -96px; } 190 | .ui-icon-home { background-position: 0 -112px; } 191 | .ui-icon-flag { background-position: -16px -112px; } 192 | .ui-icon-calendar { background-position: -32px -112px; } 193 | .ui-icon-cart { background-position: -48px -112px; } 194 | .ui-icon-pencil { background-position: -64px -112px; } 195 | .ui-icon-clock { background-position: -80px -112px; } 196 | .ui-icon-disk { background-position: -96px -112px; } 197 | .ui-icon-calculator { background-position: -112px -112px; } 198 | .ui-icon-zoomin { background-position: -128px -112px; } 199 | .ui-icon-zoomout { background-position: -144px -112px; } 200 | .ui-icon-search { background-position: -160px -112px; } 201 | .ui-icon-wrench { background-position: -176px -112px; } 202 | .ui-icon-gear { background-position: -192px -112px; } 203 | .ui-icon-heart { background-position: -208px -112px; } 204 | .ui-icon-star { background-position: -224px -112px; } 205 | .ui-icon-link { background-position: -240px -112px; } 206 | .ui-icon-cancel { background-position: 0 -128px; } 207 | .ui-icon-plus { background-position: -16px -128px; } 208 | .ui-icon-plusthick { background-position: -32px -128px; } 209 | .ui-icon-minus { background-position: -48px -128px; } 210 | .ui-icon-minusthick { background-position: -64px -128px; } 211 | .ui-icon-close { background-position: -80px -128px; } 212 | .ui-icon-closethick { background-position: -96px -128px; } 213 | .ui-icon-key { background-position: -112px -128px; } 214 | .ui-icon-lightbulb { background-position: -128px -128px; } 215 | .ui-icon-scissors { background-position: -144px -128px; } 216 | .ui-icon-clipboard { background-position: -160px -128px; } 217 | .ui-icon-copy { background-position: -176px -128px; } 218 | .ui-icon-contact { background-position: -192px -128px; } 219 | .ui-icon-image { background-position: -208px -128px; } 220 | .ui-icon-video { background-position: -224px -128px; } 221 | .ui-icon-script { background-position: -240px -128px; } 222 | .ui-icon-alert { background-position: 0 -144px; } 223 | .ui-icon-info { background-position: -16px -144px; } 224 | .ui-icon-notice { background-position: -32px -144px; } 225 | .ui-icon-help { background-position: -48px -144px; } 226 | .ui-icon-check { background-position: -64px -144px; } 227 | .ui-icon-bullet { background-position: -80px -144px; } 228 | .ui-icon-radio-off { background-position: -96px -144px; } 229 | .ui-icon-radio-on { background-position: -112px -144px; } 230 | .ui-icon-pin-w { background-position: -128px -144px; } 231 | .ui-icon-pin-s { background-position: -144px -144px; } 232 | .ui-icon-play { background-position: 0 -160px; } 233 | .ui-icon-pause { background-position: -16px -160px; } 234 | .ui-icon-seek-next { background-position: -32px -160px; } 235 | .ui-icon-seek-prev { background-position: -48px -160px; } 236 | .ui-icon-seek-end { background-position: -64px -160px; } 237 | .ui-icon-seek-start { background-position: -80px -160px; } 238 | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ 239 | .ui-icon-seek-first { background-position: -80px -160px; } 240 | .ui-icon-stop { background-position: -96px -160px; } 241 | .ui-icon-eject { background-position: -112px -160px; } 242 | .ui-icon-volume-off { background-position: -128px -160px; } 243 | .ui-icon-volume-on { background-position: -144px -160px; } 244 | .ui-icon-power { background-position: 0 -176px; } 245 | .ui-icon-signal-diag { background-position: -16px -176px; } 246 | .ui-icon-signal { background-position: -32px -176px; } 247 | .ui-icon-battery-0 { background-position: -48px -176px; } 248 | .ui-icon-battery-1 { background-position: -64px -176px; } 249 | .ui-icon-battery-2 { background-position: -80px -176px; } 250 | .ui-icon-battery-3 { background-position: -96px -176px; } 251 | .ui-icon-circle-plus { background-position: 0 -192px; } 252 | .ui-icon-circle-minus { background-position: -16px -192px; } 253 | .ui-icon-circle-close { background-position: -32px -192px; } 254 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 255 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 256 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 257 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 258 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 259 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 260 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 261 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 262 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 263 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 264 | .ui-icon-circle-check { background-position: -208px -192px; } 265 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 266 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 267 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 268 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 269 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 270 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 271 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 272 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 273 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 274 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 275 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 276 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 277 | 278 | 279 | /* Misc visuals 280 | ----------------------------------*/ 281 | 282 | /* Corner radius */ 283 | .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } 284 | .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } 285 | .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } 286 | .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } 287 | 288 | /* Overlays */ 289 | .ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } 290 | .ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* 291 | * jQuery UI Resizable 1.8.16 292 | * 293 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 294 | * Dual licensed under the MIT or GPL Version 2 licenses. 295 | * http://jquery.org/license 296 | * 297 | * http://docs.jquery.com/UI/Resizable#theming 298 | */ 299 | .ui-resizable { position: relative;} 300 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } 301 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 302 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 303 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 304 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 305 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 306 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 307 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 308 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 309 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* 310 | * jQuery UI Selectable 1.8.16 311 | * 312 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 313 | * Dual licensed under the MIT or GPL Version 2 licenses. 314 | * http://jquery.org/license 315 | * 316 | * http://docs.jquery.com/UI/Selectable#theming 317 | */ 318 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 319 | /* 320 | * jQuery UI Accordion 1.8.16 321 | * 322 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 323 | * Dual licensed under the MIT or GPL Version 2 licenses. 324 | * http://jquery.org/license 325 | * 326 | * http://docs.jquery.com/UI/Accordion#theming 327 | */ 328 | /* IE/Win - Fix animation bug - #4615 */ 329 | .ui-accordion { width: 100%; } 330 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 331 | .ui-accordion .ui-accordion-li-fix { display: inline; } 332 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 333 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } 334 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 335 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 336 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } 337 | .ui-accordion .ui-accordion-content-active { display: block; } 338 | /* 339 | * jQuery UI Autocomplete 1.8.16 340 | * 341 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 342 | * Dual licensed under the MIT or GPL Version 2 licenses. 343 | * http://jquery.org/license 344 | * 345 | * http://docs.jquery.com/UI/Autocomplete#theming 346 | */ 347 | .ui-autocomplete { position: absolute; cursor: default; } 348 | 349 | /* workarounds */ 350 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 351 | 352 | /* 353 | * jQuery UI Menu 1.8.16 354 | * 355 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) 356 | * Dual licensed under the MIT or GPL Version 2 licenses. 357 | * http://jquery.org/license 358 | * 359 | * http://docs.jquery.com/UI/Menu#theming 360 | */ 361 | .ui-menu { 362 | list-style:none; 363 | padding: 2px; 364 | margin: 0; 365 | display:block; 366 | float: left; 367 | } 368 | .ui-menu .ui-menu { 369 | margin-top: -3px; 370 | } 371 | .ui-menu .ui-menu-item { 372 | margin:0; 373 | padding: 0; 374 | zoom: 1; 375 | float: left; 376 | clear: left; 377 | width: 100%; 378 | } 379 | .ui-menu .ui-menu-item a { 380 | text-decoration:none; 381 | display:block; 382 | padding:.2em .4em; 383 | line-height:1.5; 384 | zoom:1; 385 | } 386 | .ui-menu .ui-menu-item a.ui-state-hover, 387 | .ui-menu .ui-menu-item a.ui-state-active { 388 | font-weight: normal; 389 | margin: -1px; 390 | } 391 | /* 392 | * jQuery UI Button 1.8.16 393 | * 394 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 395 | * Dual licensed under the MIT or GPL Version 2 licenses. 396 | * http://jquery.org/license 397 | * 398 | * http://docs.jquery.com/UI/Button#theming 399 | */ 400 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 401 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 402 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 403 | .ui-button-icons-only { width: 3.4em; } 404 | button.ui-button-icons-only { width: 3.7em; } 405 | 406 | /*button text element */ 407 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 408 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 409 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 410 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 411 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 412 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 413 | /* no icon support for input elements, provide padding by default */ 414 | input.ui-button { padding: .4em 1em; } 415 | 416 | /*button icon element(s) */ 417 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 418 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 419 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 420 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 421 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 422 | 423 | /*button sets*/ 424 | .ui-buttonset { margin-right: 7px; } 425 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 426 | 427 | /* workarounds */ 428 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 429 | /* 430 | * jQuery UI Dialog 1.8.16 431 | * 432 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 433 | * Dual licensed under the MIT or GPL Version 2 licenses. 434 | * http://jquery.org/license 435 | * 436 | * http://docs.jquery.com/UI/Dialog#theming 437 | */ 438 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 439 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 440 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 441 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 442 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 443 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 444 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 445 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 446 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 447 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 448 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 449 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 450 | /* 451 | * jQuery UI Slider 1.8.16 452 | * 453 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 454 | * Dual licensed under the MIT or GPL Version 2 licenses. 455 | * http://jquery.org/license 456 | * 457 | * http://docs.jquery.com/UI/Slider#theming 458 | */ 459 | .ui-slider { position: relative; text-align: left; } 460 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 461 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 462 | 463 | .ui-slider-horizontal { height: .8em; } 464 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 465 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 466 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 467 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 468 | 469 | .ui-slider-vertical { width: .8em; height: 100px; } 470 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 471 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 472 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 473 | .ui-slider-vertical .ui-slider-range-max { top: 0; }/* 474 | * jQuery UI Tabs 1.8.16 475 | * 476 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 477 | * Dual licensed under the MIT or GPL Version 2 licenses. 478 | * http://jquery.org/license 479 | * 480 | * http://docs.jquery.com/UI/Tabs#theming 481 | */ 482 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 483 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 484 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } 485 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 486 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } 487 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 488 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 489 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 490 | .ui-tabs .ui-tabs-hide { display: none !important; } 491 | /* 492 | * jQuery UI Datepicker 1.8.16 493 | * 494 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 495 | * Dual licensed under the MIT or GPL Version 2 licenses. 496 | * http://jquery.org/license 497 | * 498 | * http://docs.jquery.com/UI/Datepicker#theming 499 | */ 500 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } 501 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 502 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 503 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 504 | .ui-datepicker .ui-datepicker-prev { left:2px; } 505 | .ui-datepicker .ui-datepicker-next { right:2px; } 506 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 507 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 508 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 509 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 510 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } 511 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 512 | .ui-datepicker select.ui-datepicker-month, 513 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 514 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 515 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 516 | .ui-datepicker td { border: 0; padding: 1px; } 517 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 518 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 519 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 520 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 521 | 522 | /* with multiple calendars */ 523 | .ui-datepicker.ui-datepicker-multi { width:auto; } 524 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 525 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 526 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 527 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 528 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 529 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 530 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 531 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 532 | .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } 533 | 534 | /* RTL support */ 535 | .ui-datepicker-rtl { direction: rtl; } 536 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 537 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 538 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 539 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 540 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 541 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 542 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 543 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 544 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 545 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 546 | 547 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 548 | .ui-datepicker-cover { 549 | display: none; /*sorry for IE5*/ 550 | display/**/: block; /*sorry for IE5*/ 551 | position: absolute; /*must have*/ 552 | z-index: -1; /*must have*/ 553 | filter: mask(); /*must have*/ 554 | top: -4px; /*must have*/ 555 | left: -4px; /*must have*/ 556 | width: 200px; /*must have*/ 557 | height: 200px; /*must have*/ 558 | }/* 559 | * jQuery UI Progressbar 1.8.16 560 | * 561 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 562 | * Dual licensed under the MIT or GPL Version 2 licenses. 563 | * http://jquery.org/license 564 | * 565 | * http://docs.jquery.com/UI/Progressbar#theming 566 | */ 567 | .ui-progressbar { height:2em; text-align: left; } 568 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } -------------------------------------------------------------------------------- /public/img/busy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/img/busy.gif -------------------------------------------------------------------------------- /public/img/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/img/error.gif -------------------------------------------------------------------------------- /public/img/success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdenser/node-fb-sample/1bb910b8e5c7c9a8470354c1c79b4fc46af369d1/public/img/success.gif -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | FB WEB ISQL 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /public/js/jquery.dataTables.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * File: jquery.dataTables.min.js 3 | * Version: 1.8.2 4 | * Author: Allan Jardine (www.sprymedia.co.uk) 5 | * Info: www.datatables.net 6 | * 7 | * Copyright 2008-2011 Allan Jardine, all rights reserved. 8 | * 9 | * This source file is free software, under either the GPL v2 license or a 10 | * BSD style license, as supplied with this software. 11 | * 12 | * This source file is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14 | * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. 15 | */ 16 | (function(i,za,p){i.fn.dataTableSettings=[];var D=i.fn.dataTableSettings;i.fn.dataTableExt={};var n=i.fn.dataTableExt;n.sVersion="1.8.2";n.sErrMode="alert";n.iApiIndex=0;n.oApi={};n.afnFiltering=[];n.aoFeatures=[];n.ofnSearch={};n.afnSortData=[];n.oStdClasses={sPagePrevEnabled:"paginate_enabled_previous",sPagePrevDisabled:"paginate_disabled_previous",sPageNextEnabled:"paginate_enabled_next",sPageNextDisabled:"paginate_disabled_next",sPageJUINext:"",sPageJUIPrev:"",sPageButton:"paginate_button",sPageButtonActive:"paginate_active", 17 | sPageButtonStaticDisabled:"paginate_button paginate_button_disabled",sPageFirst:"first",sPagePrevious:"previous",sPageNext:"next",sPageLast:"last",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled", 18 | sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sFooterTH:""};n.oJUIClasses={sPagePrevEnabled:"fg-button ui-button ui-state-default ui-corner-left", 19 | sPagePrevDisabled:"fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",sPageNextEnabled:"fg-button ui-button ui-state-default ui-corner-right",sPageNextDisabled:"fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",sPageJUINext:"ui-icon ui-icon-circle-arrow-e",sPageJUIPrev:"ui-icon ui-icon-circle-arrow-w",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"fg-button ui-button ui-state-default ui-state-disabled",sPageButtonStaticDisabled:"fg-button ui-button ui-state-default ui-state-disabled", 20 | sPageFirst:"first ui-corner-tl ui-corner-bl",sPagePrevious:"previous",sPageNext:"next",sPageLast:"last ui-corner-tr ui-corner-br",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"ui-state-default",sSortDesc:"ui-state-default",sSortable:"ui-state-default", 21 | sSortableAsc:"ui-state-default",sSortableDesc:"ui-state-default",sSortableNone:"ui-state-default",sSortColumn:"sorting_",sSortJUIAsc:"css_right ui-icon ui-icon-triangle-1-n",sSortJUIDesc:"css_right ui-icon ui-icon-triangle-1-s",sSortJUI:"css_right ui-icon ui-icon-carat-2-n-s",sSortJUIAscAllowed:"css_right ui-icon ui-icon-carat-1-n",sSortJUIDescAllowed:"css_right ui-icon ui-icon-carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollWrapper:"dataTables_scroll", 22 | sScrollHead:"dataTables_scrollHead ui-state-default",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot ui-state-default",sScrollFootInner:"dataTables_scrollFootInner",sFooterTH:"ui-state-default"};n.oPagination={two_button:{fnInit:function(g,l,s){var t,w,y;if(g.bJUI){t=p.createElement("a");w=p.createElement("a");y=p.createElement("span");y.className=g.oClasses.sPageJUINext;w.appendChild(y);y=p.createElement("span");y.className=g.oClasses.sPageJUIPrev; 23 | t.appendChild(y)}else{t=p.createElement("div");w=p.createElement("div")}t.className=g.oClasses.sPagePrevDisabled;w.className=g.oClasses.sPageNextDisabled;t.title=g.oLanguage.oPaginate.sPrevious;w.title=g.oLanguage.oPaginate.sNext;l.appendChild(t);l.appendChild(w);i(t).bind("click.DT",function(){g.oApi._fnPageChange(g,"previous")&&s(g)});i(w).bind("click.DT",function(){g.oApi._fnPageChange(g,"next")&&s(g)});i(t).bind("selectstart.DT",function(){return false});i(w).bind("selectstart.DT",function(){return false}); 24 | if(g.sTableId!==""&&typeof g.aanFeatures.p=="undefined"){l.setAttribute("id",g.sTableId+"_paginate");t.setAttribute("id",g.sTableId+"_previous");w.setAttribute("id",g.sTableId+"_next")}},fnUpdate:function(g){if(g.aanFeatures.p)for(var l=g.aanFeatures.p,s=0,t=l.length;s=w-t){t=w-s+1;x=w}else{t=y-Math.ceil(s/2)+1;x=t+s-1}for(s=t;s<=x;s++)F+=y!=s?''+s+"":''+s+"";x=g.aanFeatures.p;var z,$=function(M){g._iDisplayStart=(this.innerHTML*1-1)*g._iDisplayLength;l(g);M.preventDefault()},X=function(){return false};s=0;for(t=x.length;sl?1:0},"string-desc":function(g,l){if(typeof g!="string")g="";if(typeof l!="string")l="";g=g.toLowerCase();l=l.toLowerCase();return gl?-1:0},"html-asc":function(g,l){g=g.replace(/<.*?>/g,"").toLowerCase();l=l.replace(/<.*?>/g,"").toLowerCase();return g< 31 | l?-1:g>l?1:0},"html-desc":function(g,l){g=g.replace(/<.*?>/g,"").toLowerCase();l=l.replace(/<.*?>/g,"").toLowerCase();return gl?-1:0},"date-asc":function(g,l){g=Date.parse(g);l=Date.parse(l);if(isNaN(g)||g==="")g=Date.parse("01/01/1970 00:00:00");if(isNaN(l)||l==="")l=Date.parse("01/01/1970 00:00:00");return g-l},"date-desc":function(g,l){g=Date.parse(g);l=Date.parse(l);if(isNaN(g)||g==="")g=Date.parse("01/01/1970 00:00:00");if(isNaN(l)||l==="")l=Date.parse("01/01/1970 00:00:00");return l- 32 | g},"numeric-asc":function(g,l){return(g=="-"||g===""?0:g*1)-(l=="-"||l===""?0:l*1)},"numeric-desc":function(g,l){return(l=="-"||l===""?0:l*1)-(g=="-"||g===""?0:g*1)}};n.aTypes=[function(g){if(typeof g=="number")return"numeric";else if(typeof g!="string")return null;var l,s=false;l=g.charAt(0);if("0123456789-".indexOf(l)==-1)return null;for(var t=1;t")!=-1)return"html";return null}];n.fnVersionCheck=function(g){var l=function(x,v){for(;x.length=parseInt(w,10)};n._oExternConfig={iNextUnique:0};i.fn.dataTable=function(g){function l(){this.fnRecordsTotal= 34 | function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsTotal,10):this.aiDisplayMaster.length};this.fnRecordsDisplay=function(){return this.oFeatures.bServerSide?parseInt(this._iRecordsDisplay,10):this.aiDisplay.length};this.fnDisplayEnd=function(){return this.oFeatures.bServerSide?this.oFeatures.bPaginate===false||this._iDisplayLength==-1?this._iDisplayStart+this.aiDisplay.length:Math.min(this._iDisplayStart+this._iDisplayLength,this._iRecordsDisplay):this._iDisplayEnd};this.sInstance= 35 | this.oInstance=null;this.oFeatures={bPaginate:true,bLengthChange:true,bFilter:true,bSort:true,bInfo:true,bAutoWidth:true,bProcessing:false,bSortClasses:true,bStateSave:false,bServerSide:false,bDeferRender:false};this.oScroll={sX:"",sXInner:"",sY:"",bCollapse:false,bInfinite:false,iLoadGap:100,iBarWidth:0,bAutoCss:true};this.aanFeatures=[];this.oLanguage={sProcessing:"Processing...",sLengthMenu:"Show _MENU_ entries",sZeroRecords:"No matching records found",sEmptyTable:"No data available in table", 36 | sLoadingRecords:"Loading...",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sInfoThousands:",",sSearch:"Search:",sUrl:"",oPaginate:{sFirst:"First",sPrevious:"Previous",sNext:"Next",sLast:"Last"},fnInfoCallback:null};this.aoData=[];this.aiDisplay=[];this.aiDisplayMaster=[];this.aoColumns=[];this.aoHeader=[];this.aoFooter=[];this.iNextId=0;this.asDataSearch=[];this.oPreviousSearch={sSearch:"", 37 | bRegex:false,bSmart:true};this.aoPreSearchCols=[];this.aaSorting=[[0,"asc",0]];this.aaSortingFixed=null;this.asStripeClasses=[];this.asDestroyStripes=[];this.sDestroyWidth=0;this.fnFooterCallback=this.fnHeaderCallback=this.fnRowCallback=null;this.aoDrawCallback=[];this.fnInitComplete=this.fnPreDrawCallback=null;this.sTableId="";this.nTableWrapper=this.nTBody=this.nTFoot=this.nTHead=this.nTable=null;this.bInitialised=this.bDeferLoading=false;this.aoOpenRows=[];this.sDom="lfrtip";this.sPaginationType= 38 | "two_button";this.iCookieDuration=7200;this.sCookiePrefix="SpryMedia_DataTables_";this.fnCookieCallback=null;this.aoStateSave=[];this.aoStateLoad=[];this.sAjaxSource=this.oLoadedState=null;this.sAjaxDataProp="aaData";this.bAjaxDataGet=true;this.jqXHR=null;this.fnServerData=function(a,b,c,d){d.jqXHR=i.ajax({url:a,data:b,success:function(f){i(d.oInstance).trigger("xhr",d);c(f)},dataType:"json",cache:false,error:function(f,e){e=="parsererror"&&alert("DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.")}})}; 39 | this.aoServerParams=[];this.fnFormatNumber=function(a){if(a<1E3)return a;else{var b=a+"";a=b.split("");var c="";b=b.length;for(var d=0;d=0;e--)!a.aoColumns[e].bVisible&&!c&&h[d].splice(e,1);j.push([])}d=0;for(f=h.length;d=a.fnRecordsDisplay()?0:a.iInitDisplayStart;a.iInitDisplayStart=-1;E(a)}if(a.bDeferLoading){a.bDeferLoading=false;a.iDraw++}else if(a.oFeatures.bServerSide){if(!a.bDestroying&&!Ca(a))return}else a.iDraw++;if(a.aiDisplay.length!==0){var h=a._iDisplayStart,j=a._iDisplayEnd;if(a.oFeatures.bServerSide){h=0;j=a.aoData.length}for(h= 58 | h;h=0;b--)c[b].parentNode.removeChild(c[b])}b=0;for(c=d.length;b=0;b--)a.aoDrawCallback[b].fn.call(a.oInstance,a);i(a.oInstance).trigger("draw",a);a.bSorted=false;a.bFiltered=false;a.bDrawing=false;if(a.oFeatures.bServerSide){K(a,false);typeof a._bInitComplete=="undefined"&&w(a)}}}function da(a){if(a.oFeatures.bSort)R(a,a.oPreviousSearch);else if(a.oFeatures.bFilter)N(a, 62 | a.oPreviousSearch);else{E(a);C(a)}}function Ca(a){if(a.bAjaxDataGet){a.iDraw++;K(a,true);var b=Da(a);ha(a,b);a.fnServerData.call(a.oInstance,a.sAjaxSource,b,function(c){Ea(a,c)},a);return false}else return true}function Da(a){var b=a.aoColumns.length,c=[],d,f;c.push({name:"sEcho",value:a.iDraw});c.push({name:"iColumns",value:b});c.push({name:"sColumns",value:ka(a)});c.push({name:"iDisplayStart",value:a._iDisplayStart});c.push({name:"iDisplayLength",value:a.oFeatures.bPaginate!==false?a._iDisplayLength: 63 | -1});for(f=0;f")c=c.parentNode;else if(h=="l"&&a.oFeatures.bPaginate&&a.oFeatures.bLengthChange){f=Ga(a);e=1}else if(h=="f"&&a.oFeatures.bFilter){f=Ha(a);e=1}else if(h=="r"&&a.oFeatures.bProcessing){f=Ia(a);e=1}else if(h=="t"){f=Ja(a);e=1}else if(h=="i"&&a.oFeatures.bInfo){f=Ka(a);e=1}else if(h=="p"&&a.oFeatures.bPaginate){f=La(a);e=1}else if(n.aoFeatures.length!==0){j=n.aoFeatures;u=0;for(k=j.length;ui(a.nTable).height()-a.oScroll.iLoadGap)if(a.fnDisplayEnd()0&&a.nTable.removeChild(h[0]);if(a.nTFoot!==null){k=a.nTable.getElementsByTagName("tfoot");k.length>0&&a.nTable.removeChild(k[0])}h=a.nTHead.cloneNode(true);a.nTable.insertBefore(h,a.nTable.childNodes[0]);if(a.nTFoot!==null){k=a.nTFoot.cloneNode(true); 74 | a.nTable.insertBefore(k,a.nTable.childNodes[1])}if(a.oScroll.sX===""){d.style.width="100%";b.parentNode.style.width="100%"}var U=S(a,h);f=0;for(e=U.length;fd.offsetHeight||i(d).css("overflow-y")=="scroll"))a.nTable.style.width=q(i(a.nTable).outerWidth()-a.oScroll.iBarWidth)}else if(a.oScroll.sXInner!== 75 | "")a.nTable.style.width=q(a.oScroll.sXInner);else if(f==i(d).width()&&i(d).height()f-a.oScroll.iBarWidth)a.nTable.style.width=q(f)}else a.nTable.style.width=q(f);f=i(a.nTable).outerWidth();e=a.nTHead.getElementsByTagName("tr");h=h.getElementsByTagName("tr");P(function(I,na){m=I.style;m.paddingTop="0";m.paddingBottom="0";m.borderTopWidth="0";m.borderBottomWidth="0";m.height=0;r=i(I).width();na.style.width= 76 | q(r);H.push(r)},h,e);i(h).height(0);if(a.nTFoot!==null){j=k.getElementsByTagName("tr");k=a.nTFoot.getElementsByTagName("tr");P(function(I,na){m=I.style;m.paddingTop="0";m.paddingBottom="0";m.borderTopWidth="0";m.borderBottomWidth="0";m.height=0;r=i(I).width();na.style.width=q(r);H.push(r)},j,k);i(j).height(0)}P(function(I){I.innerHTML="";I.style.width=q(H.shift())},h);a.nTFoot!==null&&P(function(I){I.innerHTML="";I.style.width=q(H.shift())},j);if(i(a.nTable).outerWidth()d.offsetHeight|| 77 | i(d).css("overflow-y")=="scroll"?f+a.oScroll.iBarWidth:f;if(B&&(d.scrollHeight>d.offsetHeight||i(d).css("overflow-y")=="scroll"))a.nTable.style.width=q(j-a.oScroll.iBarWidth);d.style.width=q(j);b.parentNode.style.width=q(j);if(a.nTFoot!==null)L.parentNode.style.width=q(j);if(a.oScroll.sX==="")J(a,1,"The table cannot fit into the current element which will cause column misalignment. The table has been drawn at its minimum possible width.");else a.oScroll.sXInner!==""&&J(a,1,"The table cannot fit into the current element which will cause column misalignment. Increase the sScrollXInner value or remove it to allow automatic calculation")}else{d.style.width= 78 | q("100%");b.parentNode.style.width=q("100%");if(a.nTFoot!==null)L.parentNode.style.width=q("100%")}if(a.oScroll.sY==="")if(B)d.style.height=q(a.nTable.offsetHeight+a.oScroll.iBarWidth);if(a.oScroll.sY!==""&&a.oScroll.bCollapse){d.style.height=q(a.oScroll.sY);B=a.oScroll.sX!==""&&a.nTable.offsetWidth>d.offsetWidth?a.oScroll.iBarWidth:0;if(a.nTable.offsetHeight'):b===""?'':b+' ';var c=p.createElement("div"); 80 | c.className=a.oClasses.sFilter;c.innerHTML="";a.sTableId!==""&&typeof a.aanFeatures.f=="undefined"&&c.setAttribute("id",a.sTableId+"_filter");b=i("input",c);b.val(a.oPreviousSearch.sSearch.replace('"',"""));b.bind("keyup.DT",function(){for(var d=a.aanFeatures.f,f=0,e=d.length;f=0;d--){f=qa(G(a,a.aiDisplay[d],c,"filter"),a.aoColumns[c].sType);if(!b.test(f)){a.aiDisplay.splice(d,1);e++}}}}function Oa(a,b,c,d,f){var e=pa(b,d,f);if(typeof c=="undefined"||c===null)c=0;if(n.afnFiltering.length!==0)c=1;if(b.length<=0){a.aiDisplay.splice(0,a.aiDisplay.length);a.aiDisplay=a.aiDisplayMaster.slice()}else if(a.aiDisplay.length==a.aiDisplayMaster.length|| 83 | a.oPreviousSearch.sSearch.length>b.length||c==1||b.indexOf(a.oPreviousSearch.sSearch)!==0){a.aiDisplay.splice(0,a.aiDisplay.length);oa(a,1);for(c=0;c/g,"");else if(typeof a=="string")return a.replace(/\n/g," ");else if(a===null)return"";return a}function R(a,b){var c,d,f,e,h=[],j=[],k=n.oSort;d=a.aoData;var m=a.aoColumns;if(!a.oFeatures.bServerSide&& 86 | (a.aaSorting.length!==0||a.aaSortingFixed!==null)){h=a.aaSortingFixed!==null?a.aaSortingFixed.concat(a.aaSorting):a.aaSorting.slice();for(c=0;c=h)for(b=0;b=0?a._iDisplayStart-a._iDisplayLength:0;if(a._iDisplayStart<0)a._iDisplayStart=0}else if(b=="next")if(a._iDisplayLength>=0){if(a._iDisplayStart+a._iDisplayLength=0){b=parseInt((a.fnRecordsDisplay()- 94 | 1)/a._iDisplayLength,10)+1;a._iDisplayStart=(b-1)*a._iDisplayLength}else a._iDisplayStart=0;else J(a,0,"Unknown paging action: "+b);i(a.oInstance).trigger("page",a);return c!=a._iDisplayStart}function Ka(a){var b=p.createElement("div");b.className=a.oClasses.sInfo;if(typeof a.aanFeatures.i=="undefined"){a.aoDrawCallback.push({fn:Ra,sName:"information"});a.sTableId!==""&&b.setAttribute("id",a.sTableId+"_info")}return b}function Ra(a){if(!(!a.oFeatures.bInfo||a.aanFeatures.i.length===0)){var b=a._iDisplayStart+ 95 | 1,c=a.fnDisplayEnd(),d=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),e=a.fnFormatNumber(b),h=a.fnFormatNumber(c),j=a.fnFormatNumber(d),k=a.fnFormatNumber(f);if(a.oScroll.bInfinite)e=a.fnFormatNumber(1);e=a.fnRecordsDisplay()===0&&a.fnRecordsDisplay()==a.fnRecordsTotal()?a.oLanguage.sInfoEmpty+a.oLanguage.sInfoPostFix:a.fnRecordsDisplay()===0?a.oLanguage.sInfoEmpty+" "+a.oLanguage.sInfoFiltered.replace("_MAX_",j)+a.oLanguage.sInfoPostFix:a.fnRecordsDisplay()==a.fnRecordsTotal()?a.oLanguage.sInfo.replace("_START_", 96 | e).replace("_END_",h).replace("_TOTAL_",k)+a.oLanguage.sInfoPostFix:a.oLanguage.sInfo.replace("_START_",e).replace("_END_",h).replace("_TOTAL_",k)+" "+a.oLanguage.sInfoFiltered.replace("_MAX_",a.fnFormatNumber(a.fnRecordsTotal()))+a.oLanguage.sInfoPostFix;if(a.oLanguage.fnInfoCallback!==null)e=a.oLanguage.fnInfoCallback(a,b,c,d,f,e);a=a.aanFeatures.i;b=0;for(c=a.length;b",c,d;if(a.aLengthMenu.length==2&&typeof a.aLengthMenu[0]=="object"&&typeof a.aLengthMenu[1]=="object"){c=0;for(d=a.aLengthMenu[0].length;c'+a.aLengthMenu[1][c]+""}else{c=0;for(d=a.aLengthMenu.length;c'+a.aLengthMenu[c]+""}b+="";var f=p.createElement("div");a.sTableId!==""&&typeof a.aanFeatures.l=="undefined"&&f.setAttribute("id",a.sTableId+"_length"); 98 | f.className=a.oClasses.sLength;f.innerHTML="";i('select option[value="'+a._iDisplayLength+'"]',f).attr("selected",true);i("select",f).bind("change.DT",function(){var e=i(this).val(),h=a.aanFeatures.l;c=0;for(d=h.length;ca.aiDisplay.length||a._iDisplayLength==-1?a.aiDisplay.length:a._iDisplayStart+a._iDisplayLength}function Sa(a,b){if(!a||a===null||a==="")return 0;if(typeof b=="undefined")b=p.getElementsByTagName("body")[0];var c=p.createElement("div");c.style.width=q(a);b.appendChild(c);a=c.offsetWidth;b.removeChild(c);return a}function ga(a){var b=0,c,d=0,f=a.aoColumns.length,e,h=i("th", 102 | a.nTHead);for(e=0;etd",b);h=S(a,e);for(e=d=0;e0)a.aoColumns[e].sWidth=q(c);d++}a.nTable.style.width=q(i(b).outerWidth());b.parentNode.removeChild(b)}}function Ua(a,b){if(a.oScroll.sX===""&&a.oScroll.sY!==""){i(b).width();b.style.width=q(i(b).outerWidth()-a.oScroll.iBarWidth)}else if(a.oScroll.sX!== 106 | "")b.style.width=q(i(b).outerWidth())}function Ta(a,b){var c=Va(a,b);if(c<0)return null;if(a.aoData[c].nTr===null){var d=p.createElement("td");d.innerHTML=G(a,c,b,"");return d}return Q(a,c)[b]}function Va(a,b){for(var c=-1,d=-1,f=0;f/g,"");if(e.length>c){c=e.length;d=f}}return d}function q(a){if(a===null)return"0px";if(typeof a=="number"){if(a<0)return"0px";return a+"px"}var b=a.charCodeAt(a.length-1);if(b<48||b>57)return a;return a+ 107 | "px"}function Za(a,b){if(a.length!=b.length)return 1;for(var c=0;cb&&a[d]--;c!=-1&&a.splice(c,1)}function Fa(a,b){b=b.split(",");for(var c=[],d=0,f=a.aoColumns.length;d4096){a=p.cookie.split(";");for(var j=0,k=a.length;j=d.aiDisplay.length){d._iDisplayStart-=d._iDisplayLength;if(d._iDisplayStart<0)d._iDisplayStart=0}if(typeof c=="undefined"||c){E(d);C(d)}return f};this.fnClearTable=function(a){var b=A(this[n.iApiIndex]);la(b);if(typeof a=="undefined"||a)C(b)};this.fnOpen=function(a,b,c){var d=A(this[n.iApiIndex]);this.fnClose(a);var f=p.createElement("tr"),e=p.createElement("td");f.appendChild(e);e.className=c; 126 | e.colSpan=Z(d);if(typeof b.jquery!="undefined"||typeof b=="object")e.appendChild(b);else e.innerHTML=b;b=i("tr",d.nTBody);i.inArray(a,b)!=-1&&i(f).insertAfter(a);d.aoOpenRows.push({nTr:f,nParent:a});return f};this.fnClose=function(a){for(var b=A(this[n.iApiIndex]),c=0;c=Z(d);if(!j)for(f=a;ftr>td."+a.oClasses.sRowEmpty,a.nTable).parent().remove(); 132 | if(a.nTable!=a.nTHead.parentNode){i(a.nTable).children("thead").remove();a.nTable.appendChild(a.nTHead)}if(a.nTFoot&&a.nTable!=a.nTFoot.parentNode){i(a.nTable).children("tfoot").remove();a.nTable.appendChild(a.nTFoot)}a.nTable.parentNode.removeChild(a.nTable);i(a.nTableWrapper).remove();a.aaSorting=[];a.aaSortingFixed=[];V(a);i(ba(a)).removeClass(a.asStripeClasses.join(" "));if(a.bJUI){i("th",a.nTHead).removeClass([n.oStdClasses.sSortable,n.oJUIClasses.sSortableAsc,n.oJUIClasses.sSortableDesc,n.oJUIClasses.sSortableNone].join(" ")); 133 | i("th span."+n.oJUIClasses.sSortIcon,a.nTHead).remove();i("th",a.nTHead).each(function(){var e=i("div."+n.oJUIClasses.sSortJUIWrapper,this),h=e.contents();i(this).append(h);e.remove()})}else i("th",a.nTHead).removeClass([n.oStdClasses.sSortable,n.oStdClasses.sSortableAsc,n.oStdClasses.sSortableDesc,n.oStdClasses.sSortableNone].join(" "));a.nTableReinsertBefore?b.insertBefore(a.nTable,a.nTableReinsertBefore):b.appendChild(a.nTable);d=0;for(f=a.aoData.length;dt<"F"ip>'}if(e.oScroll.sX!==""||e.oScroll.sY!== 145 | "")e.oScroll.iBarWidth=Ya();if(typeof g.iDisplayStart!="undefined"&&typeof e.iInitDisplayStart=="undefined"){e.iInitDisplayStart=g.iDisplayStart;e._iDisplayStart=g.iDisplayStart}if(typeof g.bStateSave!="undefined"){e.oFeatures.bStateSave=g.bStateSave;Xa(e,g);e.aoDrawCallback.push({fn:va,sName:"state_save"})}if(typeof g.iDeferLoading!="undefined"){e.bDeferLoading=true;e._iRecordsTotal=g.iDeferLoading;e._iRecordsDisplay=g.iDeferLoading}if(typeof g.aaData!="undefined")j=true;if(typeof g!="undefined"&& 146 | typeof g.aoData!="undefined")g.aoColumns=g.aoData;if(typeof g.oLanguage!="undefined")if(typeof g.oLanguage.sUrl!="undefined"&&g.oLanguage.sUrl!==""){e.oLanguage.sUrl=g.oLanguage.sUrl;i.getJSON(e.oLanguage.sUrl,null,function(u){y(e,u,true)});h=true}else y(e,g.oLanguage,false)}else g={};if(typeof g.asStripClasses=="undefined"&&typeof g.asStripeClasses=="undefined"){e.asStripeClasses.push(e.oClasses.sStripeOdd);e.asStripeClasses.push(e.oClasses.sStripeEven)}c=false;d=i(this).children("tbody").children("tr"); 147 | a=0;for(b=e.asStripeClasses.length;a=0;a--){var m= 149 | g.aoColumnDefs[a].aTargets;i.isArray(m)||J(e,1,"aTargets must be an array of targets, not a "+typeof m);c=0;for(d=m.length;c=0){for(;e.aoColumns.length<=m[c];)F(e);x(e,m[c],g.aoColumnDefs[a])}else if(typeof m[c]=="number"&&m[c]<0)x(e,e.aoColumns.length+m[c],g.aoColumnDefs[a]);else if(typeof m[c]=="string"){b=0;for(f=e.aoColumns.length;b=e.aoColumns.length)e.aaSorting[a][0]=0;k=e.aoColumns[e.aaSorting[a][0]];if(typeof e.aaSorting[a][2]=="undefined")e.aaSorting[a][2]=0;if(typeof g.aaSorting=="undefined"&&typeof e.saved_aaSorting=="undefined")e.aaSorting[a][1]=k.asSorting[0];c=0;for(d=k.asSorting.length;c0){e.nTFoot=a[0];Y(e.aoFooter,e.nTFoot)}if(j)for(a=0;a",c[0];);return a>4?a:l}();return{Ca:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],n:function(a,e){for(var c=0,f=a.length;c=0&&a.splice(c,1)},za:function(a){for(var a=a||[],e=[],c=0,f=a.length;c0){for(var f=c[0],d=f.parentNode,h=0,g=e.length;h=0?a.setAttribute("selected",e):a.selected=e},w:function(a){return(a||"").replace(c,"")},Db:function(a,e){for(var c= 11 | [],f=(a||"").split(e),d=0,h=f.length;da.length?p:a.substring(0,e.length)===e},hb:function(a){for(var e=Array.prototype.slice.call(arguments,1),c="return ("+a+")",f=0;f=0},Qa:function(a,e,c){var f=r.a.eb(a,e);if(c&&!f)a.className=(a.className||"")+" "+e;else if(f&&!c){for(var c=(a.className||"").split(/\s+/),f="",d=0;d=0;h--)f(c[h])&&d.push(c[h]);return d},vb:function(a){return typeof a== 16 | "string"&&(a=r.a.w(a))?window.JSON&&window.JSON.parse?window.JSON.parse(a):(new Function("return "+a))():o},ra:function(a){(typeof JSON=="undefined"||typeof JSON.stringify=="undefined")&&b(Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js"));return JSON.stringify(r.a.d(a))},wb:function(a,e,c){var c=c||{},f=c.params||{},d=c.includeFields||this.Ca, 17 | h=a;if(typeof a=="object"&&a.tagName=="FORM")for(var h=a.action,g=d.length-1;g>=0;g--)for(var i=r.a.Da(a,d[g]),v=i.length-1;v>=0;v--)f[i[v].name]=i[v].value;var e=r.a.d(e),u=document.createElement("FORM");u.style.display="none";u.action=h;u.method="post";for(var y in e)a=document.createElement("INPUT"),a.name=y,a.value=r.a.ra(r.a.d(e[y])),u.appendChild(a);for(y in f)a=document.createElement("INPUT"),a.name=y,a.value=f[y],u.appendChild(a);document.body.appendChild(u);c.submitter?c.submitter(u):u.submit(); 18 | setTimeout(function(){u.parentNode.removeChild(u)},0)}}};r.b("ko.utils",r.a);r.b("ko.utils.arrayForEach",r.a.n);r.b("ko.utils.arrayFirst",r.a.Wa);r.b("ko.utils.arrayFilter",r.a.aa);r.b("ko.utils.arrayGetDistinctValues",r.a.za);r.b("ko.utils.arrayIndexOf",r.a.k);r.b("ko.utils.arrayMap",r.a.ba);r.b("ko.utils.arrayPushAll",r.a.J);r.b("ko.utils.arrayRemoveItem",r.a.ca);r.b("ko.utils.extend",r.a.extend);r.b("ko.utils.fieldsIncludedWithJsonPost",r.a.Ca);r.b("ko.utils.getFormFields",r.a.Da); 19 | r.b("ko.utils.postJson",r.a.wb);r.b("ko.utils.parseJson",r.a.vb);r.b("ko.utils.registerEventHandler",r.a.s);r.b("ko.utils.stringifyJson",r.a.ra);r.b("ko.utils.range",r.a.yb);r.b("ko.utils.toggleDomNodeCssClass",r.a.Qa);r.b("ko.utils.triggerEvent",r.a.ta);r.b("ko.utils.unwrapObservable",r.a.d);Function.prototype.bind||(Function.prototype.bind=function(a){var c=this,d=Array.prototype.slice.call(arguments),a=d.shift();return function(){return c.apply(a,d.concat(Array.prototype.slice.call(arguments)))}}); 20 | r.a.e=new function(){var a=0,c="__ko__"+(new Date).getTime(),d={};return{get:function(a,c){var d=r.a.e.getAll(a,p);return d===l?l:d[c]},set:function(a,c,d){d===l&&r.a.e.getAll(a,p)===l||(r.a.e.getAll(a,m)[c]=d)},getAll:function(e,f){var h=e[c];if(!(h&&h!=="null")){if(!f)return;h=e[c]="ko"+a++;d[h]={}}return d[h]},clear:function(a){var f=a[c];f&&(delete d[f],a[c]=o)}}};r.b("ko.utils.domData",r.a.e);r.b("ko.utils.domData.clear",r.a.e.clear); 21 | r.a.z=new function(){function a(a,c){var h=r.a.e.get(a,d);h===l&&c&&(h=[],r.a.e.set(a,d,h));return h}function c(e){var c=a(e,p);if(c)for(var c=c.slice(0),d=0;d",""]||!d.indexOf("",""]||(!d.indexOf("",""]||[0,"",""];a="ignored
"+d[1]+a+d[2]+"
";for(typeof window.innerShiv=="function"?c.appendChild(window.innerShiv(a)):c.innerHTML=a;d[0]--;)c=c.lastChild; 24 | c=r.a.ka(c.lastChild.childNodes)}return c};r.a.Z=function(a,c){r.a.V(a);if(c!==o&&c!==l)if(typeof c!="string"&&(c=c.toString()),typeof jQuery!="undefined")jQuery(a).html(c);else for(var d=r.a.na(c),e=0;e"},Ra:function(a,c){var h=d[a];h===l&&b(Error("Couldn't find any memo with ID "+ 26 | a+". Perhaps it's already been unmemoized."));try{return h.apply(o,c||[]),m}finally{delete d[a]}},Sa:function(a,f){var d=[];c(a,d);for(var g=0,i=d.length;g0){var d=a[a.length-1];r.a.k(d.Aa,c)>=0||(d.Aa.push(c),d.da(c))}}}}();var A={undefined:m,"boolean":m,number:m,string:m}; 31 | r.A=function(a){function c(){if(arguments.length>0){if(!c.equalityComparer||!c.equalityComparer(d,arguments[0]))c.H(),d=arguments[0],c.G();return this}else return r.U.Ia(c),d}var d=a;r.S.call(c);c.G=function(){c.N(d)};c.H=function(){c.N(d,"beforeChange")};r.a.extend(c,r.A.fn);r.l(c,"valueHasMutated",c.G);r.l(c,"valueWillMutate",c.H);return c};r.A.fn={B:r.A,equalityComparer:function(a,c){return a===o||typeof a in A?a===c:p}};r.W=function(a){return a===o||a===l||a.B===l?p:a.B===r.A?m:r.W(a.B)}; 32 | r.Q=function(a){return typeof a=="function"&&a.B===r.A?m:typeof a=="function"&&a.B===r.i&&a.lb?m:p};r.b("ko.observable",r.A);r.b("ko.isObservable",r.W);r.b("ko.isWriteableObservable",r.Q); 33 | r.R=function(a){arguments.length==0&&(a=[]);a!==o&&a!==l&&!("length"in a)&&b(Error("The argument passed when initializing an observable array must be an array, or null, or undefined."));var c=new r.A(a);r.a.extend(c,r.R.fn);r.l(c,"remove",c.remove);r.l(c,"removeAll",c.zb);r.l(c,"destroy",c.fa);r.l(c,"destroyAll",c.ab);r.l(c,"indexOf",c.indexOf);r.l(c,"replace",c.replace);return c}; 34 | r.R.fn={remove:function(a){for(var c=this(),d=[],e=typeof a=="function"?a:function(c){return c===a},f=0;f=0})},fa:function(a){var c=this(),d=typeof a=="function"?a:function(c){return c===a};this.H();for(var e=c.length-1;e>=0;e--)d(c[e])&& 35 | (c[e]._destroy=m);this.G()},ab:function(a){return a===l?this.fa(function(){return m}):!a?[]:this.fa(function(c){return r.a.k(a,c)>=0})},indexOf:function(a){var c=this();return r.a.k(c,a)},replace:function(a,c){var d=this.indexOf(a);d>=0&&(this.H(),this()[d]=c,this.G())}};r.a.n("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){r.R.fn[a]=function(){var c=this();this.H();c=c[a].apply(c,arguments);this.G();return c}}); 36 | r.a.n(["slice"],function(a){r.R.fn[a]=function(){var c=this();return c[a].apply(c,arguments)}});r.b("ko.observableArray",r.R);function B(a,c){a&&typeof a=="object"?c=a:(c=c||{},c.read=a||c.read);typeof c.read!="function"&&b("Pass a function that returns the value of the dependentObservable");return c} 37 | r.i=function(a,c,d){function e(){r.a.n(q,function(a){a.v()});q=[]}function f(){var a=g.throttleEvaluation;a&&a>=0?(clearTimeout(w),w=setTimeout(h,a)):h()}function h(){if(j&&typeof d.disposeWhen=="function"&&d.disposeWhen())g.v();else{try{e();r.U.Xa(function(a){q.push(a.sa(f))});var a=d.read.call(d.owner||c);g.N(i,"beforeChange");i=a}finally{r.U.end()}g.N(i);j=m}}function g(){if(arguments.length>0)typeof d.write==="function"?d.write.apply(d.owner||c,arguments):b("Cannot write a value to a dependentObservable unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters."); 38 | else return j||h(),r.U.Ia(g),i}var i,j=p,d=B(a,d),k=typeof d.disposeWhenNodeIsRemoved=="object"?d.disposeWhenNodeIsRemoved:o,n=o;if(k){n=function(){g.v()};r.a.z.wa(k,n);var t=d.disposeWhen;d.disposeWhen=function(){return!r.a.ga(k)||typeof t=="function"&&t()}}var q=[],w=o;g.jb=function(){return q.length};g.lb=typeof d.write==="function";g.v=function(){k&&r.a.z.Ja(k,n);e()};r.S.call(g);r.a.extend(g,r.i.fn);d.deferEvaluation!==m&&h();r.l(g,"dispose",g.v);r.l(g,"getDependenciesCount",g.jb);return g}; 39 | r.i.fn={B:r.i};r.i.B=r.A;r.b("ko.dependentObservable",r.i);r.b("ko.computed",r.i); 40 | (function(){function a(e,f,h){h=h||new d;e=f(e);if(!(typeof e=="object"&&e!==o&&e!==l&&!(e instanceof Date)))return e;var g=e instanceof Array?[]:{};h.save(e,g);c(e,function(c){var d=f(e[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":g[c]=d;break;case "object":case "undefined":var k=h.get(d);g[c]=k!==l?k:a(d,f,h)}});return g}function c(a,c){if(a instanceof Array)for(var d=0;d=0?c[i]=g:(a.push(d),c.push(g))};this.get=function(d){d=r.a.k(a,d);return d>=0?c[d]:l}}r.Pa=function(c){arguments.length==0&&b(Error("When calling ko.toJS, pass the object you want to convert."));return a(c,function(a){for(var c=0;r.W(a)&&c<10;c++)a=a();return a})};r.toJSON=function(a){a=r.Pa(a);return r.a.ra(a)}})();r.b("ko.toJS",r.Pa);r.b("ko.toJSON",r.toJSON); 42 | r.h={q:function(a){return a.tagName=="OPTION"?a.__ko__hasDomDataOptionValue__===m?r.a.e.get(a,r.c.options.ma):a.getAttribute("value"):a.tagName=="SELECT"?a.selectedIndex>=0?r.h.q(a.options[a.selectedIndex]):l:a.value},T:function(a,c){if(a.tagName=="OPTION")switch(typeof c){case "string":case "number":r.a.e.set(a,r.c.options.ma,l);"__ko__hasDomDataOptionValue__"in a&&delete a.__ko__hasDomDataOptionValue__;a.value=c;break;default:r.a.e.set(a,r.c.options.ma,c),a.__ko__hasDomDataOptionValue__=m,a.value= 43 | ""}else if(a.tagName=="SELECT")for(var d=a.options.length-1;d>=0;d--){if(r.h.q(a.options[d])==c){a.selectedIndex=d;break}}else{if(c===o||c===l)c="";a.value=c}}};r.b("ko.selectExtensions",r.h);r.b("ko.selectExtensions.readValue",r.h.q);r.b("ko.selectExtensions.writeValue",r.h.T); 44 | r.j=function(){function a(a,e){for(var d=o;a!=d;)d=a,a=a.replace(c,function(a,c){return e[c]});return a}var c=/\@ko_token_(\d+)\@/g,d=/^[\_$a-z][\_$a-z0-9]*(\[.*?\])*(\.[\_$a-z][\_$a-z0-9]*(\[.*?\])*)*$/i,e=["true","false"];return{D:[],Y:function(c){var e=r.a.w(c);if(e.length<3)return[];e.charAt(0)==="{"&&(e=e.substring(1,e.length-1));for(var c=[],d=o,i,j=0;j0&& 46 | q0&&g.push(","),i.key){var k;a:{k=i.key;var n=r.a.w(k);switch(n.length&&n.charAt(0)){case "'":case '"':break a;default:k="'"+n+"'"}}i=i.value;g.push(k);g.push(":");g.push(i);n=r.a.w(i);if(r.a.k(e,r.a.w(n).toLowerCase())>=0?0:n.match(d)!==o)a.length>0&&a.push(", "),a.push(k+" : function(__ko_value) { "+ 47 | i+" = __ko_value; }")}else i.unknown&&g.push(i.unknown);c=g.join("");a.length>0&&(c=c+", '_ko_property_writers' : { "+a.join("")+" } ");return c},rb:function(a,c){for(var e=0;e0?e[e.length-1].nextSibling:a.nextSibling:o}var f=document.createComment("test").text==="<\!--test--\>",h=f?/^<\!--\s*ko\s+(.*\:.*)\s*--\>$/: 49 | /^\s*ko\s+(.*\:.*)\s*$/,g=f?/^<\!--\s*\/ko\s*--\>$/:/^\s*\/ko\s*$/,i={ul:m,ol:m};r.f={C:{},childNodes:function(c){return a(c)?d(c):c.childNodes},ha:function(c){if(a(c))for(var c=r.f.childNodes(c),e=0,d=c.length;e0&&C(a,d,p)}}; 64 | r.c.options={update:function(a,c,d){a.tagName!="SELECT"&&b(Error("options binding applies only to SELECT elements"));for(var e=a.length==0,f=r.a.ba(r.a.aa(a.childNodes,function(a){return a.tagName&&a.tagName=="OPTION"&&a.selected}),function(a){return r.h.q(a)||a.innerText||a.textContent}),h=a.scrollTop,g=r.a.d(c());a.length>0;)r.F(a.options[0]),a.remove(0);if(g){d=d();typeof g.length!="number"&&(g=[g]);if(d.optionsCaption){var i=document.createElement("OPTION");r.a.Z(i,d.optionsCaption);r.h.T(i,l); 65 | a.appendChild(i)}for(var c=0,j=g.length;c=0&&(r.a.Ma(g[c],m),i++);if(h)a.scrollTop=h;e&& 66 | "value"in d&&C(a,r.a.d(d.value),m)}}};r.c.options.ma="__ko.bindingHandlers.options.optionValueDomData__"; 67 | r.c.selectedOptions={Ea:function(a){for(var c=[],a=a.childNodes,d=0,e=a.length;d=0)}}};r.c.text={update:function(a,c){var d=r.a.d(c());if(d===o||d===l)d="";typeof a.innerText=="string"?a.innerText=d:a.textContent=d}};r.c.html={init:function(){return{controlsDescendantBindings:m}},update:function(a,c){var d=r.a.d(c());r.a.Z(a,d)}};r.c.css={update:function(a,c){var d=r.a.d(c()||{}),e;for(e in d)if(typeof e=="string"){var f=r.a.d(d[e]);r.a.Qa(a,e,f)}}}; 69 | r.c.style={update:function(a,c){var d=r.a.d(c()||{}),e;for(e in d)if(typeof e=="string"){var f=r.a.d(d[e]);a.style[e]=f||""}}};r.c.uniqueName={init:function(a,c){if(c())a.name="ko_unique_"+ ++r.c.uniqueName.Za,(r.a.ob||r.a.pb)&&a.mergeAttributes(document.createElement(""),p)}};r.c.uniqueName.Za=0; 70 | r.c.checked={init:function(a,c,d){r.a.s(a,"click",function(){var e;if(a.type=="checkbox")e=a.checked;else if(a.type=="radio"&&a.checked)e=a.value;else return;var f=c();a.type=="checkbox"&&r.a.d(f)instanceof Array?(e=r.a.k(r.a.d(f),a.value),a.checked&&e<0?f.push(a.value):!a.checked&&e>=0&&f.splice(e,1)):r.Q(f)?f()!==e&&f(e):(f=d(),f._ko_property_writers&&f._ko_property_writers.checked&&f._ko_property_writers.checked(e))});a.type=="radio"&&!a.name&&r.c.uniqueName.init(a,function(){return m})},update:function(a, 71 | c){var d=r.a.d(c());if(a.type=="checkbox")a.checked=d instanceof Array?r.a.k(d,a.value)>=0:d;else if(a.type=="radio")a.checked=a.value==d}};r.c.attr={update:function(a,c){var d=r.a.d(c())||{},e;for(e in d)if(typeof e=="string"){var f=r.a.d(d[e]);f===p||f===o||f===l?a.removeAttribute(e):a.setAttribute(e,f.toString())}}}; 72 | r.c.hasfocus={init:function(a,c,d){function e(a){var e=c();a!=r.a.d(e)&&(r.Q(e)?e(a):(e=d(),e._ko_property_writers&&e._ko_property_writers.hasfocus&&e._ko_property_writers.hasfocus(a)))}r.a.s(a,"focus",function(){e(m)});r.a.s(a,"focusin",function(){e(m)});r.a.s(a,"blur",function(){e(p)});r.a.s(a,"focusout",function(){e(p)})},update:function(a,c){var d=r.a.d(c());d?a.focus():a.blur();r.a.ta(a,d?"focusin":"focusout")}}; 73 | r.c["with"]={o:function(a){return function(){var c=a();return{"if":c,data:c,templateEngine:r.p.M}}},init:function(a,c){return r.c.template.init(a,r.c["with"].o(c))},update:function(a,c,d,e,f){return r.c.template.update(a,r.c["with"].o(c),d,e,f)}};r.j.D["with"]=p;r.f.C["with"]=m;r.c["if"]={o:function(a){return function(){return{"if":a(),templateEngine:r.p.M}}},init:function(a,c){return r.c.template.init(a,r.c["if"].o(c))},update:function(a,c,d,e,f){return r.c.template.update(a,r.c["if"].o(c),d,e,f)}}; 74 | r.j.D["if"]=p;r.f.C["if"]=m;r.c.ifnot={o:function(a){return function(){return{ifnot:a(),templateEngine:r.p.M}}},init:function(a,c){return r.c.template.init(a,r.c.ifnot.o(c))},update:function(a,c,d,e,f){return r.c.template.update(a,r.c.ifnot.o(c),d,e,f)}};r.j.D.ifnot=p;r.f.C.ifnot=m; 75 | r.c.foreach={o:function(a){return function(){var c=r.a.d(a());return!c||typeof c.length=="number"?{foreach:c,templateEngine:r.p.M}:{foreach:c.data,includeDestroyed:c.includeDestroyed,afterAdd:c.afterAdd,beforeRemove:c.beforeRemove,afterRender:c.afterRender,templateEngine:r.p.M}}},init:function(a,c){return r.c.template.init(a,r.c.foreach.o(c))},update:function(a,c,d,e,f){return r.c.template.update(a,r.c.foreach.o(c),d,e,f)}};r.j.D.foreach=p;r.f.C.foreach=m;r.b("ko.allowedVirtualElementBindings",r.f.C); 76 | r.t=function(){};r.t.prototype.renderTemplateSource=function(){b("Override renderTemplateSource in your ko.templateEngine subclass")};r.t.prototype.createJavaScriptEvaluatorBlock=function(){b("Override createJavaScriptEvaluatorBlock in your ko.templateEngine subclass")}; 77 | r.t.prototype.makeTemplateSource=function(a){if(typeof a=="string"){var c=document.getElementById(a);c||b(Error("Cannot find template with ID "+a));return new r.m.g(c)}else if(a.nodeType==1||a.nodeType==8)return new r.m.I(a);else b(Error("Unrecognised template type: "+a))};r.t.prototype.renderTemplate=function(a,c,d){return this.renderTemplateSource(this.makeTemplateSource(a),c,d)};r.t.prototype.isTemplateRewritten=function(a){return this.allowTemplateRewriting===p?m:this.X&&this.X[a]?m:this.makeTemplateSource(a).data("isRewritten")}; 78 | r.t.prototype.rewriteTemplate=function(a,c){var d=this.makeTemplateSource(a),e=c(d.text());d.text(e);d.data("isRewritten",m);if(typeof a=="string")this.X=this.X||{},this.X[a]=m};r.b("ko.templateEngine",r.t); 79 | r.$=function(){function a(a,c,d){for(var a=r.j.Y(a),g=r.j.D,i=0;i/g;return{gb:function(a,c){c.isTemplateRewritten(a)||c.rewriteTemplate(a,function(a){return r.$.ub(a,c)})},ub:function(e,f){return e.replace(c,function(c,d,e,j,k,n,t){return a(t,d,f)}).replace(d,function(c,d){return a(d,"<\!-- ko --\>",f)})},Ua:function(a){return r.r.la(function(c,d){c.nextSibling&&r.ya(c.nextSibling,a,d)})}}}();r.b("ko.templateRewriting",r.$);r.b("ko.templateRewriting.applyMemoizedBindingsToNextSibling",r.$.Ua);r.m={};r.m.g=function(a){this.g=a}; 81 | r.m.g.prototype.text=function(){if(arguments.length==0)return this.g.tagName.toLowerCase()=="script"?this.g.text:this.g.innerHTML;else{var a=arguments[0];this.g.tagName.toLowerCase()=="script"?this.g.text=a:r.a.Z(this.g,a)}};r.m.g.prototype.data=function(a){if(arguments.length===1)return r.a.e.get(this.g,"templateSourceData_"+a);else r.a.e.set(this.g,"templateSourceData_"+a,arguments[1])};r.m.I=function(a){this.g=a};r.m.I.prototype=new r.m.g; 82 | r.m.I.prototype.text=function(){if(arguments.length==0)return r.a.e.get(this.g,"__ko_anon_template__");else r.a.e.set(this.g,"__ko_anon_template__",arguments[0])};r.b("ko.templateSources",r.m);r.b("ko.templateSources.domElement",r.m.g);r.b("ko.templateSources.anonymousTemplate",r.m.I); 83 | (function(){function a(a,c,d){for(var g=0;node=a[g];g++)node.parentNode===c&&(node.nodeType===1||node.nodeType===8)&&d(node)}function c(a,c,h,g,i){var i=i||{},j=i.templateEngine||d;r.$.gb(h,j);h=j.renderTemplate(h,g,i);(typeof h.length!="number"||h.length>0&&typeof h[0].nodeType!="number")&&b("Template engine must return an array of DOM nodes");j=p;switch(c){case "replaceChildren":r.f.pa(a,h);j=m;break;case "replaceNode":r.a.Ka(a,h);j=m;break;case "ignoreTargetNode":break;default:b(Error("Unknown renderMode: "+ 84 | c))}j&&(r.va(h,g),i.afterRender&&i.afterRender(h,g.$data));return h}var d;r.qa=function(a){a!=l&&!(a instanceof r.t)&&b("templateEngine must inherit from ko.templateEngine");d=a};r.va=function(c,d){var h=r.a.J([],c),g=c.length>0?c[0].parentNode:o;a(h,g,function(a){r.xa(d,a)});a(h,g,function(a){r.r.Sa(a,[d])})};r.oa=function(a,f,h,g,i){h=h||{};(h.templateEngine||d)==l&&b("Set a template engine before calling renderTemplate");i=i||"replaceChildren";if(g){var j=g.nodeType?g:g.length>0?g[0]:o;return new r.i(function(){var d= 85 | f&&f instanceof r.K?f:new r.K(r.a.d(f)),n=typeof a=="function"?a(d.$data):a,d=c(g,i,n,d,h);i=="replaceNode"&&(g=d,j=g.nodeType?g:g.length>0?g[0]:o)},o,{disposeWhen:function(){return!j||!r.a.ga(j)},disposeWhenNodeIsRemoved:j&&i=="replaceNode"?j.parentNode:j})}else return r.r.la(function(c){r.oa(a,f,h,c,"replaceNode")})};r.Ab=function(a,d,h,g,i){function j(a,c){var d=k(a);r.va(c,d);h.afterRender&&h.afterRender(c,d.$data)}function k(a){return i.createChildContext(r.a.d(a))}return new r.i(function(){var i= 86 | r.a.d(d)||[];typeof i.length=="undefined"&&(i=[i]);i=r.a.aa(i,function(a){return h.includeDestroyed||a===l||a===o||!r.a.d(a._destroy)});r.a.La(g,i,function(d){var f=typeof a=="function"?a(d):a;return c(o,"ignoreTargetNode",f,k(d),h)},h,j)},o,{disposeWhenNodeIsRemoved:g})};r.c.template={init:function(a,c){var d=r.a.d(c());typeof d!="string"&&!d.name&&a.nodeType==1&&((new r.m.I(a)).text(a.innerHTML),r.a.V(a));return{controlsDescendantBindings:m}},update:function(a,c,d,g,i){c=r.a.d(c());g=m;typeof c== 87 | "string"?d=c:(d=c.name,"if"in c&&(g=g&&r.a.d(c["if"])),"ifnot"in c&&(g=g&&!r.a.d(c.ifnot)));var j=o;typeof c.foreach!="undefined"?j=r.Ab(d||a,g&&c.foreach||[],c,a,i):g?(i=typeof c=="object"&&"data"in c?i.createChildContext(r.a.d(c.data)):i,j=r.oa(d||a,i,c,a)):r.f.ha(a);i=j;(c=r.a.e.get(a,"__ko__templateSubscriptionDomDataKey__"))&&typeof c.v=="function"&&c.v();r.a.e.set(a,"__ko__templateSubscriptionDomDataKey__",i)}};r.j.D.template=function(a){a=r.j.Y(a);return a.length==1&&a[0].unknown?o:r.j.rb(a, 88 | "name")?o:"This template engine does not support anonymous templates nested within its templates"};r.f.C.template=m})();r.b("ko.setTemplateEngine",r.qa);r.b("ko.renderTemplate",r.oa); 89 | r.a.O=function(a,c,d){if(d===l)return r.a.O(a,c,1)||r.a.O(a,c,10)||r.a.O(a,c,Number.MAX_VALUE);else{for(var a=a||[],c=c||[],e=a,f=c,h=[],g=0;g<=f.length;g++)h[g]=[];for(var g=0,i=Math.min(e.length,d);g<=i;g++)h[0][g]=g;g=1;for(i=Math.min(f.length,d);g<=i;g++)h[g][0]=g;for(var i=e.length,j,k=f.length,g=1;g<=i;g++){j=Math.max(1,g-d);for(var n=Math.min(k,g+d);j<=n;j++)h[j][g]=e[g-1]===f[j-1]?h[j-1][g-1]:Math.min(h[j-1][g]===l?Number.MAX_VALUE:h[j-1][g]+1,h[j][g-1]===l?Number.MAX_VALUE:h[j][g-1]+1)}d= 90 | a.length;e=c.length;f=[];g=h[e][d];if(g===l)h=o;else{for(;d>0||e>0;){i=h[e][d];k=e>0?h[e-1][d]:g+1;n=d>0?h[e][d-1]:g+1;j=e>0&&d>0?h[e-1][d-1]:g+1;if(k===l||k2){for(var c=a[0],f=a[a.length-1],h=[c];c!==f;){c=c.nextSibling;if(!c)return;h.push(c)}Array.prototype.splice.apply(a,[0,a.length].concat(h))}}function c(c,e,f,h){var g=[],c=r.i(function(){var c=e(f)||[];g.length>0&&(a(g),r.a.Ka(g,c),h&&h(f,c));g.splice(0,g.length);r.a.J(g,c)},o,{disposeWhenNodeIsRemoved:c,disposeWhen:function(){return g.length==0||!r.a.ga(g[0])}});return{sb:g,i:c}}r.a.La=function(d,e,f,h,g){for(var e=e||[],h=h||{},i=r.a.e.get(d,"setDomNodeChildrenFromArrayMapping_lastMappingResult")=== 92 | l,j=r.a.e.get(d,"setDomNodeChildrenFromArrayMapping_lastMappingResult")||[],k=r.a.ba(j,function(a){return a.Va}),n=r.a.O(k,e),e=[],t=0,q=[],k=[],w=o,s=0,x=n.length;s0&&(w=v.P[v.P.length-1]);t++;break;case "deleted":j[t].i.v();a(j[t].P);r.a.n(j[t].P,function(a){q.push({element:a,index:s,value:n[s].value});w=a});t++;break;case "added":var v=n[s].value,u=c(d,f,v,g),y=u.sb;e.push({Va:n[s].value,P:y,i:u.i});for(var u=0,D=y.length;u< 93 | D;u++){var z=y[u];k.push({element:z,index:s,value:n[s].value});w==o?r.f.xb(d,z):r.f.mb(d,z,w);w=z}g&&g(v,y)}r.a.n(q,function(a){r.F(a.element)});f=p;if(!i){if(h.afterAdd)for(s=0;s=0)return 2}catch(a){}return 1}();this.renderTemplateSource=function(d,e,f){f=f||{};a<2&&b(Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later."));var h=d.data("precompiled");h||(h=d.text()||"",h=jQuery.template(o,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),d.data("precompiled",h)); 96 | d=[e.$data];e=jQuery.extend({koBindingContext:e},f.templateOptions);e=jQuery.tmpl(h,d,e);e.appendTo(document.createElement("div"));jQuery.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,c){document.write("