Repository: richarddmorey/stat-distributions-js Branch: master Commit: 189d2f40142e Files: 35 Total size: 883.1 KB Directory structure: gitextract_sz544if2/ ├── LICENSE ├── README.md ├── css/ │ ├── distTable.css │ ├── distributionDisplay.css │ └── libraries/ │ ├── jquery.aristo.css │ ├── jquery.css │ ├── milkbox/ │ │ └── milkbox.css │ └── overlay.css ├── distributionDisplay.html ├── distributionTable.html ├── docs/ │ ├── .nojekyll │ ├── css/ │ │ ├── distTable.css │ │ ├── distributionDisplay.css │ │ └── libraries/ │ │ ├── jquery.aristo.css │ │ ├── jquery.css │ │ ├── milkbox/ │ │ │ └── milkbox.css │ │ └── overlay.css │ ├── distributionDisplay.html │ ├── index.html │ └── js/ │ ├── distributionDisplay.js │ ├── distributionList.js │ ├── distributionObjects.js │ └── libraries/ │ ├── disableSTIX.js │ ├── jquery.flot.crosshair.js │ ├── jstat.js │ ├── milkbox.js │ └── mootools-more-1.4.0.1.js └── js/ ├── distributionDisplay.js ├── distributionList.js ├── distributionObjects.js └── libraries/ ├── disableSTIX.js ├── jquery.flot.crosshair.js ├── jstat.js ├── milkbox.js └── mootools-more-1.4.0.1.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2015 Richard Morey Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # stat-distributions-js Javascript library for the visualization of statistical distributions ## What the library does Allows for interactive visualizations of probability distributions. The goal of this library is to offer a simple way to define any distribution one likes, and then to immediately be able to interact with the parameters of the distribution and see how the distribution changes. [Live demo](https://richarddmorey.github.io/stat-distributions-js/) [![Screen1](http://learnbayes.org/demo/stat-distributions-js/screenshots/screen-distribution_thumb.jpg)](http://learnbayes.org/demo/stat-distributions-js/screenshots/screen-distribution.png) [![Screen2](http://learnbayes.org/demo/stat-distributions-js/screenshots/screen-lightbox_thumb.jpg)](http://learnbayes.org/demo/stat-distributions-js/screenshots/screen-lightbox.png) [![Screen3](http://learnbayes.org/demo/stat-distributions-js/screenshots/screen-table_thumb.jpg)](http://learnbayes.org/demo/stat-distributions-js/screenshots/screen-table.png) There are two HTML files: * `distributionTable.html`: Lists all known distributions in a table, giving links for interaction with each * `distributionDisplay.html`: Gives an interface to interface with a specific distribution `distributionDisplay.html` can be used directly using URL parameters, e.g.: [https://richarddmorey.github.io/stat-distributions-js/distributionDisplay.html?dist=normal&ptzn=2&plotxrng=50,150&rangesLo=50,3&rangesHi=150,45&starts=100,15](https://richarddmorey.github.io/stat-distributions-js/?dist=normal&ptzn=2&plotxrng=50,150&rangesLo=50,3&rangesHi=150,45&starts=100,15) The setup parameters used here are: * `dist`: the distribution name * `ptzn`: the parametrization number (array index; here 2 means mean/standard deviation) * `plotxrng`: the lower and upper limit of the x axis * `rangesLo`: the lower bound for the slider for each parameter * `rangesHi`: the upper bound for the slider for each parameter * `starts`: starting values for the parameter sliders ## How it works The javascript file `distributionList.js` defines an array of `distribution` objects, each of which represents a probability distribution. ### Distibutions A distribution is defined by a distribution object, e.g. distributions["normal"] = new distribution( "normal", // label "Normal/Gaussian", // display name "continuous", // type [ normalMeanVariance, normalMeanPrecision ], // array of parametrizations null, // note { // information source about the distribution name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Normal_distribution" } ); New distributions can be defined analgously. ### Parametrizations Every distribution must have at least one parametrization. Most of the important information about the distribution is in the parametrization object. See the `distributionObjects.js` file for more details, and the `distributionList.js` file for examples. ## Libraries used Uses the following libraries: * For plotting: [jquery](https://jquery.com/), [jquery-ui](https://jqueryui.com/), and [flot.js](http://www.flotcharts.org/) * For the formula display: [MathJax](https://www.mathjax.org/) * For the statistical functions: [jstat](https://github.com/jstat/jstat) * For the lightbox: [mootools](http://mootools.net/) and [milkbox](http://reghellin.com/milkbox/) Old (known working) versions of these libraries are included in this repository. ================================================ FILE: css/distTable.css ================================================ table.distribution { width:90%; border-top:1px solid #e5eff8; border-right:1px solid #e5eff8; margin:1em auto; border-collapse:collapse; } table.distribution caption { color: #9ba9b4; font-size:.94em; letter-spacing:.1em; margin:1em 0 0 0; padding:0; caption-side:top; text-align:center; } table.distribution tr.odd td { background:#f7fbff } table.distribution tr.odd .column1 { background:#f4f9fe; } table.distribution .column1 { background:#f9fcfe; } table.distribution td { /*color:#678197;*/ color: black; border-bottom:1px solid #e5eff8; border-left:1px solid #e5eff8; padding:.3em 1em; text-align:center; } table.distribution th { font-weight: bold; color: #678197; text-align:left; border-bottom: 1px solid #e5eff8; border-left:1px solid #e5eff8; padding:.3em 1em; } table.distribution thead th { background:#f4f9fe; text-align:center; font:bold 1.2em/2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif; color:#66a3d3 } table.distribution tfoot th { text-align:center; background:#f4f9fe; } table.distribution tfoot th strong { font:bold 1.2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif; margin:.5em .5em .5em 0; color:#66a3d3; } table.distribution tfoot th em { color:#f03b58; font-weight: bold; font-size: 1.1em; font-style: normal; } ================================================ FILE: css/distributionDisplay.css ================================================ body{ background-color: white; } .partooltip { display:none; background-color: black; font-size:16px; padding:5px; color:#fff; opacity: .8; font-family: sans-serif; } .interfacecontainer { border-style: solid; border-width: 1px; border-color: gray; padding: 10px; margin: 10px; width: 600px; height: 320px; background-color: white; } #parametercontainer { width:250px; float: left; } .paramslider { width: 150px; float: left; } .paramindicator { width: 50px; float: left; } .paramlabel { width: 20px; float: left; } .clear { clear: both; } .paramsinglecontainer { width: 250px; height: 40px; float: left; position: relative; } .controlcontainer { width: 260px; float: left; } #plottypebuttonscontainer { width: 200px; } .plotcontainer { width: 310px; float: left; } ================================================ FILE: css/libraries/jquery.aristo.css ================================================ /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .ui-helper-clearfix { display: inline-block; } /* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix { height:1%; } .ui-helper-clearfix { display:block; } /* end clearfix */ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Helvetica,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica,Arial,sans-serif; font-size: 1em; } .ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; } .ui-widget-content a { color: #4F4F4F; } .ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; } .ui-widget-header { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); } .ui-widget-header a { color: #4F4F4F; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; } .ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { outline: none; color: #1c4257; border: 1px solid #7096ab; background: url(images/bg_fallback.png) 0 -50px repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-state-default .ui-icon { background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0 no-repeat !important; } .ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background: url(images/icon_sprite.png) 0 0 no-repeat !important; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-off { background-position: -96px -144px; } .ui-icon-radio-on { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } /* Overlays */ .ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); } .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* * jQuery UI Resizable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* * jQuery UI Selectable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Selectable#theming */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* * jQuery UI Accordion 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Accordion#theming */ /* IE/Win - Fix animation bug - #4615 */ .ui-accordion { width: 100%; } .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } .ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-accordion .ui-accordion-li-fix { display: inline; } .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } .ui-accordion .ui-accordion-header a { display: block; font-size: 12px; font-weight: bold; padding: .5em .5em .5em .7em; } .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } .ui-accordion .ui-accordion-content-active { display: block; }/* * jQuery UI Autocomplete 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Autocomplete#theming */ .ui-autocomplete { position: absolute; cursor: default; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; -moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3); -webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3); } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* * jQuery UI Menu 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Menu#theming */ .ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float: left; } .ui-menu .ui-menu { margin-top: -3px; } .ui-menu .ui-menu-item { margin:0; padding: 0; zoom: 1; float: left; clear: left; width: 100%; } .ui-menu .ui-menu-item a { text-decoration:none; display:block; padding:.2em .4em; line-height:1.5; zoom:1; } .ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; background: #5f83b9; color: #FFFFFF; text-shadow: 0px 1px 1px #234386; border-color: #466086; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } /* * jQuery UI Button 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Button#theming */ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ .ui-button-icons-only { width: 3.4em; } button.ui-button-icons-only { width: 3.7em; } /*states*/ .ui-button.ui-state-hover { -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; } .ui-button.ui-state-focus { outline: none; color: #1c4257; border-color: #7096ab; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /*button text element */ .ui-button .ui-button-text { display: block; line-height: 1.4; font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } .ui-button-text-only .ui-button-text { padding: .4em 1em; } .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /*button icon element(s) */ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /*button sets*/ .ui-buttonset { margin-right: 7px; } .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } .ui-buttonset .ui-button.ui-state-active { color: #1c4257; border-color: #7096ab; } .ui-buttonset .ui-button.ui-state-active { background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* * jQuery UI Dialog 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Dialog#theming */ .ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; } .ui-dialog { -webkit-box-shadow: 0 2px 12px rgba(0,0,0,0.6); -moz-box-shadow: 0 2px 12px rgba(0,0,0,0.6); } .ui-dialog .ui-dialog-titlebar { padding: 0.7em 1em 0.6em 1em; position: relative; border: none; border-bottom: 1px solid #979797; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 14px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .8em; top: 55%; width: 16px; margin: -10px 0 0 0; padding: 0; height: 16px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0 -16px no-repeat; } .ui-dialog .ui-dialog-titlebar-close:hover span { background-position: -16px -16px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; border: 0; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* * jQuery UI Slider 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Slider#theming */ .ui-slider { position: relative; text-align: left; background: #d7d7d7; } .ui-slider { -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; } .ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: default; border: none; outline: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .ui-slider .ui-state-hover, .ui-slider .ui-state-active { background-position: 0 0; } .ui-slider .ui-slider-range { background: #a3cae0; position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } .ui-slider .ui-slider-range { -moz-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; -webkit-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; } .ui-slider-horizontal { height: 5px; } .ui-slider-horizontal .ui-slider-handle { top: -8px; margin-left: -13px; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: 5px; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -8px; margin-left: 0; margin-bottom: -13px; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* * jQuery UI Tabs 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Tabs#theming */ .ui-tabs { position: relative; zoom: 1; border: 0; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ .ui-tabs .ui-tabs-nav { margin: 0; padding: 0; background: transparent; border-width: 0 0 1px 0; } .ui-tabs .ui-tabs-nav { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; background: #fff; border-color: #B6B6B6; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; outline: none; } .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ .ui-tabs .ui-tabs-panel { display: block; border-width: 0 1px 1px 1px; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-panel { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-hide { display: none !important; } /* * jQuery UI Datepicker 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Datepicker#theming */ .ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; } .ui-datepicker { -moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5); -webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5); box-shadow: 0 4px 8px rgba(0,0,0,0.5); } .ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; } .ui-datepicker .ui-datepicker-prev { left:2px; } .ui-datepicker .ui-datepicker-next { right:2px; } .ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; } .ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; } .ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; } .ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } .ui-datepicker .ui-state-default { background: transparent; border-color: #FFF; } .ui-datepicker .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width:auto; } .ui-datepicker-multi .ui-datepicker-group { float:left; } .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } .ui-datepicker-row-break { clear:both; width:100%; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } .ui-datepicker-rtl .ui-datepicker-group { float:right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ .ui-datepicker-cover { display: none; /*sorry for IE5*/ display/**/: block; /*sorry for IE5*/ position: absolute; /*must have*/ z-index: -1; /*must have*/ filter: mask(); /*must have*/ top: -4px; /*must have*/ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ }/* * jQuery UI Progressbar 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Progressbar#theming */ .ui-progressbar { height: 0.5em; text-align: left; background: url(images/progress_bar.gif) 0 -14px repeat-x; } .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0 0 repeat-x; } ================================================ FILE: css/libraries/jquery.css ================================================ /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .ui-helper-clearfix { display: inline-block; } /* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix { height:1%; } .ui-helper-clearfix { display:block; } /* end clearfix */ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Helvetica,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica,Arial,sans-serif; font-size: 1em; } .ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; } .ui-widget-content a { color: #4F4F4F; } .ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; } .ui-widget-header { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); } .ui-widget-header a { color: #4F4F4F; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; } .ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { outline: none; color: #1c4257; border: 1px solid #7096ab; background: url(images/bg_fallback.png) 0 -50px repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-state-default .ui-icon { background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0 no-repeat !important; } .ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background: url(images/icon_sprite.png) 0 0 no-repeat !important; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-off { background-position: -96px -144px; } .ui-icon-radio-on { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } /* Overlays */ .ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); } .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* * jQuery UI Resizable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* * jQuery UI Selectable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Selectable#theming */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* * jQuery UI Accordion 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Accordion#theming */ /* IE/Win - Fix animation bug - #4615 */ .ui-accordion { width: 100%; } .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } .ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-accordion .ui-accordion-li-fix { display: inline; } .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } .ui-accordion .ui-accordion-header a { display: block; font-size: 12px; font-weight: bold; padding: .5em .5em .5em .7em; } .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } .ui-accordion .ui-accordion-content-active { display: block; }/* * jQuery UI Autocomplete 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Autocomplete#theming */ .ui-autocomplete { position: absolute; cursor: default; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; -moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3); -webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3); } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* * jQuery UI Menu 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Menu#theming */ .ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float: left; } .ui-menu .ui-menu { margin-top: -3px; } .ui-menu .ui-menu-item { margin:0; padding: 0; zoom: 1; float: left; clear: left; width: 100%; } .ui-menu .ui-menu-item a { text-decoration:none; display:block; padding:.2em .4em; line-height:1.5; zoom:1; } .ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; background: #5f83b9; color: #FFFFFF; text-shadow: 0px 1px 1px #234386; border-color: #466086; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } /* * jQuery UI Button 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Button#theming */ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ .ui-button-icons-only { width: 3.4em; } button.ui-button-icons-only { width: 3.7em; } /*states*/ .ui-button.ui-state-hover { -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; } .ui-button.ui-state-focus { outline: none; color: #1c4257; border-color: #7096ab; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /*button text element */ .ui-button .ui-button-text { display: block; line-height: 1.4; font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } .ui-button-text-only .ui-button-text { padding: .4em 1em; } .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /*button icon element(s) */ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /*button sets*/ .ui-buttonset { margin-right: 7px; } .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } .ui-buttonset .ui-button.ui-state-active { color: #1c4257; border-color: #7096ab; } .ui-buttonset .ui-button.ui-state-active { background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* * jQuery UI Dialog 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Dialog#theming */ .ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; } .ui-dialog { -webkit-box-shadow: 0 2px 12px rgba(0,0,0,0.6); -moz-box-shadow: 0 2px 12px rgba(0,0,0,0.6); } .ui-dialog .ui-dialog-titlebar { padding: 0.7em 1em 0.6em 1em; position: relative; border: none; border-bottom: 1px solid #979797; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 14px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .8em; top: 55%; width: 16px; margin: -10px 0 0 0; padding: 0; height: 16px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0 -16px no-repeat; } .ui-dialog .ui-dialog-titlebar-close:hover span { background-position: -16px -16px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; border: 0; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* * jQuery UI Slider 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Slider#theming */ .ui-slider { position: relative; text-align: left; background: #d7d7d7; } .ui-slider { -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; } .ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: default; border: none; outline: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .ui-slider .ui-state-hover, .ui-slider .ui-state-active { background-position: 0 0; } .ui-slider .ui-slider-range { background: #a3cae0; position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } .ui-slider .ui-slider-range { -moz-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; -webkit-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; } .ui-slider-horizontal { height: 5px; } .ui-slider-horizontal .ui-slider-handle { top: -8px; margin-left: -13px; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: 5px; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -8px; margin-left: 0; margin-bottom: -13px; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* * jQuery UI Tabs 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Tabs#theming */ .ui-tabs { position: relative; zoom: 1; border: 0; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ .ui-tabs .ui-tabs-nav { margin: 0; padding: 0; background: transparent; border-width: 0 0 1px 0; } .ui-tabs .ui-tabs-nav { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; background: #fff; border-color: #B6B6B6; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; outline: none; } .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ .ui-tabs .ui-tabs-panel { display: block; border-width: 0 1px 1px 1px; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-panel { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-hide { display: none !important; } /* * jQuery UI Datepicker 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Datepicker#theming */ .ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; } .ui-datepicker { -moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5); -webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5); box-shadow: 0 4px 8px rgba(0,0,0,0.5); } .ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; } .ui-datepicker .ui-datepicker-prev { left:2px; } .ui-datepicker .ui-datepicker-next { right:2px; } .ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; } .ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; } .ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; } .ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } .ui-datepicker .ui-state-default { background: transparent; border-color: #FFF; } .ui-datepicker .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width:auto; } .ui-datepicker-multi .ui-datepicker-group { float:left; } .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } .ui-datepicker-row-break { clear:both; width:100%; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } .ui-datepicker-rtl .ui-datepicker-group { float:right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ .ui-datepicker-cover { display: none; /*sorry for IE5*/ display/**/: block; /*sorry for IE5*/ position: absolute; /*must have*/ z-index: -1; /*must have*/ filter: mask(); /*must have*/ top: -4px; /*must have*/ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ }/* * jQuery UI Progressbar 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Progressbar#theming */ .ui-progressbar { height: 0.5em; text-align: left; background: url(images/progress_bar.gif) 0 -14px repeat-x; } .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0 0 repeat-x; } ================================================ FILE: css/libraries/milkbox/milkbox.css ================================================ /* MILKBOX CSS */ #mbox-overlay{ background-color: #000; /* set the Milkbox overlay color // opacity: see the js options */ z-index:50000; cursor: pointer; } /* Main box */ #mbox-mainbox{ /* For default width and height, see the js options */ top:10%;/* overwritten in the js options to properly position the main box when activated in a scrolled window */ background-color: #fff;/* set the main box background color */ border: 5px solid #fff;/* set the main box border */ padding:5px;/* set the main box padding */ } /* Where the files actually are injected */ #mbox-filebox{ margin:0; padding:0; border:none; overflow:hidden; } #mbox-filebox img, #mbox-filebox iframe, #mbox-filebox swf{ border:none; } /*this class is for styling the inner file box*/ /*these styles will be visible after the first is loaded */ .mbox-filebox-decorations{ border:none; padding:0; } /* *** BOTTOM *** */ /* container for controls and caption */ #mbox-bottom { /* set text options */ font-family: Arial, Verdana, Geneva, Helvetica, sans-serif; font-size: 12px; color: #656565; line-height: 1.4em; text-align: left; padding-top:8px; margin:0; } /* controls/navigation */ /* be careful if you change buttons dimensions */ #mbox-controls{ /*background-color:#0f0;*/ float:right; width:27px; padding-top:3px; border-left:1px solid #9c9c9c;/* set nav border */ } #mbox-count{ overflow:hidden; padding-top:1px; float:right; text-align:right; font-size:9px; /* count font size */ } #mbox-close, #mbox-prev, #mbox-next, #mbox-playpause{ float:right; height:19px; } #mbox-prev,#mbox-next{ width:15px; } #mbox-prev{ background: url(prev.gif) no-repeat; }/* IMAGE: prev */ #mbox-next{ background: url(next.gif) no-repeat; }/* IMAGE: next */ #mbox-playpause{ width:13px; } #mbox-playpause{ background: url(play-pause.gif) no-repeat; }/* IMAGE: prev */ #mbox-close{ width:17px; background:url(close.gif) no-repeat;/* IMAGE: close */ } #mbox-prev:hover, #mbox-next:hover, #mbox-close:hover, #mbox-playpause:hover{ background-position:0 -22px; } /* description */ #mbox-caption{ /*background-color:#f00;*/ margin-right:27px; padding:0px 10px 0 0; font-weight: normal; text-align:justify; overflow-x: hidden; /* make sure the controls at the right remain accessible, even for small images with very large filenames: those would otherwise overlap those controls at right */ } .mbox-loading{ background:url(loading.gif) no-repeat center; }/* IMAGE: loading gif */ .mbox-reset{ clear:both; height:0; margin:0; padding:0; font-size:0; overflow:hidden; } ================================================ FILE: css/libraries/overlay.css ================================================ .distributionOL { /* must be initially hidden */ display:none; /* place overlay on top of other elements */ z-index:10000; /* styling */ background-color:#333; width:675px; min-height:200px; border:1px solid #666; /* CSS3 styling for latest browsers */ -moz-box-shadow:0 0 90px 5px #000; -webkit-box-shadow: 0 0 90px #000; } /* close button positioned on upper right corner */ .distributionOL .close { background-image:url(images/close.png); position:absolute; right:-15px; top:-15px; cursor:pointer; height:35px; width:35px; } /* styling for elements inside overlay */ .distributionOLDetails { position:absolute; top:15px; right:15px; font-size:11px; color:#fff; width:150px; } .details h3 { color:#aba; font-size:15px; margin:0 0 -10px 0; } ================================================ FILE: distributionDisplay.html ================================================ Distribution display

================================================ FILE: distributionTable.html ================================================ Distribution display Continuous
Discrete
Multivariate
Master
================================================ FILE: docs/.nojekyll ================================================ ================================================ FILE: docs/css/distTable.css ================================================ table.distribution { width:90%; border-top:1px solid #e5eff8; border-right:1px solid #e5eff8; margin:1em auto; border-collapse:collapse; } table.distribution caption { color: #9ba9b4; font-size:.94em; letter-spacing:.1em; margin:1em 0 0 0; padding:0; caption-side:top; text-align:center; } table.distribution tr.odd td { background:#f7fbff } table.distribution tr.odd .column1 { background:#f4f9fe; } table.distribution .column1 { background:#f9fcfe; } table.distribution td { /*color:#678197;*/ color: black; border-bottom:1px solid #e5eff8; border-left:1px solid #e5eff8; padding:.3em 1em; text-align:center; } table.distribution th { font-weight: bold; color: #678197; text-align:left; border-bottom: 1px solid #e5eff8; border-left:1px solid #e5eff8; padding:.3em 1em; } table.distribution thead th { background:#f4f9fe; text-align:center; font:bold 1.2em/2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif; color:#66a3d3 } table.distribution tfoot th { text-align:center; background:#f4f9fe; } table.distribution tfoot th strong { font:bold 1.2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif; margin:.5em .5em .5em 0; color:#66a3d3; } table.distribution tfoot th em { color:#f03b58; font-weight: bold; font-size: 1.1em; font-style: normal; } ================================================ FILE: docs/css/distributionDisplay.css ================================================ body{ background-color: white; } .partooltip { display:none; background-color: black; font-size:16px; padding:5px; color:#fff; opacity: .8; font-family: sans-serif; } .interfacecontainer { border-style: solid; border-width: 1px; border-color: gray; padding: 10px; margin: 10px; width: 600px; height: 320px; background-color: white; } #parametercontainer { width:250px; float: left; } .paramslider { width: 150px; float: left; } .paramindicator { width: 50px; float: left; } .paramlabel { width: 20px; float: left; } .clear { clear: both; } .paramsinglecontainer { width: 250px; height: 40px; float: left; position: relative; } .controlcontainer { width: 260px; float: left; } #plottypebuttonscontainer { width: 200px; } .plotcontainer { width: 310px; float: left; } ================================================ FILE: docs/css/libraries/jquery.aristo.css ================================================ /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .ui-helper-clearfix { display: inline-block; } /* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix { height:1%; } .ui-helper-clearfix { display:block; } /* end clearfix */ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Helvetica,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica,Arial,sans-serif; font-size: 1em; } .ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; } .ui-widget-content a { color: #4F4F4F; } .ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; } .ui-widget-header { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); } .ui-widget-header a { color: #4F4F4F; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; } .ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { outline: none; color: #1c4257; border: 1px solid #7096ab; background: url(images/bg_fallback.png) 0 -50px repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-state-default .ui-icon { background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0 no-repeat !important; } .ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background: url(images/icon_sprite.png) 0 0 no-repeat !important; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-off { background-position: -96px -144px; } .ui-icon-radio-on { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } /* Overlays */ .ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); } .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* * jQuery UI Resizable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* * jQuery UI Selectable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Selectable#theming */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* * jQuery UI Accordion 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Accordion#theming */ /* IE/Win - Fix animation bug - #4615 */ .ui-accordion { width: 100%; } .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } .ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-accordion .ui-accordion-li-fix { display: inline; } .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } .ui-accordion .ui-accordion-header a { display: block; font-size: 12px; font-weight: bold; padding: .5em .5em .5em .7em; } .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } .ui-accordion .ui-accordion-content-active { display: block; }/* * jQuery UI Autocomplete 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Autocomplete#theming */ .ui-autocomplete { position: absolute; cursor: default; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; -moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3); -webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3); } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* * jQuery UI Menu 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Menu#theming */ .ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float: left; } .ui-menu .ui-menu { margin-top: -3px; } .ui-menu .ui-menu-item { margin:0; padding: 0; zoom: 1; float: left; clear: left; width: 100%; } .ui-menu .ui-menu-item a { text-decoration:none; display:block; padding:.2em .4em; line-height:1.5; zoom:1; } .ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; background: #5f83b9; color: #FFFFFF; text-shadow: 0px 1px 1px #234386; border-color: #466086; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } /* * jQuery UI Button 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Button#theming */ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ .ui-button-icons-only { width: 3.4em; } button.ui-button-icons-only { width: 3.7em; } /*states*/ .ui-button.ui-state-hover { -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; } .ui-button.ui-state-focus { outline: none; color: #1c4257; border-color: #7096ab; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /*button text element */ .ui-button .ui-button-text { display: block; line-height: 1.4; font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } .ui-button-text-only .ui-button-text { padding: .4em 1em; } .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /*button icon element(s) */ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /*button sets*/ .ui-buttonset { margin-right: 7px; } .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } .ui-buttonset .ui-button.ui-state-active { color: #1c4257; border-color: #7096ab; } .ui-buttonset .ui-button.ui-state-active { background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* * jQuery UI Dialog 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Dialog#theming */ .ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; } .ui-dialog { -webkit-box-shadow: 0 2px 12px rgba(0,0,0,0.6); -moz-box-shadow: 0 2px 12px rgba(0,0,0,0.6); } .ui-dialog .ui-dialog-titlebar { padding: 0.7em 1em 0.6em 1em; position: relative; border: none; border-bottom: 1px solid #979797; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 14px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .8em; top: 55%; width: 16px; margin: -10px 0 0 0; padding: 0; height: 16px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0 -16px no-repeat; } .ui-dialog .ui-dialog-titlebar-close:hover span { background-position: -16px -16px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; border: 0; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* * jQuery UI Slider 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Slider#theming */ .ui-slider { position: relative; text-align: left; background: #d7d7d7; } .ui-slider { -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; } .ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: default; border: none; outline: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .ui-slider .ui-state-hover, .ui-slider .ui-state-active { background-position: 0 0; } .ui-slider .ui-slider-range { background: #a3cae0; position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } .ui-slider .ui-slider-range { -moz-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; -webkit-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; } .ui-slider-horizontal { height: 5px; } .ui-slider-horizontal .ui-slider-handle { top: -8px; margin-left: -13px; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: 5px; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -8px; margin-left: 0; margin-bottom: -13px; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* * jQuery UI Tabs 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Tabs#theming */ .ui-tabs { position: relative; zoom: 1; border: 0; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ .ui-tabs .ui-tabs-nav { margin: 0; padding: 0; background: transparent; border-width: 0 0 1px 0; } .ui-tabs .ui-tabs-nav { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; background: #fff; border-color: #B6B6B6; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; outline: none; } .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ .ui-tabs .ui-tabs-panel { display: block; border-width: 0 1px 1px 1px; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-panel { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-hide { display: none !important; } /* * jQuery UI Datepicker 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Datepicker#theming */ .ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; } .ui-datepicker { -moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5); -webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5); box-shadow: 0 4px 8px rgba(0,0,0,0.5); } .ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; } .ui-datepicker .ui-datepicker-prev { left:2px; } .ui-datepicker .ui-datepicker-next { right:2px; } .ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; } .ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; } .ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; } .ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } .ui-datepicker .ui-state-default { background: transparent; border-color: #FFF; } .ui-datepicker .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width:auto; } .ui-datepicker-multi .ui-datepicker-group { float:left; } .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } .ui-datepicker-row-break { clear:both; width:100%; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } .ui-datepicker-rtl .ui-datepicker-group { float:right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ .ui-datepicker-cover { display: none; /*sorry for IE5*/ display/**/: block; /*sorry for IE5*/ position: absolute; /*must have*/ z-index: -1; /*must have*/ filter: mask(); /*must have*/ top: -4px; /*must have*/ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ }/* * jQuery UI Progressbar 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Progressbar#theming */ .ui-progressbar { height: 0.5em; text-align: left; background: url(images/progress_bar.gif) 0 -14px repeat-x; } .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0 0 repeat-x; } ================================================ FILE: docs/css/libraries/jquery.css ================================================ /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .ui-helper-clearfix { display: inline-block; } /* required comment for clearfix to work in Opera \*/ * html .ui-helper-clearfix { height:1%; } .ui-helper-clearfix { display:block; } /* end clearfix */ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* * jQuery UI CSS Framework 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Helvetica,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica,Arial,sans-serif; font-size: 1em; } .ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; } .ui-widget-content a { color: #4F4F4F; } .ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; } .ui-widget-header { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); } .ui-widget-header a { color: #4F4F4F; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; } .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { background: url(images/bg_fallback.png) 0 0 repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(237,237,237)), color-stop(0, rgb(196,196,196)) ); background: -moz-linear-gradient( center top, rgb(237,237,237), rgb(196,196,196) ); -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; } .ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { outline: none; color: #1c4257; border: 1px solid #7096ab; background: url(images/bg_fallback.png) 0 -50px repeat-x; background: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } .ui-state-default .ui-icon { background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(images/icon_sprite.png) -16px 0 no-repeat !important; } .ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background: url(images/icon_sprite.png) 0 0 no-repeat !important; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-off { background-position: -96px -144px; } .ui-icon-radio-on { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } .ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } /* Overlays */ .ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); } .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* * jQuery UI Resizable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* * jQuery UI Selectable 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Selectable#theming */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* * jQuery UI Accordion 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Accordion#theming */ /* IE/Win - Fix animation bug - #4615 */ .ui-accordion { width: 100%; } .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } .ui-accordion .ui-accordion-header, .ui-accordion .ui-accordion-content { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-accordion .ui-accordion-li-fix { display: inline; } .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } .ui-accordion .ui-accordion-header a { display: block; font-size: 12px; font-weight: bold; padding: .5em .5em .5em .7em; } .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } .ui-accordion .ui-accordion-content-active { display: block; }/* * jQuery UI Autocomplete 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Autocomplete#theming */ .ui-autocomplete { position: absolute; cursor: default; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; -moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3); -webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3); } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* * jQuery UI Menu 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Menu#theming */ .ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float: left; } .ui-menu .ui-menu { margin-top: -3px; } .ui-menu .ui-menu-item { margin:0; padding: 0; zoom: 1; float: left; clear: left; width: 100%; } .ui-menu .ui-menu-item a { text-decoration:none; display:block; padding:.2em .4em; line-height:1.5; zoom:1; } .ui-menu .ui-menu-item a.ui-state-hover, .ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; background: #5f83b9; color: #FFFFFF; text-shadow: 0px 1px 1px #234386; border-color: #466086; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } /* * jQuery UI Button 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Button#theming */ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ .ui-button-icons-only { width: 3.4em; } button.ui-button-icons-only { width: 3.7em; } /*states*/ .ui-button.ui-state-hover { -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255,255,255,0.8) inset; } .ui-button.ui-state-focus { outline: none; color: #1c4257; border-color: #7096ab; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /*button text element */ .ui-button .ui-button-text { display: block; line-height: 1.4; font-size: 14px; font-weight: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); } .ui-button-text-only .ui-button-text { padding: .4em 1em; } .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /*button icon element(s) */ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /*button sets*/ .ui-buttonset { margin-right: 7px; } .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } .ui-buttonset .ui-button.ui-state-active { color: #1c4257; border-color: #7096ab; } .ui-buttonset .ui-button.ui-state-active { background-image: -webkit-gradient( linear, left bottom, left top, color-stop(1, rgb(185,224,245)), color-stop(0, rgb(146,189,214)) ); background-image: -moz-linear-gradient( center top, rgb(185,224,245), rgb(146,189,214) ); -webkit-box-shadow: none; -moz-box-shadow: none; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* * jQuery UI Dialog 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Dialog#theming */ .ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; } .ui-dialog { -webkit-box-shadow: 0 2px 12px rgba(0,0,0,0.6); -moz-box-shadow: 0 2px 12px rgba(0,0,0,0.6); } .ui-dialog .ui-dialog-titlebar { padding: 0.7em 1em 0.6em 1em; position: relative; border: none; border-bottom: 1px solid #979797; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; font-size: 14px; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .8em; top: 55%; width: 16px; margin: -10px 0 0 0; padding: 0; height: 16px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; background: url(images/icon_sprite.png) 0 -16px no-repeat; } .ui-dialog .ui-dialog-titlebar-close:hover span { background-position: -16px -16px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; border: 0; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* * jQuery UI Slider 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Slider#theming */ .ui-slider { position: relative; text-align: left; background: #d7d7d7; } .ui-slider { -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5) inset; } .ui-slider .ui-slider-handle { background: url(images/slider_handles.png) 0px -23px no-repeat; position: absolute; z-index: 2; width: 23px; height: 23px; cursor: default; border: none; outline: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .ui-slider .ui-state-hover, .ui-slider .ui-state-active { background-position: 0 0; } .ui-slider .ui-slider-range { background: #a3cae0; position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } .ui-slider .ui-slider-range { -moz-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; -webkit-box-shadow: 0 1px 2px rgba(17,35,45,0.6) inset; } .ui-slider-horizontal { height: 5px; } .ui-slider-horizontal .ui-slider-handle { top: -8px; margin-left: -13px; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: 5px; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -8px; margin-left: 0; margin-bottom: -13px; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* * jQuery UI Tabs 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Tabs#theming */ .ui-tabs { position: relative; zoom: 1; border: 0; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ .ui-tabs .ui-tabs-nav { margin: 0; padding: 0; background: transparent; border-width: 0 0 1px 0; } .ui-tabs .ui-tabs-nav { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; font-size: 12px; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,0.5); } .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; background: #fff; border-color: #B6B6B6; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; outline: none; } .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ .ui-tabs .ui-tabs-panel { display: block; border-width: 0 1px 1px 1px; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-panel { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-tabs .ui-tabs-hide { display: none !important; } /* * jQuery UI Datepicker 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Datepicker#theming */ .ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; } .ui-datepicker { -moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5); -webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5); box-shadow: 0 4px 8px rgba(0,0,0,0.5); } .ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; } .ui-datepicker .ui-datepicker-prev { left:2px; } .ui-datepicker .ui-datepicker-next { right:2px; } .ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; } .ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; } .ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; } .ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(images/icon_sprite.png) no-repeat; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); } .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } .ui-datepicker select.ui-datepicker-month-year {width: 100%;} .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 49%;} .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } .ui-datepicker .ui-state-default { background: transparent; border-color: #FFF; } .ui-datepicker .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width:auto; } .ui-datepicker-multi .ui-datepicker-group { float:left; } .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } .ui-datepicker-row-break { clear:both; width:100%; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } .ui-datepicker-rtl .ui-datepicker-group { float:right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ .ui-datepicker-cover { display: none; /*sorry for IE5*/ display/**/: block; /*sorry for IE5*/ position: absolute; /*must have*/ z-index: -1; /*must have*/ filter: mask(); /*must have*/ top: -4px; /*must have*/ left: -4px; /*must have*/ width: 200px; /*must have*/ height: 200px; /*must have*/ }/* * jQuery UI Progressbar 1.8.7 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Progressbar#theming */ .ui-progressbar { height: 0.5em; text-align: left; background: url(images/progress_bar.gif) 0 -14px repeat-x; } .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; background: url(images/progress_bar.gif) 0 0 repeat-x; } ================================================ FILE: docs/css/libraries/milkbox/milkbox.css ================================================ /* MILKBOX CSS */ #mbox-overlay{ background-color: #000; /* set the Milkbox overlay color // opacity: see the js options */ z-index:50000; cursor: pointer; } /* Main box */ #mbox-mainbox{ /* For default width and height, see the js options */ top:10%;/* overwritten in the js options to properly position the main box when activated in a scrolled window */ background-color: #fff;/* set the main box background color */ border: 5px solid #fff;/* set the main box border */ padding:5px;/* set the main box padding */ } /* Where the files actually are injected */ #mbox-filebox{ margin:0; padding:0; border:none; overflow:hidden; } #mbox-filebox img, #mbox-filebox iframe, #mbox-filebox swf{ border:none; } /*this class is for styling the inner file box*/ /*these styles will be visible after the first is loaded */ .mbox-filebox-decorations{ border:none; padding:0; } /* *** BOTTOM *** */ /* container for controls and caption */ #mbox-bottom { /* set text options */ font-family: Arial, Verdana, Geneva, Helvetica, sans-serif; font-size: 12px; color: #656565; line-height: 1.4em; text-align: left; padding-top:8px; margin:0; } /* controls/navigation */ /* be careful if you change buttons dimensions */ #mbox-controls{ /*background-color:#0f0;*/ float:right; width:27px; padding-top:3px; border-left:1px solid #9c9c9c;/* set nav border */ } #mbox-count{ overflow:hidden; padding-top:1px; float:right; text-align:right; font-size:9px; /* count font size */ } #mbox-close, #mbox-prev, #mbox-next, #mbox-playpause{ float:right; height:19px; } #mbox-prev,#mbox-next{ width:15px; } #mbox-prev{ background: url(prev.gif) no-repeat; }/* IMAGE: prev */ #mbox-next{ background: url(next.gif) no-repeat; }/* IMAGE: next */ #mbox-playpause{ width:13px; } #mbox-playpause{ background: url(play-pause.gif) no-repeat; }/* IMAGE: prev */ #mbox-close{ width:17px; background:url(close.gif) no-repeat;/* IMAGE: close */ } #mbox-prev:hover, #mbox-next:hover, #mbox-close:hover, #mbox-playpause:hover{ background-position:0 -22px; } /* description */ #mbox-caption{ /*background-color:#f00;*/ margin-right:27px; padding:0px 10px 0 0; font-weight: normal; text-align:justify; overflow-x: hidden; /* make sure the controls at the right remain accessible, even for small images with very large filenames: those would otherwise overlap those controls at right */ } .mbox-loading{ background:url(loading.gif) no-repeat center; }/* IMAGE: loading gif */ .mbox-reset{ clear:both; height:0; margin:0; padding:0; font-size:0; overflow:hidden; } ================================================ FILE: docs/css/libraries/overlay.css ================================================ .distributionOL { /* must be initially hidden */ display:none; /* place overlay on top of other elements */ z-index:10000; /* styling */ background-color:#333; width:675px; min-height:200px; border:1px solid #666; /* CSS3 styling for latest browsers */ -moz-box-shadow:0 0 90px 5px #000; -webkit-box-shadow: 0 0 90px #000; } /* close button positioned on upper right corner */ .distributionOL .close { background-image:url(images/close.png); position:absolute; right:-15px; top:-15px; cursor:pointer; height:35px; width:35px; } /* styling for elements inside overlay */ .distributionOLDetails { position:absolute; top:15px; right:15px; font-size:11px; color:#fff; width:150px; } .details h3 { color:#aba; font-size:15px; margin:0 0 -10px 0; } ================================================ FILE: docs/distributionDisplay.html ================================================ Distribution display

================================================ FILE: docs/index.html ================================================ Distribution display Continuous
Discrete
Multivariate
Master
================================================ FILE: docs/js/distributionDisplay.js ================================================ // Universal plotting options var plotPoints = 200; var plotOptions = []; var sliderPoints = 101; var roundDigits = 3; var updateTime = 100; var areaFillColor="rgba(0,200,0,.3)"; plotOptions["pdf"] = { yaxis: { min:0 }, colors: ["rgb(0,200,0)", "rgb(200,0,0)","rgb(150,150,150)","rgb(150,150,150)", "rgb(0,200,0)"], series: { points: { fillColor: "rgb(0,200,0)"} }, grid: { hoverable: true, clickable: true }, crosshair: { mode: "x" } }; plotOptions["cdf"] = { yaxis: { min:0, max: 1.001}, colors: ["rgb(0,0,0)", "rgb(200,0,0)", "rgb(150,150,150)","rgb(150,150,150)", "rgb(0,200,0)"], series: { points: { fillColor: "rgb(0,200,0)"} }, grid: { hoverable: true, clickable: false } }; var plot; var dist; var distName; var ptznNum; var starts; var rangesHi; var rangesLo; var plotxrng; var distributions = []; function getShaded(plot,pos, limits, cumdens, args){ var data = plot.getData(); var x1 = data[2]; var x2 = data[3]; if(x2.data.length!=0){ x2 = x2.data[0][0]; x1 = x1.data[0][0]; var minx = Math.min(x1,x2); var maxx = Math.max(x1,x2); return cumdens.apply(null, [maxx].concat(args) ) - cumdens.apply(null, [minx].concat(args) ); }else if(x1.data.length!=0){ x1 = x1.data[0][0]; return cumdens.apply(null, [x1].concat(args) ); }else{ return cumdens.apply(null, [pos.x].concat(args) ); x2 = limits[0]; x1 = pos.x; } } function showTooltip(x, y, contents) { $('
' + contents + '
').css( { position: 'absolute', display: 'none', top: y - 30, left: x + 10, border: '1px solid #fdd', padding: '2px', 'background-color': '#fee', opacity: 0.80, 'font-family': 'sans-serif' }).appendTo("body").fadeIn(0); } function makeSortedTable(type, caption){ var n = distributions.length; var list = []; var i=0; for(d in distributions){ if (distributions.hasOwnProperty(d)) { if(distributions[d].type == type || type == "master") list.push(d); } } list.sort(); document.id(type+'_distributionsdiv').grab( new Element("table",{ id: type+"_distributiontable", 'class':"distribution" }) ); var cap = new Element('caption', { html: caption }); document.id(type+'_distributiontable').grab(cap); refTableHeaderRow(type); var body = new Element("tbody",{ id: type+"_distributiontablebody" }); document.id(type+'_distributiontable').grab(body); if(list.length==0) return; for(;i0;}, { mean: { fun: function(mu, sig2) { return jStat.normal.mean(mu, Math.sqrt(sig2)); }, display: "\\mu" }, variance: { fun: function(mu, sig2) { return jStat.normal.variance(mu, Math.sqrt(sig2)); }, display: "\\sigma^2" }, median: { fun: function(mu, sig2) { return jStat.normal.median(mu, Math.sqrt(sig2)); }, display: "\\mu" }, mode: { fun: function(mu, sig2) { return jStat.normal.mode(mu, Math.sqrt(sig2)); }, display: "\\mu" } }, null ); var normalMeanPrecision = new distributionParametrization( "mean/precision", [normalMean, normalPrecision], function(mu,tau) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(mu,tau) { return [-5,5]; }, "(-\\infty,\\infty)", function(x,mu,tau){ return jStat.normal.pdf(x,mu,Math.sqrt(1/tau)); }, "\\left(\\frac{\\tau}{2\\pi}\\right)^{\\frac{1}{2}}\\exp\\left\\{-\\frac{\\tau}{2}\\left(x-\\mu\\right)^2\\right\\}", function(x,mu,tau){ return jStat.normal.cdf(x,mu,Math.sqrt(1/tau)); }, "normalgamma", function(mu,tau){ return tau>0;}, { mean: { fun: function(mu, tau) { return jStat.normal.mean(mu, 1/Math.sqrt(tau)); }, display: "\\mu" }, variance: { fun: function(mu, tau) { return jStat.normal.variance(mu, 1/Math.sqrt(tau)); }, display: "\\frac{1}{\\tau}" }, median: { fun: function(mu, tau) { return jStat.normal.median(mu, 1/Math.sqrt(tau)); }, display: "\\mu" }, mode: { fun: function(mu, tau) { return jStat.normal.mode(mu, 1/Math.sqrt(tau)); }, display: "\\mu" } }, null ); var normalMeanStandardDeviation = new distributionParametrization( "mean/standard deviation", [normalMean, normalStandardDeviation], function(mu,sig2) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(mu,sig2) { return [-5,5]; }, "(-\\infty,\\infty)", function(x, mu, sig) { return jStat.normal.pdf(x, mu, sig); }, "\\left(2\\pi\\sigma^2\\right)^{-\\frac{1}{2}}\\exp\\left\\{-\\frac{1}{2\\sigma^2}\\left(x-\\mu\\right)^2\\right\\}", function(x, mu, sig) { return jStat.normal.cdf(x, mu, sig); }, null, function(mu,sig){ return sig>0;}, { mean: { fun: function(mu, sig) { return jStat.normal.mean(mu, sig); }, display: "\\mu" }, variance: { fun: function(mu, sig) { return jStat.normal.variance(mu, sig); }, display: "\\sigma" }, median: { fun: function(mu, sig) { return jStat.normal.median(mu, sig); }, display: "\\mu" }, mode: { fun: function(mu, sig) { return jStat.normal.mode(mu, sig); }, display: "\\mu" } }, null ); distributions["normal"] = new distribution( "normal", "Normal/Gaussian", "continuous", [ normalMeanVariance, normalMeanPrecision, normalMeanStandardDeviation], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Normal_distribution" } ); /*****/ // Gamma distribution /*****/ var gammaShape = new positiveParameter( "k", "k", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var gammaScale = new positiveParameter( "s", "s", function() { return [0.1,10]; }, true, 1, "continuous", "inversegamma", "scale" ); var gammaRate = new positiveParameter( "theta", "\\theta", function() { return [0.1,10]; }, true, 1, "continuous", "gamma", "rate" ); var gammaShapeScale = new distributionParametrization( "shape/scale", [gammaShape, gammaScale], function(k,s) { return [0,Number.POSITIVE_INFINITY]; }, function(k,s) { return [.01,10]; }, "(0,\\infty)", jStat.gamma.pdf, "\\frac{1}{\\Gamma(k)s^{k}} x^{k - 1} \\exp\\left\\{-\\frac{x}{s}\\right\\}", jStat.gamma.cdf, null, function(k,s){ return s>0 && k>0;}, { mean: { fun: jStat.gamma.mean, display: "ks" }, variance: { fun: jStat.gamma.variance, display: "ks^2" }, mode: { fun: jStat.gamma.mode, display: "(k-1)s, k\\geq 1" } }, null ); var gammaShapeRate = new distributionParametrization( "shape/rate", [gammaShape, gammaRate], function(k,theta) { return [0,Number.POSITIVE_INFINITY]; }, function(k,theta) { return [.01,10]; }, "(0,\\infty)", function(x, k, theta) { return jStat.gamma.pdf(x, k, 1/theta); }, "\\frac{\\theta^k}{\\Gamma(k)} x^{k - 1} \\exp\\left\\{-\\theta x\\right\\}", function(x, k, theta) { return jStat.gamma.cdf(x, k, 1/theta); }, null, function(k,theta){ return theta>0 && k>0;}, { mean: { fun: function(k,theta) { return jStat.gamma.mean(k, 1/theta); }, display: "\\frac{k}{\\theta}" }, variance: { fun: function(k,theta) { return jStat.gamma.variance(k, 1/theta); }, display: "\\frac{k}{\\theta^2}" }, mode: { fun: function(k,theta) { return jStat.gamma.mode(k, 1/theta); }, display: "\\frac{k-1}{\\theta}, k\\geq 1" } }, null ); distributions["gamma"] = new distribution( "gamma", "Gamma", "continuous", [ gammaShapeScale, gammaShapeRate ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Gamma_distribution" } ); /*****/ // Inverse Gamma distribution /*****/ var invgammaShape = new positiveParameter( "alpha", "\\alpha", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var invgammaScale = new positiveParameter( "beta", "\\beta", function() { return [0.1,10]; }, true, 1, "continuous", "gamma", "scale" ); var invgammaShapeScale = new distributionParametrization( "shape/scale", [invgammaShape, invgammaScale], function(alpha,beta) { return [0,Number.POSITIVE_INFINITY]; }, function(alpha,beta) { return [.01,15]; }, "(0,\\infty)", jStat.invgamma.pdf, "\\frac{\\beta^{\\alpha}}{\\Gamma(\\alpha)} x^{-\\alpha - 1} \\exp\\left\\{-\\frac{\\beta}{x}\\right\\}", jStat.invgamma.cdf, null, function(alpha,beta){ return alpha>0 && beta>0;}, { mean: { fun: jStat.invgamma.mean, display: "\\frac{\\beta}{\\alpha-1}, \\alpha>1" }, variance: { fun: jStat.invgamma.variance, display: "\\frac{\\beta^2}{(\\alpha-1)^2(\\alpha-2)}, \\alpha>2" }, mode: { fun: jStat.invgamma.mode, display: "\\frac{\\beta}{\\alpha+1}" } }, null ); distributions["invgamma"] = new distribution( "invgamma", "Inverse Gamma", "continuous", [ invgammaShapeScale ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Inverse-gamma_distribution" } ); /*****/ // Central F distribution /*****/ var Fdf1 = new positiveParameter( "nu1", "\\nu_1", function() { return [1,40]; }, false, 5, "discrete", null, "numerator df" ); var Fdf2 = new positiveParameter( "nu2", "\\nu_2", function() { return [1,40]; }, false, 5, "discrete", null, "denominator df" ); var centralFpar = new distributionParametrization( "central", [Fdf1, Fdf2], function(nu1,nu2) { return [0,Number.POSITIVE_INFINITY]; }, function(nu1,nu2) { return [.01,10]; }, "(0,\\infty)", jStat.centralF.pdf, "\\frac{1}{x\\mbox{Be}\\left(\\frac{\\nu_1}{2},\\frac{\\nu_2}{2}\\right)}\\sqrt{\\frac{(\\nu_1x)^{\\nu_1}\\nu_2^{\\nu_2}}{(\\nu_1x + \\nu_2)^{\\nu_1+\\nu_2}}}", jStat.centralF.cdf, null, function(nu1,nu2){ return nu1>0 && nu2>0;}, { mean: { fun: jStat.centralF.mean, display: "\\frac{\\nu_2}{\\nu_2-2}, \\nu_2>2" }, variance: { fun: jStat.centralF.variance, display: "\\frac{2\\nu_2^2(\\nu_1 + \\nu_2-2)}{\\nu_1(\\nu_2-2)^2(\\nu_2-4)}, \\nu_2>4" }, mode: { fun: jStat.centralF.mode, display: "\\frac{\\nu_2(\\nu_1 - 2)}{\\nu_1(\\nu_2+2)}, \\nu_1<2" } }, null ); distributions["centralF"] = new distribution( "centralF", "central F", "continuous", [ centralFpar ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/F_distribution" } ); /*****/ // Cauchy distribution /*****/ var cauchyLocation= new unboundedParameter( "mu", "\\mu", function() { return [-8,8];}, false, 0, "continuous", null, "location" ); var cauchyScale = new positiveParameter( "sigma", "\\sigma", function() { return [0.1,10];}, true, 1, "continuous", null, "scale" ); var cauchyLocationScale = new distributionParametrization( "location/scale", [cauchyLocation, cauchyScale], function(mu,sig) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(mu,sig) { return [-8,8]; }, "(-\\infty,\\infty)", jStat.cauchy.pdf, "\\frac{1}{\\pi\\sigma\\left(1+\\left(\\frac{x-\\mu}{\\sigma}\\right)^2\\right)}", jStat.cauchy.cdf, null, function(mu,sig){ return sig>0;}, { mean: { fun: function(mu, sig) { return undefined; }, display: "undefined" }, variance: { fun: function(mu, sig) { return undefined; }, display: "undefined" }, median: { fun: jStat.cauchy.median, display: "\\mu" }, mode: { fun: jStat.cauchy.mode, display: "\\mu" } }, null ); distributions["cauchy"] = new distribution( "cauchy", "Cauchy", "continuous", [ cauchyLocationScale ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Cauchy_distribution" } ); /*****/ // t distribution /*****/ var tnu = new positiveParameter( "nu", "\\nu", function() { return [1,50]; }, false, 5, "discrete", null, "degrees of freedom" ); var tLocation= new unboundedParameter( "mu", "\\mu", function() { return [-8,8];}, false, 0, "continuous", null, "location" ); var tScale = new positiveParameter( "sigma", "\\sigma", function() { return [0.1,10];}, true, 1, "continuous", null, "scale" ); var studenttLocationScale = new distributionParametrization( "location/scale", [tnu, tLocation, tScale], function(nu,mu,sig) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(nu,mu,sig) { return [-10,10]; }, "(-\\infty,\\infty)", function(x,nu,mu,sig){ return jStat.studentt.pdf( (x - mu)/sig, nu)/sig; }, "\\frac{\\Gamma\\left(\\frac{\\nu+1}{2}\\right)}{\\sqrt{\\pi\\nu\\sigma^2}\\Gamma\\left(\\frac{\\nu}{2}\\right)}\\left(1+\\frac{(x-\\mu)^2}{\\nu\\sigma^2}\\right)^{-\\frac{\\nu+1}{2}}", function(x,nu,mu,sig){ return jStat.studentt.cdf( (x - mu)/sig, nu); }, null, function(nu,mu,sig){ return sig > 0 && nu > 0;}, { mean: { fun: function(nu, mu, sig) { return nu>1?mu:undefined; }, display: "\\mu, \\nu>1" }, variance: { fun: function(nu, mu, sig) { return nu>2 ? nu/(nu-2) : undefined; }, display: "\\frac{\\nu}{\\nu-2}\\sigma^2, \\nu>2" }, median: { fun: function(nu, mu, sig) { return mu; }, display: "\\mu" }, mode: { fun: function(nu, mu, sig) { return mu; }, display: "\\mu" } }, null ); distributions["studentt"] = new distribution( "studentt", "Student's t", "continuous", [ studenttLocationScale ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Student's_t-distribution" } ); /*****/ // Chi-squared distribution /*****/ var chisqnu = new positiveParameter( "nu", "\\nu", function() { return [1,10]; }, false, 3, "discrete", null, "degrees of freedom" ); var chisqScale = new positiveParameter( "sigma", "\\sigma", function() { return [0.1,10];}, true, 1, "continuous", null, "scale" ); var chisqScalePar = new distributionParametrization( "scaled", [chisqnu, chisqScale], function(nu,sig) { return [0,Number.POSITIVE_INFINITY]; }, function(nu,sig) { return [0,40]; }, "[0,\\infty)", function(x,nu,sig){ return jStat.chisquare.pdf( x/sig, nu)/sig; }, "\\frac{1}{(2\\sigma)^\\frac{\\nu}{2}\\Gamma\\left(\\frac{\\nu}{2}\\right)}x^{\\frac{\\nu}{2}-1}\\exp\\left\\{-\\frac{x}{2\\sigma}\\right\\}", function(x,nu,sig){ return jStat.chisquare.cdf( x/sig, nu); }, null, function(nu,sig){ return sig > 0 && nu > 0;}, { mean: { fun: function(nu, sig) { return nu*sig; }, display: "\\sigma\\nu" }, variance: { fun: function(nu, sig) { return 2*nu*sig*sig; }, display: "2\\nu\\sigma^2" } }, null ); distributions["chisquare"] = new distribution( "chisquare", "Chi-squared", "continuous", [ chisqScalePar ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Chi-squared_distribution" } ); /*****/ // Beta distribution /*****/ var betaA = new positiveParameter( "a", "a", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var betaB = new positiveParameter( "b", "b", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var betaAB = new distributionParametrization( "a/b", [betaA, betaB], function(a,b) { return [0,1]; }, function(a,b) { return [0,1]; }, "(0,1)", jStat.beta.pdf, "\\frac{1}{\\mbox{Be}(a,b)} x^{a-1} (1-x)^{b-1}", jStat.beta.cdf, null, function(a,b){ return a>0 && b>0;}, { mean: { fun: jStat.beta.mean, display: "\\frac{a}{a+b}" }, variance: { fun: jStat.beta.variance, display: "\\frac{ab}{(a+b)^2(a+b+1)}" }, median: { fun: jStat.beta.median, display: "no closed form" }, mode: { fun: jStat.mode.median, display: "\\frac{a-1}{a+b-2}, a>1, b>1" } }, null ); distributions["beta"] = new distribution( "beta", "Beta", "continuous", [ betaAB ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Beta_distribution" } ); /*****/ // Log Normal distribution /*****/ var lognormalMean = new unboundedParameter( "mu", "\\mu", function() { return [-2,2]; }, false, 1, "continuous", "normal", "log-scale" ); var lognormalVariance = new positiveParameter( "sigma2", "\\sigma^2", function() { return [.1,10]; }, true, 1, "continuous", "inversegamma", "shape" ); var lognormalMeanVariance = new distributionParametrization( "mu/sigma2", [lognormalMean, lognormalVariance], function(mu,sig2) { return [0,Number.POSITIVE_INFINITY]; }, function(mu,sig2) { return [0,15]; }, "(0,\\infty)", function(x, mu, sig2) { return jStat.lognormal.pdf(x, mu,Math.sqrt(sig2)); }, "\\left(\\pi\\sigma^2x^2\\right)^{-\\frac{1}{2}}\\exp\\left\\{-\\frac{1}{2\\sigma^2}\\left(\\log(x)-\\mu\\right)^2\\right\\}", function(x, mu, sig2) { return jStat.lognormal.cdf(x, mu,Math.sqrt(sig2)); }, "normalinversegamma", function(mu,sig2){ return sig2>0;}, { mean: { fun: function(mu, sig2) { return jStat.lognormal.mean(mu, Math.sqrt(sig2)); }, display: "\\exp\\left\\{\\mu + \\frac{\\sigma^2}{2}\\right\\}" }, variance: { fun: function(mu, sig2) { return jStat.lognormal.variance(mu, Math.sqrt(sig2)); }, display: "\\left(e^{\\sigma^2}-1\\right)\\exp\\left\\{2\\mu + \\sigma^2\\right\\}" }, median: { fun: function(mu, sig2) { return jStat.lognormal.median(mu, Math.sqrt(sig2)); }, display: "e^\\mu" }, mode: { fun: function(mu, sig2) { return jStat.lognormal.mode(mu, Math.sqrt(sig2)); }, display: "\\exp\\left\\{\\mu-\\sigma^2\\right\\}" } }, null ); distributions["lognormal"] = new distribution( "lognormal", "Log-normal", "continuous", [ lognormalMeanVariance ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Log-normal_distribution" } ); /*****/ // Weibull distribution /*****/ var weibullShift = new unboundedParameter( "x0", "x_0", function() { return [-3,5]; }, false, 0, "continuous", null, "shift" ); var weibullShape = new positiveParameter( "k", "k", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var weibullScale = new positiveParameter( "s", "s", function() { return [0.1,10]; }, true, 1, "continuous", "inversegamma", "scale" ); var weibullRate = new positiveParameter( "theta", "\\theta", function() { return [0.1,10]; }, true, 1, "continuous", "gamma", "rate" ); var weibullShiftShapeScale = new distributionParametrization( "shift/scale/shape", [weibullShift,weibullScale, weibullShape], function(x0,s,k) { return [x0,Number.POSITIVE_INFINITY]; }, function(x0,s,k) { return [x0,x0 + 10]; }, "(x_0,\\infty)", function(x,x0,s,k) { return jStat.weibull.pdf(x - x0, s, k); }, "\\frac{k}{s}\\left(\\frac{x-x_0}{s}\\right)^{k-1} \\exp\\left\\{-\\left(\\frac{x-x_0}{s}\\right)^k\\right\\}", function(x,x0,s,k) { return jStat.weibull.cdf(x - x0, s, k); }, null, function(x0,s,k){ return s>0 && k>0;}, { mean: { fun: function(x0,s,k) { return jStat.weibull.mean(s,k) + x0; }, display: "x_0 + s\\Gamma\\left(1+\\frac{1}{k}\\right)" }, variance: { fun: function(x0,s,k) { return jStat.weibull.variance(s,k); }, display: "s^2\\Gamma\\left(1+\\frac{2}{k}\\right) - \\left(x_0 + s\\Gamma\\left(1+\\frac{1}{k}\\right)\\right)^2" }, mode: { fun: function(x0,s,k) { return jStat.weibull.mode(s,k) + x0; }, display: "s\\left(\\frac{k-1}{k}\\right)^{\\frac{1}{k}}, k > 1" }, median: { fun: function(x0,s,k) { return jStat.weibull.median(s,k) + x0; }, display: "s\\left(\\log(2)\\right)^{\\frac{1}{k}}" } }, null ); var weibullShiftShapeRate = new distributionParametrization( "shift/rate/shape", [weibullShift,weibullRate, weibullShape], function(x0,theta,k) { return [x0,Number.POSITIVE_INFINITY]; }, function(x0,theta,k) { return [x0,x0 + 10]; }, "(x_0,\\infty)", function(x,x0,theta,k) { return jStat.weibull.pdf(x - x0, 1/theta, k); }, "k\\theta\\left(x\\theta\\right)^{k-1} \\exp\\left\\{-\\left(\\theta(x-x_0)\\right)^k\\right\\}", function(x,x0,theta,k) { return jStat.weibull.cdf(x - x0, 1/theta, k); }, null, function(x0,theta,k){ return theta>0 && k>0;}, { mean: { fun: function(x0,theta,k) { return jStat.weibull.mean(1/theta,k) + x0; }, display: "x_0 + \\frac{1}{\\theta}\\Gamma\\left(1+\\frac{1}{k}\\right)" }, variance: { fun: function(x0,theta,k) { return jStat.weibull.variance(1/theta,k); }, display: "\\frac{1}{\\theta^2}\\Gamma\\left(1+\\frac{2}{k}\\right) - \\left(x_0 + \\frac{1}{\\theta}\\Gamma\\left(1+\\frac{1}{k}\\right)\\right)^2" }, mode: { fun: function(x0,theta,k) { return jStat.weibull.mode(1/theta,k) + x0; }, display: "\\frac{1}{\\theta}\\left(\\frac{k-1}{k}\\right)^{\\frac{1}{k}}, k > 1" }, median: { fun: function(x0,theta,k) { return jStat.weibull.median(1/theta,k) + x0; }, display: "\\frac{1}{\\theta}\\left(\\log(2)\\right)^{\\frac{1}{k}}" } }, null ); distributions["weibull"] = new distribution( "weibull", "three-parameter Weibull", "continuous", [ weibullShiftShapeScale, weibullShiftShapeRate ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Weibull_distribution" } ); ////*************** // DISCRETE ////*************** /*****/ // Binomial distribution /*****/ var binomialN = new positiveParameter( "N", "N", function() { return [1,100]; }, false, 20, "discrete", null, "sample size" ); var binomialp = new distributionParameter( "p", "p", function() { return [0,1]; }, function() { return [0,1]; }, false, .5, "continuous", "beta", "probability of success" ); var binomialNp = new distributionParametrization( "probability", [binomialN, binomialp], function(N, p) { return [0,N]; }, function(N, p) { return [0,N]; }, "[0,N]", jStat.binomial.pdf, "\\binom{N}{x} p^x (1-p)^{N-x}", jStat.binomial.cdf, "beta", function(N,p){ return N>0 && is_int(N) && p<1 && p>0;}, { mean: { fun: jStat.binomial.mean, display: "Np" }, variance: { fun: jStat.binomial.variance, display: "Np(1-p)" } }, null ); distributions["binomial"] = new distribution( "binomial", "Binomial", "discrete", [ binomialNp ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Binomial_distribution" } ); /*****/ // Poisson distribution /*****/ var poissonRate = new positiveParameter( "lambda", "\\lambda", function() { return [1/10,10]; }, true, 1, "continuous", null, "rate" ); var poissonRate = new distributionParametrization( "rate", [ poissonRate ], function(lambda) { return [0,Number.POSITIVE_INFINITY]; }, function(lambda) { return [0,25]; }, "[0,\\infty)", jStat.poisson.pdf, "\\frac{\\lambda^x}{x!} \\exp\\left\\{-\\lambda\\right\\}", jStat.poisson.cdf, "gamma", function(lambda){ return lambda>0;}, { mean: { fun: jStat.poisson.mean, display: "\\lambda" }, variance: { fun: jStat.poisson.variance, display: "\\lambda" } }, null ); distributions["poisson"] = new distribution( "poisson", "Poisson", "discrete", [ poissonRate ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Poisson_distribution" } ); /*****/ // Negative Binomial distribution /*****/ var negbinomialr = new positiveParameter( "r", "r", function() { return [1,50]; }, false, 20, "discrete", null, "number of successes required" ); var negbinomialp = new distributionParameter( "p", "p", function() { return [0,1]; }, function() { return [0,1]; }, false, .2, "continuous", "beta", "probability of failure" ); var negbinomialrp = new distributionParametrization( "probability", [negbinomialr, negbinomialp], function(r, p) { return [0,Number.POSITIVE_INFINITY]; }, function(r, p) { return [0,50]; }, "[0,\\infty)", jStat.negbin.pdf, "\\binom{x+r-1}{x} p^x (1-p)^{r}", jStat.negbin.cdf, "beta", function(r,p){ return r>0 && is_int(r) && p<1 && p>0;}, { mean: { fun: function(r,p){ return p*r/(1-p);}, display: "\\frac{rp}{1-p}" }, variance: { fun: function(r,p){ return p*r/(1-p)^2;}, display: "\\frac{rp}{(1-p)^2}" } }, null ); distributions["negativebinomial"] = new distribution( "negativebinomial", "Negative binomial", "discrete", [ negbinomialrp ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Negative_binomial_distribution" } ); ================================================ FILE: docs/js/distributionObjects.js ================================================ /////////// // Distribution stuff /////////// function distributionParameter(name, label, range, interactRange, interactLog, interactStart, type, conjugate, note){ this.name = name; this.label = label; this.range = range; this.interactRange = interactRange; this.interactLog = interactLog; this.interactStart = interactStart; this.type = type; this.conjugate = conjugate; this.note = note; } function createElement(fstart,frangeLo,frangeHi){ var limits = this.interactRange.apply(null,arguments); var start = this.interactStart; if( frangeLo != null && frangeHi !=null ){ limits = [frangeLo,frangeHi]; } if(fstart != null && fstart>limits[0] && fstart', { id: "params_" + name + "_container", title: this.note }).appendTo('#parametercontainer'); $("#params_" + name + "_container").addClass("paramsinglecontainer"); $('
', { id: "params_label_" + name, text: " \\("+this.label+"\\) " }).appendTo('#' + "params_" + name + "_container"); $("#params_label_" + name ).addClass("paramlabel"); $('
', { id: "params_slider_" + name }).appendTo('#' + "params_" + name + "_container"); $("#params_slider_" + name ).addClass("paramslider"); $('', { id: "params_indicator_" + name, value: start }).appendTo('#'+"params_" + name + "_container"); $("#params_indicator_" + name ).addClass("paramindicator"); $('
', { id: "params_end_" + name }).appendTo('#parametercontainer'); $("#params_end_" + name ).addClass("clear"); $("#params_" + name + "_container").tooltip({tipClass: "partooltip"}); switch(this.type){ case "discrete": var sliderMin = limits[0]; var sliderMax = limits[1]; var sliderStart = start; break; case "continuous": var sliderMin = 0; var sliderMax = sliderPoints-1; if(log){ var sliderStart = sliderMax * (Math.log(start) - Math.log(limits[0]))/(Math.log(limits[1]) - Math.log(limits[0])); }else{ var sliderStart = sliderMax * (start - limits[0])/(limits[1] - limits[0]); } break; } $( "#params_slider_" + name ).slider({ min: sliderMin, max: sliderMax, value: sliderStart }); $( "#params_slider_" + name ).slider().bind('slide',function(event,ui){ slide(name,ui); } ); } distributionParameter.prototype.createElement = createElement; function unboundedParameter(name, label, interactRange, interactLog, interactStart, type, conjugate, note){ var range = function() { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }; distributionParameter.call(this, name, label, range, interactRange, interactLog, interactStart, type, conjugate, note); } function positiveParameter(name, label, interactRange, interactLog, interactStart, type, conjugate, note){ var range = function() { return [0,Number.POSITIVE_INFINITY]; }; distributionParameter.call(this, name, label, range, interactRange, interactLog, interactStart, type, conjugate, note); } positiveParameter.prototype = new distributionParameter(); unboundedParameter.prototype = new distributionParameter(); function distributionParametrization(ptznName, params, limits, interactLimits, displayLimits, density, densityDisplay, cdf, conjugate, check, quantities, note){ this.name = ptznName; this.params = params; this.density = density; this.densityDisplay = densityDisplay; this.cdf = cdf; this.limits; this.interactLimits = interactLimits; this.checkPars = check; this.conjugate = conjugate; this.quantities = quantities; this.note = note; this.displayLimits = displayLimits; } function distribution(name,label,type,parametrizations,note,referenceurl){ this.name = name; this.label = label; this.type = type; this.parametrizations = parametrizations; this.p = parametrizations[0]; this.note = note; this.referenceurl = referenceurl; } function updatePlot(ptznNum,name,ui){ var nptzn = this.parametrizations.length; p = (ptznNum > (nptzn - 1)) ? this.p : this.parametrizations[ptznNum]; var npars = p.params.length; var i = 0; var args = []; var par, sliderMin, sliderMax, sliderFrac, parValue; var limits; var plotType; if($("#buttonPDF").attr('disabled') !== undefined){ plotType="pdf"; }else if($("#buttonCDF").attr('disabled') !== undefined){ plotType="cdf"; }else{ return; } // Iterate through parameters for(;i=minx) newSeries.push(series[i]); } data[0] = {data: newSeries, lines:{show:true, fill: true, fillColor: areaFillColor} }; plot.setData(data); plot.draw(); } function addCDFLines(x){ var data = plot.getData(); var cumdens = p.cdf.apply( null, [x].concat(args) ); var newSeries = [ [ limits[0], cumdens ], [ x, cumdens ], [ x, 0 ] ]; data[1] = {data: newSeries, lines:{ show:true }, hoverable: false}; plot.setData(data); plot.draw(); } $("#"+this.plotid).unbind("plothover mouseout plotclick"); $("#"+this.plotid).bind("mouseout", function(){ $("#tooltip").remove(); var data = plot.getData(); if(data[2].data.length==0) data[0].data = []; data[1].data = []; plot.setData(data); plot.draw(); }); $("#"+this.plotid).bind("plotclick", function (event, pos, item) { if(plotType=="cdf" || RVtype=="discrete") return; var data = plot.getData(); var x1 = data[2]; var x2 = data[3]; if(x1.data.length==0){ data[2].data = [ [ pos.x, 0 ], [ pos.x, p.density.apply( null, [pos.x].concat(args) ) ] ]; data[2].lines = { show: true }; }else if(x2.data.length==0){ data[3].data = [ [ pos.x, 0 ], [ pos.x, p.density.apply( null, [pos.x].concat(args) ) ] ]; data[3].lines = { show: true }; addFill(x1.data[0][0], x2.data[0][0]); }else{ data[0].data = []; data[2].data = []; data[3].data = []; } plot.setData(data); addFill(pos); }); $("#"+this.plotid).bind("plothover", function (event, pos, item) { if (item && RVtype=="discrete") { if (previousPoint != item.dataIndex) { previousPoint = item.dataIndex; $("#tooltip").remove(); var x = round(item.datapoint[0], ttxDigits), y = round(item.datapoint[1], roundDigits); var funname = (plotType=="pdf") ? "p" : "F"; showTooltip(item.pageX, item.pageY, funname+"(" + x + ") = " + y); if(plotType=="cdf") addCDFLines(item.datapoint[0]); } }else if(RVtype == "continuous"){ $("#tooltip").remove(); var dens = round(p.density.apply( null, [pos.x].concat(args) ), roundDigits); var cumdens = round(p.cdf.apply( null, [pos.x].concat(args) ), roundDigits); var x = round(pos.x, roundDigits); if(plotType=="pdf"){ addFill(pos); var shaded = getShaded(plot, pos, limits, p.cdf, args); showTooltip(pos.pageX, pos.pageY, "p(" + x + ") = " + dens + "
" + "Shaded: " + round(shaded, roundDigits)); }else if(plotType=="cdf"){ addCDFLines(pos.x); showTooltip(pos.pageX, pos.pageY, "F(" + x + ") = " + cumdens); } } else { $("#tooltip").remove(); previousPoint = null; } }); if(RVtype=="continuous" && plotType=="pdf") addFill(); } function refTableHeaderRow(type){ var head = new Element('thead'); var row = new Element('tr'); row.adopt( new Element('th', { html: "Name", scope: "col" }), new Element('th', { html: "Density function", scope: "col" }), new Element('th', { html: "Domain", scope: "col" }), new Element('th', { html: "Parameters", scope: "col" }), new Element('th', { html: "Conjugacy", scope: "col" }), new Element('th', { html: "Example", scope: "col" }), new Element('th', { html: "Reference", scope: "col" }) ); head.grab(row); head.inject(document.id(type+'_distributiontable')); } function refTableRow(odd, type){ var idPre = type + "_dist_" + this.name; var rowname = idPre + "_row"; var anch = new Element('a', { name: this.name+"table" }); var row = new Element('tr', { id: rowname }); var example = new Element('td', { id: idPre + "_example" }); example.grab( new Element('a', { href: "distributionDisplay.html?dist="+this.name, id: idPre + "_interactlink", html: "Interact", title: "The "+this.label+" distribution", 'data-milkbox-size': "width:650,height:370", 'data-milkbox': "dist" }) ); var reference = new Element('td', { id: idPre + "_reference" }); reference.grab( new Element('a', { href: this.referenceurl.link, html: this.referenceurl.name, target: "_blank" }) ); row.adopt( new Element('th', { id: idPre + "_name", 'class': 'column1', html: this.label, scope: "row" }), new Element('td', { id: idPre + "_density", html: "\\["+this.p.densityDisplay+"\\]" }), new Element('td', { id: idPre + "_domain", html: "\\("+this.p.displayLimits+"\\)" }), new Element('td', { id: idPre + "_parameters", html: "\\("+""+"\\)" }), new Element('td', { id: idPre + "_conjugate", html: "" }), example, reference ); if(odd) row.set('class','odd'); row.inject(document.id(type+'_distributiontablebody')); anch.inject(document.id(idPre+"_name")); //MathJax.Hub.Queue(["Typeset",MathJax.Hub,document.getElementById(rowname)]); } function createInterfaceElements(ptznNum){ var nptzn = this.parametrizations.length; p = (ptznNum > (nptzn - 1)) ? this.p : this.parametrizations[ptznNum]; var npars = p.params.length; var text=""; var i = 0; var s, rl, rh; for(;i 534) {browser.STIXfontBug = true} } }); if (MathJax.Hub.Browser.STIXfontBug) { HTMLCSS.FONTDATA.FONTS["STIXGeneral"].family = "STIXGeneral-Regular"; HTMLCSS.FONTDATA.FONTS["STIXGeneral-italic"].family = "STIXGeneral-Italic"; delete HTMLCSS.FONTDATA.FONTS["STIXGeneral-italic"].style; } }); ================================================ FILE: docs/js/libraries/jquery.flot.crosshair.js ================================================ /* Flot plugin for showing crosshairs, thin lines, when the mouse hovers over the plot. crosshair: { mode: null or "x" or "y" or "xy" color: color lineWidth: number } Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical crosshair that lets you trace the values on the x axis, "y" enables a horizontal crosshair and "xy" enables them both. "color" is the color of the crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of the drawn lines (default is 1). The plugin also adds four public methods: - setCrosshair(pos) Set the position of the crosshair. Note that this is cleared if the user moves the mouse. "pos" is in coordinates of the plot and should be on the form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple axes), which is coincidentally the same format as what you get from a "plothover" event. If "pos" is null, the crosshair is cleared. - clearCrosshair() Clear the crosshair. - lockCrosshair(pos) Cause the crosshair to lock to the current location, no longer updating if the user moves the mouse. Optionally supply a position (passed on to setCrosshair()) to move it to. Example usage: var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; $("#graph").bind("plothover", function (evt, position, item) { if (item) { // Lock the crosshair to the data point being hovered myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] }); } else { // Return normal crosshair operation myFlot.unlockCrosshair(); } }); - unlockCrosshair() Free the crosshair to move again after locking it. */ (function ($) { var options = { crosshair: { mode: null, // one of null, "x", "y" or "xy", color: "rgba(170, 0, 0, 0.80)", lineWidth: 1 } }; function init(plot) { // position of crosshair in pixels var crosshair = { x: -1, y: -1, locked: false }; plot.setCrosshair = function setCrosshair(pos) { if (!pos) crosshair.x = -1; else { var o = plot.p2c(pos); crosshair.x = Math.max(0, Math.min(o.left, plot.width())); crosshair.y = Math.max(0, Math.min(o.top, plot.height())); } plot.triggerRedrawOverlay(); }; plot.clearCrosshair = plot.setCrosshair; // passes null for pos plot.lockCrosshair = function lockCrosshair(pos) { if (pos) plot.setCrosshair(pos); crosshair.locked = true; } plot.unlockCrosshair = function unlockCrosshair() { crosshair.locked = false; } function onMouseOut(e) { if (crosshair.locked) return; if (crosshair.x != -1) { crosshair.x = -1; plot.triggerRedrawOverlay(); } } function onMouseMove(e) { if (crosshair.locked) return; if (plot.getSelection && plot.getSelection()) { crosshair.x = -1; // hide the crosshair while selecting return; } var offset = plot.offset(); crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); plot.triggerRedrawOverlay(); } plot.hooks.bindEvents.push(function (plot, eventHolder) { if (!plot.getOptions().crosshair.mode) return; eventHolder.mouseout(onMouseOut); eventHolder.mousemove(onMouseMove); }); plot.hooks.drawOverlay.push(function (plot, ctx) { var c = plot.getOptions().crosshair; if (!c.mode) return; var plotOffset = plot.getPlotOffset(); ctx.save(); ctx.translate(plotOffset.left, plotOffset.top); if (crosshair.x != -1) { ctx.strokeStyle = c.color; ctx.lineWidth = c.lineWidth; ctx.lineJoin = "round"; ctx.beginPath(); if (c.mode.indexOf("x") != -1) { ctx.moveTo(crosshair.x, 0); ctx.lineTo(crosshair.x, plot.height()); } if (c.mode.indexOf("y") != -1) { ctx.moveTo(0, crosshair.y); ctx.lineTo(plot.width(), crosshair.y); } ctx.stroke(); } ctx.restore(); }); plot.hooks.shutdown.push(function (plot, eventHolder) { eventHolder.unbind("mouseout", onMouseOut); eventHolder.unbind("mousemove", onMouseMove); }); } $.plot.plugins.push({ init: init, options: options, name: 'crosshair', version: '1.0' }); })(jQuery); ================================================ FILE: docs/js/libraries/jstat.js ================================================ /** * jStat - JavaScript Statistical Library * Copyright (c) 2011 * This document is licensed as free software under the terms of the * MIT License: http://www.opensource.org/licenses/mit-license.php */ this.j$ = this.jStat = (function( Math, undefined ) { // for quick reference var slice = Array.prototype.slice, toString = Object.prototype.toString, // ascending/descending functions for sort ascNum = function( a, b ) { return a - b; }, // calculate correction for IEEE error calcRdx = function( n, m ) { var val = n > m ? n : m; return Math.pow( 10, 17 - ~~( Math.log((( val > 0 ) ? val : -val )) * Math.LOG10E )); }, // test if array isArray = Array.isArray || function( arg ) { return toString.call( arg ) === "[object Array]"; }, // test if function isFunction = function( arg ) { return toString.call( arg ) === "[object Function]"; }; // global function function jStat() { return new jStat.fn.init( arguments ); } // extend jStat prototype jStat.fn = jStat.prototype = { constructor : jStat, init : function( args ) { // if first argument is an array, must be vector or matrix if ( isArray( args[0] )) { // check if matrix if ( isArray( args[0][0] )) { for ( var i = 0; i < args[0].length; i++ ) { this[i] = args[0][i]; } this.length = args[0].length; // so must be vector } else { this[0] = args[0]; this.length = 1; } // if first argument is number, assume creation of sequence } else if ( !isNaN( args[0] )) { this[0] = jStat.seq.apply( null, args ); this.length = 1; } return this; }, // default length length : 0, // return clean array toArray : function() { return ( this.length > 1 ) ? slice.call( this ) : slice.call( this )[0]; }, // only to be used internally push : [].push, sort : [].sort, splice : [].splice }; // for later instantiation jStat.fn.init.prototype = jStat.fn; // utility functions jStat.utils = { calcRdx : calcRdx, isArray : isArray, isFunction : isFunction }; // create method for easy extension jStat.extend = function( obj ) { var args = slice.call( arguments ), i = 1, j; if ( args.length === 1 ) { for ( j in obj ) { jStat[j] = obj[j]; } return this; } for ( ; i < args.length; i++ ) { for ( j in args[i] ) obj[j] = args[i][j]; } return obj; }; // static methods jStat.extend({ // transpose a matrix or array transpose : function( arr ) { if ( !isArray( arr[0] )) arr = [ arr ]; var rows = arr.length, cols = arr[0].length, obj = [], i = 0, j; for ( ; i < cols; i++ ) { obj.push([]); for ( j = 0; j < rows; j++ ) { obj[i].push( arr[j][i] ); } } return obj; }, // map a function to an array or array of arrays // toAlter is an internal variable map : function( arr, func, toAlter ) { if ( !isArray( arr[0] )) arr = [ arr ]; var row = 0, nrow = arr.length, ncol = arr[0].length, res = toAlter ? arr : [], col; for ( ; row < nrow; row++ ) { // if the row doesn't exist, create it if ( !res[row] ) res[row] = []; for ( col = 0; col < ncol; col++ ) res[row][col] = func( arr[row][col], row, col ); } return res.length === 1 ? res[0] : res; }, // destructively alter an array alter : function( arr, func ) { return jStat.map( arr, func, true ); }, // generate a rows x cols matrix according to the supplied function create : function ( rows, cols, func ) { if ( isFunction( cols )) { func = cols; cols = rows; } var res = [], i, j; for ( i = 0; i < rows; i++ ) { res[i] = []; for ( j = 0; j < cols; j++ ) { res[i].push( func( i, j )); } } return res; }, // generate a rows x cols matrix of zeros zeros : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function() { return 0; }); }, // generate a rows x cols matrix of ones ones : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function() { return 1; }); }, // generate a rows x cols matrix of uniformly random numbers rand : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function() { return Math.random(); }); }, // generate an identity matrix of size row x cols identity : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function( i, j ) { return ( i === j ) ? 1 : 0; }); }, // generate sequence seq : function( min, max, length, func ) { if ( !isFunction( func )) func = false; var arr = [], hival = calcRdx( min, max ), step = ( max * hival - min * hival ) / (( length - 1 ) * hival ), current = min, cnt = 0; // current is assigned using a technique to compensate for IEEE error for ( ; current <= max; cnt++, current = ( min * hival + step * hival * cnt ) / hival ) arr.push(( func ? func( current, cnt ) : current )); return arr; }, // add a vector/matrix to a vector/matrix or scalar add : function( arr, arg ) { // check if arg is a vector or scalar if ( isArray( arg )) { if ( !isArray( arg[0] )) arg = [ arg ]; return jStat.map( arr, function( value, row, col ) { return value + arg[row][col]; }); } return jStat.map( arr, function ( value ) { return value + arg; }); }, // TODO: Implement matrix division // matrix division divide : function( arr, arg ) { return isArray( arg ) ? false : jStat.map(arr, function ( value ) { return value / arg; }); }, // matrix multiplication multiply : function( arr, arg ) { var row, col, nrescols, sum, nrow = arr.length, ncol = arr[0].length, res = jStat.zeros( nrow, nrescols = ( isNaN( arg )) ? arg[0].length : ncol ), rescols = 0; if ( isArray( arg )) { for ( ; rescols < nrescols; rescols++ ) { for ( row = 0; row < nrow; row++ ) { sum = 0; for ( col = 0; col < ncol; col++ ) sum += arr[row][col] * arg[col][rescols]; res[row][rescols] = sum; } } return ( nrow === 1 && rescols === 1 ) ? res[0][0] : res; } return jStat.map( arr, function( value ) { return value * arg; }); }, // subtract a vector or scalar from the vector subtract : function( arr, arg ) { // check if arg is a vector or scalar if ( isArray( arg )) { if ( !isArray( arg[0] )) arg = [ arg ]; return jStat.map( arr, function( value, row, col ) { return value - arg[row][col] || 0; }); } return jStat.map( arr, function( value ) { return value - arg; }); }, // Returns the dot product of two matricies dot : function( arr, arg ) { if ( !isArray( arr[0] )) arr = [ arr ]; if ( !isArray( arg[0] )) arg = [ arg ]; // convert column to row vector var left = ( arr[0].length === 1 && arr.length !== 1 ) ? jStat.transpose( arr ) : arr, right = ( arg[0].length === 1 && arg.length !== 1 ) ? jStat.transpose( arg ) : arg, res = [], row = 0, nrow = left.length, ncol = left[0].length, sum, col; for ( ; row < nrow; row++ ) { res[row] = []; sum = 0; for ( col = 0; col < ncol; col++ ) sum += left[row][col] * right[row][col]; res[row] = sum; } return ( res.length === 1 ) ? res[0] : res; }, // raise every element by a scalar pow : function( arr, arg ) { return jStat.map( arr, function( value ) { return Math.pow( value, arg ); }); }, // generate the absolute values of the vector abs : function( arr ) { return jStat.map( arr, function( value ) { return Math.abs( value ); }); }, // set all values to zero clear : function( arr ) { return jStat.alter( arr, function() { return 0; }); }, // TODO: make compatible with matrices // computes the p-norm of the vector norm : function( arr, p ) { var nnorm = 0, i = 0; // check the p-value of the norm, and set for most common case if ( isNaN( p )) p = 2; // check if multi-dimensional array, and make vector correction if ( isArray( arr[0] )) arr = arr[0]; // vector norm for (; i < arr.length; i++ ) { nnorm += Math.pow( Math.abs( arr[i] ), p ); } return Math.pow( nnorm, 1 / p ); }, // TODO: make compatible with matrices // computes the angle between two vectors in rads angle : function( arr, arg ) { return Math.acos( jStat.dot( arr, arg ) / ( jStat.norm( arr ) * jStat.norm( arg ))); }, // Tests whether a matrix is symmetric symmetric : function( arr ) { var issymmetric = true, row = 0, size = arr.length, col; if ( arr.length !== arr[0].length ) return false; for ( ; row < size; row++ ) { for ( col = 0; col < size; col++ ) { if ( arr[col][row] !== arr[row][col] ) return false; } } return true; }, /* array/vector specific methods */ // sum of an array sum : function( arr ) { var sum = 0, i = arr.length, tmp; while ( --i >= 0 ) { tmp = calcRdx( sum, arr[i] ); sum = (( sum * tmp ) + ( arr[i] * tmp )) / tmp; } return sum; }, // sum squared sumsqrd : function( arr ) { var sum = 0, i = arr.length; while ( --i >= 0 ) sum += arr[i] * arr[i]; return sum; }, // sum squared error sumsqerr : function( arr ) { var mean = jStat.mean( arr ), sum = 0, i = arr.length; while ( --i >= 0 ) sum += Math.pow( arr[i] - mean, 2 ); return sum; }, // product of an array product : function( arr ) { var prod = 1, i = arr.length; while ( --i >= 0 ) prod *= arr[i]; return prod; }, // minimum value of an array min : function( arr ) { var low = arr[0], i = 0; while ( ++i < arr.length ) if ( arr[i] < low ) low = arr[i]; return low; }, // maximum value of an array max : function( arr ) { var high = arr[0], i = 0; while ( ++i < arr.length ) if ( arr[i] > high ) high = arr[i]; return high; }, // mean value of an array mean : function( arr ) { return jStat.sum( arr ) / arr.length; }, // mean squared error meansqerr : function( arr ) { return jStat.sumsqerr( arr ) / arr.length; }, // geometric mean of an array geomean : function( arr ) { return Math.pow( jStat.product( arr ), 1 / arr.length ); }, // median of an array median : function( arr ) { var arrlen = arr.length, _arr = arr.slice().sort( ascNum ); // check if array is even or odd, then return the appropriate return !( arrlen & 1 ) ? ( _arr[( arrlen / 2 ) - 1 ] + _arr[( arrlen / 2 )]) / 2 : _arr[( arrlen / 2 ) | 0 ]; }, // cumulative sum of an array cumsum : function( arr ) { var cumsum = [arr[0]], arrLen = arr.length, i = 1; for (; i < arrLen; i++ ) { cumsum.push( cumsum[i-1] + arr[i]); } return cumsum; }, // successive differences of an array diff : function( arr) { var diffs = [], arrLen = arr.length, i = 1; for ( i = 1; i < arrLen; i++ ) { diffs.push( arr[i] - arr[i-1]); } return diffs; }, // mode of an array // if there are multiple modes of an array, just returns false // is this the appropriate way of handling it? mode : function( arr ) { var arrLen = arr.length, _arr = arr.slice().sort( ascNum ), count = 1, maxCount = 0, numMaxCount = 0, i = 0, maxNum; for ( ; i < arrLen; i++ ) { if ( _arr[ i ] === _arr[ i + 1 ] ) { count++; } else { if ( count > maxCount ) { maxNum = _arr[i]; maxCount = count; count = 1; numMaxCount = 0; } else { // are there multiple max counts if ( count === maxCount ) { numMaxCount++; // count is less than max count, so reset values } else { count = 1; } } } } return ( numMaxCount === 0 ) ? maxNum : false; }, // range of an array range : function( arr ) { var _arr = arr.slice().sort( ascNum ); return _arr[ _arr.length - 1 ] - _arr[0]; }, // variance of an array // flag indicates population vs sample variance : function( arr, flag ) { var mean = jStat.mean( arr ), stSum = 0, i = arr.length - 1; for ( ; i >= 0; i-- ) { stSum += Math.pow(( arr[i] - mean ), 2 ); } return stSum / ( arr.length - ( flag ? 1 : 0 )); }, // standard deviation of an array // flag indicates population vs sample stdev : function( arr, flag ) { return Math.sqrt( jStat.variance( arr, flag )); }, // mean deviation (mean absolute deviation) of an array meandev : function( arr ) { var devSum = 0, mean = jStat.mean( arr ), i = arr.length - 1; for ( ; i >= 0; i-- ) { devSum += Math.abs( arr[i] - mean ); } return devSum / arr.length; }, // median deviation (median absolute deviation) of an array meddev : function( arr ) { var devSum = 0, median = jStat.median( arr ), i = arr.length - 1; for ( ; i >= 0; i-- ) { devSum += Math.abs( arr[i] - median ); } return devSum / arr.length; }, // quartiles of an array quartiles : function( arr ) { var arrlen = arr.length, _arr = arr.slice().sort( ascNum ); return [ _arr[ Math.round(( arrlen ) / 4 ) - 1 ], _arr[ Math.round(( arrlen ) / 2 ) - 1 ], _arr[ Math.round(( arrlen ) * 3 / 4 ) - 1 ] ]; }, // covariance of two arrays covariance : function( arr1, arr2 ) { var u = jStat.mean( arr1 ), v = jStat.mean( arr2 ), sq_dev = [], arr1Len = arr1.length, i = 0; for ( ; i < arr1Len; i++ ) { sq_dev[i] = ( arr1[i] - u ) * ( arr2[i] - v ); } return jStat.sum( sq_dev ) / arr1Len; }, // correlation coefficient of two arrays corrcoeff : function( arr1, arr2 ) { return jStat.covariance( arr1, arr2 ) / jStat.stdev( arr1, 1 ) / jStat.stdev( arr2, 1 ); } }); // extend jStat.fn with methods which don't require arguments and work on columns (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { // if a matrix is passed, automatically assume operation should be done on the columns jStat.fn[ passfunc ] = function( fullbool, func ) { var arr = [], i = 0, tmpthis = this; // assignment reassignation depending on how parameters were passed in if ( isFunction( fullbool )) { func = fullbool; fullbool = false; } // check if a callback was passed with the function if ( func ) { setTimeout( function() { func.call( tmpthis, jStat.fn[ passfunc ].call( tmpthis, fullbool )); }, 15 ); return this; } // check if matrix and run calculations if ( this.length > 1 ) { tmpthis = fullbool === true ? this : this.transpose(); for ( ; i < tmpthis.length; i++ ) arr[i] = jStat[ passfunc ]( tmpthis[i] ); return fullbool === true ? jStat[ passfunc ]( arr ) : arr; } return jStat[ passfunc ]( this[0] ); }; })( funcs[i] ); })( 'sum sumsqrd sumsqerr product min max mean geomean median mode range variance stdev meandev meddev quartiles'.split( ' ' )); // extend jStat.fn with methods that have no argument (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function( func ) { var tmpthis = this, results; // check for callback if ( func ) { setTimeout( function() { func.call( tmpthis, jStat.fn[ passfunc ].call( tmpthis )); }, 15 ); return this; } results = jStat[ passfunc ]( this ); return isArray( results ) ? jStat( results ) : results; }; })( funcs[i] ); })( 'transpose clear norm symmetric'.split( ' ' )); // extend jStat.fn with methods that require one argument (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function( arg, func ) { var tmpthis = this; // check for callback if ( func ) { setTimeout( function() { func.call( tmpthis, jStat.fn[ passfunc ].call( tmpthis, arg )); }, 15 ); return this; } return jStat( jStat[ passfunc ]( this, arg )); }; })( funcs[i] ); })( 'add divide multiply subtract dot pow abs angle'.split( ' ' )); // extend jStat.fn with simple shortcut methods (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function() { return jStat( jStat[ passfunc ].apply( null, arguments )); }; })( funcs[i] ); })( 'create zeros ones rand identity'.split( ' ' )); // extend jStat.fn jStat.extend( jStat.fn, { // Returns the number of rows in the matrix rows : function() { return this.length || 1; }, // Returns the number of columns in the matrix cols : function() { return this[0].length || 1; }, // Returns the dimensions of the object { rows: i, cols: j } dimensions : function() { return { rows : this.rows(), cols : this.cols() }; }, // Returns a specified row as a vector row : function( index ) { return jStat( this[index] ); }, // Returns the specified column as a vector col : function( index ) { var column = [], i = 0; for ( ; i < this.length; i++ ) { column[i] = [ this[i][index] ]; } return jStat( column ); }, // Returns the diagonal of the matrix diag : function() { var row = 0, nrow = this.rows(), res = []; for ( ; row < nrow; row++ ) { res[row] = [ this[row][row] ]; } return jStat( res ); }, // Returns the anti-diagonal of the matrix antidiag : function() { var nrow = this.rows() - 1, res = [], i = 0; for ( ; nrow >= 0; nrow--, i++ ) { res[i] = [ this[i][nrow] ]; } return jStat( res ); }, // map a function to a matrix or vector map : function( func, toAlter ) { return jStat( jStat.map( this, func, toAlter )); }, // destructively alter an array alter : function( func ) { jStat.alter( this, func ); return this; } }); // exposing jStat return jStat; })( Math ); (function( jStat, Math ) { // generate all distribution instance methods (function( list ) { for ( var i = 0; i < list.length; i++ ) (function( func ) { // distribution instance method jStat[ func ] = function( a, b, c ) { if (!( this instanceof arguments.callee )) return new arguments.callee( a, b, c ); this._a = a; this._b = b; this._c = c; return this; }; // distribution method to be used on a jStat instance jStat.fn[ func ] = function( a, b, c ) { var newthis = jStat[ func ]( a, b, c ); newthis.data = this; return newthis; }; // sample instance method jStat[ func ].prototype.sample = function( arr ) { var a = this._a, b = this._b, c = this._c; if ( arr ) return jStat.alter( arr, function() { return jStat[ func ].sample( a, b, c ); }); else return jStat[ func ].sample( a, b, c ); }; // generate the pdf, cdf and inv instance methods (function( vals ) { for ( var i = 0; i < vals.length; i++ ) (function( fnfunc ) { jStat[ func ].prototype[ fnfunc ] = function( x ) { var a = this._a, b = this._b, c = this._c; if ( isNaN( x )) { return jStat.fn.map.call( this.data, function( x ) { return jStat[ func ][ fnfunc ]( x, a, b, c ); }); } return jStat[ func ][ fnfunc ]( x, a, b, c ); }; })( vals[ i ]); })( 'pdf cdf inv'.split( ' ' )); // generate the mean, median, mode and variance instance methods (function( vals ) { for ( var i = 0; i < vals.length; i++ ) (function( fnfunc ) { jStat[ func ].prototype[ fnfunc ] = function() { return jStat[ func ][ fnfunc ]( this._a, this._b, this._c ); }; })( vals[ i ]); })( 'mean median mode variance'.split( ' ' )); })( list[ i ]); })(( 'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy lognormal normal ' + 'pareto studentt weibull uniform binomial negbin hypgeom poisson triangular' ).split( ' ' )); // extend beta function with static methods jStat.extend( jStat.beta, { pdf : function( x, alpha, beta ) { return (x > 1 || x < 0) ? 0 : ( Math.pow( x, alpha - 1 ) * Math.pow( 1 - x, beta - 1 )) / jStat.betafn( alpha, beta ); }, cdf : function( x, alpha, beta ) { return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.incompleteBeta( x, alpha, beta ); }, inv : function( x, alpha, beta ) { return jStat.incompleteBetaInv( x, alpha, beta ); }, mean : function( alpha, beta ) { return alpha / ( alpha + beta ); }, median : function( alpha, beta ) { // TODO: implement beta median }, mode : function( alpha, beta ) { return ( alpha * beta ) / ( Math.pow( alpha + beta, 2 ) * ( alpha + beta + 1 )); }, // return a random sample sample : function( alpha, beta ) { var u = jStat.randg( alpha ); return u / ( u + jStat.randg( beta )); }, variance : function( alpha, beta ) { return ( alpha * beta ) / ( Math.pow( alpha + beta, 2 ) * ( alpha + beta + 1 )); } }); // extend F function with static methods jStat.extend( jStat.centralF, { pdf : function( x, df1, df2 ) { return ( x >= 0) ? Math.sqrt( ( Math.pow( df1 * x, df1) * Math.pow( df2, df2 ) ) / ( Math.pow(df1 * x + df2, df1 + df2 ) ) ) / ( x * jStat.betafn( df1/2, df2/2 ) ) : undefined; }, cdf : function( x, df1, df2 ) { return jStat.incompleteBeta( ( df1 * x ) / ( df1 * x + df2 ), df1 / 2, df2 / 2 ); }, inv : function( x, df1, df2 ) { return df2 / (df1 * ( 1 / jStat.incompleteBetaInv( x, df1 / 2, df2 / 2 ) - 1 ) ); }, mean : function( df1, df2 ) { return ( df2 > 2 ) ? df2 / ( df2 - 2 ) : undefined; }, mode : function( df1, df2 ) { return ( df1 > 2) ? ( df2 * ( df1 - 2 ) ) / ( df1 * ( df2 + 2 ) ) : undefined; }, // return a random sample sample : function( df1, df2 ) { var x1 = jStat.randg( df1 / 2 ) * 2; var x2 = jStat.randg( df2 / 2 ) * 2; return ( x1 / df1 ) / ( x2 / df2 ); }, variance : function( df1, df2 ) { return ( df2 > 4 ) ? 2 * df2 * df2 * ( df1 + df2 - 2) / ( df1 * ( df2 - 2 ) * ( df2 - 2 ) * ( df2 - 4 ) ): undefined; } }); // extend cauchy function with static methods jStat.extend( jStat.cauchy, { pdf : function( x, local, scale ) { return ( scale / ( Math.pow( x - local, 2 ) + Math.pow( scale, 2 ))) / Math.PI; }, cdf : function( x, local, scale ) { return Math.atan(( x - local) / scale ) / Math.PI + 0.5; }, inv : function( p, local, scale ) { return local + scale * Math.tan( Math.PI * ( p - 0.5 )); }, median: function( local, scale ) { return local; }, mode : function( local, scale ) { return local; }, sample : function( local, scale ) { return jStat.randn() * Math.sqrt( 1 / ( 2 * jStat.randg( 0.5 ))) * scale + local; } }); // extend chisquare function with static methods jStat.extend( jStat.chisquare, { pdf : function( x, dof ) { return Math.exp(( dof / 2 - 1 ) * Math.log( x ) - x / 2 - ( dof / 2 ) * Math.log( 2 ) - jStat.gammaln( dof / 2 )); }, cdf : function( x, dof ) { return jStat.gammap( dof / 2, x / 2 ); }, inv : function( p, dof ) { return 2 * jStat.gammapinv( p, 0.5 * dof ); }, mean : function( dof ) { return dof; }, //TODO: this is an approximation (is there a better way?) median : function( dof ) { return dof * Math.pow( 1 - ( 2 / ( 9 * dof )), 3 ); }, mode : function( dof ) { return ( dof - 2 > 0 ) ? dof - 2 : 0; }, sample : function( dof ) { return jStat.randg( dof / 2 ) * 2; }, variance: function( dof ) { return 2 * dof; } }); // extend exponential function with static methods jStat.extend( jStat.exponential, { pdf : function( x, rate ) { return x < 0 ? 0 : rate * Math.exp( -rate * x ); }, cdf : function( x, rate ) { return x < 0 ? 0 : 1 - Math.exp( -rate * x ); }, inv : function( p, rate ) { return -Math.log( 1 - p ) / rate; }, mean : function( rate ) { return 1 / rate; }, median : function ( rate ) { return ( 1 / rate ) * Math.log( 2 ); }, mode : function( rate ) { return 0; }, sample : function( rate ) { return -1 / rate * Math.log( Math.random()); }, variance : function( rate ) { return Math.pow( rate, -2 ); } }); // extend gamma function with static methods jStat.extend( jStat.gamma, { pdf : function( x, shape, scale ) { return Math.exp(( shape - 1 ) * Math.log( x ) - x / scale - jStat.gammaln( shape ) - shape * Math.log( scale )); }, cdf : function( x, shape, scale ) { return jStat.gammap( shape, x / scale ); }, inv : function( p, shape, scale ) { return jStat.gammapinv( p, shape ) * scale; }, mean : function( shape, scale ) { return shape * scale; }, mode : function( shape, scale ) { if( shape > 1 ) return ( shape - 1 ) * scale; return undefined; }, sample : function( shape, scale ) { return jStat.randg( shape ) * scale; }, variance: function( shape, scale ) { return shape * scale * scale; } }); // extend inverse gamma function with static methods jStat.extend( jStat.invgamma, { pdf : function( x, shape, scale ) { return Math.exp( -( shape + 1 ) * Math.log( x ) - scale/x - jStat.gammaln( shape ) + shape * Math.log( scale ) ); }, cdf : function( x, shape, scale ) { return 1 - jStat.gammap( shape, scale / x ); }, inv : function( p, shape, scale ) { return scale / jStat.gammapinv( 1 - p, shape ); }, mean : function( shape, scale ) { return ( shape > 1 ) ? scale / ( shape - 1 ) : undefined; }, mode : function( shape, scale ) { return scale / ( shape + 1 ); }, sample : function( shape, scale ) { return scale / jStat.randg( shape ); }, variance: function( shape, scale ) { return (shape > 2) ? scale * scale / ( ( shape - 1 ) * ( shape - 1) * ( shape - 2 ) ): undefined; } }); // extend kumaraswamy function with static methods jStat.extend( jStat.kumaraswamy, { pdf : function( x, alpha, beta ) { return Math.exp( Math.log( alpha ) + Math.log( beta ) + ( alpha - 1 ) * Math.log( x ) + ( beta - 1 ) * Math.log( 1 - Math.pow( x, alpha ))); }, cdf : function( x, alpha, beta ) { return ( 1 - Math.pow( 1 - Math.pow( x, alpha ), beta )); }, mean : function( alpha, beta ) { return ( beta * jStat.gammafn( 1 + 1 / alpha ) * jStat.gammafn( beta )) / ( jStat.gammafn( 1 + 1 / alpha + beta )); }, median : function( alpha, beta ) { return Math.pow( 1 - Math.pow( 2, -1 / beta ), 1 / alpha ); }, mode : function( alpha, beta ) { return ( alpha >= 1 && beta >= 1 && ( alpha !== 1 && beta !== 1 )) ? Math.pow(( alpha - 1 ) / ( alpha * beta - 1 ), 1 / alpha ) : undefined; }, variance: function( alpha, beta ) { // TODO: complete this } }); // extend lognormal function with static methods jStat.extend( jStat.lognormal, { pdf : function( x, mu, sigma ) { return Math.exp(-Math.log( x ) - 0.5 * Math.log( 2 * Math.PI ) - Math.log( sigma ) - Math.pow( Math.log( x ) - mu, 2 ) / ( 2 * sigma * sigma )); }, cdf : function( x, mu, sigma ) { return 0.5 + ( 0.5 * jStat.erf(( Math.log( x ) - mu ) / Math.sqrt( 2 * sigma * sigma ))); }, inv : function( p, mu, sigma ) { return Math.exp( -1.41421356237309505 * sigma * jStat.erfcinv( 2 * p ) + mu ); }, mean : function( mu, sigma ) { return Math.exp( mu + sigma * sigma / 2); }, median : function( mu, sigma ) { return Math.exp( mu ); }, mode : function( mu, sigma ) { return Math.exp( mu - sigma * sigma ); }, sample : function( mu, sigma ) { return Math.exp( jStat.randn() * sigma + mu ); }, variance : function( mu, sigma ) { return ( Math.exp( sigma * sigma ) - 1 ) * Math.exp( 2 * mu + sigma * sigma ); } }); // extend normal function with static methods jStat.extend( jStat.normal, { pdf : function( x, mean, std ) { return Math.exp( -0.5 * Math.log( 2 * Math.PI ) - Math.log( std ) - Math.pow( x - mean, 2 ) / ( 2 * std * std )); }, cdf : function( x, mean, std ) { return 0.5 * ( 1 + jStat.erf(( x - mean ) / Math.sqrt( 2 * std * std ))); }, inv : function( p, mean, std ) { return -1.41421356237309505 * std * jStat.erfcinv( 2 * p ) + mean; }, mean : function( mean, std ) { return mean; }, median : function( mean, std ) { return mean; }, mode : function ( mean, std ) { return mean; }, sample : function( mean, std ) { return jStat.randn() * std + mean; }, variance : function( mean, std ) { return std * std; } }); // extend pareto function with static methods jStat.extend( jStat.pareto, { pdf : function( x, scale, shape ) { return ( x > scale ) ? ( shape * Math.pow( scale, shape )) / Math.pow( x, shape + 1 ) : undefined; }, cdf : function( x, scale, shape ) { return 1 - Math.pow( scale / x, shape ); }, mean : function( scale, shape ) { return ( shape > 1 ) ? ( shape * Math.pow( scale, shape )) / ( shape - 1 ) : undefined; }, median : function( scale, shape ) { return scale * ( shape * Math.SQRT2 ); }, mode : function( scale, shape ) { return scale; }, variance : function( scale, shape ) { return ( shape > 2 ) ? ( scale*scale * shape ) / ( Math.pow( shape - 1, 2 ) * ( shape - 2 )) : undefined; } }); // extend studentt function with static methods jStat.extend( jStat.studentt, { pdf : function( x, dof ) { return ( jStat.gammafn(( dof + 1 ) / 2 ) / ( Math.sqrt( dof * Math.PI ) * jStat.gammafn( dof / 2 ))) * Math.pow( 1 + (( x*x ) / dof ), -(( dof + 1 ) / 2 )); }, cdf : function( x, dof ) { var dof2 = dof / 2; return jStat.incompleteBeta(( x + Math.sqrt( x * x + dof )) / ( 2 * Math.sqrt( x * x + dof )), dof2, dof2 ); }, inv : function( p, dof ) { var x = jStat.incompleteBetaInv( 2 * Math.min( p, 1 - p ), 0.5 * dof, 0.5 ); x = Math.sqrt( dof * ( 1 - x ) / x ); return ( p > 0 ) ? x : -x; }, mean : function( dof ) { return ( dof > 1 ) ? 0 : undefined; }, median : function ( dof ) { return 0; }, mode : function( dof ) { return 0; }, sample : function( dof ) { return jStat.randn() * Math.sqrt( dof / ( 2 * jStat.randg( dof / 2))); }, variance : function( dof ) { return ( dof > 2 ) ? dof / ( dof - 2 ) : ( dof > 1 ) ? Infinity : undefined; } }); // extend weibull function with static methods jStat.extend( jStat.weibull, { pdf : function( x, scale, shape ) { return x < 0 ? 0 : ( shape / scale ) * Math.pow(( x / scale ),( shape - 1 )) * Math.exp(-( Math.pow(( x / scale ), shape ))); }, cdf : function( x, scale, shape ) { return x < 0 ? 0 : 1 - Math.exp( -Math.pow(( x / scale ), shape )); }, inv : function( p, scale, shape ) { return scale * Math.pow( -Math.log( 1 - p ), 1 / shape ); }, mean : function( scale, shape ) { return scale * jStat.gammafn( 1 + 1 / shape ); }, median : function( scale, shape ) { return scale * Math.pow( Math.log( 2 ), 1 / shape ); }, mode : function( scale, shape ) { return ( shape > 1 ) ? scale * Math.pow(( shape - 1 ) / shape, 1 / shape ) : undefined; }, sample : function( scale, shape ) { return scale * Math.pow( -Math.log( Math.random()), 1 / shape ); }, variance : function( scale, shape ) { return scale * scale * jStat.gammafn( 1 + 2 / shape ) - Math.pow( this.mean( scale, shape ), 2 ); } }); // extend uniform function with static methods jStat.extend( jStat.uniform, { pdf : function( x, a, b ) { return ( x < a || x > b ) ? 0 : 1 / ( b - a ); }, cdf : function( x, a, b ) { if ( x < a ) { return 0; } else if ( x < b ) { return ( x - a ) / ( b - a ); } return 1; }, mean : function( a, b ) { return 0.5 * ( a + b ); }, median : function( a, b ) { return jStat.mean( a, b ); }, mode : function( a, b ) { // TODO: complete this }, sample : function( a, b ) { return ( a / 2 + b / 2 ) + ( b / 2 - a / 2) * ( 2 * Math.random() - 1); }, variance : function( a, b ) { return Math.pow( b - a, 2 ) / 12; } }); // extend uniform function with static methods jStat.extend( jStat.binomial, { pdf : function( k, n, p ) { return ( p === 0 || p === 1 ) ? (( n * p ) === k ? 1 : 0 ) : jStat.combination( n, k ) * Math.pow( p, k ) * Math.pow( 1 - p, n - k ); }, cdf : function( x, n, p ) { var binomarr = [], k = 0; if ( x < 0 ) { return 0; } if ( x < n ) { for ( ; k <= x; k++ ) { binomarr[ k ] = jStat.binomial.pdf( k, n, p ); } return jStat.sum( binomarr ); } return 1; } }); // extend uniform function with static methods jStat.extend( jStat.negbin, { pdf : function( k, r, p ) { return k !== k | 0 ? false : k < 0 ? 0 : jStat.combination( k + r - 1, k ) * Math.pow( 1 - p, r ) * Math.pow( p, k ); }, cdf : function( x, r, p ) { var sum = 0, k = 0; if ( x < 0 ) return 0; for ( ; k <= x; k++ ) { sum += jStat.negbin.pdf( k, r, p ); } return sum; } }); // extend uniform function with static methods jStat.extend( jStat.hypgeom, { pdf : function( k, N, m, n ) { return k !== k | 0 ? false : ( k < 0) ? 0 : jStat.combination( m, k ) * jStat.combination( N - m , n - k ) / jStat.combination( N, n ); }, cdf : function( x, N, m, n ) { var sum = 0, k = 0; if ( x < 0 ) return 0; for ( ; k <= x; k++ ) { sum += jStat.hypgeom.pdf( k, N, m, n ); } return sum; } }); // extend uniform function with static methods jStat.extend( jStat.poisson, { pdf : function( k, l ) { return Math.pow( l, k ) * Math.exp( -l ) / jStat.factorial( k ); }, cdf : function( x, l ) { var sumarr = [], k = 0; if ( x < 0 ) return 0; for ( ; k <= x; k++ ) { sumarr.push(jStat.poisson.pdf( k, l )); } return jStat.sum(sumarr); }, mean : function( l ) { return l; }, variance : function( l ) { return l; }, sample : function( l ) { var p = 1, k = 0, L = Math.exp(-l); do { k++; p *= Math.random(); } while (p > L); return k - 1; } }); // extend triangular function with static methods jStat.extend( jStat.triangular, { pdf : function( x, a, b, c ) { return ( b <= a || c < a || c > b ) ? undefined : ( x < a || x > b ) ? 0 : ( x <= c ) ? ( 2 * ( x - a )) / (( b - a ) * ( c - a )) : ( 2 * ( b - x )) / (( b - a ) * ( b - c )); }, cdf : function( x, a, b, c ) { if ( b <= a || c < a || c > b ) return undefined; if ( x < a ) { return 0; } else { if ( x <= c ) return Math.pow( x - a, 2 ) / (( b - a ) * ( c - a )); return 1 - Math.pow( b - x, 2 ) / (( b - a ) * ( b - c )); } // never reach this return 1; }, mean : function( a, b, c ) { return ( a + b + c ) / 3; }, median : function( a, b, c ) { if ( c <= ( a + b ) / 2 ) { return b - Math.sqrt(( b - a ) * ( b - c )) / Math.sqrt( 2 ); } else if ( c > ( a + b ) / 2 ) { return a + Math.sqrt(( b - a ) * ( c - a )) / Math.sqrt( 2 ); } }, mode : function( a, b, c ) { return c; }, sample : function( a, b, c ) { var u = Math.random(); return u < (( c - a ) / ( b - a )) ? a + Math.sqrt( u * ( b - a ) * ( c - a )) : b - Math.sqrt(( 1 - u ) * ( b - a ) * ( b - c )); }, variance : function( a, b, c ) { return ( a * a + b * b + c * c - a * b - a * c - b * c ) / 18; } }); })( this.jStat, Math ); // Special functions // (function( jStat, Math ) { // Evaluates the continued fraction for incomplete beta function by modified Lentz's method. function betacf( x, a, b ) { var fpmin = 1e-30, m = 1, m2, aa, c, d, del, h, qab, qam, qap; // These q's will be used in factors that occur in the coefficients qab = a + b; qap = a + 1; qam = a - 1; c = 1; d = 1 - qab * x / qap; if( Math.abs( d ) < fpmin ) d = fpmin; d = 1 / d; h = d; for ( ; m <= 100; m++ ) { m2 = 2 * m; aa = m * ( b - m ) * x / ( ( qam + m2 ) * ( a + m2 ) ); // One step (the even one) of the recurrence d = 1 + aa * d; if( Math.abs( d ) < fpmin ) d = fpmin; c = 1 + aa / c; if( Math.abs( c ) < fpmin ) c = fpmin; d = 1 / d; h *= d * c; aa = -( a + m ) * ( qab + m ) * x / ( ( a + m2 ) * ( qap + m2 ) ); // Next step of the recurrence (the odd one) d = 1 + aa * d; if( Math.abs( d ) < fpmin ) d = fpmin; c = 1 + aa / c; if( Math.abs( c ) < fpmin ) c = fpmin; d = 1 / d; del = d * c; h *= del; if( Math.abs( del - 1.0 ) < 3e-7 ) break; } return h; } // extending static jStat methods jStat.extend({ // Log-gamma function gammaln : function( x ) { var j = 0, cof = [ 76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5 ], ser = 1.000000000190015, xx, y, tmp; tmp = ( y = xx = x ) + 5.5; tmp -= ( xx + 0.5 ) * Math.log( tmp ); for( ; j < 6; j++ ) ser += cof[j] / ++y; return Math.log( 2.5066282746310005 * ser / xx) - tmp; }, // gamma of x gammafn : function( x ) { var p = [ -1.716185138865495, 24.76565080557592, -379.80425647094563, 629.3311553128184, 866.9662027904133, -31451.272968848367, -36144.413418691176, 66456.14382024054 ], q = [ -30.8402300119739, 315.35062697960416, -1015.1563674902192, -3107.771671572311, 22538.118420980151, 4755.8462775278811, -134659.9598649693, -115132.2596755535 ], fact = false, n = 0, xden = 0, xnum = 0, y = x, i, z, yi, res, sum, ysq; if( y <= 0 ) { res = y % 1 + 3.6e-16; if ( res ) { fact = (!( y & 1 ) ? 1 : -1 ) * Math.PI / Math.sin( Math.PI * res ); y = 1 - y; } else { return Infinity; } } yi = y; if ( y < 1 ) { z = y++; } else { z = ( y -= n = ( y | 0 ) - 1 ) - 1; } for ( i = 0; i < 8; ++i ) { xnum = ( xnum + p[i] ) * z; xden = xden * z + q[i]; } res = xnum / xden + 1; if ( yi < y ) { res /= yi; } else if ( yi > y ) { for ( i = 0; i < n; ++i ) { res *= y; y++; } } if ( fact ) { res = fact / res; } return res; }, // lower incomplete gamma function P(a,x) gammap : function( a, x ) { var aln = jStat.gammaln( a ), afn = jStat.gammafn( a ), ap = a, sum = 1 / a, del = sum, b = x + 1 - a, c = 1 / 1.0e-30, d = 1 / b, h = d, i = 1, afix = ( a >= 1 ) ? a : 1 / a, // calculate maximum number of itterations required for a ITMAX = -~( Math.log( afix ) * 8.5 + a * 0.4 + 17 ), an, endval; if ( x < 0 || a <= 0 ) { return NaN; } else if ( x < a + 1 ) { for ( ; i <= ITMAX; i++ ) { sum += del *= x / ++ap; } endval = sum * Math.exp( -x + a * Math.log( x ) - ( aln )); } else { for ( ; i <= ITMAX; i++ ) { an = -i * ( i - a ); b += 2; d = an * d + b; c = b + an / c; d = 1 / d; h *= d * c; } endval = 1 - h * Math.exp( -x + a * Math.log( x ) - ( aln )); } return endval * afn / jStat.gammafn( a ); }, // natural log factorial of n factorialln : function( n ) { return n < 0 ? NaN : jStat.gammaln( n + 1 ); }, // factorial of n factorial : function( n ) { return n < 0 ? NaN : jStat.gammafn( n + 1 ); }, // combinations of n, m combination : function( n, m ) { // make sure n or m don't exceed the upper limit of usable values return ( n > 170 || m > 170 ) ? Math.exp( jStat.combinationln( n, m )) : ( jStat.factorial( n ) / jStat.factorial( m )) / jStat.factorial( n - m ); }, combinationln : function( n, m ){ return jStat.factorialln( n ) - jStat.factorialln( m ) - jStat.factorialln( n - m ); }, // permutations of n, m permutation : function( n, m ) { return jStat.factorial( n ) / jStat.factorial( n - m ); }, // beta function betafn : function( x, y ) { // ensure arguments are positive if ( x <= 0 || y <= 0 ) return undefined; // make sure x + y doesn't exceed the upper limit of usable values return ( x + y > 170 ) ? Math.exp( jStat.betaln( x, y )) : jStat.gammafn( x ) * jStat.gammafn( y ) / jStat.gammafn( x + y ); }, // natural logarithm of beta function betaln : function( x, y ) { return jStat.gammaln( x ) + jStat.gammaln( y ) - jStat.gammaln( x + y ); }, // Returns the inverse incomplte gamma function gammapinv : function( p, a ) { var j = 0, a1 = a - 1, EPS = 1e-8, gln = jStat.gammaln( a ), x, err, t, u, pp, lna1, afac; if( p >= 1 ) return Math.max( 100, a + 100 * Math.sqrt( a ) ); if( p <= 0 ) return 0; if( a > 1 ) { lna1 = Math.log( a1 ); afac = Math.exp( a1 * ( lna1 - 1 ) - gln ); pp = ( p < 0.5 ) ? p : 1 - p; t = Math.sqrt( -2 * Math.log( pp )); x = ( 2.30753 + t * 0.27061 ) / ( 1 + t * ( 0.99229 + t * 0.04481 )) - t; if( p < 0.5 ) x = -x; x = Math.max( 1e-3, a * Math.pow( 1 - 1 / ( 9 * a ) - x / ( 3 * Math.sqrt( a )), 3 )); } else { t = 1 - a * ( 0.253 + a * 0.12 ); if( p < t ) x = Math.pow( p / t, 1 / a); else x = 1 - Math.log( 1 - ( p - t ) / ( 1 - t )); } for( ; j < 12; j++ ) { if( x <= 0 ) return 0; err = jStat.gammap( a, x ) - p; if( a > 1 ) t = afac * Math.exp( -( x - a1 ) + a1 * ( Math.log( x ) - lna1 )); else t = Math.exp( -x + a1 * Math.log( x ) - gln ); u = err / t; x -= ( t = u / ( 1 - 0.5 * Math.min( 1, u * ( ( a - 1 ) / x - 1 )))); if( x <= 0 ) x = 0.5 * ( x + t ); if( Math.abs( t ) < EPS * x ) break; } return x; }, // Returns the error function erf(x) erf : function( x ) { var cof = [ -1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2, -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4, 4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6, 1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8, 6.529054439e-9, 5.059343495e-9, -9.91364156e-10, -2.27365122e-10, 9.6467911e-11, 2.394038e-12, -6.886027e-12, 8.94487e-13, 3.13092e-13, -1.12708e-13, 3.81e-16, 7.106e-15, -1.523e-15, -9.4e-17, 1.21e-16, -2.8e-17 ], j = cof.length - 1, isneg = false, d = 0, dd = 0, t, ty, tmp, res; if( x < 0 ) { x = -x; isneg = true; } t = 2 / ( 2 + x ); ty = 4 * t - 2; for( ; j > 0; j-- ) { tmp = d; d = ty * d - dd + cof[j]; dd = tmp; } res = t * Math.exp( -x*x + 0.5 * ( cof[0] + ty * d ) - dd ); return ( isneg ) ? res - 1 : 1 - res; }, // Returns the complmentary error function erfc(x) erfc : function( x ) { return 1 - jStat.erf( x ); }, // Returns the inverse of the complementary error function erfcinv : function( p ) { var j = 0, x, err, t, pp; if( p >= 2 ) return -100; if( p <= 0 ) return 100; pp = ( p < 1 ) ? p : 2 - p; t = Math.sqrt( -2 * Math.log( pp / 2 )); x = -0.70711 * (( 2.30753 + t * 0.27061 ) / ( 1 + t * ( 0.99229 + t * 0.04481)) - t ); for( ; j < 2; j++ ) { err = jStat.erfc( x ) - pp; x += err / ( 1.12837916709551257 * Math.exp( -x * x ) - x * err ); } return ( p < 1 ) ? x : -x; }, // Returns the inverse of the incomplete beta function incompleteBetaInv : function( p, a, b ) { var EPS = 1e-8, a1 = a - 1, b1 = b - 1, j = 0, lna, lnb, pp, t, u, err, x, al, h, w, afac; if( p <= 0 ) return 0; if( p >= 1 ) return 1; if( a >= 1 && b >= 1 ) { pp = ( p < 0.5 ) ? p : 1 - p; t = Math.sqrt( -2 * Math.log( pp )); x = ( 2.30753 + t * 0.27061 ) / ( 1 + t* ( 0.99229 + t * 0.04481 )) - t; if( p < 0.5 ) x = -x; al = ( x * x - 3 ) / 6; h = 2 / ( 1 / ( 2 * a - 1 ) + 1 / ( 2 * b - 1 )); w = ( x * Math.sqrt( al + h ) / h ) - ( 1 / ( 2 * b - 1 ) - 1 / ( 2 * a - 1 )) * ( al + 5 / 6 - 2 / ( 3 * h )); x = a / ( a + b * Math.exp( 2 * w )); } else { lna = Math.log( a / ( a + b )); lnb = Math.log( b / ( a + b )); t = Math.exp( a * lna ) / a; u = Math.exp( b * lnb ) / b; w = t + u; if( p < t / w) x = Math.pow( a * w * p, 1 / a ); else x = 1 - Math.pow( b * w * ( 1 - p ), 1 / b ); } afac = -jStat.gammaln( a ) - jStat.gammaln( b ) + jStat.gammaln( a + b ); for( ; j < 10; j++ ) { if( x === 0 || x === 1) return x; err = jStat.incompleteBeta( x, a, b ) - p; t = Math.exp( a1 * Math.log( x ) + b1 * Math.log( 1 - x ) + afac ); u = err / t; x -= ( t = u / ( 1 - 0.5 * Math.min( 1, u * ( a1 / x - b1 / ( 1 - x ))))); if( x <= 0 ) x = 0.5 * ( x + t ); if( x >= 1 ) x = 0.5 * ( x + t + 1 ); if( Math.abs( t ) < EPS * x && j > 0 ) break; } return x; }, // Returns the incomplete beta function I_x(a,b) incompleteBeta : function( x, a, b ) { // Factors in front of the continued fraction. var bt = ( x === 0 || x === 1 ) ? 0 : Math.exp(jStat.gammaln( a + b ) - jStat.gammaln( a ) - jStat.gammaln( b ) + a * Math.log( x ) + b * Math.log( 1 - x )); if( x < 0 || x > 1 ) return false; if( x < ( a + 1 ) / ( a + b + 2 ) ) // Use continued fraction directly. return bt * betacf( x, a, b ) / a; // else use continued fraction after making the symmetry transformation. return 1 - bt * betacf( 1 - x, b, a ) / b; }, // Returns a normal deviate (mu=0, sigma=1). // If n and m are specified it returns a jstat object of normal deviates. randn : function( n, m ) { var u, v, x, y, q, mat; if ( !m ) m = n; if( n ) { mat = jStat.zeros( n, m ); mat.alter(function() { return jStat.randn(); }); return mat; } do { u = Math.random(); v = 1.7156 * ( Math.random() - 0.5 ); x = u - 0.449871; y = Math.abs( v ) + 0.386595; q = x*x + y * ( 0.19600 * y - 0.25472 * x ); } while( q > 0.27597 && ( q > 0.27846 || v*v > -4 * Math.log( u ) * u*u )); return v / u; }, // Returns a gamma deviate by the method of Marsaglia and Tsang. randg : function( shape, n, m ) { var oalph = shape, a1, a2, u, v, x, mat; if ( !m ) m = n; if ( !shape ) shape = 1; if( n ) { mat = jStat.zeros( n,m ); mat.alter(function() { return jStat.randg( shape ); }); return mat; } if( shape < 1 ) shape += 1; a1 = shape - 1 / 3; a2 = 1 / Math.sqrt( 9 * a1 ); do { do { x = jStat.randn(); v = 1 + a2 * x; } while( v <= 0 ); v = v * v * v; u = Math.random(); } while( u > 1 - 0.331 * Math.pow( x, 4 ) && Math.log( u ) > 0.5 * x*x + a1 * ( 1 - v + Math.log( v ) )); // alpha > 1 if( shape == oalph ) return a1 * v; // alpha < 1 do { u = Math.random(); } while( u === 0 ); return Math.pow( u, 1 / oalph ) * a1 * v; } }); // making use of static methods on the instance (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function() { return jStat( jStat.map( this, function( value ) { return jStat[ passfunc ]( value ); })); }; })( funcs[i] ); })( 'gammaln gammafn factorial factorialln'.split( ' ' )); })( this.jStat, Math ); /*Provides functions for the solution of linear system of equations, integration, extrapolation, * interpolation, eigenvalue problems, differential equations and PCA analysis. */ (function( jStat, Math ) { var push = Array.prototype.push; jStat.extend({ augment : function( a, b ) { var newarr = a.slice(); for ( var i = 0; i < newarr.length; i++ ) { push.apply( newarr[i], b[i] ); } return newarr; }, inv : function( a ) { var rows = a.length, cols = a[0].length, b = jStat.identity( rows, cols ), c = jStat.gauss_jordan( a, b ), obj = [], i = 0, j; for ( ; i < rows; i++ ) { obj[i] = []; for ( j = cols - 1; j < c[0].length; j++ ) obj[i][j - cols] = c[i][j]; } return obj; }, gauss_elimination : function( a, b ) { var i = 0, j = 0, n = a.length, m = a[0].length, factor = 1, sum = 0, x = [], maug, pivot, temp, k; a = jStat.augment( a, b ); maug = a[0].length; for( ; i < n; i++ ) { pivot = a[i][i]; j = i; for ( k = i + 1; k < m; k++ ) { if ( pivot < Math.abs( a[k][i] )) { pivot = a[k][i]; j = k; } } if ( j != i ) { for( k = 0; k < maug; k++ ) { temp = a[i][k]; a[i][k] = a[j][k]; a[j][k] = temp; } } for ( j = i + 1; j < n; j++ ) { factor = a[j][i] / a[i][i]; for( k = i; k < maug; k++) { a[j][k] = a[j][k] - factor * a[i][k]; } } } for ( i = n - 1; i >= 0; i-- ) { sum = 0; for ( j = i + 1; j<= n - 1; j++ ) { sum = x[j] * a[i][j]; } x[i] =( a[i][maug - 1] - sum ) / a[i][i]; } return x; }, gauss_jordan : function( a, b ) { var i = 0, j = 0, n = a.length, m = a[0].length, factor = 1, sum = 0, X=[], temp, pivot, maug, k; a = jStat.augment( a, b ); maug = a[0].length; for ( ; i < n; i++ ) { pivot = a[i][i]; j = i; for ( k = i+1;k< m;k++) { if( pivot < Math.abs( a[k][i] )) { pivot = a[k][i]; j = k; } } if ( j != i ) { for ( ; k < maug; k++ ) { temp = a[i][k]; a[i][k] = a[j][k]; a[j][k] = temp; } } for ( j = 0; j < n; j++ ) { if ( i != j ) { factor = a[j][i] / a[i][i]; for ( k = i; k j ) { l[i][j] = a[i][j]; u[i][j] = d[i][j] = 0; } else if ( i < j ) { u[i][j] = a[i][j]; l[i][j] = d[i][j] = 0; } else { d[i][j] = a[i][j]; l[i][j] = u[i][j] = 0; } } } h = jStat.multiply( jStat.multiply( jStat.inv( d ), jStat.add( l, u )), -1 ); c = jStat.multiply( jStat.inv( d ), b ); xv = x; xk = jStat.add( jStat.multiply( h, x ), c ); i = 2; while ( Math.abs( jStat.norm( jStat.subtract( xk,xv ))) > r ) { xv = xk; xk = jStat.add( jStat.multiply( h, xv ), c ); i++; } return xk; }, gauss_seidel : function( a, b, x, r ) { var i = 0, n = a.length, l = [], u = [], d = [], j, xv, c, h, xk; for ( ; i < n; i++ ) { l[i] = []; u[i] = []; d[i] = []; for ( j = 0; j < n; j++) { if ( i > j ) { l[i][j] = a[i][j]; u[i][j] = d[i][j] = 0; } else if ( i < j ) { u[i][j] = a[i][j]; l[i][j] = d[i][j] = 0; } else { d[i][j] = a[i][j]; l[i][j] = u[i][j] = 0; } } } h = jStat.multiply( jStat.multiply( jStat.inv( jStat.add( d, l )), u ), -1 ); c = jStat.multiply( jStat.inv( jStat.add( d, l )), b ); xv = x; xk = jStat.add( jStat.multiply( h, x ), c ); i = 2; while ( Math.abs( jStat.norm( jStat.subtract( xk, xv ))) > r ) { xv = xk; xk = jStat.add( jStat.multiply( h, xv ), c ); i = i + 1; } return xk; }, SOR : function( a, b, x, r, w ) { var i = 0, n = a.length, l = [], u = [], d = [], j, xv, c, h, xk; for ( ; i < n; i++ ) { l[i] = []; u[i] = []; d[i] = []; for ( j = 0; j < n; j++ ) { if ( i > j ) { l[i][j] = a[i][j]; u[i][j] = d[i][j] = 0; } else if ( i < j ) { u[i][j] = a[i][j]; l[i][j] = d[i][j] = 0; } else { d[i][j] = a[i][j]; l[i][j] = u[i][j] = 0; } } } h = jStat.multiply( jStat.inv( jStat.add( d, jStat.multiply( l, w ))), jStat.subtract( jStat.multiply( d, 1 - w ), jStat.multiply( u, w ))); c = jStat.multiply( jStat.multiply( jStat.inv( jStat.add( d, jStat.multiply( l, w ))), b ), w ); xv = x; xk = jStat.add( jStat.multiply( h, x ), c ); i = 2; while ( Math.abs( jStat.norm( jStat.subtract( xk, xv ))) > r ) { xv = xk; xk = jStat.add( jStat.multiply( h, xv ), c ); i++; } return xk; }, householder : function( a ) { var m = a.length, n = a[0].length, i = 0, w = [], p = [], alpha, r, k, j, factor; for ( ; i < m - 1; i++ ) { alpha = 0; for ( j = i + 1; j < n; j++ ) alpha += ( a[j][i] * a[j][i] ); factor = ( a[i + 1][i] > 0 ) ? -1 : 1; alpha = factor * Math.sqrt( alpha ); r = Math.sqrt(((( alpha * alpha ) - a[i + 1][i] * alpha ) / 2 )); w = jStat.zeros( m, 1 ); w[i + 1][0] = ( a[i + 1][i] - alpha ) / ( 2 * r ); for ( k = i + 2; k < m; k++ ) w[k][0] = a[k][i] / ( 2 * r ); p = jStat.subtract( jStat.identity( m, n ), jStat.multiply( jStat.multiply(w, jStat.transpose( w )), 2 )); a = jStat.multiply( p, jStat.multiply( a, p )); } return a; }, // TODO: not working properly. QR : function( a, b ) { var m = a.length, n = a[0].length, i = 0, w = [], p = [], x = [], j, alpha, r, k, factor,sum; for ( ; i < m - 1; i++ ) { alpha = 0; for ( j = i + 1; j < n; j++ ) alpha += ( a[j][i] * a[j][i] ); factor = ( a[i + 1][i] > 0 ) ? -1 : 1; alpha = factor * Math.sqrt( alpha ); r = Math.sqrt(((( alpha * alpha ) - a[i + 1][i] * alpha ) / 2 )); w = jStat.zeros( m, 1 ); w[i + 1][0] = ( a[i + 1][i] - alpha ) / ( 2 * r ); for ( k = i + 2; k < m; k++ ) w[k][0] = a[k][i] / ( 2 * r ); p = jStat.subtract( jStat.identity( m, n ), jStat.multiply( jStat.multiply( w, jStat.transpose( w )), 2)); a = jStat.multiply( p, a ); b = jStat.multiply( p, b ); } for ( i = m - 1; i >= 0; i-- ) { sum = 0; for ( j = i + 1; j <= n - 1; j++ ) sum = x[j] * a[i][j]; x[i] = b[i][0] / a[i][i]; } return x; }, jacobi : function( a ) { var condition = 1, count = 0, n = a.length, e = jStat.identity( n, n ), ev = [], b, i, j, p, q, maxim, theta, s; // condition === 1 only if tolerance is not reached while ( condition === 1 ) { count++; maxim = a[0][1]; p = 0; q = 1; for ( i = 0; i < n; i++ ) { for ( j = 0; j < n; j++ ) { if ( i != j ) { if ( maxim < Math.abs( a[i][j] )) { maxim = Math.abs( a[i][j] ); p = i; q = j; } } } } if ( a[p][p] === a[q][q] ) theta = ( a[p][q] > 0 ) ? Math.PI / 4 : -Math.PI / 4; else theta = Math.atan( 2 * a[p][q] / ( a[p][p] - a[q][q] )) / 2; s = jStat.identity( n, n ); s[p][p] = Math.cos( theta ); s[p][q] = -Math.sin( theta ); s[q][p] = Math.sin( theta ); s[q][q] = Math.cos( theta ); // eigen vector matrix e = jStat.multiply( e, s ); b = jStat.multiply( jStat.multiply( jStat.inv( s ), a ), s ); a = b; condition = 0; for ( i = 1; i < n; i++ ) { for ( j = 1; j < n; j++ ) { if ( i != j && Math.abs( a[i][j]) > 0.001 ) { condition = 1; } } } } for( i = 0; i < n; i++ ) ev.push( a[i][i] ); //returns both the eigenvalue and eigenmatrix return [e, ev]; }, rungekutta : function( f, h, p, t_j, u_j, order ) { var k1, k2, u_j1, k3, k4; if ( order === 2 ) { while ( t_j <= p ) { k1 = h * f( t_j, u_j ); k2 = h * f( t_j + h, u_j + k1 ); u_j1 = u_j + ( k1 + k2 ) / 2; u_j = u_j1; t_j = t_j + h; } } if ( order === 4 ) { while ( t_j <= p ) { k1 = h * f( t_j, u_j); k2 = h * f( t_j + h / 2, u_j + k1 / 2 ); k3 = h * f( t_j + h / 2, u_j + k2 / 2); k4 = h * f( t_j +h, u_j + k3 ); u_j1 = u_j + ( k1 + 2 * k2 + 2 * k3 + k4 ) / 6; u_j = u_j1; t_j = t_j + h; } } return u_j; }, romberg : function( f, a, b, order ) { var i = 0, h = ( b - a ) / 2, x = [], h1 = [], g = [], m, a1, j, k, I, d; while ( i < order / 2 ) { I = f( a ); for ( j = a, k = 0; j <= b; j = j + h, k++ ) x[k] = j; m = x.length; for ( j = 1; j < m - 1; j++ ) { I += ((( j % 2 ) !== 0 ) ? 4 : 2 ) * f( x[j] ); } I = ( h / 3 ) * ( I + f( b )); g[i] = I; h /= 2; i++; } a1 = g.length; m = 1; while ( a1 !== 1 ) { for ( j = 0; j < a1 - 1; j++ ) h1[j] = (( Math.pow( 4, m )) * g[j + 1] - g[j] ) / ( Math.pow( 4, m ) - 1 ); a1 = h1.length; g = h1; h1 = []; m++; } return g; }, richardson : function( X, f, x, h ) { function pos( X, x ) { var i = 0, n = X.length, p; for ( ; i < n; i++ ) if ( X[i] === x ) p = i; return p; } var n = X.length, h_min = Math.abs( x - X[pos( X, x ) + 1] ), i = 0, g = [], h1 = [], y1, y2, m, a, j; while ( h >= h_min ) { y1 = pos( X, x + h ); y2 = pos( X, x ); g[i] = ( f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / ( h * h ); h /= 2; i++; } a = g.length; m = 1; while ( a != 1 ) { for ( j = 0; j < a - 1; j++ ) h1[j] = (( Math.pow( 4, m )) * g[j + 1] - g[j]) / ( Math.pow( 4, m ) - 1 ); a = h1.length; g = h1; h1 = []; m++; } return g; }, simpson : function( f, a, b, n ) { var h = ( b - a ) / n, I = f( a ), x = [], j = a, k = 0, i = 1, m; for ( ; j <= b; j = j + h, k++ ) x[k] = j; m = x.length; for ( ; i < m - 1; i++ ) { I += (( i % 2 !== 0 ) ? 4 : 2 ) * f( x[i] ); } return ( h / 3 ) * ( I + f( b )); }, hermite : function( X, F, dF, value ) { var n = X.length, p = 0, i = 0, l = [], dl = [], A = [], B = [], j; for ( ; i < n; i++) { l[i] = 1; for ( j = 0; j < n; j++ ) { if ( i != j ) l[i] *= ( value - X[j] ) / ( X[i] - X[j] ); } dl[i] = 0; for ( j = 0; j < n; j++ ) { if ( i != j ) dl[i] += 1 / (X [i] - X[j] ); } A[i] = ( 1 - 2 * ( value - X[i] ) * dl[i] ) * ( l[i] * l[i] ); B[i] = ( value - X[i] ) * ( l[i] * l[i] ); p += ( A[i] * F[i] + B[i] * dF[i] ); } return p; }, lagrange : function( X, F, value ) { var p = 0, i = 0, j, l, n = X.length; for ( ; i < n; i++ ) { l = F[i]; for ( j = 0; j < n; j++ ) { // calculating the lagrange polynomial L_i if ( i != j ) l *= ( value - X[j] ) / ( X[i] - X[j] ); } // adding the lagrange polynomials found above p += l; } return p; }, cubic_spline : function( X, F, value ) { var n = X.length, i = 0, j, A = [], B = [], alpha = [], c = [], h = [], b = [], d = []; for ( ; i < n - 1; i++ ) h[i] = X[i + 1] - X[i]; alpha[0] = 0; for ( i = 1; i < n - 1; i++ ) alpha[i] = ( 3 / h[i] ) * ( F[i + 1] - F[i] ) - ( 3 / h[i-1] ) * ( F[i] - F[i-1] ); for ( i = 1; i < n - 1; i++ ) { A[i] = []; B[i] = []; A[i][i-1] = h[i-1]; A[i][i] = 2 * ( h[i - 1] + h[i] ); A[i][i+1] = h[i]; B[i][0] = alpha[i]; } c = jStat.multiply( jStat.inv( A ), B ); for ( j = 0; j < n - 1; j++ ) { b[j] = ( F[j + 1] - F[j] ) / h[j] - h[j] * ( c[j + 1][0] + 2 * c[j][0] ) / 3; d[j] = ( c[j + 1][0] - c[j][0] ) / ( 3 * h[j] ); } for ( j = 0; j < n; j++ ) { if ( X[j] > value ) break; } j -= 1; return F[j] + ( value - X[j] ) * b[j] + jStat.sq( value-X[j] ) * c[j] + ( value - X[j] ) * jStat.sq( value - X[j] ) * d[j]; }, gauss_quadrature : function() { //TODO }, PCA : function( X ) { var m = X.length, n = X[0].length, flag = false, i = 0, j, temp1, u = [], D = [], result = [], temp2 = [], Y = [], Bt = [], B = [], C = [], V = [], Vt = []; for ( i = 0; i < m; i++ ) { u[i] = jStat.sum( X[i] ) / n; } for ( i = 0; i < n; i++ ) { B[i] = []; for( j = 0; j < m; j++ ) { B[i][j] = X[j][i] - u[j]; } } B = jStat.transpose( B ); for ( i = 0; i < m; i++ ) { C[i] = []; for ( j = 0; j < m; j++ ) { C[i][j] = ( jStat.dot( [B[i]], [B[j]] )) / ( n - 1 ); } } result = jStat.jacobi( C ); V = result[0]; D = result[1]; Vt = jStat.transpose( V ); for ( i = 0; i < D.length; i++ ) { for ( j = i; j < D.length; j++ ) { if( D[i] < D[j] ) { temp1 = D[i]; D[i] = D[j]; D[j] = temp1; temp2 = Vt[i]; Vt[i] = Vt[j]; Vt[j] = temp2; } } } Bt = jStat.transpose( B ); for ( i = 0; i < m; i++ ) { Y[i] = []; for ( j = 0; j < Bt.length; j++ ) { Y[i][j] = jStat.dot( [Vt[i]], [Bt[j]] ); } } return [X, D, Vt, Y]; } }); })( this.jStat, Math ); ================================================ FILE: docs/js/libraries/milkbox.js ================================================ /* Milkbox v3.0.2 - required: mootools.js v1.3 core + more (see the relative js file for details about used modules) by Luca Reghellin (http://www.reghellin.com) September 2011, MIT-style license. Inspiration Lokesh Dhakar (http://www.lokeshdhakar.com/projects/lightbox2/) AND OF COURSE, SPECIAL THANKS TO THE MOOTOOLS DEVELOPERS AND THE OTHER DEVELOPERS HELPING ALL AROUND THE WORLD */ //Class: Milkbox (singleton) (function(){ var milkbox_singleton = null; this.Milkbox = new Class({ Implements:[Options,Events], options:{//set all the options here overlayOpacity:0.7, marginTop:50, initialWidth:250, initialHeight:250, fileboxBorderWidth:'0px', fileboxBorderColor:'#000000', fileboxPadding:'0px', resizeDuration:.5, resizeTransition:'sine:in:out',/*function (ex. Transitions.Sine.easeIn) or string (ex. 'bounce:out')*/ autoPlay:false, autoPlayDelay:7, removeTitle:true, autoSize:true, autoSizeMaxHeight:0,//only if autoSize==true centered:false, imageOfText:'of', onXmlGalleries:function(){}, onClosed:function(){}, onFileReady:function(){} }, initialize: function(options){ if (milkbox_singleton) return milkbox_singleton; milkbox_singleton = this; this.setOptions(options); this.autoPlayBkup = { autoPlayDelay:this.options.autoPlayDelay, autoPlay:this.options.autoPlay }; this.fullOptionsBkup = {}; this.galleries = []; this.formElements = []; this.activated; this.busy = false; this.paused = false; this.closed = true; this.intId; this.loadCheckerId; this.externalGalleries = []; this.singlePageLinkId = 0; this.currentIndex; this.currentGallery; this.fileReady; this.loadedImages = []; this.currentFile; this.options_bkup; this.display; this.getPageGalleries(); if(this.galleries.length != 0){ this.prepare(true); } }, prepare:function(checkForm){ if(checkForm){ this.checkFormElements(); } this.prepareHTML(); this.prepareEventListeners(); this.activated = true; }, //utility open:function(gallery,index){ var i; if(!this.activated){ this.prepare(true); } var g = (instanceOf(gallery,MilkboxGallery)) ? gallery : this.getGallery(gallery); if(!g) return false; // [i_a] when 'index' is not an number, it may be a element reference or string: resolve such indexes too if (typeOf(index) !== 'number') { i = g.get_index_of(index); if(i !== -1){ index = i; } } i = parseInt(index, 10); if(isNaN(i)){ i = 0; } this.closed = false; var item = g.get_item(i); if(!item) return false; this.currentGallery = g; this.currentIndex = i; this.hideFormElements(); this.display.set_mode(this.currentGallery.type); this.display.appear(); if(this.options.autoPlay || g.options.autoplay){ this.startAutoPlay(true); } this.loadFile(item,this.getPreloads()); return true; }, //utility close:function(hideDisplay){ if(hideDisplay){ this.display.disappear(); } this.showFormElements(); this.pauseAutoPlay(); this.stopLoadingCheck(); this.currentGallery = null; this.currentIndex = null; this.currentFile = null; this.busy = false; this.paused = false; this.fileReady = false; this.closed = true; this.fireEvent('close'); }, startAutoPlay:function(opening){ var d = this.currentGallery.options.autoplay_delay || this.options.autoPlayDelay; if(d < this.options.resizeDuration*2){ d = this.options.resizeDuration*2 }; var f = function(){ this.removeEvent('fileReady',f); this.intId = this.navAux.periodical(d*1000,this,[null,'next']); } if(opening){ this.addEvent('fileReady',f); } else { this.intId = this.navAux.periodical(d*1000,this,[null,'next']); } this.paused = false; }, pauseAutoPlay:function(){ if(this.intId){ clearInterval(this.intId); this.intId = null; } this.paused = true; }, //utility //list:Array of objects or an object > [ { gallery:'gall1', autoplay:true, delay:6 } ] //to permanently define autoplay options for any gallery setAutoPlay:function(list){ var l = (typeOf(list) == 'object') ? [list] : list; l.each(function(item){ var g = this.getGallery(item.gallery); if(!g){ return; } var a = (item.autoplay == true) ? item.autoplay : false; var d = (item.delay && a) ? item.delay : this.options.autoPlayDelay; g.setOptions({ autoplay:a, autoplay_delay:d }).refresh(); },this); }, //utility //{href:'file1.jpg',size:'width:900,height:100', title:'text'} //show a file on the fly without gallery functionalities openWithFile:function(file, options){ if(!this.activated){ this.prepare(); } if(options){ this.refreshDisplay(options,true);//set custom options } var g = new MilkboxGallery([file],{ remove_title:this.options.removeTitle }); this.open(g,0); }, getPreloads:function(){ var items = this.currentGallery.items; var index = this.currentIndex; if(items.length == 1) return null; var next = (index != items.length-1) ? items[index+1] : items[0]; var prev = (index != 0) ? items[index-1] : items[items.length-1]; var preloads = (prev == next) ? [prev] : [prev,next]; //if gallery.length == 2, then prev == next return preloads; }, //LOADING loadFile:function(fileObj,preloads){ this.fileReady = false; this.display.clear_content(); this.display.hide_bottom(); if(this.checkFileType(fileObj,'swf')){ this.loadSwf(fileObj); } else if (this.checkFileType(fileObj,'html')){ this.loadHtml(fileObj); } else {//filetype:image this.loadImage(fileObj); } if(!this.checkFileType(fileObj,'swf')) this.startLoadingCheck(); if(preloads){ this.preloadFiles(preloads); } }, //to prevent the loader to show if the file is cached startLoadingCheck:function(){ var t = 0; if (!this.loadCheckerId) { this.loadCheckerId = (function(){ t+=1; if(t > 5){ if (this.loadCheckerId) { // only show the loader when the timer has not been cleared yet! this.display.show_loader(); } this.stopLoadingCheck(); } }).periodical(100,this); }//end if }, stopLoadingCheck:function(){ clearInterval(this.loadCheckerId); }, preloadFiles:function(preloads){ preloads.each(function(fileObj,index){ if(!this.checkFileType(fileObj,"swf") && !this.checkFileType(fileObj,"html")){ this.preloadImage(fileObj.href); } },this); }, preloadImage:function(file){ if(!this.loadedImages.contains(file)){ var imageAsset = new Asset.image(file, { onLoad:function(){ this.loadedImages.push(file); }.bind(this) }); } }, loadImage:function(fileObj){ var file = fileObj.href; var imageAsset = new Asset.image(file, { onLoad:function(img){ if(!this.loadedImages.contains(file)){ this.loadedImages.push(file); };//see next/prev events this.loadComplete(img,fileObj.caption); }.bind(this) }); }, loadSwf:function(fileObj){ var swfObj = new Swiff(fileObj.href,{ width:fileObj.size.width, height:fileObj.size.height, vars:fileObj.vars, params:{ wMode:'opaque', swLiveConnect:'false' } }); this.loadComplete($(swfObj),fileObj.caption); }, loadHtml:function(fileObj){ var query = (fileObj.vars ? '?' + Object.toQueryString(fileObj.vars) : ''); var iFrame = new Element('iframe',{ 'src':fileObj.href+query, 'frameborder':0,//for IE... styles:{ 'border':'none' } }); if(fileObj.size){ iFrame.set({ 'width':fileObj.size.width, 'height':fileObj.size.height }); } this.loadComplete(iFrame,fileObj.caption); },//loadHtml //LOAD COMPLETE ********// loadComplete:function(file,caption){ if(this.closed) return;//if an onload event were still running this.fileReady = true;//the file is loaded and ready to be showed (see next_prev_aux()) this.stopLoadingCheck(); this.currentFile = file; var timer; timer = (function(){ if(this.display.ready){ if (this.currentGallery.items != null) { this.display.show_file(file,caption,this.currentIndex+1,this.currentGallery.items.length); } clearInterval(timer); }//end if }).periodical(100,this); this.fireEvent('fileReady'); },//end loadComplete checkFileType:function(file,type){ var href = (typeOf(file) != 'string') ? file.href : file; var regexp = new RegExp("\.("+type+")$","i"); return href.split('?')[0].test(regexp); }, //GALLERIES getPageGalleries:function(){ var names = []; var links = $$('a[data-milkbox]'); //check names links.each(function(link){ var name = link.get('data-milkbox'); if(name == 'single'){ this.galleries.push(new MilkboxGallery(link,{name:'single'+this.singlePageLinkId++, remove_title:this.options.removeTitle })); } else if(!names.contains(name)){ names.push(name); } },this); names.each(function(name){ this.galleries.push(new MilkboxGallery($$('a[data-milkbox='+name+']'),{ name:name, remove_title:this.options.removeTitle })); },this); //set default autoplay // override with setAutoPlay if(this.options.autoPlay){ this.galleries.each(function(g){ g.setOptions({autoplay:this.options.autoPlay,autoplay_delay:this.options.autoPlayDelay}); }); } },//getPageGalleries reloadPageGalleries:function(){ //reload page galleries this.removePageGalleryEvents(); this.galleries = this.galleries.filter(function(gallery){ if(!gallery.external) gallery.clear(); return gallery.external; }); this.getPageGalleries(); this.addPageGalleriesEvents(); if(!this.activated){ this.prepare(true); } },//end reloadPageGalleries //list: optional. Can be a single string/object or an array of strings/objects resetExternalGalleries:function(list){ this.galleries = this.galleries.filter(function(gallery){ if(gallery.external) gallery.clear(); return !gallery.external; }); if(!list) return; var array = (typeOf(list) == 'array') ? list : [list]; array.each(function(data){ this.addGalleries(data); }, this); }, //utility addGalleries:function(data){ if(!this.activated){ this.prepare(true); } if (typeOf(data) == 'string' && data.split('?')[0].test(/\.(xml)$/i)) { this.loadXml(data); } else {//array or object this.setObjectGalleries(data); } if(!this.activated){ this.prepare(true); } }, loadXml:function(xmlfile){ var r = new Request({ method:'get', autoCancel:true, url:xmlfile, onRequest:function(){ //placeholder }.bind(this), onSuccess:function(text,xml){ var t = text.replace(/(/gi,"$1>"); this.setXmlGalleries(new Element('div',{ html:t })); }.bind(this), onFailure:function(transport){ alert('Milkbox :: loadXml: XML file path error or local Ajax test: please test xml galleries on-line'); } }).send(); }, setXmlGalleries:function(container){ var c = container; var xml_galleries = c.getElements('.gallery'); var links; var aplist = []; xml_galleries.each(function(xml_gallery,i){ var options = { name:xml_gallery.getProperty('name'), autoplay:Boolean(xml_gallery.getProperty('autoplay')), autoplay_delay:Number(xml_gallery.getProperty('autoplay_delay')) } var links = xml_gallery.getChildren('a').map(function(tag){ return { href:tag.href, size:tag.get('data-milkbox-size'), title:tag.get('title') } },this); this.galleries.push(new MilkboxGallery(links,options)); },this); this.fireEvent('xmlGalleries'); },//end setXmlGalleries //[{ name:'gall1', autoplay:true, autoplay_delay:7, files:[{href:'file1.jpg',size:'width:900,height:100', title:'text'},{href:'file2.html',size:'w:800,h:200', title:'text'}] },{...},{...}] setObjectGalleries:function(data){ var array = (typeOf(data) == 'array') ? data : [data]; array.each(function(newobj){ var options = { name:newobj.name, autoplay:newobj.autoplay, autoplay_delay:newobj.autoplay_delay } this.galleries.push(new MilkboxGallery(newobj.files,options)); },this); }, //utility getGallery:function(name){ var g = this.galleries.filter(function(gallery){ return gallery.name == name; },this); return g[0] || null; }, //HTML prepareHTML:function(){ this.display = new MilkboxDisplay({ initialWidth:this.options.initialWidth, initialHeight:this.options.initialHeight, overlayOpacity:this.options.overlayOpacity, marginTop:this.options.marginTop, fileboxBorderWidth:this.options.fileboxBorderWidth, fileboxBorderColor:this.options.fileboxBorderColor, fileboxPadding:this.options.fileboxPadding, resizeDuration:this.options.resizeDuration, resizeTransition:this.options.resizeTransition, centered:this.options.centered, autoSize:this.options.autoSize, autoSizeMaxHeight:this.options.autoSizeMaxHeight, imageOfText:this.options.imageOfText }); }, refreshDisplay:function(options,keepBackup){ if(!this.activated) return; var options_bkup = this.display.options;//save original options var new_options = Object.merge({},options_bkup,options); if(this.display){ this.display.clear() } this.display = new MilkboxDisplay(new_options); this.addDisplayEvents(); if(keepBackup){ this.options_bkup = options_bkup;//restored in close(); } else { this.options_bkup = null; } }, checkFormElements:function(){ this.formElements = $$('select, textarea'); if(this.formElements.length == 0) return; this.formElements = this.formElements.map(function(elem){ elem.store('visibility',elem.getStyle('visibility')); elem.store('display',elem.getStyle('display')); return elem; }); }, hideFormElements:function(){ if(this.formElements.length == 0) return; this.formElements.each(function(elem){ elem.setStyle('display','none'); }); }, showFormElements:function(){ if(this.formElements.length == 0) return; this.formElements.each(function(elem){ elem.setStyle('visibility',elem.retrieve('visibility')); elem.setStyle('display',elem.retrieve('display')); }) }, //EVENTS addPageGalleriesEvents:function(){ var pageGalleries = this.galleries.filter(function(gallery){ return !gallery.external }); pageGalleries.each(function(gallery){ gallery.items.each(function(item){ item.element.addEvent('click',function(e){ e.preventDefault(); this.open(gallery.name,gallery.get_index_of(item)); }.bind(this)); },this); },this); }, removePageGalleryEvents:function(){ var pageGalleries = this.galleries.filter(function(gallery){ return !gallery.external }); pageGalleries.each(function(gallery){ gallery.items.each(function(item){ item.element.removeEvents('click'); }); }); }, addDisplayEvents:function(){ this.display.addEvent('nextClick',function(){ this.navAux(true,'next'); }.bind(this)); this.display.addEvent('prevClick',function(){ this.navAux(true,'prev'); }.bind(this)); this.display.addEvent('playPauseClick',function(){ if(this.paused){ this.startAutoPlay(); } else { this.pauseAutoPlay(); } this.display.set_paused(this.paused); }.bind(this)); this.display.addEvent('disappear',function(){ if(this.options_bkup){ this.refreshDisplay(this.options_bkup); } this.close(false); }.bind(this)); this.display.addEvent('resizeComplete',function(){ this.busy = false;//see navAux }.bind(this)); }, prepareEventListeners:function(){ this.addPageGalleriesEvents(); this.addDisplayEvents(); //reset overlay height and position onResize window.addEvent('resize',function(){ if(this.display.ready){ this.display.resetOverlaySize(); } }.bind(this)); //keyboard next/prev/close window.document.addEvent('keydown',function(e){ if(this.busy == true || this.closed){ return; } if(e.key == 'right' || e.key == 'left' || e.key == 'space'){ e.preventDefault(); } if(this.display.mode != 'single'){ if(e.key == 'right' || e.key == 'space'){ this.navAux(e,'next'); } else if(e.key == 'left'){ this.navAux(e,'prev'); } } if(e.key == 'esc'){ this.display.disappear(); } }.bind(this)); }, navAux:function(e,direction){ if(e){//called from a button/key event this.pauseAutoPlay(); } else {//called from autoplay if(this.busy || !this.fileReady){ return; }//prevent autoplay() } this.busy = true; //for keyboard and autoplay var i, _i; if(direction == "next"){ i= (this.currentIndex != this.currentGallery.items.length-1) ? this.currentIndex += 1 : this.currentIndex = 0; _i= (this.currentIndex != this.currentGallery.items.length-1) ? this.currentIndex + 1 : 0; } else { i= (this.currentIndex != 0) ? this.currentIndex -= 1 : this.currentIndex = this.currentGallery.items.length-1; _i= (this.currentIndex != 0) ? this.currentIndex - 1 : this.currentGallery.items.length-1; }; this.loadFile(this.currentGallery.get_item(i),[this.currentGallery.get_item(_i)]); } });//END MILKBOX CLASS CODE })();//END SINGLETON CODE var MilkboxDisplay= new Class({ Implements:[Options,Events], options:{ initialWidth:100, initialHeight:100, overlayOpacity:1, marginTop:0, fileboxBorderWidth:'0px', fileboxBorderColor:'#000000', fileboxPadding:'0px', resizeDuration:.5, resizeTransition:'sine:in:out', centered:false, autoSize:false, autoSizeMaxHeight:0, imageOfText:'of', onNextClick:function(){}, onPrevClick:function(){}, onPlayPause:function(){}, onDisappear:function(){}, onResizeComplete:function(){} }, initialize: function(options){ this.setOptions(options); this.overlay; this.mainbox; this.filebox; this.bottom; this.controls; this.caption; this.close; this.next; this.prev; this.playpause; this.paused = false; this.count; this.mode = 'standard'; this.ready = false;//after overlay and mainbox become visible == true this.overlay_show_fx; this.overlay_hide_fx; this.mainbox_show_fx; this.mainbox_hide_fx; this.mainbox_resize_fx; this.current_file = null; this.build_html(); this.prepare_effects(); this.prepare_events(); },//end init build_html:function(){ this.overlay = new Element('div', { 'id':'mbox-overlay', 'styles':{ 'visibility':'visible', 'position':'fixed', 'display':'none', 'left':0, 'width':'100%', 'opacity':0, 'height':0, 'overflow':'hidden', 'margin':0, 'padding':0 } }).inject($(document.body)); this.mainbox = new Element('div', { 'id':'mbox-mainbox', 'styles': { 'position':(this.options.centered) ? 'fixed' : 'absolute', 'overflow':'hidden', 'display':'none', 'z-index':50001,//overlay z-index (see css) + 1 'width':this.options.initialWidth, 'height':this.options.initialHeight, 'opacity':0, 'margin':0, 'left':'50%', 'marginLeft':-(this.options.initialWidth/2), 'marginTop':(this.options.centered) ? -(this.options.initialHeight/2) : '', 'top':(this.options.centered) ? '50%' : '' } }).inject($(document.body)); this.filebox = new Element('div',{ 'id':'mbox-filebox', 'styles':{ 'border-style':'solid', 'border-width':this.options.fileboxBorderWidth, 'border-color':this.options.fileboxBorderColor, 'padding':this.options.fileboxPadding, 'opacity':0 } }).inject(this.mainbox); this.bottom = new Element('div#mbox-bottom').setStyle('visibility','hidden').inject(this.mainbox); this.controls = new Element('div#mbox-controls'); this.caption = new Element('div#mbox-caption',{'html':'test'}).setStyle('display','none'); this.bottom.adopt(new Element('div.mbox-reset'),this.controls, this.caption, new Element('div.mbox-reset')); this.close = new Element('div#mbox-close'); this.next = new Element('div#mbox-next'); this.prev = new Element('div#mbox-prev'); this.playpause = new Element('div#mbox-playpause'); this.count = new Element('div#mbox-count'); $$(this.next, this.prev, this.close, this.playpause).setStyles({ 'outline':'none', 'cursor':'pointer' }); this.controls.adopt(new Element('div.mbox-reset'), this.close, this.next, this.prev, this.playpause, new Element('div.mbox-reset'), this.count); }, prepare_effects:function(){ this.overlay_show_fx = new Fx.Tween(this.overlay,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){ this.element.setStyles({ 'top':-window.getScroll().y, 'height':window.getScrollSize().y+window.getScroll().y, 'display':'block' }); }, onComplete:function(){ this.mainbox_show_fx.start(1); }.bind(this) }); this.overlay_hide_fx = new Fx.Tween(this.overlay,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){}, onComplete:function(){ this.overlay.setStyle('display','none'); this.fireEvent('disappear'); }.bind(this) }); this.mainbox_show_fx = new Fx.Tween(this.mainbox,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){ this.mainbox.setStyle('display','block'); }.bind(this), onComplete:function(){ this.ready = true; }.bind(this) }); this.mainbox_hide_fx = new Fx.Tween(this.mainbox,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){ this.ready = false; }.bind(this), onComplete:function(){ this.overlay.setStyle('display','none'); }.bind(this) }); this.mainbox_resize_fx = new Fx.Morph(this.mainbox,{ duration:this.options.resizeDuration*1000, transition:this.options.resizeTransition, link:'cancel', onStart:function(){ this.filebox.setStyle('opacity',0) }.bind(this), onComplete:function(){ this.show_bottom(); this.filebox.setStyle('height',this.current_file.height+'px'); this.filebox.grab(this.current_file).tween('opacity',1); this.fireEvent('resizeComplete'); }.bind(this) }); this.filebox.set('tween',{ duration:'short', link:'chain' }); },//end prepare_effects prepare_events:function(){ $$(this.overlay,this.close).addEvent('click', function(){ this.disappear(); }.bind(this)); this.prev.addEvent('click',function(){ this.fireEvent('prevClick') }.bind(this)); this.next.addEvent('click',function(){ this.fireEvent('nextClick') }.bind(this)); this.playpause.addEvent('click',function(){ this.fireEvent('playPauseClick') }.bind(this) ); }, show_file:function(file,caption,index,length){ this.hide_loader(); if(file.match && file.match('img') && (this.options.autoSize || this.options.centered)){ var file = this.get_resized_image(file); }; var file_size = { w:file.width.toInt(), h:file.height.toInt() }; if(!file_size.w || !file_size.h){ alert('Milkbox error: you must pass size values if the file is swf or html or a free file (openWithFile)'); return; }//data-milkbox-size not passed file_size = Object.map(file_size,function(value){ return value.toInt(); }); this.caption.innerHTML = (caption) ? caption : ''; this.update_count(index,length); var filebox_addsize = this.filebox.getStyle('border-width').toInt()*2+this.filebox.getStyle('padding').toInt()*2; var final_w = file_size.w+filebox_addsize; //so now I can predict the caption height var caption_adds = this.caption.getStyles('paddingRight','marginRight'); this.caption.setStyle('width',final_w-caption_adds.paddingRight.toInt()-caption_adds.marginRight.toInt()); $$(this.bottom,this.controls).setStyle('height',Math.max(this.caption.getDimensions().height,this.controls.getComputedSize().totalHeight)); var mainbox_size = this.mainbox.getComputedSize(); var final_h = file_size.h+filebox_addsize+this.bottom.getComputedSize().totalHeight; var target_size = { w:final_w, h:final_h, total_w:final_w+mainbox_size.totalWidth-mainbox_size.width, total_h:final_h+mainbox_size.totalHeight-mainbox_size.height } this.current_file = file; this.resize_to(target_size); },//show_file //image:, maxsize:{ w,h } get_resized_image:function(image){ var max_size; var ratio; var check; var i_size = { w:image.get('width').toInt(), h:image.get('height').toInt() }; //cut out some pixels to make it better var w_size = window.getSize(); var max_size = { w:w_size.x-60, h:w_size.y-68-this.options.marginTop*2 }; var max_dim = Math.max( max_size.h, max_size.w ); if(max_dim == max_size.w){ ratio = max_dim/i_size.w; check = 'h'; } else { ratio = max_dim/i_size.h; check = 'w'; } ratio = (ratio <= 1) ? ratio : 1; i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); ratio = (max_size[check]/i_size[check] <= 1) ? max_size[check]/i_size[check] : 1; i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); if(this.options.autoSizeMaxHeight > 0){ ratio = (this.options.autoSizeMaxHeight/i_size.height < 1) ? this.options.autoSizeMaxHeight/i_size.height : 1; i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); } image.set({ 'width':i_size.w, 'height':i_size.h }); return image; },//get_resized_image resize_to:function(target_size){ this.mainbox_resize_fx.start({ 'width':target_size.w, 'height':target_size.h, 'marginLeft':-(target_size.total_w/2).round(), 'marginTop':(this.options.centered) ? -(target_size.total_h/2).round() : '' }); }, show_loader:function(){ this.mainbox.addClass('mbox-loading'); }, hide_loader:function(){ this.mainbox.removeClass('mbox-loading'); }, clear_content:function(){ this.filebox.empty(); this.caption.empty(); this.count.empty(); $$(this.bottom,this.controls).setStyle('height',''); }, hide_bottom:function(){ this.caption.setStyle('display','none'); this.bottom.setStyle('visibility','hidden'); }, show_bottom:function(){ this.caption.setStyle('display','block'); this.bottom.setStyle('visibility','visible'); }, appear:function(){ if(!this.options.centered){ this.mainbox.setStyle('top',window.getScroll().y+this.options.marginTop); } this.overlay_show_fx.start(this.options.overlayOpacity); }, disappear:function(){ this.cancel_effects(); this.current_file = null; this.ready = false; this.mode = 'standard'; $$(this.prev, this.next, this.playpause, this.count).setStyle('display','none'); this.playpause.setStyle('backgroundPosition','0 0'); this.count.empty(); this.caption.setStyle('display','none').empty(); this.bottom.setStyle('visibility','hidden'); //TODO anche opacity a 0 se si usa un tween per il file this.filebox.setStyle('height','').empty(); this.mainbox.setStyles({ 'opacity':0, 'display':'none', 'width':this.options.initialWidth, 'height':this.options.initialHeight, 'marginLeft':-(this.options.initialWidth/2), 'marginTop':(this.options.centered) ? -(this.options.initialHeight/2) : '', 'top':(this.options.centered) ? '50%' : '' }); this.filebox.setStyle('opacity',0); this.overlay_hide_fx.start(0); //this.fireEvent('disappear'); },//end disappear cancel_effects:function(){ [this.mainbox_resize_fx, this.mainbox_hide_fx, this.mainbox_show_fx, this.overlay_hide_fx, this.overlay_show_fx ].each(function(fx){ fx.cancel(); }); }, set_mode:function(gallery_type){ this.mode = gallery_type; var close_w = this.close.getComputedSize().width; var prev_w = this.prev.getComputedSize().width; var next_w = this.next.getComputedSize().width; var playpause_w = this.playpause.getComputedSize().width; var offset = this.mainbox.getStyle('border-right-width').toInt();//for design purposes switch(gallery_type){ case 'autoplay': $$(this.playpause,this.close,this.next,this.prev,this.count).setStyle('display','block'); this.controls.setStyle('width',close_w+prev_w+next_w+playpause_w+offset); break; case 'single': $$(this.playpause,this.next,this.prev,this.count).setStyle('display','none'); this.controls.setStyle('width',close_w+offset); break; case 'standard': $$(this.close,this.next,this.prev,this.count).setStyle('display','block'); this.playpause.setStyle('display','none'); this.controls.setStyle('width',close_w+prev_w+next_w+offset); break; default: return; } this.caption.setStyle('margin-right',this.controls.getComputedSize().totalWidth); },//end set_mode set_paused:function(paused){ this.paused = paused; var pos = (this.paused) ? '0 -66px' : ''; this.playpause.setStyle('background-position',pos); }, update_count:function(index,length){ this.count.set('text',index+' '+this.options.imageOfText+' '+length); }, resetOverlaySize:function(){ if(this.overlay.getStyle('opacity') == 0){ return; };//resize only if visible var h = window.getSize().y; this.overlay.setStyles({ 'height':h }); }, clear:function(){ this.overlay.destroy(); this.mainbox.destroy(); } });//END //Class: MilkboxGallery //args: source,options // *source: element, elements, array // *options: name, autoplay, autoplay_delay var MilkboxGallery = new Class({ Implements:[Options,Events], options:{//set all the options here name:null, autoplay:null, autoplay_delay:null, remove_title:true }, initialize:function(source,options){ this.setOptions(options); this.source = source; this.external = false; this.items = null; this.name = this.options.name; this.type = null;//'autoplay','standard','single' this.prepare_gallery(); this.prepare_elements(); }, prepare_gallery:function(){ switch(typeOf(this.source)){ case 'element'://single if(this.check_extension(this.source.href)){ this.items = [this.source]; } else{ alert('Wrong file extension: '+this.source.href); } break; case 'elements'://html this.items = this.source.filter(function(link){ return this.check_extension(link.href); },this); break; case 'array'://xml, array this.items = this.source.filter(function(link){ return this.check_extension(link.href); },this); this.external = true; break; default: return; } if(this.items.length == 0){ alert('Warning: gallery '+this.name+' is empty'); } }, //turns everything into an object prepare_elements:function(){ this.items = this.items.map(function(item){ var splitted_url = item.href.split('?'); var output = {}; output.element = (typeOf(item) == 'element') ? item : null; output.href = splitted_url[0]; output.vars = (splitted_url[1]) ? splitted_url[1].parseQueryString() : null; output.size = null; output.caption = (output.element) ? output.element.get('title') : item.title; if(this.options.remove_title && output.element){ output.element.removeProperty('title') } var size_string = (output.element) ? output.element.get('data-milkbox-size') : item.size; if(size_string){ output.size = Object.map(this.get_item_props(size_string),function(value,key){ return value.toInt(); }); } return output; },this); if(this.items.length == 0) return; this.type = (this.items.length == 1) ? 'single' : (this.options.autoplay) ? 'autoplay' : 'standard'; }, check_extension:function(string){ return string.split('?')[0].test(/\.(gif|jpg|jpeg|png|swf|html)$/i); }, get_index_of:function(item){ var index = (typeOf(item) == 'string') ? this.items.indexOf(this.items.filter(function(i){ return i.href === item; })[0]) : this.items.indexOf(item); return this.items.indexOf(item); }, get_item:function(index){ return this.items[index]; }, get_item_props:function(prop_string){ var props = {}; var s = prop_string.split(',').each(function(p,i){ var clean = p.trim().split(':'); props[clean[0].trim()] = clean[1].trim(); },this); return props; }, refresh:function(){ this.type = (this.items.length == 1) ? 'single' : (this.options.autoplay) ? 'autoplay' : 'standard'; }, clear:function(){ this.source = null; this.items = null; } });//end MilkboxGallery //Creating Milkbox instance: you can comment this code and instantiate Milkbox somewhere else instead. /* window.addEvent('domready', function(){ //milkbox = new Milkbox({overlayOpacity:1, fileboxBorderWidth:'10px', fileboxBorderColor:'#ff0000', fileboxPadding:'20px', centered:true}); milkbox = new Milkbox({ centered:true }); }); */ ================================================ FILE: docs/js/libraries/mootools-more-1.4.0.1.js ================================================ // MooTools: the javascript framework. // Load this file's selection again by visiting: http://mootools.net/more/065f2f092ece4e3b32bb5214464cf926 // Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Measure More/Element.Pin More/Element.Position More/Element.Shortcuts More/Form.Request More/Form.Request.Append More/Form.Validator More/Form.Validator.Inline More/Form.Validator.Extras More/OverText More/Fx.Elements More/Fx.Accordion More/Fx.Move More/Fx.Reveal More/Fx.Scroll More/Fx.Slide More/Fx.SmoothScroll More/Fx.Sort More/Drag More/Drag.Move More/Slider More/Sortables More/Request.JSONP More/Request.Queue More/Request.Periodical More/Assets More/Color More/Group More/Hash.Cookie More/IframeShim More/Table More/HtmlTable More/HtmlTable.Zebra More/HtmlTable.Sort More/HtmlTable.Select More/Keyboard More/Keyboard.Extras More/Mask More/Scroller More/Tips More/Spinner More/Locale More/Locale.Set.From More/Locale.en-US.Date More/Locale.en-US.Form.Validator More/Locale.en-US.Number More/Locale.ar.Date More/Locale.ar.Form.Validator More/Locale.ca-CA.Date More/Locale.ca-CA.Form.Validator More/Locale.cs-CZ.Date More/Locale.cs-CZ.Form.Validator More/Locale.da-DK.Date More/Locale.da-DK.Form.Validator More/Locale.de-CH.Date More/Locale.de-CH.Form.Validator More/Locale.de-DE.Date More/Locale.de-DE.Form.Validator More/Locale.de-DE.Number More/Locale.en-GB.Date More/Locale.es-AR.Date More/Locale.es-AR.Form.Validator More/Locale.es-ES.Date More/Locale.es-ES.Form.Validator More/Locale.et-EE.Date More/Locale.et-EE.Form.Validator More/Locale.EU.Number More/Locale.fa.Date More/Locale.fa.Form.Validator More/Locale.fi-FI.Date More/Locale.fi-FI.Form.Validator More/Locale.fi-FI.Number More/Locale.fr-FR.Date More/Locale.fr-FR.Form.Validator More/Locale.fr-FR.Number More/Locale.he-IL.Date More/Locale.he-IL.Form.Validator More/Locale.he-IL.Number More/Locale.hu-HU.Date More/Locale.hu-HU.Form.Validator More/Locale.it-IT.Date More/Locale.it-IT.Form.Validator More/Locale.ja-JP.Date More/Locale.ja-JP.Form.Validator More/Locale.ja-JP.Number More/Locale.nl-NL.Date More/Locale.nl-NL.Form.Validator More/Locale.nl-NL.Number More/Locale.no-NO.Date More/Locale.no-NO.Form.Validator More/Locale.pl-PL.Date More/Locale.pl-PL.Form.Validator More/Locale.pt-BR.Date More/Locale.pt-BR.Form.Validator More/Locale.pt-PT.Date More/Locale.pt-PT.Form.Validator More/Locale.ru-RU-unicode.Date More/Locale.ru-RU-unicode.Form.Validator More/Locale.si-SI.Date More/Locale.si-SI.Form.Validator More/Locale.sv-SE.Date More/Locale.sv-SE.Form.Validator More/Locale.uk-UA.Date More/Locale.uk-UA.Form.Validator More/Locale.zh-CH.Date More/Locale.zh-CH.Form.Validator /* --- copyrights: - [MooTools](http://mootools.net) licenses: - [MIT License](http://mootools.net/license.txt) ... */ MooTools.More={version:"1.4.0.1",build:"a4244edf2aa97ac8a196fc96082dd35af1abab87"};(function(){Events.Pseudos=function(h,e,f){var d="_monitorEvents:";var c=function(i){return{store:i.store?function(j,k){i.store(d+j,k); }:function(j,k){(i._monitorEvents||(i._monitorEvents={}))[j]=k;},retrieve:i.retrieve?function(j,k){return i.retrieve(d+j,k);}:function(j,k){if(!i._monitorEvents){return k; }return i._monitorEvents[j]||k;}};};var g=function(k){if(k.indexOf(":")==-1||!h){return null;}var j=Slick.parse(k).expressions[0][0],p=j.pseudos,i=p.length,o=[]; while(i--){var n=p[i].key,m=h[n];if(m!=null){o.push({event:j.tag,value:p[i].value,pseudo:n,original:k,listener:m});}}return o.length?o:null;};return{addEvent:function(m,p,j){var n=g(m); if(!n){return e.call(this,m,p,j);}var k=c(this),r=k.retrieve(m,[]),i=n[0].event,l=Array.slice(arguments,2),o=p,q=this;n.each(function(s){var t=s.listener,u=o; if(t==false){i+=":"+s.pseudo+"("+s.value+")";}else{o=function(){t.call(q,s,u,arguments,o);};}});r.include({type:i,event:p,monitor:o});k.store(m,r);if(m!=i){e.apply(this,[m,p].concat(l)); }return e.apply(this,[i,o].concat(l));},removeEvent:function(m,l){var k=g(m);if(!k){return f.call(this,m,l);}var n=c(this),j=n.retrieve(m);if(!j){return this; }var i=Array.slice(arguments,2);f.apply(this,[m,l].concat(i));j.each(function(o,p){if(!l||o.event==l){f.apply(this,[o.type,o.monitor].concat(i));}delete j[p]; },this);n.store(m,j);return this;}};};var b={once:function(e,f,d,c){f.apply(this,d);this.removeEvent(e.event,c).removeEvent(e.original,f);},throttle:function(d,e,c){if(!e._throttled){e.apply(this,c); e._throttled=setTimeout(function(){e._throttled=false;},d.value||250);}},pause:function(d,e,c){clearTimeout(e._pause);e._pause=e.delay(d.value||250,this,c); }};Events.definePseudo=function(c,d){b[c]=d;return this;};Events.lookupPseudo=function(c){return b[c];};var a=Events.prototype;Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent)); ["Request","Fx"].each(function(c){if(this[c]){this[c].implement(Events.prototype);}});})();Class.refactor=function(b,a){Object.each(a,function(e,d){var c=b.prototype[d]; c=(c&&c.$origin)||c||function(){};b.implement(d,(typeof e=="function")?function(){var f=this.previous;this.previous=c;var g=e.apply(this,arguments);this.previous=f; return g;}:e);});return b;};Class.Mutators.Binds=function(a){if(!this.prototype.initialize){this.implement("initialize",function(){});}return Array.from(a).concat(this.prototype.Binds||[]); };Class.Mutators.initialize=function(a){return function(){Array.from(this.Binds).each(function(b){var c=this[b];if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments); };};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property);if(a&&!this.occluded){return(this.occluded=a); }this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this); return this;}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);}if(this.Element&&Element.implement&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c); if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}})();(function(a){Array.implement({min:function(){return Math.min.apply(null,this); },max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var b=0,c=this.length; if(c){while(c--){b+=this[c];}}return b;},unique:function(){return[].combine(this);},shuffle:function(){for(var c=this.length;c&&--c;){var b=this[c],d=Math.floor(Math.random()*(c+1)); this[c]=this[d];this[d]=b;}return this;},reduce:function(d,e){for(var c=0,b=this.length;c3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)]; },lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"}); (function(){var a=this.Date;var f=a.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(s){a.Methods[s.toLowerCase()]=s; });var p=function(u,t,s){if(t==1){return u;}return u28){return 1;}if(y==0&&s<-2){x=new a(x).decrement("day",u); u=0;}w=new a(x.get("year"),0,1).get("day")||7;if(w>4){t=-7;}}else{w=new a(x.get("year"),0,1).get("day");}t+=x.get("dayofyear");t+=6-u;t+=(7+w-v)%7;return(t/7); },getOrdinal:function(s){return a.getMsg("ordinal",s||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3"); },getGMTOffset:function(){var s=this.get("timezoneOffset");return((s>0)?"-":"+")+p((s.abs()/60).floor(),2)+p(s%60,2);},setAMPM:function(s){s=s.toUpperCase(); var t=this.get("hr");if(t>11&&s=="AM"){return this.decrement("hour",12);}else{if(t<12&&s=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM"; },parse:function(s){this.set("time",a.parse(s));return this;},isValid:function(s){if(!s){s=this;}return typeOf(s)=="date"&&!isNaN(s.valueOf());},format:function(s){if(!this.isValid()){return"invalid date"; }if(!s){s="%x %X";}if(typeof s=="string"){s=g[s.toLowerCase()]||s;}if(typeof s=="function"){return s(this);}var t=this;return s.replace(/%([a-z%])/gi,function(v,u){switch(u){case"a":return a.getMsg("days_abbr")[t.get("day")]; case"A":return a.getMsg("days")[t.get("day")];case"b":return a.getMsg("months_abbr")[t.get("month")];case"B":return a.getMsg("months")[t.get("month")]; case"c":return t.format("%a %b %d %H:%M:%S %Y");case"d":return p(t.get("date"),2);case"e":return p(t.get("date"),2," ");case"H":return p(t.get("hr"),2); case"I":return p((t.get("hr")%12)||12,2);case"j":return p(t.get("dayofyear"),3);case"k":return p(t.get("hr"),2," ");case"l":return p((t.get("hr")%12)||12,2," "); case"L":return p(t.get("ms"),3);case"m":return p((t.get("mo")+1),2);case"M":return p(t.get("min"),2);case"o":return t.get("ordinal");case"p":return a.getMsg(t.get("ampm")); case"s":return Math.round(t/1000);case"S":return p(t.get("seconds"),2);case"T":return t.format("%H:%M:%S");case"U":return p(t.get("week"),2);case"w":return t.get("day"); case"x":return t.format(a.getMsg("shortDate"));case"X":return t.format(a.getMsg("shortTime"));case"y":return t.get("year").toString().substr(2);case"Y":return t.get("year"); case"z":return t.get("GMTOffset");case"Z":return t.get("Timezone");}return u;});},toISOString:function(){return this.format("iso8601");}}).alias({toJSON:"toISOString",compare:"diff",strftime:"format"}); var k=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var g={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M",rfc822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %Z"); },rfc2822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %z");},iso8601:function(s){return(s.getUTCFullYear()+"-"+p(s.getUTCMonth()+1,2)+"-"+p(s.getUTCDate(),2)+"T"+p(s.getUTCHours(),2)+":"+p(s.getUTCMinutes(),2)+":"+p(s.getUTCSeconds(),2)+"."+p(s.getUTCMilliseconds(),3)+"Z"); }};var c=[],n=a.parse;var r=function(v,x,u){var t=-1,w=a.getMsg(v+"s");switch(typeOf(x)){case"object":t=w[x.get(v)];break;case"number":t=w[x];if(!t){throw new Error("Invalid "+v+" index: "+x); }break;case"string":var s=w.filter(function(y){return this.test(y);},new RegExp("^"+x,"i"));if(!s.length){throw new Error("Invalid "+v+" string");}if(s.length>1){throw new Error("Ambiguous "+v); }t=s[0];}return(u)?w.indexOf(t):t;};var i=1900,o=70;a.extend({getMsg:function(t,s){return Locale.get("Date."+t,s);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(t,s){var u=new a; return a.daysInMonth(t!=null?t:u.get("mo"),s!=null?s:u.get("year"))*86400000;},year:function(s){s=s||new a().get("year");return a.isLeapYear(s)?31622400000:31536000000; }},daysInMonth:function(t,s){return[31,a.isLeapYear(s)?29:28,31,30,31,30,31,31,30,31,30,31][t];},isLeapYear:function(s){return((s%4===0)&&(s%100!==0))||(s%400===0); },parse:function(v){var u=typeOf(v);if(u=="number"){return new a(v);}if(u!="string"){return v;}v=v.clean();if(!v.length){return null;}var s;c.some(function(w){var t=w.re.exec(v); return(t)?(s=w.handler(t)):false;});if(!(s&&s.isValid())){s=new a(n(v));if(!(s&&s.isValid())){s=new a(v.toInt());}}return s;},parseDay:function(s,t){return r("day",s,t); },parseMonth:function(t,s){return r("month",t,s);},parseUTC:function(t){var s=new a(t);var u=a.UTC(s.get("year"),s.get("mo"),s.get("date"),s.get("hr"),s.get("min"),s.get("sec"),s.get("ms")); return new a(u);},orderIndex:function(s){return a.getMsg("dateOrder").indexOf(s)+1;},defineFormat:function(s,t){g[s]=t;return this;},defineParser:function(s){c.push((s.re&&s.handler)?s:l(s)); return this;},defineParsers:function(){Array.flatten(arguments).each(a.defineParser);return this;},define2DigitYearStart:function(s){o=s%100;i=s-o;return this; }}).extend({defineFormats:a.defineFormat.overloadSetter()});var d=function(s){return new RegExp("(?:"+a.getMsg(s).map(function(t){return t.substr(0,3); }).join("|")+")[a-z]*");};var m=function(s){switch(s){case"T":return"%H:%M:%S";case"x":return((a.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?"; case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?";}return null;};var j={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,z:/Z|[+-]\d{2}(?::?\d{2})?/}; j.m=j.I;j.S=j.M;var e;var b=function(s){e=s;j.a=j.A=d("days");j.b=j.B=d("months");c.each(function(u,t){if(u.format){c[t]=l(u.format);}});};var l=function(u){if(!e){return{format:u}; }var s=[];var t=(u.source||u).replace(/%([a-z])/gi,function(w,v){return m(v)||w;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(w,v){var x=j[v]; if(!x){return v;}s.push(v);return"("+x.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:u,re:new RegExp("^"+t+"$","i"),handler:function(y){y=y.slice(1).associate(s); var v=new a().clearTime(),x=y.y||y.Y;if(x!=null){q.call(v,"y",x);}if("d" in y){q.call(v,"d",1);}if("m" in y||y.b||y.B){q.call(v,"m",1);}for(var w in y){q.call(v,w,y[w]); }return v;}};};var q=function(s,t){if(!t){return this;}switch(s){case"a":case"A":return this.set("day",a.parseDay(t,true));case"b":case"B":return this.set("mo",a.parseMonth(t,true)); case"d":return this.set("date",t);case"H":case"I":return this.set("hr",t);case"m":return this.set("mo",t-1);case"M":return this.set("min",t);case"p":return this.set("ampm",t.replace(/\./g,"")); case"S":return this.set("sec",t);case"s":return this.set("ms",("0."+t)*1000);case"w":return this.set("day",t);case"Y":return this.set("year",t);case"y":t=+t; if(t<100){t+=i+(t0.75*a){e=c;}break;}f/=a;e=c+"s";}f=f.round();return Date.getMsg(e+d,f).substitute({delta:f});}}).defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime(); switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime(); var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}}).alias("timeAgoInWords","timeDiffInWords"); Locale.define("en-US","Number",{decimal:".",group:",",currency:{prefix:"$ "}});Number.implement({format:function(q){var n=this;q=q?Object.clone(q):{};var a=function(i){if(q[i]!=null){return q[i]; }return Locale.get("Number."+i);};var f=n<0,h=a("decimal"),k=a("precision"),o=a("group"),c=a("decimals");if(f){var e=a("negative")||{};if(e.prefix==null&&e.suffix==null){e.prefix="-"; }["prefix","suffix"].each(function(i){if(e[i]){q[i]=a(i)+e[i];}});n=-n;}var l=a("prefix"),p=a("suffix");if(c!==""&&c>=0&&c<=20){n=n.toFixed(c);}if(k>=1&&k<=21){n=(+n).toPrecision(k); }n+="";var m;if(a("scientific")===false&&n.indexOf("e")>-1){var j=n.split("e"),b=+j[1];n=j[0].replace(".","");if(b<0){b=-b-1;m=j[0].indexOf(".");if(m>-1){b-=m-1; }while(b--){n="0"+n;}n="0."+n;}else{m=j[0].lastIndexOf(".");if(m>-1){b-=j[0].length-m-1;}while(b--){n+="0";}}}if(h!="."){n=n.replace(".",h);}if(o){m=n.lastIndexOf(h); m=(m>-1)?m:n.length;var d=n.substring(m),g=m;while(g--){if((m-g-1)%3==0&&g!=(m-1)){d=o+d;}d=n.charAt(g)+d;}n=d;}if(l){n=l+n;}if(p){n+=p;}return n;},formatCurrency:function(b){var a=Locale.get("Number.currency")||{}; if(a.scientific==null){a.scientific=false;}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);},formatPercentage:function(b){var a=Locale.get("Number.percentage")||{}; if(a.suffix==null){a.suffix="%";}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);}});(function(){var c={a:/[àáâãäåăą]/g,A:/[ÀÁÂÃÄÅĂĄ]/g,c:/[ćčç]/g,C:/[ĆČÇ]/g,d:/[ďđ]/g,D:/[ĎÐ]/g,e:/[èéêëěę]/g,E:/[ÈÉÊËĚĘ]/g,g:/[ğ]/g,G:/[Ğ]/g,i:/[ìíîï]/g,I:/[ÌÍÎÏ]/g,l:/[ĺľł]/g,L:/[ĹĽŁ]/g,n:/[ñňń]/g,N:/[ÑŇŃ]/g,o:/[òóôõöøő]/g,O:/[ÒÓÔÕÖØ]/g,r:/[řŕ]/g,R:/[ŘŔ]/g,s:/[ššş]/g,S:/[ŠŞŚ]/g,t:/[ťţ]/g,T:/[ŤŢ]/g,ue:/[ü]/g,UE:/[Ü]/g,u:/[ùúûůµ]/g,U:/[ÙÚÛŮ]/g,y:/[ÿý]/g,Y:/[ŸÝ]/g,z:/[žźż]/g,Z:/[ŽŹŻ]/g,th:/[þ]/g,TH:/[Þ]/g,dh:/[ð]/g,DH:/[Ð]/g,ss:/[ß]/g,oe:/[œ]/g,OE:/[Œ]/g,ae:/[æ]/g,AE:/[Æ]/g},b={" ":/[\xa0\u2002\u2003\u2009]/g,"*":/[\xb7]/g,"'":/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,"...":/[\u2026]/g,"-":/[\u2013]/g,"»":/[\uFFFD]/g}; var a=function(f,h){var e=f,g;for(g in h){e=e.replace(h[g],g);}return e;};var d=function(e,g){e=e||"";var h=g?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)":"]+)?>",f=new RegExp(h,"gi"); return f;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this; }var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil()); },getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);},truncate:function(e,f,i){var h=this; if(f==null&&arguments.length==1){f="…";}if(h.length>e){h=h.substring(0,e);if(i){var g=h.lastIndexOf(i);if(g!=-1){h=h.substr(0,g);}}if(f){h+=f;}}return h; }});})();String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b; }c.each(function(i){var e=i.indexOf("=")+1,g=e?i.substr(e):"",f=e?i.substr(0,e-1).match(/([^\]\[]+|(\B)(?=\]))/g):[i],h=b;if(!f){return;}if(a){g=decodeURIComponent(g); }f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j0){c.pop(); }else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:""); },set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f}; }else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this; },get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||""; },go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{}; }var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c); }}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/}; a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c); }});})();URI=Class.refactor(URI,{combine:function(f,e){if(!e||f.scheme!=e.scheme||f.host!=e.host||f.port!=e.port){return this.previous.apply(this,arguments); }var a=f.file+(f.query?"?"+f.query:"")+(f.fragment?"#"+f.fragment:"");if(!e.directory){return(f.directory||(f.file?"":"./"))+a;}var d=e.directory.split("/"),c=f.directory.split("/"),g="",h; var b=0;for(h=0;h=0||g.parentPositioned||d.allowNegative)?c.x:0).toInt(); c.top=((c.y>=0||g.parentPositioned||d.allowNegative)?c.y:0).toInt();a.toMinMax(c,d);if(d.relFixedPosition||f.getStyle("position")=="fixed"){a.toRelFixedPosition(f,c); }if(d.ignoreScroll){a.toIgnoreScroll(f,c);}if(d.ignoreMargins){a.toIgnoreMargins(c,d);}c.left=Math.ceil(c.left);c.top=Math.ceil(c.top);delete c.x;delete c.y; return c;},setPositionCoordinates:function(k,g,d){var f=k.offset.y,h=k.offset.x,e=(d==document.body)?window.getScroll():d.getPosition(),j=e.y,c=e.x,i=window.getSize(); switch(k.position.x){case"left":g.x=c+h;break;case"right":g.x=c+h+d.offsetWidth;break;default:g.x=c+((d==document.body?i.x:d.offsetWidth)/2)+h;break;}switch(k.position.y){case"top":g.y=j+f; break;case"bottom":g.y=j+f+d.offsetHeight;break;default:g.y=j+((d==document.body?i.y:d.offsetHeight)/2)+f;break;}},toMinMax:function(c,d){var f={left:"x",top:"y"},e; ["minimum","maximum"].each(function(g){["left","top"].each(function(h){e=d[g]?d[g][f[h]]:null;if(e!=null&&((g=="minimum")?c[h]e)){c[h]=e;}});}); },toRelFixedPosition:function(e,c){var d=window.getScroll();c.top+=d.y;c.left+=d.x;},toIgnoreScroll:function(e,d){var c=e.getScroll();d.top-=c.y;d.left-=c.x; },toIgnoreMargins:function(c,d){c.left+=d.edge.x=="right"?d.dimensions["margin-right"]:(d.edge.x!="center"?-d.dimensions["margin-left"]:-d.dimensions["margin-left"]+((d.dimensions["margin-right"]+d.dimensions["margin-left"])/2)); c.top+=d.edge.y=="bottom"?d.dimensions["margin-bottom"]:(d.edge.y!="center"?-d.dimensions["margin-top"]:-d.dimensions["margin-top"]+((d.dimensions["margin-bottom"]+d.dimensions["margin-top"])/2)); },toEdge:function(c,d){var e={},g=d.dimensions,f=d.edge;switch(f.x){case"left":e.x=0;break;case"right":e.x=-g.x-g.computedRight-g.computedLeft;break;default:e.x=-(Math.round(g.totalWidth/2)); break;}switch(f.y){case"top":e.y=0;break;case"bottom":e.y=-g.y-g.computedTop-g.computedBottom;break;default:e.y=-(Math.round(g.totalHeight/2));break;}c.x+=e.x; c.y+=e.y;},getCoordinateFromValue:function(c){if(typeOf(c)!="string"){return c;}c=c.toLowerCase();return{x:c.test("left")?"left":(c.test("right")?"right":"center"),y:c.test(/upper|top/)?"top":(c.test("bottom")?"bottom":"center")}; }};Element.implement({position:function(d){if(d&&(d.x!=null||d.y!=null)){return(b?b.apply(this,arguments):this);}var c=this.setStyle("position","absolute").calculatePosition(d); return(d&&d.returnPos)?c:this.setStyles(c);},calculatePosition:function(c){return a.getPosition(this,c);}});})(Element.prototype.position);Element.implement({isDisplayed:function(){return this.getStyle("display")!="none"; },isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"](); },hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none"); },show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a); },swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(window.getSelection){var a=window.getSelection(); if(a&&a.removeAllRanges){a.removeAllRanges();}}else{if(document.selection&&document.selection.empty){try{document.selection.empty();}catch(b){}}}}});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.ie6||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt(); if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c); }c=((this.options.zIndex!=null||this.options.zIndex===0)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this); var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(!IframeShim.ready){window.addEvent("load",a); }else{a();}}else{this.position=this.hide=this.show=this.dispose=Function.from(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this; }var a=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2); this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset}); return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block"); }return this.position();},dispose:function(){if(this.shim){this.shim.dispose();}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this; }});window.addEvent("load",function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:["position"],options:{style:{},"class":"mask",maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(b,a){this.target=document.id(b)||document.id(document.body); this.target.store("mask",this);this.setOptions(a);this.render();this.inject();},render:function(){this.element=new Element("div",{"class":this.options["class"],id:this.options.id||"mask-"+String.uniqueID(),styles:Object.merge({},this.options.style,{display:"none"}),events:{click:function(a){this.fireEvent("click",a); if(this.options.hideOnClick){this.hide();}}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(b,a){a=a||(this.options.inject?this.options.inject.where:"")||this.target==document.body?"inside":"after"; b=b||(this.options.inject&&this.options.inject.target)||this.target;this.element.inject(b,a);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions); this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height); this.element.position({relativeTo:this.target,position:"topLeft",ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this; },resize:function(a,e){var b={styles:["padding","border"]};if(this.options.maskMargins){b.styles.push("margin");}var d=this.target.getComputedSize(b);if(this.target==document.body){this.element.setStyles({width:0,height:0}); var c=window.getScrollSize();if(d.totalHeight=0&&a.options[a.selectedIndex].value!=""); }else{return((a.get("value")==null)||(a.get("value").length==0));}}});Form.Validator.addAllThese([["required",{errorMsg:function(){return Form.Validator.getMsg("required"); },test:function(a){return !Form.Validator.getValidator("IsEmpty").test(a);}}],["length",{errorMsg:function(a,b){if(typeOf(b.length)!="null"){return Form.Validator.getMsg("length").substitute({length:b.length,elLength:a.get("value").length}); }else{return"";}},test:function(a,b){if(typeOf(b.length)!="null"){return(a.get("value").length==b.length||a.get("value").length==0);}else{return true;}}}],["minLength",{errorMsg:function(a,b){if(typeOf(b.minLength)!="null"){return Form.Validator.getMsg("minLength").substitute({minLength:b.minLength,length:a.get("value").length}); }else{return"";}},test:function(a,b){if(typeOf(b.minLength)!="null"){return(a.get("value").length>=(b.minLength||0));}else{return true;}}}],["maxLength",{errorMsg:function(a,b){if(typeOf(b.maxLength)!="null"){return Form.Validator.getMsg("maxLength").substitute({maxLength:b.maxLength,length:a.get("value").length}); }else{return"";}},test:function(a,b){return a.get("value").length<=(b.maxLength||10000);}}],["validate-integer",{errorMsg:Form.Validator.getMsg.pass("integer"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(-?[1-9]\d*|0)$/).test(a.get("value")); }}],["validate-numeric",{errorMsg:Form.Validator.getMsg.pass("numeric"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(a.get("value")); }}],["validate-digits",{errorMsg:Form.Validator.getMsg.pass("digits"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[\d() .:\-\+#]+$/.test(a.get("value"))); }}],["validate-alpha",{errorMsg:Form.Validator.getMsg.pass("alpha"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[a-zA-Z]+$/).test(a.get("value")); }}],["validate-alphanum",{errorMsg:Form.Validator.getMsg.pass("alphanum"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||!(/\W/).test(a.get("value")); }}],["validate-date",{errorMsg:function(a,b){if(Date.parse){var c=b.dateFormat||"%x";return Form.Validator.getMsg("dateSuchAs").substitute({date:new Date().format(c)}); }else{return Form.Validator.getMsg("dateInFormatMDY");}},test:function(e,g){if(Form.Validator.getValidator("IsEmpty").test(e)){return true;}var a=Locale.getCurrent().sets.Date,b=new RegExp([a.days,a.days_abbr,a.months,a.months_abbr].flatten().join("|"),"i"),i=e.get("value"),f=i.match(/[a-z]+/gi); if(f&&!f.every(b.exec,b)){return false;}var c=Date.parse(i),h=g.dateFormat||"%x",d=c.format(h);if(d!="invalid date"){e.set("value",d);}return c.isValid(); }}],["validate-email",{errorMsg:Form.Validator.getMsg.pass("email"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]\.?){0,63}[a-z0-9!#$%&'*+\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])$/i).test(a.get("value")); }}],["validate-url",{errorMsg:Form.Validator.getMsg.pass("url"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(a.get("value")); }}],["validate-currency-dollar",{errorMsg:Form.Validator.getMsg.pass("currencyDollar"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); }}],["validate-one-required",{errorMsg:Form.Validator.getMsg.pass("oneRequired"),test:function(a,b){var c=document.id(b["validate-one-required"])||a.getParent(b["validate-one-required"]); return c.getElements("input").some(function(d){if(["checkbox","radio"].contains(d.get("type"))){return d.get("checked");}return d.get("value");});}}]]); Element.Properties.validator={set:function(a){this.get("validator").setOptions(a);},get:function(){var a=this.retrieve("validator");if(!a){a=new Form.Validator(this); this.store("validator",a);}return a;}};Element.implement({validate:function(a){if(a){this.set("validator",a);}return this.get("validator").validate();}}); Form.Validator.Inline=new Class({Extends:Form.Validator,options:{showError:function(a){if(a.reveal){a.reveal();}else{a.setStyle("display","block");}},hideError:function(a){if(a.dissolve){a.dissolve(); }else{a.setStyle("display","none");}},scrollToErrorsOnSubmit:true,scrollToErrorsOnBlur:false,scrollToErrorsOnChange:false,scrollFxOptions:{transition:"quad:out",offset:{y:-20}}},initialize:function(b,a){this.parent(b,a); this.addEvent("onElementValidate",function(g,f,e,h){var d=this.getValidator(e);if(!g&&d.getError(f)){if(h){f.addClass("warning");}var c=this.makeAdvice(e,f,d.getError(f),h); this.insertAdvice(c,f);this.showAdvice(e,f);}else{this.hideAdvice(e,f);}});},makeAdvice:function(d,f,c,g){var e=(g)?this.warningPrefix:this.errorPrefix; e+=(this.options.useTitles)?f.title||c:c;var a=(g)?"warning-advice":"validation-advice";var b=this.getAdvice(d,f);if(b){b=b.set("html",e);}else{b=new Element("div",{html:e,styles:{display:"none"},id:"advice-"+d.split(":")[0]+"-"+this.getFieldId(f)}).addClass(a); }f.store("$moo:advice-"+d,b);return b;},getFieldId:function(a){return a.id?a.id:a.id="input_"+a.name;},showAdvice:function(b,c){var a=this.getAdvice(b,c); if(a&&!c.retrieve("$moo:"+this.getPropName(b))&&(a.getStyle("display")=="none"||a.getStyle("visiblity")=="hidden"||a.getStyle("opacity")==0)){c.store("$moo:"+this.getPropName(b),true); this.options.showError(a);this.fireEvent("showAdvice",[c,a,b]);}},hideAdvice:function(b,c){var a=this.getAdvice(b,c);if(a&&c.retrieve("$moo:"+this.getPropName(b))){c.store("$moo:"+this.getPropName(b),false); this.options.hideError(a);this.fireEvent("hideAdvice",[c,a,b]);}},getPropName:function(a){return"advice"+a;},resetField:function(a){a=document.id(a);if(!a){return this; }this.parent(a);a.get("validators").each(function(b){this.hideAdvice(b,a);},this);return this;},getAllAdviceMessages:function(d,c){var b=[];if(d.hasClass("ignoreValidation")&&!c){return b; }var a=d.get("validators").some(function(g){var e=g.test("^warn-")||d.hasClass("warnOnly");if(e){g=g.replace(/^warn-/,"");}var f=this.getValidator(g);if(!f){return; }b.push({message:f.getError(d),warnOnly:e,passed:f.test(),validator:f});},this);return b;},getAdvice:function(a,b){return b.retrieve("$moo:advice-"+a); },insertAdvice:function(a,c){var b=c.get("validatorProps");if(!b.msgPos||!document.id(b.msgPos)){if(c.type&&c.type.toLowerCase()=="radio"){c.getParent().adopt(a); }else{a.inject(document.id(c),"after");}}else{document.id(b.msgPos).grab(a);}},validateField:function(g,f,b){var a=this.parent(g,f);if(((this.options.scrollToErrorsOnSubmit&&b==null)||b)&&!a){var c=document.id(this).getElement(".validation-failed"); var d=document.id(this).getParent();while(d!=document.body&&d.getScrollSize().y==d.getSize().y){d=d.getParent();}var e=d.retrieve("$moo:fvScroller");if(!e&&window.Fx&&Fx.Scroll){e=new Fx.Scroll(d,this.options.scrollFxOptions); d.store("$moo:fvScroller",e);}if(c){if(e){e.toElement(c);}else{d.scrollTo(d.getScroll().x,c.getPosition(d).y-20);}}}return a;},watchFields:function(a){a.each(function(b){if(this.options.evaluateFieldsOnBlur){b.addEvent("blur",this.validationMonitor.pass([b,false,this.options.scrollToErrorsOnBlur],this)); }if(this.options.evaluateFieldsOnChange){b.addEvent("change",this.validationMonitor.pass([b,true,this.options.scrollToErrorsOnChange],this));}},this);}}); Form.Validator.addAllThese([["validate-enforce-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator");if(!c){return true;}(b.toEnforce||document.id(b.enforceChildrenOf).getElements("input, select, textarea")).map(function(d){if(a.checked){c.enforceField(d); }else{c.ignoreField(d);c.resetField(d);}});return true;}}],["validate-ignore-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator"); if(!c){return true;}(b.toIgnore||document.id(b.ignoreChildrenOf).getElements("input, select, textarea")).each(function(d){if(a.checked){c.ignoreField(d); c.resetField(d);}else{c.enforceField(d);}});return true;}}],["validate-nospace",{errorMsg:function(){return Form.Validator.getMsg("noSpace");},test:function(a,b){return !a.get("value").test(/\s/); }}],["validate-toggle-oncheck",{test:function(b,c){var d=b.getParent("form").retrieve("validator");if(!d){return true;}var a=c.toToggle||document.id(c.toToggleChildrenOf).getElements("input, select, textarea"); if(!b.checked){a.each(function(e){d.ignoreField(e);d.resetField(e);});}else{a.each(function(e){d.enforceField(e);});}return true;}}],["validate-reqchk-bynode",{errorMsg:function(){return Form.Validator.getMsg("reqChkByNode"); },test:function(a,b){return(document.id(b.nodeId).getElements(b.selector||"input[type=checkbox], input[type=radio]")).some(function(c){return c.checked; });}}],["validate-required-check",{errorMsg:function(a,b){return b.useTitle?a.get("title"):Form.Validator.getMsg("requiredChk");},test:function(a,b){return !!a.checked; }}],["validate-reqchk-byname",{errorMsg:function(a,b){return Form.Validator.getMsg("reqChkByName").substitute({label:b.label||a.get("type")});},test:function(b,d){var c=d.groupName||b.get("name"); var a=$$(document.getElementsByName(c)).some(function(g,f){return g.checked;});var e=b.getParent("form").retrieve("validator");if(a&&e){e.resetField(b); }return a;}}],["validate-match",{errorMsg:function(a,b){return Form.Validator.getMsg("match").substitute({matchName:b.matchName||document.id(b.matchInput).get("name")}); },test:function(b,c){var d=b.get("value");var a=document.id(c.matchInput)&&document.id(c.matchInput).get("value");return d&&a?d==a:true;}}],["validate-after-date",{errorMsg:function(a,b){return Form.Validator.getMsg("afterDate").substitute({label:b.afterLabel||(b.afterElement?Form.Validator.getMsg("startDate"):Form.Validator.getMsg("currentDate"))}); },test:function(b,c){var d=document.id(c.afterElement)?Date.parse(document.id(c.afterElement).get("value")):new Date();var a=Date.parse(b.get("value")); return a&&d?a>=d:true;}}],["validate-before-date",{errorMsg:function(a,b){return Form.Validator.getMsg("beforeDate").substitute({label:b.beforeLabel||(b.beforeElement?Form.Validator.getMsg("endDate"):Form.Validator.getMsg("currentDate"))}); },test:function(b,c){var d=Date.parse(b.get("value"));var a=document.id(c.beforeElement)?Date.parse(document.id(c.beforeElement).get("value")):new Date(); return a&&d?a>=d:true;}}],["validate-custom-required",{errorMsg:function(){return Form.Validator.getMsg("required");},test:function(a,b){return a.get("value")!=b.emptyValue; }}],["validate-same-month",{errorMsg:function(a,b){var c=document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value");var d=a.get("value");if(d!=""){return Form.Validator.getMsg(c?"sameMonth":"startMonth"); }},test:function(a,b){var d=Date.parse(a.get("value"));var c=Date.parse(document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value"));return d&&c?d.format("%B")==c.format("%B"):true; }}],["validate-cc-num",{errorMsg:function(a){var b=a.get("value").replace(/[^0-9]/g,"");return Form.Validator.getMsg("creditcard").substitute({length:b.length}); },test:function(c){if(Form.Validator.getValidator("IsEmpty").test(c)){return true;}var g=c.get("value");g=g.replace(/[^0-9]/g,"");var a=false;if(g.test(/^4[0-9]{12}([0-9]{3})?$/)){a="Visa"; }else{if(g.test(/^5[1-5]([0-9]{14})$/)){a="Master Card";}else{if(g.test(/^3[47][0-9]{13}$/)){a="American Express";}else{if(g.test(/^6011[0-9]{12}$/)){a="Discover"; }}}}if(a){var d=0;var e=0;for(var b=g.length-1;b>=0;--b){e=g.charAt(b).toInt();if(e==0){continue;}if((g.length-b)%2==0){e+=e;}if(e>9){e=e.toString().charAt(0).toInt()+e.toString().charAt(1).toInt(); }d+=e;}if((d%10)==0){return true;}}var f="";while(g!=""){f+=" "+g.substr(0,4);g=g.substr(4);}c.getParent("form").retrieve("validator").ignoreField(c);c.set("value",f.clean()); c.getParent("form").retrieve("validator").enforceField(c);return false;}}]]);var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",labelClass:"overTxtLabel",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){b=this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(b);OverText.instances.push(this);if(this.options.poll){this.poll();}},toElement:function(){return this.element; },attach:function(){var b=this.element,a=this.options,c=a.textOverride||b.get("alt")||b.get("title");if(!c){return this;}var d=this.text=new Element(a.element,{"class":a.labelClass,styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:c,events:{click:this.hide.pass(a.element=="label",this)}}).inject(b,"after"); if(a.element=="label"){if(!b.get("id")){b.set("id","input_"+String.uniqueID());}d.set("for",b.get("id"));}if(a.wrap){this.textHolder=new Element("div.overTxtWrapper",{styles:{lineHeight:"normal",position:"relative"}}).grab(d).inject(b,"before"); }return this.enable();},destroy:function(){this.element.eliminate(this.property);this.disable();if(this.text){this.text.destroy();}if(this.textHolder){this.textHolder.destroy(); }return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert});window.removeEvent("resize",this.reposition); this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert});window.addEvent("resize",this.reposition); this.reposition();return this;},wrap:function(){if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+String.uniqueID()); }this.text.set("for",this.element.get("id"));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(a){if(this.poller&&!a){return this; }if(a){clearInterval(this.poller);}else{this.poller=(function(){if(!this.pollingPaused){this.assert(true);}}).periodical(this.options.pollInterval,this); }return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get("disabled"))){return this; }return this.hide();},hide:function(c,a){if(this.text&&(this.text.isDisplayed()&&(!this.element.get("disabled")||a))){this.text.hide();this.fireEvent("textHide",[this.text,this.element]); this.pollingPaused=true;if(!c){try{this.element.fireEvent("focus");this.element.focus();}catch(b){}}}return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show(); this.reposition();this.fireEvent("textShow",[this.text,this.element]);this.pollingPaused=false;}return this;},test:function(){return !this.element.get("value"); },assert:function(a){return this[this.test()?"show":"hide"](a);},reposition:function(){this.assert(true);if(!this.element.isVisible()){return this.stopPolling().hide(); }if(this.text&&this.test()){this.text.position(Object.merge(this.options.positionOptions,{relativeTo:this.element}));}return this;}});OverText.instances=[]; Object.append(OverText,{each:function(a){return OverText.instances.each(function(c,b){if(c.element&&c.text){a.call(OverText,c,b);}});},update:function(){return OverText.each(function(a){return a.reposition(); });},hideAll:function(){return OverText.each(function(a){return a.hide(true,true);});},showAll:function(){return OverText.each(function(a){return a.show(); });}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a);},compute:function(g,h,j){var c={}; for(var d in g){var a=g[d],e=h[d],f=c[d]={};for(var b in a){f[b]=this.parent(a[b],e[b],j);}}return c;},set:function(b){for(var c in b){if(!this.elements[c]){continue; }var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit);}}return this;},start:function(c){if(!this.check(c)){return this;}var h={},j={}; for(var d in c){if(!this.elements[d]){continue;}var f=c[d],a=h[d]={},g=j[d]={};for(var b in f){var e=this.prepare(this.elements[d],b,f[b]);a[b]=e.from; g[b]=e.to;}}return this.parent(h,j);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,resetHeight:true},initialize:function(){var g=function(h){return h!=null; };var f=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:g,elements:g});this.parent(f.elements,f.options);var b=this.options,e=this.togglers=$$(f.togglers); this.previous=-1;this.internalChain=new Chain();if(b.alwaysHide){this.options.link="chain";}if(b.show||this.options.show===0){b.display=false;this.previous=b.show; }if(b.start){b.display=false;b.show=false;}var d=this.effects={};if(b.opacity){d.opacity="fullOpacity";}if(b.width){d.width=b.fixedWidth?"fullWidth":"offsetWidth"; }if(b.height){d.height=b.fixedHeight?"fullHeight":"scrollHeight";}for(var c=0,a=e.length;c=0?a-1:0)).chain(d);}else{d();}return this;},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display")); }.bind(this);if(!b){this.togglers.each(a);}else{a(b);}return this;},display:function(b,c){if(!this.check(b,c)){return this;}var h={},g=this.elements,a=this.options,f=this.effects; if(c==null){c=true;}if(typeOf(b)=="element"){b=g.indexOf(b);}if(b==this.previous&&!a.alwaysHide){return this;}if(a.resetHeight){var e=g[this.previous]; if(e&&!this.selfHidden){for(var d in f){e.setStyle(d,e[f[d]]);}}}if((this.timer&&a.link=="chain")||(b===this.previous&&!a.alwaysHide)){return this;}this.previous=b; this.selfHidden=false;g.each(function(l,k){h[k]={};var j;if(k!=b){j=true;}else{if(a.alwaysHide&&((l.offsetHeight>0&&a.height)||l.offsetWidth>0&&a.width)){j=true; this.selfHidden=true;}}this.fireEvent(j?"background":"active",[this.togglers[k],l]);for(var m in f){h[k][m]=j?0:l[f[m]];}if(!c&&!j&&a.resetHeight){h[k].height="auto"; }},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(a.resetHeight&&!this.selfHidden){var i=g[b];if(i){i.setStyle("height","auto"); }}}.bind(this));return c?this.start(h):this.set(h).internalChain.callChain();}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left"); if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position(Object.merge({},this.options,a,{returnPos:true}))); }});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"}); this.store("move",a);}return a;}};Element.implement({move:function(a){this.get("move").start(a);return this;}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c); this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this); this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments); if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0],b[1]);return this;},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b); });},start:function(c,d){if(!this.check(c,d)){return this;}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d]);},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f}; for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e];}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e];}i[e]+=c[e];}return[i.x,i.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0)); },toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false)); },toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"));},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll(); var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false;});return this.start.apply(this,this.calculateScroll(b.x,b.y)); },toElementEdge:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y}; ["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]this.elements.length){e.splice(this.elements.length-1,e.length-this.elements.length); }}var b=0;i=a=0;e.each(function(k){var j={};if(d){j.top=i-f[k].top-b;i+=f[k].height;}else{j.left=a-f[k].left;a+=f[k].width;}b=b+f[k].margin;c[k]=j;},this); var g={};Array.clone(e).sort().each(function(j){g[j]=c[j];});this.start(g);this.currentOrder=e;return this;},rearrangeDOM:function(a){a=a||this.currentOrder; var b=this.elements[0].getParent();var c=[];this.elements.setStyle("opacity",0);a.each(function(d){c.push(this.elements[d].inject(b).setStyles({top:0,left:0})); },this);this.elements.setStyle("opacity",1);this.elements=$$(c);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(b,a){return a; });},getCurrentOrder:function(){return this.currentOrder;},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse()); },reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(a){return this.sort(a.map(function(b){return this.elements.indexOf(b); },this));},swap:function(c,b){if(typeOf(c)=="element"){c=this.elements.indexOf(c);}if(typeOf(b)=="element"){b=this.elements.indexOf(b);}var a=Array.clone(this.currentOrder); a[this.currentOrder.indexOf(c)]=b;a[this.currentOrder.indexOf(b)]=c;return this.sort(a);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null; }});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element; this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false); Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)}; this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start); return this;},start:function(a){var j=this.options;if(a.rightClick){return;}if(j.preventDefault){a.preventDefault();}if(j.stopPropagation){a.stopPropagation(); }this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=j.limit;this.limit={x:[],y:[]};var e,g;for(e in j.modifiers){if(!j.modifiers[e]){continue; }var b=this.element.getStyle(j.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());}b=g[j.modifiers[e]]; }if(j.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[j.modifiers[e]];}if(j.invert){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e]; if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f;}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}; }var h={mousemove:this.bound.check,mouseup:this.bound.cancel};h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault(); }var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop}); this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault(); }this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue;}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1; }if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1];}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]d.left&&b.xd.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]); }if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables(); }},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a); this.store("dragger",b);return b;}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){this.setKnobPosition(a); },initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(f,a,e){this.setOptions(e);e=this.options;this.element=document.id(f); a=this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var b={},d={x:false,y:false};switch(e.mode){case"vertical":this.axis="y";this.property="top"; this.offset="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";this.offset="offsetWidth";}this.setSliderDimensions();this.setRange(e.range); if(a.getStyle("position")=="static"){a.setStyle("position","relative");}a.setStyle(this.property,-e.offset);d[this.axis]=this.property;b[this.axis]=[-e.offset,this.full-e.offset]; var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;}).bind(this),onCancel:function(){this.isDragging=false; }.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};if(e.snap){this.setSnap(c);}this.drag=new Drag(a,c); this.attach();if(e.initialStep!=null){this.set(e.initialStep);}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement); }this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement).removeEvent("mousewheel",this.scrolledElement); this.drag.detach();return this;},autosize:function(){this.setSliderDimensions().setKnobPosition(this.toPosition(this.step));this.drag.options.limit[this.axis]=[-this.options.offset,this.full-this.options.offset]; if(this.options.snap){this.setSnap();}return this;},setSnap:function(a){if(!a){a=this.drag.options;}a.grid=Math.ceil(this.stepWidth);a.limit[this.axis][1]=this.full; return this;},setKnobPosition:function(a){if(this.options.snap){a=this.toPosition(this.step);}this.knob.setStyle(this.property,a);return this;},setSliderDimensions:function(){this.full=this.element.measure(function(){this.half=this.knob[this.offset]/2; return this.element[this.offset]-this.knob[this.offset]+(this.options.offset*2);}.bind(this));return this;},set:function(a){if(!((this.range>0)^(a0)^(a>this.max))){a=this.max;}this.step=Math.round(a);return this.checkStep().fireEvent("tick",this.toPosition(this.step)).end();},setRange:function(a,b){this.min=Array.pick([a[0],0]); this.max=Array.pick([a[1],this.options.steps]);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps; this.stepWidth=this.stepSize*this.full/Math.abs(this.range);if(a){this.set(Array.pick([b,this.step]).floor(this.min).max(this.max));}return this;},clickedElement:function(c){if(this.isDragging||c.target==this.knob){return; }var b=this.range<0?-1:1,a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep().fireEvent("tick",a).end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0); this.set(this.step+(b?-1:1)*this.stepSize);a.stop();},draggedKnob:function(){var b=this.range<0?-1:1,a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){var a=this.step;if(this.previousChange!=a){this.previousChange=a; this.fireEvent("change",a);}return this;},end:function(){var a=this.step;if(this.previousEnd!==a){this.previousEnd=a;this.fireEvent("complete",a+"");}return this; },toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset; }});var Sortables=new Class({Implements:[Events,Options],options:{opacity:1,clone:false,revert:false,handle:false,dragOptions:{}},initialize:function(a,b){this.setOptions(b); this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,Object.merge({duration:250,link:"cancel"},this.options.revert)); }},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a); var b=a.retrieve("sortables:start",function(c){this.start.call(this,c,a);}.bind(this));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b); },this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.include(a);this.addItems(a.getChildren());},this);return this; },removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b); return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a; },this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if(typeOf(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list); }var c=a.clone(true).setStyles({margin:0,position:"absolute",visibility:"hidden",width:a.getStyle("width")}).addEvent("mousedown",function(d){a.fireEvent("mousedown",d); });if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e);if(d.get("checked")){a.getElements("input[type=radio]")[e].set("checked",true); }});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));},getDroppables:function(){var a=this.list.getChildren().erase(this.clone).erase(this.element); if(!this.options.constrain){a.append(this.lists).erase(this.list);}return a;},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b; this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after";}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]); },start:function(b,a){if(!this.idle||b.rightClick||["button","input","a","textarea"].contains(b.target.get("tag"))){return;}this.idle=false;this.element=a; this.opacity=a.getStyle("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,Object.merge({droppables:this.getDroppables()},this.options.dragOptions)).addEvents({onSnap:function(){b.stop(); this.clone.setStyle("visibility","visible");this.element.setStyle("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]); }.bind(this),onEnter:this.insert.bind(this),onCancel:this.end.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,"before");this.drag.start(b); },end:function(){this.drag.detach();this.element.setStyle("opacity",this.opacity);if(this.effect){var b=this.element.getStyles("width","height"),d=this.clone,c=d.computePosition(this.element.getPosition(this.clone.getOffsetParent())); var a=function(){this.removeEvent("cancel",a);d.destroy();};this.effect.element=d;this.effect.start({top:c.top,left:c.left,width:b.width,height:b.height,opacity:0.25}).addEvent("cancel",a).chain(a); }else{this.clone.destroy();}this.reset();},reset:function(){this.idle=true;this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Type.isFunction,index:function(d){return d!=null; }});var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0; }return(a||a===0)&&a>=0&&a2083){this.fireEvent("error",f);}Request.JSONP.request_map["request_"+b]=function(){this.success(arguments,b);}.bind(this);var a=this.getScript(f).inject(c.injectScript); this.fireEvent("request",[f,a]);if(c.timeout){this.timeout.delay(c.timeout,this);}return this;},getScript:function(a){if(!this.script){this.script=new Element("script",{type:"text/javascript",async:true,src:a}); }return this.script;},success:function(b,a){if(!this.running){return;}this.clear().fireEvent("complete",b).fireEvent("success",b).callChain();},cancel:function(){if(this.running){this.clear().fireEvent("cancel"); }return this;},isRunning:function(){return !!this.running;},clear:function(){this.running=false;if(this.script){this.script.destroy();this.script=null; }return this;},timeout:function(){if(this.running){this.running=false;this.fireEvent("timeout",[this.script.get("src"),this.script]).fireEvent("failure").cancel(); }return this;}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:["attach","request","complete","cancel","success","failure","exception"],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(a){var b; if(a){b=a.requests;delete a.requests;}this.setOptions(a);this.requests={};this.queue=[];this.reqBinders={};if(b){this.addRequests(b);}},addRequest:function(a,b){this.requests[a]=b; this.attach(a,b);return this;},addRequests:function(a){Object.each(a,function(c,b){this.addRequest(b,c);},this);return this;},getName:function(a){return Object.keyOf(this.requests,a); },attach:function(a,b){if(b._groupSend){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){if(!this.reqBinders[a]){this.reqBinders[a]={}; }this.reqBinders[a][c]=function(){this["on"+c.capitalize()].apply(this,[a,b].append(arguments));}.bind(this);b.addEvent(c,this.reqBinders[a][c]);},this); b._groupSend=b.send;b.send=function(c){this.send(a,c);return b;}.bind(this);return this;},removeRequest:function(b){var a=typeOf(b)=="object"?this.getName(b):b; if(!a&&typeOf(a)!="string"){return this;}b=this.requests[a];if(!b){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){b.removeEvent(c,this.reqBinders[a][c]); },this);b.send=b._groupSend;delete b._groupSend;return this;},getRunning:function(){return Object.filter(this.requests,function(a){return a.running;}); },isRunning:function(){return !!(Object.keys(this.getRunning()).length);},send:function(b,a){var c=function(){this.requests[b]._groupSend(a);this.queue.erase(c); }.bind(this);c.name=b;if(Object.keys(this.getRunning()).length>=this.options.concurrent||(this.error&&this.options.stopOnFailure)){this.queue.push(c);}else{c(); }return this;},hasNext:function(a){return(!a)?!!this.queue.length:!!this.queue.filter(function(b){return b.name==a;}).length;},resume:function(){this.error=false; (this.options.concurrent-Object.keys(this.getRunning()).length).times(this.runNext,this);return this;},runNext:function(a){if(!this.queue.length){return this; }if(!a){this.queue[0]();}else{var b;this.queue.each(function(c){if(!b&&c.name==a){b=true;c();}});}return this;},runAll:function(){this.queue.each(function(a){a(); });return this;},clear:function(a){if(!a){this.queue.empty();}else{this.queue=this.queue.map(function(b){if(b.name!=a){return b;}else{return false;}}).filter(function(b){return b; });}return this;},cancel:function(a){this.requests[a].cancel();return this;},onRequest:function(){this.fireEvent("request",arguments);},onComplete:function(){this.fireEvent("complete",arguments); if(!this.queue.length){this.fireEvent("end");}},onCancel:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("cancel",arguments); },onSuccess:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("success",arguments);},onFailure:function(){this.error=true; if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("failure",arguments);},onException:function(){this.error=true; if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("exception",arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b}); }};this.lastDelay=this.options.initialDelay;this.timer=a.delay(this.lastDelay,this);this.completeCheck=function(c){clearTimeout(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit); this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent("complete",this.completeCheck); }});var Asset={javascript:function(d,b){if(!b){b={};}var a=new Element("script",{src:d,type:"text/javascript"}),e=b.document||document,c=b.onload||b.onLoad; delete b.onload;delete b.onLoad;delete b.document;if(c){if(typeof a.onreadystatechange!="undefined"){a.addEvent("readystatechange",function(){if(["loaded","complete"].contains(this.readyState)){c.call(this); }});}else{a.addEvent("load",c);}}return a.set(b).inject(e.head);},css:function(d,a){if(!a){a={};}var b=new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:d}); var c=a.onload||a.onLoad,e=a.document||document;delete a.onload;delete a.onLoad;delete a.document;if(c){b.addEvent("load",c);}return b.set(a).inject(e.head); },image:function(c,b){if(!b){b={};}var d=new Image(),a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var g="on"+e,f="on"+e.capitalize(),h=b[g]||b[f]||function(){}; delete b[f];delete b[g];d[g]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;h.delay(1,a,a); a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(c,b){c=Array.from(c);var d=function(){},a=0; b=Object.merge({onComplete:d,onProgress:d,onError:d,properties:{}},b);return new Elements(c.map(function(f,e){return Asset.image(f,Object.append(b.properties,{onload:function(){a++; b.onProgress.call(this,a,e,f);if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,e,f);if(a==c.length){b.onComplete();}}})); }));}};(function(){var a=this.Color=new Type("Color",function(c,d){if(arguments.length>=3){d="rgb";c=Array.slice(arguments,0,3);}else{if(typeof c=="string"){if(c.match(/rgb/)){c=c.rgbToHex().hexToRgb(true); }else{if(c.match(/hsb/)){c=c.hsbToRgb();}else{c=c.hexToRgb(true);}}}}d=d||"rgb";switch(d){case"hsb":var b=c;c=c.hsbToRgb();c.hsb=b;break;case"hex":c=c.hexToRgb(true); break;}c.rgb=c.slice(0,3);c.hsb=c.hsb||c.rgbToHsb();c.hex=c.rgbToHex();return Object.append(c,this);});a.implement({mix:function(){var b=Array.slice(arguments); var d=(typeOf(b.getLast())=="number")?b.pop():50;var c=this.slice();b.each(function(e){e=new a(e);for(var f=0;f<3;f++){c[f]=Math.round((c[f]/100*(100-d))+(e[f]/100*d)); }});return new a(c,"rgb");},invert:function(){return new a(this.map(function(b){return 255-b;}));},setHue:function(b){return new a([b,this.hsb[1],this.hsb[2]],"hsb"); },setSaturation:function(b){return new a([this.hsb[0],b,this.hsb[2]],"hsb");},setBrightness:function(b){return new a([this.hsb[0],this.hsb[1],b],"hsb"); }});this.$RGB=function(e,d,c){return new a([e,d,c],"rgb");};this.$HSB=function(e,d,c){return new a([e,d,c],"hsb");};this.$HEX=function(b){return new a(b,"hex"); };Array.implement({rgbToHsb:function(){var c=this[0],d=this[1],k=this[2],h=0;var j=Math.max(c,d,k),f=Math.min(c,d,k);var l=j-f;var i=j/255,g=(j!=0)?l/j:0; if(g!=0){var e=(j-c)/l;var b=(j-d)/l;var m=(j-k)/l;if(c==j){h=m-b;}else{if(d==j){h=2+e-m;}else{h=4+b-e;}}h/=6;if(h<0){h++;}}return[Math.round(h*360),Math.round(g*100),Math.round(i*100)]; },hsbToRgb:function(){var d=Math.round(this[2]/100*255);if(this[1]==0){return[d,d,d];}else{var b=this[0]%360;var g=b%60;var h=Math.round((this[2]*(100-this[1]))/10000*255); var e=Math.round((this[2]*(6000-this[1]*g))/600000*255);var c=Math.round((this[2]*(6000-this[1]*(60-g)))/600000*255);switch(Math.floor(b/60)){case 0:return[d,c,h]; case 1:return[e,d,h];case 2:return[h,d,c];case 3:return[h,e,d];case 4:return[c,h,d];case 5:return[d,h,e];}}return false;}});String.implement({rgbToHsb:function(){var b=this.match(/\d{1,3}/g); return(b)?b.rgbToHsb():null;},hsbToRgb:function(){var b=this.match(/\d{1,3}/g);return(b)?b.hsbToRgb():null;}});})();(function(){this.Group=new Class({initialize:function(){this.instances=Array.flatten(arguments); },addEvent:function(e,d){var g=this.instances,a=g.length,f=a,c=new Array(a),b=this;g.each(function(h,j){h.addEvent(e,function(){if(!c[j]){f--;}c[j]=arguments; if(!f){d.call(b,g,h,c);f=a;c=new Array(a);}});});}});})();Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a); this.load();},save:function(){var a=JSON.encode(this.hash);if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true; },load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments); if(this.options.autoSave){this.save();}return c;});}});(function(){var a=this.Table=function(){this.length=0;var c=[],b=[];this.set=function(e,g){var d=c.indexOf(e); if(d==-1){var f=c.length;c[f]=e;b[f]=g;this.length++;}else{b[d]=g;}return this;};this.get=function(e){var d=c.indexOf(e);return(d==-1)?null:b[d];};this.erase=function(e){var d=c.indexOf(e); if(d!=-1){this.length--;c.splice(d,1);return b.splice(d,1)[0];}return null;};this.each=this.forEach=function(f,g){for(var e=0,d=this.length;e1?$$(a):a.length?document.id(a[0]):false;},setHeaders:function(a){this.set("headers",a); return this;},setFooters:function(a){this.set("footers",a);return this;},update:function(d,e,a){var b=d.getChildren(a||"td"),c=b.length-1;e.each(function(i,f){var j=b[f]||new Element(a||"td").inject(d),h=(i?i.content:"")||i,g=typeOf(h); if(i&&i.properties){j.set(i.properties);}if(/(element(s?)|array|collection)/.test(g)){j.empty().adopt(h);}else{j.set("html",h);}if(f>c){b.push(j);}else{b[f]=j; }});return{tr:d,tds:b};},push:function(e,c,d,a,b){if(typeOf(e)=="element"&&e.get("tag")=="tr"){e.inject(d||this.body,b);return{tr:e,tds:e.getChildren("td")}; }return this.update(new Element("tr",c).inject(d||this.body,b),e,a);},pushMany:function(d,c,e,a,b){return d.map(function(f){return this.push(f,c,e,a,b); },this);}});["adopt","inject","wraps","grab","replaces","dispose"].each(function(a){HtmlTable.implement(a,function(){this.element[a].apply(this.element,arguments); return this;});});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:"table-tr-odd",zebra:true,zebraOnlyVisibleRows:true},initialize:function(){this.previous.apply(this,arguments); if(this.occluded){return this.occluded;}if(this.options.zebra){this.updateZebras();}},updateZebras:function(){var a=0;Array.each(this.body.rows,function(b){if(!this.options.zebraOnlyVisibleRows||b.isDisplayed()){this.zebra(b,a++); }},this);},setRowStyle:function(b,a){if(this.previous){this.previous(b,a);}this.zebra(b,a);},zebra:function(b,a){return b[((a%2)?"remove":"add")+"Class"](this.options.classZebra); },push:function(){var a=this.previous.apply(this,arguments);if(this.options.zebra){this.updateZebras();}return a;}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:"string",classSortable:"table-sortable",classHeadSort:"table-th-sort",classHeadSortRev:"table-th-sort-rev",classNoSort:"table-th-nosort",classGroupHead:"table-tr-group-head",classGroup:"table-tr-group",classCellSort:"table-td-sort",classSortSpan:"table-th-sort-span",sortable:false,thSelector:"th"},initialize:function(){this.previous.apply(this,arguments); if(this.occluded){return this.occluded;}this.sorted={index:null,dir:1};if(!this.bound){this.bound={};}this.bound.headClick=this.headClick.bind(this);this.sortSpans=new Elements(); if(this.options.sortable){this.enableSort();if(this.options.sortIndex!=null){this.sort(this.options.sortIndex,this.options.sortReverse);}}},attachSorts:function(a){this.detachSorts(); if(a!==false){this.element.addEvent("click:relay("+this.options.thSelector+")",this.bound.headClick);}},detachSorts:function(){this.element.removeEvents("click:relay("+this.options.thSelector+")"); },setHeaders:function(){this.previous.apply(this,arguments);if(this.sortEnabled){this.setParsers();}},setParsers:function(){this.parsers=this.detectParsers(); },detectParsers:function(){return this.head&&this.head.getElements(this.options.thSelector).flatten().map(this.detectParser,this);},detectParser:function(a,b){if(a.hasClass(this.options.classNoSort)||a.retrieve("htmltable-parser")){return a.retrieve("htmltable-parser"); }var c=new Element("div");c.adopt(a.childNodes).inject(a);var f=new Element("span",{"class":this.options.classSortSpan}).inject(c,"top");this.sortSpans.push(f); var g=this.options.parsers[b],e=this.body.rows,d;switch(typeOf(g)){case"function":g={convert:g};d=true;break;case"string":g=g;d=true;break;}if(!d){HtmlTable.ParserPriority.some(function(k){var o=HtmlTable.Parsers[k],m=o.match; if(!m){return false;}for(var n=0,l=e.length;nc){b[f].position--;}}}},setRowStyle:function(b,a){this.previous(b,a);b.cells[this.sorted.index].addClass(this.options.classCellSort); },setGroupSort:function(b,c,a){if(b==a.value){c.removeClass(this.options.classGroupHead).addClass(this.options.classGroup);}else{c.removeClass(this.options.classGroup).addClass(this.options.classGroupHead); }return a.value;},getParser:function(){var a=this.parsers[this.sorted.index];return typeOf(a)=="string"?HtmlTable.Parsers[a]:a;},sort:function(c,b,e){if(!this.head){return; }if(!e){this.clearSort();this.setSortedState(c,b);this.setHeadSort(true);}var f=this.getParser();if(!f){return;}var a;if(!Browser.ie){a=this.body.getParent(); this.body.dispose();}var d=this.parseData(f).sort(function(h,g){if(h.value===g.value){return 0;}return h.value>g.value?1:-1;});if(this.sorted.reverse==(f==HtmlTable.Parsers["input-checked"])){d.reverse(true); }this.setRowSort(d,e);if(a){a.grab(this.body);}this.fireEvent("stateChanged");return this.fireEvent("sort",[this.body,this.sorted.index]);},parseData:function(a){return Array.map(this.body.rows,function(d,b){var c=a.convert.call(document.id(d.cells[this.sorted.index])); return{position:b,value:c};},this);},clearSort:function(){this.setHeadSort(false);this.body.getElements("td").removeClass(this.options.classCellSort);},reSort:function(){if(this.sortEnabled){this.sort.call(this,this.sorted.index,this.sorted.reverse); }return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.setParsers();this.sortEnabled=true;return this; },disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(a){a.destroy();});this.sortSpans.empty(); this.sortEnabled=false;return this;}});HtmlTable.ParserPriority=["date","input-checked","input-value","float","number"];HtmlTable.Parsers={date:{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){var a=Date.parse(this.get("text").stripTags()); return(typeOf(a)=="date")?a.format("db"):"";},type:"date"},"input-checked":{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement("input").checked; }},"input-value":{match:/0)){return null; }if(d){b+=e;}else{var a=0,c=0;if(e>0){while(ce&&b>0){if(this.body.rows[--b].isDisplayed()){c--; }}}}return b;},attachSelects:function(d){d=d!=null?d:true;var g=d?"addEvents":"removeEvents";this.element[g]({mouseleave:this.bound.mouseleave,click:this.bound.activateKeyboard}); this.body[g]({"click:relay(tr)":this.bound.clickRow,"contextmenu:relay(tr)":this.bound.clickRow});if(this.options.useKeyboard||this.keyboard){if(!this.keyboard){this.keyboard=new Keyboard(); }if(!this.selectKeysDefined){this.selectKeysDefined=true;var f,e;var c=function(i){var h=function(j){clearTimeout(f);j.preventDefault();var k=this.body.rows[this.getRowByOffset(i,this.options.selectHiddenRows)]; if(j.shift&&k&&this.isSelected(k)){this.deselectRow(this.focused);this.focused=k;}else{if(k&&(!this.options.allowMultiSelect||!j.shift)){this.selectNone(); }this.shiftFocus(i,j);}if(e){f=h.delay(100,this,j);}else{f=(function(){e=true;h(j);}).delay(400);}}.bind(this);return h;}.bind(this);var b=function(){clearTimeout(f); e=false;};this.keyboard.addEvents({"keydown:shift+up":c(-1),"keydown:shift+down":c(1),"keyup:shift+up":b,"keyup:shift+down":b,"keyup:up":b,"keyup:down":b}); var a="";if(this.options.allowMultiSelect&&this.options.shiftForMultiSelect&&this.options.useKeyboard){a=" (Shift multi-selects).";}this.keyboard.addShortcuts({"Select Previous Row":{keys:"up",shortcut:"up arrow",handler:c(-1),description:"Select the previous row in the table."+a},"Select Next Row":{keys:"down",shortcut:"down arrow",handler:c(1),description:"Select the next row in the table."+a}}); }this.keyboard[d?"activate":"deactivate"]();}this.updateSelects();},mouseleave:function(){if(this.hovered){this.leaveRow(this.hovered);}}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(a,b){this.element.scrollTo(a,b); },fps:50},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);this.docBody=document.id(this.element.getDocument().body);this.listener=(typeOf(this.element)!="element")?this.docBody:this.element; this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach}); return this;},stop:function(){this.listener.removeEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=clearInterval(this.timer); return this;},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords);},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords); this.timer=clearInterval(this.timer);},getCoords:function(a){this.page=(this.listener.get("tag")=="body")?a.client:a.page;if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this); }},scroll:function(){var c=this.element.getSize(),a=this.element.getScroll(),h=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},d=this.element.getScrollSize(),g={x:0,y:0},e=this.options.area.top||this.options.area,b=this.options.area.bottom||this.options.area; for(var f in this.page){if(this.page[f]<(e+h[f])&&a[f]!=0){g[f]=(this.page[f]-e-h[f])*this.options.velocity;}else{if(this.page[f]+b>(c[f]+h[f])&&a[f]+c[f]!=d[f]){g[f]=(this.page[f]-c[f]+b-h[f])*this.options.velocity; }}g[f]=g[f].round();}if(g.y||g.x){this.fireEvent("change",[a.x+g.x,a.y+g.y]);}}});(function(){var a=function(c,b){return(c)?(typeOf(c)=="function"?c(b):b.get(c)):""; };this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none"); },title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false,waiAria:true},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,elements:function(c){return c!=null; }});this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});if(this.options.id){this.container.set("id",this.options.id); if(this.options.waiAria){this.attachWaiAria();}}},toElement:function(){if(this.tip){return this.tip;}this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})); return this.tip;},attachWaiAria:function(){var b=this.options.id;this.container.set("role","tooltip");if(!this.waiAria){this.waiAria={show:function(c){if(b){c.set("aria-describedby",b); }this.container.set("aria-hidden","false");},hide:function(c){if(b){c.erase("aria-describedby");}this.container.set("aria-hidden","true");}};}this.addEvents(this.waiAria); },detachWaiAria:function(){if(this.waiAria){this.container.erase("role");this.container.erase("aria-hidden");this.removeEvents(this.waiAria);}},attach:function(b){$$(b).each(function(d){var f=a(this.options.title,d),e=a(this.options.text,d); d.set("title","").store("tip:native",f).retrieve("tip:title",f);d.retrieve("tip:text",e);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move"); }c.each(function(h){var g=d.retrieve("tip:"+h);if(!g){g=function(i){this["element"+h.capitalize()].apply(this,[i,d]);}.bind(this);}d.store("tip:"+h,g).addEvent("mouse"+h,g); },this);},this);return this;},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(e){d.removeEvent("mouse"+e,d.retrieve("tip:"+e)).eliminate("tip:"+e); });this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){clearTimeout(this.timer); this.timer=(function(){this.container.empty();["title","text"].each(function(e){var d=b.retrieve("tip:"+e);var f=this["_"+e+"Element"]=new Element("div",{"class":"tip-"+e}).inject(this.container); if(d){this.fill(f,d);}},this);this.show(b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){clearTimeout(this.timer); this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},setTitle:function(b){if(this._titleElement){this._titleElement.empty(); this.fill(this._titleElement,b);}return this;},setText:function(b){if(this._textElement){this._textElement.empty();this.fill(this._textElement,b);}return this; },fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return;}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b); }},elementMove:function(c,b){this.position(c);},position:function(f){if(!this.tip){document.id(this);}var c=window.getSize(),b=window.getScroll(),g={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},e={y:false,x2:false,y2:false,x:false},h={}; for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];if(h[d[i]]<0){e[i]=true;}if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i]; e[i+"2"]=true;}}this.fireEvent("bound",e);this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this); }if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]); }});})();(function(){var a={json:JSON.decode};Locale.Set.defineParser=function(b,c){a[b]=c;};Locale.Set.from=function(d,c){if(instanceOf(d,Locale.Set)){return d; }if(!c&&typeOf(d)=="string"){c="json";}if(a[c]){d=a[c](d);}var b=new Locale.Set;b.sets=d.sets||{};if(d.inherits){b.inherits.locales=Array.from(d.inherits.locales); b.inherits.sets=d.inherits.sets||{};}return b;};})();Locale.define("ar","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}); Locale.define("ar","FormValidator",{required:"هذا الحقل مطلوب.",minLength:"رجاءً إدخال {minLength} أحرف على الأقل (تم إدخال {length} أحرف).",maxLength:"الرجاء عدم إدخال أكثر من {maxLength} أحرف (تم إدخال {length} أحرف).",integer:"الرجاء إدخال عدد صحيح في هذا الحقل. أي رقم ذو كسر عشري أو مئوي (مثال 1.25 ) غير مسموح.",numeric:'الرجاء إدخال قيم رقمية في هذا الحقل (مثال "1" أو "1.1" أو "-1" أو "-1.1").',digits:"الرجاء أستخدام قيم رقمية وعلامات ترقيمية فقط في هذا الحقل (مثال, رقم هاتف مع نقطة أو شحطة)",alpha:"الرجاء أستخدام أحرف فقط (ا-ي) في هذا الحقل. أي فراغات أو علامات غير مسموحة.",alphanum:"الرجاء أستخدام أحرف فقط (ا-ي) أو أرقام (0-9) فقط في هذا الحقل. أي فراغات أو علامات غير مسموحة.",dateSuchAs:"الرجاء إدخال تاريخ صحيح كالتالي {date}",dateInFormatMDY:"الرجاء إدخال تاريخ صحيح (مثال, 31-12-1999)",email:"الرجاء إدخال بريد إلكتروني صحيح.",url:"الرجاء إدخال عنوان إلكتروني صحيح مثل http://www.example.com",currencyDollar:"الرجاء إدخال قيمة $ صحيحة. مثال, 100.00$",oneRequired:"الرجاء إدخال قيمة في أحد هذه الحقول على الأقل.",errorPrefix:"خطأ: ",warningPrefix:"تحذير: "}); Locale.define("ca-CA","Date",{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juli","Agost","Setembre","Octubre","Novembre","Desembre"],months_abbr:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],days_abbr:["dg","dl","dt","dc","dj","dv","ds"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"fa menys d`un minut",minuteAgo:"fa un minut",minutesAgo:"fa {delta} minuts",hourAgo:"fa un hora",hoursAgo:"fa unes {delta} hores",dayAgo:"fa un dia",daysAgo:"fa {delta} dies",lessThanMinuteUntil:"menys d`un minut des d`ara",minuteUntil:"un minut des d`ara",minutesUntil:"{delta} minuts des d`ara",hourUntil:"un hora des d`ara",hoursUntil:"unes {delta} hores des d`ara",dayUntil:"1 dia des d`ara",daysUntil:"{delta} dies des d`ara"}); Locale.define("ca-CA","FormValidator",{required:"Aquest camp es obligatori.",minLength:"Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).",maxLength:"Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).",integer:"Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.",numeric:'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).",alpha:"Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admiteixen espais ni altres caracters.",alphanum:"Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.",dateSuchAs:"Per favor introdueix una data valida com {date}",dateInFormatMDY:'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")',email:'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "fred@domain.com".',url:"Per favor introdueix una URL valida com http://www.example.com.",currencyDollar:"Per favor introdueix una quantitat valida de €. Per exemple €100,00 .",oneRequired:"Per favor introdueix alguna cosa per al menys una d´aquestes entrades.",errorPrefix:"Error: ",warningPrefix:"Avis: ",noSpace:"No poden haver espais en aquesta entrada.",reqChkByNode:"No hi han elements seleccionats.",requiredChk:"Aquest camp es obligatori.",reqChkByName:"Per favor selecciona una {label}.",match:"Aquest camp necessita coincidir amb el camp {matchName}",startDate:"la data de inici",endDate:"la data de fi",currendDate:"la data actual",afterDate:"La data deu ser igual o posterior a {label}.",beforeDate:"La data deu ser igual o anterior a {label}.",startMonth:"Per favor selecciona un mes d´orige",sameMonth:"Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra."}); (function(){var a=function(e,d,c,b){if(e==1){return d;}else{if(e==2||e==3||e==4){return c;}else{return b;}}};Locale.define("cs-CZ","Date",{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],months_abbr:["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],days_abbr:["ne","po","út","st","čt","pá","so"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"dop.",PM:"odp.",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"před chvílí",minuteAgo:"přibližně před minutou",minutesAgo:function(b){return"před {delta} "+a(b,"minutou","minutami","minutami"); },hourAgo:"přibližně před hodinou",hoursAgo:function(b){return"před {delta} "+a(b,"hodinou","hodinami","hodinami");},dayAgo:"před dnem",daysAgo:function(b){return"před {delta} "+a(b,"dnem","dny","dny"); },weekAgo:"před týdnem",weeksAgo:function(b){return"před {delta} "+a(b,"týdnem","týdny","týdny");},monthAgo:"před měsícem",monthsAgo:function(b){return"před {delta} "+a(b,"měsícem","měsíci","měsíci"); },yearAgo:"před rokem",yearsAgo:function(b){return"před {delta} "+a(b,"rokem","lety","lety");},lessThanMinuteUntil:"za chvíli",minuteUntil:"přibližně za minutu",minutesUntil:function(b){return"za {delta} "+a(b,"minutu","minuty","minut"); },hourUntil:"přibližně za hodinu",hoursUntil:function(b){return"za {delta} "+a(b,"hodinu","hodiny","hodin");},dayUntil:"za den",daysUntil:function(b){return"za {delta} "+a(b,"den","dny","dnů"); },weekUntil:"za týden",weeksUntil:function(b){return"za {delta} "+a(b,"týden","týdny","týdnů");},monthUntil:"za měsíc",monthsUntil:function(b){return"za {delta} "+a(b,"měsíc","měsíce","měsíců"); },yearUntil:"za rok",yearsUntil:function(b){return"za {delta} "+a(b,"rok","roky","let");}});})();Locale.define("cs-CZ","FormValidator",{required:"Tato položka je povinná.",minLength:"Zadejte prosím alespoň {minLength} znaků (napsáno {length} znaků).",maxLength:"Zadejte prosím méně než {maxLength} znaků (nápsáno {length} znaků).",integer:"Zadejte prosím celé číslo. Desetinná čísla (např. 1.25) nejsou povolena.",numeric:'Zadejte jen číselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").',digits:"Zadejte prosím pouze čísla a interpunkční znaménka(například telefonní číslo s pomlčkami nebo tečkami je povoleno).",alpha:"Zadejte prosím pouze písmena (a-z). Mezery nebo jiné znaky nejsou povoleny.",alphanum:"Zadejte prosím pouze písmena (a-z) nebo číslice (0-9). Mezery nebo jiné znaky nejsou povoleny.",dateSuchAs:"Zadejte prosím platné datum jako {date}",dateInFormatMDY:'Zadejte prosím platné datum jako MM / DD / RRRR (tj. "12/31/1999")',email:'Zadejte prosím platnou e-mailovou adresu. Například "fred@domain.com".',url:"Zadejte prosím platnou URL adresu jako http://www.example.com.",currencyDollar:"Zadejte prosím platnou částku. Například $100.00.",oneRequired:"Zadejte prosím alespoň jednu hodnotu pro tyto položky.",errorPrefix:"Chyba: ",warningPrefix:"Upozornění: ",noSpace:"V této položce nejsou povoleny mezery",reqChkByNode:"Nejsou vybrány žádné položky.",requiredChk:"Tato položka je vyžadována.",reqChkByName:"Prosím vyberte {label}.",match:"Tato položka se musí shodovat s položkou {matchName}",startDate:"datum zahájení",endDate:"datum ukončení",currendDate:"aktuální datum",afterDate:"Datum by mělo být stejné nebo větší než {label}.",beforeDate:"Datum by mělo být stejné nebo menší než {label}.",startMonth:"Vyberte počáteční měsíc.",sameMonth:"Tyto dva datumy musí být ve stejném měsíci - změňte jeden z nich.",creditcard:"Zadané číslo kreditní karty je neplatné. Prosím opravte ho. Bylo zadáno {length} čísel."}); Locale.define("da-DK","Date",{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],months_abbr:["jan.","feb.","mar.","apr.","maj.","jun.","jul.","aug.","sep.","okt.","nov.","dec."],days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],days_abbr:["søn","man","tir","ons","tor","fre","lør"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"mindre end et minut siden",minuteAgo:"omkring et minut siden",minutesAgo:"{delta} minutter siden",hourAgo:"omkring en time siden",hoursAgo:"omkring {delta} timer siden",dayAgo:"1 dag siden",daysAgo:"{delta} dage siden",weekAgo:"1 uge siden",weeksAgo:"{delta} uger siden",monthAgo:"1 måned siden",monthsAgo:"{delta} måneder siden",yearAgo:"1 år siden",yearsAgo:"{delta} år siden",lessThanMinuteUntil:"mindre end et minut fra nu",minuteUntil:"omkring et minut fra nu",minutesUntil:"{delta} minutter fra nu",hourUntil:"omkring en time fra nu",hoursUntil:"omkring {delta} timer fra nu",dayUntil:"1 dag fra nu",daysUntil:"{delta} dage fra nu",weekUntil:"1 uge fra nu",weeksUntil:"{delta} uger fra nu",monthUntil:"1 måned fra nu",monthsUntil:"{delta} måneder fra nu",yearUntil:"1 år fra nu",yearsUntil:"{delta} år fra nu"}); Locale.define("da-DK","FormValidator",{required:"Feltet skal udfyldes.",minLength:"Skriv mindst {minLength} tegn (du skrev {length} tegn).",maxLength:"Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.",numeric:'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").',digits:"Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).",alpha:"Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.",alphanum:"Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.",dateSuchAs:"Skriv en gyldig dato som {date}",dateInFormatMDY:'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")',email:'Skriv en gyldig e-mail adresse. F.eks "fred@domain.com".',url:'Skriv en gyldig URL adresse. F.eks "http://www.example.com".',currencyDollar:"Skriv et gldigt beløb. F.eks Kr.100.00 .",oneRequired:"Et eller flere af felterne i denne formular skal udfyldes.",errorPrefix:"Fejl: ",warningPrefix:"Advarsel: ",noSpace:"Der må ikke benyttes mellemrum i dette felt.",reqChkByNode:"Foretag et valg.",requiredChk:"Dette felt skal udfyldes.",reqChkByName:"Vælg en {label}.",match:"Dette felt skal matche {matchName} feltet",startDate:"start dato",endDate:"slut dato",currendDate:"dags dato",afterDate:"Datoen skal være større end eller lig med {label}.",beforeDate:"Datoen skal være mindre end eller lig med {label}.",startMonth:"Vælg en start måned",sameMonth:"De valgte datoer skal være i samme måned - skift en af dem."}); Locale.define("de-DE","Date",{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],months_abbr:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],days_abbr:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"vormittags",PM:"nachmittags",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"vor weniger als einer Minute",minuteAgo:"vor einer Minute",minutesAgo:"vor {delta} Minuten",hourAgo:"vor einer Stunde",hoursAgo:"vor {delta} Stunden",dayAgo:"vor einem Tag",daysAgo:"vor {delta} Tagen",weekAgo:"vor einer Woche",weeksAgo:"vor {delta} Wochen",monthAgo:"vor einem Monat",monthsAgo:"vor {delta} Monaten",yearAgo:"vor einem Jahr",yearsAgo:"vor {delta} Jahren",lessThanMinuteUntil:"in weniger als einer Minute",minuteUntil:"in einer Minute",minutesUntil:"in {delta} Minuten",hourUntil:"in ca. einer Stunde",hoursUntil:"in ca. {delta} Stunden",dayUntil:"in einem Tag",daysUntil:"in {delta} Tagen",weekUntil:"in einer Woche",weeksUntil:"in {delta} Wochen",monthUntil:"in einem Monat",monthsUntil:"in {delta} Monaten",yearUntil:"in einem Jahr",yearsUntil:"in {delta} Jahren"}); Locale.define("de-CH").inherit("de-DE","Date");Locale.define("de-CH","FormValidator",{required:"Dieses Feld ist obligatorisch.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",maxLength:"Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:"Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.",numeric:"Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. "1", "1.1", "-1" oder "-1.1").",digits:"Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).",alpha:"Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.",dateSuchAs:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel {date}",dateInFormatMDY:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. "31.12.1999")",email:"Geben Sie bitte eine gültige E-Mail Adresse ein. Wie zum Beispiel "maria@bernasconi.ch".",url:"Geben Sie bitte eine gültige URL ein. Wie zum Beispiel http://www.example.com.",currencyDollar:"Geben Sie bitte einen gültigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .",oneRequired:"Machen Sie für mindestens eines der Eingabefelder einen Eintrag.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"In diesem Eingabefeld darf kein Leerzeichen sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld ist obligatorisch.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem Feld {matchName} übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eine von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); Locale.define("de-DE","FormValidator",{required:"Dieses Eingabefeld muss ausgefüllt werden.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).",maxLength:"Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:'Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.',numeric:'Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.',digits:"Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).",alpha:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.",dateSuchAs:'Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").',dateInFormatMDY:'Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").',email:'Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "max@mustermann.de").',url:'Geben Sie bitte eine gültige URL ein (z.B. "http://www.example.com").',currencyDollar:"Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00€).",oneRequired:"Bitte füllen Sie mindestens ein Eingabefeld aus.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"Es darf kein Leerzeichen in diesem Eingabefeld sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld muss ausgefüllt werden.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein als {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein als {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); Locale.define("EU","Number",{decimal:",",group:".",currency:{prefix:"€ "}});Locale.define("de-DE").inherit("EU","Number");Locale.define("en-GB","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}).inherit("en-US","Date"); Locale.define("es-ES","Date",{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],months_abbr:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],days_abbr:["dom","lun","mar","mié","juv","vie","sáb"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"hace menos de un minuto",minuteAgo:"hace un minuto",minutesAgo:"hace {delta} minutos",hourAgo:"hace una hora",hoursAgo:"hace unas {delta} horas",dayAgo:"hace un día",daysAgo:"hace {delta} días",weekAgo:"hace una semana",weeksAgo:"hace unas {delta} semanas",monthAgo:"hace un mes",monthsAgo:"hace {delta} meses",yearAgo:"hace un año",yearsAgo:"hace {delta} años",lessThanMinuteUntil:"menos de un minuto desde ahora",minuteUntil:"un minuto desde ahora",minutesUntil:"{delta} minutos desde ahora",hourUntil:"una hora desde ahora",hoursUntil:"unas {delta} horas desde ahora",dayUntil:"un día desde ahora",daysUntil:"{delta} días desde ahora",weekUntil:"una semana desde ahora",weeksUntil:"unas {delta} semanas desde ahora",monthUntil:"un mes desde ahora",monthsUntil:"{delta} meses desde ahora",yearUntil:"un año desde ahora",yearsUntil:"{delta} años desde ahora"}); Locale.define("es-AR").inherit("es-ES","Date");Locale.define("es-AR","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).",maxLength:"Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).",integer:"Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor use sólo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y/o puntos no está permitido).",alpha:"Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.",alphanum:"Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.",dateSuchAs:"Por favor ingrese una fecha válida como {date}",dateInFormatMDY:'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "fred@dominio.com".',url:"Por favor ingrese una URL válida como http://www.example.com.",currencyDollar:"Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .",oneRequired:"Por favor ingrese algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Advertencia: ",noSpace:"No se permiten espacios en este campo.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); Locale.define("es-ES","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).",maxLength:"Por favor introduce no más de {maxLength} caracteres (has introducido {length} caracteres).",integer:"Por favor introduce un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor introduce solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor usa solo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y puntos no esta permitido).",alpha:"Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.",alphanum:"Por favor, usa solo letras (a-z) o números (0-9) en este campo. No se admiten espacios ni otros caracteres.",dateSuchAs:"Por favor introduce una fecha válida como {date}",dateInFormatMDY:'Por favor introduce una fecha válida como DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, introduce una dirección de email válida. Por ejemplo, "fred@domain.com".',url:"Por favor introduce una URL válida como http://www.example.com.",currencyDollar:"Por favor introduce una cantidad válida de €. Por ejemplo €100,00 .",oneRequired:"Por favor introduce algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Aviso: ",noSpace:"No pueden haber espacios en esta entrada.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); Locale.define("et-EE","Date",{months:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],months_abbr:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],days:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],days_abbr:["pühap","esmasp","teisip","kolmap","neljap","reede","laup"],dateOrder:["month","date","year"],shortDate:"%m.%d.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"vähem kui minut aega tagasi",minuteAgo:"umbes minut aega tagasi",minutesAgo:"{delta} minutit tagasi",hourAgo:"umbes tund aega tagasi",hoursAgo:"umbes {delta} tundi tagasi",dayAgo:"1 päev tagasi",daysAgo:"{delta} päeva tagasi",weekAgo:"1 nädal tagasi",weeksAgo:"{delta} nädalat tagasi",monthAgo:"1 kuu tagasi",monthsAgo:"{delta} kuud tagasi",yearAgo:"1 aasta tagasi",yearsAgo:"{delta} aastat tagasi",lessThanMinuteUntil:"vähem kui minuti aja pärast",minuteUntil:"umbes minuti aja pärast",minutesUntil:"{delta} minuti pärast",hourUntil:"umbes tunni aja pärast",hoursUntil:"umbes {delta} tunni pärast",dayUntil:"1 päeva pärast",daysUntil:"{delta} päeva pärast",weekUntil:"1 nädala pärast",weeksUntil:"{delta} nädala pärast",monthUntil:"1 kuu pärast",monthsUntil:"{delta} kuu pärast",yearUntil:"1 aasta pärast",yearsUntil:"{delta} aasta pärast"}); Locale.define("et-EE","FormValidator",{required:"Väli peab olema täidetud.",minLength:"Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).",maxLength:"Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).",integer:"Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.",numeric:'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").',digits:"Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).",alpha:"Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.",alphanum:"Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.",dateSuchAs:"Palun sisestage kehtiv kuupäev kujul {date}",dateInFormatMDY:'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").',email:'Palun sisestage kehtiv e-maili aadress (näiteks: "fred@domain.com").',url:"Palun sisestage kehtiv URL (näiteks: http://www.example.com).",currencyDollar:"Palun sisestage kehtiv $ summa (näiteks: $100.00).",oneRequired:"Palun sisestage midagi vähemalt ühele antud väljadest.",errorPrefix:"Viga: ",warningPrefix:"Hoiatus: ",noSpace:"Väli ei tohi sisaldada tühikuid.",reqChkByNode:"Ükski väljadest pole valitud.",requiredChk:"Välja täitmine on vajalik.",reqChkByName:"Palun valige üks {label}.",match:"Väli peab sobima {matchName} väljaga",startDate:"algkuupäev",endDate:"lõppkuupäev",currendDate:"praegune kuupäev",afterDate:"Kuupäev peab olema võrdne või pärast {label}.",beforeDate:"Kuupäev peab olema võrdne või enne {label}.",startMonth:"Palun valige algkuupäev.",sameMonth:"Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva."}); Locale.define("fa","Date",{months:["ژانویه","فوریه","مارس","آپریل","مه","ژوئن","ژوئیه","آگوست","سپتامبر","اکتبر","نوامبر","دسامبر"],months_abbr:["1","2","3","4","5","6","7","8","9","10","11","12"],days:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],days_abbr:["ي","د","س","چ","پ","ج","ش"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"ق.ظ",PM:"ب.ظ",ordinal:"ام",lessThanMinuteAgo:"کمتر از یک دقیقه پیش",minuteAgo:"حدود یک دقیقه پیش",minutesAgo:"{delta} دقیقه پیش",hourAgo:"حدود یک ساعت پیش",hoursAgo:"حدود {delta} ساعت پیش",dayAgo:"1 روز پیش",daysAgo:"{delta} روز پیش",weekAgo:"1 هفته پیش",weeksAgo:"{delta} هفته پیش",monthAgo:"1 ماه پیش",monthsAgo:"{delta} ماه پیش",yearAgo:"1 سال پیش",yearsAgo:"{delta} سال پیش",lessThanMinuteUntil:"کمتر از یک دقیقه از حالا",minuteUntil:"حدود یک دقیقه از حالا",minutesUntil:"{delta} دقیقه از حالا",hourUntil:"حدود یک ساعت از حالا",hoursUntil:"حدود {delta} ساعت از حالا",dayUntil:"1 روز از حالا",daysUntil:"{delta} روز از حالا",weekUntil:"1 هفته از حالا",weeksUntil:"{delta} هفته از حالا",monthUntil:"1 ماه از حالا",monthsUntil:"{delta} ماه از حالا",yearUntil:"1 سال از حالا",yearsUntil:"{delta} سال از حالا"}); Locale.define("fa","FormValidator",{required:"این فیلد الزامی است.",minLength:"شما باید حداقل {minLength} حرف وارد کنید ({length} حرف وارد کرده اید).",maxLength:"لطفا حداکثر {maxLength} حرف وارد کنید (شما {length} حرف وارد کرده اید).",integer:"لطفا از عدد صحیح استفاده کنید. اعداد اعشاری (مانند 1.25) مجاز نیستند.",numeric:'لطفا فقط داده عددی وارد کنید (مانند "1" یا "1.1" یا "1-" یا "1.1-").',digits:"لطفا فقط از اعداد و علامتها در این فیلد استفاده کنید (برای مثال شماره تلفن با خط تیره و نقطه قابل قبول است).",alpha:"لطفا فقط از حروف الفباء برای این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.",alphanum:"لطفا فقط از حروف الفباء و اعداد در این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.",dateSuchAs:"لطفا یک تاریخ معتبر مانند {date} وارد کنید.",dateInFormatMDY:'لطفا یک تاریخ معتبر به شکل MM/DD/YYYY وارد کنید (مانند "12/31/1999").',email:'لطفا یک آدرس ایمیل معتبر وارد کنید. برای مثال "fred@domain.com".',url:"لطفا یک URL معتبر مانند http://www.example.com وارد کنید.",currencyDollar:"لطفا یک محدوده معتبر برای این بخش وارد کنید مانند 100.00$ .",oneRequired:"لطفا حداقل یکی از فیلدها را پر کنید.",errorPrefix:"خطا: ",warningPrefix:"هشدار: ",noSpace:"استفاده از فاصله در این بخش مجاز نیست.",reqChkByNode:"موردی انتخاب نشده است.",requiredChk:"این فیلد الزامی است.",reqChkByName:"لطفا یک {label} را انتخاب کنید.",match:"این فیلد باید با فیلد {matchName} مطابقت داشته باشد.",startDate:"تاریخ شروع",endDate:"تاریخ پایان",currendDate:"تاریخ کنونی",afterDate:"تاریخ میبایست برابر یا بعد از {label} باشد",beforeDate:"تاریخ میبایست برابر یا قبل از {label} باشد",startMonth:"لطفا ماه شروع را انتخاب کنید",sameMonth:"این دو تاریخ باید در یک ماه باشند - شما باید یکی یا هر دو را تغییر دهید.",creditcard:"شماره کارت اعتباری که وارد کرده اید معتبر نیست. لطفا شماره را بررسی کنید و مجددا تلاش کنید. {length} رقم وارد شده است."}); Locale.define("fi-FI","Date",{months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],months_abbr:["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],days_abbr:["su","ma","ti","ke","to","pe","la"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"vajaa minuutti sitten",minuteAgo:"noin minuutti sitten",minutesAgo:"{delta} minuuttia sitten",hourAgo:"noin tunti sitten",hoursAgo:"noin {delta} tuntia sitten",dayAgo:"päivä sitten",daysAgo:"{delta} päivää sitten",weekAgo:"viikko sitten",weeksAgo:"{delta} viikkoa sitten",monthAgo:"kuukausi sitten",monthsAgo:"{delta} kuukautta sitten",yearAgo:"vuosi sitten",yearsAgo:"{delta} vuotta sitten",lessThanMinuteUntil:"vajaan minuutin kuluttua",minuteUntil:"noin minuutin kuluttua",minutesUntil:"{delta} minuutin kuluttua",hourUntil:"noin tunnin kuluttua",hoursUntil:"noin {delta} tunnin kuluttua",dayUntil:"päivän kuluttua",daysUntil:"{delta} päivän kuluttua",weekUntil:"viikon kuluttua",weeksUntil:"{delta} viikon kuluttua",monthUntil:"kuukauden kuluttua",monthsUntil:"{delta} kuukauden kuluttua",yearUntil:"vuoden kuluttua",yearsUntil:"{delta} vuoden kuluttua"}); Locale.define("fi-FI","FormValidator",{required:"Tämä kenttä on pakollinen.",minLength:"Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).",maxLength:"Älä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).",integer:"Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.",numeric:'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").',digits:"Käytä pelkästään numeroita ja välimerkkejä tässä kentässä (syötteet, kuten esim. puhelinnumero, jossa on väliviivoja, pilkkuja tai pisteitä, kelpaa).",alpha:"Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.",alphanum:"Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.",dateSuchAs:"Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}",dateInFormatMDY:'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")',email:'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "matti@meikalainen.com").',url:"Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.example.com.",currencyDollar:"Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .",oneRequired:"Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.",errorPrefix:"Virhe: ",warningPrefix:"Varoitus: ",noSpace:"Tässä syötteessä ei voi olla välilyöntejä",reqChkByNode:"Ei valintoja.",requiredChk:"Tämä kenttä on pakollinen.",reqChkByName:"Ole hyvä ja valitse {label}.",match:"Tämän kentän tulee vastata kenttää {matchName}",startDate:"alkupäivämäärä",endDate:"loppupäivämäärä",currendDate:"nykyinen päivämäärä",afterDate:"Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.",beforeDate:"Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.",startMonth:"Ole hyvä ja valitse aloituskuukausi",sameMonth:"Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.",creditcard:"Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty."}); Locale.define("fi-FI","Number",{group:" "}).inherit("EU","Number");Locale.define("fr-FR","Date",{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],months_abbr:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],days_abbr:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:function(a){return(a>1)?"":"er"; },lessThanMinuteAgo:"il y a moins d'une minute",minuteAgo:"il y a une minute",minutesAgo:"il y a {delta} minutes",hourAgo:"il y a une heure",hoursAgo:"il y a {delta} heures",dayAgo:"il y a un jour",daysAgo:"il y a {delta} jours",weekAgo:"il y a une semaine",weeksAgo:"il y a {delta} semaines",monthAgo:"il y a 1 mois",monthsAgo:"il y a {delta} mois",yearthAgo:"il y a 1 an",yearsAgo:"il y a {delta} ans",lessThanMinuteUntil:"dans moins d'une minute",minuteUntil:"dans une minute",minutesUntil:"dans {delta} minutes",hourUntil:"dans une heure",hoursUntil:"dans {delta} heures",dayUntil:"dans un jour",daysUntil:"dans {delta} jours",weekUntil:"dans 1 semaine",weeksUntil:"dans {delta} semaines",monthUntil:"dans 1 mois",monthsUntil:"dans {delta} mois",yearUntil:"dans 1 an",yearsUntil:"dans {delta} ans"}); Locale.define("fr-FR","FormValidator",{required:"Ce champ est obligatoire.",length:"Veuillez saisir {length} caractère(s) (vous avez saisi {elLength} caractère(s)",minLength:"Veuillez saisir un minimum de {minLength} caractère(s) (vous avez saisi {length} caractère(s)).",maxLength:"Veuillez saisir un maximum de {maxLength} caractère(s) (vous avez saisi {length} caractère(s)).",integer:'Veuillez saisir un nombre entier dans ce champ. Les nombres décimaux (ex : "1,25") ne sont pas autorisés.',numeric:'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").',digits:"Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un numéro de téléphone avec des traits d'union est autorisé).",alpha:"Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",alphanum:"Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",dateSuchAs:"Veuillez saisir une date correcte comme {date}",dateInFormatMDY:'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").',email:'Veuillez saisir une adresse de courrier électronique. Par example "fred@domaine.com".',url:"Veuillez saisir une URL, comme http://www.example.com.",currencyDollar:"Veuillez saisir une quantité correcte. Par example 100,00€.",oneRequired:"Veuillez sélectionner au moins une de ces options.",errorPrefix:"Erreur : ",warningPrefix:"Attention : ",noSpace:"Ce champ n'accepte pas les espaces.",reqChkByNode:"Aucun élément n'est sélectionné.",requiredChk:"Ce champ est obligatoire.",reqChkByName:"Veuillez sélectionner un(e) {label}.",match:"Ce champ doit correspondre avec le champ {matchName}.",startDate:"date de début",endDate:"date de fin",currendDate:"date actuelle",afterDate:"La date doit être identique ou postérieure à {label}.",beforeDate:"La date doit être identique ou antérieure à {label}.",startMonth:"Veuillez sélectionner un mois de début.",sameMonth:"Ces deux dates doivent être dans le même mois - vous devez en modifier une.",creditcard:"Le numéro de carte de crédit est invalide. Merci de vérifier le numéro et de réessayer. Vous avez entré {length} chiffre(s)."}); Locale.define("fr-FR","Number",{group:" "}).inherit("EU","Number");Locale.define("he-IL","Date",{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],months_abbr:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],days_abbr:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"לפני פחות מדקה",minuteAgo:"לפני כדקה",minutesAgo:"לפני {delta} דקות",hourAgo:"לפני כשעה",hoursAgo:"לפני {delta} שעות",dayAgo:"לפני יום",daysAgo:"לפני {delta} ימים",weekAgo:"לפני שבוע",weeksAgo:"לפני {delta} שבועות",monthAgo:"לפני חודש",monthsAgo:"לפני {delta} חודשים",yearAgo:"לפני שנה",yearsAgo:"לפני {delta} שנים",lessThanMinuteUntil:"בעוד פחות מדקה",minuteUntil:"בעוד כדקה",minutesUntil:"בעוד {delta} דקות",hourUntil:"בעוד כשעה",hoursUntil:"בעוד {delta} שעות",dayUntil:"בעוד יום",daysUntil:"בעוד {delta} ימים",weekUntil:"בעוד שבוע",weeksUntil:"בעוד {delta} שבועות",monthUntil:"בעוד חודש",monthsUntil:"בעוד {delta} חודשים",yearUntil:"בעוד שנה",yearsUntil:"בעוד {delta} שנים"}); Locale.define("he-IL","FormValidator",{required:"נא למלא שדה זה.",minLength:"נא להזין לפחות {minLength} תווים (הזנת {length} תווים).",maxLength:"נא להזין עד {maxLength} תווים (הזנת {length} תווים).",integer:"נא להזין מספר שלם לשדה זה. מספרים עשרוניים (כמו 1.25) אינם חוקיים.",numeric:'נא להזין ערך מספרי בלבד בשדה זה (כמו "1", "1.1", "-1" או "-1.1").',digits:"נא להזין רק ספרות וסימני הפרדה בשדה זה (למשל, מספר טלפון עם מקפים או נקודות הוא חוקי).",alpha:"נא להזין רק אותיות באנגלית (a-z) בשדה זה. רווחים או תווים אחרים אינם חוקיים.",alphanum:"נא להזין רק אותריות באנגלית (a-z) או ספרות (0-9) בשדה זה. אווחרים או תווים אחרים אינם חוקיים.",dateSuchAs:"נא להזין תאריך חוקי, כמו {date}",dateInFormatMDY:'נא להזין תאריך חוקי בפורמט MM/DD/YYYY (כמו "12/31/1999")',email:'נא להזין כתובת אימייל חוקית. לדוגמה: "fred@domain.com".',url:"נא להזין כתובת אתר חוקית, כמו http://www.example.com.",currencyDollar:"נא להזין סכום דולרי חוקי. לדוגמה $100.00.",oneRequired:"נא לבחור לפחות בשדה אחד.",errorPrefix:"שגיאה: ",warningPrefix:"אזהרה: ",noSpace:"אין להזין רווחים בשדה זה.",reqChkByNode:"נא לבחור אחת מהאפשרויות.",requiredChk:"שדה זה נדרש.",reqChkByName:"נא לבחור {label}.",match:"שדה זה צריך להתאים לשדה {matchName}",startDate:"תאריך ההתחלה",endDate:"תאריך הסיום",currendDate:"התאריך הנוכחי",afterDate:"התאריך צריך להיות זהה או אחרי {label}.",beforeDate:"התאריך צריך להיות זהה או לפני {label}.",startMonth:"נא לבחור חודש התחלה",sameMonth:"שני תאריכים אלה צריכים להיות באותו חודש - נא לשנות אחד התאריכים.",creditcard:"מספר כרטיס האשראי שהוזן אינו חוקי. נא לבדוק שנית. הוזנו {length} ספרות."}); Locale.define("he-IL","Number",{decimal:".",group:",",currency:{suffix:" ₪"}});Locale.define("hu-HU","Date",{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],months_abbr:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],days:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],days_abbr:["V","H","K","Sze","Cs","P","Szo"],dateOrder:["year","month","date"],shortDate:"%Y.%m.%d.",shortTime:"%I:%M",AM:"de.",PM:"du.",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"alig egy perce",minuteAgo:"egy perce",minutesAgo:"{delta} perce",hourAgo:"egy órája",hoursAgo:"{delta} órája",dayAgo:"1 napja",daysAgo:"{delta} napja",weekAgo:"1 hete",weeksAgo:"{delta} hete",monthAgo:"1 hónapja",monthsAgo:"{delta} hónapja",yearAgo:"1 éve",yearsAgo:"{delta} éve",lessThanMinuteUntil:"alig egy perc múlva",minuteUntil:"egy perc múlva",minutesUntil:"{delta} perc múlva",hourUntil:"egy óra múlva",hoursUntil:"{delta} óra múlva",dayUntil:"1 nap múlva",daysUntil:"{delta} nap múlva",weekUntil:"1 hét múlva",weeksUntil:"{delta} hét múlva",monthUntil:"1 hónap múlva",monthsUntil:"{delta} hónap múlva",yearUntil:"1 év múlva",yearsUntil:"{delta} év múlva"}); Locale.define("hu-HU","FormValidator",{required:"A mező kitöltése kötelező.",minLength:"Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).",maxLength:"Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).",integer:"Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.",numeric:'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").',digits:"Csak számok és írásjelek megadása lehetséges (pl. telefonszám kötőjelek és/vagy perjelekkel).",alpha:"Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",alphanum:"Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",dateSuchAs:"Valós dátum megadása szükséges (pl. {date}).",dateInFormatMDY:'Valós dátum megadása szükséges ÉÉÉÉ.HH.NN. formában. (pl. "1999.12.31.")',email:'Valós e-mail cím megadása szükséges (pl. "fred@domain.hu").',url:"Valós URL megadása szükséges (pl. http://www.example.com).",currencyDollar:"Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).",oneRequired:"Az alábbi mezők legalább egyikének kitöltése kötelező.",errorPrefix:"Hiba: ",warningPrefix:"Figyelem: ",noSpace:"A mező nem tartalmazhat szóközöket.",reqChkByNode:"Nincs egyetlen kijelölt elem sem.",requiredChk:"A mező kitöltése kötelező.",reqChkByName:"Egy {label} kiválasztása szükséges.",match:"A mezőnek egyeznie kell a(z) {matchName} mezővel.",startDate:"a kezdet dátuma",endDate:"a vég dátuma",currendDate:"jelenlegi dátum",afterDate:"A dátum nem lehet kisebb, mint {label}.",beforeDate:"A dátum nem lehet nagyobb, mint {label}.",startMonth:"Kezdeti hónap megadása szükséges.",sameMonth:"A két dátumnak ugyanazon hónapban kell lennie.",creditcard:"A megadott bankkártyaszám nem valódi (megadva {length} számjegy)."}); Locale.define("it-IT","Date",{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],months_abbr:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],days_abbr:["dom","lun","mar","mer","gio","ven","sab"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"º",lessThanMinuteAgo:"meno di un minuto fa",minuteAgo:"circa un minuto fa",minutesAgo:"circa {delta} minuti fa",hourAgo:"circa un'ora fa",hoursAgo:"circa {delta} ore fa",dayAgo:"circa 1 giorno fa",daysAgo:"circa {delta} giorni fa",weekAgo:"una settimana fa",weeksAgo:"{delta} settimane fa",monthAgo:"un mese fa",monthsAgo:"{delta} mesi fa",yearAgo:"un anno fa",yearsAgo:"{delta} anni fa",lessThanMinuteUntil:"tra meno di un minuto",minuteUntil:"tra circa un minuto",minutesUntil:"tra circa {delta} minuti",hourUntil:"tra circa un'ora",hoursUntil:"tra circa {delta} ore",dayUntil:"tra circa un giorno",daysUntil:"tra circa {delta} giorni",weekUntil:"tra una settimana",weeksUntil:"tra {delta} settimane",monthUntil:"tra un mese",monthsUntil:"tra {delta} mesi",yearUntil:"tra un anno",yearsUntil:"tra {delta} anni"}); Locale.define("it-IT","FormValidator",{required:"Il campo è obbligatorio.",minLength:"Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).",maxLength:"Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).",integer:"Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).",numeric:'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").',digits:"Inserire solo numeri e caratteri di punteggiatura. Per esempio è consentito un numero telefonico con trattini o punti.",alpha:"Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.",alphanum:"Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.",dateSuchAs:"Inserire una data valida del tipo {date}",dateInFormatMDY:'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")',email:'Inserire un indirizzo email valido. Per esempio "nome@dominio.com".',url:'Inserire un indirizzo valido. Per esempio "http://www.example.com".',currencyDollar:'Inserire un importo valido. Per esempio "$100.00".',oneRequired:"Completare almeno uno dei campi richiesti.",errorPrefix:"Errore: ",warningPrefix:"Attenzione: ",noSpace:"Non sono consentiti spazi.",reqChkByNode:"Nessuna voce selezionata.",requiredChk:"Il campo è obbligatorio.",reqChkByName:"Selezionare un(a) {label}.",match:"Il valore deve corrispondere al campo {matchName}",startDate:"data d'inizio",endDate:"data di fine",currendDate:"data attuale",afterDate:"La data deve corrispondere o essere successiva al {label}.",beforeDate:"La data deve corrispondere o essere precedente al {label}.",startMonth:"Selezionare un mese d'inizio",sameMonth:"Le due date devono essere dello stesso mese - occorre modificarne una."}); Locale.define("ja-JP","Date",{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],months_abbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],days:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],days_abbr:["日","月","火","水","木","金","土"],dateOrder:["year","month","date"],shortDate:"%Y/%m/%d",shortTime:"%H:%M",AM:"午前",PM:"午後",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"1分以内前",minuteAgo:"約1分前",minutesAgo:"約{delta}分前",hourAgo:"約1時間前",hoursAgo:"約{delta}時間前",dayAgo:"1日前",daysAgo:"{delta}日前",weekAgo:"1週間前",weeksAgo:"{delta}週間前",monthAgo:"1ヶ月前",monthsAgo:"{delta}ヶ月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"今から約1分以内",minuteUntil:"今から約1分",minutesUntil:"今から約{delta}分",hourUntil:"今から約1時間",hoursUntil:"今から約{delta}時間",dayUntil:"今から1日間",daysUntil:"今から{delta}日間",weekUntil:"今から1週間",weeksUntil:"今から{delta}週間",monthUntil:"今から1ヶ月",monthsUntil:"今から{delta}ヶ月",yearUntil:"今から1年",yearsUntil:"今から{delta}年"}); Locale.define("ja-JP","FormValidator",{required:"入力は必須です。",minLength:"入力文字数は{minLength}以上にしてください。({length}文字)",maxLength:"入力文字数は{maxLength}以下にしてください。({length}文字)",integer:"整数を入力してください。",numeric:'入力できるのは数値だけです。(例: "1", "1.1", "-1", "-1.1"....)',digits:"入力できるのは数値と句読記号です。 (例: -や+を含む電話番号など).",alpha:"入力できるのは半角英字だけです。それ以外の文字は入力できません。",alphanum:"入力できるのは半角英数字だけです。それ以外の文字は入力できません。",dateSuchAs:"有効な日付を入力してください。{date}",dateInFormatMDY:'日付の書式に誤りがあります。YYYY/MM/DD (i.e. "1999/12/31")',email:"メールアドレスに誤りがあります。",url:"URLアドレスに誤りがあります。",currencyDollar:"金額に誤りがあります。",oneRequired:"ひとつ以上入力してください。",errorPrefix:"エラー: ",warningPrefix:"警告: ",noSpace:"スペースは入力できません。",reqChkByNode:"選択されていません。",requiredChk:"この項目は必須です。",reqChkByName:"{label}を選択してください。",match:"{matchName}が入力されている場合必須です。",startDate:"開始日",endDate:"終了日",currendDate:"今日",afterDate:"{label}以降の日付にしてください。",beforeDate:"{label}以前の日付にしてください。",startMonth:"開始月を選択してください。",sameMonth:"日付が同一です。どちらかを変更してください。"}); Locale.define("ja-JP","Number",{decimal:".",group:",",currency:{decimals:0,prefix:"\\"}});Locale.define("nl-NL","Date",{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],months_abbr:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],days_abbr:["zo","ma","di","wo","do","vr","za"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"e",lessThanMinuteAgo:"minder dan een minuut geleden",minuteAgo:"ongeveer een minuut geleden",minutesAgo:"{delta} minuten geleden",hourAgo:"ongeveer een uur geleden",hoursAgo:"ongeveer {delta} uur geleden",dayAgo:"een dag geleden",daysAgo:"{delta} dagen geleden",weekAgo:"een week geleden",weeksAgo:"{delta} weken geleden",monthAgo:"een maand geleden",monthsAgo:"{delta} maanden geleden",yearAgo:"een jaar geleden",yearsAgo:"{delta} jaar geleden",lessThanMinuteUntil:"over minder dan een minuut",minuteUntil:"over ongeveer een minuut",minutesUntil:"over {delta} minuten",hourUntil:"over ongeveer een uur",hoursUntil:"over {delta} uur",dayUntil:"over ongeveer een dag",daysUntil:"over {delta} dagen",weekUntil:"over een week",weeksUntil:"over {delta} weken",monthUntil:"over een maand",monthsUntil:"over {delta} maanden",yearUntil:"over een jaar",yearsUntil:"over {delta} jaar"}); Locale.define("nl-NL","FormValidator",{required:"Dit veld is verplicht.",length:"Vul precies {length} karakters in (je hebt {elLength} karakters ingevoerd).",minLength:"Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).",maxLength:"Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).",integer:"Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.",numeric:'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").',digits:"Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).",alpha:"Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.",alphanum:"Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.",dateSuchAs:"Vul een geldige datum in, zoals {date}",dateInFormatMDY:'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")',email:'Vul een geldig e-mailadres in. Bijvoorbeeld "fred@domein.nl".',url:"Vul een geldige URL in, zoals http://www.example.com.",currencyDollar:"Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .",oneRequired:"Vul iets in bij in ieder geval een van deze velden.",warningPrefix:"Waarschuwing: ",errorPrefix:"Fout: ",noSpace:"Spaties zijn niet toegestaan in dit veld.",reqChkByNode:"Er zijn geen items geselecteerd.",requiredChk:"Dit veld is verplicht.",reqChkByName:"Selecteer een {label}.",match:"Dit veld moet overeen komen met het {matchName} veld",startDate:"de begin datum",endDate:"de eind datum",currendDate:"de huidige datum",afterDate:"De datum moet hetzelfde of na {label} zijn.",beforeDate:"De datum moet hetzelfde of voor {label} zijn.",startMonth:"Selecteer een begin maand",sameMonth:"Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.",creditcard:"Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld."}); Locale.define("nl-NL").inherit("EU","Number");Locale.define("no-NO","Date",{dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,lessThanMinuteAgo:"kortere enn et minutt siden",minuteAgo:"omtrent et minutt siden",minutesAgo:"{delta} minutter siden",hourAgo:"omtrent en time siden",hoursAgo:"omtrent {delta} timer siden",dayAgo:"{delta} dag siden",daysAgo:"{delta} dager siden"}); Locale.define("no-NO","FormValidator",{required:"Dette feltet er pÃ¥krevd.",minLength:"Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).",maxLength:"Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.",numeric:'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").',digits:"Vennligst bruk kun nummer og skilletegn i dette feltet.",alpha:"Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",alphanum:"Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",dateSuchAs:"Vennligst skriv inn en gyldig dato, som {date}",dateInFormatMDY:'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")',email:'Vennligst skriv inn en gyldig epost-adresse. For eksempel "espen@domene.no".',url:"Vennligst skriv inn en gyldig URL, for eksempel http://www.example.com.",currencyDollar:"Vennligst fyll ut et gyldig $ beløp. For eksempel $100.00 .",oneRequired:"Vennligst fyll ut noe i minst ett av disse feltene.",errorPrefix:"Feil: ",warningPrefix:"Advarsel: "}); Locale.define("pl-PL","Date",{months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],months_abbr:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],days_abbr:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"nad ranem",PM:"po południu",firstDayOfWeek:1,ordinal:function(a){return(a>3&&a<21)?"ty":["ty","szy","gi","ci","ty"][Math.min(a%10,4)]; },lessThanMinuteAgo:"mniej niż minute temu",minuteAgo:"około minutę temu",minutesAgo:"{delta} minut temu",hourAgo:"około godzinę temu",hoursAgo:"około {delta} godzin temu",dayAgo:"Wczoraj",daysAgo:"{delta} dni temu",lessThanMinuteUntil:"za niecałą minutę",minuteUntil:"za około minutę",minutesUntil:"za {delta} minut",hourUntil:"za około godzinę",hoursUntil:"za około {delta} godzin",dayUntil:"za 1 dzień",daysUntil:"za {delta} dni"}); Locale.define("pl-PL","FormValidator",{required:"To pole jest wymagane.",minLength:"Wymagane jest przynajmniej {minLength} znaków (wpisanych zostało tylko {length}).",maxLength:"Dozwolone jest nie więcej niż {maxLength} znaków (wpisanych zostało {length})",integer:"To pole wymaga liczb całych. Liczby dziesiętne (np. 1.25) są niedozwolone.",numeric:'Prosimy używać tylko numerycznych wartości w tym polu (np. "1", "1.1", "-1" lub "-1.1").',digits:"Prosimy używać liczb oraz zankow punktuacyjnych w typ polu (dla przykładu, przy numerze telefonu myślniki i kropki są dozwolone).",alpha:"Prosimy używać tylko liter (a-z) w tym polu. Spacje oraz inne znaki są niedozwolone.",alphanum:"Prosimy używać tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki są niedozwolone.",dateSuchAs:"Prosimy podać prawidłową datę w formacie: {date}",dateInFormatMDY:'Prosimy podać poprawną date w formacie DD.MM.RRRR (i.e. "12.01.2009")',email:'Prosimy podać prawidłowy adres e-mail, np. "jan@domena.pl".',url:"Prosimy podać prawidłowy adres URL, np. http://www.example.com.",currencyDollar:"Prosimy podać prawidłową sumę w PLN. Dla przykładu: 100.00 PLN.",oneRequired:"Prosimy wypełnić chociaż jedno z pól.",errorPrefix:"Błąd: ",warningPrefix:"Uwaga: ",noSpace:"W tym polu nie mogą znajdować się spacje.",reqChkByNode:"Brak zaznaczonych elementów.",requiredChk:"To pole jest wymagane.",reqChkByName:"Prosimy wybrać z {label}.",match:"To pole musi być takie samo jak {matchName}",startDate:"data początkowa",endDate:"data końcowa",currendDate:"aktualna data",afterDate:"Podana data poinna być taka sama lub po {label}.",beforeDate:"Podana data poinna być taka sama lub przed {label}.",startMonth:"Prosimy wybrać początkowy miesiąc.",sameMonth:"Te dwie daty muszą być w zakresie tego samego miesiąca - wymagana jest zmiana któregoś z pól."}); Locale.define("pt-PT","Date",{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],months_abbr:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],days:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],days_abbr:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"º",lessThanMinuteAgo:"há menos de um minuto",minuteAgo:"há cerca de um minuto",minutesAgo:"há {delta} minutos",hourAgo:"há cerca de uma hora",hoursAgo:"há cerca de {delta} horas",dayAgo:"há um dia",daysAgo:"há {delta} dias",weekAgo:"há uma semana",weeksAgo:"há {delta} semanas",monthAgo:"há um mês",monthsAgo:"há {delta} meses",yearAgo:"há um ano",yearsAgo:"há {delta} anos",lessThanMinuteUntil:"em menos de um minuto",minuteUntil:"em um minuto",minutesUntil:"em {delta} minutos",hourUntil:"em uma hora",hoursUntil:"em {delta} horas",dayUntil:"em um dia",daysUntil:"em {delta} dias",weekUntil:"em uma semana",weeksUntil:"em {delta} semanas",monthUntil:"em um mês",monthsUntil:"em {delta} meses",yearUntil:"em um ano",yearsUntil:"em {delta} anos"}); Locale.define("pt-BR","Date",{shortDate:"%d/%m/%Y"}).inherit("pt-PT","Date");Locale.define("pt-BR","FormValidator",{required:"Este campo é obrigatório.",minLength:"Digite pelo menos {minLength} caracteres (tamanho atual: {length}).",maxLength:"Não digite mais de {maxLength} caracteres (tamanho atual: {length}).",integer:"Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).",numeric:'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).",alpha:"Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "nome@dominio.com".',url:"Digite uma URL válida. Exemplo: http://www.example.com.",currencyDollar:"Digite um valor em dinheiro válido. Exemplo: R$100,00 .",oneRequired:"Digite algo para pelo menos um desses campos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: ",noSpace:"Não é possível digitar espaços neste campo.",reqChkByNode:"Não foi selecionado nenhum item.",requiredChk:"Este campo é obrigatório.",reqChkByName:"Por favor digite um {label}.",match:"Este campo deve ser igual ao campo {matchName}.",startDate:"a data inicial",endDate:"a data final",currendDate:"a data atual",afterDate:"A data deve ser igual ou posterior a {label}.",beforeDate:"A data deve ser igual ou anterior a {label}.",startMonth:"Por favor selecione uma data inicial.",sameMonth:"Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.",creditcard:"O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados."}); Locale.define("pt-PT","FormValidator",{required:"Este campo é necessário.",minLength:"Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).",maxLength:"Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).",integer:"Digite um número inteiro neste domínio. Com números decimais (por exemplo, 1,25), não são permitidas.",numeric:'Digite apenas valores numéricos neste domínio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).",alpha:"Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "fred@domain.com".',url:"Digite uma URL válida, como http://www.example.com.",currencyDollar:"Digite um valor válido $. Por exemplo $ 100,00. ",oneRequired:"Digite algo para pelo menos um desses insumos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: "}); (function(){var a=function(h,e,d,g,b){var c=h%10,f=h%100;if(c==1&&f!=11){return e;}else{if((c==2||c==3||c==4)&&!(f==12||f==13||f==14)){return d;}else{if(c==0||(c==5||c==6||c==7||c==8||c==9)||(f==11||f==12||f==13||f==14)){return g; }else{return b;}}}};Locale.define("ru-RU","Date",{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],months_abbr:["янв","февр","март","апр","май","июнь","июль","авг","сент","окт","нояб","дек"],days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],days_abbr:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"меньше минуты назад",minuteAgo:"минуту назад",minutesAgo:function(b){return"{delta} "+a(b,"минуту","минуты","минут")+" назад"; },hourAgo:"час назад",hoursAgo:function(b){return"{delta} "+a(b,"час","часа","часов")+" назад";},dayAgo:"вчера",daysAgo:function(b){return"{delta} "+a(b,"день","дня","дней")+" назад"; },weekAgo:"неделю назад",weeksAgo:function(b){return"{delta} "+a(b,"неделя","недели","недель")+" назад";},monthAgo:"месяц назад",monthsAgo:function(b){return"{delta} "+a(b,"месяц","месяца","месецев")+" назад"; },yearAgo:"год назад",yearsAgo:function(b){return"{delta} "+a(b,"год","года","лет")+" назад";},lessThanMinuteUntil:"меньше чем через минуту",minuteUntil:"через минуту",minutesUntil:function(b){return"через {delta} "+a(b,"час","часа","часов")+""; },hourUntil:"через час",hoursUntil:function(b){return"через {delta} "+a(b,"час","часа","часов")+"";},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","дня","дней")+""; },weekUntil:"через неделю",weeksUntil:function(b){return"через {delta} "+a(b,"неделю","недели","недель")+"";},monthUntil:"через месяц",monthsUntil:function(b){return"через {delta} "+a(b,"месяц","месяца","месецев")+""; },yearUntil:"через",yearsUntil:function(b){return"через {delta} "+a(b,"год","года","лет")+"";}});})();Locale.define("ru-RU","FormValidator",{required:"Это поле обязательно к заполнению.",minLength:"Пожалуйста, введите хотя бы {minLength} символов (Вы ввели {length}).",maxLength:"Пожалуйста, введите не больше {maxLength} символов (Вы ввели {length}).",integer:"Пожалуйста, введите в это поле число. Дробные числа (например 1.25) тут не разрешены.",numeric:'Пожалуйста, введите в это поле число (например "1" или "1.1", или "-1", или "-1.1").',digits:"В этом поле Вы можете использовать только цифры и знаки пунктуации (например, телефонный номер со знаками дефиса или с точками).",alpha:"В этом поле можно использовать только латинские буквы (a-z). Пробелы и другие символы запрещены.",alphanum:"В этом поле можно использовать только латинские буквы (a-z) и цифры (0-9). Пробелы и другие символы запрещены.",dateSuchAs:"Пожалуйста, введите корректную дату {date}",dateInFormatMDY:'Пожалуйста, введите дату в формате ММ/ДД/ГГГГ (например "12/31/1999")',email:'Пожалуйста, введите корректный емейл-адрес. Для примера "fred@domain.com".',url:"Пожалуйста, введите правильную ссылку вида http://www.example.com.",currencyDollar:"Пожалуйста, введите сумму в долларах. Например: $100.00 .",oneRequired:"Пожалуйста, выберите хоть что-нибудь в одном из этих полей.",errorPrefix:"Ошибка: ",warningPrefix:"Внимание: "}); (function(){var a=function(f,d,c,e,b){return(f>=1&&f<=3)?arguments[f]:b;};Locale.define("si-SI","Date",{months:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],days:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],days_abbr:["ned","pon","tor","sre","čet","pet","sob"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"manj kot minuto nazaj",minuteAgo:"minuto nazaj",minutesAgo:function(b){return"{delta} "+a(b,"minuto","minuti","minute","minut")+" nazaj"; },hourAgo:"uro nazaj",hoursAgo:function(b){return"{delta} "+a(b,"uro","uri","ure","ur")+" nazaj";},dayAgo:"dan nazaj",daysAgo:function(b){return"{delta} "+a(b,"dan","dneva","dni","dni")+" nazaj"; },weekAgo:"teden nazaj",weeksAgo:function(b){return"{delta} "+a(b,"teden","tedna","tedne","tednov")+" nazaj";},monthAgo:"mesec nazaj",monthsAgo:function(b){return"{delta} "+a(b,"mesec","meseca","mesece","mesecov")+" nazaj"; },yearthAgo:"leto nazaj",yearsAgo:function(b){return"{delta} "+a(b,"leto","leti","leta","let")+" nazaj";},lessThanMinuteUntil:"še manj kot minuto",minuteUntil:"še minuta",minutesUntil:function(b){return"še {delta} "+a(b,"minuta","minuti","minute","minut"); },hourUntil:"še ura",hoursUntil:function(b){return"še {delta} "+a(b,"ura","uri","ure","ur");},dayUntil:"še dan",daysUntil:function(b){return"še {delta} "+a(b,"dan","dneva","dnevi","dni"); },weekUntil:"še tedn",weeksUntil:function(b){return"še {delta} "+a(b,"teden","tedna","tedni","tednov");},monthUntil:"še mesec",monthsUntil:function(b){return"še {delta} "+a(b,"mesec","meseca","meseci","mesecov"); },yearUntil:"še leto",yearsUntil:function(b){return"še {delta} "+a(b,"leto","leti","leta","let");}});})();Locale.define("si-SI","FormValidator",{required:"To polje je obvezno",minLength:"Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).",maxLength:"Prosim, ne vnesite več kot {maxLength} znakov (vnesli ste {length} znakov).",integer:"Prosim, vnesite celo število. Decimalna števila (kot 1,25) niso dovoljena.",numeric:'Prosim, vnesite samo numerične vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").',digits:"Prosim, uporabite številke in ločila le na tem polju (na primer, dovoljena je telefonska številka z pomišlaji ali pikami).",alpha:"Prosim, uporabite le črke v tem plju. Presledki in drugi znaki niso dovoljeni.",alphanum:"Prosim, uporabite samo črke ali številke v tem polju. Presledki in drugi znaki niso dovoljeni.",dateSuchAs:"Prosim, vnesite pravilen datum kot {date}",dateInFormatMDY:'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")',email:'Prosim, vnesite pravilen email naslov. Na primer "fred@domain.com".',url:"Prosim, vnesite pravilen URL kot http://www.example.com.",currencyDollar:"Prosim, vnesit epravilno vrednost €. Primer 100,00€ .",oneRequired:"Prosimo, vnesite nekaj za vsaj eno izmed teh polj.",errorPrefix:"Napaka: ",warningPrefix:"Opozorilo: ",noSpace:"To vnosno polje ne dopušča presledkov.",reqChkByNode:"Nič niste izbrali.",requiredChk:"To polje je obvezno",reqChkByName:"Prosim, izberite {label}.",match:"To polje se mora ujemati z poljem {matchName}",startDate:"datum začetka",endDate:"datum konca",currendDate:"trenuten datum",afterDate:"Datum bi moral biti isti ali po {label}.",beforeDate:"Datum bi moral biti isti ali pred {label}.",startMonth:"Prosim, vnesite začetni datum",sameMonth:"Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.",creditcard:"Številka kreditne kartice ni pravilna. Preverite številko ali poskusite še enkrat. Vnešenih {length} znakov."}); Locale.define("sv-SE","Date",{months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],days_abbr:["sön","mån","tis","ons","tor","fre","lör"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"",PM:"",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"mindre än en minut sedan",minuteAgo:"ungefär en minut sedan",minutesAgo:"{delta} minuter sedan",hourAgo:"ungefär en timme sedan",hoursAgo:"ungefär {delta} timmar sedan",dayAgo:"1 dag sedan",daysAgo:"{delta} dagar sedan",lessThanMinuteUntil:"mindre än en minut sedan",minuteUntil:"ungefär en minut sedan",minutesUntil:"{delta} minuter sedan",hourUntil:"ungefär en timme sedan",hoursUntil:"ungefär {delta} timmar sedan",dayUntil:"1 dag sedan",daysUntil:"{delta} dagar sedan"}); Locale.define("sv-SE","FormValidator",{required:"Fältet är obligatoriskt.",minLength:"Ange minst {minLength} tecken (du angav {length} tecken).",maxLength:"Ange högst {maxLength} tecken (du angav {length} tecken). ",integer:"Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.",numeric:'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',digits:"Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).",alpha:"Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.",alphanum:"Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.",dateSuchAs:"Ange ett giltigt datum som t.ex. {date}",dateInFormatMDY:'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',email:'Ange en giltig e-postadress. Till exempel "erik@domain.com".',url:"Ange en giltig webbadress som http://www.example.com.",currencyDollar:"Ange en giltig belopp. Exempelvis 100,00.",oneRequired:"Vänligen ange minst ett av dessa alternativ.",errorPrefix:"Fel: ",warningPrefix:"Varning: ",noSpace:"Det får inte finnas några mellanslag i detta fält.",reqChkByNode:"Inga objekt är valda.",requiredChk:"Detta är ett obligatoriskt fält.",reqChkByName:"Välj en {label}.",match:"Detta fält måste matcha {matchName}",startDate:"startdatumet",endDate:"slutdatum",currendDate:"dagens datum",afterDate:"Datumet bör vara samma eller senare än {label}.",beforeDate:"Datumet bör vara samma eller tidigare än {label}.",startMonth:"Välj en start månad",sameMonth:"Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra."}); (function(){var a=function(j,e,c,i,b){var h=(j/10).toInt(),g=j%10,f=(j/100).toInt();if(h==1&&j>10){return i;}if(g==1){return e;}if(g>0&&g<5){return c;}return i; };Locale.define("uk-UA","Date",{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],months_abbr:["Січ","Лют","Бер","Квіт","Трав","Черв","Лип","Серп","Вер","Жовт","Лист","Груд"],days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],days_abbr:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"до полудня",PM:"по полудню",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"меньше хвилини тому",minuteAgo:"хвилину тому",minutesAgo:function(b){return"{delta} "+a(b,"хвилину","хвилини","хвилин")+" тому"; },hourAgo:"годину тому",hoursAgo:function(b){return"{delta} "+a(b,"годину","години","годин")+" тому";},dayAgo:"вчора",daysAgo:function(b){return"{delta} "+a(b,"день","дня","днів")+" тому"; },weekAgo:"тиждень тому",weeksAgo:function(b){return"{delta} "+a(b,"тиждень","тижні","тижнів")+" тому";},monthAgo:"місяць тому",monthsAgo:function(b){return"{delta} "+a(b,"місяць","місяці","місяців")+" тому"; },yearAgo:"рік тому",yearsAgo:function(b){return"{delta} "+a(b,"рік","роки","років")+" тому";},lessThanMinuteUntil:"за мить",minuteUntil:"через хвилину",minutesUntil:function(b){return"через {delta} "+a(b,"хвилину","хвилини","хвилин"); },hourUntil:"через годину",hoursUntil:function(b){return"через {delta} "+a(b,"годину","години","годин");},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","дня","днів"); },weekUntil:"через тиждень",weeksUntil:function(b){return"через {delta} "+a(b,"тиждень","тижні","тижнів");},monthUntil:"через місяць",monthesUntil:function(b){return"через {delta} "+a(b,"місяць","місяці","місяців"); },yearUntil:"через рік",yearsUntil:function(b){return"через {delta} "+a(b,"рік","роки","років");}});})();Locale.define("uk-UA","FormValidator",{required:"Це поле повинне бути заповненим.",minLength:"Введіть хоча б {minLength} символів (Ви ввели {length}).",maxLength:"Кількість символів не може бути більше {maxLength} (Ви ввели {length}).",integer:"Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.",numeric:'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',digits:"В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).",alpha:"В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.",alphanum:"В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.",dateSuchAs:"Введіть коректну дату {date}.",dateInFormatMDY:'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',email:'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',url:"Введіть коректне інтернет-посилання (наприклад http://www.example.com).",currencyDollar:'Введіть суму в доларах (наприклад "$100.00").',oneRequired:"Заповніть одне з полів.",errorPrefix:"Помилка: ",warningPrefix:"Увага: ",noSpace:"Пробіли заборонені.",reqChkByNode:"Не відмічено жодного варіанту.",requiredChk:"Це поле повинне бути віміченим.",reqChkByName:"Будь ласка, відмітьте {label}.",match:"Це поле повинно відповідати {matchName}",startDate:"початкова дата",endDate:"кінцева дата",currendDate:"сьогоднішня дата",afterDate:"Ця дата повинна бути такою ж, або пізнішою за {label}.",beforeDate:"Ця дата повинна бути такою ж, або ранішою за {label}.",startMonth:"Будь ласка, виберіть початковий місяць",sameMonth:"Ці дати повинні відноситись одного і того ж місяця. Будь ласка, змініть одну з них.",creditcard:"Номер кредитної карти введений неправильно. Будь ласка, перевірте його. Введено {length} символів."}); Locale.define("zh-CHS","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],months_abbr:["一","二","三","四","五","六","七","八","九","十","十一","十二"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["日","一","二","三","四","五","六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"不到1分钟前",minuteAgo:"大约1分钟前",minutesAgo:"{delta}分钟之前",hourAgo:"大约1小时前",hoursAgo:"大约{delta}小时前",dayAgo:"1天前",daysAgo:"{delta}天前",weekAgo:"1星期前",weeksAgo:"{delta}星期前",monthAgo:"1个月前",monthsAgo:"{delta}个月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"从现在开始不到1分钟",minuteUntil:"从现在开始約1分钟",minutesUntil:"从现在开始约{delta}分钟",hourUntil:"从现在开始1小时",hoursUntil:"从现在开始约{delta}小时",dayUntil:"从现在开始1天",daysUntil:"从现在开始{delta}天",weekUntil:"从现在开始1星期",weeksUntil:"从现在开始{delta}星期",monthUntil:"从现在开始一个月",monthsUntil:"从现在开始{delta}个月",yearUntil:"从现在开始1年",yearsUntil:"从现在开始{delta}年"}); Locale.define("zh-CHT","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],months_abbr:["一","二","三","四","五","六","七","八","九","十","十一","十二"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["日","一","二","三","四","五","六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"不到1分鐘前",minuteAgo:"大約1分鐘前",minutesAgo:"{delta}分鐘之前",hourAgo:"大約1小時前",hoursAgo:"大約{delta}小時前",dayAgo:"1天前",daysAgo:"{delta}天前",weekAgo:"1星期前",weeksAgo:"{delta}星期前",monthAgo:"1个月前",monthsAgo:"{delta}个月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"從現在開始不到1分鐘",minuteUntil:"從現在開始約1分鐘",minutesUntil:"從現在開始約{delta}分鐘",hourUntil:"從現在開始1小時",hoursUntil:"從現在開始約{delta}小時",dayUntil:"從現在開始1天",daysUntil:"從現在開始{delta}天",weekUntil:"從現在開始1星期",weeksUntil:"從現在開始{delta}星期",monthUntil:"從現在開始一個月",monthsUntil:"從現在開始{delta}個月",yearUntil:"從現在開始1年",yearsUntil:"從現在開始{delta}年"}); Locale.define("zh-CHS","FormValidator",{required:"此项必填。",minLength:"请至少输入 {minLength} 个字符 (已输入 {length} 个)。",maxLength:"最多只能输入 {maxLength} 个字符 (已输入 {length} 个)。",integer:'请输入一个整数,不能包含小数点。例如:"1", "200"。',numeric:'请输入一个数字,例如:"1", "1.1", "-1", "-1.1"。',digits:"请输入由数字和标点符号组成的内容。例如电话号码。",alpha:"请输入 A-Z 的 26 个字母,不能包含空格或任何其他字符。",alphanum:"请输入 A-Z 的 26 个字母或 0-9 的 10 个数字,不能包含空格或任何其他字符。",dateSuchAs:"请输入合法的日期格式,如:{date}。",dateInFormatMDY:'请输入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。',email:'请输入合法的电子信箱地址,例如:"fred@domain.com"。',url:"请输入合法的 Url 地址,例如:http://www.example.com。",currencyDollar:"请输入合法的货币符号,例如:¥100.0",oneRequired:"请至少选择一项。",errorPrefix:"错误:",warningPrefix:"警告:",noSpace:"不能包含空格。",reqChkByNode:"未选择任何内容。",requiredChk:"此项必填。",reqChkByName:"请选择 {label}.",match:"必须与{matchName}相匹配",startDate:"起始日期",endDate:"结束日期",currendDate:"当前日期",afterDate:"日期必须等于或晚于 {label}.",beforeDate:"日期必须早于或等于 {label}.",startMonth:"请选择起始月份",sameMonth:"您必须修改两个日期中的一个,以确保它们在同一月份。",creditcard:"您输入的信用卡号码不正确。当前已输入{length}个字符。"}); Locale.define("zh-CHT","FormValidator",{required:"此項必填。 ",minLength:"請至少輸入{minLength} 個字符(已輸入{length} 個)。 ",maxLength:"最多只能輸入{maxLength} 個字符(已輸入{length} 個)。 ",integer:'請輸入一個整數,不能包含小數點。例如:"1", "200"。 ',numeric:'請輸入一個數字,例如:"1", "1.1", "-1", "-1.1"。 ',digits:"請輸入由數字和標點符號組成的內容。例如電話號碼。 ",alpha:"請輸入AZ 的26 個字母,不能包含空格或任何其他字符。 ",alphanum:"請輸入AZ 的26 個字母或0-9 的10 個數字,不能包含空格或任何其他字符。 ",dateSuchAs:"請輸入合法的日期格式,如:{date}。 ",dateInFormatMDY:'請輸入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。 ',email:'請輸入合法的電子信箱地址,例如:"fred@domain.com"。 ',url:"請輸入合法的Url 地址,例如:http://www.example.com。 ",currencyDollar:"請輸入合法的貨幣符號,例如:¥100.0",oneRequired:"請至少選擇一項。 ",errorPrefix:"錯誤:",warningPrefix:"警告:",noSpace:"不能包含空格。 ",reqChkByNode:"未選擇任何內容。 ",requiredChk:"此項必填。 ",reqChkByName:"請選擇 {label}.",match:"必須與{matchName}相匹配",startDate:"起始日期",endDate:"結束日期",currendDate:"當前日期",afterDate:"日期必須等於或晚於{label}.",beforeDate:"日期必須早於或等於{label}.",startMonth:"請選擇起始月份",sameMonth:"您必須修改兩個日期中的一個,以確保它們在同一月份。 ",creditcard:"您輸入的信用卡號碼不正確。當前已輸入{length}個字符。 "}); Form.Validator.add("validate-currency-yuan",{errorMsg:function(){return Form.Validator.getMsg("currencyYuan");},test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^¥?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); }}); ================================================ FILE: js/distributionDisplay.js ================================================ // Universal plotting options var plotPoints = 200; var plotOptions = []; var sliderPoints = 101; var roundDigits = 3; var updateTime = 100; var areaFillColor="rgba(0,200,0,.3)"; plotOptions["pdf"] = { yaxis: { min:0 }, colors: ["rgb(0,200,0)", "rgb(200,0,0)","rgb(150,150,150)","rgb(150,150,150)", "rgb(0,200,0)"], series: { points: { fillColor: "rgb(0,200,0)"} }, grid: { hoverable: true, clickable: true }, crosshair: { mode: "x" } }; plotOptions["cdf"] = { yaxis: { min:0, max: 1.001}, colors: ["rgb(0,0,0)", "rgb(200,0,0)", "rgb(150,150,150)","rgb(150,150,150)", "rgb(0,200,0)"], series: { points: { fillColor: "rgb(0,200,0)"} }, grid: { hoverable: true, clickable: false } }; var plot; var dist; var distName; var ptznNum; var starts; var rangesHi; var rangesLo; var plotxrng; var distributions = []; function getShaded(plot,pos, limits, cumdens, args){ var data = plot.getData(); var x1 = data[2]; var x2 = data[3]; if(x2.data.length!=0){ x2 = x2.data[0][0]; x1 = x1.data[0][0]; var minx = Math.min(x1,x2); var maxx = Math.max(x1,x2); return cumdens.apply(null, [maxx].concat(args) ) - cumdens.apply(null, [minx].concat(args) ); }else if(x1.data.length!=0){ x1 = x1.data[0][0]; return cumdens.apply(null, [x1].concat(args) ); }else{ return cumdens.apply(null, [pos.x].concat(args) ); x2 = limits[0]; x1 = pos.x; } } function showTooltip(x, y, contents) { $('
' + contents + '
').css( { position: 'absolute', display: 'none', top: y - 30, left: x + 10, border: '1px solid #fdd', padding: '2px', 'background-color': '#fee', opacity: 0.80, 'font-family': 'sans-serif' }).appendTo("body").fadeIn(0); } function makeSortedTable(type, caption){ var n = distributions.length; var list = []; var i=0; for(d in distributions){ if (distributions.hasOwnProperty(d)) { if(distributions[d].type == type || type == "master") list.push(d); } } list.sort(); document.id(type+'_distributionsdiv').grab( new Element("table",{ id: type+"_distributiontable", 'class':"distribution" }) ); var cap = new Element('caption', { html: caption }); document.id(type+'_distributiontable').grab(cap); refTableHeaderRow(type); var body = new Element("tbody",{ id: type+"_distributiontablebody" }); document.id(type+'_distributiontable').grab(body); if(list.length==0) return; for(;i0;}, { mean: { fun: function(mu, sig2) { return jStat.normal.mean(mu, Math.sqrt(sig2)); }, display: "\\mu" }, variance: { fun: function(mu, sig2) { return jStat.normal.variance(mu, Math.sqrt(sig2)); }, display: "\\sigma^2" }, median: { fun: function(mu, sig2) { return jStat.normal.median(mu, Math.sqrt(sig2)); }, display: "\\mu" }, mode: { fun: function(mu, sig2) { return jStat.normal.mode(mu, Math.sqrt(sig2)); }, display: "\\mu" } }, null ); var normalMeanPrecision = new distributionParametrization( "mean/precision", [normalMean, normalPrecision], function(mu,tau) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(mu,tau) { return [-5,5]; }, "(-\\infty,\\infty)", function(x,mu,tau){ return jStat.normal.pdf(x,mu,Math.sqrt(1/tau)); }, "\\left(\\frac{\\tau}{2\\pi}\\right)^{\\frac{1}{2}}\\exp\\left\\{-\\frac{\\tau}{2}\\left(x-\\mu\\right)^2\\right\\}", function(x,mu,tau){ return jStat.normal.cdf(x,mu,Math.sqrt(1/tau)); }, "normalgamma", function(mu,tau){ return tau>0;}, { mean: { fun: function(mu, tau) { return jStat.normal.mean(mu, 1/Math.sqrt(tau)); }, display: "\\mu" }, variance: { fun: function(mu, tau) { return jStat.normal.variance(mu, 1/Math.sqrt(tau)); }, display: "\\frac{1}{\\tau}" }, median: { fun: function(mu, tau) { return jStat.normal.median(mu, 1/Math.sqrt(tau)); }, display: "\\mu" }, mode: { fun: function(mu, tau) { return jStat.normal.mode(mu, 1/Math.sqrt(tau)); }, display: "\\mu" } }, null ); var normalMeanStandardDeviation = new distributionParametrization( "mean/standard deviation", [normalMean, normalStandardDeviation], function(mu,sig2) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(mu,sig2) { return [-5,5]; }, "(-\\infty,\\infty)", function(x, mu, sig) { return jStat.normal.pdf(x, mu, sig); }, "\\left(2\\pi\\sigma^2\\right)^{-\\frac{1}{2}}\\exp\\left\\{-\\frac{1}{2\\sigma^2}\\left(x-\\mu\\right)^2\\right\\}", function(x, mu, sig) { return jStat.normal.cdf(x, mu, sig); }, null, function(mu,sig){ return sig>0;}, { mean: { fun: function(mu, sig) { return jStat.normal.mean(mu, sig); }, display: "\\mu" }, variance: { fun: function(mu, sig) { return jStat.normal.variance(mu, sig); }, display: "\\sigma" }, median: { fun: function(mu, sig) { return jStat.normal.median(mu, sig); }, display: "\\mu" }, mode: { fun: function(mu, sig) { return jStat.normal.mode(mu, sig); }, display: "\\mu" } }, null ); distributions["normal"] = new distribution( "normal", "Normal/Gaussian", "continuous", [ normalMeanVariance, normalMeanPrecision, normalMeanStandardDeviation], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Normal_distribution" } ); /*****/ // Gamma distribution /*****/ var gammaShape = new positiveParameter( "k", "k", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var gammaScale = new positiveParameter( "s", "s", function() { return [0.1,10]; }, true, 1, "continuous", "inversegamma", "scale" ); var gammaRate = new positiveParameter( "theta", "\\theta", function() { return [0.1,10]; }, true, 1, "continuous", "gamma", "rate" ); var gammaShapeScale = new distributionParametrization( "shape/scale", [gammaShape, gammaScale], function(k,s) { return [0,Number.POSITIVE_INFINITY]; }, function(k,s) { return [.01,10]; }, "(0,\\infty)", jStat.gamma.pdf, "\\frac{1}{\\Gamma(k)s^{k}} x^{k - 1} \\exp\\left\\{-\\frac{x}{s}\\right\\}", jStat.gamma.cdf, null, function(k,s){ return s>0 && k>0;}, { mean: { fun: jStat.gamma.mean, display: "ks" }, variance: { fun: jStat.gamma.variance, display: "ks^2" }, mode: { fun: jStat.gamma.mode, display: "(k-1)s, k\\geq 1" } }, null ); var gammaShapeRate = new distributionParametrization( "shape/rate", [gammaShape, gammaRate], function(k,theta) { return [0,Number.POSITIVE_INFINITY]; }, function(k,theta) { return [.01,10]; }, "(0,\\infty)", function(x, k, theta) { return jStat.gamma.pdf(x, k, 1/theta); }, "\\frac{\\theta^k}{\\Gamma(k)} x^{k - 1} \\exp\\left\\{-\\theta x\\right\\}", function(x, k, theta) { return jStat.gamma.cdf(x, k, 1/theta); }, null, function(k,theta){ return theta>0 && k>0;}, { mean: { fun: function(k,theta) { return jStat.gamma.mean(k, 1/theta); }, display: "\\frac{k}{\\theta}" }, variance: { fun: function(k,theta) { return jStat.gamma.variance(k, 1/theta); }, display: "\\frac{k}{\\theta^2}" }, mode: { fun: function(k,theta) { return jStat.gamma.mode(k, 1/theta); }, display: "\\frac{k-1}{\\theta}, k\\geq 1" } }, null ); distributions["gamma"] = new distribution( "gamma", "Gamma", "continuous", [ gammaShapeScale, gammaShapeRate ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Gamma_distribution" } ); /*****/ // Inverse Gamma distribution /*****/ var invgammaShape = new positiveParameter( "alpha", "\\alpha", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var invgammaScale = new positiveParameter( "beta", "\\beta", function() { return [0.1,10]; }, true, 1, "continuous", "gamma", "scale" ); var invgammaShapeScale = new distributionParametrization( "shape/scale", [invgammaShape, invgammaScale], function(alpha,beta) { return [0,Number.POSITIVE_INFINITY]; }, function(alpha,beta) { return [.01,15]; }, "(0,\\infty)", jStat.invgamma.pdf, "\\frac{\\beta^{\\alpha}}{\\Gamma(\\alpha)} x^{-\\alpha - 1} \\exp\\left\\{-\\frac{\\beta}{x}\\right\\}", jStat.invgamma.cdf, null, function(alpha,beta){ return alpha>0 && beta>0;}, { mean: { fun: jStat.invgamma.mean, display: "\\frac{\\beta}{\\alpha-1}, \\alpha>1" }, variance: { fun: jStat.invgamma.variance, display: "\\frac{\\beta^2}{(\\alpha-1)^2(\\alpha-2)}, \\alpha>2" }, mode: { fun: jStat.invgamma.mode, display: "\\frac{\\beta}{\\alpha+1}" } }, null ); distributions["invgamma"] = new distribution( "invgamma", "Inverse Gamma", "continuous", [ invgammaShapeScale ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Inverse-gamma_distribution" } ); /*****/ // Central F distribution /*****/ var Fdf1 = new positiveParameter( "nu1", "\\nu_1", function() { return [1,40]; }, false, 5, "discrete", null, "numerator df" ); var Fdf2 = new positiveParameter( "nu2", "\\nu_2", function() { return [1,40]; }, false, 5, "discrete", null, "denominator df" ); var centralFpar = new distributionParametrization( "central", [Fdf1, Fdf2], function(nu1,nu2) { return [0,Number.POSITIVE_INFINITY]; }, function(nu1,nu2) { return [.01,10]; }, "(0,\\infty)", jStat.centralF.pdf, "\\frac{1}{x\\mbox{Be}\\left(\\frac{\\nu_1}{2},\\frac{\\nu_2}{2}\\right)}\\sqrt{\\frac{(\\nu_1x)^{\\nu_1}\\nu_2^{\\nu_2}}{(\\nu_1x + \\nu_2)^{\\nu_1+\\nu_2}}}", jStat.centralF.cdf, null, function(nu1,nu2){ return nu1>0 && nu2>0;}, { mean: { fun: jStat.centralF.mean, display: "\\frac{\\nu_2}{\\nu_2-2}, \\nu_2>2" }, variance: { fun: jStat.centralF.variance, display: "\\frac{2\\nu_2^2(\\nu_1 + \\nu_2-2)}{\\nu_1(\\nu_2-2)^2(\\nu_2-4)}, \\nu_2>4" }, mode: { fun: jStat.centralF.mode, display: "\\frac{\\nu_2(\\nu_1 - 2)}{\\nu_1(\\nu_2+2)}, \\nu_1<2" } }, null ); distributions["centralF"] = new distribution( "centralF", "central F", "continuous", [ centralFpar ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/F_distribution" } ); /*****/ // Cauchy distribution /*****/ var cauchyLocation= new unboundedParameter( "mu", "\\mu", function() { return [-8,8];}, false, 0, "continuous", null, "location" ); var cauchyScale = new positiveParameter( "sigma", "\\sigma", function() { return [0.1,10];}, true, 1, "continuous", null, "scale" ); var cauchyLocationScale = new distributionParametrization( "location/scale", [cauchyLocation, cauchyScale], function(mu,sig) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(mu,sig) { return [-8,8]; }, "(-\\infty,\\infty)", jStat.cauchy.pdf, "\\frac{1}{\\pi\\sigma\\left(1+\\left(\\frac{x-\\mu}{\\sigma}\\right)^2\\right)}", jStat.cauchy.cdf, null, function(mu,sig){ return sig>0;}, { mean: { fun: function(mu, sig) { return undefined; }, display: "undefined" }, variance: { fun: function(mu, sig) { return undefined; }, display: "undefined" }, median: { fun: jStat.cauchy.median, display: "\\mu" }, mode: { fun: jStat.cauchy.mode, display: "\\mu" } }, null ); distributions["cauchy"] = new distribution( "cauchy", "Cauchy", "continuous", [ cauchyLocationScale ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Cauchy_distribution" } ); /*****/ // t distribution /*****/ var tnu = new positiveParameter( "nu", "\\nu", function() { return [1,50]; }, false, 5, "discrete", null, "degrees of freedom" ); var tLocation= new unboundedParameter( "mu", "\\mu", function() { return [-8,8];}, false, 0, "continuous", null, "location" ); var tScale = new positiveParameter( "sigma", "\\sigma", function() { return [0.1,10];}, true, 1, "continuous", null, "scale" ); var studenttLocationScale = new distributionParametrization( "location/scale", [tnu, tLocation, tScale], function(nu,mu,sig) { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }, function(nu,mu,sig) { return [-10,10]; }, "(-\\infty,\\infty)", function(x,nu,mu,sig){ return jStat.studentt.pdf( (x - mu)/sig, nu)/sig; }, "\\frac{\\Gamma\\left(\\frac{\\nu+1}{2}\\right)}{\\sqrt{\\pi\\nu\\sigma^2}\\Gamma\\left(\\frac{\\nu}{2}\\right)}\\left(1+\\frac{(x-\\mu)^2}{\\nu\\sigma^2}\\right)^{-\\frac{\\nu+1}{2}}", function(x,nu,mu,sig){ return jStat.studentt.cdf( (x - mu)/sig, nu); }, null, function(nu,mu,sig){ return sig > 0 && nu > 0;}, { mean: { fun: function(nu, mu, sig) { return nu>1?mu:undefined; }, display: "\\mu, \\nu>1" }, variance: { fun: function(nu, mu, sig) { return nu>2 ? nu/(nu-2) : undefined; }, display: "\\frac{\\nu}{\\nu-2}\\sigma^2, \\nu>2" }, median: { fun: function(nu, mu, sig) { return mu; }, display: "\\mu" }, mode: { fun: function(nu, mu, sig) { return mu; }, display: "\\mu" } }, null ); distributions["studentt"] = new distribution( "studentt", "Student's t", "continuous", [ studenttLocationScale ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Student's_t-distribution" } ); /*****/ // Chi-squared distribution /*****/ var chisqnu = new positiveParameter( "nu", "\\nu", function() { return [1,10]; }, false, 3, "discrete", null, "degrees of freedom" ); var chisqScale = new positiveParameter( "sigma", "\\sigma", function() { return [0.1,10];}, true, 1, "continuous", null, "scale" ); var chisqScalePar = new distributionParametrization( "scaled", [chisqnu, chisqScale], function(nu,sig) { return [0,Number.POSITIVE_INFINITY]; }, function(nu,sig) { return [0,40]; }, "[0,\\infty)", function(x,nu,sig){ return jStat.chisquare.pdf( x/sig, nu)/sig; }, "\\frac{1}{(2\\sigma)^\\frac{\\nu}{2}\\Gamma\\left(\\frac{\\nu}{2}\\right)}x^{\\frac{\\nu}{2}-1}\\exp\\left\\{-\\frac{x}{2\\sigma}\\right\\}", function(x,nu,sig){ return jStat.chisquare.cdf( x/sig, nu); }, null, function(nu,sig){ return sig > 0 && nu > 0;}, { mean: { fun: function(nu, sig) { return nu*sig; }, display: "\\sigma\\nu" }, variance: { fun: function(nu, sig) { return 2*nu*sig*sig; }, display: "2\\nu\\sigma^2" } }, null ); distributions["chisquare"] = new distribution( "chisquare", "Chi-squared", "continuous", [ chisqScalePar ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Chi-squared_distribution" } ); /*****/ // Beta distribution /*****/ var betaA = new positiveParameter( "a", "a", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var betaB = new positiveParameter( "b", "b", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var betaAB = new distributionParametrization( "a/b", [betaA, betaB], function(a,b) { return [0,1]; }, function(a,b) { return [0,1]; }, "(0,1)", jStat.beta.pdf, "\\frac{1}{\\mbox{Be}(a,b)} x^{a-1} (1-x)^{b-1}", jStat.beta.cdf, null, function(a,b){ return a>0 && b>0;}, { mean: { fun: jStat.beta.mean, display: "\\frac{a}{a+b}" }, variance: { fun: jStat.beta.variance, display: "\\frac{ab}{(a+b)^2(a+b+1)}" }, median: { fun: jStat.beta.median, display: "no closed form" }, mode: { fun: jStat.mode.median, display: "\\frac{a-1}{a+b-2}, a>1, b>1" } }, null ); distributions["beta"] = new distribution( "beta", "Beta", "continuous", [ betaAB ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Beta_distribution" } ); /*****/ // Log Normal distribution /*****/ var lognormalMean = new unboundedParameter( "mu", "\\mu", function() { return [-2,2]; }, false, 1, "continuous", "normal", "log-scale" ); var lognormalVariance = new positiveParameter( "sigma2", "\\sigma^2", function() { return [.1,10]; }, true, 1, "continuous", "inversegamma", "shape" ); var lognormalMeanVariance = new distributionParametrization( "mu/sigma2", [lognormalMean, lognormalVariance], function(mu,sig2) { return [0,Number.POSITIVE_INFINITY]; }, function(mu,sig2) { return [0,15]; }, "(0,\\infty)", function(x, mu, sig2) { return jStat.lognormal.pdf(x, mu,Math.sqrt(sig2)); }, "\\left(\\pi\\sigma^2x^2\\right)^{-\\frac{1}{2}}\\exp\\left\\{-\\frac{1}{2\\sigma^2}\\left(\\log(x)-\\mu\\right)^2\\right\\}", function(x, mu, sig2) { return jStat.lognormal.cdf(x, mu,Math.sqrt(sig2)); }, "normalinversegamma", function(mu,sig2){ return sig2>0;}, { mean: { fun: function(mu, sig2) { return jStat.lognormal.mean(mu, Math.sqrt(sig2)); }, display: "\\exp\\left\\{\\mu + \\frac{\\sigma^2}{2}\\right\\}" }, variance: { fun: function(mu, sig2) { return jStat.lognormal.variance(mu, Math.sqrt(sig2)); }, display: "\\left(e^{\\sigma^2}-1\\right)\\exp\\left\\{2\\mu + \\sigma^2\\right\\}" }, median: { fun: function(mu, sig2) { return jStat.lognormal.median(mu, Math.sqrt(sig2)); }, display: "e^\\mu" }, mode: { fun: function(mu, sig2) { return jStat.lognormal.mode(mu, Math.sqrt(sig2)); }, display: "\\exp\\left\\{\\mu-\\sigma^2\\right\\}" } }, null ); distributions["lognormal"] = new distribution( "lognormal", "Log-normal", "continuous", [ lognormalMeanVariance ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Log-normal_distribution" } ); /*****/ // Weibull distribution /*****/ var weibullShift = new unboundedParameter( "x0", "x_0", function() { return [-3,5]; }, false, 0, "continuous", null, "shift" ); var weibullShape = new positiveParameter( "k", "k", function() { return [.1,10]; }, true, 1, "continuous", null, "shape" ); var weibullScale = new positiveParameter( "s", "s", function() { return [0.1,10]; }, true, 1, "continuous", "inversegamma", "scale" ); var weibullRate = new positiveParameter( "theta", "\\theta", function() { return [0.1,10]; }, true, 1, "continuous", "gamma", "rate" ); var weibullShiftShapeScale = new distributionParametrization( "shift/scale/shape", [weibullShift,weibullScale, weibullShape], function(x0,s,k) { return [x0,Number.POSITIVE_INFINITY]; }, function(x0,s,k) { return [x0,x0 + 10]; }, "(x_0,\\infty)", function(x,x0,s,k) { return jStat.weibull.pdf(x - x0, s, k); }, "\\frac{k}{s}\\left(\\frac{x-x_0}{s}\\right)^{k-1} \\exp\\left\\{-\\left(\\frac{x-x_0}{s}\\right)^k\\right\\}", function(x,x0,s,k) { return jStat.weibull.cdf(x - x0, s, k); }, null, function(x0,s,k){ return s>0 && k>0;}, { mean: { fun: function(x0,s,k) { return jStat.weibull.mean(s,k) + x0; }, display: "x_0 + s\\Gamma\\left(1+\\frac{1}{k}\\right)" }, variance: { fun: function(x0,s,k) { return jStat.weibull.variance(s,k); }, display: "s^2\\Gamma\\left(1+\\frac{2}{k}\\right) - \\left(x_0 + s\\Gamma\\left(1+\\frac{1}{k}\\right)\\right)^2" }, mode: { fun: function(x0,s,k) { return jStat.weibull.mode(s,k) + x0; }, display: "s\\left(\\frac{k-1}{k}\\right)^{\\frac{1}{k}}, k > 1" }, median: { fun: function(x0,s,k) { return jStat.weibull.median(s,k) + x0; }, display: "s\\left(\\log(2)\\right)^{\\frac{1}{k}}" } }, null ); var weibullShiftShapeRate = new distributionParametrization( "shift/rate/shape", [weibullShift,weibullRate, weibullShape], function(x0,theta,k) { return [x0,Number.POSITIVE_INFINITY]; }, function(x0,theta,k) { return [x0,x0 + 10]; }, "(x_0,\\infty)", function(x,x0,theta,k) { return jStat.weibull.pdf(x - x0, 1/theta, k); }, "k\\theta\\left(x\\theta\\right)^{k-1} \\exp\\left\\{-\\left(\\theta(x-x_0)\\right)^k\\right\\}", function(x,x0,theta,k) { return jStat.weibull.cdf(x - x0, 1/theta, k); }, null, function(x0,theta,k){ return theta>0 && k>0;}, { mean: { fun: function(x0,theta,k) { return jStat.weibull.mean(1/theta,k) + x0; }, display: "x_0 + \\frac{1}{\\theta}\\Gamma\\left(1+\\frac{1}{k}\\right)" }, variance: { fun: function(x0,theta,k) { return jStat.weibull.variance(1/theta,k); }, display: "\\frac{1}{\\theta^2}\\Gamma\\left(1+\\frac{2}{k}\\right) - \\left(x_0 + \\frac{1}{\\theta}\\Gamma\\left(1+\\frac{1}{k}\\right)\\right)^2" }, mode: { fun: function(x0,theta,k) { return jStat.weibull.mode(1/theta,k) + x0; }, display: "\\frac{1}{\\theta}\\left(\\frac{k-1}{k}\\right)^{\\frac{1}{k}}, k > 1" }, median: { fun: function(x0,theta,k) { return jStat.weibull.median(1/theta,k) + x0; }, display: "\\frac{1}{\\theta}\\left(\\log(2)\\right)^{\\frac{1}{k}}" } }, null ); distributions["weibull"] = new distribution( "weibull", "three-parameter Weibull", "continuous", [ weibullShiftShapeScale, weibullShiftShapeRate ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Weibull_distribution" } ); ////*************** // DISCRETE ////*************** /*****/ // Binomial distribution /*****/ var binomialN = new positiveParameter( "N", "N", function() { return [1,100]; }, false, 20, "discrete", null, "sample size" ); var binomialp = new distributionParameter( "p", "p", function() { return [0,1]; }, function() { return [0,1]; }, false, .5, "continuous", "beta", "probability of success" ); var binomialNp = new distributionParametrization( "probability", [binomialN, binomialp], function(N, p) { return [0,N]; }, function(N, p) { return [0,N]; }, "[0,N]", jStat.binomial.pdf, "\\binom{N}{x} p^x (1-p)^{N-x}", jStat.binomial.cdf, "beta", function(N,p){ return N>0 && is_int(N) && p<1 && p>0;}, { mean: { fun: jStat.binomial.mean, display: "Np" }, variance: { fun: jStat.binomial.variance, display: "Np(1-p)" } }, null ); distributions["binomial"] = new distribution( "binomial", "Binomial", "discrete", [ binomialNp ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Binomial_distribution" } ); /*****/ // Poisson distribution /*****/ var poissonRate = new positiveParameter( "lambda", "\\lambda", function() { return [1/10,10]; }, true, 1, "continuous", null, "rate" ); var poissonRate = new distributionParametrization( "rate", [ poissonRate ], function(lambda) { return [0,Number.POSITIVE_INFINITY]; }, function(lambda) { return [0,25]; }, "[0,\\infty)", jStat.poisson.pdf, "\\frac{\\lambda^x}{x!} \\exp\\left\\{-\\lambda\\right\\}", jStat.poisson.cdf, "gamma", function(lambda){ return lambda>0;}, { mean: { fun: jStat.poisson.mean, display: "\\lambda" }, variance: { fun: jStat.poisson.variance, display: "\\lambda" } }, null ); distributions["poisson"] = new distribution( "poisson", "Poisson", "discrete", [ poissonRate ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Poisson_distribution" } ); /*****/ // Negative Binomial distribution /*****/ var negbinomialr = new positiveParameter( "r", "r", function() { return [1,50]; }, false, 20, "discrete", null, "number of successes required" ); var negbinomialp = new distributionParameter( "p", "p", function() { return [0,1]; }, function() { return [0,1]; }, false, .2, "continuous", "beta", "probability of failure" ); var negbinomialrp = new distributionParametrization( "probability", [negbinomialr, negbinomialp], function(r, p) { return [0,Number.POSITIVE_INFINITY]; }, function(r, p) { return [0,50]; }, "[0,\\infty)", jStat.negbin.pdf, "\\binom{x+r-1}{x} p^x (1-p)^{r}", jStat.negbin.cdf, "beta", function(r,p){ return r>0 && is_int(r) && p<1 && p>0;}, { mean: { fun: function(r,p){ return p*r/(1-p);}, display: "\\frac{rp}{1-p}" }, variance: { fun: function(r,p){ return p*r/(1-p)^2;}, display: "\\frac{rp}{(1-p)^2}" } }, null ); distributions["negativebinomial"] = new distribution( "negativebinomial", "Negative binomial", "discrete", [ negbinomialrp ], null, { name:"Wikipedia", link:"http://en.wikipedia.org/wiki/Negative_binomial_distribution" } ); ================================================ FILE: js/distributionObjects.js ================================================ /////////// // Distribution stuff /////////// function distributionParameter(name, label, range, interactRange, interactLog, interactStart, type, conjugate, note){ this.name = name; this.label = label; this.range = range; this.interactRange = interactRange; this.interactLog = interactLog; this.interactStart = interactStart; this.type = type; this.conjugate = conjugate; this.note = note; } function createElement(fstart,frangeLo,frangeHi){ var limits = this.interactRange.apply(null,arguments); var start = this.interactStart; if( frangeLo != null && frangeHi !=null ){ limits = [frangeLo,frangeHi]; } if(fstart != null && fstart>limits[0] && fstart', { id: "params_" + name + "_container", title: this.note }).appendTo('#parametercontainer'); $("#params_" + name + "_container").addClass("paramsinglecontainer"); $('
', { id: "params_label_" + name, text: " \\("+this.label+"\\) " }).appendTo('#' + "params_" + name + "_container"); $("#params_label_" + name ).addClass("paramlabel"); $('
', { id: "params_slider_" + name }).appendTo('#' + "params_" + name + "_container"); $("#params_slider_" + name ).addClass("paramslider"); $('', { id: "params_indicator_" + name, value: start }).appendTo('#'+"params_" + name + "_container"); $("#params_indicator_" + name ).addClass("paramindicator"); $('
', { id: "params_end_" + name }).appendTo('#parametercontainer'); $("#params_end_" + name ).addClass("clear"); $("#params_" + name + "_container").tooltip({tipClass: "partooltip"}); switch(this.type){ case "discrete": var sliderMin = limits[0]; var sliderMax = limits[1]; var sliderStart = start; break; case "continuous": var sliderMin = 0; var sliderMax = sliderPoints-1; if(log){ var sliderStart = sliderMax * (Math.log(start) - Math.log(limits[0]))/(Math.log(limits[1]) - Math.log(limits[0])); }else{ var sliderStart = sliderMax * (start - limits[0])/(limits[1] - limits[0]); } break; } $( "#params_slider_" + name ).slider({ min: sliderMin, max: sliderMax, value: sliderStart }); $( "#params_slider_" + name ).slider().bind('slide',function(event,ui){ slide(name,ui); } ); } distributionParameter.prototype.createElement = createElement; function unboundedParameter(name, label, interactRange, interactLog, interactStart, type, conjugate, note){ var range = function() { return [Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY]; }; distributionParameter.call(this, name, label, range, interactRange, interactLog, interactStart, type, conjugate, note); } function positiveParameter(name, label, interactRange, interactLog, interactStart, type, conjugate, note){ var range = function() { return [0,Number.POSITIVE_INFINITY]; }; distributionParameter.call(this, name, label, range, interactRange, interactLog, interactStart, type, conjugate, note); } positiveParameter.prototype = new distributionParameter(); unboundedParameter.prototype = new distributionParameter(); function distributionParametrization(ptznName, params, limits, interactLimits, displayLimits, density, densityDisplay, cdf, conjugate, check, quantities, note){ this.name = ptznName; this.params = params; this.density = density; this.densityDisplay = densityDisplay; this.cdf = cdf; this.limits; this.interactLimits = interactLimits; this.checkPars = check; this.conjugate = conjugate; this.quantities = quantities; this.note = note; this.displayLimits = displayLimits; } function distribution(name,label,type,parametrizations,note,referenceurl){ this.name = name; this.label = label; this.type = type; this.parametrizations = parametrizations; this.p = parametrizations[0]; this.note = note; this.referenceurl = referenceurl; } function updatePlot(ptznNum,name,ui){ var nptzn = this.parametrizations.length; p = (ptznNum > (nptzn - 1)) ? this.p : this.parametrizations[ptznNum]; var npars = p.params.length; var i = 0; var args = []; var par, sliderMin, sliderMax, sliderFrac, parValue; var limits; var plotType; if($("#buttonPDF").attr('disabled') !== undefined){ plotType="pdf"; }else if($("#buttonCDF").attr('disabled') !== undefined){ plotType="cdf"; }else{ return; } // Iterate through parameters for(;i=minx) newSeries.push(series[i]); } data[0] = {data: newSeries, lines:{show:true, fill: true, fillColor: areaFillColor} }; plot.setData(data); plot.draw(); } function addCDFLines(x){ var data = plot.getData(); var cumdens = p.cdf.apply( null, [x].concat(args) ); var newSeries = [ [ limits[0], cumdens ], [ x, cumdens ], [ x, 0 ] ]; data[1] = {data: newSeries, lines:{ show:true }, hoverable: false}; plot.setData(data); plot.draw(); } $("#"+this.plotid).unbind("plothover mouseout plotclick"); $("#"+this.plotid).bind("mouseout", function(){ $("#tooltip").remove(); var data = plot.getData(); if(data[2].data.length==0) data[0].data = []; data[1].data = []; plot.setData(data); plot.draw(); }); $("#"+this.plotid).bind("plotclick", function (event, pos, item) { if(plotType=="cdf" || RVtype=="discrete") return; var data = plot.getData(); var x1 = data[2]; var x2 = data[3]; if(x1.data.length==0){ data[2].data = [ [ pos.x, 0 ], [ pos.x, p.density.apply( null, [pos.x].concat(args) ) ] ]; data[2].lines = { show: true }; }else if(x2.data.length==0){ data[3].data = [ [ pos.x, 0 ], [ pos.x, p.density.apply( null, [pos.x].concat(args) ) ] ]; data[3].lines = { show: true }; addFill(x1.data[0][0], x2.data[0][0]); }else{ data[0].data = []; data[2].data = []; data[3].data = []; } plot.setData(data); addFill(pos); }); $("#"+this.plotid).bind("plothover", function (event, pos, item) { if (item && RVtype=="discrete") { if (previousPoint != item.dataIndex) { previousPoint = item.dataIndex; $("#tooltip").remove(); var x = round(item.datapoint[0], ttxDigits), y = round(item.datapoint[1], roundDigits); var funname = (plotType=="pdf") ? "p" : "F"; showTooltip(item.pageX, item.pageY, funname+"(" + x + ") = " + y); if(plotType=="cdf") addCDFLines(item.datapoint[0]); } }else if(RVtype == "continuous"){ $("#tooltip").remove(); var dens = round(p.density.apply( null, [pos.x].concat(args) ), roundDigits); var cumdens = round(p.cdf.apply( null, [pos.x].concat(args) ), roundDigits); var x = round(pos.x, roundDigits); if(plotType=="pdf"){ addFill(pos); var shaded = getShaded(plot, pos, limits, p.cdf, args); showTooltip(pos.pageX, pos.pageY, "p(" + x + ") = " + dens + "
" + "Shaded: " + round(shaded, roundDigits)); }else if(plotType=="cdf"){ addCDFLines(pos.x); showTooltip(pos.pageX, pos.pageY, "F(" + x + ") = " + cumdens); } } else { $("#tooltip").remove(); previousPoint = null; } }); if(RVtype=="continuous" && plotType=="pdf") addFill(); } function refTableHeaderRow(type){ var head = new Element('thead'); var row = new Element('tr'); row.adopt( new Element('th', { html: "Name", scope: "col" }), new Element('th', { html: "Density function", scope: "col" }), new Element('th', { html: "Domain", scope: "col" }), new Element('th', { html: "Parameters", scope: "col" }), new Element('th', { html: "Conjugacy", scope: "col" }), new Element('th', { html: "Example", scope: "col" }), new Element('th', { html: "Reference", scope: "col" }) ); head.grab(row); head.inject(document.id(type+'_distributiontable')); } function refTableRow(odd, type){ var idPre = type + "_dist_" + this.name; var rowname = idPre + "_row"; var anch = new Element('a', { name: this.name+"table" }); var row = new Element('tr', { id: rowname }); var example = new Element('td', { id: idPre + "_example" }); example.grab( new Element('a', { href: "distributionDisplay.html?dist="+this.name, id: idPre + "_interactlink", html: "Interact", title: "The "+this.label+" distribution", 'data-milkbox-size': "width:650,height:370", 'data-milkbox': "dist" }) ); var reference = new Element('td', { id: idPre + "_reference" }); reference.grab( new Element('a', { href: this.referenceurl.link, html: this.referenceurl.name, target: "_blank" }) ); row.adopt( new Element('th', { id: idPre + "_name", 'class': 'column1', html: this.label, scope: "row" }), new Element('td', { id: idPre + "_density", html: "\\["+this.p.densityDisplay+"\\]" }), new Element('td', { id: idPre + "_domain", html: "\\("+this.p.displayLimits+"\\)" }), new Element('td', { id: idPre + "_parameters", html: "\\("+""+"\\)" }), new Element('td', { id: idPre + "_conjugate", html: "" }), example, reference ); if(odd) row.set('class','odd'); row.inject(document.id(type+'_distributiontablebody')); anch.inject(document.id(idPre+"_name")); //MathJax.Hub.Queue(["Typeset",MathJax.Hub,document.getElementById(rowname)]); } function createInterfaceElements(ptznNum){ var nptzn = this.parametrizations.length; p = (ptznNum > (nptzn - 1)) ? this.p : this.parametrizations[ptznNum]; var npars = p.params.length; var text=""; var i = 0; var s, rl, rh; for(;i 534) {browser.STIXfontBug = true} } }); if (MathJax.Hub.Browser.STIXfontBug) { HTMLCSS.FONTDATA.FONTS["STIXGeneral"].family = "STIXGeneral-Regular"; HTMLCSS.FONTDATA.FONTS["STIXGeneral-italic"].family = "STIXGeneral-Italic"; delete HTMLCSS.FONTDATA.FONTS["STIXGeneral-italic"].style; } }); ================================================ FILE: js/libraries/jquery.flot.crosshair.js ================================================ /* Flot plugin for showing crosshairs, thin lines, when the mouse hovers over the plot. crosshair: { mode: null or "x" or "y" or "xy" color: color lineWidth: number } Set the mode to one of "x", "y" or "xy". The "x" mode enables a vertical crosshair that lets you trace the values on the x axis, "y" enables a horizontal crosshair and "xy" enables them both. "color" is the color of the crosshair (default is "rgba(170, 0, 0, 0.80)"), "lineWidth" is the width of the drawn lines (default is 1). The plugin also adds four public methods: - setCrosshair(pos) Set the position of the crosshair. Note that this is cleared if the user moves the mouse. "pos" is in coordinates of the plot and should be on the form { x: xpos, y: ypos } (you can use x2/x3/... if you're using multiple axes), which is coincidentally the same format as what you get from a "plothover" event. If "pos" is null, the crosshair is cleared. - clearCrosshair() Clear the crosshair. - lockCrosshair(pos) Cause the crosshair to lock to the current location, no longer updating if the user moves the mouse. Optionally supply a position (passed on to setCrosshair()) to move it to. Example usage: var myFlot = $.plot( $("#graph"), ..., { crosshair: { mode: "x" } } }; $("#graph").bind("plothover", function (evt, position, item) { if (item) { // Lock the crosshair to the data point being hovered myFlot.lockCrosshair({ x: item.datapoint[0], y: item.datapoint[1] }); } else { // Return normal crosshair operation myFlot.unlockCrosshair(); } }); - unlockCrosshair() Free the crosshair to move again after locking it. */ (function ($) { var options = { crosshair: { mode: null, // one of null, "x", "y" or "xy", color: "rgba(170, 0, 0, 0.80)", lineWidth: 1 } }; function init(plot) { // position of crosshair in pixels var crosshair = { x: -1, y: -1, locked: false }; plot.setCrosshair = function setCrosshair(pos) { if (!pos) crosshair.x = -1; else { var o = plot.p2c(pos); crosshair.x = Math.max(0, Math.min(o.left, plot.width())); crosshair.y = Math.max(0, Math.min(o.top, plot.height())); } plot.triggerRedrawOverlay(); }; plot.clearCrosshair = plot.setCrosshair; // passes null for pos plot.lockCrosshair = function lockCrosshair(pos) { if (pos) plot.setCrosshair(pos); crosshair.locked = true; } plot.unlockCrosshair = function unlockCrosshair() { crosshair.locked = false; } function onMouseOut(e) { if (crosshair.locked) return; if (crosshair.x != -1) { crosshair.x = -1; plot.triggerRedrawOverlay(); } } function onMouseMove(e) { if (crosshair.locked) return; if (plot.getSelection && plot.getSelection()) { crosshair.x = -1; // hide the crosshair while selecting return; } var offset = plot.offset(); crosshair.x = Math.max(0, Math.min(e.pageX - offset.left, plot.width())); crosshair.y = Math.max(0, Math.min(e.pageY - offset.top, plot.height())); plot.triggerRedrawOverlay(); } plot.hooks.bindEvents.push(function (plot, eventHolder) { if (!plot.getOptions().crosshair.mode) return; eventHolder.mouseout(onMouseOut); eventHolder.mousemove(onMouseMove); }); plot.hooks.drawOverlay.push(function (plot, ctx) { var c = plot.getOptions().crosshair; if (!c.mode) return; var plotOffset = plot.getPlotOffset(); ctx.save(); ctx.translate(plotOffset.left, plotOffset.top); if (crosshair.x != -1) { ctx.strokeStyle = c.color; ctx.lineWidth = c.lineWidth; ctx.lineJoin = "round"; ctx.beginPath(); if (c.mode.indexOf("x") != -1) { ctx.moveTo(crosshair.x, 0); ctx.lineTo(crosshair.x, plot.height()); } if (c.mode.indexOf("y") != -1) { ctx.moveTo(0, crosshair.y); ctx.lineTo(plot.width(), crosshair.y); } ctx.stroke(); } ctx.restore(); }); plot.hooks.shutdown.push(function (plot, eventHolder) { eventHolder.unbind("mouseout", onMouseOut); eventHolder.unbind("mousemove", onMouseMove); }); } $.plot.plugins.push({ init: init, options: options, name: 'crosshair', version: '1.0' }); })(jQuery); ================================================ FILE: js/libraries/jstat.js ================================================ /** * jStat - JavaScript Statistical Library * Copyright (c) 2011 * This document is licensed as free software under the terms of the * MIT License: http://www.opensource.org/licenses/mit-license.php */ this.j$ = this.jStat = (function( Math, undefined ) { // for quick reference var slice = Array.prototype.slice, toString = Object.prototype.toString, // ascending/descending functions for sort ascNum = function( a, b ) { return a - b; }, // calculate correction for IEEE error calcRdx = function( n, m ) { var val = n > m ? n : m; return Math.pow( 10, 17 - ~~( Math.log((( val > 0 ) ? val : -val )) * Math.LOG10E )); }, // test if array isArray = Array.isArray || function( arg ) { return toString.call( arg ) === "[object Array]"; }, // test if function isFunction = function( arg ) { return toString.call( arg ) === "[object Function]"; }; // global function function jStat() { return new jStat.fn.init( arguments ); } // extend jStat prototype jStat.fn = jStat.prototype = { constructor : jStat, init : function( args ) { // if first argument is an array, must be vector or matrix if ( isArray( args[0] )) { // check if matrix if ( isArray( args[0][0] )) { for ( var i = 0; i < args[0].length; i++ ) { this[i] = args[0][i]; } this.length = args[0].length; // so must be vector } else { this[0] = args[0]; this.length = 1; } // if first argument is number, assume creation of sequence } else if ( !isNaN( args[0] )) { this[0] = jStat.seq.apply( null, args ); this.length = 1; } return this; }, // default length length : 0, // return clean array toArray : function() { return ( this.length > 1 ) ? slice.call( this ) : slice.call( this )[0]; }, // only to be used internally push : [].push, sort : [].sort, splice : [].splice }; // for later instantiation jStat.fn.init.prototype = jStat.fn; // utility functions jStat.utils = { calcRdx : calcRdx, isArray : isArray, isFunction : isFunction }; // create method for easy extension jStat.extend = function( obj ) { var args = slice.call( arguments ), i = 1, j; if ( args.length === 1 ) { for ( j in obj ) { jStat[j] = obj[j]; } return this; } for ( ; i < args.length; i++ ) { for ( j in args[i] ) obj[j] = args[i][j]; } return obj; }; // static methods jStat.extend({ // transpose a matrix or array transpose : function( arr ) { if ( !isArray( arr[0] )) arr = [ arr ]; var rows = arr.length, cols = arr[0].length, obj = [], i = 0, j; for ( ; i < cols; i++ ) { obj.push([]); for ( j = 0; j < rows; j++ ) { obj[i].push( arr[j][i] ); } } return obj; }, // map a function to an array or array of arrays // toAlter is an internal variable map : function( arr, func, toAlter ) { if ( !isArray( arr[0] )) arr = [ arr ]; var row = 0, nrow = arr.length, ncol = arr[0].length, res = toAlter ? arr : [], col; for ( ; row < nrow; row++ ) { // if the row doesn't exist, create it if ( !res[row] ) res[row] = []; for ( col = 0; col < ncol; col++ ) res[row][col] = func( arr[row][col], row, col ); } return res.length === 1 ? res[0] : res; }, // destructively alter an array alter : function( arr, func ) { return jStat.map( arr, func, true ); }, // generate a rows x cols matrix according to the supplied function create : function ( rows, cols, func ) { if ( isFunction( cols )) { func = cols; cols = rows; } var res = [], i, j; for ( i = 0; i < rows; i++ ) { res[i] = []; for ( j = 0; j < cols; j++ ) { res[i].push( func( i, j )); } } return res; }, // generate a rows x cols matrix of zeros zeros : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function() { return 0; }); }, // generate a rows x cols matrix of ones ones : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function() { return 1; }); }, // generate a rows x cols matrix of uniformly random numbers rand : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function() { return Math.random(); }); }, // generate an identity matrix of size row x cols identity : function( rows, cols ) { if ( isNaN( cols )) cols = rows; return jStat.create( rows, cols, function( i, j ) { return ( i === j ) ? 1 : 0; }); }, // generate sequence seq : function( min, max, length, func ) { if ( !isFunction( func )) func = false; var arr = [], hival = calcRdx( min, max ), step = ( max * hival - min * hival ) / (( length - 1 ) * hival ), current = min, cnt = 0; // current is assigned using a technique to compensate for IEEE error for ( ; current <= max; cnt++, current = ( min * hival + step * hival * cnt ) / hival ) arr.push(( func ? func( current, cnt ) : current )); return arr; }, // add a vector/matrix to a vector/matrix or scalar add : function( arr, arg ) { // check if arg is a vector or scalar if ( isArray( arg )) { if ( !isArray( arg[0] )) arg = [ arg ]; return jStat.map( arr, function( value, row, col ) { return value + arg[row][col]; }); } return jStat.map( arr, function ( value ) { return value + arg; }); }, // TODO: Implement matrix division // matrix division divide : function( arr, arg ) { return isArray( arg ) ? false : jStat.map(arr, function ( value ) { return value / arg; }); }, // matrix multiplication multiply : function( arr, arg ) { var row, col, nrescols, sum, nrow = arr.length, ncol = arr[0].length, res = jStat.zeros( nrow, nrescols = ( isNaN( arg )) ? arg[0].length : ncol ), rescols = 0; if ( isArray( arg )) { for ( ; rescols < nrescols; rescols++ ) { for ( row = 0; row < nrow; row++ ) { sum = 0; for ( col = 0; col < ncol; col++ ) sum += arr[row][col] * arg[col][rescols]; res[row][rescols] = sum; } } return ( nrow === 1 && rescols === 1 ) ? res[0][0] : res; } return jStat.map( arr, function( value ) { return value * arg; }); }, // subtract a vector or scalar from the vector subtract : function( arr, arg ) { // check if arg is a vector or scalar if ( isArray( arg )) { if ( !isArray( arg[0] )) arg = [ arg ]; return jStat.map( arr, function( value, row, col ) { return value - arg[row][col] || 0; }); } return jStat.map( arr, function( value ) { return value - arg; }); }, // Returns the dot product of two matricies dot : function( arr, arg ) { if ( !isArray( arr[0] )) arr = [ arr ]; if ( !isArray( arg[0] )) arg = [ arg ]; // convert column to row vector var left = ( arr[0].length === 1 && arr.length !== 1 ) ? jStat.transpose( arr ) : arr, right = ( arg[0].length === 1 && arg.length !== 1 ) ? jStat.transpose( arg ) : arg, res = [], row = 0, nrow = left.length, ncol = left[0].length, sum, col; for ( ; row < nrow; row++ ) { res[row] = []; sum = 0; for ( col = 0; col < ncol; col++ ) sum += left[row][col] * right[row][col]; res[row] = sum; } return ( res.length === 1 ) ? res[0] : res; }, // raise every element by a scalar pow : function( arr, arg ) { return jStat.map( arr, function( value ) { return Math.pow( value, arg ); }); }, // generate the absolute values of the vector abs : function( arr ) { return jStat.map( arr, function( value ) { return Math.abs( value ); }); }, // set all values to zero clear : function( arr ) { return jStat.alter( arr, function() { return 0; }); }, // TODO: make compatible with matrices // computes the p-norm of the vector norm : function( arr, p ) { var nnorm = 0, i = 0; // check the p-value of the norm, and set for most common case if ( isNaN( p )) p = 2; // check if multi-dimensional array, and make vector correction if ( isArray( arr[0] )) arr = arr[0]; // vector norm for (; i < arr.length; i++ ) { nnorm += Math.pow( Math.abs( arr[i] ), p ); } return Math.pow( nnorm, 1 / p ); }, // TODO: make compatible with matrices // computes the angle between two vectors in rads angle : function( arr, arg ) { return Math.acos( jStat.dot( arr, arg ) / ( jStat.norm( arr ) * jStat.norm( arg ))); }, // Tests whether a matrix is symmetric symmetric : function( arr ) { var issymmetric = true, row = 0, size = arr.length, col; if ( arr.length !== arr[0].length ) return false; for ( ; row < size; row++ ) { for ( col = 0; col < size; col++ ) { if ( arr[col][row] !== arr[row][col] ) return false; } } return true; }, /* array/vector specific methods */ // sum of an array sum : function( arr ) { var sum = 0, i = arr.length, tmp; while ( --i >= 0 ) { tmp = calcRdx( sum, arr[i] ); sum = (( sum * tmp ) + ( arr[i] * tmp )) / tmp; } return sum; }, // sum squared sumsqrd : function( arr ) { var sum = 0, i = arr.length; while ( --i >= 0 ) sum += arr[i] * arr[i]; return sum; }, // sum squared error sumsqerr : function( arr ) { var mean = jStat.mean( arr ), sum = 0, i = arr.length; while ( --i >= 0 ) sum += Math.pow( arr[i] - mean, 2 ); return sum; }, // product of an array product : function( arr ) { var prod = 1, i = arr.length; while ( --i >= 0 ) prod *= arr[i]; return prod; }, // minimum value of an array min : function( arr ) { var low = arr[0], i = 0; while ( ++i < arr.length ) if ( arr[i] < low ) low = arr[i]; return low; }, // maximum value of an array max : function( arr ) { var high = arr[0], i = 0; while ( ++i < arr.length ) if ( arr[i] > high ) high = arr[i]; return high; }, // mean value of an array mean : function( arr ) { return jStat.sum( arr ) / arr.length; }, // mean squared error meansqerr : function( arr ) { return jStat.sumsqerr( arr ) / arr.length; }, // geometric mean of an array geomean : function( arr ) { return Math.pow( jStat.product( arr ), 1 / arr.length ); }, // median of an array median : function( arr ) { var arrlen = arr.length, _arr = arr.slice().sort( ascNum ); // check if array is even or odd, then return the appropriate return !( arrlen & 1 ) ? ( _arr[( arrlen / 2 ) - 1 ] + _arr[( arrlen / 2 )]) / 2 : _arr[( arrlen / 2 ) | 0 ]; }, // cumulative sum of an array cumsum : function( arr ) { var cumsum = [arr[0]], arrLen = arr.length, i = 1; for (; i < arrLen; i++ ) { cumsum.push( cumsum[i-1] + arr[i]); } return cumsum; }, // successive differences of an array diff : function( arr) { var diffs = [], arrLen = arr.length, i = 1; for ( i = 1; i < arrLen; i++ ) { diffs.push( arr[i] - arr[i-1]); } return diffs; }, // mode of an array // if there are multiple modes of an array, just returns false // is this the appropriate way of handling it? mode : function( arr ) { var arrLen = arr.length, _arr = arr.slice().sort( ascNum ), count = 1, maxCount = 0, numMaxCount = 0, i = 0, maxNum; for ( ; i < arrLen; i++ ) { if ( _arr[ i ] === _arr[ i + 1 ] ) { count++; } else { if ( count > maxCount ) { maxNum = _arr[i]; maxCount = count; count = 1; numMaxCount = 0; } else { // are there multiple max counts if ( count === maxCount ) { numMaxCount++; // count is less than max count, so reset values } else { count = 1; } } } } return ( numMaxCount === 0 ) ? maxNum : false; }, // range of an array range : function( arr ) { var _arr = arr.slice().sort( ascNum ); return _arr[ _arr.length - 1 ] - _arr[0]; }, // variance of an array // flag indicates population vs sample variance : function( arr, flag ) { var mean = jStat.mean( arr ), stSum = 0, i = arr.length - 1; for ( ; i >= 0; i-- ) { stSum += Math.pow(( arr[i] - mean ), 2 ); } return stSum / ( arr.length - ( flag ? 1 : 0 )); }, // standard deviation of an array // flag indicates population vs sample stdev : function( arr, flag ) { return Math.sqrt( jStat.variance( arr, flag )); }, // mean deviation (mean absolute deviation) of an array meandev : function( arr ) { var devSum = 0, mean = jStat.mean( arr ), i = arr.length - 1; for ( ; i >= 0; i-- ) { devSum += Math.abs( arr[i] - mean ); } return devSum / arr.length; }, // median deviation (median absolute deviation) of an array meddev : function( arr ) { var devSum = 0, median = jStat.median( arr ), i = arr.length - 1; for ( ; i >= 0; i-- ) { devSum += Math.abs( arr[i] - median ); } return devSum / arr.length; }, // quartiles of an array quartiles : function( arr ) { var arrlen = arr.length, _arr = arr.slice().sort( ascNum ); return [ _arr[ Math.round(( arrlen ) / 4 ) - 1 ], _arr[ Math.round(( arrlen ) / 2 ) - 1 ], _arr[ Math.round(( arrlen ) * 3 / 4 ) - 1 ] ]; }, // covariance of two arrays covariance : function( arr1, arr2 ) { var u = jStat.mean( arr1 ), v = jStat.mean( arr2 ), sq_dev = [], arr1Len = arr1.length, i = 0; for ( ; i < arr1Len; i++ ) { sq_dev[i] = ( arr1[i] - u ) * ( arr2[i] - v ); } return jStat.sum( sq_dev ) / arr1Len; }, // correlation coefficient of two arrays corrcoeff : function( arr1, arr2 ) { return jStat.covariance( arr1, arr2 ) / jStat.stdev( arr1, 1 ) / jStat.stdev( arr2, 1 ); } }); // extend jStat.fn with methods which don't require arguments and work on columns (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { // if a matrix is passed, automatically assume operation should be done on the columns jStat.fn[ passfunc ] = function( fullbool, func ) { var arr = [], i = 0, tmpthis = this; // assignment reassignation depending on how parameters were passed in if ( isFunction( fullbool )) { func = fullbool; fullbool = false; } // check if a callback was passed with the function if ( func ) { setTimeout( function() { func.call( tmpthis, jStat.fn[ passfunc ].call( tmpthis, fullbool )); }, 15 ); return this; } // check if matrix and run calculations if ( this.length > 1 ) { tmpthis = fullbool === true ? this : this.transpose(); for ( ; i < tmpthis.length; i++ ) arr[i] = jStat[ passfunc ]( tmpthis[i] ); return fullbool === true ? jStat[ passfunc ]( arr ) : arr; } return jStat[ passfunc ]( this[0] ); }; })( funcs[i] ); })( 'sum sumsqrd sumsqerr product min max mean geomean median mode range variance stdev meandev meddev quartiles'.split( ' ' )); // extend jStat.fn with methods that have no argument (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function( func ) { var tmpthis = this, results; // check for callback if ( func ) { setTimeout( function() { func.call( tmpthis, jStat.fn[ passfunc ].call( tmpthis )); }, 15 ); return this; } results = jStat[ passfunc ]( this ); return isArray( results ) ? jStat( results ) : results; }; })( funcs[i] ); })( 'transpose clear norm symmetric'.split( ' ' )); // extend jStat.fn with methods that require one argument (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function( arg, func ) { var tmpthis = this; // check for callback if ( func ) { setTimeout( function() { func.call( tmpthis, jStat.fn[ passfunc ].call( tmpthis, arg )); }, 15 ); return this; } return jStat( jStat[ passfunc ]( this, arg )); }; })( funcs[i] ); })( 'add divide multiply subtract dot pow abs angle'.split( ' ' )); // extend jStat.fn with simple shortcut methods (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function() { return jStat( jStat[ passfunc ].apply( null, arguments )); }; })( funcs[i] ); })( 'create zeros ones rand identity'.split( ' ' )); // extend jStat.fn jStat.extend( jStat.fn, { // Returns the number of rows in the matrix rows : function() { return this.length || 1; }, // Returns the number of columns in the matrix cols : function() { return this[0].length || 1; }, // Returns the dimensions of the object { rows: i, cols: j } dimensions : function() { return { rows : this.rows(), cols : this.cols() }; }, // Returns a specified row as a vector row : function( index ) { return jStat( this[index] ); }, // Returns the specified column as a vector col : function( index ) { var column = [], i = 0; for ( ; i < this.length; i++ ) { column[i] = [ this[i][index] ]; } return jStat( column ); }, // Returns the diagonal of the matrix diag : function() { var row = 0, nrow = this.rows(), res = []; for ( ; row < nrow; row++ ) { res[row] = [ this[row][row] ]; } return jStat( res ); }, // Returns the anti-diagonal of the matrix antidiag : function() { var nrow = this.rows() - 1, res = [], i = 0; for ( ; nrow >= 0; nrow--, i++ ) { res[i] = [ this[i][nrow] ]; } return jStat( res ); }, // map a function to a matrix or vector map : function( func, toAlter ) { return jStat( jStat.map( this, func, toAlter )); }, // destructively alter an array alter : function( func ) { jStat.alter( this, func ); return this; } }); // exposing jStat return jStat; })( Math ); (function( jStat, Math ) { // generate all distribution instance methods (function( list ) { for ( var i = 0; i < list.length; i++ ) (function( func ) { // distribution instance method jStat[ func ] = function( a, b, c ) { if (!( this instanceof arguments.callee )) return new arguments.callee( a, b, c ); this._a = a; this._b = b; this._c = c; return this; }; // distribution method to be used on a jStat instance jStat.fn[ func ] = function( a, b, c ) { var newthis = jStat[ func ]( a, b, c ); newthis.data = this; return newthis; }; // sample instance method jStat[ func ].prototype.sample = function( arr ) { var a = this._a, b = this._b, c = this._c; if ( arr ) return jStat.alter( arr, function() { return jStat[ func ].sample( a, b, c ); }); else return jStat[ func ].sample( a, b, c ); }; // generate the pdf, cdf and inv instance methods (function( vals ) { for ( var i = 0; i < vals.length; i++ ) (function( fnfunc ) { jStat[ func ].prototype[ fnfunc ] = function( x ) { var a = this._a, b = this._b, c = this._c; if ( isNaN( x )) { return jStat.fn.map.call( this.data, function( x ) { return jStat[ func ][ fnfunc ]( x, a, b, c ); }); } return jStat[ func ][ fnfunc ]( x, a, b, c ); }; })( vals[ i ]); })( 'pdf cdf inv'.split( ' ' )); // generate the mean, median, mode and variance instance methods (function( vals ) { for ( var i = 0; i < vals.length; i++ ) (function( fnfunc ) { jStat[ func ].prototype[ fnfunc ] = function() { return jStat[ func ][ fnfunc ]( this._a, this._b, this._c ); }; })( vals[ i ]); })( 'mean median mode variance'.split( ' ' )); })( list[ i ]); })(( 'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy lognormal normal ' + 'pareto studentt weibull uniform binomial negbin hypgeom poisson triangular' ).split( ' ' )); // extend beta function with static methods jStat.extend( jStat.beta, { pdf : function( x, alpha, beta ) { return (x > 1 || x < 0) ? 0 : ( Math.pow( x, alpha - 1 ) * Math.pow( 1 - x, beta - 1 )) / jStat.betafn( alpha, beta ); }, cdf : function( x, alpha, beta ) { return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.incompleteBeta( x, alpha, beta ); }, inv : function( x, alpha, beta ) { return jStat.incompleteBetaInv( x, alpha, beta ); }, mean : function( alpha, beta ) { return alpha / ( alpha + beta ); }, median : function( alpha, beta ) { // TODO: implement beta median }, mode : function( alpha, beta ) { return ( alpha * beta ) / ( Math.pow( alpha + beta, 2 ) * ( alpha + beta + 1 )); }, // return a random sample sample : function( alpha, beta ) { var u = jStat.randg( alpha ); return u / ( u + jStat.randg( beta )); }, variance : function( alpha, beta ) { return ( alpha * beta ) / ( Math.pow( alpha + beta, 2 ) * ( alpha + beta + 1 )); } }); // extend F function with static methods jStat.extend( jStat.centralF, { pdf : function( x, df1, df2 ) { return ( x >= 0) ? Math.sqrt( ( Math.pow( df1 * x, df1) * Math.pow( df2, df2 ) ) / ( Math.pow(df1 * x + df2, df1 + df2 ) ) ) / ( x * jStat.betafn( df1/2, df2/2 ) ) : undefined; }, cdf : function( x, df1, df2 ) { return jStat.incompleteBeta( ( df1 * x ) / ( df1 * x + df2 ), df1 / 2, df2 / 2 ); }, inv : function( x, df1, df2 ) { return df2 / (df1 * ( 1 / jStat.incompleteBetaInv( x, df1 / 2, df2 / 2 ) - 1 ) ); }, mean : function( df1, df2 ) { return ( df2 > 2 ) ? df2 / ( df2 - 2 ) : undefined; }, mode : function( df1, df2 ) { return ( df1 > 2) ? ( df2 * ( df1 - 2 ) ) / ( df1 * ( df2 + 2 ) ) : undefined; }, // return a random sample sample : function( df1, df2 ) { var x1 = jStat.randg( df1 / 2 ) * 2; var x2 = jStat.randg( df2 / 2 ) * 2; return ( x1 / df1 ) / ( x2 / df2 ); }, variance : function( df1, df2 ) { return ( df2 > 4 ) ? 2 * df2 * df2 * ( df1 + df2 - 2) / ( df1 * ( df2 - 2 ) * ( df2 - 2 ) * ( df2 - 4 ) ): undefined; } }); // extend cauchy function with static methods jStat.extend( jStat.cauchy, { pdf : function( x, local, scale ) { return ( scale / ( Math.pow( x - local, 2 ) + Math.pow( scale, 2 ))) / Math.PI; }, cdf : function( x, local, scale ) { return Math.atan(( x - local) / scale ) / Math.PI + 0.5; }, inv : function( p, local, scale ) { return local + scale * Math.tan( Math.PI * ( p - 0.5 )); }, median: function( local, scale ) { return local; }, mode : function( local, scale ) { return local; }, sample : function( local, scale ) { return jStat.randn() * Math.sqrt( 1 / ( 2 * jStat.randg( 0.5 ))) * scale + local; } }); // extend chisquare function with static methods jStat.extend( jStat.chisquare, { pdf : function( x, dof ) { return Math.exp(( dof / 2 - 1 ) * Math.log( x ) - x / 2 - ( dof / 2 ) * Math.log( 2 ) - jStat.gammaln( dof / 2 )); }, cdf : function( x, dof ) { return jStat.gammap( dof / 2, x / 2 ); }, inv : function( p, dof ) { return 2 * jStat.gammapinv( p, 0.5 * dof ); }, mean : function( dof ) { return dof; }, //TODO: this is an approximation (is there a better way?) median : function( dof ) { return dof * Math.pow( 1 - ( 2 / ( 9 * dof )), 3 ); }, mode : function( dof ) { return ( dof - 2 > 0 ) ? dof - 2 : 0; }, sample : function( dof ) { return jStat.randg( dof / 2 ) * 2; }, variance: function( dof ) { return 2 * dof; } }); // extend exponential function with static methods jStat.extend( jStat.exponential, { pdf : function( x, rate ) { return x < 0 ? 0 : rate * Math.exp( -rate * x ); }, cdf : function( x, rate ) { return x < 0 ? 0 : 1 - Math.exp( -rate * x ); }, inv : function( p, rate ) { return -Math.log( 1 - p ) / rate; }, mean : function( rate ) { return 1 / rate; }, median : function ( rate ) { return ( 1 / rate ) * Math.log( 2 ); }, mode : function( rate ) { return 0; }, sample : function( rate ) { return -1 / rate * Math.log( Math.random()); }, variance : function( rate ) { return Math.pow( rate, -2 ); } }); // extend gamma function with static methods jStat.extend( jStat.gamma, { pdf : function( x, shape, scale ) { return Math.exp(( shape - 1 ) * Math.log( x ) - x / scale - jStat.gammaln( shape ) - shape * Math.log( scale )); }, cdf : function( x, shape, scale ) { return jStat.gammap( shape, x / scale ); }, inv : function( p, shape, scale ) { return jStat.gammapinv( p, shape ) * scale; }, mean : function( shape, scale ) { return shape * scale; }, mode : function( shape, scale ) { if( shape > 1 ) return ( shape - 1 ) * scale; return undefined; }, sample : function( shape, scale ) { return jStat.randg( shape ) * scale; }, variance: function( shape, scale ) { return shape * scale * scale; } }); // extend inverse gamma function with static methods jStat.extend( jStat.invgamma, { pdf : function( x, shape, scale ) { return Math.exp( -( shape + 1 ) * Math.log( x ) - scale/x - jStat.gammaln( shape ) + shape * Math.log( scale ) ); }, cdf : function( x, shape, scale ) { return 1 - jStat.gammap( shape, scale / x ); }, inv : function( p, shape, scale ) { return scale / jStat.gammapinv( 1 - p, shape ); }, mean : function( shape, scale ) { return ( shape > 1 ) ? scale / ( shape - 1 ) : undefined; }, mode : function( shape, scale ) { return scale / ( shape + 1 ); }, sample : function( shape, scale ) { return scale / jStat.randg( shape ); }, variance: function( shape, scale ) { return (shape > 2) ? scale * scale / ( ( shape - 1 ) * ( shape - 1) * ( shape - 2 ) ): undefined; } }); // extend kumaraswamy function with static methods jStat.extend( jStat.kumaraswamy, { pdf : function( x, alpha, beta ) { return Math.exp( Math.log( alpha ) + Math.log( beta ) + ( alpha - 1 ) * Math.log( x ) + ( beta - 1 ) * Math.log( 1 - Math.pow( x, alpha ))); }, cdf : function( x, alpha, beta ) { return ( 1 - Math.pow( 1 - Math.pow( x, alpha ), beta )); }, mean : function( alpha, beta ) { return ( beta * jStat.gammafn( 1 + 1 / alpha ) * jStat.gammafn( beta )) / ( jStat.gammafn( 1 + 1 / alpha + beta )); }, median : function( alpha, beta ) { return Math.pow( 1 - Math.pow( 2, -1 / beta ), 1 / alpha ); }, mode : function( alpha, beta ) { return ( alpha >= 1 && beta >= 1 && ( alpha !== 1 && beta !== 1 )) ? Math.pow(( alpha - 1 ) / ( alpha * beta - 1 ), 1 / alpha ) : undefined; }, variance: function( alpha, beta ) { // TODO: complete this } }); // extend lognormal function with static methods jStat.extend( jStat.lognormal, { pdf : function( x, mu, sigma ) { return Math.exp(-Math.log( x ) - 0.5 * Math.log( 2 * Math.PI ) - Math.log( sigma ) - Math.pow( Math.log( x ) - mu, 2 ) / ( 2 * sigma * sigma )); }, cdf : function( x, mu, sigma ) { return 0.5 + ( 0.5 * jStat.erf(( Math.log( x ) - mu ) / Math.sqrt( 2 * sigma * sigma ))); }, inv : function( p, mu, sigma ) { return Math.exp( -1.41421356237309505 * sigma * jStat.erfcinv( 2 * p ) + mu ); }, mean : function( mu, sigma ) { return Math.exp( mu + sigma * sigma / 2); }, median : function( mu, sigma ) { return Math.exp( mu ); }, mode : function( mu, sigma ) { return Math.exp( mu - sigma * sigma ); }, sample : function( mu, sigma ) { return Math.exp( jStat.randn() * sigma + mu ); }, variance : function( mu, sigma ) { return ( Math.exp( sigma * sigma ) - 1 ) * Math.exp( 2 * mu + sigma * sigma ); } }); // extend normal function with static methods jStat.extend( jStat.normal, { pdf : function( x, mean, std ) { return Math.exp( -0.5 * Math.log( 2 * Math.PI ) - Math.log( std ) - Math.pow( x - mean, 2 ) / ( 2 * std * std )); }, cdf : function( x, mean, std ) { return 0.5 * ( 1 + jStat.erf(( x - mean ) / Math.sqrt( 2 * std * std ))); }, inv : function( p, mean, std ) { return -1.41421356237309505 * std * jStat.erfcinv( 2 * p ) + mean; }, mean : function( mean, std ) { return mean; }, median : function( mean, std ) { return mean; }, mode : function ( mean, std ) { return mean; }, sample : function( mean, std ) { return jStat.randn() * std + mean; }, variance : function( mean, std ) { return std * std; } }); // extend pareto function with static methods jStat.extend( jStat.pareto, { pdf : function( x, scale, shape ) { return ( x > scale ) ? ( shape * Math.pow( scale, shape )) / Math.pow( x, shape + 1 ) : undefined; }, cdf : function( x, scale, shape ) { return 1 - Math.pow( scale / x, shape ); }, mean : function( scale, shape ) { return ( shape > 1 ) ? ( shape * Math.pow( scale, shape )) / ( shape - 1 ) : undefined; }, median : function( scale, shape ) { return scale * ( shape * Math.SQRT2 ); }, mode : function( scale, shape ) { return scale; }, variance : function( scale, shape ) { return ( shape > 2 ) ? ( scale*scale * shape ) / ( Math.pow( shape - 1, 2 ) * ( shape - 2 )) : undefined; } }); // extend studentt function with static methods jStat.extend( jStat.studentt, { pdf : function( x, dof ) { return ( jStat.gammafn(( dof + 1 ) / 2 ) / ( Math.sqrt( dof * Math.PI ) * jStat.gammafn( dof / 2 ))) * Math.pow( 1 + (( x*x ) / dof ), -(( dof + 1 ) / 2 )); }, cdf : function( x, dof ) { var dof2 = dof / 2; return jStat.incompleteBeta(( x + Math.sqrt( x * x + dof )) / ( 2 * Math.sqrt( x * x + dof )), dof2, dof2 ); }, inv : function( p, dof ) { var x = jStat.incompleteBetaInv( 2 * Math.min( p, 1 - p ), 0.5 * dof, 0.5 ); x = Math.sqrt( dof * ( 1 - x ) / x ); return ( p > 0 ) ? x : -x; }, mean : function( dof ) { return ( dof > 1 ) ? 0 : undefined; }, median : function ( dof ) { return 0; }, mode : function( dof ) { return 0; }, sample : function( dof ) { return jStat.randn() * Math.sqrt( dof / ( 2 * jStat.randg( dof / 2))); }, variance : function( dof ) { return ( dof > 2 ) ? dof / ( dof - 2 ) : ( dof > 1 ) ? Infinity : undefined; } }); // extend weibull function with static methods jStat.extend( jStat.weibull, { pdf : function( x, scale, shape ) { return x < 0 ? 0 : ( shape / scale ) * Math.pow(( x / scale ),( shape - 1 )) * Math.exp(-( Math.pow(( x / scale ), shape ))); }, cdf : function( x, scale, shape ) { return x < 0 ? 0 : 1 - Math.exp( -Math.pow(( x / scale ), shape )); }, inv : function( p, scale, shape ) { return scale * Math.pow( -Math.log( 1 - p ), 1 / shape ); }, mean : function( scale, shape ) { return scale * jStat.gammafn( 1 + 1 / shape ); }, median : function( scale, shape ) { return scale * Math.pow( Math.log( 2 ), 1 / shape ); }, mode : function( scale, shape ) { return ( shape > 1 ) ? scale * Math.pow(( shape - 1 ) / shape, 1 / shape ) : undefined; }, sample : function( scale, shape ) { return scale * Math.pow( -Math.log( Math.random()), 1 / shape ); }, variance : function( scale, shape ) { return scale * scale * jStat.gammafn( 1 + 2 / shape ) - Math.pow( this.mean( scale, shape ), 2 ); } }); // extend uniform function with static methods jStat.extend( jStat.uniform, { pdf : function( x, a, b ) { return ( x < a || x > b ) ? 0 : 1 / ( b - a ); }, cdf : function( x, a, b ) { if ( x < a ) { return 0; } else if ( x < b ) { return ( x - a ) / ( b - a ); } return 1; }, mean : function( a, b ) { return 0.5 * ( a + b ); }, median : function( a, b ) { return jStat.mean( a, b ); }, mode : function( a, b ) { // TODO: complete this }, sample : function( a, b ) { return ( a / 2 + b / 2 ) + ( b / 2 - a / 2) * ( 2 * Math.random() - 1); }, variance : function( a, b ) { return Math.pow( b - a, 2 ) / 12; } }); // extend uniform function with static methods jStat.extend( jStat.binomial, { pdf : function( k, n, p ) { return ( p === 0 || p === 1 ) ? (( n * p ) === k ? 1 : 0 ) : jStat.combination( n, k ) * Math.pow( p, k ) * Math.pow( 1 - p, n - k ); }, cdf : function( x, n, p ) { var binomarr = [], k = 0; if ( x < 0 ) { return 0; } if ( x < n ) { for ( ; k <= x; k++ ) { binomarr[ k ] = jStat.binomial.pdf( k, n, p ); } return jStat.sum( binomarr ); } return 1; } }); // extend uniform function with static methods jStat.extend( jStat.negbin, { pdf : function( k, r, p ) { return k !== k | 0 ? false : k < 0 ? 0 : jStat.combination( k + r - 1, k ) * Math.pow( 1 - p, r ) * Math.pow( p, k ); }, cdf : function( x, r, p ) { var sum = 0, k = 0; if ( x < 0 ) return 0; for ( ; k <= x; k++ ) { sum += jStat.negbin.pdf( k, r, p ); } return sum; } }); // extend uniform function with static methods jStat.extend( jStat.hypgeom, { pdf : function( k, N, m, n ) { return k !== k | 0 ? false : ( k < 0) ? 0 : jStat.combination( m, k ) * jStat.combination( N - m , n - k ) / jStat.combination( N, n ); }, cdf : function( x, N, m, n ) { var sum = 0, k = 0; if ( x < 0 ) return 0; for ( ; k <= x; k++ ) { sum += jStat.hypgeom.pdf( k, N, m, n ); } return sum; } }); // extend uniform function with static methods jStat.extend( jStat.poisson, { pdf : function( k, l ) { return Math.pow( l, k ) * Math.exp( -l ) / jStat.factorial( k ); }, cdf : function( x, l ) { var sumarr = [], k = 0; if ( x < 0 ) return 0; for ( ; k <= x; k++ ) { sumarr.push(jStat.poisson.pdf( k, l )); } return jStat.sum(sumarr); }, mean : function( l ) { return l; }, variance : function( l ) { return l; }, sample : function( l ) { var p = 1, k = 0, L = Math.exp(-l); do { k++; p *= Math.random(); } while (p > L); return k - 1; } }); // extend triangular function with static methods jStat.extend( jStat.triangular, { pdf : function( x, a, b, c ) { return ( b <= a || c < a || c > b ) ? undefined : ( x < a || x > b ) ? 0 : ( x <= c ) ? ( 2 * ( x - a )) / (( b - a ) * ( c - a )) : ( 2 * ( b - x )) / (( b - a ) * ( b - c )); }, cdf : function( x, a, b, c ) { if ( b <= a || c < a || c > b ) return undefined; if ( x < a ) { return 0; } else { if ( x <= c ) return Math.pow( x - a, 2 ) / (( b - a ) * ( c - a )); return 1 - Math.pow( b - x, 2 ) / (( b - a ) * ( b - c )); } // never reach this return 1; }, mean : function( a, b, c ) { return ( a + b + c ) / 3; }, median : function( a, b, c ) { if ( c <= ( a + b ) / 2 ) { return b - Math.sqrt(( b - a ) * ( b - c )) / Math.sqrt( 2 ); } else if ( c > ( a + b ) / 2 ) { return a + Math.sqrt(( b - a ) * ( c - a )) / Math.sqrt( 2 ); } }, mode : function( a, b, c ) { return c; }, sample : function( a, b, c ) { var u = Math.random(); return u < (( c - a ) / ( b - a )) ? a + Math.sqrt( u * ( b - a ) * ( c - a )) : b - Math.sqrt(( 1 - u ) * ( b - a ) * ( b - c )); }, variance : function( a, b, c ) { return ( a * a + b * b + c * c - a * b - a * c - b * c ) / 18; } }); })( this.jStat, Math ); // Special functions // (function( jStat, Math ) { // Evaluates the continued fraction for incomplete beta function by modified Lentz's method. function betacf( x, a, b ) { var fpmin = 1e-30, m = 1, m2, aa, c, d, del, h, qab, qam, qap; // These q's will be used in factors that occur in the coefficients qab = a + b; qap = a + 1; qam = a - 1; c = 1; d = 1 - qab * x / qap; if( Math.abs( d ) < fpmin ) d = fpmin; d = 1 / d; h = d; for ( ; m <= 100; m++ ) { m2 = 2 * m; aa = m * ( b - m ) * x / ( ( qam + m2 ) * ( a + m2 ) ); // One step (the even one) of the recurrence d = 1 + aa * d; if( Math.abs( d ) < fpmin ) d = fpmin; c = 1 + aa / c; if( Math.abs( c ) < fpmin ) c = fpmin; d = 1 / d; h *= d * c; aa = -( a + m ) * ( qab + m ) * x / ( ( a + m2 ) * ( qap + m2 ) ); // Next step of the recurrence (the odd one) d = 1 + aa * d; if( Math.abs( d ) < fpmin ) d = fpmin; c = 1 + aa / c; if( Math.abs( c ) < fpmin ) c = fpmin; d = 1 / d; del = d * c; h *= del; if( Math.abs( del - 1.0 ) < 3e-7 ) break; } return h; } // extending static jStat methods jStat.extend({ // Log-gamma function gammaln : function( x ) { var j = 0, cof = [ 76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5 ], ser = 1.000000000190015, xx, y, tmp; tmp = ( y = xx = x ) + 5.5; tmp -= ( xx + 0.5 ) * Math.log( tmp ); for( ; j < 6; j++ ) ser += cof[j] / ++y; return Math.log( 2.5066282746310005 * ser / xx) - tmp; }, // gamma of x gammafn : function( x ) { var p = [ -1.716185138865495, 24.76565080557592, -379.80425647094563, 629.3311553128184, 866.9662027904133, -31451.272968848367, -36144.413418691176, 66456.14382024054 ], q = [ -30.8402300119739, 315.35062697960416, -1015.1563674902192, -3107.771671572311, 22538.118420980151, 4755.8462775278811, -134659.9598649693, -115132.2596755535 ], fact = false, n = 0, xden = 0, xnum = 0, y = x, i, z, yi, res, sum, ysq; if( y <= 0 ) { res = y % 1 + 3.6e-16; if ( res ) { fact = (!( y & 1 ) ? 1 : -1 ) * Math.PI / Math.sin( Math.PI * res ); y = 1 - y; } else { return Infinity; } } yi = y; if ( y < 1 ) { z = y++; } else { z = ( y -= n = ( y | 0 ) - 1 ) - 1; } for ( i = 0; i < 8; ++i ) { xnum = ( xnum + p[i] ) * z; xden = xden * z + q[i]; } res = xnum / xden + 1; if ( yi < y ) { res /= yi; } else if ( yi > y ) { for ( i = 0; i < n; ++i ) { res *= y; y++; } } if ( fact ) { res = fact / res; } return res; }, // lower incomplete gamma function P(a,x) gammap : function( a, x ) { var aln = jStat.gammaln( a ), afn = jStat.gammafn( a ), ap = a, sum = 1 / a, del = sum, b = x + 1 - a, c = 1 / 1.0e-30, d = 1 / b, h = d, i = 1, afix = ( a >= 1 ) ? a : 1 / a, // calculate maximum number of itterations required for a ITMAX = -~( Math.log( afix ) * 8.5 + a * 0.4 + 17 ), an, endval; if ( x < 0 || a <= 0 ) { return NaN; } else if ( x < a + 1 ) { for ( ; i <= ITMAX; i++ ) { sum += del *= x / ++ap; } endval = sum * Math.exp( -x + a * Math.log( x ) - ( aln )); } else { for ( ; i <= ITMAX; i++ ) { an = -i * ( i - a ); b += 2; d = an * d + b; c = b + an / c; d = 1 / d; h *= d * c; } endval = 1 - h * Math.exp( -x + a * Math.log( x ) - ( aln )); } return endval * afn / jStat.gammafn( a ); }, // natural log factorial of n factorialln : function( n ) { return n < 0 ? NaN : jStat.gammaln( n + 1 ); }, // factorial of n factorial : function( n ) { return n < 0 ? NaN : jStat.gammafn( n + 1 ); }, // combinations of n, m combination : function( n, m ) { // make sure n or m don't exceed the upper limit of usable values return ( n > 170 || m > 170 ) ? Math.exp( jStat.combinationln( n, m )) : ( jStat.factorial( n ) / jStat.factorial( m )) / jStat.factorial( n - m ); }, combinationln : function( n, m ){ return jStat.factorialln( n ) - jStat.factorialln( m ) - jStat.factorialln( n - m ); }, // permutations of n, m permutation : function( n, m ) { return jStat.factorial( n ) / jStat.factorial( n - m ); }, // beta function betafn : function( x, y ) { // ensure arguments are positive if ( x <= 0 || y <= 0 ) return undefined; // make sure x + y doesn't exceed the upper limit of usable values return ( x + y > 170 ) ? Math.exp( jStat.betaln( x, y )) : jStat.gammafn( x ) * jStat.gammafn( y ) / jStat.gammafn( x + y ); }, // natural logarithm of beta function betaln : function( x, y ) { return jStat.gammaln( x ) + jStat.gammaln( y ) - jStat.gammaln( x + y ); }, // Returns the inverse incomplte gamma function gammapinv : function( p, a ) { var j = 0, a1 = a - 1, EPS = 1e-8, gln = jStat.gammaln( a ), x, err, t, u, pp, lna1, afac; if( p >= 1 ) return Math.max( 100, a + 100 * Math.sqrt( a ) ); if( p <= 0 ) return 0; if( a > 1 ) { lna1 = Math.log( a1 ); afac = Math.exp( a1 * ( lna1 - 1 ) - gln ); pp = ( p < 0.5 ) ? p : 1 - p; t = Math.sqrt( -2 * Math.log( pp )); x = ( 2.30753 + t * 0.27061 ) / ( 1 + t * ( 0.99229 + t * 0.04481 )) - t; if( p < 0.5 ) x = -x; x = Math.max( 1e-3, a * Math.pow( 1 - 1 / ( 9 * a ) - x / ( 3 * Math.sqrt( a )), 3 )); } else { t = 1 - a * ( 0.253 + a * 0.12 ); if( p < t ) x = Math.pow( p / t, 1 / a); else x = 1 - Math.log( 1 - ( p - t ) / ( 1 - t )); } for( ; j < 12; j++ ) { if( x <= 0 ) return 0; err = jStat.gammap( a, x ) - p; if( a > 1 ) t = afac * Math.exp( -( x - a1 ) + a1 * ( Math.log( x ) - lna1 )); else t = Math.exp( -x + a1 * Math.log( x ) - gln ); u = err / t; x -= ( t = u / ( 1 - 0.5 * Math.min( 1, u * ( ( a - 1 ) / x - 1 )))); if( x <= 0 ) x = 0.5 * ( x + t ); if( Math.abs( t ) < EPS * x ) break; } return x; }, // Returns the error function erf(x) erf : function( x ) { var cof = [ -1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2, -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4, 4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6, 1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8, 6.529054439e-9, 5.059343495e-9, -9.91364156e-10, -2.27365122e-10, 9.6467911e-11, 2.394038e-12, -6.886027e-12, 8.94487e-13, 3.13092e-13, -1.12708e-13, 3.81e-16, 7.106e-15, -1.523e-15, -9.4e-17, 1.21e-16, -2.8e-17 ], j = cof.length - 1, isneg = false, d = 0, dd = 0, t, ty, tmp, res; if( x < 0 ) { x = -x; isneg = true; } t = 2 / ( 2 + x ); ty = 4 * t - 2; for( ; j > 0; j-- ) { tmp = d; d = ty * d - dd + cof[j]; dd = tmp; } res = t * Math.exp( -x*x + 0.5 * ( cof[0] + ty * d ) - dd ); return ( isneg ) ? res - 1 : 1 - res; }, // Returns the complmentary error function erfc(x) erfc : function( x ) { return 1 - jStat.erf( x ); }, // Returns the inverse of the complementary error function erfcinv : function( p ) { var j = 0, x, err, t, pp; if( p >= 2 ) return -100; if( p <= 0 ) return 100; pp = ( p < 1 ) ? p : 2 - p; t = Math.sqrt( -2 * Math.log( pp / 2 )); x = -0.70711 * (( 2.30753 + t * 0.27061 ) / ( 1 + t * ( 0.99229 + t * 0.04481)) - t ); for( ; j < 2; j++ ) { err = jStat.erfc( x ) - pp; x += err / ( 1.12837916709551257 * Math.exp( -x * x ) - x * err ); } return ( p < 1 ) ? x : -x; }, // Returns the inverse of the incomplete beta function incompleteBetaInv : function( p, a, b ) { var EPS = 1e-8, a1 = a - 1, b1 = b - 1, j = 0, lna, lnb, pp, t, u, err, x, al, h, w, afac; if( p <= 0 ) return 0; if( p >= 1 ) return 1; if( a >= 1 && b >= 1 ) { pp = ( p < 0.5 ) ? p : 1 - p; t = Math.sqrt( -2 * Math.log( pp )); x = ( 2.30753 + t * 0.27061 ) / ( 1 + t* ( 0.99229 + t * 0.04481 )) - t; if( p < 0.5 ) x = -x; al = ( x * x - 3 ) / 6; h = 2 / ( 1 / ( 2 * a - 1 ) + 1 / ( 2 * b - 1 )); w = ( x * Math.sqrt( al + h ) / h ) - ( 1 / ( 2 * b - 1 ) - 1 / ( 2 * a - 1 )) * ( al + 5 / 6 - 2 / ( 3 * h )); x = a / ( a + b * Math.exp( 2 * w )); } else { lna = Math.log( a / ( a + b )); lnb = Math.log( b / ( a + b )); t = Math.exp( a * lna ) / a; u = Math.exp( b * lnb ) / b; w = t + u; if( p < t / w) x = Math.pow( a * w * p, 1 / a ); else x = 1 - Math.pow( b * w * ( 1 - p ), 1 / b ); } afac = -jStat.gammaln( a ) - jStat.gammaln( b ) + jStat.gammaln( a + b ); for( ; j < 10; j++ ) { if( x === 0 || x === 1) return x; err = jStat.incompleteBeta( x, a, b ) - p; t = Math.exp( a1 * Math.log( x ) + b1 * Math.log( 1 - x ) + afac ); u = err / t; x -= ( t = u / ( 1 - 0.5 * Math.min( 1, u * ( a1 / x - b1 / ( 1 - x ))))); if( x <= 0 ) x = 0.5 * ( x + t ); if( x >= 1 ) x = 0.5 * ( x + t + 1 ); if( Math.abs( t ) < EPS * x && j > 0 ) break; } return x; }, // Returns the incomplete beta function I_x(a,b) incompleteBeta : function( x, a, b ) { // Factors in front of the continued fraction. var bt = ( x === 0 || x === 1 ) ? 0 : Math.exp(jStat.gammaln( a + b ) - jStat.gammaln( a ) - jStat.gammaln( b ) + a * Math.log( x ) + b * Math.log( 1 - x )); if( x < 0 || x > 1 ) return false; if( x < ( a + 1 ) / ( a + b + 2 ) ) // Use continued fraction directly. return bt * betacf( x, a, b ) / a; // else use continued fraction after making the symmetry transformation. return 1 - bt * betacf( 1 - x, b, a ) / b; }, // Returns a normal deviate (mu=0, sigma=1). // If n and m are specified it returns a jstat object of normal deviates. randn : function( n, m ) { var u, v, x, y, q, mat; if ( !m ) m = n; if( n ) { mat = jStat.zeros( n, m ); mat.alter(function() { return jStat.randn(); }); return mat; } do { u = Math.random(); v = 1.7156 * ( Math.random() - 0.5 ); x = u - 0.449871; y = Math.abs( v ) + 0.386595; q = x*x + y * ( 0.19600 * y - 0.25472 * x ); } while( q > 0.27597 && ( q > 0.27846 || v*v > -4 * Math.log( u ) * u*u )); return v / u; }, // Returns a gamma deviate by the method of Marsaglia and Tsang. randg : function( shape, n, m ) { var oalph = shape, a1, a2, u, v, x, mat; if ( !m ) m = n; if ( !shape ) shape = 1; if( n ) { mat = jStat.zeros( n,m ); mat.alter(function() { return jStat.randg( shape ); }); return mat; } if( shape < 1 ) shape += 1; a1 = shape - 1 / 3; a2 = 1 / Math.sqrt( 9 * a1 ); do { do { x = jStat.randn(); v = 1 + a2 * x; } while( v <= 0 ); v = v * v * v; u = Math.random(); } while( u > 1 - 0.331 * Math.pow( x, 4 ) && Math.log( u ) > 0.5 * x*x + a1 * ( 1 - v + Math.log( v ) )); // alpha > 1 if( shape == oalph ) return a1 * v; // alpha < 1 do { u = Math.random(); } while( u === 0 ); return Math.pow( u, 1 / oalph ) * a1 * v; } }); // making use of static methods on the instance (function( funcs ) { for ( var i = 0; i < funcs.length; i++ ) (function( passfunc ) { jStat.fn[ passfunc ] = function() { return jStat( jStat.map( this, function( value ) { return jStat[ passfunc ]( value ); })); }; })( funcs[i] ); })( 'gammaln gammafn factorial factorialln'.split( ' ' )); })( this.jStat, Math ); /*Provides functions for the solution of linear system of equations, integration, extrapolation, * interpolation, eigenvalue problems, differential equations and PCA analysis. */ (function( jStat, Math ) { var push = Array.prototype.push; jStat.extend({ augment : function( a, b ) { var newarr = a.slice(); for ( var i = 0; i < newarr.length; i++ ) { push.apply( newarr[i], b[i] ); } return newarr; }, inv : function( a ) { var rows = a.length, cols = a[0].length, b = jStat.identity( rows, cols ), c = jStat.gauss_jordan( a, b ), obj = [], i = 0, j; for ( ; i < rows; i++ ) { obj[i] = []; for ( j = cols - 1; j < c[0].length; j++ ) obj[i][j - cols] = c[i][j]; } return obj; }, gauss_elimination : function( a, b ) { var i = 0, j = 0, n = a.length, m = a[0].length, factor = 1, sum = 0, x = [], maug, pivot, temp, k; a = jStat.augment( a, b ); maug = a[0].length; for( ; i < n; i++ ) { pivot = a[i][i]; j = i; for ( k = i + 1; k < m; k++ ) { if ( pivot < Math.abs( a[k][i] )) { pivot = a[k][i]; j = k; } } if ( j != i ) { for( k = 0; k < maug; k++ ) { temp = a[i][k]; a[i][k] = a[j][k]; a[j][k] = temp; } } for ( j = i + 1; j < n; j++ ) { factor = a[j][i] / a[i][i]; for( k = i; k < maug; k++) { a[j][k] = a[j][k] - factor * a[i][k]; } } } for ( i = n - 1; i >= 0; i-- ) { sum = 0; for ( j = i + 1; j<= n - 1; j++ ) { sum = x[j] * a[i][j]; } x[i] =( a[i][maug - 1] - sum ) / a[i][i]; } return x; }, gauss_jordan : function( a, b ) { var i = 0, j = 0, n = a.length, m = a[0].length, factor = 1, sum = 0, X=[], temp, pivot, maug, k; a = jStat.augment( a, b ); maug = a[0].length; for ( ; i < n; i++ ) { pivot = a[i][i]; j = i; for ( k = i+1;k< m;k++) { if( pivot < Math.abs( a[k][i] )) { pivot = a[k][i]; j = k; } } if ( j != i ) { for ( ; k < maug; k++ ) { temp = a[i][k]; a[i][k] = a[j][k]; a[j][k] = temp; } } for ( j = 0; j < n; j++ ) { if ( i != j ) { factor = a[j][i] / a[i][i]; for ( k = i; k j ) { l[i][j] = a[i][j]; u[i][j] = d[i][j] = 0; } else if ( i < j ) { u[i][j] = a[i][j]; l[i][j] = d[i][j] = 0; } else { d[i][j] = a[i][j]; l[i][j] = u[i][j] = 0; } } } h = jStat.multiply( jStat.multiply( jStat.inv( d ), jStat.add( l, u )), -1 ); c = jStat.multiply( jStat.inv( d ), b ); xv = x; xk = jStat.add( jStat.multiply( h, x ), c ); i = 2; while ( Math.abs( jStat.norm( jStat.subtract( xk,xv ))) > r ) { xv = xk; xk = jStat.add( jStat.multiply( h, xv ), c ); i++; } return xk; }, gauss_seidel : function( a, b, x, r ) { var i = 0, n = a.length, l = [], u = [], d = [], j, xv, c, h, xk; for ( ; i < n; i++ ) { l[i] = []; u[i] = []; d[i] = []; for ( j = 0; j < n; j++) { if ( i > j ) { l[i][j] = a[i][j]; u[i][j] = d[i][j] = 0; } else if ( i < j ) { u[i][j] = a[i][j]; l[i][j] = d[i][j] = 0; } else { d[i][j] = a[i][j]; l[i][j] = u[i][j] = 0; } } } h = jStat.multiply( jStat.multiply( jStat.inv( jStat.add( d, l )), u ), -1 ); c = jStat.multiply( jStat.inv( jStat.add( d, l )), b ); xv = x; xk = jStat.add( jStat.multiply( h, x ), c ); i = 2; while ( Math.abs( jStat.norm( jStat.subtract( xk, xv ))) > r ) { xv = xk; xk = jStat.add( jStat.multiply( h, xv ), c ); i = i + 1; } return xk; }, SOR : function( a, b, x, r, w ) { var i = 0, n = a.length, l = [], u = [], d = [], j, xv, c, h, xk; for ( ; i < n; i++ ) { l[i] = []; u[i] = []; d[i] = []; for ( j = 0; j < n; j++ ) { if ( i > j ) { l[i][j] = a[i][j]; u[i][j] = d[i][j] = 0; } else if ( i < j ) { u[i][j] = a[i][j]; l[i][j] = d[i][j] = 0; } else { d[i][j] = a[i][j]; l[i][j] = u[i][j] = 0; } } } h = jStat.multiply( jStat.inv( jStat.add( d, jStat.multiply( l, w ))), jStat.subtract( jStat.multiply( d, 1 - w ), jStat.multiply( u, w ))); c = jStat.multiply( jStat.multiply( jStat.inv( jStat.add( d, jStat.multiply( l, w ))), b ), w ); xv = x; xk = jStat.add( jStat.multiply( h, x ), c ); i = 2; while ( Math.abs( jStat.norm( jStat.subtract( xk, xv ))) > r ) { xv = xk; xk = jStat.add( jStat.multiply( h, xv ), c ); i++; } return xk; }, householder : function( a ) { var m = a.length, n = a[0].length, i = 0, w = [], p = [], alpha, r, k, j, factor; for ( ; i < m - 1; i++ ) { alpha = 0; for ( j = i + 1; j < n; j++ ) alpha += ( a[j][i] * a[j][i] ); factor = ( a[i + 1][i] > 0 ) ? -1 : 1; alpha = factor * Math.sqrt( alpha ); r = Math.sqrt(((( alpha * alpha ) - a[i + 1][i] * alpha ) / 2 )); w = jStat.zeros( m, 1 ); w[i + 1][0] = ( a[i + 1][i] - alpha ) / ( 2 * r ); for ( k = i + 2; k < m; k++ ) w[k][0] = a[k][i] / ( 2 * r ); p = jStat.subtract( jStat.identity( m, n ), jStat.multiply( jStat.multiply(w, jStat.transpose( w )), 2 )); a = jStat.multiply( p, jStat.multiply( a, p )); } return a; }, // TODO: not working properly. QR : function( a, b ) { var m = a.length, n = a[0].length, i = 0, w = [], p = [], x = [], j, alpha, r, k, factor,sum; for ( ; i < m - 1; i++ ) { alpha = 0; for ( j = i + 1; j < n; j++ ) alpha += ( a[j][i] * a[j][i] ); factor = ( a[i + 1][i] > 0 ) ? -1 : 1; alpha = factor * Math.sqrt( alpha ); r = Math.sqrt(((( alpha * alpha ) - a[i + 1][i] * alpha ) / 2 )); w = jStat.zeros( m, 1 ); w[i + 1][0] = ( a[i + 1][i] - alpha ) / ( 2 * r ); for ( k = i + 2; k < m; k++ ) w[k][0] = a[k][i] / ( 2 * r ); p = jStat.subtract( jStat.identity( m, n ), jStat.multiply( jStat.multiply( w, jStat.transpose( w )), 2)); a = jStat.multiply( p, a ); b = jStat.multiply( p, b ); } for ( i = m - 1; i >= 0; i-- ) { sum = 0; for ( j = i + 1; j <= n - 1; j++ ) sum = x[j] * a[i][j]; x[i] = b[i][0] / a[i][i]; } return x; }, jacobi : function( a ) { var condition = 1, count = 0, n = a.length, e = jStat.identity( n, n ), ev = [], b, i, j, p, q, maxim, theta, s; // condition === 1 only if tolerance is not reached while ( condition === 1 ) { count++; maxim = a[0][1]; p = 0; q = 1; for ( i = 0; i < n; i++ ) { for ( j = 0; j < n; j++ ) { if ( i != j ) { if ( maxim < Math.abs( a[i][j] )) { maxim = Math.abs( a[i][j] ); p = i; q = j; } } } } if ( a[p][p] === a[q][q] ) theta = ( a[p][q] > 0 ) ? Math.PI / 4 : -Math.PI / 4; else theta = Math.atan( 2 * a[p][q] / ( a[p][p] - a[q][q] )) / 2; s = jStat.identity( n, n ); s[p][p] = Math.cos( theta ); s[p][q] = -Math.sin( theta ); s[q][p] = Math.sin( theta ); s[q][q] = Math.cos( theta ); // eigen vector matrix e = jStat.multiply( e, s ); b = jStat.multiply( jStat.multiply( jStat.inv( s ), a ), s ); a = b; condition = 0; for ( i = 1; i < n; i++ ) { for ( j = 1; j < n; j++ ) { if ( i != j && Math.abs( a[i][j]) > 0.001 ) { condition = 1; } } } } for( i = 0; i < n; i++ ) ev.push( a[i][i] ); //returns both the eigenvalue and eigenmatrix return [e, ev]; }, rungekutta : function( f, h, p, t_j, u_j, order ) { var k1, k2, u_j1, k3, k4; if ( order === 2 ) { while ( t_j <= p ) { k1 = h * f( t_j, u_j ); k2 = h * f( t_j + h, u_j + k1 ); u_j1 = u_j + ( k1 + k2 ) / 2; u_j = u_j1; t_j = t_j + h; } } if ( order === 4 ) { while ( t_j <= p ) { k1 = h * f( t_j, u_j); k2 = h * f( t_j + h / 2, u_j + k1 / 2 ); k3 = h * f( t_j + h / 2, u_j + k2 / 2); k4 = h * f( t_j +h, u_j + k3 ); u_j1 = u_j + ( k1 + 2 * k2 + 2 * k3 + k4 ) / 6; u_j = u_j1; t_j = t_j + h; } } return u_j; }, romberg : function( f, a, b, order ) { var i = 0, h = ( b - a ) / 2, x = [], h1 = [], g = [], m, a1, j, k, I, d; while ( i < order / 2 ) { I = f( a ); for ( j = a, k = 0; j <= b; j = j + h, k++ ) x[k] = j; m = x.length; for ( j = 1; j < m - 1; j++ ) { I += ((( j % 2 ) !== 0 ) ? 4 : 2 ) * f( x[j] ); } I = ( h / 3 ) * ( I + f( b )); g[i] = I; h /= 2; i++; } a1 = g.length; m = 1; while ( a1 !== 1 ) { for ( j = 0; j < a1 - 1; j++ ) h1[j] = (( Math.pow( 4, m )) * g[j + 1] - g[j] ) / ( Math.pow( 4, m ) - 1 ); a1 = h1.length; g = h1; h1 = []; m++; } return g; }, richardson : function( X, f, x, h ) { function pos( X, x ) { var i = 0, n = X.length, p; for ( ; i < n; i++ ) if ( X[i] === x ) p = i; return p; } var n = X.length, h_min = Math.abs( x - X[pos( X, x ) + 1] ), i = 0, g = [], h1 = [], y1, y2, m, a, j; while ( h >= h_min ) { y1 = pos( X, x + h ); y2 = pos( X, x ); g[i] = ( f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / ( h * h ); h /= 2; i++; } a = g.length; m = 1; while ( a != 1 ) { for ( j = 0; j < a - 1; j++ ) h1[j] = (( Math.pow( 4, m )) * g[j + 1] - g[j]) / ( Math.pow( 4, m ) - 1 ); a = h1.length; g = h1; h1 = []; m++; } return g; }, simpson : function( f, a, b, n ) { var h = ( b - a ) / n, I = f( a ), x = [], j = a, k = 0, i = 1, m; for ( ; j <= b; j = j + h, k++ ) x[k] = j; m = x.length; for ( ; i < m - 1; i++ ) { I += (( i % 2 !== 0 ) ? 4 : 2 ) * f( x[i] ); } return ( h / 3 ) * ( I + f( b )); }, hermite : function( X, F, dF, value ) { var n = X.length, p = 0, i = 0, l = [], dl = [], A = [], B = [], j; for ( ; i < n; i++) { l[i] = 1; for ( j = 0; j < n; j++ ) { if ( i != j ) l[i] *= ( value - X[j] ) / ( X[i] - X[j] ); } dl[i] = 0; for ( j = 0; j < n; j++ ) { if ( i != j ) dl[i] += 1 / (X [i] - X[j] ); } A[i] = ( 1 - 2 * ( value - X[i] ) * dl[i] ) * ( l[i] * l[i] ); B[i] = ( value - X[i] ) * ( l[i] * l[i] ); p += ( A[i] * F[i] + B[i] * dF[i] ); } return p; }, lagrange : function( X, F, value ) { var p = 0, i = 0, j, l, n = X.length; for ( ; i < n; i++ ) { l = F[i]; for ( j = 0; j < n; j++ ) { // calculating the lagrange polynomial L_i if ( i != j ) l *= ( value - X[j] ) / ( X[i] - X[j] ); } // adding the lagrange polynomials found above p += l; } return p; }, cubic_spline : function( X, F, value ) { var n = X.length, i = 0, j, A = [], B = [], alpha = [], c = [], h = [], b = [], d = []; for ( ; i < n - 1; i++ ) h[i] = X[i + 1] - X[i]; alpha[0] = 0; for ( i = 1; i < n - 1; i++ ) alpha[i] = ( 3 / h[i] ) * ( F[i + 1] - F[i] ) - ( 3 / h[i-1] ) * ( F[i] - F[i-1] ); for ( i = 1; i < n - 1; i++ ) { A[i] = []; B[i] = []; A[i][i-1] = h[i-1]; A[i][i] = 2 * ( h[i - 1] + h[i] ); A[i][i+1] = h[i]; B[i][0] = alpha[i]; } c = jStat.multiply( jStat.inv( A ), B ); for ( j = 0; j < n - 1; j++ ) { b[j] = ( F[j + 1] - F[j] ) / h[j] - h[j] * ( c[j + 1][0] + 2 * c[j][0] ) / 3; d[j] = ( c[j + 1][0] - c[j][0] ) / ( 3 * h[j] ); } for ( j = 0; j < n; j++ ) { if ( X[j] > value ) break; } j -= 1; return F[j] + ( value - X[j] ) * b[j] + jStat.sq( value-X[j] ) * c[j] + ( value - X[j] ) * jStat.sq( value - X[j] ) * d[j]; }, gauss_quadrature : function() { //TODO }, PCA : function( X ) { var m = X.length, n = X[0].length, flag = false, i = 0, j, temp1, u = [], D = [], result = [], temp2 = [], Y = [], Bt = [], B = [], C = [], V = [], Vt = []; for ( i = 0; i < m; i++ ) { u[i] = jStat.sum( X[i] ) / n; } for ( i = 0; i < n; i++ ) { B[i] = []; for( j = 0; j < m; j++ ) { B[i][j] = X[j][i] - u[j]; } } B = jStat.transpose( B ); for ( i = 0; i < m; i++ ) { C[i] = []; for ( j = 0; j < m; j++ ) { C[i][j] = ( jStat.dot( [B[i]], [B[j]] )) / ( n - 1 ); } } result = jStat.jacobi( C ); V = result[0]; D = result[1]; Vt = jStat.transpose( V ); for ( i = 0; i < D.length; i++ ) { for ( j = i; j < D.length; j++ ) { if( D[i] < D[j] ) { temp1 = D[i]; D[i] = D[j]; D[j] = temp1; temp2 = Vt[i]; Vt[i] = Vt[j]; Vt[j] = temp2; } } } Bt = jStat.transpose( B ); for ( i = 0; i < m; i++ ) { Y[i] = []; for ( j = 0; j < Bt.length; j++ ) { Y[i][j] = jStat.dot( [Vt[i]], [Bt[j]] ); } } return [X, D, Vt, Y]; } }); })( this.jStat, Math ); ================================================ FILE: js/libraries/milkbox.js ================================================ /* Milkbox v3.0.2 - required: mootools.js v1.3 core + more (see the relative js file for details about used modules) by Luca Reghellin (http://www.reghellin.com) September 2011, MIT-style license. Inspiration Lokesh Dhakar (http://www.lokeshdhakar.com/projects/lightbox2/) AND OF COURSE, SPECIAL THANKS TO THE MOOTOOLS DEVELOPERS AND THE OTHER DEVELOPERS HELPING ALL AROUND THE WORLD */ //Class: Milkbox (singleton) (function(){ var milkbox_singleton = null; this.Milkbox = new Class({ Implements:[Options,Events], options:{//set all the options here overlayOpacity:0.7, marginTop:50, initialWidth:250, initialHeight:250, fileboxBorderWidth:'0px', fileboxBorderColor:'#000000', fileboxPadding:'0px', resizeDuration:.5, resizeTransition:'sine:in:out',/*function (ex. Transitions.Sine.easeIn) or string (ex. 'bounce:out')*/ autoPlay:false, autoPlayDelay:7, removeTitle:true, autoSize:true, autoSizeMaxHeight:0,//only if autoSize==true centered:false, imageOfText:'of', onXmlGalleries:function(){}, onClosed:function(){}, onFileReady:function(){} }, initialize: function(options){ if (milkbox_singleton) return milkbox_singleton; milkbox_singleton = this; this.setOptions(options); this.autoPlayBkup = { autoPlayDelay:this.options.autoPlayDelay, autoPlay:this.options.autoPlay }; this.fullOptionsBkup = {}; this.galleries = []; this.formElements = []; this.activated; this.busy = false; this.paused = false; this.closed = true; this.intId; this.loadCheckerId; this.externalGalleries = []; this.singlePageLinkId = 0; this.currentIndex; this.currentGallery; this.fileReady; this.loadedImages = []; this.currentFile; this.options_bkup; this.display; this.getPageGalleries(); if(this.galleries.length != 0){ this.prepare(true); } }, prepare:function(checkForm){ if(checkForm){ this.checkFormElements(); } this.prepareHTML(); this.prepareEventListeners(); this.activated = true; }, //utility open:function(gallery,index){ var i; if(!this.activated){ this.prepare(true); } var g = (instanceOf(gallery,MilkboxGallery)) ? gallery : this.getGallery(gallery); if(!g) return false; // [i_a] when 'index' is not an number, it may be a element reference or string: resolve such indexes too if (typeOf(index) !== 'number') { i = g.get_index_of(index); if(i !== -1){ index = i; } } i = parseInt(index, 10); if(isNaN(i)){ i = 0; } this.closed = false; var item = g.get_item(i); if(!item) return false; this.currentGallery = g; this.currentIndex = i; this.hideFormElements(); this.display.set_mode(this.currentGallery.type); this.display.appear(); if(this.options.autoPlay || g.options.autoplay){ this.startAutoPlay(true); } this.loadFile(item,this.getPreloads()); return true; }, //utility close:function(hideDisplay){ if(hideDisplay){ this.display.disappear(); } this.showFormElements(); this.pauseAutoPlay(); this.stopLoadingCheck(); this.currentGallery = null; this.currentIndex = null; this.currentFile = null; this.busy = false; this.paused = false; this.fileReady = false; this.closed = true; this.fireEvent('close'); }, startAutoPlay:function(opening){ var d = this.currentGallery.options.autoplay_delay || this.options.autoPlayDelay; if(d < this.options.resizeDuration*2){ d = this.options.resizeDuration*2 }; var f = function(){ this.removeEvent('fileReady',f); this.intId = this.navAux.periodical(d*1000,this,[null,'next']); } if(opening){ this.addEvent('fileReady',f); } else { this.intId = this.navAux.periodical(d*1000,this,[null,'next']); } this.paused = false; }, pauseAutoPlay:function(){ if(this.intId){ clearInterval(this.intId); this.intId = null; } this.paused = true; }, //utility //list:Array of objects or an object > [ { gallery:'gall1', autoplay:true, delay:6 } ] //to permanently define autoplay options for any gallery setAutoPlay:function(list){ var l = (typeOf(list) == 'object') ? [list] : list; l.each(function(item){ var g = this.getGallery(item.gallery); if(!g){ return; } var a = (item.autoplay == true) ? item.autoplay : false; var d = (item.delay && a) ? item.delay : this.options.autoPlayDelay; g.setOptions({ autoplay:a, autoplay_delay:d }).refresh(); },this); }, //utility //{href:'file1.jpg',size:'width:900,height:100', title:'text'} //show a file on the fly without gallery functionalities openWithFile:function(file, options){ if(!this.activated){ this.prepare(); } if(options){ this.refreshDisplay(options,true);//set custom options } var g = new MilkboxGallery([file],{ remove_title:this.options.removeTitle }); this.open(g,0); }, getPreloads:function(){ var items = this.currentGallery.items; var index = this.currentIndex; if(items.length == 1) return null; var next = (index != items.length-1) ? items[index+1] : items[0]; var prev = (index != 0) ? items[index-1] : items[items.length-1]; var preloads = (prev == next) ? [prev] : [prev,next]; //if gallery.length == 2, then prev == next return preloads; }, //LOADING loadFile:function(fileObj,preloads){ this.fileReady = false; this.display.clear_content(); this.display.hide_bottom(); if(this.checkFileType(fileObj,'swf')){ this.loadSwf(fileObj); } else if (this.checkFileType(fileObj,'html')){ this.loadHtml(fileObj); } else {//filetype:image this.loadImage(fileObj); } if(!this.checkFileType(fileObj,'swf')) this.startLoadingCheck(); if(preloads){ this.preloadFiles(preloads); } }, //to prevent the loader to show if the file is cached startLoadingCheck:function(){ var t = 0; if (!this.loadCheckerId) { this.loadCheckerId = (function(){ t+=1; if(t > 5){ if (this.loadCheckerId) { // only show the loader when the timer has not been cleared yet! this.display.show_loader(); } this.stopLoadingCheck(); } }).periodical(100,this); }//end if }, stopLoadingCheck:function(){ clearInterval(this.loadCheckerId); }, preloadFiles:function(preloads){ preloads.each(function(fileObj,index){ if(!this.checkFileType(fileObj,"swf") && !this.checkFileType(fileObj,"html")){ this.preloadImage(fileObj.href); } },this); }, preloadImage:function(file){ if(!this.loadedImages.contains(file)){ var imageAsset = new Asset.image(file, { onLoad:function(){ this.loadedImages.push(file); }.bind(this) }); } }, loadImage:function(fileObj){ var file = fileObj.href; var imageAsset = new Asset.image(file, { onLoad:function(img){ if(!this.loadedImages.contains(file)){ this.loadedImages.push(file); };//see next/prev events this.loadComplete(img,fileObj.caption); }.bind(this) }); }, loadSwf:function(fileObj){ var swfObj = new Swiff(fileObj.href,{ width:fileObj.size.width, height:fileObj.size.height, vars:fileObj.vars, params:{ wMode:'opaque', swLiveConnect:'false' } }); this.loadComplete($(swfObj),fileObj.caption); }, loadHtml:function(fileObj){ var query = (fileObj.vars ? '?' + Object.toQueryString(fileObj.vars) : ''); var iFrame = new Element('iframe',{ 'src':fileObj.href+query, 'frameborder':0,//for IE... styles:{ 'border':'none' } }); if(fileObj.size){ iFrame.set({ 'width':fileObj.size.width, 'height':fileObj.size.height }); } this.loadComplete(iFrame,fileObj.caption); },//loadHtml //LOAD COMPLETE ********// loadComplete:function(file,caption){ if(this.closed) return;//if an onload event were still running this.fileReady = true;//the file is loaded and ready to be showed (see next_prev_aux()) this.stopLoadingCheck(); this.currentFile = file; var timer; timer = (function(){ if(this.display.ready){ if (this.currentGallery.items != null) { this.display.show_file(file,caption,this.currentIndex+1,this.currentGallery.items.length); } clearInterval(timer); }//end if }).periodical(100,this); this.fireEvent('fileReady'); },//end loadComplete checkFileType:function(file,type){ var href = (typeOf(file) != 'string') ? file.href : file; var regexp = new RegExp("\.("+type+")$","i"); return href.split('?')[0].test(regexp); }, //GALLERIES getPageGalleries:function(){ var names = []; var links = $$('a[data-milkbox]'); //check names links.each(function(link){ var name = link.get('data-milkbox'); if(name == 'single'){ this.galleries.push(new MilkboxGallery(link,{name:'single'+this.singlePageLinkId++, remove_title:this.options.removeTitle })); } else if(!names.contains(name)){ names.push(name); } },this); names.each(function(name){ this.galleries.push(new MilkboxGallery($$('a[data-milkbox='+name+']'),{ name:name, remove_title:this.options.removeTitle })); },this); //set default autoplay // override with setAutoPlay if(this.options.autoPlay){ this.galleries.each(function(g){ g.setOptions({autoplay:this.options.autoPlay,autoplay_delay:this.options.autoPlayDelay}); }); } },//getPageGalleries reloadPageGalleries:function(){ //reload page galleries this.removePageGalleryEvents(); this.galleries = this.galleries.filter(function(gallery){ if(!gallery.external) gallery.clear(); return gallery.external; }); this.getPageGalleries(); this.addPageGalleriesEvents(); if(!this.activated){ this.prepare(true); } },//end reloadPageGalleries //list: optional. Can be a single string/object or an array of strings/objects resetExternalGalleries:function(list){ this.galleries = this.galleries.filter(function(gallery){ if(gallery.external) gallery.clear(); return !gallery.external; }); if(!list) return; var array = (typeOf(list) == 'array') ? list : [list]; array.each(function(data){ this.addGalleries(data); }, this); }, //utility addGalleries:function(data){ if(!this.activated){ this.prepare(true); } if (typeOf(data) == 'string' && data.split('?')[0].test(/\.(xml)$/i)) { this.loadXml(data); } else {//array or object this.setObjectGalleries(data); } if(!this.activated){ this.prepare(true); } }, loadXml:function(xmlfile){ var r = new Request({ method:'get', autoCancel:true, url:xmlfile, onRequest:function(){ //placeholder }.bind(this), onSuccess:function(text,xml){ var t = text.replace(/(/gi,"$1>"); this.setXmlGalleries(new Element('div',{ html:t })); }.bind(this), onFailure:function(transport){ alert('Milkbox :: loadXml: XML file path error or local Ajax test: please test xml galleries on-line'); } }).send(); }, setXmlGalleries:function(container){ var c = container; var xml_galleries = c.getElements('.gallery'); var links; var aplist = []; xml_galleries.each(function(xml_gallery,i){ var options = { name:xml_gallery.getProperty('name'), autoplay:Boolean(xml_gallery.getProperty('autoplay')), autoplay_delay:Number(xml_gallery.getProperty('autoplay_delay')) } var links = xml_gallery.getChildren('a').map(function(tag){ return { href:tag.href, size:tag.get('data-milkbox-size'), title:tag.get('title') } },this); this.galleries.push(new MilkboxGallery(links,options)); },this); this.fireEvent('xmlGalleries'); },//end setXmlGalleries //[{ name:'gall1', autoplay:true, autoplay_delay:7, files:[{href:'file1.jpg',size:'width:900,height:100', title:'text'},{href:'file2.html',size:'w:800,h:200', title:'text'}] },{...},{...}] setObjectGalleries:function(data){ var array = (typeOf(data) == 'array') ? data : [data]; array.each(function(newobj){ var options = { name:newobj.name, autoplay:newobj.autoplay, autoplay_delay:newobj.autoplay_delay } this.galleries.push(new MilkboxGallery(newobj.files,options)); },this); }, //utility getGallery:function(name){ var g = this.galleries.filter(function(gallery){ return gallery.name == name; },this); return g[0] || null; }, //HTML prepareHTML:function(){ this.display = new MilkboxDisplay({ initialWidth:this.options.initialWidth, initialHeight:this.options.initialHeight, overlayOpacity:this.options.overlayOpacity, marginTop:this.options.marginTop, fileboxBorderWidth:this.options.fileboxBorderWidth, fileboxBorderColor:this.options.fileboxBorderColor, fileboxPadding:this.options.fileboxPadding, resizeDuration:this.options.resizeDuration, resizeTransition:this.options.resizeTransition, centered:this.options.centered, autoSize:this.options.autoSize, autoSizeMaxHeight:this.options.autoSizeMaxHeight, imageOfText:this.options.imageOfText }); }, refreshDisplay:function(options,keepBackup){ if(!this.activated) return; var options_bkup = this.display.options;//save original options var new_options = Object.merge({},options_bkup,options); if(this.display){ this.display.clear() } this.display = new MilkboxDisplay(new_options); this.addDisplayEvents(); if(keepBackup){ this.options_bkup = options_bkup;//restored in close(); } else { this.options_bkup = null; } }, checkFormElements:function(){ this.formElements = $$('select, textarea'); if(this.formElements.length == 0) return; this.formElements = this.formElements.map(function(elem){ elem.store('visibility',elem.getStyle('visibility')); elem.store('display',elem.getStyle('display')); return elem; }); }, hideFormElements:function(){ if(this.formElements.length == 0) return; this.formElements.each(function(elem){ elem.setStyle('display','none'); }); }, showFormElements:function(){ if(this.formElements.length == 0) return; this.formElements.each(function(elem){ elem.setStyle('visibility',elem.retrieve('visibility')); elem.setStyle('display',elem.retrieve('display')); }) }, //EVENTS addPageGalleriesEvents:function(){ var pageGalleries = this.galleries.filter(function(gallery){ return !gallery.external }); pageGalleries.each(function(gallery){ gallery.items.each(function(item){ item.element.addEvent('click',function(e){ e.preventDefault(); this.open(gallery.name,gallery.get_index_of(item)); }.bind(this)); },this); },this); }, removePageGalleryEvents:function(){ var pageGalleries = this.galleries.filter(function(gallery){ return !gallery.external }); pageGalleries.each(function(gallery){ gallery.items.each(function(item){ item.element.removeEvents('click'); }); }); }, addDisplayEvents:function(){ this.display.addEvent('nextClick',function(){ this.navAux(true,'next'); }.bind(this)); this.display.addEvent('prevClick',function(){ this.navAux(true,'prev'); }.bind(this)); this.display.addEvent('playPauseClick',function(){ if(this.paused){ this.startAutoPlay(); } else { this.pauseAutoPlay(); } this.display.set_paused(this.paused); }.bind(this)); this.display.addEvent('disappear',function(){ if(this.options_bkup){ this.refreshDisplay(this.options_bkup); } this.close(false); }.bind(this)); this.display.addEvent('resizeComplete',function(){ this.busy = false;//see navAux }.bind(this)); }, prepareEventListeners:function(){ this.addPageGalleriesEvents(); this.addDisplayEvents(); //reset overlay height and position onResize window.addEvent('resize',function(){ if(this.display.ready){ this.display.resetOverlaySize(); } }.bind(this)); //keyboard next/prev/close window.document.addEvent('keydown',function(e){ if(this.busy == true || this.closed){ return; } if(e.key == 'right' || e.key == 'left' || e.key == 'space'){ e.preventDefault(); } if(this.display.mode != 'single'){ if(e.key == 'right' || e.key == 'space'){ this.navAux(e,'next'); } else if(e.key == 'left'){ this.navAux(e,'prev'); } } if(e.key == 'esc'){ this.display.disappear(); } }.bind(this)); }, navAux:function(e,direction){ if(e){//called from a button/key event this.pauseAutoPlay(); } else {//called from autoplay if(this.busy || !this.fileReady){ return; }//prevent autoplay() } this.busy = true; //for keyboard and autoplay var i, _i; if(direction == "next"){ i= (this.currentIndex != this.currentGallery.items.length-1) ? this.currentIndex += 1 : this.currentIndex = 0; _i= (this.currentIndex != this.currentGallery.items.length-1) ? this.currentIndex + 1 : 0; } else { i= (this.currentIndex != 0) ? this.currentIndex -= 1 : this.currentIndex = this.currentGallery.items.length-1; _i= (this.currentIndex != 0) ? this.currentIndex - 1 : this.currentGallery.items.length-1; }; this.loadFile(this.currentGallery.get_item(i),[this.currentGallery.get_item(_i)]); } });//END MILKBOX CLASS CODE })();//END SINGLETON CODE var MilkboxDisplay= new Class({ Implements:[Options,Events], options:{ initialWidth:100, initialHeight:100, overlayOpacity:1, marginTop:0, fileboxBorderWidth:'0px', fileboxBorderColor:'#000000', fileboxPadding:'0px', resizeDuration:.5, resizeTransition:'sine:in:out', centered:false, autoSize:false, autoSizeMaxHeight:0, imageOfText:'of', onNextClick:function(){}, onPrevClick:function(){}, onPlayPause:function(){}, onDisappear:function(){}, onResizeComplete:function(){} }, initialize: function(options){ this.setOptions(options); this.overlay; this.mainbox; this.filebox; this.bottom; this.controls; this.caption; this.close; this.next; this.prev; this.playpause; this.paused = false; this.count; this.mode = 'standard'; this.ready = false;//after overlay and mainbox become visible == true this.overlay_show_fx; this.overlay_hide_fx; this.mainbox_show_fx; this.mainbox_hide_fx; this.mainbox_resize_fx; this.current_file = null; this.build_html(); this.prepare_effects(); this.prepare_events(); },//end init build_html:function(){ this.overlay = new Element('div', { 'id':'mbox-overlay', 'styles':{ 'visibility':'visible', 'position':'fixed', 'display':'none', 'left':0, 'width':'100%', 'opacity':0, 'height':0, 'overflow':'hidden', 'margin':0, 'padding':0 } }).inject($(document.body)); this.mainbox = new Element('div', { 'id':'mbox-mainbox', 'styles': { 'position':(this.options.centered) ? 'fixed' : 'absolute', 'overflow':'hidden', 'display':'none', 'z-index':50001,//overlay z-index (see css) + 1 'width':this.options.initialWidth, 'height':this.options.initialHeight, 'opacity':0, 'margin':0, 'left':'50%', 'marginLeft':-(this.options.initialWidth/2), 'marginTop':(this.options.centered) ? -(this.options.initialHeight/2) : '', 'top':(this.options.centered) ? '50%' : '' } }).inject($(document.body)); this.filebox = new Element('div',{ 'id':'mbox-filebox', 'styles':{ 'border-style':'solid', 'border-width':this.options.fileboxBorderWidth, 'border-color':this.options.fileboxBorderColor, 'padding':this.options.fileboxPadding, 'opacity':0 } }).inject(this.mainbox); this.bottom = new Element('div#mbox-bottom').setStyle('visibility','hidden').inject(this.mainbox); this.controls = new Element('div#mbox-controls'); this.caption = new Element('div#mbox-caption',{'html':'test'}).setStyle('display','none'); this.bottom.adopt(new Element('div.mbox-reset'),this.controls, this.caption, new Element('div.mbox-reset')); this.close = new Element('div#mbox-close'); this.next = new Element('div#mbox-next'); this.prev = new Element('div#mbox-prev'); this.playpause = new Element('div#mbox-playpause'); this.count = new Element('div#mbox-count'); $$(this.next, this.prev, this.close, this.playpause).setStyles({ 'outline':'none', 'cursor':'pointer' }); this.controls.adopt(new Element('div.mbox-reset'), this.close, this.next, this.prev, this.playpause, new Element('div.mbox-reset'), this.count); }, prepare_effects:function(){ this.overlay_show_fx = new Fx.Tween(this.overlay,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){ this.element.setStyles({ 'top':-window.getScroll().y, 'height':window.getScrollSize().y+window.getScroll().y, 'display':'block' }); }, onComplete:function(){ this.mainbox_show_fx.start(1); }.bind(this) }); this.overlay_hide_fx = new Fx.Tween(this.overlay,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){}, onComplete:function(){ this.overlay.setStyle('display','none'); this.fireEvent('disappear'); }.bind(this) }); this.mainbox_show_fx = new Fx.Tween(this.mainbox,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){ this.mainbox.setStyle('display','block'); }.bind(this), onComplete:function(){ this.ready = true; }.bind(this) }); this.mainbox_hide_fx = new Fx.Tween(this.mainbox,{ duration:'short', link:'cancel', property:'opacity', onStart:function(){ this.ready = false; }.bind(this), onComplete:function(){ this.overlay.setStyle('display','none'); }.bind(this) }); this.mainbox_resize_fx = new Fx.Morph(this.mainbox,{ duration:this.options.resizeDuration*1000, transition:this.options.resizeTransition, link:'cancel', onStart:function(){ this.filebox.setStyle('opacity',0) }.bind(this), onComplete:function(){ this.show_bottom(); this.filebox.setStyle('height',this.current_file.height+'px'); this.filebox.grab(this.current_file).tween('opacity',1); this.fireEvent('resizeComplete'); }.bind(this) }); this.filebox.set('tween',{ duration:'short', link:'chain' }); },//end prepare_effects prepare_events:function(){ $$(this.overlay,this.close).addEvent('click', function(){ this.disappear(); }.bind(this)); this.prev.addEvent('click',function(){ this.fireEvent('prevClick') }.bind(this)); this.next.addEvent('click',function(){ this.fireEvent('nextClick') }.bind(this)); this.playpause.addEvent('click',function(){ this.fireEvent('playPauseClick') }.bind(this) ); }, show_file:function(file,caption,index,length){ this.hide_loader(); if(file.match && file.match('img') && (this.options.autoSize || this.options.centered)){ var file = this.get_resized_image(file); }; var file_size = { w:file.width.toInt(), h:file.height.toInt() }; if(!file_size.w || !file_size.h){ alert('Milkbox error: you must pass size values if the file is swf or html or a free file (openWithFile)'); return; }//data-milkbox-size not passed file_size = Object.map(file_size,function(value){ return value.toInt(); }); this.caption.innerHTML = (caption) ? caption : ''; this.update_count(index,length); var filebox_addsize = this.filebox.getStyle('border-width').toInt()*2+this.filebox.getStyle('padding').toInt()*2; var final_w = file_size.w+filebox_addsize; //so now I can predict the caption height var caption_adds = this.caption.getStyles('paddingRight','marginRight'); this.caption.setStyle('width',final_w-caption_adds.paddingRight.toInt()-caption_adds.marginRight.toInt()); $$(this.bottom,this.controls).setStyle('height',Math.max(this.caption.getDimensions().height,this.controls.getComputedSize().totalHeight)); var mainbox_size = this.mainbox.getComputedSize(); var final_h = file_size.h+filebox_addsize+this.bottom.getComputedSize().totalHeight; var target_size = { w:final_w, h:final_h, total_w:final_w+mainbox_size.totalWidth-mainbox_size.width, total_h:final_h+mainbox_size.totalHeight-mainbox_size.height } this.current_file = file; this.resize_to(target_size); },//show_file //image:, maxsize:{ w,h } get_resized_image:function(image){ var max_size; var ratio; var check; var i_size = { w:image.get('width').toInt(), h:image.get('height').toInt() }; //cut out some pixels to make it better var w_size = window.getSize(); var max_size = { w:w_size.x-60, h:w_size.y-68-this.options.marginTop*2 }; var max_dim = Math.max( max_size.h, max_size.w ); if(max_dim == max_size.w){ ratio = max_dim/i_size.w; check = 'h'; } else { ratio = max_dim/i_size.h; check = 'w'; } ratio = (ratio <= 1) ? ratio : 1; i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); ratio = (max_size[check]/i_size[check] <= 1) ? max_size[check]/i_size[check] : 1; i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); if(this.options.autoSizeMaxHeight > 0){ ratio = (this.options.autoSizeMaxHeight/i_size.height < 1) ? this.options.autoSizeMaxHeight/i_size.height : 1; i_size = Object.map(i_size,function(value){ return Math.floor(value*ratio); }); } image.set({ 'width':i_size.w, 'height':i_size.h }); return image; },//get_resized_image resize_to:function(target_size){ this.mainbox_resize_fx.start({ 'width':target_size.w, 'height':target_size.h, 'marginLeft':-(target_size.total_w/2).round(), 'marginTop':(this.options.centered) ? -(target_size.total_h/2).round() : '' }); }, show_loader:function(){ this.mainbox.addClass('mbox-loading'); }, hide_loader:function(){ this.mainbox.removeClass('mbox-loading'); }, clear_content:function(){ this.filebox.empty(); this.caption.empty(); this.count.empty(); $$(this.bottom,this.controls).setStyle('height',''); }, hide_bottom:function(){ this.caption.setStyle('display','none'); this.bottom.setStyle('visibility','hidden'); }, show_bottom:function(){ this.caption.setStyle('display','block'); this.bottom.setStyle('visibility','visible'); }, appear:function(){ if(!this.options.centered){ this.mainbox.setStyle('top',window.getScroll().y+this.options.marginTop); } this.overlay_show_fx.start(this.options.overlayOpacity); }, disappear:function(){ this.cancel_effects(); this.current_file = null; this.ready = false; this.mode = 'standard'; $$(this.prev, this.next, this.playpause, this.count).setStyle('display','none'); this.playpause.setStyle('backgroundPosition','0 0'); this.count.empty(); this.caption.setStyle('display','none').empty(); this.bottom.setStyle('visibility','hidden'); //TODO anche opacity a 0 se si usa un tween per il file this.filebox.setStyle('height','').empty(); this.mainbox.setStyles({ 'opacity':0, 'display':'none', 'width':this.options.initialWidth, 'height':this.options.initialHeight, 'marginLeft':-(this.options.initialWidth/2), 'marginTop':(this.options.centered) ? -(this.options.initialHeight/2) : '', 'top':(this.options.centered) ? '50%' : '' }); this.filebox.setStyle('opacity',0); this.overlay_hide_fx.start(0); //this.fireEvent('disappear'); },//end disappear cancel_effects:function(){ [this.mainbox_resize_fx, this.mainbox_hide_fx, this.mainbox_show_fx, this.overlay_hide_fx, this.overlay_show_fx ].each(function(fx){ fx.cancel(); }); }, set_mode:function(gallery_type){ this.mode = gallery_type; var close_w = this.close.getComputedSize().width; var prev_w = this.prev.getComputedSize().width; var next_w = this.next.getComputedSize().width; var playpause_w = this.playpause.getComputedSize().width; var offset = this.mainbox.getStyle('border-right-width').toInt();//for design purposes switch(gallery_type){ case 'autoplay': $$(this.playpause,this.close,this.next,this.prev,this.count).setStyle('display','block'); this.controls.setStyle('width',close_w+prev_w+next_w+playpause_w+offset); break; case 'single': $$(this.playpause,this.next,this.prev,this.count).setStyle('display','none'); this.controls.setStyle('width',close_w+offset); break; case 'standard': $$(this.close,this.next,this.prev,this.count).setStyle('display','block'); this.playpause.setStyle('display','none'); this.controls.setStyle('width',close_w+prev_w+next_w+offset); break; default: return; } this.caption.setStyle('margin-right',this.controls.getComputedSize().totalWidth); },//end set_mode set_paused:function(paused){ this.paused = paused; var pos = (this.paused) ? '0 -66px' : ''; this.playpause.setStyle('background-position',pos); }, update_count:function(index,length){ this.count.set('text',index+' '+this.options.imageOfText+' '+length); }, resetOverlaySize:function(){ if(this.overlay.getStyle('opacity') == 0){ return; };//resize only if visible var h = window.getSize().y; this.overlay.setStyles({ 'height':h }); }, clear:function(){ this.overlay.destroy(); this.mainbox.destroy(); } });//END //Class: MilkboxGallery //args: source,options // *source: element, elements, array // *options: name, autoplay, autoplay_delay var MilkboxGallery = new Class({ Implements:[Options,Events], options:{//set all the options here name:null, autoplay:null, autoplay_delay:null, remove_title:true }, initialize:function(source,options){ this.setOptions(options); this.source = source; this.external = false; this.items = null; this.name = this.options.name; this.type = null;//'autoplay','standard','single' this.prepare_gallery(); this.prepare_elements(); }, prepare_gallery:function(){ switch(typeOf(this.source)){ case 'element'://single if(this.check_extension(this.source.href)){ this.items = [this.source]; } else{ alert('Wrong file extension: '+this.source.href); } break; case 'elements'://html this.items = this.source.filter(function(link){ return this.check_extension(link.href); },this); break; case 'array'://xml, array this.items = this.source.filter(function(link){ return this.check_extension(link.href); },this); this.external = true; break; default: return; } if(this.items.length == 0){ alert('Warning: gallery '+this.name+' is empty'); } }, //turns everything into an object prepare_elements:function(){ this.items = this.items.map(function(item){ var splitted_url = item.href.split('?'); var output = {}; output.element = (typeOf(item) == 'element') ? item : null; output.href = splitted_url[0]; output.vars = (splitted_url[1]) ? splitted_url[1].parseQueryString() : null; output.size = null; output.caption = (output.element) ? output.element.get('title') : item.title; if(this.options.remove_title && output.element){ output.element.removeProperty('title') } var size_string = (output.element) ? output.element.get('data-milkbox-size') : item.size; if(size_string){ output.size = Object.map(this.get_item_props(size_string),function(value,key){ return value.toInt(); }); } return output; },this); if(this.items.length == 0) return; this.type = (this.items.length == 1) ? 'single' : (this.options.autoplay) ? 'autoplay' : 'standard'; }, check_extension:function(string){ return string.split('?')[0].test(/\.(gif|jpg|jpeg|png|swf|html)$/i); }, get_index_of:function(item){ var index = (typeOf(item) == 'string') ? this.items.indexOf(this.items.filter(function(i){ return i.href === item; })[0]) : this.items.indexOf(item); return this.items.indexOf(item); }, get_item:function(index){ return this.items[index]; }, get_item_props:function(prop_string){ var props = {}; var s = prop_string.split(',').each(function(p,i){ var clean = p.trim().split(':'); props[clean[0].trim()] = clean[1].trim(); },this); return props; }, refresh:function(){ this.type = (this.items.length == 1) ? 'single' : (this.options.autoplay) ? 'autoplay' : 'standard'; }, clear:function(){ this.source = null; this.items = null; } });//end MilkboxGallery //Creating Milkbox instance: you can comment this code and instantiate Milkbox somewhere else instead. /* window.addEvent('domready', function(){ //milkbox = new Milkbox({overlayOpacity:1, fileboxBorderWidth:'10px', fileboxBorderColor:'#ff0000', fileboxPadding:'20px', centered:true}); milkbox = new Milkbox({ centered:true }); }); */ ================================================ FILE: js/libraries/mootools-more-1.4.0.1.js ================================================ // MooTools: the javascript framework. // Load this file's selection again by visiting: http://mootools.net/more/065f2f092ece4e3b32bb5214464cf926 // Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Measure More/Element.Pin More/Element.Position More/Element.Shortcuts More/Form.Request More/Form.Request.Append More/Form.Validator More/Form.Validator.Inline More/Form.Validator.Extras More/OverText More/Fx.Elements More/Fx.Accordion More/Fx.Move More/Fx.Reveal More/Fx.Scroll More/Fx.Slide More/Fx.SmoothScroll More/Fx.Sort More/Drag More/Drag.Move More/Slider More/Sortables More/Request.JSONP More/Request.Queue More/Request.Periodical More/Assets More/Color More/Group More/Hash.Cookie More/IframeShim More/Table More/HtmlTable More/HtmlTable.Zebra More/HtmlTable.Sort More/HtmlTable.Select More/Keyboard More/Keyboard.Extras More/Mask More/Scroller More/Tips More/Spinner More/Locale More/Locale.Set.From More/Locale.en-US.Date More/Locale.en-US.Form.Validator More/Locale.en-US.Number More/Locale.ar.Date More/Locale.ar.Form.Validator More/Locale.ca-CA.Date More/Locale.ca-CA.Form.Validator More/Locale.cs-CZ.Date More/Locale.cs-CZ.Form.Validator More/Locale.da-DK.Date More/Locale.da-DK.Form.Validator More/Locale.de-CH.Date More/Locale.de-CH.Form.Validator More/Locale.de-DE.Date More/Locale.de-DE.Form.Validator More/Locale.de-DE.Number More/Locale.en-GB.Date More/Locale.es-AR.Date More/Locale.es-AR.Form.Validator More/Locale.es-ES.Date More/Locale.es-ES.Form.Validator More/Locale.et-EE.Date More/Locale.et-EE.Form.Validator More/Locale.EU.Number More/Locale.fa.Date More/Locale.fa.Form.Validator More/Locale.fi-FI.Date More/Locale.fi-FI.Form.Validator More/Locale.fi-FI.Number More/Locale.fr-FR.Date More/Locale.fr-FR.Form.Validator More/Locale.fr-FR.Number More/Locale.he-IL.Date More/Locale.he-IL.Form.Validator More/Locale.he-IL.Number More/Locale.hu-HU.Date More/Locale.hu-HU.Form.Validator More/Locale.it-IT.Date More/Locale.it-IT.Form.Validator More/Locale.ja-JP.Date More/Locale.ja-JP.Form.Validator More/Locale.ja-JP.Number More/Locale.nl-NL.Date More/Locale.nl-NL.Form.Validator More/Locale.nl-NL.Number More/Locale.no-NO.Date More/Locale.no-NO.Form.Validator More/Locale.pl-PL.Date More/Locale.pl-PL.Form.Validator More/Locale.pt-BR.Date More/Locale.pt-BR.Form.Validator More/Locale.pt-PT.Date More/Locale.pt-PT.Form.Validator More/Locale.ru-RU-unicode.Date More/Locale.ru-RU-unicode.Form.Validator More/Locale.si-SI.Date More/Locale.si-SI.Form.Validator More/Locale.sv-SE.Date More/Locale.sv-SE.Form.Validator More/Locale.uk-UA.Date More/Locale.uk-UA.Form.Validator More/Locale.zh-CH.Date More/Locale.zh-CH.Form.Validator /* --- copyrights: - [MooTools](http://mootools.net) licenses: - [MIT License](http://mootools.net/license.txt) ... */ MooTools.More={version:"1.4.0.1",build:"a4244edf2aa97ac8a196fc96082dd35af1abab87"};(function(){Events.Pseudos=function(h,e,f){var d="_monitorEvents:";var c=function(i){return{store:i.store?function(j,k){i.store(d+j,k); }:function(j,k){(i._monitorEvents||(i._monitorEvents={}))[j]=k;},retrieve:i.retrieve?function(j,k){return i.retrieve(d+j,k);}:function(j,k){if(!i._monitorEvents){return k; }return i._monitorEvents[j]||k;}};};var g=function(k){if(k.indexOf(":")==-1||!h){return null;}var j=Slick.parse(k).expressions[0][0],p=j.pseudos,i=p.length,o=[]; while(i--){var n=p[i].key,m=h[n];if(m!=null){o.push({event:j.tag,value:p[i].value,pseudo:n,original:k,listener:m});}}return o.length?o:null;};return{addEvent:function(m,p,j){var n=g(m); if(!n){return e.call(this,m,p,j);}var k=c(this),r=k.retrieve(m,[]),i=n[0].event,l=Array.slice(arguments,2),o=p,q=this;n.each(function(s){var t=s.listener,u=o; if(t==false){i+=":"+s.pseudo+"("+s.value+")";}else{o=function(){t.call(q,s,u,arguments,o);};}});r.include({type:i,event:p,monitor:o});k.store(m,r);if(m!=i){e.apply(this,[m,p].concat(l)); }return e.apply(this,[i,o].concat(l));},removeEvent:function(m,l){var k=g(m);if(!k){return f.call(this,m,l);}var n=c(this),j=n.retrieve(m);if(!j){return this; }var i=Array.slice(arguments,2);f.apply(this,[m,l].concat(i));j.each(function(o,p){if(!l||o.event==l){f.apply(this,[o.type,o.monitor].concat(i));}delete j[p]; },this);n.store(m,j);return this;}};};var b={once:function(e,f,d,c){f.apply(this,d);this.removeEvent(e.event,c).removeEvent(e.original,f);},throttle:function(d,e,c){if(!e._throttled){e.apply(this,c); e._throttled=setTimeout(function(){e._throttled=false;},d.value||250);}},pause:function(d,e,c){clearTimeout(e._pause);e._pause=e.delay(d.value||250,this,c); }};Events.definePseudo=function(c,d){b[c]=d;return this;};Events.lookupPseudo=function(c){return b[c];};var a=Events.prototype;Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent)); ["Request","Fx"].each(function(c){if(this[c]){this[c].implement(Events.prototype);}});})();Class.refactor=function(b,a){Object.each(a,function(e,d){var c=b.prototype[d]; c=(c&&c.$origin)||c||function(){};b.implement(d,(typeof e=="function")?function(){var f=this.previous;this.previous=c;var g=e.apply(this,arguments);this.previous=f; return g;}:e);});return b;};Class.Mutators.Binds=function(a){if(!this.prototype.initialize){this.implement("initialize",function(){});}return Array.from(a).concat(this.prototype.Binds||[]); };Class.Mutators.initialize=function(a){return function(){Array.from(this.Binds).each(function(b){var c=this[b];if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments); };};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property);if(a&&!this.occluded){return(this.occluded=a); }this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this); return this;}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);}if(this.Element&&Element.implement&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c); if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}})();(function(a){Array.implement({min:function(){return Math.min.apply(null,this); },max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var b=0,c=this.length; if(c){while(c--){b+=this[c];}}return b;},unique:function(){return[].combine(this);},shuffle:function(){for(var c=this.length;c&&--c;){var b=this[c],d=Math.floor(Math.random()*(c+1)); this[c]=this[d];this[d]=b;}return this;},reduce:function(d,e){for(var c=0,b=this.length;c3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)]; },lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"}); (function(){var a=this.Date;var f=a.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(s){a.Methods[s.toLowerCase()]=s; });var p=function(u,t,s){if(t==1){return u;}return u28){return 1;}if(y==0&&s<-2){x=new a(x).decrement("day",u); u=0;}w=new a(x.get("year"),0,1).get("day")||7;if(w>4){t=-7;}}else{w=new a(x.get("year"),0,1).get("day");}t+=x.get("dayofyear");t+=6-u;t+=(7+w-v)%7;return(t/7); },getOrdinal:function(s){return a.getMsg("ordinal",s||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3"); },getGMTOffset:function(){var s=this.get("timezoneOffset");return((s>0)?"-":"+")+p((s.abs()/60).floor(),2)+p(s%60,2);},setAMPM:function(s){s=s.toUpperCase(); var t=this.get("hr");if(t>11&&s=="AM"){return this.decrement("hour",12);}else{if(t<12&&s=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM"; },parse:function(s){this.set("time",a.parse(s));return this;},isValid:function(s){if(!s){s=this;}return typeOf(s)=="date"&&!isNaN(s.valueOf());},format:function(s){if(!this.isValid()){return"invalid date"; }if(!s){s="%x %X";}if(typeof s=="string"){s=g[s.toLowerCase()]||s;}if(typeof s=="function"){return s(this);}var t=this;return s.replace(/%([a-z%])/gi,function(v,u){switch(u){case"a":return a.getMsg("days_abbr")[t.get("day")]; case"A":return a.getMsg("days")[t.get("day")];case"b":return a.getMsg("months_abbr")[t.get("month")];case"B":return a.getMsg("months")[t.get("month")]; case"c":return t.format("%a %b %d %H:%M:%S %Y");case"d":return p(t.get("date"),2);case"e":return p(t.get("date"),2," ");case"H":return p(t.get("hr"),2); case"I":return p((t.get("hr")%12)||12,2);case"j":return p(t.get("dayofyear"),3);case"k":return p(t.get("hr"),2," ");case"l":return p((t.get("hr")%12)||12,2," "); case"L":return p(t.get("ms"),3);case"m":return p((t.get("mo")+1),2);case"M":return p(t.get("min"),2);case"o":return t.get("ordinal");case"p":return a.getMsg(t.get("ampm")); case"s":return Math.round(t/1000);case"S":return p(t.get("seconds"),2);case"T":return t.format("%H:%M:%S");case"U":return p(t.get("week"),2);case"w":return t.get("day"); case"x":return t.format(a.getMsg("shortDate"));case"X":return t.format(a.getMsg("shortTime"));case"y":return t.get("year").toString().substr(2);case"Y":return t.get("year"); case"z":return t.get("GMTOffset");case"Z":return t.get("Timezone");}return u;});},toISOString:function(){return this.format("iso8601");}}).alias({toJSON:"toISOString",compare:"diff",strftime:"format"}); var k=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var g={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M",rfc822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %Z"); },rfc2822:function(s){return k[s.get("day")]+s.format(", %d ")+h[s.get("month")]+s.format(" %Y %H:%M:%S %z");},iso8601:function(s){return(s.getUTCFullYear()+"-"+p(s.getUTCMonth()+1,2)+"-"+p(s.getUTCDate(),2)+"T"+p(s.getUTCHours(),2)+":"+p(s.getUTCMinutes(),2)+":"+p(s.getUTCSeconds(),2)+"."+p(s.getUTCMilliseconds(),3)+"Z"); }};var c=[],n=a.parse;var r=function(v,x,u){var t=-1,w=a.getMsg(v+"s");switch(typeOf(x)){case"object":t=w[x.get(v)];break;case"number":t=w[x];if(!t){throw new Error("Invalid "+v+" index: "+x); }break;case"string":var s=w.filter(function(y){return this.test(y);},new RegExp("^"+x,"i"));if(!s.length){throw new Error("Invalid "+v+" string");}if(s.length>1){throw new Error("Ambiguous "+v); }t=s[0];}return(u)?w.indexOf(t):t;};var i=1900,o=70;a.extend({getMsg:function(t,s){return Locale.get("Date."+t,s);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(t,s){var u=new a; return a.daysInMonth(t!=null?t:u.get("mo"),s!=null?s:u.get("year"))*86400000;},year:function(s){s=s||new a().get("year");return a.isLeapYear(s)?31622400000:31536000000; }},daysInMonth:function(t,s){return[31,a.isLeapYear(s)?29:28,31,30,31,30,31,31,30,31,30,31][t];},isLeapYear:function(s){return((s%4===0)&&(s%100!==0))||(s%400===0); },parse:function(v){var u=typeOf(v);if(u=="number"){return new a(v);}if(u!="string"){return v;}v=v.clean();if(!v.length){return null;}var s;c.some(function(w){var t=w.re.exec(v); return(t)?(s=w.handler(t)):false;});if(!(s&&s.isValid())){s=new a(n(v));if(!(s&&s.isValid())){s=new a(v.toInt());}}return s;},parseDay:function(s,t){return r("day",s,t); },parseMonth:function(t,s){return r("month",t,s);},parseUTC:function(t){var s=new a(t);var u=a.UTC(s.get("year"),s.get("mo"),s.get("date"),s.get("hr"),s.get("min"),s.get("sec"),s.get("ms")); return new a(u);},orderIndex:function(s){return a.getMsg("dateOrder").indexOf(s)+1;},defineFormat:function(s,t){g[s]=t;return this;},defineParser:function(s){c.push((s.re&&s.handler)?s:l(s)); return this;},defineParsers:function(){Array.flatten(arguments).each(a.defineParser);return this;},define2DigitYearStart:function(s){o=s%100;i=s-o;return this; }}).extend({defineFormats:a.defineFormat.overloadSetter()});var d=function(s){return new RegExp("(?:"+a.getMsg(s).map(function(t){return t.substr(0,3); }).join("|")+")[a-z]*");};var m=function(s){switch(s){case"T":return"%H:%M:%S";case"x":return((a.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?"; case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?";}return null;};var j={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,z:/Z|[+-]\d{2}(?::?\d{2})?/}; j.m=j.I;j.S=j.M;var e;var b=function(s){e=s;j.a=j.A=d("days");j.b=j.B=d("months");c.each(function(u,t){if(u.format){c[t]=l(u.format);}});};var l=function(u){if(!e){return{format:u}; }var s=[];var t=(u.source||u).replace(/%([a-z])/gi,function(w,v){return m(v)||w;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(w,v){var x=j[v]; if(!x){return v;}s.push(v);return"("+x.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:u,re:new RegExp("^"+t+"$","i"),handler:function(y){y=y.slice(1).associate(s); var v=new a().clearTime(),x=y.y||y.Y;if(x!=null){q.call(v,"y",x);}if("d" in y){q.call(v,"d",1);}if("m" in y||y.b||y.B){q.call(v,"m",1);}for(var w in y){q.call(v,w,y[w]); }return v;}};};var q=function(s,t){if(!t){return this;}switch(s){case"a":case"A":return this.set("day",a.parseDay(t,true));case"b":case"B":return this.set("mo",a.parseMonth(t,true)); case"d":return this.set("date",t);case"H":case"I":return this.set("hr",t);case"m":return this.set("mo",t-1);case"M":return this.set("min",t);case"p":return this.set("ampm",t.replace(/\./g,"")); case"S":return this.set("sec",t);case"s":return this.set("ms",("0."+t)*1000);case"w":return this.set("day",t);case"Y":return this.set("year",t);case"y":t=+t; if(t<100){t+=i+(t0.75*a){e=c;}break;}f/=a;e=c+"s";}f=f.round();return Date.getMsg(e+d,f).substitute({delta:f});}}).defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime(); switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime(); var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}}).alias("timeAgoInWords","timeDiffInWords"); Locale.define("en-US","Number",{decimal:".",group:",",currency:{prefix:"$ "}});Number.implement({format:function(q){var n=this;q=q?Object.clone(q):{};var a=function(i){if(q[i]!=null){return q[i]; }return Locale.get("Number."+i);};var f=n<0,h=a("decimal"),k=a("precision"),o=a("group"),c=a("decimals");if(f){var e=a("negative")||{};if(e.prefix==null&&e.suffix==null){e.prefix="-"; }["prefix","suffix"].each(function(i){if(e[i]){q[i]=a(i)+e[i];}});n=-n;}var l=a("prefix"),p=a("suffix");if(c!==""&&c>=0&&c<=20){n=n.toFixed(c);}if(k>=1&&k<=21){n=(+n).toPrecision(k); }n+="";var m;if(a("scientific")===false&&n.indexOf("e")>-1){var j=n.split("e"),b=+j[1];n=j[0].replace(".","");if(b<0){b=-b-1;m=j[0].indexOf(".");if(m>-1){b-=m-1; }while(b--){n="0"+n;}n="0."+n;}else{m=j[0].lastIndexOf(".");if(m>-1){b-=j[0].length-m-1;}while(b--){n+="0";}}}if(h!="."){n=n.replace(".",h);}if(o){m=n.lastIndexOf(h); m=(m>-1)?m:n.length;var d=n.substring(m),g=m;while(g--){if((m-g-1)%3==0&&g!=(m-1)){d=o+d;}d=n.charAt(g)+d;}n=d;}if(l){n=l+n;}if(p){n+=p;}return n;},formatCurrency:function(b){var a=Locale.get("Number.currency")||{}; if(a.scientific==null){a.scientific=false;}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);},formatPercentage:function(b){var a=Locale.get("Number.percentage")||{}; if(a.suffix==null){a.suffix="%";}a.decimals=b!=null?b:(a.decimals==null?2:a.decimals);return this.format(a);}});(function(){var c={a:/[àáâãäåăą]/g,A:/[ÀÁÂÃÄÅĂĄ]/g,c:/[ćčç]/g,C:/[ĆČÇ]/g,d:/[ďđ]/g,D:/[ĎÐ]/g,e:/[èéêëěę]/g,E:/[ÈÉÊËĚĘ]/g,g:/[ğ]/g,G:/[Ğ]/g,i:/[ìíîï]/g,I:/[ÌÍÎÏ]/g,l:/[ĺľł]/g,L:/[ĹĽŁ]/g,n:/[ñňń]/g,N:/[ÑŇŃ]/g,o:/[òóôõöøő]/g,O:/[ÒÓÔÕÖØ]/g,r:/[řŕ]/g,R:/[ŘŔ]/g,s:/[ššş]/g,S:/[ŠŞŚ]/g,t:/[ťţ]/g,T:/[ŤŢ]/g,ue:/[ü]/g,UE:/[Ü]/g,u:/[ùúûůµ]/g,U:/[ÙÚÛŮ]/g,y:/[ÿý]/g,Y:/[ŸÝ]/g,z:/[žźż]/g,Z:/[ŽŹŻ]/g,th:/[þ]/g,TH:/[Þ]/g,dh:/[ð]/g,DH:/[Ð]/g,ss:/[ß]/g,oe:/[œ]/g,OE:/[Œ]/g,ae:/[æ]/g,AE:/[Æ]/g},b={" ":/[\xa0\u2002\u2003\u2009]/g,"*":/[\xb7]/g,"'":/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,"...":/[\u2026]/g,"-":/[\u2013]/g,"»":/[\uFFFD]/g}; var a=function(f,h){var e=f,g;for(g in h){e=e.replace(h[g],g);}return e;};var d=function(e,g){e=e||"";var h=g?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)":"]+)?>",f=new RegExp(h,"gi"); return f;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this; }var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil()); },getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);},truncate:function(e,f,i){var h=this; if(f==null&&arguments.length==1){f="…";}if(h.length>e){h=h.substring(0,e);if(i){var g=h.lastIndexOf(i);if(g!=-1){h=h.substr(0,g);}}if(f){h+=f;}}return h; }});})();String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b; }c.each(function(i){var e=i.indexOf("=")+1,g=e?i.substr(e):"",f=e?i.substr(0,e-1).match(/([^\]\[]+|(\B)(?=\]))/g):[i],h=b;if(!f){return;}if(a){g=decodeURIComponent(g); }f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j0){c.pop(); }else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:""); },set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f}; }else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this; },get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||""; },go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{}; }var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c); }}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/}; a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c); }});})();URI=Class.refactor(URI,{combine:function(f,e){if(!e||f.scheme!=e.scheme||f.host!=e.host||f.port!=e.port){return this.previous.apply(this,arguments); }var a=f.file+(f.query?"?"+f.query:"")+(f.fragment?"#"+f.fragment:"");if(!e.directory){return(f.directory||(f.file?"":"./"))+a;}var d=e.directory.split("/"),c=f.directory.split("/"),g="",h; var b=0;for(h=0;h=0||g.parentPositioned||d.allowNegative)?c.x:0).toInt(); c.top=((c.y>=0||g.parentPositioned||d.allowNegative)?c.y:0).toInt();a.toMinMax(c,d);if(d.relFixedPosition||f.getStyle("position")=="fixed"){a.toRelFixedPosition(f,c); }if(d.ignoreScroll){a.toIgnoreScroll(f,c);}if(d.ignoreMargins){a.toIgnoreMargins(c,d);}c.left=Math.ceil(c.left);c.top=Math.ceil(c.top);delete c.x;delete c.y; return c;},setPositionCoordinates:function(k,g,d){var f=k.offset.y,h=k.offset.x,e=(d==document.body)?window.getScroll():d.getPosition(),j=e.y,c=e.x,i=window.getSize(); switch(k.position.x){case"left":g.x=c+h;break;case"right":g.x=c+h+d.offsetWidth;break;default:g.x=c+((d==document.body?i.x:d.offsetWidth)/2)+h;break;}switch(k.position.y){case"top":g.y=j+f; break;case"bottom":g.y=j+f+d.offsetHeight;break;default:g.y=j+((d==document.body?i.y:d.offsetHeight)/2)+f;break;}},toMinMax:function(c,d){var f={left:"x",top:"y"},e; ["minimum","maximum"].each(function(g){["left","top"].each(function(h){e=d[g]?d[g][f[h]]:null;if(e!=null&&((g=="minimum")?c[h]e)){c[h]=e;}});}); },toRelFixedPosition:function(e,c){var d=window.getScroll();c.top+=d.y;c.left+=d.x;},toIgnoreScroll:function(e,d){var c=e.getScroll();d.top-=c.y;d.left-=c.x; },toIgnoreMargins:function(c,d){c.left+=d.edge.x=="right"?d.dimensions["margin-right"]:(d.edge.x!="center"?-d.dimensions["margin-left"]:-d.dimensions["margin-left"]+((d.dimensions["margin-right"]+d.dimensions["margin-left"])/2)); c.top+=d.edge.y=="bottom"?d.dimensions["margin-bottom"]:(d.edge.y!="center"?-d.dimensions["margin-top"]:-d.dimensions["margin-top"]+((d.dimensions["margin-bottom"]+d.dimensions["margin-top"])/2)); },toEdge:function(c,d){var e={},g=d.dimensions,f=d.edge;switch(f.x){case"left":e.x=0;break;case"right":e.x=-g.x-g.computedRight-g.computedLeft;break;default:e.x=-(Math.round(g.totalWidth/2)); break;}switch(f.y){case"top":e.y=0;break;case"bottom":e.y=-g.y-g.computedTop-g.computedBottom;break;default:e.y=-(Math.round(g.totalHeight/2));break;}c.x+=e.x; c.y+=e.y;},getCoordinateFromValue:function(c){if(typeOf(c)!="string"){return c;}c=c.toLowerCase();return{x:c.test("left")?"left":(c.test("right")?"right":"center"),y:c.test(/upper|top/)?"top":(c.test("bottom")?"bottom":"center")}; }};Element.implement({position:function(d){if(d&&(d.x!=null||d.y!=null)){return(b?b.apply(this,arguments):this);}var c=this.setStyle("position","absolute").calculatePosition(d); return(d&&d.returnPos)?c:this.setStyles(c);},calculatePosition:function(c){return a.getPosition(this,c);}});})(Element.prototype.position);Element.implement({isDisplayed:function(){return this.getStyle("display")!="none"; },isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"](); },hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none"); },show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a); },swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(window.getSelection){var a=window.getSelection(); if(a&&a.removeAllRanges){a.removeAllRanges();}}else{if(document.selection&&document.selection.empty){try{document.selection.empty();}catch(b){}}}}});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.ie6||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt(); if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c); }c=((this.options.zIndex!=null||this.options.zIndex===0)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this); var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(!IframeShim.ready){window.addEvent("load",a); }else{a();}}else{this.position=this.hide=this.show=this.dispose=Function.from(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this; }var a=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2); this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset}); return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block"); }return this.position();},dispose:function(){if(this.shim){this.shim.dispose();}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this; }});window.addEvent("load",function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:["position"],options:{style:{},"class":"mask",maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(b,a){this.target=document.id(b)||document.id(document.body); this.target.store("mask",this);this.setOptions(a);this.render();this.inject();},render:function(){this.element=new Element("div",{"class":this.options["class"],id:this.options.id||"mask-"+String.uniqueID(),styles:Object.merge({},this.options.style,{display:"none"}),events:{click:function(a){this.fireEvent("click",a); if(this.options.hideOnClick){this.hide();}}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(b,a){a=a||(this.options.inject?this.options.inject.where:"")||this.target==document.body?"inside":"after"; b=b||(this.options.inject&&this.options.inject.target)||this.target;this.element.inject(b,a);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions); this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height); this.element.position({relativeTo:this.target,position:"topLeft",ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this; },resize:function(a,e){var b={styles:["padding","border"]};if(this.options.maskMargins){b.styles.push("margin");}var d=this.target.getComputedSize(b);if(this.target==document.body){this.element.setStyles({width:0,height:0}); var c=window.getScrollSize();if(d.totalHeight=0&&a.options[a.selectedIndex].value!=""); }else{return((a.get("value")==null)||(a.get("value").length==0));}}});Form.Validator.addAllThese([["required",{errorMsg:function(){return Form.Validator.getMsg("required"); },test:function(a){return !Form.Validator.getValidator("IsEmpty").test(a);}}],["length",{errorMsg:function(a,b){if(typeOf(b.length)!="null"){return Form.Validator.getMsg("length").substitute({length:b.length,elLength:a.get("value").length}); }else{return"";}},test:function(a,b){if(typeOf(b.length)!="null"){return(a.get("value").length==b.length||a.get("value").length==0);}else{return true;}}}],["minLength",{errorMsg:function(a,b){if(typeOf(b.minLength)!="null"){return Form.Validator.getMsg("minLength").substitute({minLength:b.minLength,length:a.get("value").length}); }else{return"";}},test:function(a,b){if(typeOf(b.minLength)!="null"){return(a.get("value").length>=(b.minLength||0));}else{return true;}}}],["maxLength",{errorMsg:function(a,b){if(typeOf(b.maxLength)!="null"){return Form.Validator.getMsg("maxLength").substitute({maxLength:b.maxLength,length:a.get("value").length}); }else{return"";}},test:function(a,b){return a.get("value").length<=(b.maxLength||10000);}}],["validate-integer",{errorMsg:Form.Validator.getMsg.pass("integer"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(-?[1-9]\d*|0)$/).test(a.get("value")); }}],["validate-numeric",{errorMsg:Form.Validator.getMsg.pass("numeric"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(a.get("value")); }}],["validate-digits",{errorMsg:Form.Validator.getMsg.pass("digits"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[\d() .:\-\+#]+$/.test(a.get("value"))); }}],["validate-alpha",{errorMsg:Form.Validator.getMsg.pass("alpha"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[a-zA-Z]+$/).test(a.get("value")); }}],["validate-alphanum",{errorMsg:Form.Validator.getMsg.pass("alphanum"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||!(/\W/).test(a.get("value")); }}],["validate-date",{errorMsg:function(a,b){if(Date.parse){var c=b.dateFormat||"%x";return Form.Validator.getMsg("dateSuchAs").substitute({date:new Date().format(c)}); }else{return Form.Validator.getMsg("dateInFormatMDY");}},test:function(e,g){if(Form.Validator.getValidator("IsEmpty").test(e)){return true;}var a=Locale.getCurrent().sets.Date,b=new RegExp([a.days,a.days_abbr,a.months,a.months_abbr].flatten().join("|"),"i"),i=e.get("value"),f=i.match(/[a-z]+/gi); if(f&&!f.every(b.exec,b)){return false;}var c=Date.parse(i),h=g.dateFormat||"%x",d=c.format(h);if(d!="invalid date"){e.set("value",d);}return c.isValid(); }}],["validate-email",{errorMsg:Form.Validator.getMsg.pass("email"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]\.?){0,63}[a-z0-9!#$%&'*+\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])$/i).test(a.get("value")); }}],["validate-url",{errorMsg:Form.Validator.getMsg.pass("url"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(a.get("value")); }}],["validate-currency-dollar",{errorMsg:Form.Validator.getMsg.pass("currencyDollar"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); }}],["validate-one-required",{errorMsg:Form.Validator.getMsg.pass("oneRequired"),test:function(a,b){var c=document.id(b["validate-one-required"])||a.getParent(b["validate-one-required"]); return c.getElements("input").some(function(d){if(["checkbox","radio"].contains(d.get("type"))){return d.get("checked");}return d.get("value");});}}]]); Element.Properties.validator={set:function(a){this.get("validator").setOptions(a);},get:function(){var a=this.retrieve("validator");if(!a){a=new Form.Validator(this); this.store("validator",a);}return a;}};Element.implement({validate:function(a){if(a){this.set("validator",a);}return this.get("validator").validate();}}); Form.Validator.Inline=new Class({Extends:Form.Validator,options:{showError:function(a){if(a.reveal){a.reveal();}else{a.setStyle("display","block");}},hideError:function(a){if(a.dissolve){a.dissolve(); }else{a.setStyle("display","none");}},scrollToErrorsOnSubmit:true,scrollToErrorsOnBlur:false,scrollToErrorsOnChange:false,scrollFxOptions:{transition:"quad:out",offset:{y:-20}}},initialize:function(b,a){this.parent(b,a); this.addEvent("onElementValidate",function(g,f,e,h){var d=this.getValidator(e);if(!g&&d.getError(f)){if(h){f.addClass("warning");}var c=this.makeAdvice(e,f,d.getError(f),h); this.insertAdvice(c,f);this.showAdvice(e,f);}else{this.hideAdvice(e,f);}});},makeAdvice:function(d,f,c,g){var e=(g)?this.warningPrefix:this.errorPrefix; e+=(this.options.useTitles)?f.title||c:c;var a=(g)?"warning-advice":"validation-advice";var b=this.getAdvice(d,f);if(b){b=b.set("html",e);}else{b=new Element("div",{html:e,styles:{display:"none"},id:"advice-"+d.split(":")[0]+"-"+this.getFieldId(f)}).addClass(a); }f.store("$moo:advice-"+d,b);return b;},getFieldId:function(a){return a.id?a.id:a.id="input_"+a.name;},showAdvice:function(b,c){var a=this.getAdvice(b,c); if(a&&!c.retrieve("$moo:"+this.getPropName(b))&&(a.getStyle("display")=="none"||a.getStyle("visiblity")=="hidden"||a.getStyle("opacity")==0)){c.store("$moo:"+this.getPropName(b),true); this.options.showError(a);this.fireEvent("showAdvice",[c,a,b]);}},hideAdvice:function(b,c){var a=this.getAdvice(b,c);if(a&&c.retrieve("$moo:"+this.getPropName(b))){c.store("$moo:"+this.getPropName(b),false); this.options.hideError(a);this.fireEvent("hideAdvice",[c,a,b]);}},getPropName:function(a){return"advice"+a;},resetField:function(a){a=document.id(a);if(!a){return this; }this.parent(a);a.get("validators").each(function(b){this.hideAdvice(b,a);},this);return this;},getAllAdviceMessages:function(d,c){var b=[];if(d.hasClass("ignoreValidation")&&!c){return b; }var a=d.get("validators").some(function(g){var e=g.test("^warn-")||d.hasClass("warnOnly");if(e){g=g.replace(/^warn-/,"");}var f=this.getValidator(g);if(!f){return; }b.push({message:f.getError(d),warnOnly:e,passed:f.test(),validator:f});},this);return b;},getAdvice:function(a,b){return b.retrieve("$moo:advice-"+a); },insertAdvice:function(a,c){var b=c.get("validatorProps");if(!b.msgPos||!document.id(b.msgPos)){if(c.type&&c.type.toLowerCase()=="radio"){c.getParent().adopt(a); }else{a.inject(document.id(c),"after");}}else{document.id(b.msgPos).grab(a);}},validateField:function(g,f,b){var a=this.parent(g,f);if(((this.options.scrollToErrorsOnSubmit&&b==null)||b)&&!a){var c=document.id(this).getElement(".validation-failed"); var d=document.id(this).getParent();while(d!=document.body&&d.getScrollSize().y==d.getSize().y){d=d.getParent();}var e=d.retrieve("$moo:fvScroller");if(!e&&window.Fx&&Fx.Scroll){e=new Fx.Scroll(d,this.options.scrollFxOptions); d.store("$moo:fvScroller",e);}if(c){if(e){e.toElement(c);}else{d.scrollTo(d.getScroll().x,c.getPosition(d).y-20);}}}return a;},watchFields:function(a){a.each(function(b){if(this.options.evaluateFieldsOnBlur){b.addEvent("blur",this.validationMonitor.pass([b,false,this.options.scrollToErrorsOnBlur],this)); }if(this.options.evaluateFieldsOnChange){b.addEvent("change",this.validationMonitor.pass([b,true,this.options.scrollToErrorsOnChange],this));}},this);}}); Form.Validator.addAllThese([["validate-enforce-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator");if(!c){return true;}(b.toEnforce||document.id(b.enforceChildrenOf).getElements("input, select, textarea")).map(function(d){if(a.checked){c.enforceField(d); }else{c.ignoreField(d);c.resetField(d);}});return true;}}],["validate-ignore-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator"); if(!c){return true;}(b.toIgnore||document.id(b.ignoreChildrenOf).getElements("input, select, textarea")).each(function(d){if(a.checked){c.ignoreField(d); c.resetField(d);}else{c.enforceField(d);}});return true;}}],["validate-nospace",{errorMsg:function(){return Form.Validator.getMsg("noSpace");},test:function(a,b){return !a.get("value").test(/\s/); }}],["validate-toggle-oncheck",{test:function(b,c){var d=b.getParent("form").retrieve("validator");if(!d){return true;}var a=c.toToggle||document.id(c.toToggleChildrenOf).getElements("input, select, textarea"); if(!b.checked){a.each(function(e){d.ignoreField(e);d.resetField(e);});}else{a.each(function(e){d.enforceField(e);});}return true;}}],["validate-reqchk-bynode",{errorMsg:function(){return Form.Validator.getMsg("reqChkByNode"); },test:function(a,b){return(document.id(b.nodeId).getElements(b.selector||"input[type=checkbox], input[type=radio]")).some(function(c){return c.checked; });}}],["validate-required-check",{errorMsg:function(a,b){return b.useTitle?a.get("title"):Form.Validator.getMsg("requiredChk");},test:function(a,b){return !!a.checked; }}],["validate-reqchk-byname",{errorMsg:function(a,b){return Form.Validator.getMsg("reqChkByName").substitute({label:b.label||a.get("type")});},test:function(b,d){var c=d.groupName||b.get("name"); var a=$$(document.getElementsByName(c)).some(function(g,f){return g.checked;});var e=b.getParent("form").retrieve("validator");if(a&&e){e.resetField(b); }return a;}}],["validate-match",{errorMsg:function(a,b){return Form.Validator.getMsg("match").substitute({matchName:b.matchName||document.id(b.matchInput).get("name")}); },test:function(b,c){var d=b.get("value");var a=document.id(c.matchInput)&&document.id(c.matchInput).get("value");return d&&a?d==a:true;}}],["validate-after-date",{errorMsg:function(a,b){return Form.Validator.getMsg("afterDate").substitute({label:b.afterLabel||(b.afterElement?Form.Validator.getMsg("startDate"):Form.Validator.getMsg("currentDate"))}); },test:function(b,c){var d=document.id(c.afterElement)?Date.parse(document.id(c.afterElement).get("value")):new Date();var a=Date.parse(b.get("value")); return a&&d?a>=d:true;}}],["validate-before-date",{errorMsg:function(a,b){return Form.Validator.getMsg("beforeDate").substitute({label:b.beforeLabel||(b.beforeElement?Form.Validator.getMsg("endDate"):Form.Validator.getMsg("currentDate"))}); },test:function(b,c){var d=Date.parse(b.get("value"));var a=document.id(c.beforeElement)?Date.parse(document.id(c.beforeElement).get("value")):new Date(); return a&&d?a>=d:true;}}],["validate-custom-required",{errorMsg:function(){return Form.Validator.getMsg("required");},test:function(a,b){return a.get("value")!=b.emptyValue; }}],["validate-same-month",{errorMsg:function(a,b){var c=document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value");var d=a.get("value");if(d!=""){return Form.Validator.getMsg(c?"sameMonth":"startMonth"); }},test:function(a,b){var d=Date.parse(a.get("value"));var c=Date.parse(document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value"));return d&&c?d.format("%B")==c.format("%B"):true; }}],["validate-cc-num",{errorMsg:function(a){var b=a.get("value").replace(/[^0-9]/g,"");return Form.Validator.getMsg("creditcard").substitute({length:b.length}); },test:function(c){if(Form.Validator.getValidator("IsEmpty").test(c)){return true;}var g=c.get("value");g=g.replace(/[^0-9]/g,"");var a=false;if(g.test(/^4[0-9]{12}([0-9]{3})?$/)){a="Visa"; }else{if(g.test(/^5[1-5]([0-9]{14})$/)){a="Master Card";}else{if(g.test(/^3[47][0-9]{13}$/)){a="American Express";}else{if(g.test(/^6011[0-9]{12}$/)){a="Discover"; }}}}if(a){var d=0;var e=0;for(var b=g.length-1;b>=0;--b){e=g.charAt(b).toInt();if(e==0){continue;}if((g.length-b)%2==0){e+=e;}if(e>9){e=e.toString().charAt(0).toInt()+e.toString().charAt(1).toInt(); }d+=e;}if((d%10)==0){return true;}}var f="";while(g!=""){f+=" "+g.substr(0,4);g=g.substr(4);}c.getParent("form").retrieve("validator").ignoreField(c);c.set("value",f.clean()); c.getParent("form").retrieve("validator").enforceField(c);return false;}}]]);var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",labelClass:"overTxtLabel",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){b=this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(b);OverText.instances.push(this);if(this.options.poll){this.poll();}},toElement:function(){return this.element; },attach:function(){var b=this.element,a=this.options,c=a.textOverride||b.get("alt")||b.get("title");if(!c){return this;}var d=this.text=new Element(a.element,{"class":a.labelClass,styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:c,events:{click:this.hide.pass(a.element=="label",this)}}).inject(b,"after"); if(a.element=="label"){if(!b.get("id")){b.set("id","input_"+String.uniqueID());}d.set("for",b.get("id"));}if(a.wrap){this.textHolder=new Element("div.overTxtWrapper",{styles:{lineHeight:"normal",position:"relative"}}).grab(d).inject(b,"before"); }return this.enable();},destroy:function(){this.element.eliminate(this.property);this.disable();if(this.text){this.text.destroy();}if(this.textHolder){this.textHolder.destroy(); }return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert});window.removeEvent("resize",this.reposition); this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert});window.addEvent("resize",this.reposition); this.reposition();return this;},wrap:function(){if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+String.uniqueID()); }this.text.set("for",this.element.get("id"));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(a){if(this.poller&&!a){return this; }if(a){clearInterval(this.poller);}else{this.poller=(function(){if(!this.pollingPaused){this.assert(true);}}).periodical(this.options.pollInterval,this); }return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get("disabled"))){return this; }return this.hide();},hide:function(c,a){if(this.text&&(this.text.isDisplayed()&&(!this.element.get("disabled")||a))){this.text.hide();this.fireEvent("textHide",[this.text,this.element]); this.pollingPaused=true;if(!c){try{this.element.fireEvent("focus");this.element.focus();}catch(b){}}}return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show(); this.reposition();this.fireEvent("textShow",[this.text,this.element]);this.pollingPaused=false;}return this;},test:function(){return !this.element.get("value"); },assert:function(a){return this[this.test()?"show":"hide"](a);},reposition:function(){this.assert(true);if(!this.element.isVisible()){return this.stopPolling().hide(); }if(this.text&&this.test()){this.text.position(Object.merge(this.options.positionOptions,{relativeTo:this.element}));}return this;}});OverText.instances=[]; Object.append(OverText,{each:function(a){return OverText.instances.each(function(c,b){if(c.element&&c.text){a.call(OverText,c,b);}});},update:function(){return OverText.each(function(a){return a.reposition(); });},hideAll:function(){return OverText.each(function(a){return a.hide(true,true);});},showAll:function(){return OverText.each(function(a){return a.show(); });}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a);},compute:function(g,h,j){var c={}; for(var d in g){var a=g[d],e=h[d],f=c[d]={};for(var b in a){f[b]=this.parent(a[b],e[b],j);}}return c;},set:function(b){for(var c in b){if(!this.elements[c]){continue; }var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit);}}return this;},start:function(c){if(!this.check(c)){return this;}var h={},j={}; for(var d in c){if(!this.elements[d]){continue;}var f=c[d],a=h[d]={},g=j[d]={};for(var b in f){var e=this.prepare(this.elements[d],b,f[b]);a[b]=e.from; g[b]=e.to;}}return this.parent(h,j);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,resetHeight:true},initialize:function(){var g=function(h){return h!=null; };var f=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:g,elements:g});this.parent(f.elements,f.options);var b=this.options,e=this.togglers=$$(f.togglers); this.previous=-1;this.internalChain=new Chain();if(b.alwaysHide){this.options.link="chain";}if(b.show||this.options.show===0){b.display=false;this.previous=b.show; }if(b.start){b.display=false;b.show=false;}var d=this.effects={};if(b.opacity){d.opacity="fullOpacity";}if(b.width){d.width=b.fixedWidth?"fullWidth":"offsetWidth"; }if(b.height){d.height=b.fixedHeight?"fullHeight":"scrollHeight";}for(var c=0,a=e.length;c=0?a-1:0)).chain(d);}else{d();}return this;},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display")); }.bind(this);if(!b){this.togglers.each(a);}else{a(b);}return this;},display:function(b,c){if(!this.check(b,c)){return this;}var h={},g=this.elements,a=this.options,f=this.effects; if(c==null){c=true;}if(typeOf(b)=="element"){b=g.indexOf(b);}if(b==this.previous&&!a.alwaysHide){return this;}if(a.resetHeight){var e=g[this.previous]; if(e&&!this.selfHidden){for(var d in f){e.setStyle(d,e[f[d]]);}}}if((this.timer&&a.link=="chain")||(b===this.previous&&!a.alwaysHide)){return this;}this.previous=b; this.selfHidden=false;g.each(function(l,k){h[k]={};var j;if(k!=b){j=true;}else{if(a.alwaysHide&&((l.offsetHeight>0&&a.height)||l.offsetWidth>0&&a.width)){j=true; this.selfHidden=true;}}this.fireEvent(j?"background":"active",[this.togglers[k],l]);for(var m in f){h[k][m]=j?0:l[f[m]];}if(!c&&!j&&a.resetHeight){h[k].height="auto"; }},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(a.resetHeight&&!this.selfHidden){var i=g[b];if(i){i.setStyle("height","auto"); }}}.bind(this));return c?this.start(h):this.set(h).internalChain.callChain();}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left"); if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position(Object.merge({},this.options,a,{returnPos:true}))); }});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"}); this.store("move",a);}return a;}};Element.implement({move:function(a){this.get("move").start(a);return this;}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c); this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this); this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments); if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0],b[1]);return this;},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b); });},start:function(c,d){if(!this.check(c,d)){return this;}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d]);},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f}; for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e];}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e];}i[e]+=c[e];}return[i.x,i.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0)); },toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false)); },toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"));},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll(); var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false;});return this.start.apply(this,this.calculateScroll(b.x,b.y)); },toElementEdge:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y}; ["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]this.elements.length){e.splice(this.elements.length-1,e.length-this.elements.length); }}var b=0;i=a=0;e.each(function(k){var j={};if(d){j.top=i-f[k].top-b;i+=f[k].height;}else{j.left=a-f[k].left;a+=f[k].width;}b=b+f[k].margin;c[k]=j;},this); var g={};Array.clone(e).sort().each(function(j){g[j]=c[j];});this.start(g);this.currentOrder=e;return this;},rearrangeDOM:function(a){a=a||this.currentOrder; var b=this.elements[0].getParent();var c=[];this.elements.setStyle("opacity",0);a.each(function(d){c.push(this.elements[d].inject(b).setStyles({top:0,left:0})); },this);this.elements.setStyle("opacity",1);this.elements=$$(c);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(b,a){return a; });},getCurrentOrder:function(){return this.currentOrder;},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse()); },reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(a){return this.sort(a.map(function(b){return this.elements.indexOf(b); },this));},swap:function(c,b){if(typeOf(c)=="element"){c=this.elements.indexOf(c);}if(typeOf(b)=="element"){b=this.elements.indexOf(b);}var a=Array.clone(this.currentOrder); a[this.currentOrder.indexOf(c)]=b;a[this.currentOrder.indexOf(b)]=c;return this.sort(a);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null; }});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element; this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false); Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)}; this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start); return this;},start:function(a){var j=this.options;if(a.rightClick){return;}if(j.preventDefault){a.preventDefault();}if(j.stopPropagation){a.stopPropagation(); }this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=j.limit;this.limit={x:[],y:[]};var e,g;for(e in j.modifiers){if(!j.modifiers[e]){continue; }var b=this.element.getStyle(j.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());}b=g[j.modifiers[e]]; }if(j.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[j.modifiers[e]];}if(j.invert){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e]; if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f;}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}; }var h={mousemove:this.bound.check,mouseup:this.bound.cancel};h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault(); }var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop}); this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault(); }this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue;}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1; }if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1];}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]d.left&&b.xd.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]); }if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables(); }},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a); this.store("dragger",b);return b;}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){this.setKnobPosition(a); },initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(f,a,e){this.setOptions(e);e=this.options;this.element=document.id(f); a=this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var b={},d={x:false,y:false};switch(e.mode){case"vertical":this.axis="y";this.property="top"; this.offset="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";this.offset="offsetWidth";}this.setSliderDimensions();this.setRange(e.range); if(a.getStyle("position")=="static"){a.setStyle("position","relative");}a.setStyle(this.property,-e.offset);d[this.axis]=this.property;b[this.axis]=[-e.offset,this.full-e.offset]; var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;}).bind(this),onCancel:function(){this.isDragging=false; }.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};if(e.snap){this.setSnap(c);}this.drag=new Drag(a,c); this.attach();if(e.initialStep!=null){this.set(e.initialStep);}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement); }this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement).removeEvent("mousewheel",this.scrolledElement); this.drag.detach();return this;},autosize:function(){this.setSliderDimensions().setKnobPosition(this.toPosition(this.step));this.drag.options.limit[this.axis]=[-this.options.offset,this.full-this.options.offset]; if(this.options.snap){this.setSnap();}return this;},setSnap:function(a){if(!a){a=this.drag.options;}a.grid=Math.ceil(this.stepWidth);a.limit[this.axis][1]=this.full; return this;},setKnobPosition:function(a){if(this.options.snap){a=this.toPosition(this.step);}this.knob.setStyle(this.property,a);return this;},setSliderDimensions:function(){this.full=this.element.measure(function(){this.half=this.knob[this.offset]/2; return this.element[this.offset]-this.knob[this.offset]+(this.options.offset*2);}.bind(this));return this;},set:function(a){if(!((this.range>0)^(a0)^(a>this.max))){a=this.max;}this.step=Math.round(a);return this.checkStep().fireEvent("tick",this.toPosition(this.step)).end();},setRange:function(a,b){this.min=Array.pick([a[0],0]); this.max=Array.pick([a[1],this.options.steps]);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps; this.stepWidth=this.stepSize*this.full/Math.abs(this.range);if(a){this.set(Array.pick([b,this.step]).floor(this.min).max(this.max));}return this;},clickedElement:function(c){if(this.isDragging||c.target==this.knob){return; }var b=this.range<0?-1:1,a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep().fireEvent("tick",a).end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0); this.set(this.step+(b?-1:1)*this.stepSize);a.stop();},draggedKnob:function(){var b=this.range<0?-1:1,a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){var a=this.step;if(this.previousChange!=a){this.previousChange=a; this.fireEvent("change",a);}return this;},end:function(){var a=this.step;if(this.previousEnd!==a){this.previousEnd=a;this.fireEvent("complete",a+"");}return this; },toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset; }});var Sortables=new Class({Implements:[Events,Options],options:{opacity:1,clone:false,revert:false,handle:false,dragOptions:{}},initialize:function(a,b){this.setOptions(b); this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,Object.merge({duration:250,link:"cancel"},this.options.revert)); }},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a); var b=a.retrieve("sortables:start",function(c){this.start.call(this,c,a);}.bind(this));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b); },this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.include(a);this.addItems(a.getChildren());},this);return this; },removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b); return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a; },this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if(typeOf(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list); }var c=a.clone(true).setStyles({margin:0,position:"absolute",visibility:"hidden",width:a.getStyle("width")}).addEvent("mousedown",function(d){a.fireEvent("mousedown",d); });if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e);if(d.get("checked")){a.getElements("input[type=radio]")[e].set("checked",true); }});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));},getDroppables:function(){var a=this.list.getChildren().erase(this.clone).erase(this.element); if(!this.options.constrain){a.append(this.lists).erase(this.list);}return a;},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b; this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after";}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]); },start:function(b,a){if(!this.idle||b.rightClick||["button","input","a","textarea"].contains(b.target.get("tag"))){return;}this.idle=false;this.element=a; this.opacity=a.getStyle("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,Object.merge({droppables:this.getDroppables()},this.options.dragOptions)).addEvents({onSnap:function(){b.stop(); this.clone.setStyle("visibility","visible");this.element.setStyle("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]); }.bind(this),onEnter:this.insert.bind(this),onCancel:this.end.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,"before");this.drag.start(b); },end:function(){this.drag.detach();this.element.setStyle("opacity",this.opacity);if(this.effect){var b=this.element.getStyles("width","height"),d=this.clone,c=d.computePosition(this.element.getPosition(this.clone.getOffsetParent())); var a=function(){this.removeEvent("cancel",a);d.destroy();};this.effect.element=d;this.effect.start({top:c.top,left:c.left,width:b.width,height:b.height,opacity:0.25}).addEvent("cancel",a).chain(a); }else{this.clone.destroy();}this.reset();},reset:function(){this.idle=true;this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Type.isFunction,index:function(d){return d!=null; }});var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0; }return(a||a===0)&&a>=0&&a2083){this.fireEvent("error",f);}Request.JSONP.request_map["request_"+b]=function(){this.success(arguments,b);}.bind(this);var a=this.getScript(f).inject(c.injectScript); this.fireEvent("request",[f,a]);if(c.timeout){this.timeout.delay(c.timeout,this);}return this;},getScript:function(a){if(!this.script){this.script=new Element("script",{type:"text/javascript",async:true,src:a}); }return this.script;},success:function(b,a){if(!this.running){return;}this.clear().fireEvent("complete",b).fireEvent("success",b).callChain();},cancel:function(){if(this.running){this.clear().fireEvent("cancel"); }return this;},isRunning:function(){return !!this.running;},clear:function(){this.running=false;if(this.script){this.script.destroy();this.script=null; }return this;},timeout:function(){if(this.running){this.running=false;this.fireEvent("timeout",[this.script.get("src"),this.script]).fireEvent("failure").cancel(); }return this;}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:["attach","request","complete","cancel","success","failure","exception"],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(a){var b; if(a){b=a.requests;delete a.requests;}this.setOptions(a);this.requests={};this.queue=[];this.reqBinders={};if(b){this.addRequests(b);}},addRequest:function(a,b){this.requests[a]=b; this.attach(a,b);return this;},addRequests:function(a){Object.each(a,function(c,b){this.addRequest(b,c);},this);return this;},getName:function(a){return Object.keyOf(this.requests,a); },attach:function(a,b){if(b._groupSend){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){if(!this.reqBinders[a]){this.reqBinders[a]={}; }this.reqBinders[a][c]=function(){this["on"+c.capitalize()].apply(this,[a,b].append(arguments));}.bind(this);b.addEvent(c,this.reqBinders[a][c]);},this); b._groupSend=b.send;b.send=function(c){this.send(a,c);return b;}.bind(this);return this;},removeRequest:function(b){var a=typeOf(b)=="object"?this.getName(b):b; if(!a&&typeOf(a)!="string"){return this;}b=this.requests[a];if(!b){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){b.removeEvent(c,this.reqBinders[a][c]); },this);b.send=b._groupSend;delete b._groupSend;return this;},getRunning:function(){return Object.filter(this.requests,function(a){return a.running;}); },isRunning:function(){return !!(Object.keys(this.getRunning()).length);},send:function(b,a){var c=function(){this.requests[b]._groupSend(a);this.queue.erase(c); }.bind(this);c.name=b;if(Object.keys(this.getRunning()).length>=this.options.concurrent||(this.error&&this.options.stopOnFailure)){this.queue.push(c);}else{c(); }return this;},hasNext:function(a){return(!a)?!!this.queue.length:!!this.queue.filter(function(b){return b.name==a;}).length;},resume:function(){this.error=false; (this.options.concurrent-Object.keys(this.getRunning()).length).times(this.runNext,this);return this;},runNext:function(a){if(!this.queue.length){return this; }if(!a){this.queue[0]();}else{var b;this.queue.each(function(c){if(!b&&c.name==a){b=true;c();}});}return this;},runAll:function(){this.queue.each(function(a){a(); });return this;},clear:function(a){if(!a){this.queue.empty();}else{this.queue=this.queue.map(function(b){if(b.name!=a){return b;}else{return false;}}).filter(function(b){return b; });}return this;},cancel:function(a){this.requests[a].cancel();return this;},onRequest:function(){this.fireEvent("request",arguments);},onComplete:function(){this.fireEvent("complete",arguments); if(!this.queue.length){this.fireEvent("end");}},onCancel:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("cancel",arguments); },onSuccess:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("success",arguments);},onFailure:function(){this.error=true; if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("failure",arguments);},onException:function(){this.error=true; if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("exception",arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b}); }};this.lastDelay=this.options.initialDelay;this.timer=a.delay(this.lastDelay,this);this.completeCheck=function(c){clearTimeout(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit); this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent("complete",this.completeCheck); }});var Asset={javascript:function(d,b){if(!b){b={};}var a=new Element("script",{src:d,type:"text/javascript"}),e=b.document||document,c=b.onload||b.onLoad; delete b.onload;delete b.onLoad;delete b.document;if(c){if(typeof a.onreadystatechange!="undefined"){a.addEvent("readystatechange",function(){if(["loaded","complete"].contains(this.readyState)){c.call(this); }});}else{a.addEvent("load",c);}}return a.set(b).inject(e.head);},css:function(d,a){if(!a){a={};}var b=new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:d}); var c=a.onload||a.onLoad,e=a.document||document;delete a.onload;delete a.onLoad;delete a.document;if(c){b.addEvent("load",c);}return b.set(a).inject(e.head); },image:function(c,b){if(!b){b={};}var d=new Image(),a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var g="on"+e,f="on"+e.capitalize(),h=b[g]||b[f]||function(){}; delete b[f];delete b[g];d[g]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;h.delay(1,a,a); a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(c,b){c=Array.from(c);var d=function(){},a=0; b=Object.merge({onComplete:d,onProgress:d,onError:d,properties:{}},b);return new Elements(c.map(function(f,e){return Asset.image(f,Object.append(b.properties,{onload:function(){a++; b.onProgress.call(this,a,e,f);if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,e,f);if(a==c.length){b.onComplete();}}})); }));}};(function(){var a=this.Color=new Type("Color",function(c,d){if(arguments.length>=3){d="rgb";c=Array.slice(arguments,0,3);}else{if(typeof c=="string"){if(c.match(/rgb/)){c=c.rgbToHex().hexToRgb(true); }else{if(c.match(/hsb/)){c=c.hsbToRgb();}else{c=c.hexToRgb(true);}}}}d=d||"rgb";switch(d){case"hsb":var b=c;c=c.hsbToRgb();c.hsb=b;break;case"hex":c=c.hexToRgb(true); break;}c.rgb=c.slice(0,3);c.hsb=c.hsb||c.rgbToHsb();c.hex=c.rgbToHex();return Object.append(c,this);});a.implement({mix:function(){var b=Array.slice(arguments); var d=(typeOf(b.getLast())=="number")?b.pop():50;var c=this.slice();b.each(function(e){e=new a(e);for(var f=0;f<3;f++){c[f]=Math.round((c[f]/100*(100-d))+(e[f]/100*d)); }});return new a(c,"rgb");},invert:function(){return new a(this.map(function(b){return 255-b;}));},setHue:function(b){return new a([b,this.hsb[1],this.hsb[2]],"hsb"); },setSaturation:function(b){return new a([this.hsb[0],b,this.hsb[2]],"hsb");},setBrightness:function(b){return new a([this.hsb[0],this.hsb[1],b],"hsb"); }});this.$RGB=function(e,d,c){return new a([e,d,c],"rgb");};this.$HSB=function(e,d,c){return new a([e,d,c],"hsb");};this.$HEX=function(b){return new a(b,"hex"); };Array.implement({rgbToHsb:function(){var c=this[0],d=this[1],k=this[2],h=0;var j=Math.max(c,d,k),f=Math.min(c,d,k);var l=j-f;var i=j/255,g=(j!=0)?l/j:0; if(g!=0){var e=(j-c)/l;var b=(j-d)/l;var m=(j-k)/l;if(c==j){h=m-b;}else{if(d==j){h=2+e-m;}else{h=4+b-e;}}h/=6;if(h<0){h++;}}return[Math.round(h*360),Math.round(g*100),Math.round(i*100)]; },hsbToRgb:function(){var d=Math.round(this[2]/100*255);if(this[1]==0){return[d,d,d];}else{var b=this[0]%360;var g=b%60;var h=Math.round((this[2]*(100-this[1]))/10000*255); var e=Math.round((this[2]*(6000-this[1]*g))/600000*255);var c=Math.round((this[2]*(6000-this[1]*(60-g)))/600000*255);switch(Math.floor(b/60)){case 0:return[d,c,h]; case 1:return[e,d,h];case 2:return[h,d,c];case 3:return[h,e,d];case 4:return[c,h,d];case 5:return[d,h,e];}}return false;}});String.implement({rgbToHsb:function(){var b=this.match(/\d{1,3}/g); return(b)?b.rgbToHsb():null;},hsbToRgb:function(){var b=this.match(/\d{1,3}/g);return(b)?b.hsbToRgb():null;}});})();(function(){this.Group=new Class({initialize:function(){this.instances=Array.flatten(arguments); },addEvent:function(e,d){var g=this.instances,a=g.length,f=a,c=new Array(a),b=this;g.each(function(h,j){h.addEvent(e,function(){if(!c[j]){f--;}c[j]=arguments; if(!f){d.call(b,g,h,c);f=a;c=new Array(a);}});});}});})();Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a); this.load();},save:function(){var a=JSON.encode(this.hash);if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true; },load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments); if(this.options.autoSave){this.save();}return c;});}});(function(){var a=this.Table=function(){this.length=0;var c=[],b=[];this.set=function(e,g){var d=c.indexOf(e); if(d==-1){var f=c.length;c[f]=e;b[f]=g;this.length++;}else{b[d]=g;}return this;};this.get=function(e){var d=c.indexOf(e);return(d==-1)?null:b[d];};this.erase=function(e){var d=c.indexOf(e); if(d!=-1){this.length--;c.splice(d,1);return b.splice(d,1)[0];}return null;};this.each=this.forEach=function(f,g){for(var e=0,d=this.length;e1?$$(a):a.length?document.id(a[0]):false;},setHeaders:function(a){this.set("headers",a); return this;},setFooters:function(a){this.set("footers",a);return this;},update:function(d,e,a){var b=d.getChildren(a||"td"),c=b.length-1;e.each(function(i,f){var j=b[f]||new Element(a||"td").inject(d),h=(i?i.content:"")||i,g=typeOf(h); if(i&&i.properties){j.set(i.properties);}if(/(element(s?)|array|collection)/.test(g)){j.empty().adopt(h);}else{j.set("html",h);}if(f>c){b.push(j);}else{b[f]=j; }});return{tr:d,tds:b};},push:function(e,c,d,a,b){if(typeOf(e)=="element"&&e.get("tag")=="tr"){e.inject(d||this.body,b);return{tr:e,tds:e.getChildren("td")}; }return this.update(new Element("tr",c).inject(d||this.body,b),e,a);},pushMany:function(d,c,e,a,b){return d.map(function(f){return this.push(f,c,e,a,b); },this);}});["adopt","inject","wraps","grab","replaces","dispose"].each(function(a){HtmlTable.implement(a,function(){this.element[a].apply(this.element,arguments); return this;});});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:"table-tr-odd",zebra:true,zebraOnlyVisibleRows:true},initialize:function(){this.previous.apply(this,arguments); if(this.occluded){return this.occluded;}if(this.options.zebra){this.updateZebras();}},updateZebras:function(){var a=0;Array.each(this.body.rows,function(b){if(!this.options.zebraOnlyVisibleRows||b.isDisplayed()){this.zebra(b,a++); }},this);},setRowStyle:function(b,a){if(this.previous){this.previous(b,a);}this.zebra(b,a);},zebra:function(b,a){return b[((a%2)?"remove":"add")+"Class"](this.options.classZebra); },push:function(){var a=this.previous.apply(this,arguments);if(this.options.zebra){this.updateZebras();}return a;}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:"string",classSortable:"table-sortable",classHeadSort:"table-th-sort",classHeadSortRev:"table-th-sort-rev",classNoSort:"table-th-nosort",classGroupHead:"table-tr-group-head",classGroup:"table-tr-group",classCellSort:"table-td-sort",classSortSpan:"table-th-sort-span",sortable:false,thSelector:"th"},initialize:function(){this.previous.apply(this,arguments); if(this.occluded){return this.occluded;}this.sorted={index:null,dir:1};if(!this.bound){this.bound={};}this.bound.headClick=this.headClick.bind(this);this.sortSpans=new Elements(); if(this.options.sortable){this.enableSort();if(this.options.sortIndex!=null){this.sort(this.options.sortIndex,this.options.sortReverse);}}},attachSorts:function(a){this.detachSorts(); if(a!==false){this.element.addEvent("click:relay("+this.options.thSelector+")",this.bound.headClick);}},detachSorts:function(){this.element.removeEvents("click:relay("+this.options.thSelector+")"); },setHeaders:function(){this.previous.apply(this,arguments);if(this.sortEnabled){this.setParsers();}},setParsers:function(){this.parsers=this.detectParsers(); },detectParsers:function(){return this.head&&this.head.getElements(this.options.thSelector).flatten().map(this.detectParser,this);},detectParser:function(a,b){if(a.hasClass(this.options.classNoSort)||a.retrieve("htmltable-parser")){return a.retrieve("htmltable-parser"); }var c=new Element("div");c.adopt(a.childNodes).inject(a);var f=new Element("span",{"class":this.options.classSortSpan}).inject(c,"top");this.sortSpans.push(f); var g=this.options.parsers[b],e=this.body.rows,d;switch(typeOf(g)){case"function":g={convert:g};d=true;break;case"string":g=g;d=true;break;}if(!d){HtmlTable.ParserPriority.some(function(k){var o=HtmlTable.Parsers[k],m=o.match; if(!m){return false;}for(var n=0,l=e.length;nc){b[f].position--;}}}},setRowStyle:function(b,a){this.previous(b,a);b.cells[this.sorted.index].addClass(this.options.classCellSort); },setGroupSort:function(b,c,a){if(b==a.value){c.removeClass(this.options.classGroupHead).addClass(this.options.classGroup);}else{c.removeClass(this.options.classGroup).addClass(this.options.classGroupHead); }return a.value;},getParser:function(){var a=this.parsers[this.sorted.index];return typeOf(a)=="string"?HtmlTable.Parsers[a]:a;},sort:function(c,b,e){if(!this.head){return; }if(!e){this.clearSort();this.setSortedState(c,b);this.setHeadSort(true);}var f=this.getParser();if(!f){return;}var a;if(!Browser.ie){a=this.body.getParent(); this.body.dispose();}var d=this.parseData(f).sort(function(h,g){if(h.value===g.value){return 0;}return h.value>g.value?1:-1;});if(this.sorted.reverse==(f==HtmlTable.Parsers["input-checked"])){d.reverse(true); }this.setRowSort(d,e);if(a){a.grab(this.body);}this.fireEvent("stateChanged");return this.fireEvent("sort",[this.body,this.sorted.index]);},parseData:function(a){return Array.map(this.body.rows,function(d,b){var c=a.convert.call(document.id(d.cells[this.sorted.index])); return{position:b,value:c};},this);},clearSort:function(){this.setHeadSort(false);this.body.getElements("td").removeClass(this.options.classCellSort);},reSort:function(){if(this.sortEnabled){this.sort.call(this,this.sorted.index,this.sorted.reverse); }return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.setParsers();this.sortEnabled=true;return this; },disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(a){a.destroy();});this.sortSpans.empty(); this.sortEnabled=false;return this;}});HtmlTable.ParserPriority=["date","input-checked","input-value","float","number"];HtmlTable.Parsers={date:{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){var a=Date.parse(this.get("text").stripTags()); return(typeOf(a)=="date")?a.format("db"):"";},type:"date"},"input-checked":{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement("input").checked; }},"input-value":{match:/0)){return null; }if(d){b+=e;}else{var a=0,c=0;if(e>0){while(ce&&b>0){if(this.body.rows[--b].isDisplayed()){c--; }}}}return b;},attachSelects:function(d){d=d!=null?d:true;var g=d?"addEvents":"removeEvents";this.element[g]({mouseleave:this.bound.mouseleave,click:this.bound.activateKeyboard}); this.body[g]({"click:relay(tr)":this.bound.clickRow,"contextmenu:relay(tr)":this.bound.clickRow});if(this.options.useKeyboard||this.keyboard){if(!this.keyboard){this.keyboard=new Keyboard(); }if(!this.selectKeysDefined){this.selectKeysDefined=true;var f,e;var c=function(i){var h=function(j){clearTimeout(f);j.preventDefault();var k=this.body.rows[this.getRowByOffset(i,this.options.selectHiddenRows)]; if(j.shift&&k&&this.isSelected(k)){this.deselectRow(this.focused);this.focused=k;}else{if(k&&(!this.options.allowMultiSelect||!j.shift)){this.selectNone(); }this.shiftFocus(i,j);}if(e){f=h.delay(100,this,j);}else{f=(function(){e=true;h(j);}).delay(400);}}.bind(this);return h;}.bind(this);var b=function(){clearTimeout(f); e=false;};this.keyboard.addEvents({"keydown:shift+up":c(-1),"keydown:shift+down":c(1),"keyup:shift+up":b,"keyup:shift+down":b,"keyup:up":b,"keyup:down":b}); var a="";if(this.options.allowMultiSelect&&this.options.shiftForMultiSelect&&this.options.useKeyboard){a=" (Shift multi-selects).";}this.keyboard.addShortcuts({"Select Previous Row":{keys:"up",shortcut:"up arrow",handler:c(-1),description:"Select the previous row in the table."+a},"Select Next Row":{keys:"down",shortcut:"down arrow",handler:c(1),description:"Select the next row in the table."+a}}); }this.keyboard[d?"activate":"deactivate"]();}this.updateSelects();},mouseleave:function(){if(this.hovered){this.leaveRow(this.hovered);}}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(a,b){this.element.scrollTo(a,b); },fps:50},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);this.docBody=document.id(this.element.getDocument().body);this.listener=(typeOf(this.element)!="element")?this.docBody:this.element; this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach}); return this;},stop:function(){this.listener.removeEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=clearInterval(this.timer); return this;},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords);},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords); this.timer=clearInterval(this.timer);},getCoords:function(a){this.page=(this.listener.get("tag")=="body")?a.client:a.page;if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this); }},scroll:function(){var c=this.element.getSize(),a=this.element.getScroll(),h=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},d=this.element.getScrollSize(),g={x:0,y:0},e=this.options.area.top||this.options.area,b=this.options.area.bottom||this.options.area; for(var f in this.page){if(this.page[f]<(e+h[f])&&a[f]!=0){g[f]=(this.page[f]-e-h[f])*this.options.velocity;}else{if(this.page[f]+b>(c[f]+h[f])&&a[f]+c[f]!=d[f]){g[f]=(this.page[f]-c[f]+b-h[f])*this.options.velocity; }}g[f]=g[f].round();}if(g.y||g.x){this.fireEvent("change",[a.x+g.x,a.y+g.y]);}}});(function(){var a=function(c,b){return(c)?(typeOf(c)=="function"?c(b):b.get(c)):""; };this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none"); },title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false,waiAria:true},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,elements:function(c){return c!=null; }});this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});if(this.options.id){this.container.set("id",this.options.id); if(this.options.waiAria){this.attachWaiAria();}}},toElement:function(){if(this.tip){return this.tip;}this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"})); return this.tip;},attachWaiAria:function(){var b=this.options.id;this.container.set("role","tooltip");if(!this.waiAria){this.waiAria={show:function(c){if(b){c.set("aria-describedby",b); }this.container.set("aria-hidden","false");},hide:function(c){if(b){c.erase("aria-describedby");}this.container.set("aria-hidden","true");}};}this.addEvents(this.waiAria); },detachWaiAria:function(){if(this.waiAria){this.container.erase("role");this.container.erase("aria-hidden");this.removeEvents(this.waiAria);}},attach:function(b){$$(b).each(function(d){var f=a(this.options.title,d),e=a(this.options.text,d); d.set("title","").store("tip:native",f).retrieve("tip:title",f);d.retrieve("tip:text",e);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move"); }c.each(function(h){var g=d.retrieve("tip:"+h);if(!g){g=function(i){this["element"+h.capitalize()].apply(this,[i,d]);}.bind(this);}d.store("tip:"+h,g).addEvent("mouse"+h,g); },this);},this);return this;},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(e){d.removeEvent("mouse"+e,d.retrieve("tip:"+e)).eliminate("tip:"+e); });this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){clearTimeout(this.timer); this.timer=(function(){this.container.empty();["title","text"].each(function(e){var d=b.retrieve("tip:"+e);var f=this["_"+e+"Element"]=new Element("div",{"class":"tip-"+e}).inject(this.container); if(d){this.fill(f,d);}},this);this.show(b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){clearTimeout(this.timer); this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},setTitle:function(b){if(this._titleElement){this._titleElement.empty(); this.fill(this._titleElement,b);}return this;},setText:function(b){if(this._textElement){this._textElement.empty();this.fill(this._textElement,b);}return this; },fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return;}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b); }},elementMove:function(c,b){this.position(c);},position:function(f){if(!this.tip){document.id(this);}var c=window.getSize(),b=window.getScroll(),g={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},e={y:false,x2:false,y2:false,x:false},h={}; for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];if(h[d[i]]<0){e[i]=true;}if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i]; e[i+"2"]=true;}}this.fireEvent("bound",e);this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this); }if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]); }});})();(function(){var a={json:JSON.decode};Locale.Set.defineParser=function(b,c){a[b]=c;};Locale.Set.from=function(d,c){if(instanceOf(d,Locale.Set)){return d; }if(!c&&typeOf(d)=="string"){c="json";}if(a[c]){d=a[c](d);}var b=new Locale.Set;b.sets=d.sets||{};if(d.inherits){b.inherits.locales=Array.from(d.inherits.locales); b.inherits.sets=d.inherits.sets||{};}return b;};})();Locale.define("ar","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}); Locale.define("ar","FormValidator",{required:"هذا الحقل مطلوب.",minLength:"رجاءً إدخال {minLength} أحرف على الأقل (تم إدخال {length} أحرف).",maxLength:"الرجاء عدم إدخال أكثر من {maxLength} أحرف (تم إدخال {length} أحرف).",integer:"الرجاء إدخال عدد صحيح في هذا الحقل. أي رقم ذو كسر عشري أو مئوي (مثال 1.25 ) غير مسموح.",numeric:'الرجاء إدخال قيم رقمية في هذا الحقل (مثال "1" أو "1.1" أو "-1" أو "-1.1").',digits:"الرجاء أستخدام قيم رقمية وعلامات ترقيمية فقط في هذا الحقل (مثال, رقم هاتف مع نقطة أو شحطة)",alpha:"الرجاء أستخدام أحرف فقط (ا-ي) في هذا الحقل. أي فراغات أو علامات غير مسموحة.",alphanum:"الرجاء أستخدام أحرف فقط (ا-ي) أو أرقام (0-9) فقط في هذا الحقل. أي فراغات أو علامات غير مسموحة.",dateSuchAs:"الرجاء إدخال تاريخ صحيح كالتالي {date}",dateInFormatMDY:"الرجاء إدخال تاريخ صحيح (مثال, 31-12-1999)",email:"الرجاء إدخال بريد إلكتروني صحيح.",url:"الرجاء إدخال عنوان إلكتروني صحيح مثل http://www.example.com",currencyDollar:"الرجاء إدخال قيمة $ صحيحة. مثال, 100.00$",oneRequired:"الرجاء إدخال قيمة في أحد هذه الحقول على الأقل.",errorPrefix:"خطأ: ",warningPrefix:"تحذير: "}); Locale.define("ca-CA","Date",{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juli","Agost","Setembre","Octubre","Novembre","Desembre"],months_abbr:["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],days_abbr:["dg","dl","dt","dc","dj","dv","ds"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"fa menys d`un minut",minuteAgo:"fa un minut",minutesAgo:"fa {delta} minuts",hourAgo:"fa un hora",hoursAgo:"fa unes {delta} hores",dayAgo:"fa un dia",daysAgo:"fa {delta} dies",lessThanMinuteUntil:"menys d`un minut des d`ara",minuteUntil:"un minut des d`ara",minutesUntil:"{delta} minuts des d`ara",hourUntil:"un hora des d`ara",hoursUntil:"unes {delta} hores des d`ara",dayUntil:"1 dia des d`ara",daysUntil:"{delta} dies des d`ara"}); Locale.define("ca-CA","FormValidator",{required:"Aquest camp es obligatori.",minLength:"Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).",maxLength:"Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).",integer:"Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.",numeric:'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).",alpha:"Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admiteixen espais ni altres caracters.",alphanum:"Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.",dateSuchAs:"Per favor introdueix una data valida com {date}",dateInFormatMDY:'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")',email:'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "fred@domain.com".',url:"Per favor introdueix una URL valida com http://www.example.com.",currencyDollar:"Per favor introdueix una quantitat valida de €. Per exemple €100,00 .",oneRequired:"Per favor introdueix alguna cosa per al menys una d´aquestes entrades.",errorPrefix:"Error: ",warningPrefix:"Avis: ",noSpace:"No poden haver espais en aquesta entrada.",reqChkByNode:"No hi han elements seleccionats.",requiredChk:"Aquest camp es obligatori.",reqChkByName:"Per favor selecciona una {label}.",match:"Aquest camp necessita coincidir amb el camp {matchName}",startDate:"la data de inici",endDate:"la data de fi",currendDate:"la data actual",afterDate:"La data deu ser igual o posterior a {label}.",beforeDate:"La data deu ser igual o anterior a {label}.",startMonth:"Per favor selecciona un mes d´orige",sameMonth:"Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra."}); (function(){var a=function(e,d,c,b){if(e==1){return d;}else{if(e==2||e==3||e==4){return c;}else{return b;}}};Locale.define("cs-CZ","Date",{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],months_abbr:["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],days_abbr:["ne","po","út","st","čt","pá","so"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"dop.",PM:"odp.",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"před chvílí",minuteAgo:"přibližně před minutou",minutesAgo:function(b){return"před {delta} "+a(b,"minutou","minutami","minutami"); },hourAgo:"přibližně před hodinou",hoursAgo:function(b){return"před {delta} "+a(b,"hodinou","hodinami","hodinami");},dayAgo:"před dnem",daysAgo:function(b){return"před {delta} "+a(b,"dnem","dny","dny"); },weekAgo:"před týdnem",weeksAgo:function(b){return"před {delta} "+a(b,"týdnem","týdny","týdny");},monthAgo:"před měsícem",monthsAgo:function(b){return"před {delta} "+a(b,"měsícem","měsíci","měsíci"); },yearAgo:"před rokem",yearsAgo:function(b){return"před {delta} "+a(b,"rokem","lety","lety");},lessThanMinuteUntil:"za chvíli",minuteUntil:"přibližně za minutu",minutesUntil:function(b){return"za {delta} "+a(b,"minutu","minuty","minut"); },hourUntil:"přibližně za hodinu",hoursUntil:function(b){return"za {delta} "+a(b,"hodinu","hodiny","hodin");},dayUntil:"za den",daysUntil:function(b){return"za {delta} "+a(b,"den","dny","dnů"); },weekUntil:"za týden",weeksUntil:function(b){return"za {delta} "+a(b,"týden","týdny","týdnů");},monthUntil:"za měsíc",monthsUntil:function(b){return"za {delta} "+a(b,"měsíc","měsíce","měsíců"); },yearUntil:"za rok",yearsUntil:function(b){return"za {delta} "+a(b,"rok","roky","let");}});})();Locale.define("cs-CZ","FormValidator",{required:"Tato položka je povinná.",minLength:"Zadejte prosím alespoň {minLength} znaků (napsáno {length} znaků).",maxLength:"Zadejte prosím méně než {maxLength} znaků (nápsáno {length} znaků).",integer:"Zadejte prosím celé číslo. Desetinná čísla (např. 1.25) nejsou povolena.",numeric:'Zadejte jen číselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").',digits:"Zadejte prosím pouze čísla a interpunkční znaménka(například telefonní číslo s pomlčkami nebo tečkami je povoleno).",alpha:"Zadejte prosím pouze písmena (a-z). Mezery nebo jiné znaky nejsou povoleny.",alphanum:"Zadejte prosím pouze písmena (a-z) nebo číslice (0-9). Mezery nebo jiné znaky nejsou povoleny.",dateSuchAs:"Zadejte prosím platné datum jako {date}",dateInFormatMDY:'Zadejte prosím platné datum jako MM / DD / RRRR (tj. "12/31/1999")',email:'Zadejte prosím platnou e-mailovou adresu. Například "fred@domain.com".',url:"Zadejte prosím platnou URL adresu jako http://www.example.com.",currencyDollar:"Zadejte prosím platnou částku. Například $100.00.",oneRequired:"Zadejte prosím alespoň jednu hodnotu pro tyto položky.",errorPrefix:"Chyba: ",warningPrefix:"Upozornění: ",noSpace:"V této položce nejsou povoleny mezery",reqChkByNode:"Nejsou vybrány žádné položky.",requiredChk:"Tato položka je vyžadována.",reqChkByName:"Prosím vyberte {label}.",match:"Tato položka se musí shodovat s položkou {matchName}",startDate:"datum zahájení",endDate:"datum ukončení",currendDate:"aktuální datum",afterDate:"Datum by mělo být stejné nebo větší než {label}.",beforeDate:"Datum by mělo být stejné nebo menší než {label}.",startMonth:"Vyberte počáteční měsíc.",sameMonth:"Tyto dva datumy musí být ve stejném měsíci - změňte jeden z nich.",creditcard:"Zadané číslo kreditní karty je neplatné. Prosím opravte ho. Bylo zadáno {length} čísel."}); Locale.define("da-DK","Date",{months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],months_abbr:["jan.","feb.","mar.","apr.","maj.","jun.","jul.","aug.","sep.","okt.","nov.","dec."],days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],days_abbr:["søn","man","tir","ons","tor","fre","lør"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"mindre end et minut siden",minuteAgo:"omkring et minut siden",minutesAgo:"{delta} minutter siden",hourAgo:"omkring en time siden",hoursAgo:"omkring {delta} timer siden",dayAgo:"1 dag siden",daysAgo:"{delta} dage siden",weekAgo:"1 uge siden",weeksAgo:"{delta} uger siden",monthAgo:"1 måned siden",monthsAgo:"{delta} måneder siden",yearAgo:"1 år siden",yearsAgo:"{delta} år siden",lessThanMinuteUntil:"mindre end et minut fra nu",minuteUntil:"omkring et minut fra nu",minutesUntil:"{delta} minutter fra nu",hourUntil:"omkring en time fra nu",hoursUntil:"omkring {delta} timer fra nu",dayUntil:"1 dag fra nu",daysUntil:"{delta} dage fra nu",weekUntil:"1 uge fra nu",weeksUntil:"{delta} uger fra nu",monthUntil:"1 måned fra nu",monthsUntil:"{delta} måneder fra nu",yearUntil:"1 år fra nu",yearsUntil:"{delta} år fra nu"}); Locale.define("da-DK","FormValidator",{required:"Feltet skal udfyldes.",minLength:"Skriv mindst {minLength} tegn (du skrev {length} tegn).",maxLength:"Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.",numeric:'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").',digits:"Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).",alpha:"Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.",alphanum:"Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.",dateSuchAs:"Skriv en gyldig dato som {date}",dateInFormatMDY:'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")',email:'Skriv en gyldig e-mail adresse. F.eks "fred@domain.com".',url:'Skriv en gyldig URL adresse. F.eks "http://www.example.com".',currencyDollar:"Skriv et gldigt beløb. F.eks Kr.100.00 .",oneRequired:"Et eller flere af felterne i denne formular skal udfyldes.",errorPrefix:"Fejl: ",warningPrefix:"Advarsel: ",noSpace:"Der må ikke benyttes mellemrum i dette felt.",reqChkByNode:"Foretag et valg.",requiredChk:"Dette felt skal udfyldes.",reqChkByName:"Vælg en {label}.",match:"Dette felt skal matche {matchName} feltet",startDate:"start dato",endDate:"slut dato",currendDate:"dags dato",afterDate:"Datoen skal være større end eller lig med {label}.",beforeDate:"Datoen skal være mindre end eller lig med {label}.",startMonth:"Vælg en start måned",sameMonth:"De valgte datoer skal være i samme måned - skift en af dem."}); Locale.define("de-DE","Date",{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],months_abbr:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],days_abbr:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"vormittags",PM:"nachmittags",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"vor weniger als einer Minute",minuteAgo:"vor einer Minute",minutesAgo:"vor {delta} Minuten",hourAgo:"vor einer Stunde",hoursAgo:"vor {delta} Stunden",dayAgo:"vor einem Tag",daysAgo:"vor {delta} Tagen",weekAgo:"vor einer Woche",weeksAgo:"vor {delta} Wochen",monthAgo:"vor einem Monat",monthsAgo:"vor {delta} Monaten",yearAgo:"vor einem Jahr",yearsAgo:"vor {delta} Jahren",lessThanMinuteUntil:"in weniger als einer Minute",minuteUntil:"in einer Minute",minutesUntil:"in {delta} Minuten",hourUntil:"in ca. einer Stunde",hoursUntil:"in ca. {delta} Stunden",dayUntil:"in einem Tag",daysUntil:"in {delta} Tagen",weekUntil:"in einer Woche",weeksUntil:"in {delta} Wochen",monthUntil:"in einem Monat",monthsUntil:"in {delta} Monaten",yearUntil:"in einem Jahr",yearsUntil:"in {delta} Jahren"}); Locale.define("de-CH").inherit("de-DE","Date");Locale.define("de-CH","FormValidator",{required:"Dieses Feld ist obligatorisch.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",maxLength:"Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:"Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.",numeric:"Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. "1", "1.1", "-1" oder "-1.1").",digits:"Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).",alpha:"Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.",dateSuchAs:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel {date}",dateInFormatMDY:"Geben Sie bitte ein gültiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. "31.12.1999")",email:"Geben Sie bitte eine gültige E-Mail Adresse ein. Wie zum Beispiel "maria@bernasconi.ch".",url:"Geben Sie bitte eine gültige URL ein. Wie zum Beispiel http://www.example.com.",currencyDollar:"Geben Sie bitte einen gültigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .",oneRequired:"Machen Sie für mindestens eines der Eingabefelder einen Eintrag.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"In diesem Eingabefeld darf kein Leerzeichen sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld ist obligatorisch.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem Feld {matchName} übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eine von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); Locale.define("de-DE","FormValidator",{required:"Dieses Eingabefeld muss ausgefüllt werden.",minLength:"Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).",maxLength:"Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).",integer:'Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.',numeric:'Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.',digits:"Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).",alpha:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.",alphanum:"Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.",dateSuchAs:'Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").',dateInFormatMDY:'Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").',email:'Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "max@mustermann.de").',url:'Geben Sie bitte eine gültige URL ein (z.B. "http://www.example.com").',currencyDollar:"Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00€).",oneRequired:"Bitte füllen Sie mindestens ein Eingabefeld aus.",errorPrefix:"Fehler: ",warningPrefix:"Warnung: ",noSpace:"Es darf kein Leerzeichen in diesem Eingabefeld sein.",reqChkByNode:"Es wurden keine Elemente gewählt.",requiredChk:"Dieses Feld muss ausgefüllt werden.",reqChkByName:"Bitte wählen Sie ein {label}.",match:"Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.",startDate:"Das Anfangsdatum",endDate:"Das Enddatum",currendDate:"Das aktuelle Datum",afterDate:"Das Datum sollte zur gleichen Zeit oder später sein als {label}.",beforeDate:"Das Datum sollte zur gleichen Zeit oder früher sein als {label}.",startMonth:"Wählen Sie bitte einen Anfangsmonat",sameMonth:"Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.",creditcard:"Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben."}); Locale.define("EU","Number",{decimal:",",group:".",currency:{prefix:"€ "}});Locale.define("de-DE").inherit("EU","Number");Locale.define("en-GB","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}).inherit("en-US","Date"); Locale.define("es-ES","Date",{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],months_abbr:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],days_abbr:["dom","lun","mar","mié","juv","vie","sáb"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"hace menos de un minuto",minuteAgo:"hace un minuto",minutesAgo:"hace {delta} minutos",hourAgo:"hace una hora",hoursAgo:"hace unas {delta} horas",dayAgo:"hace un día",daysAgo:"hace {delta} días",weekAgo:"hace una semana",weeksAgo:"hace unas {delta} semanas",monthAgo:"hace un mes",monthsAgo:"hace {delta} meses",yearAgo:"hace un año",yearsAgo:"hace {delta} años",lessThanMinuteUntil:"menos de un minuto desde ahora",minuteUntil:"un minuto desde ahora",minutesUntil:"{delta} minutos desde ahora",hourUntil:"una hora desde ahora",hoursUntil:"unas {delta} horas desde ahora",dayUntil:"un día desde ahora",daysUntil:"{delta} días desde ahora",weekUntil:"una semana desde ahora",weeksUntil:"unas {delta} semanas desde ahora",monthUntil:"un mes desde ahora",monthsUntil:"{delta} meses desde ahora",yearUntil:"un año desde ahora",yearsUntil:"{delta} años desde ahora"}); Locale.define("es-AR").inherit("es-ES","Date");Locale.define("es-AR","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).",maxLength:"Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).",integer:"Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor use sólo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y/o puntos no está permitido).",alpha:"Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.",alphanum:"Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.",dateSuchAs:"Por favor ingrese una fecha válida como {date}",dateInFormatMDY:'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "fred@dominio.com".',url:"Por favor ingrese una URL válida como http://www.example.com.",currencyDollar:"Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .",oneRequired:"Por favor ingrese algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Advertencia: ",noSpace:"No se permiten espacios en este campo.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); Locale.define("es-ES","FormValidator",{required:"Este campo es obligatorio.",minLength:"Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).",maxLength:"Por favor introduce no más de {maxLength} caracteres (has introducido {length} caracteres).",integer:"Por favor introduce un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.",numeric:'Por favor introduce solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:"Por favor usa solo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y puntos no esta permitido).",alpha:"Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.",alphanum:"Por favor, usa solo letras (a-z) o números (0-9) en este campo. No se admiten espacios ni otros caracteres.",dateSuchAs:"Por favor introduce una fecha válida como {date}",dateInFormatMDY:'Por favor introduce una fecha válida como DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, introduce una dirección de email válida. Por ejemplo, "fred@domain.com".',url:"Por favor introduce una URL válida como http://www.example.com.",currencyDollar:"Por favor introduce una cantidad válida de €. Por ejemplo €100,00 .",oneRequired:"Por favor introduce algo para por lo menos una de estas entradas.",errorPrefix:"Error: ",warningPrefix:"Aviso: ",noSpace:"No pueden haber espacios en esta entrada.",reqChkByNode:"No hay elementos seleccionados.",requiredChk:"Este campo es obligatorio.",reqChkByName:"Por favor selecciona una {label}.",match:"Este campo necesita coincidir con el campo {matchName}",startDate:"la fecha de inicio",endDate:"la fecha de fin",currendDate:"la fecha actual",afterDate:"La fecha debe ser igual o posterior a {label}.",beforeDate:"La fecha debe ser igual o anterior a {label}.",startMonth:"Por favor selecciona un mes de origen",sameMonth:"Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra."}); Locale.define("et-EE","Date",{months:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],months_abbr:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],days:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],days_abbr:["pühap","esmasp","teisip","kolmap","neljap","reede","laup"],dateOrder:["month","date","year"],shortDate:"%m.%d.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"vähem kui minut aega tagasi",minuteAgo:"umbes minut aega tagasi",minutesAgo:"{delta} minutit tagasi",hourAgo:"umbes tund aega tagasi",hoursAgo:"umbes {delta} tundi tagasi",dayAgo:"1 päev tagasi",daysAgo:"{delta} päeva tagasi",weekAgo:"1 nädal tagasi",weeksAgo:"{delta} nädalat tagasi",monthAgo:"1 kuu tagasi",monthsAgo:"{delta} kuud tagasi",yearAgo:"1 aasta tagasi",yearsAgo:"{delta} aastat tagasi",lessThanMinuteUntil:"vähem kui minuti aja pärast",minuteUntil:"umbes minuti aja pärast",minutesUntil:"{delta} minuti pärast",hourUntil:"umbes tunni aja pärast",hoursUntil:"umbes {delta} tunni pärast",dayUntil:"1 päeva pärast",daysUntil:"{delta} päeva pärast",weekUntil:"1 nädala pärast",weeksUntil:"{delta} nädala pärast",monthUntil:"1 kuu pärast",monthsUntil:"{delta} kuu pärast",yearUntil:"1 aasta pärast",yearsUntil:"{delta} aasta pärast"}); Locale.define("et-EE","FormValidator",{required:"Väli peab olema täidetud.",minLength:"Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).",maxLength:"Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).",integer:"Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.",numeric:'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").',digits:"Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).",alpha:"Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.",alphanum:"Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.",dateSuchAs:"Palun sisestage kehtiv kuupäev kujul {date}",dateInFormatMDY:'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").',email:'Palun sisestage kehtiv e-maili aadress (näiteks: "fred@domain.com").',url:"Palun sisestage kehtiv URL (näiteks: http://www.example.com).",currencyDollar:"Palun sisestage kehtiv $ summa (näiteks: $100.00).",oneRequired:"Palun sisestage midagi vähemalt ühele antud väljadest.",errorPrefix:"Viga: ",warningPrefix:"Hoiatus: ",noSpace:"Väli ei tohi sisaldada tühikuid.",reqChkByNode:"Ükski väljadest pole valitud.",requiredChk:"Välja täitmine on vajalik.",reqChkByName:"Palun valige üks {label}.",match:"Väli peab sobima {matchName} väljaga",startDate:"algkuupäev",endDate:"lõppkuupäev",currendDate:"praegune kuupäev",afterDate:"Kuupäev peab olema võrdne või pärast {label}.",beforeDate:"Kuupäev peab olema võrdne või enne {label}.",startMonth:"Palun valige algkuupäev.",sameMonth:"Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva."}); Locale.define("fa","Date",{months:["ژانویه","فوریه","مارس","آپریل","مه","ژوئن","ژوئیه","آگوست","سپتامبر","اکتبر","نوامبر","دسامبر"],months_abbr:["1","2","3","4","5","6","7","8","9","10","11","12"],days:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],days_abbr:["ي","د","س","چ","پ","ج","ش"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"ق.ظ",PM:"ب.ظ",ordinal:"ام",lessThanMinuteAgo:"کمتر از یک دقیقه پیش",minuteAgo:"حدود یک دقیقه پیش",minutesAgo:"{delta} دقیقه پیش",hourAgo:"حدود یک ساعت پیش",hoursAgo:"حدود {delta} ساعت پیش",dayAgo:"1 روز پیش",daysAgo:"{delta} روز پیش",weekAgo:"1 هفته پیش",weeksAgo:"{delta} هفته پیش",monthAgo:"1 ماه پیش",monthsAgo:"{delta} ماه پیش",yearAgo:"1 سال پیش",yearsAgo:"{delta} سال پیش",lessThanMinuteUntil:"کمتر از یک دقیقه از حالا",minuteUntil:"حدود یک دقیقه از حالا",minutesUntil:"{delta} دقیقه از حالا",hourUntil:"حدود یک ساعت از حالا",hoursUntil:"حدود {delta} ساعت از حالا",dayUntil:"1 روز از حالا",daysUntil:"{delta} روز از حالا",weekUntil:"1 هفته از حالا",weeksUntil:"{delta} هفته از حالا",monthUntil:"1 ماه از حالا",monthsUntil:"{delta} ماه از حالا",yearUntil:"1 سال از حالا",yearsUntil:"{delta} سال از حالا"}); Locale.define("fa","FormValidator",{required:"این فیلد الزامی است.",minLength:"شما باید حداقل {minLength} حرف وارد کنید ({length} حرف وارد کرده اید).",maxLength:"لطفا حداکثر {maxLength} حرف وارد کنید (شما {length} حرف وارد کرده اید).",integer:"لطفا از عدد صحیح استفاده کنید. اعداد اعشاری (مانند 1.25) مجاز نیستند.",numeric:'لطفا فقط داده عددی وارد کنید (مانند "1" یا "1.1" یا "1-" یا "1.1-").',digits:"لطفا فقط از اعداد و علامتها در این فیلد استفاده کنید (برای مثال شماره تلفن با خط تیره و نقطه قابل قبول است).",alpha:"لطفا فقط از حروف الفباء برای این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.",alphanum:"لطفا فقط از حروف الفباء و اعداد در این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.",dateSuchAs:"لطفا یک تاریخ معتبر مانند {date} وارد کنید.",dateInFormatMDY:'لطفا یک تاریخ معتبر به شکل MM/DD/YYYY وارد کنید (مانند "12/31/1999").',email:'لطفا یک آدرس ایمیل معتبر وارد کنید. برای مثال "fred@domain.com".',url:"لطفا یک URL معتبر مانند http://www.example.com وارد کنید.",currencyDollar:"لطفا یک محدوده معتبر برای این بخش وارد کنید مانند 100.00$ .",oneRequired:"لطفا حداقل یکی از فیلدها را پر کنید.",errorPrefix:"خطا: ",warningPrefix:"هشدار: ",noSpace:"استفاده از فاصله در این بخش مجاز نیست.",reqChkByNode:"موردی انتخاب نشده است.",requiredChk:"این فیلد الزامی است.",reqChkByName:"لطفا یک {label} را انتخاب کنید.",match:"این فیلد باید با فیلد {matchName} مطابقت داشته باشد.",startDate:"تاریخ شروع",endDate:"تاریخ پایان",currendDate:"تاریخ کنونی",afterDate:"تاریخ میبایست برابر یا بعد از {label} باشد",beforeDate:"تاریخ میبایست برابر یا قبل از {label} باشد",startMonth:"لطفا ماه شروع را انتخاب کنید",sameMonth:"این دو تاریخ باید در یک ماه باشند - شما باید یکی یا هر دو را تغییر دهید.",creditcard:"شماره کارت اعتباری که وارد کرده اید معتبر نیست. لطفا شماره را بررسی کنید و مجددا تلاش کنید. {length} رقم وارد شده است."}); Locale.define("fi-FI","Date",{months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],months_abbr:["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],days_abbr:["su","ma","ti","ke","to","pe","la"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"vajaa minuutti sitten",minuteAgo:"noin minuutti sitten",minutesAgo:"{delta} minuuttia sitten",hourAgo:"noin tunti sitten",hoursAgo:"noin {delta} tuntia sitten",dayAgo:"päivä sitten",daysAgo:"{delta} päivää sitten",weekAgo:"viikko sitten",weeksAgo:"{delta} viikkoa sitten",monthAgo:"kuukausi sitten",monthsAgo:"{delta} kuukautta sitten",yearAgo:"vuosi sitten",yearsAgo:"{delta} vuotta sitten",lessThanMinuteUntil:"vajaan minuutin kuluttua",minuteUntil:"noin minuutin kuluttua",minutesUntil:"{delta} minuutin kuluttua",hourUntil:"noin tunnin kuluttua",hoursUntil:"noin {delta} tunnin kuluttua",dayUntil:"päivän kuluttua",daysUntil:"{delta} päivän kuluttua",weekUntil:"viikon kuluttua",weeksUntil:"{delta} viikon kuluttua",monthUntil:"kuukauden kuluttua",monthsUntil:"{delta} kuukauden kuluttua",yearUntil:"vuoden kuluttua",yearsUntil:"{delta} vuoden kuluttua"}); Locale.define("fi-FI","FormValidator",{required:"Tämä kenttä on pakollinen.",minLength:"Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).",maxLength:"Älä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).",integer:"Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.",numeric:'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").',digits:"Käytä pelkästään numeroita ja välimerkkejä tässä kentässä (syötteet, kuten esim. puhelinnumero, jossa on väliviivoja, pilkkuja tai pisteitä, kelpaa).",alpha:"Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.",alphanum:"Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.",dateSuchAs:"Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}",dateInFormatMDY:'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")',email:'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "matti@meikalainen.com").',url:"Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.example.com.",currencyDollar:"Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .",oneRequired:"Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.",errorPrefix:"Virhe: ",warningPrefix:"Varoitus: ",noSpace:"Tässä syötteessä ei voi olla välilyöntejä",reqChkByNode:"Ei valintoja.",requiredChk:"Tämä kenttä on pakollinen.",reqChkByName:"Ole hyvä ja valitse {label}.",match:"Tämän kentän tulee vastata kenttää {matchName}",startDate:"alkupäivämäärä",endDate:"loppupäivämäärä",currendDate:"nykyinen päivämäärä",afterDate:"Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.",beforeDate:"Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.",startMonth:"Ole hyvä ja valitse aloituskuukausi",sameMonth:"Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.",creditcard:"Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty."}); Locale.define("fi-FI","Number",{group:" "}).inherit("EU","Number");Locale.define("fr-FR","Date",{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],months_abbr:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],days_abbr:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:function(a){return(a>1)?"":"er"; },lessThanMinuteAgo:"il y a moins d'une minute",minuteAgo:"il y a une minute",minutesAgo:"il y a {delta} minutes",hourAgo:"il y a une heure",hoursAgo:"il y a {delta} heures",dayAgo:"il y a un jour",daysAgo:"il y a {delta} jours",weekAgo:"il y a une semaine",weeksAgo:"il y a {delta} semaines",monthAgo:"il y a 1 mois",monthsAgo:"il y a {delta} mois",yearthAgo:"il y a 1 an",yearsAgo:"il y a {delta} ans",lessThanMinuteUntil:"dans moins d'une minute",minuteUntil:"dans une minute",minutesUntil:"dans {delta} minutes",hourUntil:"dans une heure",hoursUntil:"dans {delta} heures",dayUntil:"dans un jour",daysUntil:"dans {delta} jours",weekUntil:"dans 1 semaine",weeksUntil:"dans {delta} semaines",monthUntil:"dans 1 mois",monthsUntil:"dans {delta} mois",yearUntil:"dans 1 an",yearsUntil:"dans {delta} ans"}); Locale.define("fr-FR","FormValidator",{required:"Ce champ est obligatoire.",length:"Veuillez saisir {length} caractère(s) (vous avez saisi {elLength} caractère(s)",minLength:"Veuillez saisir un minimum de {minLength} caractère(s) (vous avez saisi {length} caractère(s)).",maxLength:"Veuillez saisir un maximum de {maxLength} caractère(s) (vous avez saisi {length} caractère(s)).",integer:'Veuillez saisir un nombre entier dans ce champ. Les nombres décimaux (ex : "1,25") ne sont pas autorisés.',numeric:'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").',digits:"Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un numéro de téléphone avec des traits d'union est autorisé).",alpha:"Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",alphanum:"Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caractères ne sont pas autorisés.",dateSuchAs:"Veuillez saisir une date correcte comme {date}",dateInFormatMDY:'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").',email:'Veuillez saisir une adresse de courrier électronique. Par example "fred@domaine.com".',url:"Veuillez saisir une URL, comme http://www.example.com.",currencyDollar:"Veuillez saisir une quantité correcte. Par example 100,00€.",oneRequired:"Veuillez sélectionner au moins une de ces options.",errorPrefix:"Erreur : ",warningPrefix:"Attention : ",noSpace:"Ce champ n'accepte pas les espaces.",reqChkByNode:"Aucun élément n'est sélectionné.",requiredChk:"Ce champ est obligatoire.",reqChkByName:"Veuillez sélectionner un(e) {label}.",match:"Ce champ doit correspondre avec le champ {matchName}.",startDate:"date de début",endDate:"date de fin",currendDate:"date actuelle",afterDate:"La date doit être identique ou postérieure à {label}.",beforeDate:"La date doit être identique ou antérieure à {label}.",startMonth:"Veuillez sélectionner un mois de début.",sameMonth:"Ces deux dates doivent être dans le même mois - vous devez en modifier une.",creditcard:"Le numéro de carte de crédit est invalide. Merci de vérifier le numéro et de réessayer. Vous avez entré {length} chiffre(s)."}); Locale.define("fr-FR","Number",{group:" "}).inherit("EU","Number");Locale.define("he-IL","Date",{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],months_abbr:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],days_abbr:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"לפני פחות מדקה",minuteAgo:"לפני כדקה",minutesAgo:"לפני {delta} דקות",hourAgo:"לפני כשעה",hoursAgo:"לפני {delta} שעות",dayAgo:"לפני יום",daysAgo:"לפני {delta} ימים",weekAgo:"לפני שבוע",weeksAgo:"לפני {delta} שבועות",monthAgo:"לפני חודש",monthsAgo:"לפני {delta} חודשים",yearAgo:"לפני שנה",yearsAgo:"לפני {delta} שנים",lessThanMinuteUntil:"בעוד פחות מדקה",minuteUntil:"בעוד כדקה",minutesUntil:"בעוד {delta} דקות",hourUntil:"בעוד כשעה",hoursUntil:"בעוד {delta} שעות",dayUntil:"בעוד יום",daysUntil:"בעוד {delta} ימים",weekUntil:"בעוד שבוע",weeksUntil:"בעוד {delta} שבועות",monthUntil:"בעוד חודש",monthsUntil:"בעוד {delta} חודשים",yearUntil:"בעוד שנה",yearsUntil:"בעוד {delta} שנים"}); Locale.define("he-IL","FormValidator",{required:"נא למלא שדה זה.",minLength:"נא להזין לפחות {minLength} תווים (הזנת {length} תווים).",maxLength:"נא להזין עד {maxLength} תווים (הזנת {length} תווים).",integer:"נא להזין מספר שלם לשדה זה. מספרים עשרוניים (כמו 1.25) אינם חוקיים.",numeric:'נא להזין ערך מספרי בלבד בשדה זה (כמו "1", "1.1", "-1" או "-1.1").',digits:"נא להזין רק ספרות וסימני הפרדה בשדה זה (למשל, מספר טלפון עם מקפים או נקודות הוא חוקי).",alpha:"נא להזין רק אותיות באנגלית (a-z) בשדה זה. רווחים או תווים אחרים אינם חוקיים.",alphanum:"נא להזין רק אותריות באנגלית (a-z) או ספרות (0-9) בשדה זה. אווחרים או תווים אחרים אינם חוקיים.",dateSuchAs:"נא להזין תאריך חוקי, כמו {date}",dateInFormatMDY:'נא להזין תאריך חוקי בפורמט MM/DD/YYYY (כמו "12/31/1999")',email:'נא להזין כתובת אימייל חוקית. לדוגמה: "fred@domain.com".',url:"נא להזין כתובת אתר חוקית, כמו http://www.example.com.",currencyDollar:"נא להזין סכום דולרי חוקי. לדוגמה $100.00.",oneRequired:"נא לבחור לפחות בשדה אחד.",errorPrefix:"שגיאה: ",warningPrefix:"אזהרה: ",noSpace:"אין להזין רווחים בשדה זה.",reqChkByNode:"נא לבחור אחת מהאפשרויות.",requiredChk:"שדה זה נדרש.",reqChkByName:"נא לבחור {label}.",match:"שדה זה צריך להתאים לשדה {matchName}",startDate:"תאריך ההתחלה",endDate:"תאריך הסיום",currendDate:"התאריך הנוכחי",afterDate:"התאריך צריך להיות זהה או אחרי {label}.",beforeDate:"התאריך צריך להיות זהה או לפני {label}.",startMonth:"נא לבחור חודש התחלה",sameMonth:"שני תאריכים אלה צריכים להיות באותו חודש - נא לשנות אחד התאריכים.",creditcard:"מספר כרטיס האשראי שהוזן אינו חוקי. נא לבדוק שנית. הוזנו {length} ספרות."}); Locale.define("he-IL","Number",{decimal:".",group:",",currency:{suffix:" ₪"}});Locale.define("hu-HU","Date",{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],months_abbr:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],days:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],days_abbr:["V","H","K","Sze","Cs","P","Szo"],dateOrder:["year","month","date"],shortDate:"%Y.%m.%d.",shortTime:"%I:%M",AM:"de.",PM:"du.",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"alig egy perce",minuteAgo:"egy perce",minutesAgo:"{delta} perce",hourAgo:"egy órája",hoursAgo:"{delta} órája",dayAgo:"1 napja",daysAgo:"{delta} napja",weekAgo:"1 hete",weeksAgo:"{delta} hete",monthAgo:"1 hónapja",monthsAgo:"{delta} hónapja",yearAgo:"1 éve",yearsAgo:"{delta} éve",lessThanMinuteUntil:"alig egy perc múlva",minuteUntil:"egy perc múlva",minutesUntil:"{delta} perc múlva",hourUntil:"egy óra múlva",hoursUntil:"{delta} óra múlva",dayUntil:"1 nap múlva",daysUntil:"{delta} nap múlva",weekUntil:"1 hét múlva",weeksUntil:"{delta} hét múlva",monthUntil:"1 hónap múlva",monthsUntil:"{delta} hónap múlva",yearUntil:"1 év múlva",yearsUntil:"{delta} év múlva"}); Locale.define("hu-HU","FormValidator",{required:"A mező kitöltése kötelező.",minLength:"Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).",maxLength:"Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).",integer:"Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.",numeric:'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").',digits:"Csak számok és írásjelek megadása lehetséges (pl. telefonszám kötőjelek és/vagy perjelekkel).",alpha:"Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",alphanum:"Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.",dateSuchAs:"Valós dátum megadása szükséges (pl. {date}).",dateInFormatMDY:'Valós dátum megadása szükséges ÉÉÉÉ.HH.NN. formában. (pl. "1999.12.31.")',email:'Valós e-mail cím megadása szükséges (pl. "fred@domain.hu").',url:"Valós URL megadása szükséges (pl. http://www.example.com).",currencyDollar:"Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).",oneRequired:"Az alábbi mezők legalább egyikének kitöltése kötelező.",errorPrefix:"Hiba: ",warningPrefix:"Figyelem: ",noSpace:"A mező nem tartalmazhat szóközöket.",reqChkByNode:"Nincs egyetlen kijelölt elem sem.",requiredChk:"A mező kitöltése kötelező.",reqChkByName:"Egy {label} kiválasztása szükséges.",match:"A mezőnek egyeznie kell a(z) {matchName} mezővel.",startDate:"a kezdet dátuma",endDate:"a vég dátuma",currendDate:"jelenlegi dátum",afterDate:"A dátum nem lehet kisebb, mint {label}.",beforeDate:"A dátum nem lehet nagyobb, mint {label}.",startMonth:"Kezdeti hónap megadása szükséges.",sameMonth:"A két dátumnak ugyanazon hónapban kell lennie.",creditcard:"A megadott bankkártyaszám nem valódi (megadva {length} számjegy)."}); Locale.define("it-IT","Date",{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],months_abbr:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],days_abbr:["dom","lun","mar","mer","gio","ven","sab"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"º",lessThanMinuteAgo:"meno di un minuto fa",minuteAgo:"circa un minuto fa",minutesAgo:"circa {delta} minuti fa",hourAgo:"circa un'ora fa",hoursAgo:"circa {delta} ore fa",dayAgo:"circa 1 giorno fa",daysAgo:"circa {delta} giorni fa",weekAgo:"una settimana fa",weeksAgo:"{delta} settimane fa",monthAgo:"un mese fa",monthsAgo:"{delta} mesi fa",yearAgo:"un anno fa",yearsAgo:"{delta} anni fa",lessThanMinuteUntil:"tra meno di un minuto",minuteUntil:"tra circa un minuto",minutesUntil:"tra circa {delta} minuti",hourUntil:"tra circa un'ora",hoursUntil:"tra circa {delta} ore",dayUntil:"tra circa un giorno",daysUntil:"tra circa {delta} giorni",weekUntil:"tra una settimana",weeksUntil:"tra {delta} settimane",monthUntil:"tra un mese",monthsUntil:"tra {delta} mesi",yearUntil:"tra un anno",yearsUntil:"tra {delta} anni"}); Locale.define("it-IT","FormValidator",{required:"Il campo è obbligatorio.",minLength:"Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).",maxLength:"Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).",integer:"Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).",numeric:'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").',digits:"Inserire solo numeri e caratteri di punteggiatura. Per esempio è consentito un numero telefonico con trattini o punti.",alpha:"Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.",alphanum:"Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.",dateSuchAs:"Inserire una data valida del tipo {date}",dateInFormatMDY:'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")',email:'Inserire un indirizzo email valido. Per esempio "nome@dominio.com".',url:'Inserire un indirizzo valido. Per esempio "http://www.example.com".',currencyDollar:'Inserire un importo valido. Per esempio "$100.00".',oneRequired:"Completare almeno uno dei campi richiesti.",errorPrefix:"Errore: ",warningPrefix:"Attenzione: ",noSpace:"Non sono consentiti spazi.",reqChkByNode:"Nessuna voce selezionata.",requiredChk:"Il campo è obbligatorio.",reqChkByName:"Selezionare un(a) {label}.",match:"Il valore deve corrispondere al campo {matchName}",startDate:"data d'inizio",endDate:"data di fine",currendDate:"data attuale",afterDate:"La data deve corrispondere o essere successiva al {label}.",beforeDate:"La data deve corrispondere o essere precedente al {label}.",startMonth:"Selezionare un mese d'inizio",sameMonth:"Le due date devono essere dello stesso mese - occorre modificarne una."}); Locale.define("ja-JP","Date",{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],months_abbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],days:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],days_abbr:["日","月","火","水","木","金","土"],dateOrder:["year","month","date"],shortDate:"%Y/%m/%d",shortTime:"%H:%M",AM:"午前",PM:"午後",firstDayOfWeek:0,ordinal:"",lessThanMinuteAgo:"1分以内前",minuteAgo:"約1分前",minutesAgo:"約{delta}分前",hourAgo:"約1時間前",hoursAgo:"約{delta}時間前",dayAgo:"1日前",daysAgo:"{delta}日前",weekAgo:"1週間前",weeksAgo:"{delta}週間前",monthAgo:"1ヶ月前",monthsAgo:"{delta}ヶ月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"今から約1分以内",minuteUntil:"今から約1分",minutesUntil:"今から約{delta}分",hourUntil:"今から約1時間",hoursUntil:"今から約{delta}時間",dayUntil:"今から1日間",daysUntil:"今から{delta}日間",weekUntil:"今から1週間",weeksUntil:"今から{delta}週間",monthUntil:"今から1ヶ月",monthsUntil:"今から{delta}ヶ月",yearUntil:"今から1年",yearsUntil:"今から{delta}年"}); Locale.define("ja-JP","FormValidator",{required:"入力は必須です。",minLength:"入力文字数は{minLength}以上にしてください。({length}文字)",maxLength:"入力文字数は{maxLength}以下にしてください。({length}文字)",integer:"整数を入力してください。",numeric:'入力できるのは数値だけです。(例: "1", "1.1", "-1", "-1.1"....)',digits:"入力できるのは数値と句読記号です。 (例: -や+を含む電話番号など).",alpha:"入力できるのは半角英字だけです。それ以外の文字は入力できません。",alphanum:"入力できるのは半角英数字だけです。それ以外の文字は入力できません。",dateSuchAs:"有効な日付を入力してください。{date}",dateInFormatMDY:'日付の書式に誤りがあります。YYYY/MM/DD (i.e. "1999/12/31")',email:"メールアドレスに誤りがあります。",url:"URLアドレスに誤りがあります。",currencyDollar:"金額に誤りがあります。",oneRequired:"ひとつ以上入力してください。",errorPrefix:"エラー: ",warningPrefix:"警告: ",noSpace:"スペースは入力できません。",reqChkByNode:"選択されていません。",requiredChk:"この項目は必須です。",reqChkByName:"{label}を選択してください。",match:"{matchName}が入力されている場合必須です。",startDate:"開始日",endDate:"終了日",currendDate:"今日",afterDate:"{label}以降の日付にしてください。",beforeDate:"{label}以前の日付にしてください。",startMonth:"開始月を選択してください。",sameMonth:"日付が同一です。どちらかを変更してください。"}); Locale.define("ja-JP","Number",{decimal:".",group:",",currency:{decimals:0,prefix:"\\"}});Locale.define("nl-NL","Date",{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],months_abbr:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],days_abbr:["zo","ma","di","wo","do","vr","za"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"e",lessThanMinuteAgo:"minder dan een minuut geleden",minuteAgo:"ongeveer een minuut geleden",minutesAgo:"{delta} minuten geleden",hourAgo:"ongeveer een uur geleden",hoursAgo:"ongeveer {delta} uur geleden",dayAgo:"een dag geleden",daysAgo:"{delta} dagen geleden",weekAgo:"een week geleden",weeksAgo:"{delta} weken geleden",monthAgo:"een maand geleden",monthsAgo:"{delta} maanden geleden",yearAgo:"een jaar geleden",yearsAgo:"{delta} jaar geleden",lessThanMinuteUntil:"over minder dan een minuut",minuteUntil:"over ongeveer een minuut",minutesUntil:"over {delta} minuten",hourUntil:"over ongeveer een uur",hoursUntil:"over {delta} uur",dayUntil:"over ongeveer een dag",daysUntil:"over {delta} dagen",weekUntil:"over een week",weeksUntil:"over {delta} weken",monthUntil:"over een maand",monthsUntil:"over {delta} maanden",yearUntil:"over een jaar",yearsUntil:"over {delta} jaar"}); Locale.define("nl-NL","FormValidator",{required:"Dit veld is verplicht.",length:"Vul precies {length} karakters in (je hebt {elLength} karakters ingevoerd).",minLength:"Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).",maxLength:"Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).",integer:"Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.",numeric:'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").',digits:"Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).",alpha:"Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.",alphanum:"Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.",dateSuchAs:"Vul een geldige datum in, zoals {date}",dateInFormatMDY:'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")',email:'Vul een geldig e-mailadres in. Bijvoorbeeld "fred@domein.nl".',url:"Vul een geldige URL in, zoals http://www.example.com.",currencyDollar:"Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .",oneRequired:"Vul iets in bij in ieder geval een van deze velden.",warningPrefix:"Waarschuwing: ",errorPrefix:"Fout: ",noSpace:"Spaties zijn niet toegestaan in dit veld.",reqChkByNode:"Er zijn geen items geselecteerd.",requiredChk:"Dit veld is verplicht.",reqChkByName:"Selecteer een {label}.",match:"Dit veld moet overeen komen met het {matchName} veld",startDate:"de begin datum",endDate:"de eind datum",currendDate:"de huidige datum",afterDate:"De datum moet hetzelfde of na {label} zijn.",beforeDate:"De datum moet hetzelfde of voor {label} zijn.",startMonth:"Selecteer een begin maand",sameMonth:"Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.",creditcard:"Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld."}); Locale.define("nl-NL").inherit("EU","Number");Locale.define("no-NO","Date",{dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,lessThanMinuteAgo:"kortere enn et minutt siden",minuteAgo:"omtrent et minutt siden",minutesAgo:"{delta} minutter siden",hourAgo:"omtrent en time siden",hoursAgo:"omtrent {delta} timer siden",dayAgo:"{delta} dag siden",daysAgo:"{delta} dager siden"}); Locale.define("no-NO","FormValidator",{required:"Dette feltet er pÃ¥krevd.",minLength:"Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).",maxLength:"Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).",integer:"Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.",numeric:'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").',digits:"Vennligst bruk kun nummer og skilletegn i dette feltet.",alpha:"Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",alphanum:"Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.",dateSuchAs:"Vennligst skriv inn en gyldig dato, som {date}",dateInFormatMDY:'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")',email:'Vennligst skriv inn en gyldig epost-adresse. For eksempel "espen@domene.no".',url:"Vennligst skriv inn en gyldig URL, for eksempel http://www.example.com.",currencyDollar:"Vennligst fyll ut et gyldig $ beløp. For eksempel $100.00 .",oneRequired:"Vennligst fyll ut noe i minst ett av disse feltene.",errorPrefix:"Feil: ",warningPrefix:"Advarsel: "}); Locale.define("pl-PL","Date",{months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],months_abbr:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],days_abbr:["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"nad ranem",PM:"po południu",firstDayOfWeek:1,ordinal:function(a){return(a>3&&a<21)?"ty":["ty","szy","gi","ci","ty"][Math.min(a%10,4)]; },lessThanMinuteAgo:"mniej niż minute temu",minuteAgo:"około minutę temu",minutesAgo:"{delta} minut temu",hourAgo:"około godzinę temu",hoursAgo:"około {delta} godzin temu",dayAgo:"Wczoraj",daysAgo:"{delta} dni temu",lessThanMinuteUntil:"za niecałą minutę",minuteUntil:"za około minutę",minutesUntil:"za {delta} minut",hourUntil:"za około godzinę",hoursUntil:"za około {delta} godzin",dayUntil:"za 1 dzień",daysUntil:"za {delta} dni"}); Locale.define("pl-PL","FormValidator",{required:"To pole jest wymagane.",minLength:"Wymagane jest przynajmniej {minLength} znaków (wpisanych zostało tylko {length}).",maxLength:"Dozwolone jest nie więcej niż {maxLength} znaków (wpisanych zostało {length})",integer:"To pole wymaga liczb całych. Liczby dziesiętne (np. 1.25) są niedozwolone.",numeric:'Prosimy używać tylko numerycznych wartości w tym polu (np. "1", "1.1", "-1" lub "-1.1").',digits:"Prosimy używać liczb oraz zankow punktuacyjnych w typ polu (dla przykładu, przy numerze telefonu myślniki i kropki są dozwolone).",alpha:"Prosimy używać tylko liter (a-z) w tym polu. Spacje oraz inne znaki są niedozwolone.",alphanum:"Prosimy używać tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki są niedozwolone.",dateSuchAs:"Prosimy podać prawidłową datę w formacie: {date}",dateInFormatMDY:'Prosimy podać poprawną date w formacie DD.MM.RRRR (i.e. "12.01.2009")',email:'Prosimy podać prawidłowy adres e-mail, np. "jan@domena.pl".',url:"Prosimy podać prawidłowy adres URL, np. http://www.example.com.",currencyDollar:"Prosimy podać prawidłową sumę w PLN. Dla przykładu: 100.00 PLN.",oneRequired:"Prosimy wypełnić chociaż jedno z pól.",errorPrefix:"Błąd: ",warningPrefix:"Uwaga: ",noSpace:"W tym polu nie mogą znajdować się spacje.",reqChkByNode:"Brak zaznaczonych elementów.",requiredChk:"To pole jest wymagane.",reqChkByName:"Prosimy wybrać z {label}.",match:"To pole musi być takie samo jak {matchName}",startDate:"data początkowa",endDate:"data końcowa",currendDate:"aktualna data",afterDate:"Podana data poinna być taka sama lub po {label}.",beforeDate:"Podana data poinna być taka sama lub przed {label}.",startMonth:"Prosimy wybrać początkowy miesiąc.",sameMonth:"Te dwie daty muszą być w zakresie tego samego miesiąca - wymagana jest zmiana któregoś z pól."}); Locale.define("pt-PT","Date",{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],months_abbr:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],days:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],days_abbr:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dateOrder:["date","month","year"],shortDate:"%d-%m-%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"º",lessThanMinuteAgo:"há menos de um minuto",minuteAgo:"há cerca de um minuto",minutesAgo:"há {delta} minutos",hourAgo:"há cerca de uma hora",hoursAgo:"há cerca de {delta} horas",dayAgo:"há um dia",daysAgo:"há {delta} dias",weekAgo:"há uma semana",weeksAgo:"há {delta} semanas",monthAgo:"há um mês",monthsAgo:"há {delta} meses",yearAgo:"há um ano",yearsAgo:"há {delta} anos",lessThanMinuteUntil:"em menos de um minuto",minuteUntil:"em um minuto",minutesUntil:"em {delta} minutos",hourUntil:"em uma hora",hoursUntil:"em {delta} horas",dayUntil:"em um dia",daysUntil:"em {delta} dias",weekUntil:"em uma semana",weeksUntil:"em {delta} semanas",monthUntil:"em um mês",monthsUntil:"em {delta} meses",yearUntil:"em um ano",yearsUntil:"em {delta} anos"}); Locale.define("pt-BR","Date",{shortDate:"%d/%m/%Y"}).inherit("pt-PT","Date");Locale.define("pt-BR","FormValidator",{required:"Este campo é obrigatório.",minLength:"Digite pelo menos {minLength} caracteres (tamanho atual: {length}).",maxLength:"Não digite mais de {maxLength} caracteres (tamanho atual: {length}).",integer:"Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).",numeric:'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).",alpha:"Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "nome@dominio.com".',url:"Digite uma URL válida. Exemplo: http://www.example.com.",currencyDollar:"Digite um valor em dinheiro válido. Exemplo: R$100,00 .",oneRequired:"Digite algo para pelo menos um desses campos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: ",noSpace:"Não é possível digitar espaços neste campo.",reqChkByNode:"Não foi selecionado nenhum item.",requiredChk:"Este campo é obrigatório.",reqChkByName:"Por favor digite um {label}.",match:"Este campo deve ser igual ao campo {matchName}.",startDate:"a data inicial",endDate:"a data final",currendDate:"a data atual",afterDate:"A data deve ser igual ou posterior a {label}.",beforeDate:"A data deve ser igual ou anterior a {label}.",startMonth:"Por favor selecione uma data inicial.",sameMonth:"Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.",creditcard:"O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados."}); Locale.define("pt-PT","FormValidator",{required:"Este campo é necessário.",minLength:"Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).",maxLength:"Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).",integer:"Digite um número inteiro neste domínio. Com números decimais (por exemplo, 1,25), não são permitidas.",numeric:'Digite apenas valores numéricos neste domínio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").',digits:"Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).",alpha:"Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.",alphanum:"Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.",dateSuchAs:"Digite uma data válida, como {date}",dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "fred@domain.com".',url:"Digite uma URL válida, como http://www.example.com.",currencyDollar:"Digite um valor válido $. Por exemplo $ 100,00. ",oneRequired:"Digite algo para pelo menos um desses insumos.",errorPrefix:"Erro: ",warningPrefix:"Aviso: "}); (function(){var a=function(h,e,d,g,b){var c=h%10,f=h%100;if(c==1&&f!=11){return e;}else{if((c==2||c==3||c==4)&&!(f==12||f==13||f==14)){return d;}else{if(c==0||(c==5||c==6||c==7||c==8||c==9)||(f==11||f==12||f==13||f==14)){return g; }else{return b;}}}};Locale.define("ru-RU","Date",{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],months_abbr:["янв","февр","март","апр","май","июнь","июль","авг","сент","окт","нояб","дек"],days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],days_abbr:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H:%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"меньше минуты назад",minuteAgo:"минуту назад",minutesAgo:function(b){return"{delta} "+a(b,"минуту","минуты","минут")+" назад"; },hourAgo:"час назад",hoursAgo:function(b){return"{delta} "+a(b,"час","часа","часов")+" назад";},dayAgo:"вчера",daysAgo:function(b){return"{delta} "+a(b,"день","дня","дней")+" назад"; },weekAgo:"неделю назад",weeksAgo:function(b){return"{delta} "+a(b,"неделя","недели","недель")+" назад";},monthAgo:"месяц назад",monthsAgo:function(b){return"{delta} "+a(b,"месяц","месяца","месецев")+" назад"; },yearAgo:"год назад",yearsAgo:function(b){return"{delta} "+a(b,"год","года","лет")+" назад";},lessThanMinuteUntil:"меньше чем через минуту",minuteUntil:"через минуту",minutesUntil:function(b){return"через {delta} "+a(b,"час","часа","часов")+""; },hourUntil:"через час",hoursUntil:function(b){return"через {delta} "+a(b,"час","часа","часов")+"";},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","дня","дней")+""; },weekUntil:"через неделю",weeksUntil:function(b){return"через {delta} "+a(b,"неделю","недели","недель")+"";},monthUntil:"через месяц",monthsUntil:function(b){return"через {delta} "+a(b,"месяц","месяца","месецев")+""; },yearUntil:"через",yearsUntil:function(b){return"через {delta} "+a(b,"год","года","лет")+"";}});})();Locale.define("ru-RU","FormValidator",{required:"Это поле обязательно к заполнению.",minLength:"Пожалуйста, введите хотя бы {minLength} символов (Вы ввели {length}).",maxLength:"Пожалуйста, введите не больше {maxLength} символов (Вы ввели {length}).",integer:"Пожалуйста, введите в это поле число. Дробные числа (например 1.25) тут не разрешены.",numeric:'Пожалуйста, введите в это поле число (например "1" или "1.1", или "-1", или "-1.1").',digits:"В этом поле Вы можете использовать только цифры и знаки пунктуации (например, телефонный номер со знаками дефиса или с точками).",alpha:"В этом поле можно использовать только латинские буквы (a-z). Пробелы и другие символы запрещены.",alphanum:"В этом поле можно использовать только латинские буквы (a-z) и цифры (0-9). Пробелы и другие символы запрещены.",dateSuchAs:"Пожалуйста, введите корректную дату {date}",dateInFormatMDY:'Пожалуйста, введите дату в формате ММ/ДД/ГГГГ (например "12/31/1999")',email:'Пожалуйста, введите корректный емейл-адрес. Для примера "fred@domain.com".',url:"Пожалуйста, введите правильную ссылку вида http://www.example.com.",currencyDollar:"Пожалуйста, введите сумму в долларах. Например: $100.00 .",oneRequired:"Пожалуйста, выберите хоть что-нибудь в одном из этих полей.",errorPrefix:"Ошибка: ",warningPrefix:"Внимание: "}); (function(){var a=function(f,d,c,e,b){return(f>=1&&f<=3)?arguments[f]:b;};Locale.define("si-SI","Date",{months:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],days:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],days_abbr:["ned","pon","tor","sre","čet","pet","sob"],dateOrder:["date","month","year"],shortDate:"%d.%m.%Y",shortTime:"%H.%M",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:".",lessThanMinuteAgo:"manj kot minuto nazaj",minuteAgo:"minuto nazaj",minutesAgo:function(b){return"{delta} "+a(b,"minuto","minuti","minute","minut")+" nazaj"; },hourAgo:"uro nazaj",hoursAgo:function(b){return"{delta} "+a(b,"uro","uri","ure","ur")+" nazaj";},dayAgo:"dan nazaj",daysAgo:function(b){return"{delta} "+a(b,"dan","dneva","dni","dni")+" nazaj"; },weekAgo:"teden nazaj",weeksAgo:function(b){return"{delta} "+a(b,"teden","tedna","tedne","tednov")+" nazaj";},monthAgo:"mesec nazaj",monthsAgo:function(b){return"{delta} "+a(b,"mesec","meseca","mesece","mesecov")+" nazaj"; },yearthAgo:"leto nazaj",yearsAgo:function(b){return"{delta} "+a(b,"leto","leti","leta","let")+" nazaj";},lessThanMinuteUntil:"še manj kot minuto",minuteUntil:"še minuta",minutesUntil:function(b){return"še {delta} "+a(b,"minuta","minuti","minute","minut"); },hourUntil:"še ura",hoursUntil:function(b){return"še {delta} "+a(b,"ura","uri","ure","ur");},dayUntil:"še dan",daysUntil:function(b){return"še {delta} "+a(b,"dan","dneva","dnevi","dni"); },weekUntil:"še tedn",weeksUntil:function(b){return"še {delta} "+a(b,"teden","tedna","tedni","tednov");},monthUntil:"še mesec",monthsUntil:function(b){return"še {delta} "+a(b,"mesec","meseca","meseci","mesecov"); },yearUntil:"še leto",yearsUntil:function(b){return"še {delta} "+a(b,"leto","leti","leta","let");}});})();Locale.define("si-SI","FormValidator",{required:"To polje je obvezno",minLength:"Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).",maxLength:"Prosim, ne vnesite več kot {maxLength} znakov (vnesli ste {length} znakov).",integer:"Prosim, vnesite celo število. Decimalna števila (kot 1,25) niso dovoljena.",numeric:'Prosim, vnesite samo numerične vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").',digits:"Prosim, uporabite številke in ločila le na tem polju (na primer, dovoljena je telefonska številka z pomišlaji ali pikami).",alpha:"Prosim, uporabite le črke v tem plju. Presledki in drugi znaki niso dovoljeni.",alphanum:"Prosim, uporabite samo črke ali številke v tem polju. Presledki in drugi znaki niso dovoljeni.",dateSuchAs:"Prosim, vnesite pravilen datum kot {date}",dateInFormatMDY:'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")',email:'Prosim, vnesite pravilen email naslov. Na primer "fred@domain.com".',url:"Prosim, vnesite pravilen URL kot http://www.example.com.",currencyDollar:"Prosim, vnesit epravilno vrednost €. Primer 100,00€ .",oneRequired:"Prosimo, vnesite nekaj za vsaj eno izmed teh polj.",errorPrefix:"Napaka: ",warningPrefix:"Opozorilo: ",noSpace:"To vnosno polje ne dopušča presledkov.",reqChkByNode:"Nič niste izbrali.",requiredChk:"To polje je obvezno",reqChkByName:"Prosim, izberite {label}.",match:"To polje se mora ujemati z poljem {matchName}",startDate:"datum začetka",endDate:"datum konca",currendDate:"trenuten datum",afterDate:"Datum bi moral biti isti ali po {label}.",beforeDate:"Datum bi moral biti isti ali pred {label}.",startMonth:"Prosim, vnesite začetni datum",sameMonth:"Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.",creditcard:"Številka kreditne kartice ni pravilna. Preverite številko ali poskusite še enkrat. Vnešenih {length} znakov."}); Locale.define("sv-SE","Date",{months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],months_abbr:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],days_abbr:["sön","mån","tis","ons","tor","fre","lör"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%H:%M",AM:"",PM:"",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"mindre än en minut sedan",minuteAgo:"ungefär en minut sedan",minutesAgo:"{delta} minuter sedan",hourAgo:"ungefär en timme sedan",hoursAgo:"ungefär {delta} timmar sedan",dayAgo:"1 dag sedan",daysAgo:"{delta} dagar sedan",lessThanMinuteUntil:"mindre än en minut sedan",minuteUntil:"ungefär en minut sedan",minutesUntil:"{delta} minuter sedan",hourUntil:"ungefär en timme sedan",hoursUntil:"ungefär {delta} timmar sedan",dayUntil:"1 dag sedan",daysUntil:"{delta} dagar sedan"}); Locale.define("sv-SE","FormValidator",{required:"Fältet är obligatoriskt.",minLength:"Ange minst {minLength} tecken (du angav {length} tecken).",maxLength:"Ange högst {maxLength} tecken (du angav {length} tecken). ",integer:"Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.",numeric:'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',digits:"Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).",alpha:"Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.",alphanum:"Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.",dateSuchAs:"Ange ett giltigt datum som t.ex. {date}",dateInFormatMDY:'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',email:'Ange en giltig e-postadress. Till exempel "erik@domain.com".',url:"Ange en giltig webbadress som http://www.example.com.",currencyDollar:"Ange en giltig belopp. Exempelvis 100,00.",oneRequired:"Vänligen ange minst ett av dessa alternativ.",errorPrefix:"Fel: ",warningPrefix:"Varning: ",noSpace:"Det får inte finnas några mellanslag i detta fält.",reqChkByNode:"Inga objekt är valda.",requiredChk:"Detta är ett obligatoriskt fält.",reqChkByName:"Välj en {label}.",match:"Detta fält måste matcha {matchName}",startDate:"startdatumet",endDate:"slutdatum",currendDate:"dagens datum",afterDate:"Datumet bör vara samma eller senare än {label}.",beforeDate:"Datumet bör vara samma eller tidigare än {label}.",startMonth:"Välj en start månad",sameMonth:"Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra."}); (function(){var a=function(j,e,c,i,b){var h=(j/10).toInt(),g=j%10,f=(j/100).toInt();if(h==1&&j>10){return i;}if(g==1){return e;}if(g>0&&g<5){return c;}return i; };Locale.define("uk-UA","Date",{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],months_abbr:["Січ","Лют","Бер","Квіт","Трав","Черв","Лип","Серп","Вер","Жовт","Лист","Груд"],days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],days_abbr:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M",AM:"до полудня",PM:"по полудню",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"меньше хвилини тому",minuteAgo:"хвилину тому",minutesAgo:function(b){return"{delta} "+a(b,"хвилину","хвилини","хвилин")+" тому"; },hourAgo:"годину тому",hoursAgo:function(b){return"{delta} "+a(b,"годину","години","годин")+" тому";},dayAgo:"вчора",daysAgo:function(b){return"{delta} "+a(b,"день","дня","днів")+" тому"; },weekAgo:"тиждень тому",weeksAgo:function(b){return"{delta} "+a(b,"тиждень","тижні","тижнів")+" тому";},monthAgo:"місяць тому",monthsAgo:function(b){return"{delta} "+a(b,"місяць","місяці","місяців")+" тому"; },yearAgo:"рік тому",yearsAgo:function(b){return"{delta} "+a(b,"рік","роки","років")+" тому";},lessThanMinuteUntil:"за мить",minuteUntil:"через хвилину",minutesUntil:function(b){return"через {delta} "+a(b,"хвилину","хвилини","хвилин"); },hourUntil:"через годину",hoursUntil:function(b){return"через {delta} "+a(b,"годину","години","годин");},dayUntil:"завтра",daysUntil:function(b){return"через {delta} "+a(b,"день","дня","днів"); },weekUntil:"через тиждень",weeksUntil:function(b){return"через {delta} "+a(b,"тиждень","тижні","тижнів");},monthUntil:"через місяць",monthesUntil:function(b){return"через {delta} "+a(b,"місяць","місяці","місяців"); },yearUntil:"через рік",yearsUntil:function(b){return"через {delta} "+a(b,"рік","роки","років");}});})();Locale.define("uk-UA","FormValidator",{required:"Це поле повинне бути заповненим.",minLength:"Введіть хоча б {minLength} символів (Ви ввели {length}).",maxLength:"Кількість символів не може бути більше {maxLength} (Ви ввели {length}).",integer:"Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.",numeric:'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',digits:"В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).",alpha:"В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.",alphanum:"В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.",dateSuchAs:"Введіть коректну дату {date}.",dateInFormatMDY:'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',email:'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',url:"Введіть коректне інтернет-посилання (наприклад http://www.example.com).",currencyDollar:'Введіть суму в доларах (наприклад "$100.00").',oneRequired:"Заповніть одне з полів.",errorPrefix:"Помилка: ",warningPrefix:"Увага: ",noSpace:"Пробіли заборонені.",reqChkByNode:"Не відмічено жодного варіанту.",requiredChk:"Це поле повинне бути віміченим.",reqChkByName:"Будь ласка, відмітьте {label}.",match:"Це поле повинно відповідати {matchName}",startDate:"початкова дата",endDate:"кінцева дата",currendDate:"сьогоднішня дата",afterDate:"Ця дата повинна бути такою ж, або пізнішою за {label}.",beforeDate:"Ця дата повинна бути такою ж, або ранішою за {label}.",startMonth:"Будь ласка, виберіть початковий місяць",sameMonth:"Ці дати повинні відноситись одного і того ж місяця. Будь ласка, змініть одну з них.",creditcard:"Номер кредитної карти введений неправильно. Будь ласка, перевірте його. Введено {length} символів."}); Locale.define("zh-CHS","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],months_abbr:["一","二","三","四","五","六","七","八","九","十","十一","十二"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["日","一","二","三","四","五","六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"不到1分钟前",minuteAgo:"大约1分钟前",minutesAgo:"{delta}分钟之前",hourAgo:"大约1小时前",hoursAgo:"大约{delta}小时前",dayAgo:"1天前",daysAgo:"{delta}天前",weekAgo:"1星期前",weeksAgo:"{delta}星期前",monthAgo:"1个月前",monthsAgo:"{delta}个月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"从现在开始不到1分钟",minuteUntil:"从现在开始約1分钟",minutesUntil:"从现在开始约{delta}分钟",hourUntil:"从现在开始1小时",hoursUntil:"从现在开始约{delta}小时",dayUntil:"从现在开始1天",daysUntil:"从现在开始{delta}天",weekUntil:"从现在开始1星期",weeksUntil:"从现在开始{delta}星期",monthUntil:"从现在开始一个月",monthsUntil:"从现在开始{delta}个月",yearUntil:"从现在开始1年",yearsUntil:"从现在开始{delta}年"}); Locale.define("zh-CHT","Date",{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],months_abbr:["一","二","三","四","五","六","七","八","九","十","十一","十二"],days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],days_abbr:["日","一","二","三","四","五","六"],dateOrder:["year","month","date"],shortDate:"%Y-%m-%d",shortTime:"%I:%M%p",AM:"AM",PM:"PM",firstDayOfWeek:1,ordinal:"",lessThanMinuteAgo:"不到1分鐘前",minuteAgo:"大約1分鐘前",minutesAgo:"{delta}分鐘之前",hourAgo:"大約1小時前",hoursAgo:"大約{delta}小時前",dayAgo:"1天前",daysAgo:"{delta}天前",weekAgo:"1星期前",weeksAgo:"{delta}星期前",monthAgo:"1个月前",monthsAgo:"{delta}个月前",yearAgo:"1年前",yearsAgo:"{delta}年前",lessThanMinuteUntil:"從現在開始不到1分鐘",minuteUntil:"從現在開始約1分鐘",minutesUntil:"從現在開始約{delta}分鐘",hourUntil:"從現在開始1小時",hoursUntil:"從現在開始約{delta}小時",dayUntil:"從現在開始1天",daysUntil:"從現在開始{delta}天",weekUntil:"從現在開始1星期",weeksUntil:"從現在開始{delta}星期",monthUntil:"從現在開始一個月",monthsUntil:"從現在開始{delta}個月",yearUntil:"從現在開始1年",yearsUntil:"從現在開始{delta}年"}); Locale.define("zh-CHS","FormValidator",{required:"此项必填。",minLength:"请至少输入 {minLength} 个字符 (已输入 {length} 个)。",maxLength:"最多只能输入 {maxLength} 个字符 (已输入 {length} 个)。",integer:'请输入一个整数,不能包含小数点。例如:"1", "200"。',numeric:'请输入一个数字,例如:"1", "1.1", "-1", "-1.1"。',digits:"请输入由数字和标点符号组成的内容。例如电话号码。",alpha:"请输入 A-Z 的 26 个字母,不能包含空格或任何其他字符。",alphanum:"请输入 A-Z 的 26 个字母或 0-9 的 10 个数字,不能包含空格或任何其他字符。",dateSuchAs:"请输入合法的日期格式,如:{date}。",dateInFormatMDY:'请输入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。',email:'请输入合法的电子信箱地址,例如:"fred@domain.com"。',url:"请输入合法的 Url 地址,例如:http://www.example.com。",currencyDollar:"请输入合法的货币符号,例如:¥100.0",oneRequired:"请至少选择一项。",errorPrefix:"错误:",warningPrefix:"警告:",noSpace:"不能包含空格。",reqChkByNode:"未选择任何内容。",requiredChk:"此项必填。",reqChkByName:"请选择 {label}.",match:"必须与{matchName}相匹配",startDate:"起始日期",endDate:"结束日期",currendDate:"当前日期",afterDate:"日期必须等于或晚于 {label}.",beforeDate:"日期必须早于或等于 {label}.",startMonth:"请选择起始月份",sameMonth:"您必须修改两个日期中的一个,以确保它们在同一月份。",creditcard:"您输入的信用卡号码不正确。当前已输入{length}个字符。"}); Locale.define("zh-CHT","FormValidator",{required:"此項必填。 ",minLength:"請至少輸入{minLength} 個字符(已輸入{length} 個)。 ",maxLength:"最多只能輸入{maxLength} 個字符(已輸入{length} 個)。 ",integer:'請輸入一個整數,不能包含小數點。例如:"1", "200"。 ',numeric:'請輸入一個數字,例如:"1", "1.1", "-1", "-1.1"。 ',digits:"請輸入由數字和標點符號組成的內容。例如電話號碼。 ",alpha:"請輸入AZ 的26 個字母,不能包含空格或任何其他字符。 ",alphanum:"請輸入AZ 的26 個字母或0-9 的10 個數字,不能包含空格或任何其他字符。 ",dateSuchAs:"請輸入合法的日期格式,如:{date}。 ",dateInFormatMDY:'請輸入合法的日期格式,例如:YYYY-MM-DD ("2010-12-31")。 ',email:'請輸入合法的電子信箱地址,例如:"fred@domain.com"。 ',url:"請輸入合法的Url 地址,例如:http://www.example.com。 ",currencyDollar:"請輸入合法的貨幣符號,例如:¥100.0",oneRequired:"請至少選擇一項。 ",errorPrefix:"錯誤:",warningPrefix:"警告:",noSpace:"不能包含空格。 ",reqChkByNode:"未選擇任何內容。 ",requiredChk:"此項必填。 ",reqChkByName:"請選擇 {label}.",match:"必須與{matchName}相匹配",startDate:"起始日期",endDate:"結束日期",currendDate:"當前日期",afterDate:"日期必須等於或晚於{label}.",beforeDate:"日期必須早於或等於{label}.",startMonth:"請選擇起始月份",sameMonth:"您必須修改兩個日期中的一個,以確保它們在同一月份。 ",creditcard:"您輸入的信用卡號碼不正確。當前已輸入{length}個字符。 "}); Form.Validator.add("validate-currency-yuan",{errorMsg:function(){return Form.Validator.getMsg("currencyYuan");},test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^¥?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value")); }});