├── LICENSE ├── README.md ├── addons └── jsonlint-crx │ ├── jsonlint-logo.png │ └── manifest.json ├── c ├── css │ ├── blueprint │ │ ├── License │ │ ├── Readme │ │ ├── compressed │ │ │ ├── print.css │ │ │ └── screen.css │ │ ├── lib │ │ │ ├── forms.css │ │ │ ├── grid.css │ │ │ ├── grid.png │ │ │ ├── ie.css │ │ │ ├── reset.css │ │ │ └── typography.css │ │ ├── plugins │ │ │ ├── buttons │ │ │ │ ├── Readme │ │ │ │ ├── buttons.css │ │ │ │ └── icons │ │ │ │ │ ├── cross.png │ │ │ │ │ ├── key.png │ │ │ │ │ └── tick.png │ │ │ ├── css-classes │ │ │ │ ├── Readme │ │ │ │ └── css-classes.css │ │ │ └── fancy-type │ │ │ │ ├── Readme │ │ │ │ ├── fancy-type-compressed.css │ │ │ │ └── fancy-type.css │ │ ├── print.css │ │ └── screen.css │ ├── screen.css │ └── tests │ │ ├── elements.html │ │ ├── forms.html │ │ ├── grid.html │ │ ├── index.html │ │ ├── plugins.html │ │ ├── sample.html │ │ └── test.jpg ├── images │ ├── .DS_Store │ ├── kindling.png │ ├── loadspinner.gif │ └── logo_arc90.png └── js │ ├── jquery-1.6.1.min.js │ ├── jquery-linedtextarea │ ├── jquery-linedtextarea-license.txt │ ├── jquery-linedtextarea.css │ ├── jquery-linedtextarea.html │ └── jquery-linedtextarea.js │ ├── jsl.format.js │ ├── jsl.interactions.js │ ├── jsl.parser.js │ └── json2.js ├── favicon.ico ├── index.html └── proxy.php /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Chris Dary. 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any 4 | purpose with or without fee is hereby granted, provided that the above 5 | copyright notice and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 12 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 13 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **This Repo is Archived** 2 | 3 | It has not been active for many years: jsonlint dot com was taken over by a third party during a domain expiry at a former company and the third party has put ads all over it. I'm not affiliated with it and do not endorse it. 4 | -------------------------------------------------------------------------------- /addons/jsonlint-crx/jsonlint-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/addons/jsonlint-crx/jsonlint-logo.png -------------------------------------------------------------------------------- /addons/jsonlint-crx/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JSON Lint", 3 | "description": "Always use double quotes.", 4 | "version": "1", 5 | "app": { 6 | "urls": [ 7 | "http://www.jsonlint.com/", 8 | "http://jsonlint.com/" 9 | ], 10 | "launch": { 11 | "web_url": "http://jsonlint.com/" 12 | } 13 | }, 14 | "icons": { 15 | "128": "jsonlint-logo.png" 16 | }, 17 | "permissions": [] 18 | } 19 | -------------------------------------------------------------------------------- /c/css/blueprint/License: -------------------------------------------------------------------------------- 1 | Copyright (c) 2007 Olav Bjorkoy (http://bjorkoy.com) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sub-license, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice, and every other copyright notice found in this 11 | software, and all the attributions in every file, and this permission notice 12 | shall be included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 | THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------------------- /c/css/blueprint/Readme: -------------------------------------------------------------------------------- 1 | Blueprint CSS Framework Readme 2 | 3 | * URL: code.google.com/p/blueprintcss 4 | * List: groups.google.com/group/blueprintcss 5 | * News: bjorkoy.com 6 | 7 | ---------------------------------------------------------------- 8 | 9 | Welcome to Blueprint! This is a CSS framework designed to 10 | cut down on your CSS development time. It gives you a solid 11 | foundation to build your own CSS on. Here are some of the 12 | features BP provides out-of-the-box: 13 | 14 | * An easily customizable grid 15 | * Sensible default typography 16 | * A typographic baseline 17 | * Perfected browser CSS reset 18 | * A stylesheet for printing 19 | * Absolutely no bloat! 20 | 21 | 22 | Setup instructions 23 | ---------------------------------------------------------------- 24 | 25 | Here's how you set up Blueprint on your site. 26 | 27 | 1) Upload the "blueprint" folder in this folder to your server, 28 | and place it in whatever folder you'd like. A good choice 29 | would be your CSS folder. 30 | 31 | 2) Add the following three lines to every section of your 32 | site. Make sure the three href paths are correct (here, BP is in my CSS folder): 33 | 34 | 35 | 36 | 37 | 38 | 3) See screen.css for further configuration options, including 39 | advanced functionality through plugins. 40 | 41 | 4) To use the compressed version on a live site, edit the href 42 | paths above to point to the blueprint/compressed directory, 43 | where you'll find compressed versions of screen.css and print.css. 44 | 45 | 46 | How to use Blueprint 47 | ---------------------------------------------------------------- 48 | 49 | Here's a quick primer on how to use BP: 50 | http://code.google.com/p/blueprintcss/wiki/Tutorial 51 | 52 | Each CSS file is also heavily commented, so you'll 53 | learn a lot by reading through them. 54 | 55 | 56 | Files in Blueprint 57 | ---------------------------------------------------------------- 58 | 59 | The framework has a few files you should check out. Every file 60 | contains lots of (hopefully) clarifying comments. 61 | 62 | 63 | Main files: 64 | 65 | * blueprint/screen.css 66 | This is the main file of the framework. It imports other CSS 67 | files from the "lib" directory, and should be included on 68 | every page. We also call it the the configuration file, 69 | although you don't actually have to modify it. 70 | 71 | * blueprint/print.css 72 | This file sets some default print rules, so that printed versions 73 | of your site looks better than they usually would. It should be 74 | included on every page. 75 | 76 | 77 | Core files: 78 | 79 | * blueprint/lib/grid.css 80 | This file sets up the grid (it's true). It has a lot of classes 81 | you apply to divs to set up any sort of column-based grid. 82 | 83 | * blueprint/lib/typography.css 84 | This file sets some default typography. It also has a few 85 | methods for some really fancy stuff to do with your text. 86 | 87 | * blueprint/lib/reset.css 88 | This file resets CSS values that browsers tend to set for you. 89 | 90 | * blueprint/compressed/screen.css & 91 | blueprint/compressed/print.css 92 | A compressed version of the core and print files. Use this on 93 | every live site. Use the link tags in the HTML to include these. 94 | 95 | * blueprint/lib/ie.css 96 | Contains every hack for Internet Explorer,so that our core 97 | files stay sweet and valid. 98 | 99 | 100 | Other: 101 | 102 | * blueprint/plugins/ 103 | Contains additional functionality in the form of simple plugins 104 | for Blueprint. See individual readme files in the directory 105 | of each plugin for further instructions. 106 | 107 | * scripts/ 108 | BP comes with two scripts: 109 | * One for validating the CSS in the core files. 110 | * One for re-compressing the files in the "compressed" folder 111 | from the core files, if you've made changes to the core. 112 | 113 | * tests/ 114 | Contains html files which tests most aspects of Blueprint. 115 | Open tests/index.html for further instructions. 116 | 117 | 118 | Credits 119 | ---------------------------------------------------------------- 120 | 121 | Many parts of BP are directly inspired by other peoples work. 122 | You may thank them for their brilliance. However, *do not* ask 123 | them for support or any kind of help with BP. 124 | 125 | * Jeff Croft [jeffcroft.com] 126 | * Nathan Borror [playgroundblues.com] 127 | * Christian Metts [mintchaos.com] 128 | * Wilson Miner [wilsonminer.com] 129 | * The Typogrify Project [code.google.com/p/typogrify] 130 | * Eric Meyer [meyerweb.com/eric] 131 | * Angus Turnbull [twinhelix.com] 132 | * Khoi Vinh [subtraction.com] 133 | 134 | Questions, comments, suggestions or bug reports go to 135 | olav at bjorkoy dot com. 136 | 137 | Thanks for your interest! 138 | 139 | -------------------------------------------------------------------------------- /c/css/blueprint/compressed/print.css: -------------------------------------------------------------------------------- 1 | body { 2 | line-height:1.5; 3 | font-family:"Helvetica Neue", "Lucida Grande", Arial, Verdana, sans-serif; 4 | color:#000; 5 | background:none; 6 | font-size:10pt; 7 | } 8 | 9 | .container { 10 | background:none; 11 | } 12 | 13 | h1,h2,h3,h4,h5,h6 { 14 | font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif; 15 | } 16 | 17 | code { 18 | font:.9em "Courier New", Monaco, Courier, monospace; 19 | } 20 | 21 | img { 22 | float:left; 23 | margin:1.5em 1.5em 1.5em 0; 24 | } 25 | 26 | a img { 27 | border:none; 28 | } 29 | 30 | p img.top { 31 | margin-top:0; 32 | } 33 | 34 | hr { 35 | background:#ccc; 36 | color:#ccc; 37 | width:100%; 38 | height:2px; 39 | border:none; 40 | margin:2em 0; 41 | padding:0; 42 | } 43 | 44 | blockquote { 45 | font-style:italic; 46 | font-size:.9em; 47 | margin:1.5em; 48 | padding:1em; 49 | } 50 | 51 | .small { 52 | font-size:.9em; 53 | } 54 | 55 | .large { 56 | font-size:1.1em; 57 | } 58 | 59 | .quiet { 60 | color:#999; 61 | } 62 | 63 | .hide { 64 | display:none; 65 | } 66 | 67 | a:link,a:visited { 68 | background:transparent; 69 | font-weight:700; 70 | text-decoration:underline; 71 | } 72 | 73 | a:link:after,a:visited:after { 74 | content:" (" attr(href) ") "; 75 | font-size:90%; 76 | } -------------------------------------------------------------------------------- /c/css/blueprint/compressed/screen.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td { 2 | border:0; 3 | font-weight:inherit; 4 | font-style:inherit; 5 | font-size:100%; 6 | font-family:inherit; 7 | vertical-align:baseline; 8 | margin:0; 9 | padding:0; 10 | } 11 | 12 | body { 13 | line-height:1.5; 14 | background:#fff; 15 | font-size:75%; 16 | color:#222; 17 | font-family:"Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; 18 | margin:1.5em 0; 19 | } 20 | 21 | table { 22 | border-collapse:separate; 23 | border-spacing:0; 24 | margin-bottom:1.4em; 25 | } 26 | 27 | caption,th,td { 28 | text-align:left; 29 | font-weight:400; 30 | } 31 | 32 | blockquote:before,blockquote:after,q:before,q:after { 33 | content:""; 34 | } 35 | 36 | blockquote,q { 37 | quotes:; 38 | } 39 | 40 | a img { 41 | border:none; 42 | } 43 | 44 | h1,h2,h3,h4,h5,h6 { 45 | color:#111; 46 | font-family:"Helvetica Neue", Helvetica, Arial, sans-serif; 47 | font-weight:400; 48 | } 49 | 50 | h1 { 51 | font-size:3em; 52 | line-height:1; 53 | margin-bottom:.1em; 54 | } 55 | 56 | h2 { 57 | font-size:2em; 58 | margin-bottom:.75em; 59 | } 60 | 61 | h3 { 62 | font-size:1.5em; 63 | line-height:1; 64 | margin-bottom:1em; 65 | } 66 | 67 | h4 { 68 | font-size:1.2em; 69 | line-height:1.25; 70 | margin-bottom:1.25em; 71 | } 72 | 73 | h5 { 74 | font-size:1em; 75 | font-weight:700; 76 | margin-bottom:1.5em; 77 | } 78 | 79 | h6 { 80 | font-size:1em; 81 | font-weight:700; 82 | } 83 | 84 | p.last { 85 | margin-bottom:0; 86 | } 87 | 88 | p img { 89 | float:left; 90 | margin:1.5em 1.5em 1.5em 0; 91 | padding:0; 92 | } 93 | 94 | p img.top { 95 | margin-top:0; 96 | } 97 | 98 | ul,ol { 99 | margin:0 1.5em 1.5em; 100 | } 101 | 102 | ul { 103 | list-style-type:circle; 104 | } 105 | 106 | ol { 107 | list-style-type:decimal; 108 | } 109 | 110 | dd { 111 | margin-left:1.5em; 112 | } 113 | 114 | abbr,acronym { 115 | border-bottom:1px dotted #666; 116 | } 117 | 118 | address { 119 | margin-top:1.5em; 120 | font-style:italic; 121 | } 122 | 123 | a:focus,a:hover { 124 | color:#000; 125 | } 126 | 127 | a { 128 | color:#009; 129 | text-decoration:underline; 130 | } 131 | 132 | blockquote { 133 | color:#666; 134 | font-style:italic; 135 | margin:1.5em; 136 | } 137 | 138 | em,dfn { 139 | font-style:italic; 140 | background:#ffc; 141 | } 142 | 143 | pre,code { 144 | white-space:pre; 145 | margin:1.5em 0; 146 | } 147 | 148 | pre,code,tt { 149 | font:1em 'andale mono', monotype, 'lucida console', monospace; 150 | line-height:1.5; 151 | } 152 | 153 | tt { 154 | display:block; 155 | line-height:1.5; 156 | margin:1.5em 0; 157 | } 158 | 159 | th { 160 | border-bottom:2px solid #ccc; 161 | font-weight:700; 162 | } 163 | 164 | td { 165 | border-bottom:1px solid #ddd; 166 | } 167 | 168 | th,td { 169 | padding:4px 10px 4px 0; 170 | } 171 | 172 | tfoot { 173 | font-style:italic; 174 | } 175 | 176 | caption { 177 | background:#ffc; 178 | } 179 | 180 | table .last { 181 | padding-right:0; 182 | } 183 | 184 | .small { 185 | font-size:.8em; 186 | margin-bottom:1.875em; 187 | line-height:1.875em; 188 | } 189 | 190 | .large { 191 | font-size:1.2em; 192 | line-height:2.5em; 193 | margin-bottom:1.25em; 194 | } 195 | 196 | .hide { 197 | display:none; 198 | } 199 | 200 | .highlight { 201 | background:#ff0; 202 | } 203 | 204 | .added { 205 | color:#060; 206 | } 207 | 208 | .removed { 209 | color:#900; 210 | } 211 | 212 | .top { 213 | margin-top:0; 214 | padding-top:0; 215 | } 216 | 217 | .bottom { 218 | margin-bottom:0; 219 | padding-bottom:0; 220 | } 221 | 222 | .container { 223 | width:950px; 224 | margin:0 auto; 225 | } 226 | 227 | .column { 228 | float:left; 229 | margin-right:10px; 230 | } 231 | 232 | .last { 233 | margin-right:0; 234 | } 235 | 236 | .span-1 { 237 | width:30px; 238 | } 239 | 240 | .span-2 { 241 | width:70px; 242 | } 243 | 244 | .span-3 { 245 | width:110px; 246 | } 247 | 248 | .span-4 { 249 | width:150px; 250 | } 251 | 252 | .span-5 { 253 | width:190px; 254 | } 255 | 256 | .span-6 { 257 | width:230px; 258 | } 259 | 260 | .span-7 { 261 | width:270px; 262 | } 263 | 264 | .span-8 { 265 | width:310px; 266 | } 267 | 268 | .span-9 { 269 | width:350px; 270 | } 271 | 272 | .span-10 { 273 | width:390px; 274 | } 275 | 276 | .span-11 { 277 | width:430px; 278 | } 279 | 280 | .span-12 { 281 | width:470px; 282 | } 283 | 284 | .span-13 { 285 | width:510px; 286 | } 287 | 288 | .span-14 { 289 | width:550px; 290 | } 291 | 292 | .span-15 { 293 | width:590px; 294 | } 295 | 296 | .span-16 { 297 | width:630px; 298 | } 299 | 300 | .span-17 { 301 | width:670px; 302 | } 303 | 304 | .span-18 { 305 | width:710px; 306 | } 307 | 308 | .span-19 { 309 | width:750px; 310 | } 311 | 312 | .span-20 { 313 | width:790px; 314 | } 315 | 316 | .span-21 { 317 | width:830px; 318 | } 319 | 320 | .span-22 { 321 | width:870px; 322 | } 323 | 324 | .span-23 { 325 | width:910px; 326 | } 327 | 328 | .span-24 { 329 | width:950px; 330 | margin:0; 331 | } 332 | 333 | .append-1 { 334 | padding-right:40px; 335 | } 336 | 337 | .append-2 { 338 | padding-right:80px; 339 | } 340 | 341 | .append-3 { 342 | padding-right:120px; 343 | } 344 | 345 | .append-4 { 346 | padding-right:160px; 347 | } 348 | 349 | .append-5 { 350 | padding-right:200px; 351 | } 352 | 353 | .append-6 { 354 | padding-right:240px; 355 | } 356 | 357 | .append-7 { 358 | padding-right:280px; 359 | } 360 | 361 | .append-8 { 362 | padding-right:320px; 363 | } 364 | 365 | .append-9 { 366 | padding-right:360px; 367 | } 368 | 369 | .append-10 { 370 | padding-right:400px; 371 | } 372 | 373 | .append-11 { 374 | padding-right:440px; 375 | } 376 | 377 | .append-12 { 378 | padding-right:480px; 379 | } 380 | 381 | .append-13 { 382 | padding-right:520px; 383 | } 384 | 385 | .append-14 { 386 | padding-right:560px; 387 | } 388 | 389 | .append-15 { 390 | padding-right:600px; 391 | } 392 | 393 | .append-16 { 394 | padding-right:640px; 395 | } 396 | 397 | .append-17 { 398 | padding-right:680px; 399 | } 400 | 401 | .append-18 { 402 | padding-right:720px; 403 | } 404 | 405 | .append-19 { 406 | padding-right:760px; 407 | } 408 | 409 | .append-20 { 410 | padding-right:800px; 411 | } 412 | 413 | .append-21 { 414 | padding-right:840px; 415 | } 416 | 417 | .append-22 { 418 | padding-right:880px; 419 | } 420 | 421 | .append-23 { 422 | padding-right:920px; 423 | } 424 | 425 | .prepend-1 { 426 | padding-left:40px; 427 | } 428 | 429 | .prepend-2 { 430 | padding-left:80px; 431 | } 432 | 433 | .prepend-3 { 434 | padding-left:120px; 435 | } 436 | 437 | .prepend-4 { 438 | padding-left:160px; 439 | } 440 | 441 | .prepend-5 { 442 | padding-left:200px; 443 | } 444 | 445 | .prepend-6 { 446 | padding-left:240px; 447 | } 448 | 449 | .prepend-7 { 450 | padding-left:280px; 451 | } 452 | 453 | .prepend-8 { 454 | padding-left:320px; 455 | } 456 | 457 | .prepend-9 { 458 | padding-left:360px; 459 | } 460 | 461 | .prepend-10 { 462 | padding-left:400px; 463 | } 464 | 465 | .prepend-11 { 466 | padding-left:440px; 467 | } 468 | 469 | .prepend-12 { 470 | padding-left:480px; 471 | } 472 | 473 | .prepend-13 { 474 | padding-left:520px; 475 | } 476 | 477 | .prepend-14 { 478 | padding-left:560px; 479 | } 480 | 481 | .prepend-15 { 482 | padding-left:600px; 483 | } 484 | 485 | .prepend-16 { 486 | padding-left:640px; 487 | } 488 | 489 | .prepend-17 { 490 | padding-left:680px; 491 | } 492 | 493 | .prepend-18 { 494 | padding-left:720px; 495 | } 496 | 497 | .prepend-19 { 498 | padding-left:760px; 499 | } 500 | 501 | .prepend-20 { 502 | padding-left:800px; 503 | } 504 | 505 | .prepend-21 { 506 | padding-left:840px; 507 | } 508 | 509 | .prepend-22 { 510 | padding-left:880px; 511 | } 512 | 513 | .prepend-23 { 514 | padding-left:920px; 515 | } 516 | 517 | .border { 518 | padding-right:4px; 519 | margin-right:5px; 520 | border-right:1px solid #eee; 521 | } 522 | 523 | .colborder { 524 | padding-right:24px; 525 | margin-right:25px; 526 | border-right:1px solid #eee; 527 | } 528 | 529 | .pull-1 { 530 | margin-left:-40px; 531 | } 532 | 533 | .pull-2 { 534 | margin-left:-80px; 535 | } 536 | 537 | .pull-3 { 538 | margin-left:-120px; 539 | } 540 | 541 | .pull-4 { 542 | margin-left:-160px; 543 | } 544 | 545 | .push-0 { 546 | margin:0 0 0 18px; 547 | } 548 | 549 | .push-1 { 550 | margin:0 -40px 0 18px; 551 | } 552 | 553 | .push-2 { 554 | margin:0 -80px 0 18px; 555 | } 556 | 557 | .push-3 { 558 | margin:0 -120px 0 18px; 559 | } 560 | 561 | .push-4 { 562 | margin:0 -160px 0 18px; 563 | } 564 | 565 | .push-0,.push-1,.push-2,.push-3,.push-4 { 566 | float:right; 567 | } 568 | 569 | .box { 570 | margin-bottom:1.5em; 571 | background:#eee; 572 | padding:1.5em; 573 | } 574 | 575 | hr { 576 | background:#ddd; 577 | color:#ddd; 578 | clear:both; 579 | float:none; 580 | width:100%; 581 | height:.1em; 582 | border:none; 583 | margin:0 0 1.4em; 584 | } 585 | 586 | hr.space { 587 | background:#fff; 588 | color:#fff; 589 | } 590 | 591 | .clear { 592 | display:block; 593 | } 594 | 595 | .clear:after,.container:after { 596 | content:"."; 597 | display:block; 598 | height:0; 599 | clear:both; 600 | visibility:hidden; 601 | } 602 | 603 | * html .clear { 604 | height:1%; 605 | } 606 | 607 | fieldset { 608 | border:1px solid #ccc; 609 | margin:0 0 1.5em; 610 | padding:1.4em; 611 | } 612 | 613 | legend { 614 | font-weight:700; 615 | font-size:1.2em; 616 | } 617 | 618 | input.text,input.title { 619 | width:300px; 620 | border:1px solid #bbb; 621 | background:#f6f6f6; 622 | margin:.5em .5em .5em 0; 623 | padding:5px; 624 | } 625 | 626 | input.title { 627 | font-size:1.5em; 628 | } 629 | 630 | textarea { 631 | width:400px; 632 | height:250px; 633 | border:1px solid #bbb; 634 | background:#eee; 635 | margin:.5em .5em .5em 0; 636 | padding:5px; 637 | } 638 | 639 | select { 640 | border:1px solid #ccc; 641 | background:#f6f6f6; 642 | width:200px; 643 | } 644 | 645 | .error,.notice,.success { 646 | margin-bottom:1em; 647 | border:2px solid #ddd; 648 | padding:.8em; 649 | } 650 | 651 | .error { 652 | background:#FBE3E4; 653 | color:#D12F19; 654 | border-color:#FBC2C4; 655 | } 656 | 657 | .notice { 658 | background:#FFF6BF; 659 | color:#817134; 660 | border-color:#FFD324; 661 | } 662 | 663 | .success { 664 | background:#E6EFC2; 665 | color:#529214; 666 | border-color:#C6D880; 667 | } 668 | 669 | .error a { 670 | color:#D12F19; 671 | } 672 | 673 | .notice a { 674 | color:#817134; 675 | } 676 | 677 | .success a { 678 | color:#529214; 679 | } 680 | 681 | p,img,dl { 682 | margin:0 0 1.5em; 683 | } 684 | 685 | dl dt,strong,dfn,label { 686 | font-weight:700; 687 | } 688 | 689 | del,.quiet { 690 | color:#666; 691 | } 692 | 693 | input.text:focus,input.title:focus,textarea:focus,select:focus { 694 | background:#fff; 695 | border:1px solid #999; 696 | } 697 | -------------------------------------------------------------------------------- /c/css/blueprint/lib/forms.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | forms.css 4 | * Sets up some default styling for forms 5 | * Gives you classes to enhance your forms 6 | 7 | Usage: 8 | * For text fields, use class .title or .text 9 | 10 | -------------------------------------------------------------- */ 11 | 12 | label { font-weight: bold; } 13 | 14 | 15 | /* Fieldsets */ 16 | fieldset { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; } 17 | legend { font-weight: bold; font-size:1.2em; } 18 | 19 | /* Text fields */ 20 | input.text, input.title { width: 300px; margin:0.5em 0.5em 0.5em 0; } 21 | input.text, input.title { border:1px solid #bbb; background:#f6f6f6; padding:5px; } 22 | input.text:focus, 23 | input.title:focus { border:1px solid #999; background:#fff; } 24 | input.title { font-size:1.5em; } 25 | 26 | /* Textareas */ 27 | textarea { width: 400px; height: 250px; margin:0.5em 0.5em 0.5em 0; } 28 | textarea { border:1px solid #bbb; background:#eee; padding:5px; } 29 | textarea:focus { border:1px solid #999; background:#fff; } 30 | 31 | /* Select fields */ 32 | select { border:1px solid #ccc; background:#f6f6f6; width:200px; } 33 | select:focus { border:1px solid #999; background:#fff; } 34 | 35 | 36 | /* Success, error & notice boxes for messages and errors. */ 37 | .error, 38 | .notice, 39 | .success { padding: .8em; margin-bottom: 1em; border: 2px solid #ddd; } 40 | .error { background: #FBE3E4; color: #D12F19; border-color: #FBC2C4; } 41 | .notice { background: #FFF6BF; color: #817134; border-color: #FFD324; } 42 | .success { background: #E6EFC2; color: #529214; border-color: #C6D880; } 43 | .error a { color: #D12F19; } 44 | .notice a { color: #817134; } 45 | .success a { color: #529214; } 46 | -------------------------------------------------------------------------------- /c/css/blueprint/lib/grid.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | grid.css 4 | * Sets up an easy-to-use grid of 24 columns. 5 | 6 | Based on work by: 7 | * Nathan Borror [playgroundblues.com] 8 | * Jeff Croft [jeffcroft.com] 9 | * Christian Metts [mintchaos.com] 10 | * Khoi Vinh [subtraction.com] 11 | 12 | By default, the grid is 950px wide, with 24 columns 13 | spanning 30px, and a 10px margin between columns. 14 | 15 | If you need fewer or more columns, use this 16 | formula to find the new total width: 17 | Total width = (columns * 40) - 10 18 | 19 | Read more about using a grid here: 20 | * subtraction.com/archives/2007/0318_oh_yeeaahh.php 21 | 22 | -------------------------------------------------------------- */ 23 | 24 | /* A container should group all your columns. */ 25 | .container { 26 | width: 950px; 27 | margin: 0 auto; 28 | } 29 | 30 | 31 | /* Columns 32 | -------------------------------------------------------------- */ 33 | 34 | /* Use this class together with the .span-x classes 35 | to create any composition of columns in a layout. */ 36 | 37 | .column { 38 | float: left; 39 | margin-right: 10px; 40 | } 41 | 42 | 43 | /* The last column in a row needs this class. */ 44 | .last { margin-right: 0; } 45 | 46 | /* Use these classes to set the width of a column. */ 47 | .span-1 { width: 30px; } 48 | .span-2 { width: 70px; } 49 | .span-3 { width: 110px; } 50 | .span-4 { width: 150px; } 51 | .span-5 { width: 190px; } 52 | .span-6 { width: 230px; } 53 | .span-7 { width: 270px; } 54 | .span-8 { width: 310px; } 55 | .span-9 { width: 350px; } 56 | .span-10 { width: 390px; } 57 | .span-11 { width: 430px; } 58 | .span-12 { width: 470px; } 59 | .span-13 { width: 510px; } 60 | .span-14 { width: 550px; } 61 | .span-15 { width: 590px; } 62 | .span-16 { width: 630px; } 63 | .span-17 { width: 670px; } 64 | .span-18 { width: 710px; } 65 | .span-19 { width: 750px; } 66 | .span-20 { width: 790px; } 67 | .span-21 { width: 830px; } 68 | .span-22 { width: 870px; } 69 | .span-23 { width: 910px; } 70 | .span-24 { width: 950px; margin: 0; } 71 | 72 | /* Add these to a column to append empty cols. */ 73 | .append-1 { padding-right: 40px; } 74 | .append-2 { padding-right: 80px; } 75 | .append-3 { padding-right: 120px; } 76 | .append-4 { padding-right: 160px; } 77 | .append-5 { padding-right: 200px; } 78 | .append-6 { padding-right: 240px; } 79 | .append-7 { padding-right: 280px; } 80 | .append-8 { padding-right: 320px; } 81 | .append-9 { padding-right: 360px; } 82 | .append-10 { padding-right: 400px; } 83 | .append-11 { padding-right: 440px; } 84 | .append-12 { padding-right: 480px; } 85 | .append-13 { padding-right: 520px; } 86 | .append-14 { padding-right: 560px; } 87 | .append-15 { padding-right: 600px; } 88 | .append-16 { padding-right: 640px; } 89 | .append-17 { padding-right: 680px; } 90 | .append-18 { padding-right: 720px; } 91 | .append-19 { padding-right: 760px; } 92 | .append-20 { padding-right: 800px; } 93 | .append-21 { padding-right: 840px; } 94 | .append-22 { padding-right: 880px; } 95 | .append-23 { padding-right: 920px; } 96 | 97 | /* Add these to a column to prepend empty cols. */ 98 | .prepend-1 { padding-left: 40px; } 99 | .prepend-2 { padding-left: 80px; } 100 | .prepend-3 { padding-left: 120px; } 101 | .prepend-4 { padding-left: 160px; } 102 | .prepend-5 { padding-left: 200px; } 103 | .prepend-6 { padding-left: 240px; } 104 | .prepend-7 { padding-left: 280px; } 105 | .prepend-8 { padding-left: 320px; } 106 | .prepend-9 { padding-left: 360px; } 107 | .prepend-10 { padding-left: 400px; } 108 | .prepend-11 { padding-left: 440px; } 109 | .prepend-12 { padding-left: 480px; } 110 | .prepend-13 { padding-left: 520px; } 111 | .prepend-14 { padding-left: 560px; } 112 | .prepend-15 { padding-left: 600px; } 113 | .prepend-16 { padding-left: 640px; } 114 | .prepend-17 { padding-left: 680px; } 115 | .prepend-18 { padding-left: 720px; } 116 | .prepend-19 { padding-left: 760px; } 117 | .prepend-20 { padding-left: 800px; } 118 | .prepend-21 { padding-left: 840px; } 119 | .prepend-22 { padding-left: 880px; } 120 | .prepend-23 { padding-left: 920px; } 121 | 122 | 123 | /* Border on right hand side of a column. */ 124 | .border { 125 | padding-right: 4px; 126 | margin-right: 5px; 127 | border-right: 1px solid #eee; 128 | } 129 | 130 | /* Border with more whitespace, spans one column. */ 131 | .colborder { 132 | padding-right: 24px; 133 | margin-right: 25px; 134 | border-right: 1px solid #eee; 135 | } 136 | 137 | 138 | /* Use these classes on an element to push it into the 139 | next column, or to pull it into the previous column. */ 140 | 141 | .pull-1 { margin-left: -40px; } 142 | .pull-2 { margin-left: -80px; } 143 | .pull-3 { margin-left: -120px; } 144 | .pull-4 { margin-left: -160px; } 145 | 146 | .push-0 { margin: 0 0 0 18px; } 147 | .push-1 { margin: 0 -40px 0 18px; } 148 | .push-2 { margin: 0 -80px 0 18px; } 149 | .push-3 { margin: 0 -120px 0 18px; } 150 | .push-4 { margin: 0 -160px 0 18px; } 151 | .push-0, .push-1, .push-2, .push-3, .push-4 { float: right; } 152 | 153 | 154 | /* Misc classes and elements 155 | -------------------------------------------------------------- */ 156 | 157 | /* Use a .box to create a padded box inside a column. */ 158 | .box { 159 | padding: 1.5em; 160 | margin-bottom: 1.5em; 161 | background: #eee; 162 | } 163 | 164 | /* Use this to create a horizontal ruler across a column. */ 165 | hr { 166 | background: #ddd; 167 | color: #ddd; 168 | clear: both; 169 | float: none; 170 | width: 100%; 171 | height: .1em; 172 | margin: 0 0 1.4em; 173 | border: none; 174 | } 175 | hr.space { 176 | background: #fff; 177 | color: #fff; 178 | } 179 | 180 | /* Clearing floats without extra markup 181 | Based on How To Clear Floats Without Structural Markup by PiE 182 | [http://www.positioniseverything.net/easyclearing.html] */ 183 | 184 | .clear { display: inline-block; } 185 | .clear:after, .container:after { 186 | content: "."; 187 | display: block; 188 | height: 0; 189 | clear: both; 190 | visibility: hidden; 191 | } 192 | * html .clear { height: 1%; } 193 | .clear { display: block; } 194 | -------------------------------------------------------------------------------- /c/css/blueprint/lib/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/css/blueprint/lib/grid.png -------------------------------------------------------------------------------- /c/css/blueprint/lib/ie.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | ie.css 4 | 5 | Contains every hack for Internet Explorer versions prior 6 | to IE7, so that our core files stay sweet and nimble. 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | /* Make sure the layout is centered in IE5 */ 11 | body { text-align: center; } 12 | .container { text-align: left; } 13 | 14 | 15 | /* This fixes the problem where IE6 adds an extra 3px margin to 16 | two columns that are floated up against each other. */ 17 | 18 | * html .column { overflow-x: hidden; } /* IE6 fix */ 19 | 20 | .pull-1, .pull-2, .pull-3, .pull-4, 21 | .push-1, .push-2, .push-3, .push-4, 22 | ul, ol { 23 | position: relative; /* Keeps IE6 from cutting pulled/pushed images */ 24 | } 25 | 26 | /* Fixes incorrect styling of legend in IE6 fieldsets. */ 27 | legend { margin-bottom:1.4em; } 28 | 29 | /* Fixes incorrect placement of numbers in ol's in IE6/7 */ 30 | ol { margin-left:2em; } -------------------------------------------------------------------------------- /c/css/blueprint/lib/reset.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | reset.css 4 | * Resets default browser CSS. 5 | 6 | Based on work by Eric Meyer: 7 | * meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/ 8 | 9 | -------------------------------------------------------------- */ 10 | 11 | html, body, div, span, object, iframe, 12 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 13 | a, abbr, acronym, address, code, 14 | del, dfn, em, img, q, dl, dt, dd, ol, ul, li, 15 | fieldset, form, label, legend, 16 | table, caption, tbody, tfoot, thead, tr, th, td { 17 | margin: 0; 18 | padding: 0; 19 | border: 0; 20 | font-weight: inherit; 21 | font-style: inherit; 22 | font-size: 100%; 23 | font-family: inherit; 24 | vertical-align: baseline; 25 | } 26 | 27 | 28 | body { line-height: 1.5; background: #fff; margin:1.5em 0; } 29 | 30 | /* Tables still need 'cellspacing="0"' in the markup. */ 31 | table { border-collapse: separate; border-spacing: 0; } 32 | caption, th, td { text-align: left; font-weight:400; } 33 | 34 | /* Remove possible quote marks (") from ,
. */ 35 | blockquote:before, blockquote:after, q:before, q:after { content: ""; } 36 | blockquote, q { quotes: "" ""; } 37 | 38 | a img { border: none; } 39 | 40 | -------------------------------------------------------------------------------- /c/css/blueprint/lib/typography.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | typography.css 4 | * Sets up some sensible default typography. 5 | 6 | Based on work by: 7 | * Nathan Borror [playgroundblues.com] 8 | * Jeff Croft [jeffcroft.com] 9 | * Christian Metts [mintchaos.com] 10 | * Wilson Miner [wilsonminer.com] 11 | * Richard Rutter [clagnut.com] 12 | 13 | Read more about using a baseline here: 14 | * alistapart.com/articles/settingtypeontheweb 15 | 16 | -------------------------------------------------------------- */ 17 | 18 | /* This is where you set your desired font size. The line-heights 19 | and vertical margins are automatically calculated from this. 20 | The percentage is of 16px (0.75 * 16px = 12px). */ 21 | 22 | body { font-size: 75%; } 23 | 24 | 25 | /* Default fonts and colors. 26 | If you prefer serif fonts, remove the font-family 27 | on the headings, and apply this one to the body: 28 | font: 1em Georgia, "lucida bright", "times new roman", serif; */ 29 | 30 | body { 31 | color: #222; 32 | font-family: "Helvetica Neue", "Lucida Grande", Helvetica, Arial, Verdana, sans-serif; 33 | } 34 | h1,h2,h3,h4,h5,h6 { 35 | color: #111; 36 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 37 | } 38 | 39 | 40 | /* Headings 41 | -------------------------------------------------------------- */ 42 | 43 | h1,h2,h3,h4,h5,h6 { font-weight: normal; } 44 | 45 | h1 { font-size: 3em; line-height: 1; margin-bottom: 0em; } 46 | h2 { font-size: 2em; margin-bottom: 0.75em; } 47 | h3 { font-size: 1.5em; line-height: 1; margin-bottom: 1em; } 48 | h4 { font-size: 1.2em; line-height: 1.25; margin-bottom: 1.25em; } 49 | h5 { font-size: 1em; font-weight: bold; margin-bottom: 1.5em; } 50 | h6 { font-size: 1em; font-weight: bold; } 51 | 52 | 53 | /* Text elements 54 | -------------------------------------------------------------- */ 55 | 56 | p { margin: 0 0 1.5em; } 57 | p.last { margin-bottom: 0; } 58 | p img { float: left; margin: 1.5em 1.5em 1.5em 0; padding: 0; } 59 | p img.top { margin-top: 0; } /* Use this if the image is at the top of the

. */ 60 | img { margin: 0 0 1.5em; } 61 | 62 | ul, ol { margin:0 1.5em 1.5em 1.5em; } 63 | ul { list-style-type: circle; } 64 | ol { list-style-type: decimal; } 65 | dl { margin: 0 0 1.5em 0; } 66 | dl dt { font-weight: bold; } 67 | dd { margin-left: 1.5em;} 68 | 69 | abbr, 70 | acronym { border-bottom: 1px dotted #666; } 71 | address { margin-top: 1.5em; font-style: italic; } 72 | del { color:#666; } 73 | 74 | a:focus, 75 | a:hover { color: #000; } 76 | a { color: #009; text-decoration: underline; } 77 | 78 | blockquote { margin: 1.5em; color: #666; font-style: italic; } 79 | strong { font-weight: bold; } 80 | em,dfn { font-style: italic; background: #ffc; } 81 | dfn { font-weight: bold; } 82 | pre,code { margin: 1.5em 0; white-space: pre; } 83 | pre,code,tt { font: 1em 'andale mono', 'monotype.com', 'lucida console', monospace; line-height: 1.5; } 84 | tt { display: block; margin: 1.5em 0; line-height: 1.5; } 85 | 86 | 87 | /* Tables 88 | -------------------------------------------------------------- */ 89 | 90 | table { margin-bottom: 1.4em; } 91 | th { border-bottom: 2px solid #ccc; font-weight: bold; } 92 | td { border-bottom: 1px solid #ddd; } 93 | th,td { padding: 4px 10px 4px 0; } 94 | tfoot { font-style: italic; } 95 | caption { background: #ffc; } 96 | 97 | /* Use this if you use span-x classes on th/td. */ 98 | table .last { padding-right: 0; } 99 | 100 | 101 | /* Some default classes 102 | -------------------------------------------------------------- */ 103 | 104 | .small { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; } 105 | .large { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; } 106 | .quiet { color: #666; } 107 | 108 | .hide { display: none; } 109 | .highlight { background:#ff0; } 110 | .added { color:#060; } 111 | .removed { color:#900; } 112 | 113 | .top { margin-top:0; padding-top:0; } 114 | .bottom { margin-bottom:0; padding-bottom:0; } 115 | 116 | 117 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/buttons/Readme: -------------------------------------------------------------------------------- 1 | Buttons 2 | * Gives you great looking CSS buttons, for both and 24 | 25 | 26 | Change Password 27 | 28 | 29 | 30 | Cancel 31 | 32 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/buttons/buttons.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | buttons.css 4 | * Gives you some great CSS-only buttons. 5 | 6 | Created by Kevin Hale [particletree.com] 7 | * particletree.com/features/rediscovering-the-button-element 8 | 9 | See Readme.txt in this folder for instructions. 10 | 11 | -------------------------------------------------------------- */ 12 | 13 | a.button, button { 14 | display:block; 15 | float:left; 16 | margin:0 0.583em 0.667em 0; 17 | padding:5px 10px 5px 7px; /* Links */ 18 | 19 | border:1px solid #dedede; 20 | border-top:1px solid #eee; 21 | border-left:1px solid #eee; 22 | 23 | background-color:#f5f5f5; 24 | font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 25 | font-size:100%; 26 | line-height:130%; 27 | text-decoration:none; 28 | font-weight:bold; 29 | color:#565656; 30 | cursor:pointer; 31 | } 32 | button { 33 | width:auto; 34 | overflow:visible; 35 | padding:4px 10px 3px 7px; /* IE6 */ 36 | } 37 | button[type] { 38 | padding:4px 10px 4px 7px; /* Firefox */ 39 | line-height:17px; /* Safari */ 40 | } 41 | *:first-child+html button[type] { 42 | padding:4px 10px 3px 7px; /* IE7 */ 43 | } 44 | button img, a.button img{ 45 | margin:0 3px -3px 0 !important; 46 | padding:0; 47 | border:none; 48 | width:16px; 49 | height:16px; 50 | float:none; 51 | } 52 | 53 | 54 | /* Button colors 55 | -------------------------------------------------------------- */ 56 | 57 | /* Standard */ 58 | button:hover, a.button:hover{ 59 | background-color:#dff4ff; 60 | border:1px solid #c2e1ef; 61 | color:#336699; 62 | } 63 | a.button:active{ 64 | background-color:#6299c5; 65 | border:1px solid #6299c5; 66 | color:#fff; 67 | } 68 | 69 | /* Positive */ 70 | body .positive { 71 | color:#529214; 72 | } 73 | a.positive:hover, button.positive:hover { 74 | background-color:#E6EFC2; 75 | border:1px solid #C6D880; 76 | color:#529214; 77 | } 78 | a.positive:active { 79 | background-color:#529214; 80 | border:1px solid #529214; 81 | color:#fff; 82 | } 83 | 84 | /* Negative */ 85 | body .negative { 86 | color:#d12f19; 87 | } 88 | a.negative:hover, button.negative:hover { 89 | background:#fbe3e4; 90 | border:1px solid #fbc2c4; 91 | color:#d12f19; 92 | } 93 | a.negative:active { 94 | background-color:#d12f19; 95 | border:1px solid #d12f19; 96 | color:#fff; 97 | } 98 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/buttons/icons/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/css/blueprint/plugins/buttons/icons/cross.png -------------------------------------------------------------------------------- /c/css/blueprint/plugins/buttons/icons/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/css/blueprint/plugins/buttons/icons/key.png -------------------------------------------------------------------------------- /c/css/blueprint/plugins/buttons/icons/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/css/blueprint/plugins/buttons/icons/tick.png -------------------------------------------------------------------------------- /c/css/blueprint/plugins/css-classes/Readme: -------------------------------------------------------------------------------- 1 | CSS Development Classes Plugin 2 | 3 | Sets up some classes to use in CSS development 4 | 5 | This is an experimental plugin, and the tools it provides 6 | are not exactly semantically correct, so use with care, 7 | and preferably only in development. :) 8 | 9 | 10 | Usage 11 | ---------------------------------------------------------------- 12 | 13 | 1) Add this line to "blueprint/screen.css", and you're done: 14 | @import 'plugins/css-classes/css-classes.css'; 15 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/css-classes/css-classes.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | css-classes.css 4 | * Classes for CSS development 5 | 6 | See the Readme file in this directory 7 | for further instructions. 8 | 9 | -------------------------------------------------------------- */ 10 | 11 | .left { float:left; } 12 | .right { float:right; } 13 | 14 | .hide { display:none; } 15 | 16 | .reset-margin { margin:0; } 17 | .reset-padding { padding:0; } 18 | .reset { margin:0; padding:0; } 19 | 20 | .align-justify { text-align:justify; } 21 | .align-left { text-align:left; } 22 | .align-center { text-align:center; } 23 | .align-right { text-align:right; } 24 | 25 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/fancy-type/Readme: -------------------------------------------------------------------------------- 1 | Fancy Type 2 | * Gives you classes to use if you'd like some 3 | extra fancy typography. 4 | 5 | Credits and instructions are specified above each class 6 | in the fancy-type.css file in this directory. 7 | 8 | 9 | Usage 10 | ---------------------------------------------------------------- 11 | 12 | 1) Add this line to "blueprint/screen.css", and you're done: 13 | @import 'plugins/fancy-type/fancy-type-compressed.css'; 14 | 15 | Note that this uses the compressed version of the CSS file, 16 | as the original file contains a lot of instructing comments. 17 | 18 | Remember to re-compress (or change) the compressed file 19 | if you make any changes to the original CSS file. 20 | 21 | Here's a pretty good CSS compressor: 22 | http://teenage.cz/acidofil/tools/cssformat.php 23 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/fancy-type/fancy-type-compressed.css: -------------------------------------------------------------------------------- 1 | p + p { text-indent:2em; margin-top:-1.5em; } 2 | .alt{color:#666;font-family:"Warnock Pro","Goudy Old Style","Palatino","Book Antiqua",Georgia,serif;font-size:1.2em;line-height:80%;font-style:italic;} 3 | .dquo{margin-left:-.5em;} 4 | p.incr,.incr p{font-size:10px;line-height:1.44em;margin-bottom:1.5em;} 5 | .caps{font-variant:small-caps;letter-spacing:1px;text-transform:lowercase;font-size:1.2em;line-height:1%;font-weight:bold;} 6 | -------------------------------------------------------------------------------- /c/css/blueprint/plugins/fancy-type/fancy-type.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | fancy-type.css 4 | * Lots of pretty advanced classes for manipulating text. 5 | 6 | See the Readme file in this folder for additional instructions. 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | /* Indentation instead of line shifts for sibling paragraphs. */ 11 | p + p { text-indent:2em; margin-top:-1.5em; } 12 | 13 | /* Ornaments on first paragraph. 14 | Commented out by default. Use with care. 15 | p:before { content: "\2767"; padding-right: 0.4em; } 16 | p + p:before { content: ""; padding:0; } */ 17 | 18 | /* For great looking type, use this code instead of asdf: 19 | asdf 20 | Best used on prepositions and ampersands. */ 21 | 22 | .alt { 23 | color: #666; 24 | font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif; 25 | font-style: italic; 26 | font-weight: normal; 27 | } 28 | 29 | 30 | /* For great looking quote marks in titles, replace "asdf" with: 31 | asdf” 32 | (That is, when the title starts with a quote mark). 33 | (You may have to change this value depending on your font size). */ 34 | 35 | .dquo { margin-left: -.5em; } 36 | 37 | 38 | /* Reduced size type with incremental leading 39 | (http://www.markboulton.co.uk/journal/comments/incremental_leading/) 40 | 41 | This could be used for side notes. For smaller type, you don't necessarily want to 42 | follow the 1.5x vertical rhythm -- the line-height is too much. 43 | 44 | Using this class, it reduces your font size and line-height so that for 45 | every four lines of normal sized type, there is five lines of the sidenote. eg: 46 | 47 | New type size in em's: 48 | 10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems) 49 | 50 | New line-height value: 51 | 12px x 1.5 = 18px (old line-height) 52 | 18px x 4 = 72px 53 | 72px / 5 = 14.4px (new line height) 54 | 14.4px / 10px = 1.44 (new line height in em's) */ 55 | 56 | p.incr, .incr p { 57 | font-size: 10px; 58 | line-height: 1.44em; 59 | margin-bottom: 1.5em; 60 | } 61 | 62 | 63 | /* Surround uppercase words and abbreviations with this class. 64 | Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] */ 65 | 66 | .caps { 67 | font-variant: small-caps; 68 | letter-spacing: 1px; 69 | text-transform: lowercase; 70 | font-size:1.2em; 71 | line-height:1%; 72 | font-weight:bold; 73 | padding:0 2px; 74 | } 75 | -------------------------------------------------------------------------------- /c/css/blueprint/print.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | Blueprint CSS Framework Print Styles 4 | * Gives you some sensible styles for printing pages. 5 | See Readme file in this directory for further instructions. 6 | 7 | Some additions you'll want to make, customized to your markup: 8 | #header, #footer, #navigation { display:none; } 9 | 10 | -------------------------------------------------------------- */ 11 | 12 | body { 13 | line-height: 1.5; 14 | font-family: "Helvetica Neue", "Lucida Grande", Arial, Verdana, sans-serif; 15 | color:#000; 16 | background: none; 17 | font-size: 10pt; 18 | } 19 | .container { 20 | background: none; 21 | } 22 | 23 | h1,h2,h3,h4,h5,h6 { font-family: "Helvetica Neue", Arial, "Lucida Grande", sans-serif; } 24 | code { font:.9em "Courier New", Monaco, Courier, monospace; } 25 | 26 | img { float:left; margin:1.5em 1.5em 1.5em 0; } 27 | a img { border:none; } 28 | p img.top { margin-top: 0; } 29 | 30 | hr { 31 | background:#ccc; 32 | color:#ccc; 33 | width:100%; 34 | height:2px; 35 | margin:2em 0; 36 | padding:0; 37 | border:none; 38 | } 39 | 40 | blockquote { 41 | margin:1.5em; 42 | padding:1em; 43 | font-style:italic; 44 | font-size:.9em; 45 | } 46 | 47 | .small { font-size: .9em; } 48 | .large { font-size: 1.1em; } 49 | .quiet { color: #999; } 50 | .hide { display:none; } 51 | 52 | a:link, a:visited { 53 | background: transparent; 54 | font-weight:700; 55 | text-decoration: underline; 56 | } 57 | 58 | a:link:after, a:visited:after { 59 | content: " (" attr(href) ") "; 60 | font-size: 90%; 61 | } 62 | 63 | /* If you're having trouble printing relative links, uncomment and customize this: 64 | (note: This is valid CSS3, but it still won't go through the W3C CSS Validator) */ 65 | 66 | /* a[href^="/"]:after { 67 | content: " (http://www.yourdomain.com" attr(href) ") "; 68 | } */ 69 | -------------------------------------------------------------------------------- /c/css/blueprint/screen.css: -------------------------------------------------------------------------------- 1 | /* -------------------------------------------------------------- 2 | 3 | Blueprint CSS Framework Screen Styles 4 | * Version: 0.6 (21.9.2007) 5 | * Website: http://code.google.com/p/blueprintcss/ 6 | See Readme file in this directory for further instructions. 7 | 8 | -------------------------------------------------------------- */ 9 | 10 | @import 'lib/reset.css'; 11 | @import 'lib/typography.css'; 12 | @import 'lib/grid.css'; 13 | @import 'lib/forms.css'; 14 | 15 | /* Plugins: 16 | Additional functionality can be found in the plugins directory. 17 | See the readme files for each plugin. Example: 18 | */ 19 | 20 | /* See the grid: 21 | Uncomment the line below to see the grid and baseline. 22 | .container { background: url(lib/grid.png); } 23 | */ 24 | 25 | /* Helper CSS classes */ 26 | @import 'plugins/css-classes/css-classes.css'; 27 | -------------------------------------------------------------------------------- /c/css/screen.css: -------------------------------------------------------------------------------- 1 | 2 | h1.compress { 3 | letter-spacing: -0.1em; 4 | } 5 | 6 | .json_input { 7 | width: 100%; 8 | height: 300px; 9 | margin: 0; 10 | background-color: #EEEEEE; 11 | border: 1px solid #EEEEEE; 12 | padding: 0 !important; 13 | font-family: monospace; 14 | } 15 | 16 | .json_input:focus { 17 | border-color: transparent; 18 | outline: none; 19 | background-color: #EEEEEE; 20 | } 21 | 22 | .unimportant { 23 | color: #999; 24 | font-size: .9em; 25 | font-weight: normal; 26 | } 27 | 28 | .invisible { 29 | /* 30 | This ugly opacity stuff has to be 31 | here so that fadeTo works properly 32 | */ 33 | filter:alpha(opacity=0); 34 | -moz-opacity:.0; 35 | opacity:.0; 36 | } 37 | 38 | .verifyButtons { margin: .5em 0 1.5em 0; line-height: 1.75em; } 39 | 40 | #labLink img { 41 | vertical-align: middle; 42 | margin-bottom: 1em; 43 | } 44 | 45 | .bold { 46 | font-weight: bold; 47 | } 48 | 49 | .center { 50 | text-align: center; 51 | } 52 | 53 | .big { 54 | font-size: 2.5em; 55 | } 56 | 57 | .bigBorder { 58 | border-width: 2px !important; 59 | } 60 | 61 | a:hover { cursor: pointer; } 62 | 63 | 64 | /* Overriding of wacky blueprint CSS attributes */ 65 | 66 | a { 67 | text-decoration: none; 68 | color: #36C; 69 | } 70 | 71 | em { 72 | background-color: transparent !important; 73 | } 74 | 75 | input.text, input.title { 76 | width: auto; 77 | } 78 | 79 | #faq { 80 | border: 2px solid #CCC; 81 | padding: 1em; 82 | height: 20em; 83 | overflow: auto; 84 | margin-top: 1em; 85 | } 86 | #faqAccordion div { 87 | margin-left: 2em; 88 | } 89 | 90 | #faqAccordion dd { 91 | margin-bottom: 1em; 92 | } 93 | 94 | #reformat, #validate, #compress { 95 | font-size: 1.65em; 96 | color: #333; 97 | padding-left: .5em; 98 | padding-right: .5em; 99 | } 100 | 101 | .greenBorder { 102 | border: 1px solid green !important; 103 | } 104 | 105 | .redBorder { 106 | border: 1px solid red !important; 107 | } 108 | 109 | #results_header { 110 | padding-top: 1em; 111 | } 112 | 113 | .sayHello { 114 | width: 85%; 115 | text-align: center; 116 | color: #009900; 117 | background-color: white; 118 | font-weight: bold; 119 | } 120 | 121 | .kindling { 122 | width: 85%; 123 | text-align: center; 124 | color: #999; 125 | background-color: white; 126 | font-weight: bold; 127 | line-height: 1.4; 128 | } 129 | 130 | .kindling a { 131 | color: #999; 132 | } 133 | 134 | .kindling a:hover { 135 | color: #36C; 136 | 137 | } 138 | 139 | .linedwrap { 140 | margin-bottom: 10px; 141 | background-color: #EEEEEE; 142 | padding: 0; 143 | } 144 | 145 | 146 | .linedwrap .codelines { 147 | padding: 0; 148 | } 149 | 150 | .light { 151 | color: #AAA; 152 | } 153 | -------------------------------------------------------------------------------- /c/css/tests/elements.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | Blueprint CSS Framework Test Suite 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 | 24 |

25 |

Tests for common HTML elements

26 |
27 | 28 |
PARAGRAPHS & BOXES
29 | 30 |
31 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

32 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

33 |
34 | 35 | 36 |
37 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

38 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

39 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

40 |
41 | 42 |
43 | 44 |
45 |

Aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

46 |
47 | 48 |
49 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

50 |
51 | 52 |
53 |
54 | 55 | 56 |
LISTS
57 | 58 |
59 |
    60 |
  • Unordered list test
  • 61 |
  • Another list element. Lorem ipsum dolor sit amet, consectetur adipisicing elit.
  • 62 |
  • Yet another element in the list
  • 63 |
  • Some long text. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Lorem ipsum dolor sit amet, consectetur adipisicing elit.
  • 64 |
65 |
    66 |
  1. Ordered list test
  2. 67 |
  3. Another list element
  4. 68 |
  5. Yet another element in the list
  6. 69 |
70 |
71 | 72 | 73 |
74 |
    75 |
  1. Ordered list
  2. 76 |
      77 |
    • Nested Unordered list
    • 78 |
        79 |
      1. Nested Ordered list
      2. 80 |
      81 |
    82 |
  3. Ordered List item
  4. 83 |
      84 |
    1. Nested Ordered list
    2. 85 |
        86 |
      • Nested Unordered list
      • 87 |
      88 |
    89 |
90 |
91 | 92 |
93 |
94 |
definition list dt
95 |
definition list dd
96 |
definition list dt
97 |
definition list dd
98 |
definition list dt
99 |
definition list dd
100 |
101 |
102 |
103 | 104 |
HEADINGS
105 | 106 |
107 |

H1: Lorem ipsum dolor sit amet

108 |

H2: Lorem ipsum dolor sit amet, consectetur elit

109 |

H3: Lorem ipsum dolor sit amet, consectetur adipisicing elit

110 |

H4: Lorem ipsum dolor sit amet, consectetur adipisicing elit adipis

111 |
H5: Lorem ipsum dolor sit amet, consectetur adipisicing elit adipisicing elit adipisicing elit
112 |
H6: Lorem ipsum dolor sit amet, consectetur adipisicing elit adipisicing elit adipisicing elit
113 |
114 | 115 |
116 |

Heading 1


117 |

Heading 2


118 |

Heading 3


119 |

Heading 4


120 |
Heading 5

121 |
Heading 6
122 |
123 | 124 |
125 |

Heading 1

126 |

Heading 2

127 |

Heading 3

128 |

Heading 4

129 |
Heading 5
130 |
Heading 6
131 |
132 |
133 | 134 | 135 |
MISC ELEMENTS
136 | 137 |
138 |

139 | <strong>
140 | <del> deleted
141 | <dfn> dfn
142 | <em> emphasis
143 |

144 |

145 | <a> anchor
146 | <a> a + href
147 |

148 |

149 | <abbr> abbr - extended text when mouseover.
150 | <acronym> acronym - extended text when mouseover.
151 |

152 |

153 |

154 | <address>
155 | Donald Duck
156 | Box 555
157 | Disneyland 158 |
159 |

160 |
161 | 162 | 163 |
164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 |
A standard test table with a caption, tr, td elements
Table Header OneTable Header Two
TD OneTD Two
TD colspan 2
178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 |
A test table with a thead, tfoot, and tbody elements
Table Header OneTable Header Two
tfoot footer
TD OneTD Two
TD OneTD Two
TD OneTD Two
TD OneTD Two
214 |
215 | 216 |
217 | 218 |
<pre>
219 | pre  space1
220 | pre  space1
221 | pre    space2
222 | pre    space2
223 | pre	tab
224 | pre	tab
225 | 226 | <code> 227 | Not indented 228 | indent1 229 | indent1 230 | indent2 231 | indent3 232 | 233 | <tt> 234 | This tt text should be monospaced 235 | and 236 | wrap as if 237 | one line of text 238 | even though the code has newlines, spaces, and tabs. 239 | It should be the same size as <p> text. 240 | 241 |
242 |
243 | 244 | 245 |

246 | Valid HTML 4.01 Strict

247 | 248 |
249 | 250 | 251 | 252 | -------------------------------------------------------------------------------- /c/css/tests/forms.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | Blueprint CSS Framework Test Suite 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |

Forms

20 |
21 | 22 |
23 | 24 |
25 | 26 |
27 | Simple sample form 28 | 29 |


30 |

31 | 32 |


33 |

34 | 35 |


36 |

37 | 38 |

39 |

40 | 41 |
42 |
43 | 44 |
45 |
46 | 47 |
48 | This is a <div> with the class .error. 49 |
50 |
51 | This is a <div> with the class .notice. 52 |
53 |
54 | This is a <div> with the class .success. 55 |
56 | 57 |
58 | Select, checkboxes, lists 59 | 60 |


61 |

66 | 67 |


68 |

81 | 82 |


83 | Radio one
84 | Radio two
85 | Radio three

86 | 87 |


88 | Check one
89 | Check two
90 | Check three

91 | 92 |
93 | 94 |
95 |
96 | 97 |

98 | Valid HTML 4.01 Strict

99 | 100 |
101 | 102 | -------------------------------------------------------------------------------- /c/css/tests/grid.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | Blueprint Tests: grid.css 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 | 24 |
25 |

Blueprint Tests: grid.css

26 |
27 | 28 |
29 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

30 |
31 |
32 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

33 |
34 |
35 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

36 |
37 |
38 | 39 |
40 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

41 |
42 |
43 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

44 |
45 |
46 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

47 |
48 |
49 | 50 |
51 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

52 |
53 |
54 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

55 |
56 |
57 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit.

58 |
59 |
60 | 61 |
62 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

63 |
64 |
65 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

66 |
67 |
68 | 69 |

1

70 |

2

71 |

3

72 |

4

73 |

5

74 |

3

75 | 76 |

1

77 |

2

78 |

3

79 |

4

80 |

5

81 |

3

82 | 83 |

1

84 |

2

85 |

3

86 |

4

87 |

5

88 |

6

89 |

7

90 |

8

91 |

9

92 |

10

93 |

11

94 |

12

95 |

13

96 |

14

97 |

15

98 |

16

99 |

17

100 |

18

101 |

19

102 |

20

103 |

21

104 |

22

105 |

23

106 |

24

107 |
108 | 109 |

1

110 |

2

111 |

3

112 |

4

113 |

5

114 |

6

115 |
116 | 117 |

24

118 |
119 | 120 |

2

121 |

23

122 |
123 | 124 |
125 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

126 |
127 |
128 | 129 |
130 |
131 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.

132 |
133 | 134 |
135 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

136 |
137 | 138 |
139 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

140 |
141 |
142 | 143 |
144 |
145 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.

146 |
147 | 148 |
149 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

150 |
151 | 152 |
153 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

154 |
155 |
156 |
157 | 158 |
159 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

160 |
161 |
162 | 163 |
164 |

165 | Valid HTML 4.01 Strict

166 |
167 | 168 |
169 | 170 | 171 | -------------------------------------------------------------------------------- /c/css/tests/index.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | Blueprint CSS Framework Sample Page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |

Blueprint Test Suite

23 |
24 | 25 |

Welcome to the Blueprint Test Suite. The HTML files below tests most HTML elements, and especially classes provided 26 | by Blueprint.

27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 |
Test pageDescriptionLead developer
Sample pageA simple sample page, with common elements.Olav Bjørkøy (olav at bjorkoy dot com)
GridTests classes provided by grid.css.Olav Bjørkøy (olav at bjorkoy dot com)
Basic HTMLTests HTML elements which gets reset in reset.css.Olav Bjørkøy (olav at bjorkoy dot com)
FormsTests classes and default look provided by forms.css.Kim Joar Bekkelund (kjbekkelund at gmail dot com)
PluginsTests each of the bundeled plugins.Many
60 | 61 |
62 |
Note about the compressed versions:
63 |

These test files utilize the un-compressed versions of the framework. 64 | In other words, if you change any of the core files, and use the compressed version on your site, 65 | you'll have to re-compress them with the ruby script in the scripts folder to see any changes. :)

66 |
67 | 68 |

69 | Valid HTML 4.01 Strict

70 | 71 |
72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /c/css/tests/plugins.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | Blueprint CSS Framework Test Suite 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |

Testing Bundled Plugins

23 |
24 | 25 |

Buttons plugin

26 |

27 | 30 | 31 | Change Password 32 | 33 | 34 | Cancel 35 | 36 |

37 |

38 | 39 | Neutral 40 | Negative 41 |

42 |

43 | 46 | 47 | Change Password 48 | 49 | 50 | Cancel 51 | 52 |

53 |
54 | 55 |
    56 |
  • The Fancy-Type plugin is tested in sample.html.
  • 57 |
  • The CSS-Classes plugin is pretty self-explanatory.
  • 58 |
59 |
60 | 61 |

62 | Valid HTML 4.01 Strict

63 | 64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /c/css/tests/sample.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | Blueprint CSS Framework Sample Page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | 28 |
29 |

A simple sample page

30 |
31 | 32 |

This simple sample page demonstrates a tiny fraction of what you get with Blueprint.

33 | 34 |
35 | 36 |
37 |
Here's a box
38 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

39 |
40 | 41 |
42 |
And another box
43 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

44 |
45 | 46 |
47 |
This box is aligned with the sidebar
48 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat commodo consequat.

49 |
50 |
51 |
52 | 53 |
54 |

testLorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc congue ipsum vestibulum libero. Aenean vitae justo. Nam eget tellus. Etiam convallis, est eu lobortis mattis, lectus tellus tempus felis, a ultricies erat ipsum at metus.

55 |

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi et risus. Aliquam nisl. Nulla facilisi. Cras accumsan vestibulum ante. Vestibulum sed tortor. Praesent SMALL CAPS tempus fringilla elit. Ut elit diam, sagittis in, nonummy in, gravida non, nunc. Ut orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam egestas, orci eu imperdiet malesuada, nisl purus fringilla odio, quis commodo est orci vitae justo. Aliquam placerat odio tincidunt nulla. Cras in libero. Aenean rutrum, magna non tristique posuere, erat odio eleifend nisl, non convallis est tortor blandit ligula. Nulla id augue.

56 |

Nullam mattis, odio ut tempus facilisis, metus nisl facilisis metus, auctor consectetuer felis ligula nec mauris. Vestibulum odio erat, fermentum at, commodo vitae, ultrices et, urna. Mauris vulputate, mi pulvinar sagittis condimentum, sem nulla aliquam velit, sed imperdiet mi purus eu magna. Nulla varius metus ut eros. Aenean aliquet magna eget orci. Class aptent taciti sociosqu ad litora.

57 |

Vivamus euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse vel nibh ut turpis dictum sagittis. Aliquam vel velit a elit auctor sollicitudin. Nam vel dui vel neque lacinia pretium. Quisque nunc erat, venenatis id, volutpat ut, scelerisque sed, diam. Mauris ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec mattis. Morbi dignissim sollicitudin libero. Nulla lorem.

58 |
59 |

Integer cursus ornare mauris. Praesent nisl arcu, imperdiet eu, ornare id, scelerisque ut, nunc. Praesent sagittis erat sed velit tempus imperdiet. Ut tristique, ante in interdum hendrerit, erat enim faucibus felis, quis rutrum mauris lorem quis sem. Vestibulum ligula nisi, mattis nec, posuere et, blandit eu, ligula. Nam suscipit placerat odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque tortor libero, venenatis vitae, rhoncus eu, placerat ut, mi. Nulla nulla.

60 |
61 |

Maecenas vel metus quis magna pharetra fermentum. Integer sit amet tortor. Maecenas porttitor, pede sed gravida auctor, nulla augue aliquet elit, at pretium urna orci ut metus. Aliquam in dolor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed aliquam, tellus id ornare posuere, quam nunc accumsan turpis, at convallis tellus orci et nisl. Phasellus congue neque a lorem.

62 | 63 |
64 |
65 |
This is a nested column
66 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

67 |
68 |
69 |
This is another nested column
70 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

71 |
72 | 73 | 74 |
75 | 76 |
77 |

A Simple Sidebar

78 | 79 |

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue.

80 |

Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida. Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida.

81 |

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue.

82 | 83 |
Incremental leading
84 |

Vestibulum ante ipsum primis in faucibus orci luctus vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus.

85 |

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue.

86 |
87 |
88 |

You may pick and choose amongst these and many more features, so be bold.

89 |
90 | 91 |

92 | Valid HTML 4.01 Strict

93 |
94 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /c/css/tests/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/css/tests/test.jpg -------------------------------------------------------------------------------- /c/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/images/.DS_Store -------------------------------------------------------------------------------- /c/images/kindling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/images/kindling.png -------------------------------------------------------------------------------- /c/images/loadspinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/images/loadspinner.gif -------------------------------------------------------------------------------- /c/images/logo_arc90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/umbrae/jsonlintdotcom/103070ee78dd9060eafc1a558977141d7a0a65a0/c/images/logo_arc90.png -------------------------------------------------------------------------------- /c/js/jquery-1.6.1.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery JavaScript Library v1.6 3 | * http://jquery.com/ 4 | * 5 | * Copyright 2011, John Resig 6 | * Dual licensed under the MIT or GPL Version 2 licenses. 7 | * http://jquery.org/license 8 | * 9 | * Includes Sizzle.js 10 | * http://sizzlejs.com/ 11 | * Copyright 2011, The Dojo Foundation 12 | * Released under the MIT, BSD, and GPL Licenses. 13 | * 14 | * Date: Mon May 2 13:50:00 2011 -0400 15 | */ 16 | (function(a,b){function cw(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function ct(a){if(!ch[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ci||(ci=c.createElement("iframe"),ci.frameBorder=ci.width=ci.height=0),c.body.appendChild(ci);if(!cj||!ci.createElement)cj=(ci.contentWindow||ci.contentDocument).document,cj.write("");b=cj.createElement(a),cj.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ci)}ch[a]=d}return ch[a]}function cs(a,b){var c={};f.each(cn.concat.apply([],cn.slice(0,b)),function(){c[this]=a});return c}function cr(){co=b}function cq(){setTimeout(cr,0);return co=f.now()}function cg(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cf(){try{return new a.XMLHttpRequest}catch(b){}}function b_(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){name="data-"+c.replace(j,"$1-$2").toLowerCase(),d=a.getAttribute(name);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(e){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?g=[null,a,null]:g=i.exec(a);if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",b=a.getElementsByTagName("*"),d=a.getElementsByTagName("a")[0];if(!b||!b.length||!d)return{};e=c.createElement("select"),f=e.appendChild(c.createElement("option")),g=a.getElementsByTagName("input")[0],i={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.55$/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:g.value==="on",optSelected:f.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},g.checked=!0,i.noCloneChecked=g.cloneNode(!0).checked,e.disabled=!0,i.optDisabled=!f.disabled;try{delete a.test}catch(r){i.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function click(){i.noCloneEvent=!1,a.detachEvent("onclick",click)}),a.cloneNode(!0).fireEvent("onclick")),g=c.createElement("input"),g.value="t",g.setAttribute("type","radio"),i.radioValue=g.value==="t",g.setAttribute("checked","checked"),a.appendChild(g),j=c.createDocumentFragment(),j.appendChild(a.firstChild),i.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",k=c.createElement("body"),l={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(p in l)k.style[p]=l[p];k.appendChild(a),c.documentElement.appendChild(k),i.appendChecked=g.checked,i.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,i.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",i.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",m=a.getElementsByTagName("td"),q=m[0].offsetHeight===0,m[0].style.display="",m[1].style.display="none",i.reliableHiddenOffsets=q&&m[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(h=c.createElement("div"),h.style.width="0",h.style.marginRight="0",a.appendChild(h),i.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(h,null).marginRight,10)||0)===0),k.innerHTML="",c.documentElement.removeChild(k);if(a.attachEvent)for(p in{submit:1,change:1,focusin:1})o="on"+p,q=o in a,q||(a.setAttribute(o,"return;"),q=typeof a[o]=="function"),i[p+"Bubbles"]=q;return i}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[c]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||"set"in c&&c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b=a.selectedIndex,c=[],d=a.options,e=a.type==="select-one";if(b<0)return null;for(var g=e?b:0,h=e?b+1:d.length;g=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex",readonly:"readOnly"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c]||(v&&(f.nodeName(a,"form")||u.test(c))?v:b);if(d!==b){if(d===null||d===!1&&!t.test(c)){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;d===!0&&!t.test(c)&&(d=c),a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.getAttribute("value");a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),f.support.getSetAttribute||(f.attrFix=f.extend(f.attrFix,{"for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder"}),v=f.attrHooks.name=f.attrHooks.value=f.valHooks.button={get:function(a,c){var d;if(c==="value"&&!f.nodeName(a,"button"))return a.getAttribute(c);d=a.getAttributeNode(c);return d&&d.specified?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=Object.prototype.hasOwnProperty,x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function J(a){var c=a.target,d,e;if(!!y.test(c.nodeName)&&!c.readOnly){d=f._data(c,"_change_data"),e=I(c),(a.type!=="focusout"||c.type!=="radio")&&f._data(c,"_change_data",e);if(d===b||e===d)return;if(d!=null||e)a.type="change",a.liveFired=b,f.event.trigger(a,arguments[1],c)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){return a.nodeName.toLowerCase()==="input"&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!be[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[];for(var i=0,j;(j=a[i])!=null;i++){typeof j=="number"&&(j+="");if(!j)continue;if(typeof j=="string")if(!ba.test(j))j=b.createTextNode(j);else{j=j.replace(Z,"<$1>");var k=($.exec(j)||["",""])[1].toLowerCase(),l=be[k]||be._default,m=l[0],n=b.createElement("div");n.innerHTML=l[1]+j+l[2];while(m--)n=n.lastChild;if(!f.support.tbody){var o=_.test(j),p=k==="table"&&!o?n.firstChild&&n.firstChild.childNodes:l[1]===""&&!o?n.childNodes:[];for(var q=p.length-1;q>=0;--q)f.nodeName(p[q],"tbody")&&!p[q].childNodes.length&&p[q].parentNode.removeChild(p[q])}!f.support.leadingWhitespace&&Y.test(j)&&n.insertBefore(b.createTextNode(Y.exec(j)[0]),n.firstChild),j=n.childNodes}var r;if(!f.support.appendChecked)if(j[0]&&typeof (r=j.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV;try{bU=e.href}catch(bW){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bX(bS),ajaxTransport:bX(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?b$(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b_(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bY(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bY(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bZ(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var ca=f.now(),cb=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+ca++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cb.test(b.url)||e&&cb.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cb,l),b.url===j&&(e&&(k=k.replace(cb,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cc=a.ActiveXObject?function(){for(var a in ce)ce[a](0,1)}:!1,cd=0,ce;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cf()||cg()}:cf,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cc&&delete ce[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cd,cc&&(ce||(ce={},f(a).unload(cc)),ce[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ch={},ci,cj,ck=/^(?:toggle|show|hide)$/,cl=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cm,cn=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],co,cp=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cs("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a=f.timers,b=a.length;while(b--)a[b]()||a.splice(b,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cm),cm=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cu=/^t(?:able|d|h)$/i,cv=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cw(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cu.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cv.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cv.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cw(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cw(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); -------------------------------------------------------------------------------- /c/js/jquery-linedtextarea/jquery-linedtextarea-license.txt: -------------------------------------------------------------------------------- 1 | Open Source Initiative OSI - The MIT License:Licensing 2 | 3 | The MIT License 4 | 5 | Copyright (c) 2010 Alan Williamson http://alan.blog-city.com/ 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | 25 | http://www.opensource.org/licenses/mit-license.php -------------------------------------------------------------------------------- /c/js/jquery-linedtextarea/jquery-linedtextarea.css: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery Lined Textarea Plugin 3 | * http://alan.blog-city.com/jquerylinedtextarea.htm 4 | * 5 | * Copyright (c) 2010 Alan Williamson 6 | * 7 | * Contribution done by Ryan Zielke (neoalchemy@gmail.com) 8 | * 9 | * Released under the MIT License: 10 | * http://www.opensource.org/licenses/mit-license.php 11 | * 12 | * Usage: 13 | * Displays a line number count column to the left of the textarea 14 | * 15 | * Class up your textarea with a given class, or target it directly 16 | * with JQuery Selectors 17 | * 18 | * $(".lined").linedtextarea({ 19 | * selectedLine: 10, 20 | * selectedClass: 'lineselect' 21 | * }); 22 | * 23 | */ 24 | 25 | textarea { resize:both; } 26 | 27 | .linedwrap { 28 | border: 1px solid #c0c0c0; 29 | padding: 3px; 30 | display: inline-block; 31 | } 32 | 33 | .linedtextarea { 34 | padding: 0px; 35 | margin: 0px; 36 | } 37 | 38 | .linedtextarea textarea, .linedwrap .codelines .lineno { 39 | font-size: 10pt; 40 | font-family: monospace; 41 | line-height: normal !important; 42 | } 43 | 44 | .linedtextarea textarea { 45 | padding-right:0.3em; 46 | padding-top:0.3em; 47 | border: 0; 48 | } 49 | 50 | .linedwrap .lines { 51 | margin-top: 0px; 52 | width: 50px; 53 | float: left; 54 | overflow: hidden; 55 | border-right: 1px solid #c0c0c0; 56 | margin-right: 10px; 57 | } 58 | 59 | .linedwrap .codelines { 60 | padding-top: 5px; 61 | } 62 | 63 | .linedwrap .codelines .lineno { 64 | color:#AAAAAA; 65 | padding-right: 0.5em; 66 | padding-top: 0.0em; 67 | text-align: right; 68 | white-space: nowrap; 69 | } 70 | 71 | .linedwrap .codelines .lineselect { 72 | color: red; 73 | } 74 | -------------------------------------------------------------------------------- /c/js/jquery-linedtextarea/jquery-linedtextarea.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | JQuery LinedTextArea Demo 4 | 5 | 6 | 7 | 8 | 9 | 10 |

JQuery LinedTextArea Demo

11 | 12 |

Add a scrollable lined area to a standard TextArea control.

13 | 14 | 34 | 35 | 42 | 43 |

Visit http://alan.blog-city.com/jquerylinedtextarea.htm for details and download

44 | 45 | 46 | -------------------------------------------------------------------------------- /c/js/jquery-linedtextarea/jquery-linedtextarea.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery Lined Textarea Plugin 3 | * http://alan.blog-city.com/jquerylinedtextarea.htm 4 | * 5 | * Copyright (c) 2010 Alan Williamson 6 | * 7 | * Contributions done by Ryan Zielke (NeoAlchemy@gmail.com) 8 | * 9 | * Version: 10 | * $Id: jquery-linedtextarea.js 464 2010-01-08 10:36:33Z alan $ 11 | * 12 | * Released under the MIT License: 13 | * http://www.opensource.org/licenses/mit-license.php 14 | * 15 | * Usage: 16 | * Displays a line number count column to the left of the textarea 17 | * 18 | * Class up your textarea with a given class, or target it directly 19 | * with JQuery Selectors 20 | * 21 | * $(".lined").linedtextarea({ 22 | * selectedLine: 10, 23 | * selectedClass: 'lineselect' 24 | * }); 25 | * 26 | * History: 27 | * - 2011.12.08: Changes to allow resizing and not affect styling of the outer div 28 | * - 2010.01.08: Fixed a Google Chrome layout problem 29 | * - 2010.01.07: Refactored code for speed/readability; Fixed horizontal sizing 30 | * - 2010.01.06: Initial Release 31 | * 32 | */ 33 | (function($) { 34 | 35 | $.fn.linedtextarea = function(options) { 36 | 37 | // Get the Options 38 | var opts = $.extend({}, $.fn.linedtextarea.defaults, options); 39 | 40 | 41 | /* 42 | * Helper function to make sure the line numbers are always 43 | * kept up to the current system 44 | */ 45 | var fillOutLines = function(codeLines, h, lineNo){ 46 | while ( (codeLines.height() - h ) <= 0 ){ 47 | if ( lineNo == opts.selectedLine ) 48 | codeLines.append("
" + lineNo + "
"); 49 | else 50 | codeLines.append("
" + lineNo + "
"); 51 | 52 | lineNo++; 53 | } 54 | return lineNo; 55 | }; 56 | 57 | 58 | /* 59 | * Iterate through each of the elements are to be applied to 60 | */ 61 | return this.each(function() { 62 | var lineNo = 1; 63 | var textarea = $(this); 64 | 65 | /* Turn off the wrapping of as we don't want to screw up the line numbers */ 66 | textarea.attr("wrap", "off"); 67 | textarea.css({resize:'both'}); 68 | var originalTextAreaWidth = textarea.outerWidth(); 69 | 70 | /* Wrap the text area in the elements we need */ 71 | var linedTextAreaDiv = textarea.wrap("
"); 72 | var linedWrapDiv = linedTextAreaDiv.parent(); 73 | 74 | linedWrapDiv.prepend("
"); 75 | 76 | var linesDiv = linedWrapDiv.find(".lines"); 77 | 78 | 79 | /* Draw the number bar; filling it out where necessary */ 80 | linesDiv.append( "
" ); 81 | var codeLinesDiv = linesDiv.find(".codelines"); 82 | lineNo = fillOutLines( codeLinesDiv, linesDiv.height(), 1 ); 83 | 84 | /* Move the textarea to the selected line */ 85 | if ( opts.selectedLine != -1 && !isNaN(opts.selectedLine) ){ 86 | var fontSize = parseInt( textarea.height() / (lineNo-2) ); 87 | var position = parseInt( fontSize * opts.selectedLine ) - (textarea.height()/2); 88 | textarea[0].scrollTop = position; 89 | } 90 | 91 | 92 | /* Set the width */ 93 | var sidebarWidth = linesDiv.outerWidth(true); 94 | var paddingHorizontal = parseInt( linedWrapDiv.css("border-left-width") ) + parseInt( linedWrapDiv.css("border-right-width") ) + parseInt( linedWrapDiv.css("padding-left") ) + parseInt( linedWrapDiv.css("padding-right") ); 95 | var linedWrapDivNewWidth = originalTextAreaWidth - paddingHorizontal; 96 | var textareaNewWidth = originalTextAreaWidth - sidebarWidth - paddingHorizontal; 97 | 98 | textarea.width( textareaNewWidth); 99 | textarea.css({maxWidth: textareaNewWidth - 6}); //TODO make this calculated 100 | 101 | 102 | 103 | /* React to the scroll event */ 104 | textarea.scroll( function(tn){ 105 | var domTextArea = $(this)[0]; 106 | var scrollTop = domTextArea.scrollTop; 107 | var clientHeight = domTextArea.clientHeight; 108 | codeLinesDiv.css( {'margin-top': (-1*scrollTop) + "px"} ); 109 | lineNo = fillOutLines( codeLinesDiv, scrollTop + clientHeight, lineNo ); 110 | }); 111 | 112 | 113 | /* Should the textarea get resized outside of our control */ 114 | textarea.resize( function(tn){ 115 | var domTextArea = $(this)[0]; 116 | linesDiv.height( domTextArea.clientHeight + 6 ); 117 | }); 118 | 119 | 120 | window.setInterval( function(tn) { 121 | linesDiv.height(textarea.height()); 122 | var scrollTop = textarea[0].scrollTop; 123 | var clientHeight = textarea[0].clientHeight; 124 | codeLinesDiv.css( {'margin-top': (-1*scrollTop) + "px"} ); 125 | lineNo = fillOutLines( codeLinesDiv, scrollTop + clientHeight, lineNo ); 126 | },10); 127 | 128 | }); 129 | }; 130 | 131 | // default options 132 | $.fn.linedtextarea.defaults = { 133 | selectedLine: -1, 134 | selectedClass: 'lineselect' 135 | }; 136 | })(jQuery); 137 | -------------------------------------------------------------------------------- /c/js/jsl.format.js: -------------------------------------------------------------------------------- 1 | /*jslint white: true, devel: true, onevar: true, browser: true, undef: true, nomen: true, regexp: true, plusplus: false, bitwise: true, newcap: true, maxerr: 50, indent: 4 */ 2 | var jsl = typeof jsl === 'undefined' ? {} : jsl; 3 | 4 | /** 5 | * jsl.format - Provide json reformatting in a character-by-character approach, so that even invalid JSON may be reformatted (to the best of its ability). 6 | * 7 | **/ 8 | jsl.format = (function () { 9 | 10 | function repeat(s, count) { 11 | return new Array(count + 1).join(s); 12 | } 13 | 14 | function formatJson(json) { 15 | var i = 0, 16 | il = 0, 17 | tab = " ", 18 | newJson = "", 19 | indentLevel = 0, 20 | inString = false, 21 | currentChar = null; 22 | 23 | for (i = 0, il = json.length; i < il; i += 1) { 24 | currentChar = json.charAt(i); 25 | 26 | switch (currentChar) { 27 | case '{': 28 | case '[': 29 | if (!inString) { 30 | newJson += currentChar + "\n" + repeat(tab, indentLevel + 1); 31 | indentLevel += 1; 32 | } else { 33 | newJson += currentChar; 34 | } 35 | break; 36 | case '}': 37 | case ']': 38 | if (!inString) { 39 | indentLevel -= 1; 40 | newJson += "\n" + repeat(tab, indentLevel) + currentChar; 41 | } else { 42 | newJson += currentChar; 43 | } 44 | break; 45 | case ',': 46 | if (!inString) { 47 | newJson += ",\n" + repeat(tab, indentLevel); 48 | } else { 49 | newJson += currentChar; 50 | } 51 | break; 52 | case ':': 53 | if (!inString) { 54 | newJson += ": "; 55 | } else { 56 | newJson += currentChar; 57 | } 58 | break; 59 | case ' ': 60 | case "\n": 61 | case "\t": 62 | if (inString) { 63 | newJson += currentChar; 64 | } 65 | break; 66 | case '"': 67 | if (i > 0 && json.charAt(i - 1) !== '\\') { 68 | inString = !inString; 69 | } 70 | newJson += currentChar; 71 | break; 72 | default: 73 | newJson += currentChar; 74 | break; 75 | } 76 | } 77 | 78 | return newJson; 79 | } 80 | 81 | return { "formatJson": formatJson }; 82 | 83 | }()); -------------------------------------------------------------------------------- /c/js/jsl.interactions.js: -------------------------------------------------------------------------------- 1 | /*jslint white: true, devel: true, onevar: true, browser: true, undef: true, nomen: true, regexp: true, plusplus: false, bitwise: true, newcap: true, maxerr: 50, indent: 4 */ 2 | var jsl = typeof jsl === 'undefined' ? {} : jsl; 3 | 4 | /** 5 | * Helper Function for Caret positioning 6 | * Gratefully borrowed from the Masked Input Plugin by Josh Bush 7 | * http://digitalbush.com/projects/masked-input-plugin 8 | **/ 9 | $.fn.caret = function (begin, end) { 10 | if (this.length === 0) { 11 | return; 12 | } 13 | if (typeof begin === 'number') { 14 | end = (typeof end === 'number') ? end : begin; 15 | return this.each(function () { 16 | if (this.setSelectionRange) { 17 | this.focus(); 18 | this.setSelectionRange(begin, end); 19 | } else if (this.createTextRange) { 20 | var range = this.createTextRange(); 21 | range.collapse(true); 22 | range.moveEnd('character', end); 23 | range.moveStart('character', begin); 24 | range.select(); 25 | } 26 | }); 27 | } else { 28 | if (this[0].setSelectionRange) { 29 | begin = this[0].selectionStart; 30 | end = this[0].selectionEnd; 31 | } else if (document.selection && document.selection.createRange) { 32 | var range = document.selection.createRange(); 33 | begin = -range.duplicate().moveStart('character', -100000); 34 | end = begin + range.text.length; 35 | } 36 | return {"begin": begin, "end": end}; 37 | } 38 | }; 39 | 40 | 41 | /** 42 | * jsl.interactions - provides support for interactions within JSON Lint. 43 | * 44 | **/ 45 | jsl.interactions = (function () { 46 | var reformatParam, 47 | reformat, 48 | compress; 49 | 50 | 51 | /******* UTILITY METHODS *******/ 52 | 53 | /** 54 | * Get the Nth position of a character in a string 55 | * @searchStr the string to search through 56 | * @char the character to find 57 | * @pos int the nth character to find, 1 based. 58 | * 59 | * @return int the position of the character found 60 | **/ 61 | function getNthPos(searchStr, char, pos) { 62 | var i, 63 | charCount = 0, 64 | strArr = searchStr.split(char); 65 | 66 | if (pos === 0) { 67 | return 0; 68 | } 69 | 70 | for (i = 0; i < pos; i++) { 71 | if (i >= strArr.length) { 72 | return -1; 73 | } 74 | 75 | // +1 because we split out some characters 76 | charCount += strArr[i].length + char.length; 77 | } 78 | 79 | return charCount; 80 | } 81 | 82 | /** 83 | * Get a URL parameter from the current windows URL. 84 | * Courtesy Paul Oppenheim: http://stackoverflow.com/questions/1403888/get-url-parameter-with-jquery 85 | * @param name the parameter to retrieve 86 | * @return string the url parameter's value, if any 87 | **/ 88 | function getURLParameter(name) { 89 | param = (new RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || ['', null])[1]; 90 | if (param) { 91 | return decodeURIComponent(param); 92 | } else { 93 | return null; 94 | } 95 | } 96 | 97 | /******* INTERACTION METHODS *******/ 98 | 99 | /** 100 | * Validate the JSON we've been given, displaying an error or success message. 101 | * @return void 102 | **/ 103 | function validate() { 104 | var lineNum, 105 | lineMatches, 106 | lineStart, 107 | lineEnd, 108 | jsonVal, 109 | result; 110 | 111 | jsonVal = $('#json_input').val(); 112 | 113 | try { 114 | result = jsl.parser.parse(jsonVal); 115 | 116 | if (result) { 117 | $('#results').removeClass('error').addClass('success'); 118 | $('div.linedwrap').removeClass('redBorder').addClass('greenBorder'); 119 | $('#results').text('Valid JSON'); 120 | 121 | if (reformat) { 122 | $('#json_input').val(JSON.stringify(JSON.parse(jsonVal), null, " ")); 123 | } 124 | 125 | if (compress) { 126 | $('#json_input').val(JSON.stringify(JSON.parse(jsonVal), null, "")); 127 | } 128 | } else { 129 | alert("An unknown error occurred. Please contact Arc90."); 130 | } 131 | } catch (parseException) { 132 | 133 | /** 134 | * If we failed to validate, run our manual formatter and then re-validate so that we 135 | * can get a better line number. On a successful validate, we don't want to run our 136 | * manual formatter because the automatic one is faster and probably more reliable. 137 | **/ 138 | try { 139 | if (reformat) { 140 | jsonVal = jsl.format.formatJson($('#json_input').val()); 141 | $('#json_input').val(jsonVal); 142 | result = jsl.parser.parse($('#json_input').val()); 143 | } 144 | } catch(e) { 145 | parseException = e; 146 | } 147 | 148 | lineMatches = parseException.message.match(/line ([0-9]*)/); 149 | if (lineMatches && typeof lineMatches === "object" && lineMatches.length > 1) { 150 | lineNum = parseInt(lineMatches[1], 10); 151 | 152 | if (lineNum === 1) { 153 | lineStart = 0; 154 | } else { 155 | lineStart = getNthPos(jsonVal, "\n", lineNum - 1); 156 | } 157 | 158 | lineEnd = jsonVal.indexOf("\n", lineStart); 159 | if (lineEnd < 0) { 160 | lineEnd = jsonVal.length; 161 | } 162 | 163 | $('#json_input').focus().caret(lineStart, lineEnd); 164 | } 165 | 166 | $('#results').text(parseException.message); 167 | 168 | $('#results').removeClass('success').addClass('error'); 169 | $('div.linedwrap').removeClass('greenBorder').addClass('redBorder'); 170 | } 171 | 172 | $('#loadSpinner').hide(); 173 | } 174 | 175 | /** 176 | * Initialize variables, add event listeners, etc. 177 | * 178 | * @return void 179 | **/ 180 | function init() { 181 | reformatParam = getURLParameter('reformat'); 182 | reformat = reformatParam !== '0' && reformatParam !== 'no'; 183 | compress = reformatParam === 'compress', 184 | jsonParam = getURLParameter('json'); 185 | 186 | if (compress) { 187 | $('#headerText').html('JSONLintCompressor'); 188 | } 189 | 190 | if (!reformat) { 191 | $('#headerText').html('JSONLintLite'); 192 | } 193 | 194 | $('#validate').click(function () { 195 | $('#results_header, #loadSpinner').show(); 196 | 197 | var jsonVal = $.trim($('#json_input').val()); 198 | 199 | if (jsonVal.substring(0, 4).toLowerCase() === "http") { 200 | $.post("proxy.php", {"url": jsonVal}, function (responseObj) { 201 | $('#json_input').val(responseObj.content); 202 | validate(); 203 | }, 'json'); 204 | } else { 205 | validate(); 206 | } 207 | 208 | return false; 209 | }); 210 | 211 | $('#json_input').keyup(function () { 212 | $('div.linedwrap').removeClass('greenBorder').removeClass('redBorder'); 213 | }).linedtextarea({ 214 | selectedClass: 'lineselect' 215 | }).focus(); 216 | 217 | $('#reset').click(function () { 218 | $('#json_input').val('').focus(); 219 | }); 220 | 221 | $('#faqButton').click(function () { 222 | $('#faq').slideToggle(); 223 | }); 224 | 225 | if (jsonParam) { 226 | $('#json_input').val(jsonParam); 227 | $('#validate').click(); 228 | } 229 | } 230 | 231 | return { 232 | 'init': init 233 | }; 234 | }()); 235 | 236 | $(function () { 237 | jsl.interactions.init(); 238 | }); 239 | -------------------------------------------------------------------------------- /c/js/jsl.parser.js: -------------------------------------------------------------------------------- 1 | var jsl = typeof(jsl) === 'undefined' ? {} : jsl; 2 | /** 3 | * JSON Lint Parser gratefully provided by Zach Carter 4 | * https://github.com/zaach/jsonlint 5 | **/ 6 | jsl.parser = function(){var a=!0,b=!1,c={},d=function(){var a={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONObject:13,EOF:14,JSONArray:15,JSONValue:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[12,2],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[13,2],[13,3],[20,3],[19,1],[19,3],[15,2],[15,3],[25,1],[25,3]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:this.$=a;break;case 2:this.$=Number(a);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=f[h-1];case 7:return this.$=f[h-1];case 8:this.$=f[h];break;case 9:this.$=f[h];break;case 10:this.$=f[h];break;case 11:this.$=f[h];break;case 12:this.$=f[h];break;case 13:this.$=f[h];break;case 14:this.$={};break;case 15:this.$=f[h-1];break;case 16:this.$=[f[h-2],f[h]];break;case 17:this.$={},this.$[f[h][0]]=f[h][1];break;case 18:this.$=f[h-2],f[h-2][f[h][0]]=f[h][1];break;case 19:this.$=[];break;case 20:this.$=f[h-1];break;case 21:this.$=[f[h]];break;case 22:this.$=f[h-2],f[h-2].push(f[h])}},table:[{12:1,13:2,15:3,17:[1,4],23:[1,5]},{1:[3]},{14:[1,6]},{14:[1,7]},{3:11,4:[1,12],18:[1,8],19:9,20:10},{3:18,4:[1,12],5:19,6:[1,25],7:16,8:[1,22],9:17,10:[1,23],11:[1,24],13:20,15:21,16:15,17:[1,4],23:[1,5],24:[1,13],25:14},{1:[2,6]},{1:[2,7]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{18:[1,26],22:[1,27]},{18:[2,17],22:[2,17]},{21:[1,28]},{18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{22:[1,30],24:[1,29]},{22:[2,21],24:[2,21]},{18:[2,8],22:[2,8],24:[2,8]},{18:[2,9],22:[2,9],24:[2,9]},{18:[2,10],22:[2,10],24:[2,10]},{18:[2,11],22:[2,11],24:[2,11]},{18:[2,12],22:[2,12],24:[2,12]},{18:[2,13],22:[2,13],24:[2,13]},{18:[2,3],22:[2,3],24:[2,3]},{18:[2,4],22:[2,4],24:[2,4]},{18:[2,5],22:[2,5],24:[2,5]},{18:[2,2],22:[2,2],24:[2,2]},{14:[2,15],18:[2,15],22:[2,15],24:[2,15]},{3:11,4:[1,12],20:31},{3:18,4:[1,12],5:19,6:[1,25],7:16,8:[1,22],9:17,10:[1,23],11:[1,24],13:20,15:21,16:32,17:[1,4],23:[1,5]},{14:[2,20],18:[2,20],22:[2,20],24:[2,20]},{3:18,4:[1,12],5:19,6:[1,25],7:16,8:[1,22],9:17,10:[1,23],11:[1,24],13:20,15:21,16:33,17:[1,4],23:[1,5]},{18:[2,18],22:[2,18]},{18:[2,16],22:[2,16]},{22:[2,22],24:[2,22]}],defaultActions:{6:[2,6],7:[2,7]},parseError:function(a,b){throw new Error(a)},parse:function(a){function o(){var a;a=b.lexer.lex()||1,typeof a!="number"&&(a=b.symbols_[a]||a);return a}function n(a){c.length=c.length-2*a,d.length=d.length-a,e.length=e.length-a}var b=this,c=[0],d=[null],e=[],f=this.table,g="",h=0,i=0,j=0,k=2,l=1;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var m=this.lexer.yylloc;e.push(m),typeof this.yy.parseError=="function"&&(this.parseError=this.yy.parseError);var p,q,r,s,t,u,v={},w,x,y,z;for(;;){r=c[c.length-1],this.defaultActions[r]?s=this.defaultActions[r]:(p==null&&(p=o()),s=f[r]&&f[r][p]);if(typeof s=="undefined"||!s.length||!s[0]){if(!j){z=[];for(w in f[r])this.terminals_[w]&&w>2&&z.push("'"+this.terminals_[w]+"'");var A="";this.lexer.showPosition?A="Parse error on line "+(h+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+z.join(", "):A="Parse error on line "+(h+1)+": Unexpected "+(p==1?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(A,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:m,expected:z})}if(j==3){if(p==l)throw new Error(A||"Parsing halted.");i=this.lexer.yyleng,g=this.lexer.yytext,h=this.lexer.yylineno,m=this.lexer.yylloc,p=o()}for(;;){if(k.toString()in f[r])break;if(r==0)throw new Error(A||"Parsing halted.");n(1),r=c[c.length-1]}q=p,p=k,r=c[c.length-1],s=f[r]&&f[r][k],j=3}if(s[0]instanceof Array&&s.length>1)throw new Error("Parse Error: multiple actions possible at state: "+r+", token: "+p);switch(s[0]){case 1:c.push(p),d.push(this.lexer.yytext),e.push(this.lexer.yylloc),c.push(s[1]),p=null,q?(p=q,q=null):(i=this.lexer.yyleng,g=this.lexer.yytext,h=this.lexer.yylineno,m=this.lexer.yylloc,j>0&&j--);break;case 2:x=this.productions_[s[1]][1],v.$=d[d.length-x],v._$={first_line:e[e.length-(x||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(x||1)].first_column,last_column:e[e.length-1].last_column},u=this.performAction.call(v,g,i,h,this.yy,s[1],d,e);if(typeof u!="undefined")return u;x&&(c=c.slice(0,-1*x*2),d=d.slice(0,-1*x),e=e.slice(0,-1*x)),c.push(this.productions_[s[1]][0]),d.push(v.$),e.push(v._$),y=f[c[c.length-2]][c[c.length-1]],c.push(y);break;case 3:return!0}}return!0}},f=function(){var a={EOF:1,parseError:function(a,b){if(this.yy.parseError)this.yy.parseError(a,b);else throw new Error(a)},setInput:function(a){this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};return this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.match+=a,this.matched+=a;var b=a.match(/\n/);b&&this.yylineno++,this._input=this._input.slice(1);return a},unput:function(a){this._input=a+this._input;return this},more:function(){this._more=!0;return this},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;a.length<20&&(a+=this._input.substr(0,20-a.length));return(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d;this._more||(this.yytext="",this.match="");var e=this._currentRules();for(var f=0;f 2 | 3 | 4 | 5 | 6 | 7 | JSONLint - The JSON Validator. 8 | 9 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 48 |
49 |
50 | 51 | 52 |
53 | 54 |
55 |
56 |
57 | 58 |
59 |
60 | FAQ 61 |
62 |
63 | JSON Lint is an idea from Arc90's Kindling
64 | 65 | Kindling 66 | 67 |
68 |
69 |
70 |
71 |

72 | Results Loading 73 |

74 |
75 |

 76 |             
77 |

78 | FAQ 79 |

80 |
81 |
82 |
83 | What is JSONLint? 84 |
85 |
86 |

87 | JSONLint is a validator and reformatter for JSON, a lightweight data-interchange format. 88 |

89 |
90 |
91 | Why 'Lint'? 92 |
93 |
94 |

95 | Essentially, I'm just riding on JSLint's coattails. The name 'lint' was originally used to find problems in C source files. It's not really valid here because JSON is just a protocol. Shameless? You bet! 96 |

97 |
98 |
99 | Why does it reformat my JSON? 100 |
101 |
102 |

103 | Because your code is ugly! Trust me on this one. What's that you say? It's not? Ok, well then here's JSON Lint without the reformatter. 104 |

105 |
106 |
107 | Any secret features? 108 |
109 |
110 |

111 | Sure, a few. You can input a URL and it'll scrape it for JSON and parse that.
112 | An example URL to test: http://www.reddit.com/r/programming/comments/9szpc/jsonlint_a_handy_json_validator_and_reformatter.json 113 |

114 |

115 | You can also provide JSON to lint in the URL if you link to JSON Lint with the "json" parameter. Here's an example URL to test. 116 |

117 |

118 | Additionally, JSON Lint can also be used as a json compressor if you add ?reformat=compress to the URL. 119 |

120 |
121 |
122 | What are some common errors? 123 |
124 |
125 |
126 |
127 | Expecting 'STRING' 128 |
129 |
130 | You probably have an extra comma at the end of your collection. Something like: { "a": "b", } 131 |
132 |
133 | Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 134 |
135 |
136 | You probably have an extra comma at the end of your list. Something like: [ "a", "b", ] 137 |
138 | You also may have not enclosed your collection keys in quotes. Proper format for a collection is: { "key": "value" } 139 |
140 |
141 |

142 | Be sure to follow JSON's syntax properly. For example, always use double quotes, always quotify your keys, and remove all callback functions. 143 |

144 |
145 |
146 | A friend and I pasted the same JSON in and got different results. Wat do? 147 |
148 |
149 |

150 | If you and your friend are on different systems (Win/Unix), this is possible due to the way windows handles newlines. Essentially, if you have just newline characters (\n) in your JSON and paste it into JSONLint from a windows machine, it can validate it as valid erroneously since Windows may need a carriage return (\r) as well to detect newlines properly. 151 |

152 |

153 | The solution: Either use direct URL input, or make sure your content's newlines match the architecture your system expects! 154 |

155 |
156 |
157 | Who made this? 158 |
159 |
160 |

161 | Chris Dary built this for the Arc90 Lab. Much is owed to the community (this uses Zach Conner's javascript Pure JS JSON parser, for example). 162 |

163 |
164 |
165 | I've got feedback! 166 |
167 |
168 | Great - hit us up at contact@arc90.com. 169 |
170 |
171 |
172 |
173 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /proxy.php: -------------------------------------------------------------------------------- 1 | = 400) { 34 | echo '{ "result": "URL returned bad status code ' . $status . '.", "error": true }'; 35 | return; 36 | } 37 | 38 | if ($contentLength >= 52428800) { 39 | echo '{ "result": "URL content length greater than 10 megs (' . $contentLength . '). Validation not available for files this large.", "responseCode": "1" }'; 40 | return; 41 | } 42 | 43 | $response = new StdClass(); 44 | $response->status = $status; 45 | $response->length = $contentLength; 46 | $response->url = $info['url']; 47 | $response->content = $data; 48 | 49 | echo json_encode($response); 50 | 51 | ?> --------------------------------------------------------------------------------