From 5e0b7fdf7a0892025f9370dea7161503c1c33e2a Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Wed, 16 Apr 2014 11:48:10 +1200 Subject: [PATCH] Updated jquery validate plugin (dist files only) Cleanup of validation script. Refactor into template to allow customisation of validation. Explicitly set error element to 'span' as per new jquery-validate support [ref: CWPBUG-110] --- _config.php | 4 + code/model/UserDefinedForm.php | 82 +- .../EditableCountryDropdownField.php | 2 +- code/model/formfields/EditableDateField.php | 4 +- code/model/formfields/EditableEmailField.php | 8 +- code/model/formfields/EditableFormField.php | 19 +- .../model/formfields/EditableNumericField.php | 4 + code/model/formfields/EditableTextField.php | 8 +- templates/ValidationScript.ss | 44 + thirdparty/jquery-validate/.gitattributes | 2 - thirdparty/jquery-validate/.gitignore | 9 - thirdparty/jquery-validate/.travis.yml | 6 - thirdparty/jquery-validate/CONTRIBUTING.md | 16 - thirdparty/jquery-validate/Gruntfile.js | 128 - thirdparty/jquery-validate/README.md | 41 - .../jquery-validate/additional-methods.js | 1121 +- .../jquery-validate/additional-methods.min.js | 4 + thirdparty/jquery-validate/changelog.txt | 361 - .../demo/ajaxSubmit-integration-demo.html | 80 - .../jquery-validate/demo/captcha/captcha.js | 27 - .../demo/captcha/fonts/Anorexia.ttf | Bin 14300 -> 0 bytes .../demo/captcha/image_req.php | 6 - .../demo/captcha/images/.htaccess | 1 - .../demo/captcha/images/button.png | Bin 1546 -> 0 bytes .../demo/captcha/images/image.php | 35 - .../jquery-validate/demo/captcha/index.php | 66 - .../demo/captcha/newsession.php | 12 - .../jquery-validate/demo/captcha/process.php | 14 - .../jquery-validate/demo/captcha/rand.php | 11 - .../jquery-validate/demo/captcha/style.css | 140 - thirdparty/jquery-validate/demo/css/chili.css | 15 - .../jquery-validate/demo/css/cmxform.css | 46 - .../demo/css/cmxformTemplate.css | 55 - thirdparty/jquery-validate/demo/css/core.css | 21 - thirdparty/jquery-validate/demo/css/reset.css | 61 - .../jquery-validate/demo/css/screen.css | 11 - .../demo/custom-messages-data-demo.html | 74 - .../demo/custom-methods-demo.html | 116 - .../jquery-validate/demo/dynamic-totals.html | 145 - .../demo/errorcontainer-demo.html | 155 - .../jquery-validate/demo/file_input.html | 53 - thirdparty/jquery-validate/demo/form.php | 10 - thirdparty/jquery-validate/demo/form.phps | 10 - thirdparty/jquery-validate/demo/images/bg.gif | Bin 1175 -> 0 bytes .../jquery-validate/demo/images/checked.gif | Bin 220 -> 0 bytes .../demo/images/cmxform-divider.gif | Bin 43 -> 0 bytes .../demo/images/cmxform-fieldset.gif | Bin 314 -> 0 bytes .../jquery-validate/demo/images/loading.gif | Bin 418 -> 0 bytes .../jquery-validate/demo/images/unchecked.gif | Bin 223 -> 0 bytes thirdparty/jquery-validate/demo/index.html | 228 - .../jquery-validate/demo/jquerymobile.html | 71 - .../jquery-validate/demo/js/chili-1.7.pack.js | 1 - .../jquery-validate/demo/login/images/bg.gif | Bin 89 -> 0 bytes .../demo/login/images/header1.jpg | Bin 442 -> 0 bytes .../demo/login/images/page.gif | Bin 664 -> 0 bytes .../demo/login/images/required_star.gif | Bin 121 -> 0 bytes .../jquery-validate/demo/login/index.html | 76 - .../jquery-validate/demo/login/screen.css | 457 - .../jquery-validate/demo/marketo/emails.php | 10 - .../jquery-validate/demo/marketo/emails.phps | 10 - .../jquery-validate/demo/marketo/ie6.css | 35 - .../demo/marketo/images/backRequiredGray.gif | Bin 137 -> 0 bytes .../demo/marketo/images/back_green-fade.gif | Bin 2421 -> 0 bytes .../demo/marketo/images/back_nav_blue.gif | Bin 1668 -> 0 bytes .../demo/marketo/images/blank.gif | Bin 799 -> 0 bytes .../demo/marketo/images/button-submit.gif | Bin 4527 -> 0 bytes .../demo/marketo/images/favicon.ico | Bin 1150 -> 0 bytes .../demo/marketo/images/help.png | Bin 1615 -> 0 bytes .../marketo/images/left-nav-callout-long.png | Bin 1381 -> 0 bytes .../demo/marketo/images/login-sprite.gif | Bin 2017 -> 0 bytes .../demo/marketo/images/logo_marketo.gif | Bin 8363 -> 0 bytes .../demo/marketo/images/sf.png | Bin 3745 -> 0 bytes .../demo/marketo/images/step1-24.gif | Bin 1357 -> 0 bytes .../demo/marketo/images/step2-24.gif | Bin 1355 -> 0 bytes .../demo/marketo/images/step3-24.gif | Bin 1362 -> 0 bytes .../demo/marketo/images/tab-sprite.gif | Bin 4710 -> 0 bytes .../demo/marketo/images/tab_green.gif | Bin 1652 -> 0 bytes .../demo/marketo/images/time.png | Bin 793 -> 0 bytes .../demo/marketo/images/toggle.gif | Bin 845 -> 0 bytes .../demo/marketo/images/warning.gif | Bin 234 -> 0 bytes .../jquery-validate/demo/marketo/index.html | 242 - .../demo/marketo/jquery.maskedinput.js | 267 - .../jquery-validate/demo/marketo/mktSignup.js | 125 - .../jquery-validate/demo/marketo/step2.htm | 291 - .../demo/marketo/stylesheet.css | 1179 -- thirdparty/jquery-validate/demo/milk/bg.gif | Bin 73 -> 0 bytes .../jquery-validate/demo/milk/emails.php | 10 - .../jquery-validate/demo/milk/emails.phps | 10 - .../jquery-validate/demo/milk/index.html | 233 - .../jquery-validate/demo/milk/left_white.png | Bin 538 -> 0 bytes thirdparty/jquery-validate/demo/milk/milk.css | 236 - thirdparty/jquery-validate/demo/milk/milk.png | Bin 5121 -> 0 bytes .../jquery-validate/demo/milk/right_white.png | Bin 1579 -> 0 bytes .../jquery-validate/demo/milk/users.php | 12 - .../jquery-validate/demo/milk/users.phps | 10 - .../jquery-validate/demo/multipart/index.html | 412 - .../multipart/js/jquery.maskedinput-1.0.js | 246 - .../demo/multipart/js/ui.accordion.js | 477 - .../demo/multipart/js/ui.core.js | 519 - .../jquery-validate/demo/multipart/style.css | 705 -- .../demo/radio-checkbox-select-demo.html | 149 - .../jquery-validate/demo/tabs/index.html | 152 - .../jquery-validate/demo/themerollered.html | 229 - .../jquery-validate/demo/tinymce/index.html | 76 - .../tinymce/themes/simple/editor_template.js | 1 - .../demo/tinymce/themes/simple/img/icons.gif | Bin 1440 -> 0 bytes .../demo/tinymce/themes/simple/langs/en.js | 11 - .../themes/simple/skins/default/ui.css | 32 - .../jquery-validate/demo/tinymce/tiny_mce.js | 1 - .../jquery-validation-1.12.1pre.zip | Bin 0 -> 835922 bytes thirdparty/jquery-validate/jquery.validate.js | 947 +- .../jquery-validate/jquery.validate.min.js | 4 + .../jquery-validate/lib/jquery-1.6.4.js | 9046 ---------------- .../jquery-validate/lib/jquery-1.7.2.js | 9404 ---------------- .../jquery-validate/lib/jquery-1.8.3.js | 9472 ---------------- .../jquery-validate/lib/jquery-1.9.0.js | 9555 ----------------- thirdparty/jquery-validate/lib/jquery.form.js | 1121 -- thirdparty/jquery-validate/lib/jquery.js | 27 - .../jquery-validate/lib/jquery.mockjax.js | 382 - .../localization/messages_ar.js | 50 +- .../localization/messages_ar.min.js | 4 + .../localization/messages_bg.js | 50 +- .../localization/messages_bg.min.js | 4 + .../localization/messages_ca.js | 50 +- .../localization/messages_ca.min.js | 4 + .../localization/messages_cs.js | 50 +- .../localization/messages_cs.min.js | 4 + .../localization/messages_da.js | 44 +- .../localization/messages_da.min.js | 4 + .../localization/messages_de.js | 44 +- .../localization/messages_de.min.js | 4 + .../localization/messages_el.js | 50 +- .../localization/messages_el.min.js | 4 + .../localization/messages_es.js | 53 +- .../localization/messages_es.min.js | 4 + .../localization/messages_es_AR.js | 37 + .../localization/messages_es_AR.min.js | 4 + .../localization/messages_et.js | 46 +- .../localization/messages_et.min.js | 4 + .../localization/messages_eu.js | 50 +- .../localization/messages_eu.min.js | 4 + .../localization/messages_fa.js | 53 +- .../localization/messages_fa.min.js | 4 + .../localization/messages_fi.js | 46 +- .../localization/messages_fi.min.js | 4 + .../localization/messages_fr.js | 98 +- .../localization/messages_fr.min.js | 4 + .../localization/messages_gl.js | 38 + .../localization/messages_gl.min.js | 4 + .../localization/messages_he.js | 50 +- .../localization/messages_he.min.js | 4 + .../localization/messages_hr.js | 50 +- .../localization/messages_hr.min.js | 4 + .../localization/messages_hu.js | 48 +- .../localization/messages_hu.min.js | 4 + .../localization/messages_id.js | 32 + .../localization/messages_id.min.js | 4 + .../localization/messages_is.js | 31 + .../localization/messages_is.min.js | 4 + .../localization/messages_it.js | 53 +- .../localization/messages_it.min.js | 4 + .../localization/messages_ja.js | 50 +- .../localization/messages_ja.min.js | 4 + .../localization/messages_ka.js | 50 +- .../localization/messages_ka.min.js | 4 + .../localization/messages_kk.js | 50 +- .../localization/messages_kk.min.js | 4 + .../localization/messages_ko.js | 33 + .../localization/messages_ko.min.js | 4 + .../localization/messages_lt.js | 50 +- .../localization/messages_lt.min.js | 4 + .../localization/messages_lv.js | 50 +- .../localization/messages_lv.min.js | 4 + .../localization/messages_my.js | 50 +- .../localization/messages_my.min.js | 4 + .../localization/messages_nl.js | 68 +- .../localization/messages_nl.min.js | 4 + .../localization/messages_no.js | 50 +- .../localization/messages_no.min.js | 4 + .../localization/messages_pl.js | 50 +- .../localization/messages_pl.min.js | 4 + .../localization/messages_pt_BR.js | 53 +- .../localization/messages_pt_BR.min.js | 4 + .../localization/messages_pt_PT.js | 53 +- .../localization/messages_pt_PT.min.js | 4 + .../localization/messages_ro.js | 50 +- .../localization/messages_ro.min.js | 4 + .../localization/messages_ru.js | 50 +- .../localization/messages_ru.min.js | 4 + .../localization/messages_si.js | 50 +- .../localization/messages_si.min.js | 4 + .../localization/messages_sk.js | 44 +- .../localization/messages_sk.min.js | 4 + .../localization/messages_sl.js | 50 +- .../localization/messages_sl.min.js | 4 + .../localization/messages_sr.js | 50 +- .../localization/messages_sr.min.js | 4 + .../localization/messages_sr_lat.js | 33 + .../localization/messages_sr_lat.min.js | 4 + .../localization/messages_sv.js | 46 +- .../localization/messages_sv.min.js | 4 + .../localization/messages_th.js | 50 +- .../localization/messages_th.min.js | 4 + .../localization/messages_tj.js | 33 + .../localization/messages_tj.min.js | 4 + .../localization/messages_tr.js | 50 +- .../localization/messages_tr.min.js | 4 + .../localization/messages_uk.js | 50 +- .../localization/messages_uk.min.js | 4 + .../localization/messages_vi.js | 50 +- .../localization/messages_vi.min.js | 4 + .../localization/messages_zh.js | 50 +- .../localization/messages_zh.min.js | 4 + .../localization/messages_zh_TW.js | 50 +- .../localization/messages_zh_TW.min.js | 4 + .../localization/methods_de.js | 14 +- .../localization/methods_de.min.js | 4 + .../localization/methods_es_CL.js | 22 + .../localization/methods_es_CL.min.js | 4 + .../localization/methods_nl.js | 14 +- .../localization/methods_nl.min.js | 4 + .../localization/methods_pt.js | 14 +- .../localization/methods_pt.min.js | 4 + thirdparty/jquery-validate/package.json | 42 - thirdparty/jquery-validate/test/events.html | 71 - .../test/firebug/errorIcon.png | Bin 457 -> 0 bytes .../jquery-validate/test/firebug/firebug.css | 209 - .../jquery-validate/test/firebug/firebug.html | 23 - .../jquery-validate/test/firebug/firebug.js | 672 -- .../jquery-validate/test/firebug/firebugx.js | 10 - .../jquery-validate/test/firebug/infoIcon.png | Bin 524 -> 0 bytes .../test/firebug/warningIcon.png | Bin 516 -> 0 bytes thirdparty/jquery-validate/test/index.html | 324 - thirdparty/jquery-validate/test/jquery.js | 25 - thirdparty/jquery-validate/test/large.html | 188 - thirdparty/jquery-validate/test/messages.js | 62 - thirdparty/jquery-validate/test/methods.js | 945 -- .../jquery-validate/test/qunit/qunit.css | 235 - .../jquery-validate/test/qunit/qunit.js | 1977 ---- thirdparty/jquery-validate/test/rules.js | 273 - .../jquery-validate/test/selects/index.html | 436 - thirdparty/jquery-validate/test/tabs.html | 78 - thirdparty/jquery-validate/test/test.js | 1453 --- thirdparty/jquery-validate/todo | 161 - .../jquery-validate/validation.jquery.json | 29 - 245 files changed, 3056 insertions(+), 56263 deletions(-) create mode 100644 templates/ValidationScript.ss delete mode 100644 thirdparty/jquery-validate/.gitattributes delete mode 100644 thirdparty/jquery-validate/.gitignore delete mode 100644 thirdparty/jquery-validate/.travis.yml delete mode 100644 thirdparty/jquery-validate/CONTRIBUTING.md delete mode 100644 thirdparty/jquery-validate/Gruntfile.js delete mode 100644 thirdparty/jquery-validate/README.md create mode 100644 thirdparty/jquery-validate/additional-methods.min.js delete mode 100644 thirdparty/jquery-validate/changelog.txt delete mode 100644 thirdparty/jquery-validate/demo/ajaxSubmit-integration-demo.html delete mode 100644 thirdparty/jquery-validate/demo/captcha/captcha.js delete mode 100644 thirdparty/jquery-validate/demo/captcha/fonts/Anorexia.ttf delete mode 100644 thirdparty/jquery-validate/demo/captcha/image_req.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/.htaccess delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/button.png delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/image.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/index.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/newsession.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/process.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/rand.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/style.css delete mode 100644 thirdparty/jquery-validate/demo/css/chili.css delete mode 100644 thirdparty/jquery-validate/demo/css/cmxform.css delete mode 100644 thirdparty/jquery-validate/demo/css/cmxformTemplate.css delete mode 100644 thirdparty/jquery-validate/demo/css/core.css delete mode 100644 thirdparty/jquery-validate/demo/css/reset.css delete mode 100644 thirdparty/jquery-validate/demo/css/screen.css delete mode 100644 thirdparty/jquery-validate/demo/custom-messages-data-demo.html delete mode 100644 thirdparty/jquery-validate/demo/custom-methods-demo.html delete mode 100644 thirdparty/jquery-validate/demo/dynamic-totals.html delete mode 100644 thirdparty/jquery-validate/demo/errorcontainer-demo.html delete mode 100644 thirdparty/jquery-validate/demo/file_input.html delete mode 100644 thirdparty/jquery-validate/demo/form.php delete mode 100644 thirdparty/jquery-validate/demo/form.phps delete mode 100644 thirdparty/jquery-validate/demo/images/bg.gif delete mode 100644 thirdparty/jquery-validate/demo/images/checked.gif delete mode 100644 thirdparty/jquery-validate/demo/images/cmxform-divider.gif delete mode 100644 thirdparty/jquery-validate/demo/images/cmxform-fieldset.gif delete mode 100644 thirdparty/jquery-validate/demo/images/loading.gif delete mode 100644 thirdparty/jquery-validate/demo/images/unchecked.gif delete mode 100644 thirdparty/jquery-validate/demo/index.html delete mode 100644 thirdparty/jquery-validate/demo/jquerymobile.html delete mode 100644 thirdparty/jquery-validate/demo/js/chili-1.7.pack.js delete mode 100644 thirdparty/jquery-validate/demo/login/images/bg.gif delete mode 100644 thirdparty/jquery-validate/demo/login/images/header1.jpg delete mode 100644 thirdparty/jquery-validate/demo/login/images/page.gif delete mode 100644 thirdparty/jquery-validate/demo/login/images/required_star.gif delete mode 100644 thirdparty/jquery-validate/demo/login/index.html delete mode 100644 thirdparty/jquery-validate/demo/login/screen.css delete mode 100644 thirdparty/jquery-validate/demo/marketo/emails.php delete mode 100644 thirdparty/jquery-validate/demo/marketo/emails.phps delete mode 100644 thirdparty/jquery-validate/demo/marketo/ie6.css delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/backRequiredGray.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/back_green-fade.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/back_nav_blue.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/blank.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/button-submit.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/favicon.ico delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/help.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/left-nav-callout-long.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/login-sprite.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/logo_marketo.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/sf.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/step1-24.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/step2-24.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/step3-24.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/tab-sprite.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/tab_green.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/time.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/toggle.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/warning.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/index.html delete mode 100644 thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js delete mode 100644 thirdparty/jquery-validate/demo/marketo/mktSignup.js delete mode 100644 thirdparty/jquery-validate/demo/marketo/step2.htm delete mode 100644 thirdparty/jquery-validate/demo/marketo/stylesheet.css delete mode 100644 thirdparty/jquery-validate/demo/milk/bg.gif delete mode 100644 thirdparty/jquery-validate/demo/milk/emails.php delete mode 100644 thirdparty/jquery-validate/demo/milk/emails.phps delete mode 100644 thirdparty/jquery-validate/demo/milk/index.html delete mode 100644 thirdparty/jquery-validate/demo/milk/left_white.png delete mode 100644 thirdparty/jquery-validate/demo/milk/milk.css delete mode 100644 thirdparty/jquery-validate/demo/milk/milk.png delete mode 100644 thirdparty/jquery-validate/demo/milk/right_white.png delete mode 100644 thirdparty/jquery-validate/demo/milk/users.php delete mode 100644 thirdparty/jquery-validate/demo/milk/users.phps delete mode 100644 thirdparty/jquery-validate/demo/multipart/index.html delete mode 100644 thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js delete mode 100644 thirdparty/jquery-validate/demo/multipart/js/ui.accordion.js delete mode 100644 thirdparty/jquery-validate/demo/multipart/js/ui.core.js delete mode 100644 thirdparty/jquery-validate/demo/multipart/style.css delete mode 100644 thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html delete mode 100644 thirdparty/jquery-validate/demo/tabs/index.html delete mode 100644 thirdparty/jquery-validate/demo/themerollered.html delete mode 100644 thirdparty/jquery-validate/demo/tinymce/index.html delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/img/icons.gif delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/langs/en.js delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/skins/default/ui.css delete mode 100644 thirdparty/jquery-validate/demo/tinymce/tiny_mce.js create mode 100644 thirdparty/jquery-validate/jquery-validation-1.12.1pre.zip create mode 100644 thirdparty/jquery-validate/jquery.validate.min.js delete mode 100644 thirdparty/jquery-validate/lib/jquery-1.6.4.js delete mode 100644 thirdparty/jquery-validate/lib/jquery-1.7.2.js delete mode 100644 thirdparty/jquery-validate/lib/jquery-1.8.3.js delete mode 100644 thirdparty/jquery-validate/lib/jquery-1.9.0.js delete mode 100644 thirdparty/jquery-validate/lib/jquery.form.js delete mode 100644 thirdparty/jquery-validate/lib/jquery.js delete mode 100644 thirdparty/jquery-validate/lib/jquery.mockjax.js create mode 100644 thirdparty/jquery-validate/localization/messages_ar.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_bg.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_ca.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_cs.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_da.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_de.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_el.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_es.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_es_AR.js create mode 100644 thirdparty/jquery-validate/localization/messages_es_AR.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_et.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_eu.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_fa.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_fi.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_fr.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_gl.js create mode 100644 thirdparty/jquery-validate/localization/messages_gl.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_he.min.js mode change 100755 => 100644 thirdparty/jquery-validate/localization/messages_hr.js create mode 100644 thirdparty/jquery-validate/localization/messages_hr.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_hu.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_id.js create mode 100644 thirdparty/jquery-validate/localization/messages_id.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_is.js create mode 100644 thirdparty/jquery-validate/localization/messages_is.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_it.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_ja.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_ka.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_kk.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_ko.js create mode 100644 thirdparty/jquery-validate/localization/messages_ko.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_lt.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_lv.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_my.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_nl.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_no.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_pl.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_pt_BR.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_pt_PT.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_ro.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_ru.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_si.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_sk.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_sl.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_sr.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_sr_lat.js create mode 100644 thirdparty/jquery-validate/localization/messages_sr_lat.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_sv.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_th.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_tj.js create mode 100644 thirdparty/jquery-validate/localization/messages_tj.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_tr.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_uk.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_vi.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_zh.min.js create mode 100644 thirdparty/jquery-validate/localization/messages_zh_TW.min.js create mode 100644 thirdparty/jquery-validate/localization/methods_de.min.js create mode 100644 thirdparty/jquery-validate/localization/methods_es_CL.js create mode 100644 thirdparty/jquery-validate/localization/methods_es_CL.min.js create mode 100644 thirdparty/jquery-validate/localization/methods_nl.min.js create mode 100644 thirdparty/jquery-validate/localization/methods_pt.min.js delete mode 100644 thirdparty/jquery-validate/package.json delete mode 100644 thirdparty/jquery-validate/test/events.html delete mode 100644 thirdparty/jquery-validate/test/firebug/errorIcon.png delete mode 100644 thirdparty/jquery-validate/test/firebug/firebug.css delete mode 100644 thirdparty/jquery-validate/test/firebug/firebug.html delete mode 100644 thirdparty/jquery-validate/test/firebug/firebug.js delete mode 100644 thirdparty/jquery-validate/test/firebug/firebugx.js delete mode 100644 thirdparty/jquery-validate/test/firebug/infoIcon.png delete mode 100644 thirdparty/jquery-validate/test/firebug/warningIcon.png delete mode 100644 thirdparty/jquery-validate/test/index.html delete mode 100644 thirdparty/jquery-validate/test/jquery.js delete mode 100644 thirdparty/jquery-validate/test/large.html delete mode 100644 thirdparty/jquery-validate/test/messages.js delete mode 100644 thirdparty/jquery-validate/test/methods.js delete mode 100644 thirdparty/jquery-validate/test/qunit/qunit.css delete mode 100644 thirdparty/jquery-validate/test/qunit/qunit.js delete mode 100644 thirdparty/jquery-validate/test/rules.js delete mode 100644 thirdparty/jquery-validate/test/selects/index.html delete mode 100644 thirdparty/jquery-validate/test/tabs.html delete mode 100644 thirdparty/jquery-validate/test/test.js delete mode 100644 thirdparty/jquery-validate/todo delete mode 100644 thirdparty/jquery-validate/validation.jquery.json diff --git a/_config.php b/_config.php index b3d9bbc7f..f6092e98b 100644 --- a/_config.php +++ b/_config.php @@ -1 +1,5 @@ HideFieldLabels) Requirements::javascript('userforms/thirdparty/Placeholders.js/Placeholders.min.js'); + Requirements::javascript(USERFORMS_DIR . '/thirdparty/jquery-validate/jquery.validate.min.js'); + Requirements::add_i18n_javascript(USERFORMS_DIR . '/javascript/lang'); + Requirements::javascript(USERFORMS_DIR . '/javascript/UserForm_frontend.js'); + Requirements::javascript( + USERFORMS_DIR . "/thirdparty/jquery-validate/localization/messages_{$lang}.min.js" + ); + Requirements::javascript( + USERFORMS_DIR . "/thirdparty/jquery-validate/localization/methods_{$lang}.min.js" + ); + if($this->HideFieldLabels) { + Requirements::javascript(USERFORMS_DIR . '/thirdparty/Placeholders.js/Placeholders.min.js'); + } } /** @@ -592,63 +599,16 @@ public function getFormActions() { * @return RequiredFields */ public function getRequiredFields() { - $required = new RequiredFields(); - - $rules = array(); - $validation = array(); - $messages = array(); - $onfocusout = ""; - $hidelabels = ""; - - if($this->Fields()) { - foreach($this->Fields() as $field) { - if (!in_array($field->ClassName, array('EditableEmailField', 'EditableNumericField'))) { - $messages[$field->Name] = $field->getErrorMessage()->HTML(); - } - - if($field->Required) { - $rules[$field->Name] = array_merge(array('required' => true), $field->getValidation()); - $required->addRequiredField($field->Name); - } - } - } - - // Enable live validation - if($this->EnableLiveValidation) $onfocusout = ", onfocusout : function(element) { this.element(element); }"; - - // Hide field labels (use HTML5 placeholder instead) - if($this->HideFieldLabels) $hidelabels = '$("#Form_Form label.left").each(function(){$("#"+$(this).attr("for")).attr("placeholder",$(this).text());$(this).remove();});Placeholders.init();'; - - // Set the Form Name - $rules = $this->array2json($rules); - $messages = $this->array2json($messages); // set the custom script for this form - Requirements::customScript(<<renderWith('ValidationScript'), 'UserFormsValidation'); + + // Generate required field validator + $requiredNames = $this + ->Fields() + ->filter('Required', true) + ->column('Name'); + $required = new RequiredFields($requiredNames); $this->extend('updateRequiredFields', $required); diff --git a/code/model/formfields/EditableCountryDropdownField.php b/code/model/formfields/EditableCountryDropdownField.php index 264a6e64a..3f69fc2e3 100644 --- a/code/model/formfields/EditableCountryDropdownField.php +++ b/code/model/formfields/EditableCountryDropdownField.php @@ -23,6 +23,6 @@ public function getValueFromData($data) { } public function getIcon() { - return 'userforms/images/editabledropdown.png'; + return USERFORMS_DIR . '/images/editabledropdown.png'; } } \ No newline at end of file diff --git a/code/model/formfields/EditableDateField.php b/code/model/formfields/EditableDateField.php index 1facbbbb6..e9adaa0c1 100755 --- a/code/model/formfields/EditableDateField.php +++ b/code/model/formfields/EditableDateField.php @@ -52,8 +52,8 @@ public function getFormField() { * @return Array */ public function getValidation() { - return array( + return array_merge(parent::getValidation(), array( 'date' => true - ); + )); } } diff --git a/code/model/formfields/EditableEmailField.php b/code/model/formfields/EditableEmailField.php index 7976f6b2d..49bc68378 100755 --- a/code/model/formfields/EditableEmailField.php +++ b/code/model/formfields/EditableEmailField.php @@ -13,6 +13,10 @@ class EditableEmailField extends EditableFormField { private static $plural_name = 'Email Fields'; + public function getSetsOwnError() { + return true; + } + public function getFormField() { if ($this->Required) { // Required and Email validation can conflict so add the Required validation messages @@ -35,8 +39,8 @@ public function getFormField() { * @return Array */ public function getValidation() { - return array( + return array_merge(parent::getValidation(), array( 'email' => true - ); + )); } } \ No newline at end of file diff --git a/code/model/formfields/EditableFormField.php b/code/model/formfields/EditableFormField.php index efa99ba18..a3fe9598a 100755 --- a/code/model/formfields/EditableFormField.php +++ b/code/model/formfields/EditableFormField.php @@ -69,6 +69,15 @@ public function EditSegment() { return $this->renderWith('EditableFormField'); } + /** + * Flag indicating that this field will set its own error message via data-msg='' attributes + * + * @return bool + */ + public function getSetsOwnError() { + return false; + } + /** * Return whether a user can delete this form field * based on whether they can edit the page @@ -212,7 +221,7 @@ public function getSetting($setting) { * @return string */ public function getIcon() { - return 'userforms/images/' . strtolower($this->class) . '.png'; + return USERFORMS_DIR . '/images/' . strtolower($this->class) . '.png'; } /** @@ -486,7 +495,13 @@ public function showInReports() { * @return Array */ public function getValidation() { - return array(); + return $this->Required + ? array('required' => true) + : array(); + } + + public function getValidationJSON() { + return Convert::raw2json($this->getValidation()); } /** diff --git a/code/model/formfields/EditableNumericField.php b/code/model/formfields/EditableNumericField.php index 85ff6e057..3913ddc2a 100755 --- a/code/model/formfields/EditableNumericField.php +++ b/code/model/formfields/EditableNumericField.php @@ -13,6 +13,10 @@ class EditableNumericField extends EditableTextField { private static $plural_name = 'Numeric Fields'; + public function getSetsOwnError() { + return true; + } + /** * @return TextareaField|TextField diff --git a/code/model/formfields/EditableTextField.php b/code/model/formfields/EditableTextField.php index 88a1778ca..6b661ae7b 100755 --- a/code/model/formfields/EditableTextField.php +++ b/code/model/formfields/EditableTextField.php @@ -58,13 +58,15 @@ public function getFormField() { * @return array */ public function getValidation() { - $options = array(); + $options = parent::getValidation(); - if($this->getSetting('MinLength')) + if($this->getSetting('MinLength')) { $options['minlength'] = $this->getSetting('MinLength'); + } - if($this->getSetting('MaxLength')) + if($this->getSetting('MaxLength')) { $options['maxlength'] = $this->getSetting('MaxLength'); + } return $options; } diff --git a/templates/ValidationScript.ss b/templates/ValidationScript.ss new file mode 100644 index 000000000..68105be02 --- /dev/null +++ b/templates/ValidationScript.ss @@ -0,0 +1,44 @@ +(function($) { + $(document).ready(function() { + $("#Form_Form").validate({ + ignore: ':hidden', + errorClass: "required", + errorElement: "span", + errorPlacement: function(error, element) { + error.addClass('message') + if(element.is(":radio")) { + error.insertAfter(element.closest("ul")); + } else { + error.insertAfter(element); + } + }, + messages: { + <% loop $Fields %> + <% if $ErrorMessage && not $SetsOwnError %> + '{$Name.JS}': '{$ErrorMessage.JS}', + <% end_if %> + <% end_loop %> + }, + rules: { + <% loop $Fields %> + <% if $Validation %> + '{$Name.JS}': {$ValidationJSON.RAW}, + <% end_if %> + <% end_loop %> + }, + <% if $EnableLiveValidation %> + // Enable live validation + onfocusout : function(element) { this.element(element); } + <% end_if %> + }); + <% if $HideFieldLabels %> + // Hide field labels (use HTML5 placeholder instead) + $("#Form_Form label.left").each(function() { + $("#"+$(this).attr("for")) + .attr("placeholder", $(this).text()); + $(this).remove(); + }); + Placeholders.init(); + <% end_if %> + }); +})(jQuery); diff --git a/thirdparty/jquery-validate/.gitattributes b/thirdparty/jquery-validate/.gitattributes deleted file mode 100644 index eba1110b5..000000000 --- a/thirdparty/jquery-validate/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto \ No newline at end of file diff --git a/thirdparty/jquery-validate/.gitignore b/thirdparty/jquery-validate/.gitignore deleted file mode 100644 index d2f97adf5..000000000 --- a/thirdparty/jquery-validate/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -dist -build/dist -docs -.project -*~ -*.diff -*.patch -.DS_Store -node_modules \ No newline at end of file diff --git a/thirdparty/jquery-validate/.travis.yml b/thirdparty/jquery-validate/.travis.yml deleted file mode 100644 index 6c378e7de..000000000 --- a/thirdparty/jquery-validate/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - 0.8 -install: - - npm install grunt-cli -g - - npm install diff --git a/thirdparty/jquery-validate/CONTRIBUTING.md b/thirdparty/jquery-validate/CONTRIBUTING.md deleted file mode 100644 index 60f298ed2..000000000 --- a/thirdparty/jquery-validate/CONTRIBUTING.md +++ /dev/null @@ -1,16 +0,0 @@ -# Contributing to jQuery Validation Plugin - -Thanks for contributing! Here's a few guidelines to help your contribution get landed. - -1. Make sure the problem you're addressing is reproducible. Use jsbin.com or jsfiddle.net to provide a test page. -2. Add or update unit tests along with your patch. Run the unit tests in at least one browser (see below). -3. Run `grunt` (see below) to check for linting and a few other issues. -4. Describe the change in your commit message and reference the ticket, like this: "Fixed delegate bug for dynamic-totals demo. Fixes #51". If you're adding a new localization file, use something like this: "Added croatian (HR) localization" - -## Unit Tests - -To run unit tests, you should have a local webserver installed and pointing at your workspace. Then open `http://localhost/jquery-validation/test` to run the unit tests. Start with one browser while developing the fix, then run against others before committing. Usually latest Chrome, Firefox, Safari and Opera and a few IEs. - -## Linting - -To run jshint and other tools, use `grunt`. To install, you need nodejs and npm, then run `npm install -g grunt`. \ No newline at end of file diff --git a/thirdparty/jquery-validate/Gruntfile.js b/thirdparty/jquery-validate/Gruntfile.js deleted file mode 100644 index baec41a7d..000000000 --- a/thirdparty/jquery-validate/Gruntfile.js +++ /dev/null @@ -1,128 +0,0 @@ -/*jshint node:true*/ -module.exports = function(grunt) { - -"use strict"; - -grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - // used to copy to dist folder - dist: { - files: { - 'dist/jquery.validate.js': ['jquery.validate.js'], - 'dist/additional-methods.js': ['additional-methods.js'] - } - } - }, - uglify: { - options: { - preserveComments: false, - banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + - '<%= grunt.template.today("m/d/yyyy") %>\\n' + - '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' + - '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + - ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */' - }, - all: { - files: { - 'dist/jquery.validate.min.js': ['dist/jquery.validate.js'], - 'dist/additional-methods.min.js': ['dist/additional-methods.js'] - } - } - }, - zip: { - dist: { - src: [ - 'dist/additional-methods.js', - 'dist/additional-methods.min.js', - 'dist/jquery.validate.js', - 'dist/jquery.validate.min.js', - 'README.md', - 'changelog.txt', - 'grunt.js', - 'package.json', - 'demo/**/*.*', - 'lib/**/*.*', - 'localization/**/*.*', - 'test/**/*.*' - ], - dest: 'dist/<%= pkg.name %>-<%= pkg.version %>.zip' - }, - options: { - zlib: { - level: 1 - } - } - }, - qunit: { - files: ['test/index.html'] - }, - jshint: { - options: { - curly: true, - eqeqeq: true, - immed: true, - latedef: true, - newcap: true, - noarg: true, - sub: true, - undef: true, - eqnull: true, - browser: true, - globals: { - jQuery: true, - $: true, - console: true - } - }, - files: [ - 'jquery.validate.js', - 'additional-methods.js', - 'localization/*.js' - ], - test: { - options: { - globals: { - jQuery: true, - $: true, - QUnit: true, - module: true, - test: true, - start: true, - stop: true, - expect: true, - ok: true, - equal: true, - deepEqual: true, - strictEqual: true - } - }, - files: { - src: [ - 'test/test.js', - 'test/rules.js', - 'test/messages.js', - 'test/methods.js' - ] - } - }, - grunt: { - files: { - src: [ - 'Gruntfile.js' - ] - } - } - } -}); - -grunt.loadNpmTasks('grunt-contrib-jshint'); -grunt.loadNpmTasks('grunt-contrib-qunit'); -grunt.loadNpmTasks('grunt-contrib-uglify'); -grunt.loadNpmTasks('grunt-contrib-concat'); -grunt.loadNpmTasks('grunt-zipstream'); - -grunt.registerTask('default', ['jshint', 'qunit']); -grunt.registerTask('release', ['default', 'concat', 'uglify', 'zip']); - -}; \ No newline at end of file diff --git a/thirdparty/jquery-validate/README.md b/thirdparty/jquery-validate/README.md deleted file mode 100644 index 5f49d0568..000000000 --- a/thirdparty/jquery-validate/README.md +++ /dev/null @@ -1,41 +0,0 @@ -[jQuery Validation Plugin](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) - Form validation made easy -================================ - -[![Build Status](https://secure.travis-ci.org/jzaefferer/jquery-validation.png)](http://travis-ci.org/jzaefferer/jquery-validation) - -The jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy. - -## [Help the project](http://pledgie.com/campaigns/18159) - -[![Help the project](http://www.pledgie.com/campaigns/18159.png?skin_name=chrome)](http://pledgie.com/campaigns/18159) - -This project is looking for help! [You can donate to the ongoing pledgie campaign](http://pledgie.com/campaigns/18159) -and help spread the word. If you've used the plugin, or plan to use, consider a donation - any amount will help. - -You can find the plan for how to spend the money on the [pledgie page](http://pledgie.com/campaigns/18159). - -## Getting Started - -Include jQuery and the plugin on a page. Then select a form to validate and call the `validate` method. - -```html -
- -
- - - -``` - -For more information on how to setup a rules and customizations, [check the documentation](http://docs.jquery.com/Plugins/Validation). - -## Contributing -Follow the [jQuery style guide](http://contribute.jquery.com/style-guides/js), even if existing code doesn't. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/gruntjs/grunt/). - -If you've wrote custom methods that you'd like to contribute to additional-methods.js, create a branch, add the method there and send a pull request for that branch. - -## License -Copyright (c) 2013 Jörn Zaefferer -Licensed under the MIT license. diff --git a/thirdparty/jquery-validate/additional-methods.js b/thirdparty/jquery-validate/additional-methods.js index b72e7fd09..eea71ee0f 100644 --- a/thirdparty/jquery-validate/additional-methods.js +++ b/thirdparty/jquery-validate/additional-methods.js @@ -1,299 +1,81 @@ /*! - * jQuery Validation Plugin 1.12.0pre + * jQuery Validation Plugin v1.12.1pre * - * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ - * http://docs.jquery.com/Plugins/Validation + * http://jqueryvalidation.org/ * - * Copyright 2013 Jörn Zaefferer - * Released under the MIT license: - * http://www.opensource.org/licenses/mit-license.php + * Copyright (c) 2014 Jörn Zaefferer + * Released under the MIT license */ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "./jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { (function() { function stripHtml(value) { // remove html tags and space chars - return value.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' ') + return value.replace(/<.[^<>]*?>/g, " ").replace(/ | /gi, " ") // remove punctuation - .replace(/[.(),;:!?%#$'"_+=\/\-]*/g,''); + .replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g, ""); } - jQuery.validator.addMethod("maxWords", function(value, element, params) { + + $.validator.addMethod("maxWords", function(value, element, params) { return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length <= params; - }, jQuery.validator.format("Please enter {0} words or less.")); + }, $.validator.format("Please enter {0} words or less.")); - jQuery.validator.addMethod("minWords", function(value, element, params) { + $.validator.addMethod("minWords", function(value, element, params) { return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params; - }, jQuery.validator.format("Please enter at least {0} words.")); + }, $.validator.format("Please enter at least {0} words.")); - jQuery.validator.addMethod("rangeWords", function(value, element, params) { - var valueStripped = stripHtml(value); - var regex = /\b\w+\b/g; + $.validator.addMethod("rangeWords", function(value, element, params) { + var valueStripped = stripHtml(value), + regex = /\b\w+\b/g; return this.optional(element) || valueStripped.match(regex).length >= params[0] && valueStripped.match(regex).length <= params[1]; - }, jQuery.validator.format("Please enter between {0} and {1} words.")); + }, $.validator.format("Please enter between {0} and {1} words.")); }()); -jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) { - return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); -}, "Letters or punctuation only please"); - -jQuery.validator.addMethod("alphanumeric", function(value, element) { - return this.optional(element) || /^\w+$/i.test(value); -}, "Letters, numbers, and underscores only please"); - -jQuery.validator.addMethod("lettersonly", function(value, element) { - return this.optional(element) || /^[a-z]+$/i.test(value); -}, "Letters only please"); - -jQuery.validator.addMethod("nowhitespace", function(value, element) { - return this.optional(element) || /^\S+$/i.test(value); -}, "No white space please"); +// Accept a value from a file input based on a required mimetype +$.validator.addMethod("accept", function(value, element, param) { + // Split mime on commas in case we have multiple types we can accept + var typeParam = typeof param === "string" ? param.replace(/\s/g, "").replace(/,/g, "|") : "image/*", + optionalValue = this.optional(element), + i, file; -jQuery.validator.addMethod("ziprange", function(value, element) { - return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); -}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx"); + // Element is optional + if (optionalValue) { + return optionalValue; + } -jQuery.validator.addMethod("zipcodeUS", function(value, element) { - return this.optional(element) || /\d{5}-\d{4}$|^\d{5}$/.test(value); -}, "The specified US ZIP Code is invalid"); + if ($(element).attr("type") === "file") { + // If we are using a wildcard, make it regex friendly + typeParam = typeParam.replace(/\*/g, ".*"); -jQuery.validator.addMethod("integer", function(value, element) { - return this.optional(element) || /^-?\d+$/.test(value); -}, "A positive or negative non-decimal number please"); + // Check if the element has a FileList before checking each file + if (element.files && element.files.length) { + for (i = 0; i < element.files.length; i++) { + file = element.files[i]; -/** - * Return true, if the value is a valid vehicle identification number (VIN). - * - * Works with all kind of text inputs. - * - * @example - * @desc Declares a required input element whose value must be a valid vehicle identification number. - * - * @name jQuery.validator.methods.vinUS - * @type Boolean - * @cat Plugins/Validate/Methods - */ -jQuery.validator.addMethod("vinUS", function(v) { - if (v.length !== 17) { - return false; - } - var i, n, d, f, cd, cdv; - var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"]; - var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9]; - var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2]; - var rs = 0; - for(i = 0; i < 17; i++){ - f = FL[i]; - d = v.slice(i,i+1); - if (i === 8) { - cdv = d; - } - if (!isNaN(d)) { - d *= f; - } else { - for (n = 0; n < LL.length; n++) { - if (d.toUpperCase() === LL[n]) { - d = VL[n]; - d *= f; - if (isNaN(cdv) && n === 8) { - cdv = LL[n]; - } - break; + // Grab the mimetype from the loaded file, verify it matches + if (!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) { + return false; } } } - rs += d; - } - cd = rs % 11; - if (cd === 10) { - cd = "X"; - } - if (cd === cdv) { - return true; - } - return false; -}, "The specified vehicle identification number (VIN) is invalid."); - -/** - * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. - * - * @example jQuery.validator.methods.date("01/01/1900") - * @result true - * - * @example jQuery.validator.methods.date("01/13/1990") - * @result false - * - * @example jQuery.validator.methods.date("01.01.1900") - * @result false - * - * @example - * @desc Declares an optional input element whose value must be a valid date. - * - * @name jQuery.validator.methods.dateITA - * @type Boolean - * @cat Plugins/Validate/Methods - */ -jQuery.validator.addMethod("dateITA", function(value, element) { - var check = false; - var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/; - if( re.test(value)) { - var adata = value.split('/'); - var gg = parseInt(adata[0],10); - var mm = parseInt(adata[1],10); - var aaaa = parseInt(adata[2],10); - var xdata = new Date(aaaa,mm-1,gg); - if ( ( xdata.getFullYear() === aaaa ) && ( xdata.getMonth() === mm - 1 ) && ( xdata.getDate() === gg ) ){ - check = true; - } else { - check = false; - } - } else { - check = false; - } - return this.optional(element) || check; -}, "Please enter a correct date"); - -/** - * IBAN is the international bank account number. - * It has a country - specific format, that is checked here too - */ -jQuery.validator.addMethod("iban", function(value, element) { - // some quick simple tests to prevent needless work - if (this.optional(element)) { - return true; - } - if (!(/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(value))) { - return false; - } - - // check the country code and find the country specific format - var iban = value.replace(/ /g,'').toUpperCase(); // remove spaces and to upper case - var countrycode = iban.substring(0,2); - var bbancountrypatterns = { - 'AL': "\\d{8}[\\dA-Z]{16}", - 'AD': "\\d{8}[\\dA-Z]{12}", - 'AT': "\\d{16}", - 'AZ': "[\\dA-Z]{4}\\d{20}", - 'BE': "\\d{12}", - 'BH': "[A-Z]{4}[\\dA-Z]{14}", - 'BA': "\\d{16}", - 'BR': "\\d{23}[A-Z][\\dA-Z]", - 'BG': "[A-Z]{4}\\d{6}[\\dA-Z]{8}", - 'CR': "\\d{17}", - 'HR': "\\d{17}", - 'CY': "\\d{8}[\\dA-Z]{16}", - 'CZ': "\\d{20}", - 'DK': "\\d{14}", - 'DO': "[A-Z]{4}\\d{20}", - 'EE': "\\d{16}", - 'FO': "\\d{14}", - 'FI': "\\d{14}", - 'FR': "\\d{10}[\\dA-Z]{11}\\d{2}", - 'GE': "[\\dA-Z]{2}\\d{16}", - 'DE': "\\d{18}", - 'GI': "[A-Z]{4}[\\dA-Z]{15}", - 'GR': "\\d{7}[\\dA-Z]{16}", - 'GL': "\\d{14}", - 'GT': "[\\dA-Z]{4}[\\dA-Z]{20}", - 'HU': "\\d{24}", - 'IS': "\\d{22}", - 'IE': "[\\dA-Z]{4}\\d{14}", - 'IL': "\\d{19}", - 'IT': "[A-Z]\\d{10}[\\dA-Z]{12}", - 'KZ': "\\d{3}[\\dA-Z]{13}", - 'KW': "[A-Z]{4}[\\dA-Z]{22}", - 'LV': "[A-Z]{4}[\\dA-Z]{13}", - 'LB': "\\d{4}[\\dA-Z]{20}", - 'LI': "\\d{5}[\\dA-Z]{12}", - 'LT': "\\d{16}", - 'LU': "\\d{3}[\\dA-Z]{13}", - 'MK': "\\d{3}[\\dA-Z]{10}\\d{2}", - 'MT': "[A-Z]{4}\\d{5}[\\dA-Z]{18}", - 'MR': "\\d{23}", - 'MU': "[A-Z]{4}\\d{19}[A-Z]{3}", - 'MC': "\\d{10}[\\dA-Z]{11}\\d{2}", - 'MD': "[\\dA-Z]{2}\\d{18}", - 'ME': "\\d{18}", - 'NL': "[A-Z]{4}\\d{10}", - 'NO': "\\d{11}", - 'PK': "[\\dA-Z]{4}\\d{16}", - 'PS': "[\\dA-Z]{4}\\d{21}", - 'PL': "\\d{24}", - 'PT': "\\d{21}", - 'RO': "[A-Z]{4}[\\dA-Z]{16}", - 'SM': "[A-Z]\\d{10}[\\dA-Z]{12}", - 'SA': "\\d{2}[\\dA-Z]{18}", - 'RS': "\\d{18}", - 'SK': "\\d{20}", - 'SI': "\\d{15}", - 'ES': "\\d{20}", - 'SE': "\\d{20}", - 'CH': "\\d{5}[\\dA-Z]{12}", - 'TN': "\\d{20}", - 'TR': "\\d{5}[\\dA-Z]{17}", - 'AE': "\\d{3}\\d{16}", - 'GB': "[A-Z]{4}\\d{14}", - 'VG': "[\\dA-Z]{4}\\d{16}" - }; - var bbanpattern = bbancountrypatterns[countrycode]; - // As new countries will start using IBAN in the - // future, we only check if the countrycode is known. - // This prevents false negatives, while almost all - // false positives introduced by this, will be caught - // by the checksum validation below anyway. - // Strict checking should return FALSE for unknown - // countries. - if (typeof bbanpattern !== 'undefined') { - var ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); - if (!(ibanregexp.test(iban))) { - return false; // invalid country specific format - } } - // now check the checksum, first convert to digits - var ibancheck = iban.substring(4,iban.length) + iban.substring(0,4); - var ibancheckdigits = ""; - var leadingZeroes = true; - var charAt; - for (var i =0; i 9 && - phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); -}, "Please specify a valid phone number"); +$.validator.addMethod("bic", function(value, element) { + return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value ); +}, "Please specify a valid BIC code"); -jQuery.validator.addMethod('phoneUK', function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/); -}, 'Please specify a valid phone number'); +/* + * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities + * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal + */ +$.validator.addMethod( "cifES", function( value ) { + "use strict"; -jQuery.validator.addMethod('mobileUK', function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/); -}, 'Please specify a valid mobile number'); + var num = [], + controlDigit, sum, i, count, tmp, secondDigit; -//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers -jQuery.validator.addMethod('phonesUK', function(phone_number, element) { - phone_number = phone_number.replace(/\(|\)|\s+|-/g,''); - return this.optional(element) || phone_number.length > 9 && - phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[45789]\d{8}|624\d{6})))$/); -}, 'Please specify a valid uk phone number'); -// On the above three UK functions, do the following server side processing: -// Compare original input with this RegEx pattern: -// ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ -// Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' -// Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. -// A number of very detailed GB telephone number RegEx patterns can also be found at: -// http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers - -//Matches UK postcode. based on http://snipplr.com/view/3152/postcode-validation/ -jQuery.validator.addMethod('postcodeUK', function(postcode, element) { - postcode = (postcode.toUpperCase()).replace(/\s+/g,''); - return this.optional(element) || postcode.match(/^([^QZ][^IJZ]{0,1}\d{1,2})(\d[^CIKMOV]{2})$/) || postcode.match(/^([^QV]\d[ABCDEFGHJKSTUW])(\d[^CIKMOV]{2})$/) || postcode.match(/^([^QV][^IJZ]\d[ABEHMNPRVWXY])(\d[^CIKMOV]{2})$/) || postcode.match(/^(GIR)(0AA)$/) || postcode.match(/^(BFPO)(\d{1,4})$/) || postcode.match(/^(BFPO)(C\/O\d{1,3})$/); -}, 'Please specify a valid postcode'); + value = value.toUpperCase(); -// TODO check if value starts with <, otherwise don't try stripping anything -jQuery.validator.addMethod("strippedminlength", function(value, element, param) { - return jQuery(value).text().length >= param; -}, jQuery.validator.format("Please enter at least {0} characters")); + // Quick format test + if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { + return false; + } -// same as email, but TLD is optional -jQuery.validator.addMethod("email2", function(value, element, param) { - return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); -}, jQuery.validator.messages.email); + for ( i = 0; i < 9; i++ ) { + num[ i ] = parseInt( value.charAt( i ), 10 ); + } + + // Algorithm for checking CIF codes + sum = num[ 2 ] + num[ 4 ] + num[ 6 ]; + for ( count = 1; count < 8; count += 2 ) { + tmp = ( 2 * num[ count ] ).toString(); + secondDigit = tmp.charAt( 1 ); + + sum += parseInt( tmp.charAt( 0 ), 10 ) + ( secondDigit === "" ? 0 : parseInt( secondDigit, 10 ) ); + } + + /* The first (position 1) is a letter following the following criteria: + * A. Corporations + * B. LLCs + * C. General partnerships + * D. Companies limited partnerships + * E. Communities of goods + * F. Cooperative Societies + * G. Associations + * H. Communities of homeowners in horizontal property regime + * J. Civil Societies + * K. Old format + * L. Old format + * M. Old format + * N. Nonresident entities + * P. Local authorities + * Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions + * R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008) + * S. Organs of State Administration and regions + * V. Agrarian Transformation + * W. Permanent establishments of non-resident in Spain + */ + if ( /^[ABCDEFGHJNPQRSUVW]{1}/.test( value ) ) { + sum += ""; + controlDigit = 10 - parseInt( sum.charAt( sum.length - 1 ), 10 ); + value += controlDigit; + return ( num[ 8 ].toString() === String.fromCharCode( 64 + controlDigit ) || num[ 8 ].toString() === value.charAt( value.length - 1 ) ); + } -// same as url, but TLD is optional -jQuery.validator.addMethod("url2", function(value, element, param) { - return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); -}, jQuery.validator.messages.url); + return false; -// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator -// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 -// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) -jQuery.validator.addMethod("creditcardtypes", function(value, element, param) { +}, "Please specify a valid CIF number." ); + +/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator + * Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0 + * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings) + */ +$.validator.addMethod("creditcardtypes", function(value, element, param) { if (/[^0-9\-]+/.test(value)) { return false; } @@ -479,67 +258,488 @@ jQuery.validator.addMethod("creditcardtypes", function(value, element, param) { return false; }, "Please enter a valid credit card number."); -jQuery.validator.addMethod("ipv4", function(value, element, param) { +/** + * Validates currencies with any given symbols by @jameslouiz + * Symbols can be optional or required. Symbols required by default + * + * Usage examples: + * currency: ["£", false] - Use false for soft currency validation + * currency: ["$", false] + * currency: ["RM", false] - also works with text based symbols such as "RM" - Malaysia Ringgit etc + * + * + * + * Soft symbol checking + * currencyInput: { + * currency: ["$", false] + * } + * + * Strict symbol checking (default) + * currencyInput: { + * currency: "$" + * //OR + * currency: ["$", true] + * } + * + * Multiple Symbols + * currencyInput: { + * currency: "$,£,¢" + * } + */ +$.validator.addMethod("currency", function(value, element, param) { + var isParamString = typeof param === "string", + symbol = isParamString ? param : param[0], + soft = isParamString ? true : param[1], + regex; + + symbol = symbol.replace(/,/g, ""); + symbol = soft ? symbol + "]" : symbol + "]?"; + regex = "^[" + symbol + "([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$"; + regex = new RegExp(regex); + return this.optional(element) || regex.test(value); + +}, "Please specify a valid currency"); + +jQuery.validator.addMethod("dateFA", function(value, element) { + return this.optional(element) || /^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(value); +}, "Please enter a correct date"); + +/** + * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy. + * + * @example $.validator.methods.date("01/01/1900") + * @result true + * + * @example $.validator.methods.date("01/13/1990") + * @result false + * + * @example $.validator.methods.date("01.01.1900") + * @result false + * + * @example + * @desc Declares an optional input element whose value must be a valid date. + * + * @name $.validator.methods.dateITA + * @type Boolean + * @cat Plugins/Validate/Methods + */ +$.validator.addMethod("dateITA", function(value, element) { + var check = false, + re = /^\d{1,2}\/\d{1,2}\/\d{4}$/, + adata, gg, mm, aaaa, xdata; + if ( re.test(value)) { + adata = value.split("/"); + gg = parseInt(adata[0],10); + mm = parseInt(adata[1],10); + aaaa = parseInt(adata[2],10); + xdata = new Date(aaaa, mm - 1, gg, 12, 0, 0, 0); + if ( ( xdata.getFullYear() === aaaa ) && ( xdata.getMonth() === mm - 1 ) && ( xdata.getDate() === gg ) ){ + check = true; + } else { + check = false; + } + } else { + check = false; + } + return this.optional(element) || check; +}, "Please enter a correct date"); + +$.validator.addMethod("dateNL", function(value, element) { + return this.optional(element) || /^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(value); +}, "Please enter a correct date"); + +// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept +$.validator.addMethod("extension", function(value, element, param) { + param = typeof param === "string" ? param.replace(/,/g, "|") : "png|jpe?g|gif"; + return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); +}, $.validator.format("Please enter a value with a valid extension.")); + +/** + * Dutch giro account numbers (not bank numbers) have max 7 digits + */ +$.validator.addMethod("giroaccountNL", function(value, element) { + return this.optional(element) || /^[0-9]{1,7}$/.test(value); +}, "Please specify a valid giro account number"); + +/** + * IBAN is the international bank account number. + * It has a country - specific format, that is checked here too + */ +$.validator.addMethod("iban", function(value, element) { + // some quick simple tests to prevent needless work + if (this.optional(element)) { + return true; + } + + // remove spaces and to upper case + var iban = value.replace(/ /g,"").toUpperCase(), + ibancheckdigits = "", + leadingZeroes = true, + cRest = "", + cOperator = "", + countrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p; + + if (!(/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(iban))) { + return false; + } + + // check the country code and find the country specific format + countrycode = iban.substring(0,2); + bbancountrypatterns = { + "AL": "\\d{8}[\\dA-Z]{16}", + "AD": "\\d{8}[\\dA-Z]{12}", + "AT": "\\d{16}", + "AZ": "[\\dA-Z]{4}\\d{20}", + "BE": "\\d{12}", + "BH": "[A-Z]{4}[\\dA-Z]{14}", + "BA": "\\d{16}", + "BR": "\\d{23}[A-Z][\\dA-Z]", + "BG": "[A-Z]{4}\\d{6}[\\dA-Z]{8}", + "CR": "\\d{17}", + "HR": "\\d{17}", + "CY": "\\d{8}[\\dA-Z]{16}", + "CZ": "\\d{20}", + "DK": "\\d{14}", + "DO": "[A-Z]{4}\\d{20}", + "EE": "\\d{16}", + "FO": "\\d{14}", + "FI": "\\d{14}", + "FR": "\\d{10}[\\dA-Z]{11}\\d{2}", + "GE": "[\\dA-Z]{2}\\d{16}", + "DE": "\\d{18}", + "GI": "[A-Z]{4}[\\dA-Z]{15}", + "GR": "\\d{7}[\\dA-Z]{16}", + "GL": "\\d{14}", + "GT": "[\\dA-Z]{4}[\\dA-Z]{20}", + "HU": "\\d{24}", + "IS": "\\d{22}", + "IE": "[\\dA-Z]{4}\\d{14}", + "IL": "\\d{19}", + "IT": "[A-Z]\\d{10}[\\dA-Z]{12}", + "KZ": "\\d{3}[\\dA-Z]{13}", + "KW": "[A-Z]{4}[\\dA-Z]{22}", + "LV": "[A-Z]{4}[\\dA-Z]{13}", + "LB": "\\d{4}[\\dA-Z]{20}", + "LI": "\\d{5}[\\dA-Z]{12}", + "LT": "\\d{16}", + "LU": "\\d{3}[\\dA-Z]{13}", + "MK": "\\d{3}[\\dA-Z]{10}\\d{2}", + "MT": "[A-Z]{4}\\d{5}[\\dA-Z]{18}", + "MR": "\\d{23}", + "MU": "[A-Z]{4}\\d{19}[A-Z]{3}", + "MC": "\\d{10}[\\dA-Z]{11}\\d{2}", + "MD": "[\\dA-Z]{2}\\d{18}", + "ME": "\\d{18}", + "NL": "[A-Z]{4}\\d{10}", + "NO": "\\d{11}", + "PK": "[\\dA-Z]{4}\\d{16}", + "PS": "[\\dA-Z]{4}\\d{21}", + "PL": "\\d{24}", + "PT": "\\d{21}", + "RO": "[A-Z]{4}[\\dA-Z]{16}", + "SM": "[A-Z]\\d{10}[\\dA-Z]{12}", + "SA": "\\d{2}[\\dA-Z]{18}", + "RS": "\\d{18}", + "SK": "\\d{20}", + "SI": "\\d{15}", + "ES": "\\d{20}", + "SE": "\\d{20}", + "CH": "\\d{5}[\\dA-Z]{12}", + "TN": "\\d{20}", + "TR": "\\d{5}[\\dA-Z]{17}", + "AE": "\\d{3}\\d{16}", + "GB": "[A-Z]{4}\\d{14}", + "VG": "[\\dA-Z]{4}\\d{16}" + }; + + bbanpattern = bbancountrypatterns[countrycode]; + // As new countries will start using IBAN in the + // future, we only check if the countrycode is known. + // This prevents false negatives, while almost all + // false positives introduced by this, will be caught + // by the checksum validation below anyway. + // Strict checking should return FALSE for unknown + // countries. + if (typeof bbanpattern !== "undefined") { + ibanregexp = new RegExp("^[A-Z]{2}\\d{2}" + bbanpattern + "$", ""); + if (!(ibanregexp.test(iban))) { + return false; // invalid country specific format + } + } + + // now check the checksum, first convert to digits + ibancheck = iban.substring(4,iban.length) + iban.substring(0,4); + for (i = 0; i < ibancheck.length; i++) { + charAt = ibancheck.charAt(i); + if (charAt !== "0") { + leadingZeroes = false; + } + if (!leadingZeroes) { + ibancheckdigits += "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(charAt); + } + } + + // calculate the result of: ibancheckdigits % 97 + for (p = 0; p < ibancheckdigits.length; p++) { + cChar = ibancheckdigits.charAt(p); + cOperator = "" + cRest + "" + cChar; + cRest = cOperator % 97; + } + return cRest === 1; +}, "Please specify a valid IBAN"); + +$.validator.addMethod("integer", function(value, element) { + return this.optional(element) || /^-?\d+$/.test(value); +}, "A positive or negative non-decimal number please"); + +$.validator.addMethod("ipv4", function(value, element) { return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value); }, "Please enter a valid IP v4 address."); -jQuery.validator.addMethod("ipv6", function(value, element, param) { +$.validator.addMethod("ipv6", function(value, element) { return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value); }, "Please enter a valid IP v6 address."); +$.validator.addMethod("lettersonly", function(value, element) { + return this.optional(element) || /^[a-z]+$/i.test(value); +}, "Letters only please"); + +$.validator.addMethod("letterswithbasicpunc", function(value, element) { + return this.optional(element) || /^[a-z\-.,()'"\s]+$/i.test(value); +}, "Letters or punctuation only please"); + +$.validator.addMethod("mobileNL", function(value, element) { + return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value); +}, "Please specify a valid mobile number"); + +/* For UK phone functions, do the following server side processing: + * Compare original input with this RegEx pattern: + * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ + * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' + * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. + * A number of very detailed GB telephone number RegEx patterns can also be found at: + * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers + */ +$.validator.addMethod("mobileUK", function(phone_number, element) { + phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/); +}, "Please specify a valid mobile number"); + +/* + * The número de identidad de extranjero ( NIE )is a code used to identify the non-nationals in Spain + */ +$.validator.addMethod( "nieES", function( value ) { + "use strict"; + + value = value.toUpperCase(); + + // Basic format test + if ( !value.match( "((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)" ) ) { + return false; + } + + // Test NIE + //T + if ( /^[T]{1}/.test( value ) ) { + return ( value[ 8 ] === /^[T]{1}[A-Z0-9]{8}$/.test( value ) ); + } + + //XYZ + if ( /^[XYZ]{1}/.test( value ) ) { + return ( + value[ 8 ] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt( + value.replace( "X", "0" ) + .replace( "Y", "1" ) + .replace( "Z", "2" ) + .substring( 0, 8 ) % 23 + ) + ); + } + + return false; + +}, "Please specify a valid NIE number." ); + +/* + * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals + */ +$.validator.addMethod( "nifES", function( value ) { + "use strict"; + + value = value.toUpperCase(); + + // Basic format test + if ( !value.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)") ) { + return false; + } + + // Test NIF + if ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) { + return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) ); + } + // Test specials NIF (starts with K, L or M) + if ( /^[KLM]{1}/.test( value ) ) { + return ( value[ 8 ] === String.fromCharCode( 64 ) ); + } + + return false; + +}, "Please specify a valid NIF number." ); + +$.validator.addMethod("nowhitespace", function(value, element) { + return this.optional(element) || /^\S+$/i.test(value); +}, "No white space please"); + /** * Return true if the field value matches the given format RegExp * -* @example jQuery.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) +* @example $.validator.methods.pattern("AR1004",element,/^AR\d{4}$/) * @result true * -* @example jQuery.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) +* @example $.validator.methods.pattern("BR1004",element,/^AR\d{4}$/) * @result false * -* @name jQuery.validator.methods.pattern +* @name $.validator.methods.pattern * @type Boolean * @cat Plugins/Validate/Methods */ -jQuery.validator.addMethod("pattern", function(value, element, param) { +$.validator.addMethod("pattern", function(value, element, param) { if (this.optional(element)) { return true; } - if (typeof param === 'string') { - param = new RegExp('^(?:' + param + ')$'); + if (typeof param === "string") { + param = new RegExp(param); } return param.test(value); }, "Invalid format."); +/** + * Dutch phone numbers have 10 digits (or 11 and start with +31). + */ +$.validator.addMethod("phoneNL", function(value, element) { + return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(value); +}, "Please specify a valid phone number."); + +/* For UK phone functions, do the following server side processing: + * Compare original input with this RegEx pattern: + * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ + * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' + * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. + * A number of very detailed GB telephone number RegEx patterns can also be found at: + * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers + */ +$.validator.addMethod("phoneUK", function(phone_number, element) { + phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/); +}, "Please specify a valid phone number"); + +/** + * matches US phone number format + * + * where the area code may not start with 1 and the prefix may not start with 1 + * allows '-' or ' ' as a separator and allows parens around area code + * some people may want to put a '1' in front of their number + * + * 1(212)-999-2345 or + * 212 999 2344 or + * 212-999-0983 + * + * but not + * 111-123-5434 + * and not + * 212 123 4567 + */ +$.validator.addMethod("phoneUS", function(phone_number, element) { + phone_number = phone_number.replace(/\s+/g, ""); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/); +}, "Please specify a valid phone number"); + +/* For UK phone functions, do the following server side processing: + * Compare original input with this RegEx pattern: + * ^\(?(?:(?:00\)?[\s\-]?\(?|\+)(44)\)?[\s\-]?\(?(?:0\)?[\s\-]?\(?)?|0)([1-9]\d{1,4}\)?[\s\d\-]+)$ + * Extract $1 and set $prefix to '+44' if $1 is '44', otherwise set $prefix to '0' + * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2. + * A number of very detailed GB telephone number RegEx patterns can also be found at: + * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers + */ +//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers +$.validator.addMethod("phonesUK", function(phone_number, element) { + phone_number = phone_number.replace(/\(|\)|\s+|-/g, ""); + return this.optional(element) || phone_number.length > 9 && + phone_number.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/); +}, "Please specify a valid uk phone number"); + +/** + * Matches a valid Canadian Postal Code + * + * @example jQuery.validator.methods.postalCodeCA( "H0H 0H0", element ) + * @result true + * + * @example jQuery.validator.methods.postalCodeCA( "H0H0H0", element ) + * @result false + * + * @name jQuery.validator.methods.postalCodeCA + * @type Boolean + * @cat Plugins/Validate/Methods + */ +jQuery.validator.addMethod( "postalCodeCA", function( value, element ) { + return this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test( value ); +}, "Please specify a valid postal code" ); + +/* Matches Italian postcode (CAP) */ +$.validator.addMethod("postalcodeIT", function(value, element) { + return this.optional(element) || /^\d{5}$/.test(value); +}, "Please specify a valid postal code"); + +$.validator.addMethod("postalcodeNL", function(value, element) { + return this.optional(element) || /^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(value); +}, "Please specify a valid postal code"); + +// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) +$.validator.addMethod("postcodeUK", function(value, element) { + return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value); +}, "Please specify a valid UK postcode"); /* * Lets you say "at least X inputs that match selector Y must be filled." * * The end result is that neither of these inputs: * - * - * + * + * * - * ...will validate unless at least one of them is filled. + * ...will validate unless at least one of them is filled. * - * partnumber: {require_from_group: [1,".productinfo"]}, + * partnumber: {require_from_group: [1,".productinfo"]}, * description: {require_from_group: [1,".productinfo"]} * + * options[0]: number of fields that must be filled in the group + * options[1]: CSS selector that defines the group of conditionally required fields */ -jQuery.validator.addMethod("require_from_group", function(value, element, options) { - var validator = this; - var selector = options[1]; - var validOrNot = $(selector, element.form).filter(function() { - return validator.elementValue(this); - }).length >= options[0]; - - if(!$(element).data('being_validated')) { - var fields = $(selector, element.form); - fields.data('being_validated', true); - fields.valid(); - fields.data('being_validated', false); - } - return validOrNot; -}, jQuery.format("Please fill at least {0} of these fields.")); +$.validator.addMethod("require_from_group", function(value, element, options) { + var $fields = $(options[1], element.form), + $fieldsFirst = $fields.eq(0), + validator = $fieldsFirst.data("valid_req_grp") ? $fieldsFirst.data("valid_req_grp") : $.extend({}, this), + isValid = $fields.filter(function() { + return validator.elementValue(this); + }).length >= options[0]; + + // Store the cloned validator for future validation + $fieldsFirst.data("valid_req_grp", validator); + + // If element isn't being validated, run each require_from_group field's validation rules + if (!$(element).data("being_validated")) { + $fields.data("being_validated", true); + $fields.each(function() { + validator.element(this); + }); + $fields.data("being_validated", false); + } + return isValid; +}, $.validator.format("Please fill at least {0} of these fields.")); /* * Lets you say "either at least X inputs that match selector Y must be filled, @@ -547,72 +747,123 @@ jQuery.validator.addMethod("require_from_group", function(value, element, option * * The end result, is that none of these inputs: * - * - * - * + * + * + * * - * ...will validate unless either at least two of them are filled, - * OR none of them are. + * ...will validate unless either at least two of them are filled, + * OR none of them are. * - * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, - * description: {skip_or_fill_minimum: [2,".productinfo"]}, - * color: {skip_or_fill_minimum: [2,".productinfo"]} + * partnumber: {skip_or_fill_minimum: [2,".productinfo"]}, + * description: {skip_or_fill_minimum: [2,".productinfo"]}, + * color: {skip_or_fill_minimum: [2,".productinfo"]} + * + * options[0]: number of fields that must be filled in the group + * options[1]: CSS selector that defines the group of conditionally required fields * */ -jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, options) { - var validator = this, - numberRequired = options[0], - selector = options[1]; - var numberFilled = $(selector, element.form).filter(function() { - return validator.elementValue(this); - }).length; - var valid = numberFilled >= numberRequired || numberFilled === 0; - - if(!$(element).data('being_validated')) { - var fields = $(selector, element.form); - fields.data('being_validated', true); - fields.valid(); - fields.data('being_validated', false); - } - return valid; -}, jQuery.format("Please either skip these fields or fill at least {0} of them.")); +$.validator.addMethod("skip_or_fill_minimum", function(value, element, options) { + var $fields = $(options[1], element.form), + $fieldsFirst = $fields.eq(0), + validator = $fieldsFirst.data("valid_skip") ? $fieldsFirst.data("valid_skip") : $.extend({}, this), + numberFilled = $fields.filter(function() { + return validator.elementValue(this); + }).length, + isValid = numberFilled === 0 || numberFilled >= options[0]; + + // Store the cloned validator for future validation + $fieldsFirst.data("valid_skip", validator); + + // If element isn't being validated, run each skip_or_fill_minimum field's validation rules + if (!$(element).data("being_validated")) { + $fields.data("being_validated", true); + $fields.each(function() { + validator.element(this); + }); + $fields.data("being_validated", false); + } + return isValid; +}, $.validator.format("Please either skip these fields or fill at least {0} of them.")); -// Accept a value from a file input based on a required mimetype -jQuery.validator.addMethod("accept", function(value, element, param) { - // Split mime on commas in case we have multiple types we can accept - var typeParam = typeof param === "string" ? param.replace(/\s/g, '').replace(/,/g, '|') : "image/*", - optionalValue = this.optional(element), - i, file; +// TODO check if value starts with <, otherwise don't try stripping anything +$.validator.addMethod("strippedminlength", function(value, element, param) { + return $(value).text().length >= param; +}, $.validator.format("Please enter at least {0} characters")); - // Element is optional - if (optionalValue) { - return optionalValue; - } +$.validator.addMethod("time", function(value, element) { + return this.optional(element) || /^([01]\d|2[0-3])(:[0-5]\d){1,2}$/.test(value); +}, "Please enter a valid time, between 00:00 and 23:59"); - if ($(element).attr("type") === "file") { - // If we are using a wildcard, make it regex friendly - typeParam = typeParam.replace(/\*/g, ".*"); +$.validator.addMethod("time12h", function(value, element) { + return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(value); +}, "Please enter a valid time in 12-hour am/pm format"); - // Check if the element has a FileList before checking each file - if (element.files && element.files.length) { - for (i = 0; i < element.files.length; i++) { - file = element.files[i]; +// same as url, but TLD is optional +$.validator.addMethod("url2", function(value, element) { + return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); +}, $.validator.messages.url); - // Grab the mimetype from the loaded file, verify it matches - if (!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) { - return false; +/** + * Return true, if the value is a valid vehicle identification number (VIN). + * + * Works with all kind of text inputs. + * + * @example + * @desc Declares a required input element whose value must be a valid vehicle identification number. + * + * @name $.validator.methods.vinUS + * @type Boolean + * @cat Plugins/Validate/Methods + */ +$.validator.addMethod("vinUS", function(v) { + if (v.length !== 17) { + return false; + } + + var LL = [ "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ], + VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ], + FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ], + rs = 0, + i, n, d, f, cd, cdv; + + for (i = 0; i < 17; i++){ + f = FL[i]; + d = v.slice(i,i + 1); + if (i === 8) { + cdv = d; + } + if (!isNaN(d)) { + d *= f; + } else { + for (n = 0; n < LL.length; n++) { + if (d.toUpperCase() === LL[n]) { + d = VL[n]; + d *= f; + if (isNaN(cdv) && n === 8) { + cdv = LL[n]; + } + break; } } } + rs += d; } + cd = rs % 11; + if (cd === 10) { + cd = "X"; + } + if (cd === cdv) { + return true; + } + return false; +}, "The specified vehicle identification number (VIN) is invalid."); - // Either return true because we've validated each file, or because the - // browser does not support element.files and the FileList feature - return true; -}, jQuery.format("Please enter a value with a valid mimetype.")); +$.validator.addMethod("zipcodeUS", function(value, element) { + return this.optional(element) || /^\d{5}(-\d{4})?$/.test(value); +}, "The specified US ZIP Code is invalid"); -// Older "accept" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept -jQuery.validator.addMethod("extension", function(value, element, param) { - param = typeof param === "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif"; - return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); -}, jQuery.format("Please enter a value with a valid extension.")); +$.validator.addMethod("ziprange", function(value, element) { + return this.optional(element) || /^90[2-5]\d\{2\}-\d{4}$/.test(value); +}, "Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx"); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/additional-methods.min.js b/thirdparty/jquery-validate/additional-methods.min.js new file mode 100644 index 000000000..8720a1b3f --- /dev/null +++ b/thirdparty/jquery-validate/additional-methods.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","./jquery.validate.min"],a):a(jQuery)}(function(a){!function(){function b(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'\"_+=\/\-“”’]*/g,"")}a.validator.addMethod("maxWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length<=d},a.validator.format("Please enter {0} words or less.")),a.validator.addMethod("minWords",function(a,c,d){return this.optional(c)||b(a).match(/\b\w+\b/g).length>=d},a.validator.format("Please enter at least {0} words.")),a.validator.addMethod("rangeWords",function(a,c,d){var e=b(a),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},a.validator.format("Please enter between {0} and {1} words."))}(),a.validator.addMethod("accept",function(b,c,d){var e,f,g="string"==typeof d?d.replace(/\s/g,"").replace(/,/g,"|"):"image/*",h=this.optional(c);if(h)return h;if("file"===a(c).attr("type")&&(g=g.replace(/\*/g,".*"),c.files&&c.files.length))for(e=0;ec;c++)d=h-c,e=f.substring(c,c+1),g+=d*e;return g%11===0},"Please specify a valid bank account number"),a.validator.addMethod("bankorgiroaccountNL",function(b,c){return this.optional(c)||a.validator.methods.bankaccountNL.call(this,b,c)||a.validator.methods.giroaccountNL.call(this,b,c)},"Please specify a valid bank or giro account number"),a.validator.addMethod("bic",function(a,b){return this.optional(b)||/^([A-Z]{6}[A-Z2-9][A-NP-Z1-2])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test(a)},"Please specify a valid BIC code"),a.validator.addMethod("cifES",function(a){"use strict";var b,c,d,e,f,g,h=[];if(a=a.toUpperCase(),!a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)"))return!1;for(d=0;9>d;d++)h[d]=parseInt(a.charAt(d),10);for(c=h[2]+h[4]+h[6],e=1;8>e;e+=2)f=(2*h[e]).toString(),g=f.charAt(1),c+=parseInt(f.charAt(0),10)+(""===g?0:parseInt(g,10));return/^[ABCDEFGHJNPQRSUVW]{1}/.test(a)?(c+="",b=10-parseInt(c.charAt(c.length-1),10),a+=b,h[8].toString()===String.fromCharCode(64+b)||h[8].toString()===a.charAt(a.length-1)):!1},"Please specify a valid CIF number."),a.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9\-]+/.test(a))return!1;a=a.replace(/\D/g,"");var d=0;return c.mastercard&&(d|=1),c.visa&&(d|=2),c.amex&&(d|=4),c.dinersclub&&(d|=8),c.enroute&&(d|=16),c.discover&&(d|=32),c.jcb&&(d|=64),c.unknown&&(d|=128),c.all&&(d=255),1&d&&/^(5[12345])/.test(a)?16===a.length:2&d&&/^(4)/.test(a)?16===a.length:4&d&&/^(3[47])/.test(a)?15===a.length:8&d&&/^(3(0[012345]|[68]))/.test(a)?14===a.length:16&d&&/^(2(014|149))/.test(a)?15===a.length:32&d&&/^(6011)/.test(a)?16===a.length:64&d&&/^(3)/.test(a)?16===a.length:64&d&&/^(2131|1800)/.test(a)?15===a.length:128&d?!0:!1},"Please enter a valid credit card number."),a.validator.addMethod("currency",function(a,b,c){var d,e="string"==typeof c,f=e?c:c[0],g=e?!0:c[1];return f=f.replace(/,/g,""),f=g?f+"]":f+"]?",d="^["+f+"([1-9]{1}[0-9]{0,2}(\\,[0-9]{3})*(\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|(\\.[0-9]{1,2})?)$",d=new RegExp(d),this.optional(b)||d.test(a)},"Please specify a valid currency"),jQuery.validator.addMethod("dateFA",function(a,b){return this.optional(b)||/^[1-4]\d{3}\/((0?[1-6]\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\/(30|([1-2][0-9])|(0?[1-9]))))$/.test(a)},"Please enter a correct date"),a.validator.addMethod("dateITA",function(a,b){var c,d,e,f,g,h=!1,i=/^\d{1,2}\/\d{1,2}\/\d{4}$/;return i.test(a)?(c=a.split("/"),d=parseInt(c[0],10),e=parseInt(c[1],10),f=parseInt(c[2],10),g=new Date(f,e-1,d,12,0,0,0),h=g.getFullYear()===f&&g.getMonth()===e-1&&g.getDate()===d?!0:!1):h=!1,this.optional(b)||h},"Please enter a correct date"),a.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^(0?[1-9]|[12]\d|3[01])[\.\/\-](0?[1-9]|1[012])[\.\/\-]([12]\d)?(\d\d)$/.test(a)},"Please enter a correct date"),a.validator.addMethod("extension",function(a,b,c){return c="string"==typeof c?c.replace(/,/g,"|"):"png|jpe?g|gif",this.optional(b)||a.match(new RegExp(".("+c+")$","i"))},a.validator.format("Please enter a value with a valid extension.")),a.validator.addMethod("giroaccountNL",function(a,b){return this.optional(b)||/^[0-9]{1,7}$/.test(a)},"Please specify a valid giro account number"),a.validator.addMethod("iban",function(a,b){if(this.optional(b))return!0;var c,d,e,f,g,h,i,j,k,l=a.replace(/ /g,"").toUpperCase(),m="",n=!0,o="",p="";if(!/^([a-zA-Z0-9]{4} ){2,8}[a-zA-Z0-9]{1,4}|[a-zA-Z0-9]{12,34}$/.test(l))return!1;if(c=l.substring(0,2),h={AL:"\\d{8}[\\dA-Z]{16}",AD:"\\d{8}[\\dA-Z]{12}",AT:"\\d{16}",AZ:"[\\dA-Z]{4}\\d{20}",BE:"\\d{12}",BH:"[A-Z]{4}[\\dA-Z]{14}",BA:"\\d{16}",BR:"\\d{23}[A-Z][\\dA-Z]",BG:"[A-Z]{4}\\d{6}[\\dA-Z]{8}",CR:"\\d{17}",HR:"\\d{17}",CY:"\\d{8}[\\dA-Z]{16}",CZ:"\\d{20}",DK:"\\d{14}",DO:"[A-Z]{4}\\d{20}",EE:"\\d{16}",FO:"\\d{14}",FI:"\\d{14}",FR:"\\d{10}[\\dA-Z]{11}\\d{2}",GE:"[\\dA-Z]{2}\\d{16}",DE:"\\d{18}",GI:"[A-Z]{4}[\\dA-Z]{15}",GR:"\\d{7}[\\dA-Z]{16}",GL:"\\d{14}",GT:"[\\dA-Z]{4}[\\dA-Z]{20}",HU:"\\d{24}",IS:"\\d{22}",IE:"[\\dA-Z]{4}\\d{14}",IL:"\\d{19}",IT:"[A-Z]\\d{10}[\\dA-Z]{12}",KZ:"\\d{3}[\\dA-Z]{13}",KW:"[A-Z]{4}[\\dA-Z]{22}",LV:"[A-Z]{4}[\\dA-Z]{13}",LB:"\\d{4}[\\dA-Z]{20}",LI:"\\d{5}[\\dA-Z]{12}",LT:"\\d{16}",LU:"\\d{3}[\\dA-Z]{13}",MK:"\\d{3}[\\dA-Z]{10}\\d{2}",MT:"[A-Z]{4}\\d{5}[\\dA-Z]{18}",MR:"\\d{23}",MU:"[A-Z]{4}\\d{19}[A-Z]{3}",MC:"\\d{10}[\\dA-Z]{11}\\d{2}",MD:"[\\dA-Z]{2}\\d{18}",ME:"\\d{18}",NL:"[A-Z]{4}\\d{10}",NO:"\\d{11}",PK:"[\\dA-Z]{4}\\d{16}",PS:"[\\dA-Z]{4}\\d{21}",PL:"\\d{24}",PT:"\\d{21}",RO:"[A-Z]{4}[\\dA-Z]{16}",SM:"[A-Z]\\d{10}[\\dA-Z]{12}",SA:"\\d{2}[\\dA-Z]{18}",RS:"\\d{18}",SK:"\\d{20}",SI:"\\d{15}",ES:"\\d{20}",SE:"\\d{20}",CH:"\\d{5}[\\dA-Z]{12}",TN:"\\d{20}",TR:"\\d{5}[\\dA-Z]{17}",AE:"\\d{3}\\d{16}",GB:"[A-Z]{4}\\d{14}",VG:"[\\dA-Z]{4}\\d{16}"},g=h[c],"undefined"!=typeof g&&(i=new RegExp("^[A-Z]{2}\\d{2}"+g+"$",""),!i.test(l)))return!1;for(d=l.substring(4,l.length)+l.substring(0,4),j=0;j9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[1345789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),a.validator.addMethod("nieES",function(a){"use strict";return a=a.toUpperCase(),a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")?/^[T]{1}/.test(a)?a[8]===/^[T]{1}[A-Z0-9]{8}$/.test(a):/^[XYZ]{1}/.test(a)?a[8]==="TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.replace("X","0").replace("Y","1").replace("Z","2").substring(0,8)%23):!1:!1},"Please specify a valid NIE number."),a.validator.addMethod("nifES",function(a){"use strict";return a=a.toUpperCase(),a.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")?/^[0-9]{8}[A-Z]{1}$/.test(a)?"TRWAGMYFPDXBNJZSQVHLCKE".charAt(a.substring(8,0)%23)===a.charAt(8):/^[KLM]{1}/.test(a)?a[8]===String.fromCharCode(64):!1:!1},"Please specify a valid NIF number."),a.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please"),a.validator.addMethod("pattern",function(a,b,c){return this.optional(b)?!0:("string"==typeof c&&(c=new RegExp(c)),c.test(a))},"Invalid format."),a.validator.addMethod("phoneNL",function(a,b){return this.optional(b)||/^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[1-9]((\s|\s?\-\s?)?[0-9]){8}$/.test(a)},"Please specify a valid phone number."),a.validator.addMethod("phoneUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?)|(?:\(?0))(?:\d{2}\)?\s?\d{4}\s?\d{4}|\d{3}\)?\s?\d{3}\s?\d{3,4}|\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3})|\d{5}\)?\s?\d{4,5})$/)},"Please specify a valid phone number"),a.validator.addMethod("phoneUS",function(a,b){return a=a.replace(/\s+/g,""),this.optional(b)||a.length>9&&a.match(/^(\+?1-?)?(\([2-9]([02-9]\d|1[02-9])\)|[2-9]([02-9]\d|1[02-9]))-?[2-9]([02-9]\d|1[02-9])-?\d{4}$/)},"Please specify a valid phone number"),a.validator.addMethod("phonesUK",function(a,b){return a=a.replace(/\(|\)|\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)(?:1\d{8,9}|[23]\d{9}|7(?:[1345789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),jQuery.validator.addMethod("postalCodeCA",function(a,b){return this.optional(b)||/^[ABCEGHJKLMNPRSTVXY]\d[A-Z] \d[A-Z]\d$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeIT",function(a,b){return this.optional(b)||/^\d{5}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postalcodeNL",function(a,b){return this.optional(b)||/^[1-9][0-9]{3}\s?[a-zA-Z]{2}$/.test(a)},"Please specify a valid postal code"),a.validator.addMethod("postcodeUK",function(a,b){return this.optional(b)||/^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(a)},"Please specify a valid UK postcode"),a.validator.addMethod("require_from_group",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_req_grp")?f.data("valid_req_grp"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length>=d[0];return f.data("valid_req_grp",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),h},a.validator.format("Please fill at least {0} of these fields.")),a.validator.addMethod("skip_or_fill_minimum",function(b,c,d){var e=a(d[1],c.form),f=e.eq(0),g=f.data("valid_skip")?f.data("valid_skip"):a.extend({},this),h=e.filter(function(){return g.elementValue(this)}).length,i=0===h||h>=d[0];return f.data("valid_skip",g),a(c).data("being_validated")||(e.data("being_validated",!0),e.each(function(){g.element(this)}),e.data("being_validated",!1)),i},a.validator.format("Please either skip these fields or fill at least {0} of them.")),a.validator.addMethod("strippedminlength",function(b,c,d){return a(b).text().length>=d},a.validator.format("Please enter at least {0} characters")),a.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/.test(a)},"Please enter a valid time, between 00:00 and 23:59"),a.validator.addMethod("time12h",function(a,b){return this.optional(b)||/^((0?[1-9]|1[012])(:[0-5]\d){1,2}(\ ?[AP]M))$/i.test(a)},"Please enter a valid time in 12-hour am/pm format"),a.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},a.validator.messages.url),a.validator.addMethod("vinUS",function(a){if(17!==a.length)return!1;var b,c,d,e,f,g,h=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],k=0;for(b=0;17>b;b++){if(e=j[b],d=a.slice(b,b+1),8===b&&(g=d),isNaN(d)){for(c=0;c=1.6 - Use .prop instead of .attr -* Fixed #47, #39, #32 - Allowed credit card numbers to contain spaces as well as dashes (spaces are commonly input by users). - -1.8.1 ---- -* Added Thai (TH) localization, fixes #85 -* Added Vietnamese (VI) localization, thanks Ngoc -* Fixed issue #78. Error/Valid styling applies to all radio buttons of same group for required validation. -* Don't use form.elements as that isn't supported in jQuery 1.6 anymore. Its buggy as hell anyway (IE6-8: form.elements === form). - -1.8.0 ---- -* Improved NL localization (http://plugins.jquery.com/node/14120) -* Added Georgian (GE) localization, thanks Avtandil Kikabidze -* Added Serbian (SR) localization, thanks Aleksandar Milovac -* Added ipv4 and ipv6 to additional methods, thanks Natal Ngétal -* Added Japanese (JA) localization, thanks Bryan Meyerovich -* Added Catalan (CA) localization, thanks Xavier de Pedro -* Fixed missing var statements within for-in loops -* Fix for remote validation, where a formatted message got messed up (https://github.com/jzaefferer/jquery-validation/issues/11) -* Bugfixes for compatibility with jQuery 1.5.1, while maintaining backwards-compatibility - -1.7 ---- -* Added Lithuanian (LT) localization -* Added Greek (EL) localization (http://plugins.jquery.com/node/12319) -* Added Latvian (LV) localization (http://plugins.jquery.com/node/12349) -* Added Hebrew (HE) localization (http://plugins.jquery.com/node/12039) -* Fixed Spanish (ES) localization (http://plugins.jquery.com/node/12696) -* Added jQuery UI themerolled demo -* Removed cmxform.js -* Fixed four missing semicolons (http://plugins.jquery.com/node/12639) -* Renamed phone-method in additional-methods.js to phoneUS -* Added phoneUK and mobileUK methods to additional-methods.js (http://plugins.jquery.com/node/12359) -* Deep extend options to avoid modifying multiple forms when using the rules-method on a single element (http://plugins.jquery.com/node/12411) -* Bugfixes for compatibility with jQuery 1.4.2, while maintaining backwards-compatibility - -1.6 ---- -* Added Arabic (AR), Portuguese (PTPT), Persian (FA), Finnish (FI) and Bulgarian (BR) localization -* Updated Swedish (SE) localization (some missing html iso characters) -* Fixed $.validator.addMethod to properly handle empty string vs. undefined for the message argument -* Fixed two accidental global variables -* Enhanced min/max/rangeWords (in additional-methods.js) to strip html before counting; good when counting words in a richtext editor -* Added localized methods for DE, NL and PT, removing the dateDE and numberDE methods (use messages_de.js and methods_de.js with date and number methods instead) -* Fixed remote form submit synchronization, kudos to Matas Petrikas -* Improved interactive select validation, now validating also on click (via option or select, inconsistent across browsers); doesn't work in Safari, which doesn't trigger a click event at all on select elements; fixes http://plugins.jquery.com/node/11520 -* Updated to latest form plugin (2.36), fixing http://plugins.jquery.com/node/11487 -* Bind to blur event for equalTo target to revalidate when that target changes, fixes http://plugins.jquery.com/node/11450 -* Simplified select validation, delegating to jQuery's val() method to get the select value; should fix http://plugins.jquery.com/node/11239 -* Fixed default message for digits (http://plugins.jquery.com/node/9853) -* Fixed issue with cached remote message (http://plugins.jquery.com/node/11029 and http://plugins.jquery.com/node/9351) -* Fixed a missing semicolon in additional-methods.js (http://plugins.jquery.com/node/9233) -* Added automatic detection of substitution parameters in messages, removing the need to provide format functions (http://plugins.jquery.com/node/11195) -* Fixed an issue with :filled/:blank somewhat caused by Sizzle (http://plugins.jquery.com/node/11144) -* Added an integer method to additional-methods.js (http://plugins.jquery.com/node/9612) -* Fixed errorsFor method where the for-attribute contains characters that need escaping to be valid inside a selector (http://plugins.jquery.com/node/9611) - -1.5.5 ---- -* Fix for http://plugins.jquery.com/node/8659 -* Fixed trailing comma in messages_cs.js - -1.5.4 ---- -* Fixed remote method bug (http://plugins.jquery.com/node/8658) - -1.5.3 ---- -* Fixed a bug related to the wrapper-option, where all ancestor-elements that matched the wrapper-option where selected (http://plugins.jquery.com/node/7624) -* Updated multipart demo to use latest jQuery UI accordion -* Added dateNL and time methods to additionalMethods.js -* Added Traditional Chinese (Taiwan, tw) and Kazakhstan (KK) localization -* Moved jQuery.format (formerly String.format) to jQuery.validator.format, jQuery.format is deprecated and will be removed in 1.6 (see http://code.google.com/p/jquery-utils/issues/detail?id=15 for details) -* Cleaned up messages_pl.js and messages_ptbr.js (still defined messages for max/min/rangeValue, which were removed in 1.4) -* Fixed flawed boolean logic in valid-plugin-method for multiple elements; now all elements need to be valid for a boolean-true result (http://plugins.jquery.com/node/8481) -* Enhancement $.validator.addMethod: An undefined third message-argument won't overwrite an existing message (http://plugins.jquery.com/node/8443) -* Enhancement to submitHandler option: When used, click events on submit buttons are captured and the submitting button is inserted into the form before calling submitHandler, and removed afterwards; keeps submit buttons intact (http://plugins.jquery.com/node/7183#comment-3585) -* Added option validClass, default "valid", which adds that class to all valid elements, after validation (http://dev.jquery.com/ticket/2205) -* Added creditcardtypes method to additionalMethods.js, including tests (via http://dev.jquery.com/ticket/3635) -* Improved remote method to allow serverside message as a string, or true for valid, or false for invalid using the clientside defined message (http://dev.jquery.com/ticket/3807) -* Improved accept method to also accept a Drupal-style comma-seperated list of values (http://plugins.jquery.com/node/8580) - -1.5.2 ---- -* Fixed messages in additional-methods.js for maxWords, minWords, and rangeWords to include call to $.format -* Fixed value passed to methods to exclude carriage return (\r), same as jQuery's val() does -* Added slovak (sk) localization -* Added demo for integration with jQuery UI tabs -* Added selects-grouping example to tabs demo (see second tab, birthdate field) - -1.5.1 ---- -* Updated marketo demo to use invalidHandler option instead of binding invalid-form event -* Added TinyMCE integration example -* Added ukrainian (ua) localization -* Fixed length validation to work with trimmed value (regression from 1.5 where general trimming before validation was removed) -* Various small fixes for compatibility with both 1.2.6 and 1.3 - -1.5 ---- -* Improved basic demo, validating confirm-password field after password changed -* Fixed basic validation to pass the untrimmed input value as the first parameter to validation methods, changed required accordingly; breaks existing custom method that rely on the trimming -* Added norwegian (no), italian (it), hungarian (hu) and romanian (ro) localization -* Fixed #3195: Two flaws in swedish localization -* Fixed #3503: Extended rules("add") to accept messages property: use to specify add custom messages to an element via rules("add", { messages: { required: "Required! " } }); -* Fixed #3356: Regression from #2908 when using meta-option -* Fixed #3370: Added ignoreTitle option, set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for compatibility -* Fixed #3516: Trigger invalid-form event even when remote validation is involved -* Added invalidHandler option as a shortcut to bind("invalid-form", function() {}) -* Fixed Safari issue for loading indicator in ajaxSubmit-integration-demo (append to body first, then hide) -* Added test for creditcard validation and improved default message -* Enhanced remote validation, accepting options to passthrough to $.ajax as parameter (either url string or options, including url property plus everything else that $.ajax supports) - -1.4 ---- -* Fixed #2931, validate elements in document order and ignore type=image inputs -* Fixed usage of $ and jQuery variables, now fully compatible with all variations of noConflict usage -* Implemented #2908, enabling custom messages via metadata ala class="{required:true,messages:{required:'required field'}}", added demo/custom-messages-metadata-demo.html -* Removed deprecated methods minValue (min), maxValue (max), rangeValue (rangevalue), minLength (minlength), maxLength (maxlength), rangeLength (rangelength) -* Fixed #2215 regression: Call unhighlight only for current elements, not everything -* Implemented #2989, enabling image button to cancel validation -* Fixed issue where IE incorrectly validates against maxlength=0 -* Added czech (cs) localization -* Reset validator.submitted on validator.resetForm(), enabling a full reset when necessary -* Fixed #3035, skipping all falsy attributes when reading rules (0, undefined, empty string), removed part of the maxlength workaround (for 0) -* Added dutch (nl) localization (#3201) - -1.3 ---- -* Fixed invalid-form event, now only triggered when form is invalid -* Added spanish (es), russian (ru), portuguese brazilian (ptbr), turkish (tr), and polish (pl) localization -* Added removeAttrs plugin to facilitate adding and removing multiple attributes -* Added groups option to display a single message for multiple elements, via groups: { arbitraryGroupName: "fieldName1 fieldName2[, fieldNameN" } -* Enhanced rules() for adding and removing (static) rules: rules("add", "method1[, methodN]"/{method1:param[, method_n:param]}) and rules("remove"[, "method1[, method_n]") -* Enhanced rules-option, accepts space-seperated string-list of methods, eg. {birthdate: "required date"} -* Fixed checkbox group validation with inline rules: As long as the rules are specified on the first element, the group is now properly validated on click -* Fixed #2473, ignoring all rules with an explicit parameter of boolean-false, eg. required:false is the same as not specifying required at all (it was handled as required:true so far) -* Fixed #2424, with a modified patch from #2473: Methods returning a dependency-mismatch don't stop other rules from being evaluated anymore; still, success isn't applied for optional fields -* Fixed url and email validation to not use trimmed values -* Fixed creditcard validation to accept only digits and dashes ("asdf" is not a valid creditcard number) -* Allow both button and input elements for cancel buttons (via class="cancel") -* Fixed #2215: Fixed message display to call unhighlight as part of showing and hiding messages, no more visual side-effects while checking an element and extracted validator.checkForm to validate a form without UI sideeffects -* Rewrote custom selectors (:blank, :filled, :unchecked) with functions for compatibility with AIR - -1.2.1 ------ - -* Bundled delegate plugin with validate plugin - its always required anyway -* Improved remote validation to include parts from the ajaxQueue plugin for proper synchronization (no additional plugin necessary) -* Fixed stopRequest to prevent pendingRequest < 0 -* Added jQuery.validator.autoCreateRanges property, defaults to false, enable to convert min/max to range and minlength/maxlength to rangelength; this basically fixes the issue introduced by automatically creating ranges in 1.2 -* Fixed optional-methods to not highlight anything at all if the field is blank, that is, don't trigger success -* Allow false/null for highlight/unhighlight options instead of forcing a do-nothing-callback even when nothing needs to be highlighted -* Fixed validate() call with no elements selected, returning undefined instead of throwing an error -* Improved demo, replacing metadata with classes/attributes for specifying rules -* Fixed error when no custom message is used for remote validation -* Modified email and url validation to require domain label and top label -* Fixed url and email validation to require TLD (actually to require domain label); 1.2 version (TLD is optional) is moved to additions as url2 and email2 -* Fixed dynamic-totals demo in IE6/7 and improved templating, using textarea to store multiline template and string interpolation -* Added login form example with "Email password" link that makes the password field optional -* Enhanced dynamic-totals demo with an example of a single message for two fields - -1.2 ---- - -* Added AJAX-captcha validation example (based on http://psyrens.com/captcha/) -* Added remember-the-milk-demo (thanks RTM team for the permission!) -* Added marketo-demo (thanks Glen Lipka!) -* Added support for ajax-validation, see method "remote"; serverside returns JSON, true for valid elements, false or a String for invalid, String is used as message -* Added highlight and unhighlight options, by default toggles errorClass on element, allows custom highlighting -* Added valid() plugin method for easy programmatic checking of forms and fields without the need to use the validator API -* Added rules() plugin method to read and write rules for an element (currently read only) -* Replaced regex for email method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/email_address_validation/ -* Restructured event architecture to rely solely on delegation, both improving performance, and ease-of-use for the developer (requires jquery.delegate.js) -* Moved documentation from inline to http://docs.jquery.com/Plugins/Validation - including interactive examples for all methods -* Removed validator.refresh(), validation is now completely dynamic -* Renamed minValue to min, maxValue to max and rangeValue to range, deprecating the previous names (to be removed in 1.3) -* Renamed minLength to minlength, maxLength to maxlength and rangeLength to rangelength, deprecating the previous names (to be removed in 1.3) -* Added feature to merge min + max into and range and minlength + maxlength into rangelength -* Added support for dynamic rule parameters, allowing to specify a function as a parameter eg. for minlength, called when validating the element -* Allow to specify null or an empty string as a message to display nothing (see marketo demo) -* Rules overhaul: Now supports combination of rules-option, metadata, classes (new) and attributes (new), see rules() for details - -1.1.2 ---- - -* Replaced regex for URL method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/iri/ -* Improved email method to better handle unicode characters -* Fixed error container to hide when all elements are valid, not only on form submit -* Fixed String.format to jQuery.format (moving into jQuery namespace) -* Fixed accept method to accept both upper and lowercase extensions -* Fixed validate() plugin method to create only one validator instance for a given form and always return that one instance (avoids binding events multiple times) -* Changed debug-mode console log from "error" to "warn" level - -1.1.1 ------ - -* Fixed invalid XHTML, preventing error label creation in IE since jQuery 1.1.4 -* Fixed and improved String.format: Global search & replace, better handling of array arguments -* Fixed cancel-button handling to use validator-object for storing state instead of form element -* Fixed name selectors to handle "complex" names, eg. containing brackets ("list[]") -* Added button and disabled elements to exclude from validation -* Moved element event handlers to refresh to be able to add handlers to new elements -* Fixed email validation to allow long top level domains (eg. ".travel") -* Moved showErrors() from valid() to form() -* Added validator.size(): returns the number of current errors -* Call submitHandler with validator as scope for easier access of it's methods, eg. to find error labels using errorsFor(Element) -* Compatible with jQuery 1.1.x and 1.2.x - -1.1 ---- - -* Added validation on blur, keyup and click (for checkboxes and radiobutton). Replaces event-option. -* Fixed resetForm -* Fixed custom-methods-demo - -1.0 ---- - -* Improved number and numberDE methods to check for correct decimal numbers with delimiters -* Only elements that have rules are checked (otherwise success-option is applied to all elements) -* Added creditcard number method (thanks to Brian Klug) -* Added ignore-option, eg. ignore: "[@type=hidden]", using that expression to exclude elements to validate. Default: none, though submit and reset buttons are always ignored -* Heavily enhanced Functions-as-messages by providing a flexible String.format helper -* Accept Functions as messages, providing runtime-custom-messages -* Fixed exclusion of elements without rules from successList -* Fixed custom-method-demo, replaced the alert with message displaying the number of errors -* Fixed form-submit-prevention when using submitHandler -* Completely removed dependency on element IDs, though they are still used (when present) to link error labels to inputs. Achieved by using - an array with {name, message, element} instead of an object with id:message pairs for the internal errorList. -* Added support for specifying simple rules as simple strings, eg. "required" is equivalent to {required: true} -* Added feature: Add errorClass to invalid field�s parent element, making it easy to style the label/field container or the label for the field. -* Added feature: focusCleanup - If enabled, removes the errorClass from the invalid elements and hides all errors messages whenever the element is focused. -* Added success option to show the a field was validated successfully -* Fixed Opera select-issue (avoiding a attribute-collision) -* Fixed problems with focussing hidden elements in IE -* Added feature to skip validation for submit buttons with class "cancel" -* Fixed potential issues with Google Toolbar by preferring plugin option messages over title attribute -* submitHandler is only called when an actual submit event was handled, validator.form() returns false only for invalid forms -* Invalid elements are now focused only on submit or via validator.focusInvalid(), avoiding all trouble with focus-on-blur -* IE6 error container layout issue is solved -* Customize error element via errorElement option -* Added validator.refresh() to find new inputs in the form -* Added accept validation method, checks file extensions -* Improved dependency feature by adding two custom expressions: ":blank" to select elements with an empty value and �:filled� to select elements with a value, both excluding whitespace -* Added a resetForm() method to the validator: Resets each form element (using the form plugin, if available), removes classes on invalid elements and hides all error messages -* Fixed docs for validator.showErrors() -* Fixed error label creation to always use html() instead of text(), allowing arbitrary HTML passed in as messages -* Fixed error label creation to use specified error class -* Added dependency feature: The requires method accepts both String (jQuery expressions) and Functions as the argument -* Heavily improved customizing of error message display: Use normal messages and show/hide an additional container; Completely replace message display with own mechanism (while being able to delegate to the default handler; Customize placing of generated labels (instead of default below-element) -* Fixed two major bugs in IE (error containers) and Opera (metadata) -* Modified validation methods to accept empty fields as valid (exception: of course �required� and also �equalTo� methods) -* Renamed "min" to "minLength", "max" to "maxLength", "length" to "rangeLength" -* Added "minValue", "maxValue" and "rangeValue" -* Streamlined API for support of different events. The default, submit, can be disabled. If any event is specified, that is applied to each element (instead of the entire form). Combining keyup-validation with submit-validation is now extremely easy to setup -* Added support for one-message-per-rule when defining messages via plugin settings -* Added support to wrap metadata in some parent element. Useful when metadata is used for other plugins, too. -* Refactored tests and demos: Less files, better demos -* Improved documentation: More examples for methods, more reference texts explaining some basics diff --git a/thirdparty/jquery-validate/demo/ajaxSubmit-integration-demo.html b/thirdparty/jquery-validate/demo/ajaxSubmit-integration-demo.html deleted file mode 100644 index 14bdb5a67..000000000 --- a/thirdparty/jquery-validate/demo/ajaxSubmit-integration-demo.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -
-
- Login Form (Enter "foobar" as password) -

- - -

-

- - -

-

- -

-
-
- -
Please login!
- -
- - - -

Backend file: form.phps

- -Back to main page - -
- - - - diff --git a/thirdparty/jquery-validate/demo/captcha/captcha.js b/thirdparty/jquery-validate/demo/captcha/captcha.js deleted file mode 100644 index 245bc45ab..000000000 --- a/thirdparty/jquery-validate/demo/captcha/captcha.js +++ /dev/null @@ -1,27 +0,0 @@ -$(function(){ - $("#refreshimg").click(function(){ - $.post('newsession.php'); - $("#captchaimage").load('image_req.php'); - return false; - }); - - $("#captchaform").validate({ - rules: { - captcha: { - required: true, - remote: "process.php" - } - }, - messages: { - captcha: "Correct captcha is required. Click the captcha to generate a new one" - }, - submitHandler: function() { - alert("Correct captcha!"); - }, - success: function(label) { - label.addClass("valid").text("Valid captcha!") - }, - onkeyup: false - }); - -}); diff --git a/thirdparty/jquery-validate/demo/captcha/fonts/Anorexia.ttf b/thirdparty/jquery-validate/demo/captcha/fonts/Anorexia.ttf deleted file mode 100644 index 453eeb00e82b699a6054ce2b9954705595c2c170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14300 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 z`Captcha image'; - -?> \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/images/.htaccess b/thirdparty/jquery-validate/demo/captcha/images/.htaccess deleted file mode 100644 index f480ff4e4..000000000 --- a/thirdparty/jquery-validate/demo/captcha/images/.htaccess +++ /dev/null @@ -1 +0,0 @@ -AddType application/x-httpd-php .jpg \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/images/button.png b/thirdparty/jquery-validate/demo/captcha/images/button.png deleted file mode 100644 index 7ef79de5a1f422c79b3992ebd53f99d885368df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1546 zcmWkueKga182|2#VX`KTk-IHFFC`jAN*QU|3^VW6i$-4NrSjU5dz&`el=X8d@xUqgS$`_7AKN|DLgZY%AJGQZt z)ZQb?0erGM18BIOwBfDX^h)c6O1xBamNXkKd=*q+Yw(QHR#$QK`-~b>R6MnxfV}%0 zAf*_7C7nP(?WQ8GZd#ZPE#Ebq>kX|0`k=_7IHSlgn-voTpI`bi8cn%}LgUT)NR=0_ zEvWP{{k1((7P%|i)$(nj2nbYOGwuCw7u4ygtvi+k*fv z9@0=Y*S_V8%-pUR!nOBiYg6!oT$-kWm*7wg*G8Mi68LOx6ZQw(2gi0&mfr3YS^r04 ziaX{{9PFle6Z^g7Q-_;_!;{E&Z#^1ALq`JHfy%Ro4X}OJ;sSqZlnc^I`J zR-j68LEss#S|-+|mUnAIf3(-SZY@KN?oYL+Eo0aOOy_5S&<19%ICxjdWX_q@TTo+% z$PZj|Jd8CEaH(XL+qD3=W3|-CYd0nadRyD1KHGktwro}8EMR3(`S=2 zh&2S(S*OuOl8&+|$n172_G;hc5aps$S~o$4k`mve=&k04K5o;bPXgHllxp0wC~UL# z26HnpmL+L7-^;m15ZdCr0iF@}kn)e!G5rE^R;ZXgm&oJKG>QCRdvd#?k%^X*KCiJ& z67sTSHZhJj5TUF^MjE5MVT9Co5rri)hXo;m;6AnQl(gM=@6hUYdYh|Y87l0yq!SPt z$jkSH`028tZ+4QT{()x)bYM>ZdG11Wq8TUiI?yDcyB_=L*F_d*!?`x{sP$D^#v7bd zH>zrC^sUyxwCJXU>KK9l&lBcbNu1Ws$K_0sv>&NzEBQr^d-Y}K<25_G!f=m%3Jh0X z8|pN$em6kN^w#vDc}&nU=BA37X|OwGENHBleDjN91Owx?-{u>+S?!Q2FCAf0Itb^- zE5#YQC5D@$W5J+>o38=1{GjtyQS7$?jybPM>bhOB_M%1I9qmNT?|*w6+}#QN6P=I~ zIbD~n97Ea(jCBhUKmJvJGU#d(g?=6$kU5Np-t|jM{3l+O*^Q+~aM6w8*tyeXR(|a^Wl>`jbrgJ%H8F226IoypiUDBZA2#}W) zRx{$+Url%+XG;n^RTMM~mJO$8L+nkF;!DkVHWXz%S_H}u!3apFp0hY@ml|5d_2$7v z=WV%duRZ0vNr5Mf@C=8nkJk&P%d!U7ZF?4~jDB|JWyPU{rSKAj2n<{%r)gvoMT4KU z#dh1wXe2%ONaa%mmh33pczUj*$Idk0HHUagecM8cfTvEfb&NZ*&mrZ>SMKgng6|1j ztyr(t#g)}z@C=-O&t99E_{Z9Ye>tH(!*5-eN^;!k%Myc+)0KAr)ze8?g3;1$6`_p7|dEr)G)( diff --git a/thirdparty/jquery-validate/demo/captcha/images/image.php b/thirdparty/jquery-validate/demo/captcha/images/image.php deleted file mode 100644 index bc571ab58..000000000 --- a/thirdparty/jquery-validate/demo/captcha/images/image.php +++ /dev/null @@ -1,35 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/index.php b/thirdparty/jquery-validate/demo/captcha/index.php deleted file mode 100644 index 74bd54f50..000000000 --- a/thirdparty/jquery-validate/demo/captcha/index.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - AJAX CAPTCHA - - - - - - - - - - - - - - -

AJAX CAPTCHA, based on http://psyrens.com/captcha/

- -
-
-
Captcha image
- - - -
-
- -

If you can't decipher the text on the image, click it to dynamically generate a new one.

- - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/newsession.php b/thirdparty/jquery-validate/demo/captcha/newsession.php deleted file mode 100644 index 36ff45e27..000000000 --- a/thirdparty/jquery-validate/demo/captcha/newsession.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/process.php b/thirdparty/jquery-validate/demo/captcha/process.php deleted file mode 100644 index 24fe3a8bc..000000000 --- a/thirdparty/jquery-validate/demo/captcha/process.php +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/rand.php b/thirdparty/jquery-validate/demo/captcha/rand.php deleted file mode 100644 index 88b595e77..000000000 --- a/thirdparty/jquery-validate/demo/captcha/rand.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/style.css b/thirdparty/jquery-validate/demo/captcha/style.css deleted file mode 100644 index c0bbe5f90..000000000 --- a/thirdparty/jquery-validate/demo/captcha/style.css +++ /dev/null @@ -1,140 +0,0 @@ -body { - margin: 3% 5%; - padding: 0; - background-color: #fff; - color: #333; - font: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif; -} - -a:link, a:visited { - background-color: #fff; - color: #333; - text-decoration: underline; -} - -a:hover, a:focus, a:active { - background-color: #ffb; - color: #454545; - text-decoration: underline; -} - -h1 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.5em Helvetica, Arial, Verdana, Sans-serif; -} - -h2 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.3em Helvetica, Arial, Verdana, Sans-serif; -} - -h3 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.2em Helvetica, Arial, Verdana, Sans-serif; -} - -table { - margin: 0; - padding: 0; - width: 100%; -} - -table th { - border: 1px solid #ddd; - font-weight: bold; - text-align: left; - padding: 1%; -} - -table td { - border: 1px solid #ddd; - padding: 1%; -} - -dl, dt, dd { - margin: 0; - padding: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - border: 1px solid #ddd; - margin: 0% 0% 2% 0%; - padding: 2%; -} - -fieldset legend { - margin: 0; - padding: 0 4px; - background-color: inherit; - color: #333; -} - -code { - font: 1em "Courier New", Courier, Monospace; -} - -pre code { - font: 1.1em "Courier New", Courier, Monospace; - border-bottom: 1px solid #eee; -} - -img { - border: 1px solid #eee; -} - -p#statusgreen { - font-size: 1.2em; - background-color: #fff; - color: #0a0; -} - -p#statusred { - font-size: 1.2em; - background-color: #fff; - color: #a00; -} - -fieldset label { - display: block; -} - -fieldset label.error { - color: red; -} - -fieldset label.valid { - color: green; -} - -fieldset div#captchaimage { - float: left; - margin-right: 15px; -} - -fieldset input#captcha { - width: 25%; - border: 1px solid #ddd; - padding: 2px; -} - -fieldset input#submit { - display: block; - margin: 2% 0% 0% 0%; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/chili.css b/thirdparty/jquery-validate/demo/css/chili.css deleted file mode 100644 index 6990449fc..000000000 --- a/thirdparty/jquery-validate/demo/css/chili.css +++ /dev/null @@ -1,15 +0,0 @@ -.jscom, .mix htcom { color: #4040c2; } -.com { color: green; } -.regexp { color: maroon; } -.string { color: teal; } -.keywords { color: blue; } -.global { color: #008; } -.numbers { color: #880; } -.comm { color: green; } -.tag { color: blue; } -.entity { color: blue; } -.string { color: teal; } -.aname { color: maroon; } -.avalue { color: maroon; } -.jquery { color: #00a; } -.plugin { color: red; } \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/cmxform.css b/thirdparty/jquery-validate/demo/css/cmxform.css deleted file mode 100644 index 120f5a473..000000000 --- a/thirdparty/jquery-validate/demo/css/cmxform.css +++ /dev/null @@ -1,46 +0,0 @@ -/********************************** - -Name: cmxform Styles - -***********************************/ -form.cmxform { - width: 370px; - font-size: 1.0em; - color: #333; -} - -form.cmxform legend { - padding-left: 0; -} - -form.cmxform legend, form.cmxform label { - color: #333; -} - -form.cmxform fieldset { - border: none; - border-top: 1px solid #C9DCA6; - background: url(../images/cmxform-fieldset.gif) left bottom repeat-x; - background-color: #F8FDEF; -} - -form.cmxform fieldset fieldset { - background: none; -} - -form.cmxform fieldset p, form.cmxform fieldset fieldset { - padding: 5px 10px 7px; - background: url(../images/cmxform-divider.gif) left bottom repeat-x; -} - -form.cmxform label.error, label.error { - /* remove the next line when you have trouble in IE6 with labels in list */ - color: red; - font-style: italic -} -div.error { display: none; } -input { border: 1px solid black; } -input.checkbox { border: none } -input:focus { border: 1px dotted black; } -input.error { border: 1px dotted red; } -form.cmxform .gray * { color: gray; } \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/cmxformTemplate.css b/thirdparty/jquery-validate/demo/css/cmxformTemplate.css deleted file mode 100644 index ac52f71b4..000000000 --- a/thirdparty/jquery-validate/demo/css/cmxformTemplate.css +++ /dev/null @@ -1,55 +0,0 @@ -/********************************** - -Use: cmxform template - -***********************************/ -form.cmxform fieldset { - margin-bottom: 10px; -} - -form.cmxform legend { - padding: 0 2px; - font-weight: bold; - _margin: 0 -7px; /* IE Win */ -} - -form.cmxform label { - display: inline-block; - line-height: 1.8; - vertical-align: top; - cursor: hand; -} - -form.cmxform fieldset p { - list-style: none; - padding: 5px; - margin: 0; -} - -form.cmxform fieldset fieldset { - border: none; - margin: 3px 0 0; -} - -form.cmxform fieldset fieldset legend { - padding: 0 0 5px; - font-weight: normal; -} - -form.cmxform fieldset fieldset label { - display: block; - width: auto; -} - -form.cmxform label { width: 100px; } /* Width of labels */ -form.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */ -form.cmxform label.error { - margin-left: 103px; - width: 220px; -} - -form.cmxform input.submit { - margin-left: 103px; -} - -/*\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */ \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/core.css b/thirdparty/jquery-validate/demo/css/core.css deleted file mode 100644 index 84494e873..000000000 --- a/thirdparty/jquery-validate/demo/css/core.css +++ /dev/null @@ -1,21 +0,0 @@ -body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif } -body { margin: 0; padding: 0; font-size: small; color: #333 } -h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 } -h1 { font-size: large } -#main { padding: 1em; } -#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc; - background: url(../images/bg.gif) repeat-x; text-align: center } -#banner a { color: white; } - -p { margin: 10px 0; } - -li { margin-left: 10px; } - -h3 { margin: 1em 0 0; } - -h1 { font-size: 2em; } -h2 { font-size: 1.8em; } -h3 { font-size: 1.6em; } -h4 { font-size: 1.4em; } -h5 { font-size: 1.2em; } - diff --git a/thirdparty/jquery-validate/demo/css/reset.css b/thirdparty/jquery-validate/demo/css/reset.css deleted file mode 100644 index 5c376b374..000000000 --- a/thirdparty/jquery-validate/demo/css/reset.css +++ /dev/null @@ -1,61 +0,0 @@ -/********************************** - -Use: Reset Styles for all browsers - -***********************************/ - -body, p, blockquote { - margin: 0; - padding: 0; -} - -a img, iframe { border: none; } - -/* Headers -------------------------------*/ - -h1, h2, h3, h4, h5, h6 { - margin: 0; - padding: 0; - font-size: 100%; -} - -/* Lists -------------------------------*/ - -ul, ol, dl, li, dt, dd { - margin: 0; - padding: 0; -} - -/* Links -------------------------------*/ - -a, a:link {} -a:visited {} -a:hover {} -a:active {} - -/* Forms -------------------------------*/ - -form, fieldset { - margin: 0; - padding: 0; -} - -fieldset { border: 1px solid #000; } - -legend { - padding: 0; - color: #000; -} - -input, textarea, select { - margin: 0; - padding: 1px; - font-size: 100%; - font-family: inherit; -} - -select { padding: 0; } \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/screen.css b/thirdparty/jquery-validate/demo/css/screen.css deleted file mode 100644 index 840f572bb..000000000 --- a/thirdparty/jquery-validate/demo/css/screen.css +++ /dev/null @@ -1,11 +0,0 @@ -/********************************** - -Use: Main Screen Import - -***********************************/ - -@import "reset.css"; -@import "core.css"; - -@import "cmxformTemplate.css"; -@import "cmxform.css"; \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/custom-messages-data-demo.html b/thirdparty/jquery-validate/demo/custom-messages-data-demo.html deleted file mode 100644 index 793dfd78b..000000000 --- a/thirdparty/jquery-validate/demo/custom-messages-data-demo.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - -jQuery validation plug-in - comment form example - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -

Take a look at the source to see how messages can be customized with metadata.

- - -
-
- Please enter your email address -

- - - -

-

- -

-
-
- - -
-
- Please enter your email address -

- - - -

-

- -

-
-
- -Back to main page - - - diff --git a/thirdparty/jquery-validate/demo/custom-methods-demo.html b/thirdparty/jquery-validate/demo/custom-methods-demo.html deleted file mode 100644 index 123978885..000000000 --- a/thirdparty/jquery-validate/demo/custom-methods-demo.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -
-

- -
- Example with custom methods and heavily customized error display - - - - - - - - - - - - - - - - -
-
- -
-
- -

Your form contains tons of errors! Please try again.

- -

Back to main page

- -
- - - - diff --git a/thirdparty/jquery-validate/demo/dynamic-totals.html b/thirdparty/jquery-validate/demo/dynamic-totals.html deleted file mode 100644 index baaaa4b24..000000000 --- a/thirdparty/jquery-validate/demo/dynamic-totals.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - -jQuery validation plug-in - dynamic forms demo - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- - - -
-

- -
- Example with custom methods and heavily customized error display - - - - - - - - - - - - - - - -
 
-
-
- - - -

Your form contains tons of errors! Please try again.

- -

Back to main page

- -
- - - - diff --git a/thirdparty/jquery-validate/demo/errorcontainer-demo.html b/thirdparty/jquery-validate/demo/errorcontainer-demo.html deleted file mode 100644 index 582302613..000000000 --- a/thirdparty/jquery-validate/demo/errorcontainer-demo.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -
-
- Login Form -

- - -

-

- - -

-
-
-

- -

-
-
- - -
-

There are serious errors in your form submission, please see below for details.

-
    -
  1. -
  2. -
  3. -
  4. -
  5. -
-
- -
-
- Validating a complete form -

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-
-
- -
-

There are serious errors in your form submission, please see details above the form!

-
- -Back to main page - -
- - - - diff --git a/thirdparty/jquery-validate/demo/file_input.html b/thirdparty/jquery-validate/demo/file_input.html deleted file mode 100644 index a162aaf08..000000000 --- a/thirdparty/jquery-validate/demo/file_input.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - -jQuery validation plug-in - comment form example - - - - - - - - - - - - - -
-
- Select the indicated type of files? -

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- -

-
-
- - - diff --git a/thirdparty/jquery-validate/demo/form.php b/thirdparty/jquery-validate/demo/form.php deleted file mode 100644 index b25c6ef48..000000000 --- a/thirdparty/jquery-validate/demo/form.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/form.phps b/thirdparty/jquery-validate/demo/form.phps deleted file mode 100644 index b25c6ef48..000000000 --- a/thirdparty/jquery-validate/demo/form.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/images/bg.gif b/thirdparty/jquery-validate/demo/images/bg.gif deleted file mode 100644 index 846add07140d6ff8679e2d3715f6ee25a8045113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1175 zcmZ?wbhEHbTzEjN_<%&o zL8;P%GG&M4Dh?}D9#*bCqFQrAz4oYP-BIoOW4evU^_z|xwVW_%Jz>^%(xUyORmUmY zuG9A2ryYCGIQN}#?LX^2;jHJxb3T*L`%O6?FzrIn^a~*~E{4s#7&-e=^qkAFb1%ow zzmmA%O7g<1sf(^=EV-7o^m@*+>v=0~6s){ay!vM8np@>-Z&j|lUA_Kx?Z!Lxo9?u3 zz1O|-!KA$pXB>Py|LD`DC!eoA^J3G5S39n}*?;5h(L3)?-~V{&$>$r-zubTQ?dkg; zZ$AJ0^!@kG-+%xA{}1%>C>RX^cnB!|WC61OGw6UsKzV|J<39rudPj2S4Ze(+&%TR>H7Kv!wy+* zv*w$dGfY>+o-S*?y}iKl#9Z&~&3AWK*uJ=X`g`;J{SA&Bay}L<4-a>^YQ&wXXnA~m zf~UtkpPemFPtWkpxOe7f%k%RK0z2e+2gLPt5b(-TL@HT@io2uKoA-50xk8`|of6`};@ji~HyQw*xZ~lj4I07PiC(jT~GHA2jjsJ$%qC zAf))PMMNy|VXK7H!iQ}#at|N2D<~;G>QGTjeAKC-weV4wj^4vZ-3CUAk9$na5+C;^p%XKP!|RpMUsy{rdawzy21;I=uSyD}%bz|NsBD zZ$E$k_4odrkN01HpD^co!-o6o&%So*Irsd-PoON&0Q^AlCkv|xg9w8TNEygZ2G&Rg zRVh~{2G7I}ox(W=1q!(`>c?Cp*Y`>_H8MV8=HO*!I8sujlfvZs;0TL|$ceT^fh-mx sf~a4}c|00Nc?P5=M^ diff --git a/thirdparty/jquery-validate/demo/images/cmxform-fieldset.gif b/thirdparty/jquery-validate/demo/images/cmxform-fieldset.gif deleted file mode 100644 index 9c48ea4bac40207261009276fbbcc20c44c5b88a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmV-A0mc4DNk%w1VF~~&0g(Uz_5A4Q`N;12*5miSA^8LV00000EC2ui015ys0RRI3 zgpaAq?GK}zwAzca-n{z{hT=$;=82~2dJ30oz<`{{FumMyuF$Ta!_9U-+m3krB@fDB z^NDmWl~idJN-bKqSFP6y^onOiAo*-gm&a;!I81&!)$e*c9k=V_e7*k<7$`VMSZH{N zn5ekO*y#8O87VnQ2^3%%b{VL7$%(1w>6!W2IXYSzT8AnS(7Ia68jBkGDl6-HJImVX z%Da2}+w0q!ODxQbi>!QnyvzIy9W6agU2T1hovppi-R=Di9xgsk&OIP~e(tKi9-yAS z4lnQCIv}4uZ*O0}kMFPVPTxI%0t*^Eh%lkTg$x@yddgX*xQ8EmhvrKB>H-Set8{R%<3wq ze${^A6HX%6FQ{x$Ej@nsQXrC9%nZy7d_c&+Br&C5XyV@c=aK_2b#1=4$DJWVVMcFa zWfCj0#T-D3S%8WKr!XvAE!ZZId~U8qc&+*6aO_5kD6GtG-*cz=)rD@Lk=0TxQ4(oO zGP;nAma%G6as&f|H2?s|bkG0* diff --git a/thirdparty/jquery-validate/demo/images/unchecked.gif b/thirdparty/jquery-validate/demo/images/unchecked.gif deleted file mode 100644 index 06ecaba118eef7e0e6116ee5ff14e16091629dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmZ?wbhEHby};nU=VFDvSS3K)n6ia%LcMHmDbbU->lb~3QWB&eueU|?XL(ved* z$Dlw&cg+#?xqBFrbQ%~AD|)jeurV*1ki)>dEXL@im8(Cyqp-NN$};mAFF*W{k~+!4 lSb9c{nO**|XvZGDM)vOtS_R1_wKj&vIywPir8 - - - -jQuery validation plug-in - main demo - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -

Default submitHandler is set to display an alert into of submitting the form

- -
-
- Please provide your name, email address (won't be published) and a comment -

- - -

- - -

-

- - -

-

- - -

-

- -

-
-
- -
-
- Validating a complete form -

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-
- Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo - - - - -
-

- -

-
-
- -

Synthetic examples

- -

Real-world examples

- - -

Testsuite

- - -
- - - - diff --git a/thirdparty/jquery-validate/demo/jquerymobile.html b/thirdparty/jquery-validate/demo/jquerymobile.html deleted file mode 100644 index 90a845772..000000000 --- a/thirdparty/jquery-validate/demo/jquerymobile.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - My Page - - - - - - - - - -
- -
-

Welcome

-
- -
-
-
- - -
-
- - -
- -
-
- -
- - - - diff --git a/thirdparty/jquery-validate/demo/js/chili-1.7.pack.js b/thirdparty/jquery-validate/demo/js/chili-1.7.pack.js deleted file mode 100644 index 90e7735cb..000000000 --- a/thirdparty/jquery-validate/demo/js/chili-1.7.pack.js +++ /dev/null @@ -1 +0,0 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8={3b:"1.6",2o:"1B.1Y,1B.23,1B.2e",2i:"",2H:1a,12:"",2C:1a,Z:"",2a:\'$$\',R:"&#F;",1j:"&#F;&#F;&#F;&#F;",1f:"&#F;<1W/>",3c:5(){9 $(y).39("1k")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3=="1h")?h.3:h.3.1w;k.1m({A:A,3:"("+3+")",u:1+(3.c(/\\\\./g,"%").c(/\\[.*?\\]/g,"%").3a(/\\((?!\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$("2d").1O($W)}v{$("2d").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l="";l=l.c(/\\r\\n?/g,"\\n");4 C=1J(l,a);7(8.1j){C=C.c(/\\t/g,8.1j)}7(8.1f){C=C.c(/\\n/g,8.1f)}$(e).38(C)}5 1o(q,13){4 1l={12:8.12,2x:q+".1d",Z:8.Z,2w:q+".2u"};4 B;7(13&&1v 13=="2l")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:"2l.15"});4 2n=x 1u("\\\\b"+8.2i+"\\\\b","2j");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i("V");7(!1n){9}4 q=$.3u(1n.c(2n,""));7(\'\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$("."+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t("a 3w Q: "+q+\'@\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\'\'==p){9""}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\<1W[^>]*?\\>/3y,16);4 e=J.1L(\'<1k>\');e.3l=p;p=e.3m.c(x 1u(16,"g"),\'\\r\\n\');9 p}4 T="";4 18=1G;$(1e).3j().G("1k").U("2c",5(){18=y}).U("1M",5(){7(18==y)T=J.1i.29().3k});$("3n").U("3q",5(){7(\'\'!=T){2p.3r.3o(\'3p\',22(T));2V.2R=1a}}).U("2c",5(){T=""}).U("1M",5(){18=1G})}})})(1Z);8.I["1Y.1d"]={k:{2M:{3:/\\/\\*[^*]*\\*+(?:[^\\/][^*]*\\*+)*\\//},25:{3:/\\ - -
- - - - -
- - -
- - - -
- - - - -
- - - - -

Step 1 of 2

-

-

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

Login Information

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


-
-
- - -
- - - -
-
-
- - - - -
- - - - - - -
- - - diff --git a/thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js b/thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js deleted file mode 100644 index 0cd5cfcd5..000000000 --- a/thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2007 Josh Bush (digitalbush.com) - * - * 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. - */ - -/* - * Version: 1.1 - * Release: 2007-09-08 - */ -(function($) { - //Helper Functions for Caret positioning - function getCaretPosition(ctl){ - var res = {begin: 0, end: 0 }; - if (ctl.setSelectionRange){ - res.begin = ctl.selectionStart; - res.end = ctl.selectionEnd; - }else if (document.selection && document.selection.createRange){ - var range = document.selection.createRange(); - res.begin = 0 - range.duplicate().moveStart('character', -100000); - res.end = res.begin + range.text.length; - } - return res; - }; - - function setCaretPosition(ctl, pos){ - if(ctl.setSelectionRange){ - ctl.focus(); - ctl.setSelectionRange(pos,pos); - }else if (ctl.createTextRange){ - var range = ctl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - }; - - //Predefined character definitions - var charMap={ - '9':"[0-9]", - 'a':"[A-Za-z]", - '*':"[A-Za-z0-9]" - }; - - //Helper method to inject character definitions - $.mask={ - addPlaceholder : function(c,r){ - charMap[c]=r; - } - }; - - $.fn.unmask=function(){ - return this.trigger("unmask"); - }; - - //Main Method - $.fn.mask = function(mask,settings) { - settings = $.extend({ - placeholder: "_", - completed: null - }, settings); - - //Build Regex for format validation - var reString="^"; - for(var i=0;i 16 && k < 32 ) || (k > 32 && k < 41)); - - //delete selection before proceeding - if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){ - clearBuffer(pos.begin,pos.end); - } - //backspace and delete get special treatment - if(k==8){//backspace - while(pos.begin-->=0){ - if(!locked[pos.begin]){ - buffer[pos.begin]=settings.placeholder; - if($.browser.opera){ - //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character. - writeBuffer(pos.begin); - setCaretPosition(this,pos.begin+1); - }else{ - writeBuffer(); - setCaretPosition(this,pos.begin); - } - return false; - } - } - }else if(k==46){//delete - clearBuffer(pos.begin,pos.begin+1); - writeBuffer(); - setCaretPosition(this,pos.begin); - return false; - }else if (k==27){ - clearBuffer(0,mask.length); - writeBuffer(); - setCaretPosition(this,0); - return false; - } - - }; - input.bind("keydown",keydownEvent); - - function keypressEvent(e){ - if(ignore){ - ignore=false; - return; - } - e=e||window.event; - var k=e.charCode||e.keyCode||e.which; - - var pos=getCaretPosition(this); - var caretPos=pos.begin; - - if(e.ctrlKey || e.altKey){//Ignore - return true; - }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters - while(pos.begin=buffer.length) - settings.completed.call(input); - else - setCaretPosition(this,caretPos); - - return false; - }; - input.bind("keypress",keypressEvent); - - /*Helper Methods*/ - function clearBuffer(start,end){ - for(var i=start;i= 6 && /\d/.test(value) && /[a-z]/i.test(value); - if (!result) { - element.value = ""; - var validator = this; - setTimeout(function() { - validator.blockFocusCleanup = true; - element.focus(); - validator.blockFocusCleanup = false; - }, 1); - } - return result; - }, "Your password must be at least 6 characters long and contain at least one number and one character."); - - // a custom method making the default value for companyurl ("http://") invalid, without displaying the "invalid url" message - jQuery.validator.addMethod("defaultInvalid", function(value, element) { - return value != element.defaultValue; - }, ""); - - jQuery.validator.addMethod("billingRequired", function(value, element) { - if ($("#bill_to_co").is(":checked")) - return $(element).parents(".subTable").length; - return !this.optional(element); - }, ""); - - jQuery.validator.messages.required = ""; - $("form").validate({ - invalidHandler: function(e, validator) { - var errors = validator.numberOfInvalids(); - if (errors) { - var message = errors == 1 - ? 'You missed 1 field. It has been highlighted below' - : 'You missed ' + errors + ' fields. They have been highlighted below'; - $("div.error span").html(message); - $("div.error").show(); - } else { - $("div.error").hide(); - } - }, - onkeyup: false, - submitHandler: function() { - $("div.error").hide(); - alert("submit! use link below to go to the other step"); - }, - messages: { - password2: { - required: " ", - equalTo: "Please enter the same password as above" - }, - email: { - required: " ", - email: "Please enter a valid email address, example: you@yourdomain.com", - remote: jQuery.validator.format("{0} is already taken, please enter a different address.") - } - }, - debug:true - }); - - $(".resize").vjustify(); - $("div.buttonSubmit").hoverClass("buttonSubmitHover"); - - if ($.browser.safari) { - $("body").addClass("safari"); - } - - $("input.phone").mask("(999) 999-9999"); - $("input.zipcode").mask("99999"); - var creditcard = $("#creditcard").mask("9999 9999 9999 9999"); - - $("#cc_type").change( - function() { - switch ($(this).val()){ - case 'amex': - creditcard.unmask().mask("9999 999999 99999"); - break; - default: - creditcard.unmask().mask("9999 9999 9999 9999"); - break; - } - } - ); - - // toggle optional billing address - var subTableDiv = $("div.subTableDiv"); - var toggleCheck = $("input.toggleCheck"); - toggleCheck.is(":checked") - ? subTableDiv.hide() - : subTableDiv.show(); - $("input.toggleCheck").click(function() { - if (this.checked == true) { - subTableDiv.slideUp("medium"); - $("form").valid(); - } else { - subTableDiv.slideDown("medium"); - } - }); - - -}); - -$.fn.vjustify = function() { - var maxHeight=0; - $(".resize").css("height","auto"); - this.each(function(){ - if (this.offsetHeight > maxHeight) { - maxHeight = this.offsetHeight; - } - }); - this.each(function(){ - $(this).height(maxHeight); - if (this.offsetHeight > maxHeight) { - $(this).height((maxHeight-(this.offsetHeight-maxHeight))); - } - }); -}; - -$.fn.hoverClass = function(classname) { - return this.hover(function() { - $(this).addClass(classname); - }, function() { - $(this).removeClass(classname); - }); -}; \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/marketo/step2.htm b/thirdparty/jquery-validate/demo/marketo/step2.htm deleted file mode 100644 index 933d68265..000000000 --- a/thirdparty/jquery-validate/demo/marketo/step2.htm +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - - - - -Subscription Signup | Marketo - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - -
- - - -
- - - - -
- - - - -

Step 2 of 2

-

Billing Information

-

-

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Billing Address: -
- - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- -
- -
- -
- -
- -
- -
-
-
Credit Card Type: - -
Expiration: - - -
- -
- -
-
- - -

- -
-
-
- -
- - - -
-
-
- - - - -
- - - - - - -
- - - - - - - diff --git a/thirdparty/jquery-validate/demo/marketo/stylesheet.css b/thirdparty/jquery-validate/demo/marketo/stylesheet.css deleted file mode 100644 index 7040c4fb0..000000000 --- a/thirdparty/jquery-validate/demo/marketo/stylesheet.css +++ /dev/null @@ -1,1179 +0,0 @@ -:-moz-any-link :focus { - outline: none; -} - -:focus { - -moz-outline-style: none; - outline: none; -} - -body { - font-size: 80%; - margin: 0; - padding: 0; - font-family: tahoma, geneva, sans-serif; - background-color: #000000; -} - -a { - color: #0653AB; - outline: 0px; - text-decoration: none; -} - -a:hover { - outline: 0px; - text-decoration: underline; -} - -img { - border: 0px; -} - -/* s1.0 - Page Containers */ -#letterbox { - margin: 10px auto; - width: 883px; - background-color: #364158; - border: 8px solid #D4D4D4; - padding: 1px 1px 10px 1px; -} - -#header-background { - background: url(images/back_nav_blue.gif) repeat-x; - margin: 0px auto; - padding: 0px; - height: 73px; - width: 883px; - border-top: 4px solid #CCEAFE; - border-bottom: 4px solid #D4D4D4; -} - -#page-container { - width: 866px; - margin: 0px auto; - margin-top: 33px; /* pad from top menu to actions buts*/ - margin-bottom: -11px; - padding-top: 8px; - padding-bottom: 8px; - background-color: #D4D4D4; /* light grey*/ - border-right: 1px solid #464646; -} - -#page-content-inner { - width: 849px; - margin: 0px auto; - border-top: 1px solid #9F9FA0; - border-left: 1px solid #A2A09A; - background-color: #F4F1E9; - position: relative; -} - -#page-content-inner #col-left { - width: 210px; - float: left; - background-color: #F4F1E9; -} - -#page-content-inner #col-main { - width: 639px; - background-color: #ffffff; - position: absolute; - right: 0px; - top: 0px; -} - -#footer-container { - width: 866px; - position: relative; - left: 8px; - padding: 2px 0px 10px 0px; - background-color: #D4D4D4; /* light grey*/ -} - -/* s2.0 - Global navigation bar */ -.nav-global-container { - width: 880px; - margin: 0px auto; - position: relative; -} - -* html .nav-global-container { /* ie6 fix*/ - margin-bottom: -6px; -} - -.login { - position: absolute; - right: 20px; - text-align: center; -} - -.login a,.login a span { - display: block; - height: 18px; - font-size: 11px; - background: url(images/login-sprite.gif) right -5px no-repeat; - text-decoration: none; - font-weight: bold; - padding: 5px 10px 5px 10px; - position: relative; -} - -.login a:hover { - color: #000000; - text-decoration: underline; -} - -div.login a span { - background-position: left -105px; - width: 4px; - position: absolute; - top: 0px; - left: 0px; - padding: 5px 0px 5px 0px;; -} - -div.login a:hover span { - -} - -.logo { - float: left; - margin: 0px 0px -5px 0px; /* neg marging for ie6 */ -} - -.logo img { - border: 0px; - margin-left: -1px; -} - -.nav-global { - float: left; - width: 645px; - margin: 40px 0px 0px 40px; - background-color: transparent; -} - -.nav-global ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-global li { - float: left; - white-space: nowrap; -} - -div.nav-global li a,div.nav-global li a span { - background-image: url(images/tab-sprite.gif); - background-position: right 100px; - background-repeat: no-repeat; - height: 32px; - color: #666666; - text-decoration: none; - font: bold 16px 'trebuchet ms'; - margin-right: 15px; - display: block; - position: relative; - padding: 7px 15px 0px 15px; -} - -div.nav-global li a:hover { - background-position: right 0px; - color: #333333; -} - -div.nav-global li a:hover span { - background-position: left -100px; - display: block !important; -} - -div.nav-global li a span { - background-position: left 150px; - width: 4px; - position: absolute; - left: 0px; - top: 0px; - padding: 7px 0px 0px 0px; -} - -body.safari div.nav-global li a span { - display: none; -} - -div.nav-global li a.on,div.nav-global li a.on:hover { - background-position: right -55px; - color: #FFFFFF; -} - -div.nav-global li a.on span,div.nav-global li a.on:hover span { - background-position: left -155px; - display: block !important; -} - -div.action-container { - position: relative; - top: -45px; - cursor: pointer; -} - -div.action-icon-container { - position: absolute; - top: -17px; - left: -17px; - z-index: 10; - width: 100px; - height: 100px; - overflow: hidden; -} - -div.action-icon { - border: 0px; - position: absolute; - top: -0px; - left: 0px; -} - -div.action-button-container { - height: 106px; - width: 180px; - overflow: hidden; - position: absolute; - top: 0px; - left: 0px; - z-index: 5; -} - -img.action-icon { - border: 0px; - position: absolute; - top: 0px; - left: 0px; - z-index: 0 -} - -div.action-text { - z-index: 20; - color: #FFFFFF; - position: absolute; - left: 40px; - top: 12px; - font: 14px tahoma, geneva; - padding-top: 30px; -} - -div.bigbuttons { - top: -20px; -} - -div.action-header { - z-index: 21; - position: absolute; - left: 40px; - top: 10px; -} - -div.action-header b { - font: bold 17px tahoma, geneva; - display: block; - margin-bottom: 10px; - color: #0b2c89; - position: absolute; - top: 0px; - left: 0px; - width: 130px; -} - -div.action-header b.shadow { - top: 1px; - left: 1px; - color: #d5d5d5; -} - -img.action-button { - position: relative; -} - -div.hover img.action-button { - top: -131px; -} - -div.on img.action-button { - top: -261px; -} - -/* s3.0 - top of content Action Buttons */ -.action-buttons { - width: 100%; /* ie6 requires */ -} - -.action-buttons ul { - position: relative; - padding: 0px; -} - -.action-buttons li { - position: relative; /* ie6 fix */ - float: left; - list-style: none; - text-align: center; - line-height: 16px; - margin: -61px 0px 0px 0px; -} - -.action-home li { - margin: -49px 0px 0px 0px; -} - -.action-buttons a { - display: block; - height: 110px; - width: 175px; - padding: 14px 0px 0px 25px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; -} - -.action-buttons li span { - color: #053880; - line-height: 47px; - font-size: 17px; -} - -div.action-bottom { - margin: 15px 0px 10px 0px; - float: left; -} - -div.action-bottom a { - height: 61px; - width: 178px; - border: 0px; - background: url(images/action-bottom.gif) no-repeat 0px 0px; - color: #0b2c89; - float: left; - position: relative; - font: bold 17px tahoma, geneva; - text-decoration: none; - margin-right: 10px; -} - -div.action-bottom a span { - position: absolute; - top: 15px; - left: 40px; -} - -div.action-bottom a span.shadow { - top: 16px; - left: 41px; - color: #d4d4d4; -} - -.line-grey { - background: url(images/line-grey.gif) 0 0 repeat-x; - height: 2px; - margin: 8px 25px 20px 0; -} - -/* s4.0 - Home Hero Area */ -.hero-background { - position: relative; - width: 880px; - background: url(images/back_home-hero.jpg) 10px 0px no-repeat; - height: 211px; - margin: -20px 0px 45px 0px; -} - -.hero-text { - float: right; - width: 626px; - margin-top: 26px; -} - -.hero-text a { /* Sign Up Now Button */ - padding: 5px 32px 0px 0px; - float: right; -} - -.hero-text h1 { - font-size: 2.3em; - line-height: 1.2em; - color: #333333; - font-family: Trebuchet MS; - margin: 12px 0px 10px 10px; -} - -.hero-text h2 { - margin: 0px; - font-weight: normal; - font-size: 1.35em; - margin: 5px 0px 13px 10px -} - -/* s4.1 - Home Left Header tab */ -.col-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 30px; - width: 166px; - text-align: center; - color: #ffffff; - font: 20px 'trebuchet ms'; - padding-top: 2px; - margin-top: -41px; - margin-left: 20px; - line-height: 29px; - margin-bottom: 8px; - display: block; -} - -.col-left-header-tab a { - color: #FFFFFF; -} - -.callout-green { - background: url(images/back_green-fade.gif) 0 0 repeat-x; - font-size: 1.2em; - padding: 10px 15px 20px 13px; - color: #303B52; - line-height: 1.4em; -} - -/* s4.2 - Home Left Quote */ -.callout-tan { - color: #666666; -} - -.callout-tan h1 { - background: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y; - font-size: 1.1em; - text-align: center; - margin: 0px; - padding: 11px 5px 11px 2px; - color: #333333; -} - -.callout-tan p { - margin: 0px; - margin-top: 5px; - line-height: 1.4em; - padding: 5px 10px 7px 13px; -} - -.callout-tan p img { - float: left; - margin: 5px 10px 5px 0px; -} - -.callout-tan div { - text-align: left; - padding: 5px 10px 7px 0px; - font-weight: bold; -} - -/* s4.3 - purple home boxes */ -.box-purple { - background: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x; - border-left: 1px solid #ffffff; - color: #333333; - width: 581px; - padding: 10px 15px 20px 15px; -} - -div.box-purple a { - -} - -.box-purple h1 { - font-size: 1.5em; - margin: 10px 0px -15px 0px; -} - -.box-purple li { - margin: 0px 0px 0px -23px; - line-height: 1.6em; - font-size: 1em; -} - -.box-purple div { - padding: 0px 0px 0px 110px; -} - -.icon-text01 { - background-image: url(images/icon_search-engine-market.png); - background-repeat: no-repeat; -} - -* html .icon-text01 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_search-engine-market.png", - sizingMethod = "crop"); -} - -.icon-text02 { - background: url(images/icon_landing-pages.png) 0 0 no-repeat; -} - -* html .icon-text02 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_landing-pages.png", sizingMethod = - "crop"); -} - -.icon-text03 { - background: url(images/icon_salesforce.png) 0 0 no-repeat; -} - -* html .icon-text03 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_salesforce.png", sizingMethod = - "crop"); -} - -/* s4.4 - news home boxes */ -.callout-news { - color: #555555; - float: left; - width: 49%; - margin: 10px 1px 0px 0px; - padding-bottom: 20px; - text-align: left; -} - -.line-news-r { - border-right: 1px solid #D4D4D4; -} - -.callout-news h1 { - background-color: #EEEEEE; - font-size: 1.2em; - margin: 0px; - padding: 11px 5px 11px 15px; - color: #333333; -} - -.callout-news p { - margin: 10px 0px 0px 10px; - padding: 0px 10px 7px 20px; - background: url(images/news.gif) no-repeat left 1px; -} - -.callout-news p a { - -} - -.callout-news ul { - list-style-type: none; - padding: 0; - margin: 10px 0 0 10px; -} - -.callout-news li { - background: url(images/icon_news.gif) no-repeat left 2px; - padding: 0px 5px 5px 20px; -} - -.callout-news li a { - display: block; - margin-bottom: 5px; -} - -.callout-news div { - text-align: right; -} - -#scrollup { - position: relative; - overflow: hidden; - height: 440px; - width: 200px -} - -.headline { - position: absolute; - top: 600px; - left: 5px; - height: 585px; - width: 190px; - font: normal 12px tahoma, geneva !important; -} - -div.more { - margin: 5px 0px 0px 0px; - padding: 0px 10px 0px 0px; - letter-spacing: inherit; -} - -div.more a { - background: transparent url(images/arrow_r-blue.gif) no-repeat right 2px - ; - font-weight: bold; - padding: 0px 20px 0px 0px; - font-weight: bold; - text-decoration: none; -} - -div.more a:hover { - text-decoration: underline; -} - -/* sX.0 - Left Nav */ -.nav-left-back { - background: url(images/back_nav_side.gif) 0 0 repeat-x; -} - -div.empty { - background: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x; -} - -div.empty div.callout-green { - -} - -.nav-left { - padding-top: 12px; - /*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/ - width: 210px; -} - -.nav-left ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-left li a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; - border-top: 1px solid #B3D38D; - border-bottom: 1px solid #7CA84E; - border-left: 1px solid #97B973; - padding: 6px 0px 0px 20px; -} - -.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover { - color: #4C6F28; - background-color: #F4F1E9; -} - -.nav-left a.open { - background-image: url(images/arrow_d-green.gif); - background-repeat: no-repeat; - background-position: 6px 11px; -} - -.nav-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 32px; - width: 166px; - text-align: center; - color: #ffffff; - margin: -41px 0px 0px 22px; - line-height: 22px; - margin-bottom: 8px; - display: block; -} - -div.empty div.nav-left-header-tab { - background: url(images/tab_green2.gif) 0 0 no-repeat; -} - -.nav-left a.active { - /* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */ - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #F4F1E9; - color: #4C6F28; - border-top: 1px solid #D1E5BB; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #DADADA; - padding: 6px 0px 0px 20px; -} - -#nav-left-sub a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #D6E8C4; - color: #4C6F28; - border-top: 1px solid #D6E8C4; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 1px solid #8DBE5A; - padding: 6px 0px 0px 30px; -} - -* html #nav-left-sub { /* ie6 fix */ - margin-top: -1px; -} - -*+html #nav-left-sub { /* ie7 fix */ - margin-top: -1px; -} - -#nav-left-sub a.active-page { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #ffffff; - color: #666666; - border-top: 0px solid #7CA84E; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 0px solid #8DBE5A; - padding: 6px 0px 0px 30px; - cursor: default; /* turns off hand icon for link */ -} - -/* sX.0 - Main Content */ -.main-content { - color: #666666; - position: absolute; - right: 20px; - padding-top: 20px; - width: 585px; - padding-bottom: 20px; -} - -div.main-content div.main-content { - -} - -.main-content h1 { - color: #5890D1; - font-size: 1.9em; - font-family: Trebuchet MS; - border-bottom: 1px solid #cccccc; - margin: 0px 10px 0px 0px; -} - -.main-content h2 { - color: #666666; - font-size: 1.3em; - font-weight: normal; - margin: 10px 10px 5px 0px; -} - -.main-content p { - margin: 10px 10px 10px 0px; - line-height: 1.55em; -} - -/* sX.1 - Main Content Sub Styles */ -.sub-grey { - border-top: 1px solid #D4D4D4; - border-bottom: 1px solid #D4D4D4; - background-color: #F4F4F4; - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -.sub-white { - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -img.screen-grab-r { - margin-right: -8px; - text-align: right; - padding: 0px 0px 0px 10px; -} - -div.main-content a.screenshot { - float: right; - padding: 10px 10px 0px 0px -} - -.content-foot { - border-top: 1px solid #D4D4D4; - font-size: .9em; - line-height: 1.45em; - margin: 10px 20px 0px 0px; - padding: 10px 10px 30px 0px; -} - -div.main-content ul { - position: relative; - left: -25px; -} - -div.main-content li { - margin-bottom: 5px; - list-style-type: disc -} - -div.main-content li a { - color: #6A6CB0; -} - -/* sX.0 - Footer */ -div.footer { - color: #666666; - font-size: .85em; - font-weight: normal; - height: 18px; - margin: 0px auto; - font-family: Tahoma, Geneva, sans-serif; - margin-top: 10px; -} - -.footer ul { - list-style-type: none; -} - -.footer li { - float: left; - border-right: 1px solid #666666; - padding: 0px 7px 0px 7px; - margin-top: 3px; -} - -.footer a { - color: #666666; - text-decoration: none; -} - -.footer a:hover { - color: #0653AB; - text-decoration: none; -} - -.footer li.line-off { - border-right: 0px solid #ffffff; -} - -div.footer strong { - font-weight: normal; -} - -/* sX.0 - General Colors */ -.line-grey,.line-grey-tier { - border-top: 1px solid #A3A3A2; -} - -.line-grey-tier { - padding-bottom: 25px; -} - -.bottom { - height: 10px; -} - -div.p10bottom { - padding-bottom: 10px; -} - -.clear { - clear: both; -} - -table.grid { - background: #EEEEEE; -} - -table.grid th { - background-color: #F4F4F4; -} - -table.grid td { - background-color: #FFFFFF; -} - -div.buttonSubmit { - position: relative; -} - -div.buttonSubmit input,div.buttonSubmit span { - height: 36px; - position: relative; - background-image: url(images/button-submit.gif); - background-repeat: no-repeat; - background-position: right 0px; - float: left; - color: #FFFFFF; - font-weight: bold; - padding: 0px 15px 2px 15px; - margin: 20px 0px 20px 0px; - border: 0px; - cursor: pointer; - z-index: 5; -} - -div.buttonSubmit input { - width: auto; -} - -div.buttonSubmit span { - width: 4px; - position: absolute; - left: 0px; - top: 0px; - background-position: left -36px; - padding: 0px 0px 0px 0px; - z-index: 10; -} - -body.safari div.buttonSubmit span { - display: none -} - -div.buttonSubmitHover input { - background-position: right -72px; -} - -div.buttonSubmitHover span { - background-position: left -108px; -} - -a.demoLink { - padding: 1px 10px 0px 17px; - height: 24px; - background: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px; - display: block; - float: left; -} - -div.callout-tan a { - background: none; - color: #0653AB; - margin: auto; - display: block; -} - -div.callout-tan a:hover { - background: none; - color: #0653AB; -} - -label.error { - display: block; - color: red; - font-style: italic; - font-weight: normal; -} - -input.error { - border: 2px solid red; -} - -p.demoBlock { - border-bottom: 1px solid #DDDDDD; - padding-bottom: 10px; -} - -div.left-nav-callout { - height: 200px; - width: 190px; - top: 55px; - left: 5px; - position: relative; - padding-left: 9px; - padding-top: 13px; -} - -div.left-nav-callout img.png { - position: absolute; - z-index: 0; - top: 0px; - left: 0px; -} - -div.left-nav-callout h6 { - font: bold 14px tahoma, geneva; - color: #333333; - height: 36px; - padding-left: 5px; - margin: 0px; - position: relative; - z-index: 10; -} - -div.left-nav-callout a { - background: url(images/monitor24.gif) no-repeat 0px center; - padding: 5px 0px 5px 30px; - display: block; - font: bold 12px tahoma, geneva; - color: #336699; - margin-bottom: 5px; - position: relative; - z-index: 10; - width: 140px; -} - -form table td { - padding: 5px; -} - -form table input { - width: 200px; - padding: 3px; - margin: 0px; -} - -textarea { - width: 400px -} - -td.label { - width: 150px; -} - -tr.required td.label { - font-weight: bold; - background: url(/images/forms/backRequiredGray.gif) no-repeat right - center; -} - -div.subTableDiv { - width: 500px; -} - -div.subTableDiv td.label { - width: 135px; -} - -ul#homeBlog li div.description { - display: none; -} - -td.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select { - border: 2px solid red; - background-color: #FFFFD5; - margin: 0px; - color: red; -} - -tr td.field div.formError { - display: none; - color: #FF0000; -} - -tr.errorRow td.field div.formError { - display: block; - font-weight: normal; -} - -div.error { - color: red; -} - -div.error a { - color: #336699; - font-size: 12px; - text-decoration: underline -} - -div.tooltip { - position: absolute; - left: 30px; - bottom: 0px; - display: none; /* in case javascript is disabled */ - width: 170px; - background-color: #F4F1E9; - z-index: 100; - padding: 10px; - border: 1px solid #CCCCCC; -} - -div.offerbox { - width: 125px; - float: left; - position: relative; -} - -div.offerbox h3 { - font: bold 17px tahoma, geneva; - color: #333333; - height: 55px; - margin: 0px auto; - text-align: center; -} - -div.offerbox h4 { - height: 100px; - font: normal 13px tahoma, geneva; - margin: 0px; -} - -div.offerbox h5 { - font: bold 14px tahoma, geneva; - margin: 0px; - height: 55px; -} - -div.offerbox h5 small { - float: left; - font-weight: normal; - font-size: 10px; -} - -div.offerbox div.learnmore { - padding-left: 25px; -} - -div#marketoEditions { - background: url(images/buynowBack.gif) no-repeat; - width: 584px; - height: 376px; - float: left; - position: relative; - margin-bottom: 10px; -} - -div.offerHeader { - background: #0D8BBD; - position: absolute; - top: 20px; - width: 266px; - height: 34px; - border: 1px solid #e1e4e2; -} - -div.offerHeader span { - font: 20px 'trebuchet ms'; - color: #FFFFFF; - position: absolute; - left: 0px; - top: 0px; -} - -div.offerHeader span.shadow { - font: 20px 'trebuchet ms'; - color: #333333; - position: absolute; -} - -div.offerbox div.buttonSubmit { - margin: 5px 0px 0px 10px; -} - -div.footerAddress { - position: absolute; - bottom: 30px; - left: 20px; - color: #666666; - font-size: 11px; - display: none; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/bg.gif b/thirdparty/jquery-validate/demo/milk/bg.gif deleted file mode 100644 index 2c7c3587808fbeb541ee6235fb78113502109a83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb6k*V1XkcVGb?Vgr|Nj+#vM@3*Ff!;c00Bsbfk~mKf92`7{EO#oxz)Y- b-k#t5ZI3*rJ?mWd>eM!IhU1@X#2Ksso+upB diff --git a/thirdparty/jquery-validate/demo/milk/emails.php b/thirdparty/jquery-validate/demo/milk/emails.php deleted file mode 100644 index 059ac14d7..000000000 --- a/thirdparty/jquery-validate/demo/milk/emails.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/emails.phps b/thirdparty/jquery-validate/demo/milk/emails.phps deleted file mode 100644 index d2219cc92..000000000 --- a/thirdparty/jquery-validate/demo/milk/emails.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/index.html b/thirdparty/jquery-validate/demo/milk/index.html deleted file mode 100644 index e46462288..000000000 --- a/thirdparty/jquery-validate/demo/milk/index.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - -Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team - - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -
- - -
- - -
-
-
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - -
- - - - - - -
-
  -
- - -
-
- -
-
-
-
-
- -
- -
- - - - - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/left_white.png b/thirdparty/jquery-validate/demo/milk/left_white.png deleted file mode 100644 index b889960cb0023e453057091edb2ddcf19f32e943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmeAS@N?(olHy`uVBq!ia0vp@3=E7q9Be?AM2=-NkYXuz@(kesf*OvL4j`Yiz$3Dl zfq`2Hgc&d0t@{HM6f1F!C~+=IO)SaG&r=A=%uQu5FxEFR)i*E|a$KbVRG|t|5uBe^ zQl40p%HW%rT$G=inv$8Q;FejGTAp8&U98|6pk?hCGB_vM#4pUWt+Y|>FaUwp~rsKn=%OV&5umZd}<%Q35-D&h3P z?VM%XVa3TOTLhfaA8Bv7|335fw4XKixEYo_|2*?z#+NkhxhpcImR){1Tl;FK6Ng0d zqYJecwr^$cTKS1pBhAi!X^@WBqD`$WKwu|bDw}-IwfUfeThmdT35osqd pxGz@wV*kW#{)(7j;r*^S2Gfg+4)K_Dr~zY%!PC{xWt~$(697OL*D?SA diff --git a/thirdparty/jquery-validate/demo/milk/milk.css b/thirdparty/jquery-validate/demo/milk/milk.css deleted file mode 100644 index d5f128bf2..000000000 --- a/thirdparty/jquery-validate/demo/milk/milk.css +++ /dev/null @@ -1,236 +0,0 @@ -/* GENERAL ELEMENTS */ - -* { margin: 0; padding: 0; } - -body, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; } -body { color: #333; background-color: #fff; text-align: center; } - -a:link { color:#0060BF; text-decoration: underline; } -a:visited { color:#0060BF; text-decoration: underline; } -a:active { color:#0060BF; text-decoration: underline; } -a:hover { color:#000000; text-decoration: underline; } - -h1, h2, h3, h4, h5, h6 { font-family: "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; } -h1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; } -h2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; } -h3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; } -h4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; } -h5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; } -h6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; } - -img { border: 0px; } - -p { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; } -li > p { margin-top: 0.2em; } -pre { font-family: monospace; font-size: 1.0em; } -strong, b { font-weight: bold; } - -/* PAGE ELEMENTS */ - -/* Content */ - -#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ } -.content { margin-left: 4.5em; margin-right: 4.5em; } -.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; } -.content ol.terms li { margin-bottom: 1em; } - -/* Header */ - -#header { padding-bottom: 10em; } -#headerlogo { float: left; } -#headerlogo img { width: 188px; height: 83px; } -#headernav { float: right; } - -label { font-weight: bold; } -#reminders label { font-weight: normal; } - -table.tabbedtable { padding-left: 3em; } -table.tabbedtable td { padding-bottom: 5px; } -table.tabbedtable label { text-align: right; padding-right: 9px; } -.hiddenlabel { visibility: hidden; } -.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; } -.largelinkwrap { padding-top: 10px; padding-bottom: 10px; } - - - -#signuptab { - float:left; - width:100%; - background:#fff url("bg.gif") repeat-x bottom; - font-size: 1.0em; - line-height: normal; -} -#signuptab ul { - margin:0; - padding: 0px 10px 0px 10px; - list-style:none; -} -#signuptab li { - float:left; - background:url("left_white.png") no-repeat left top; - margin:0; - padding:0 3px 0 9px; - border-bottom:1px solid #CACACA; -} -#signuptab a { - float:left; - display:block; - width:.1em; - background:url("right_white.png") no-repeat right top; - padding:2px 15px 0px 6px; - text-decoration:none; - font-weight:bold; - color:#fff; - white-space: nowrap; -} -#signuptab > ul a {width:auto;} -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#signuptab a {float:none;} -/* End IE5-Mac hack */ -#signuptab a:hover { - color:#333; -} -#signuptab #signupcurrent { - background-position:0 -150px; - border-width:0; -} -#signuptab #signupcurrent a { - background-position:100% -150px; - padding-bottom:1px; - color:#000; -} -#signuptab li:hover, #signuptab li:hover a { - background-position:0% -150px; - color:#000; -} -#signuptab li:hover a { - background-position:100% -150px; -} - -/* Signup box */ - -#signupbox { - width: 100%; - text-align: center; - margin: 0em auto; -} - -#signupwrap { - border: 1px solid #CACACA; - border-top: 0; - text-align: left; - padding: 35px 10px 20px 30px; - clear: both; -} - -/* Unsupported browsers */ - -.orange_rbcontent { padding: 0.4em; } -.orange_rbroundbox { width: 100%; } - -#unsupported { - font-weight: bold; - text-align: left; -} - -/*#content { - padding-top: 15px; -}*/ - -/* Signup form */ - -#signupform table { - border-spacing: 0px; - border-collapse: collapse; - empty-cells: show; -} - -#signupform .label { - padding-top: 2px; - padding-right: 8px; - vertical-align: top; - text-align: right; - width: 125px; - white-space: nowrap; -} - -#signupform .field { - padding-bottom: 10px; - white-space: nowrap; -} - -#signupform .status { - padding-top: 2px; - padding-left: 8px; - vertical-align: top; - width: 246px; - white-space: nowrap; -} - -#signupform .textfield { - width: 150px; -} - -#signupform label.error { - background:url("../images/unchecked.gif") no-repeat 0px 0px; - padding-left: 16px; - padding-bottom: 2px; - font-weight: bold; - color: #EA5200; -} - -#signupform label.checked { - background:url("../images/checked.gif") no-repeat 0px 0px; -} - -#signupform .success_msg { - font-weight: bold; - color: #0060BF; - margin-left: 19px; -} - -#signupform #dateformatStatus, #signupform #termsStatus { - margin-left: 6px; -} - -#signupform #dateformat_eu { - vertical-align: middle; -} - -#signupform #ldateformat_eu { - font-weight: normal; - vertical-align: middle; -} - -#signupform #dateformat_am { - vertical-align: middle; -} - -#signupform #ldateformat_am { - font-weight: normal; - vertical-align: middle; -} - -#signupform #termswrap { - float: left; -} - -#signupform #terms { - vertical-align: middle; - float: left; - display: block; - margin-right: 5px; -} - -#signupform #lterms { - font-weight: normal; - vertical-align: middle; - float: left; - display: block; - width: 350px; - white-space: normal; -} - -#signupform #lsignupsubmit { - visibility: hidden; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/milk.png b/thirdparty/jquery-validate/demo/milk/milk.png deleted file mode 100644 index b5e7151578041a9da2893b41df523c3ff7b80f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5121 zcmV+c6#napP)cu+@r?m)#B~u=H|r2#1?MFgqIr%&^YuX`$IEddcGL`1$+& z#MJ zva))4dePC*Qc+TFrQ7N8`8hc`;OzI))6=i6ujuILY;0_|x3^ABPNc!vJv=?g$jD!k zyz27$9UL8UadO(|_OP(9@%H;8cF0;;TAIM-t*osve#^MHxGsImy43DMLPDyls>a5~ zE-fz9iddaT~RzQ4KC z?ZMdZAauv~`u%30*#>06kh`}_I%`TYF+C?_cT`uhF;{_pSa_WAq+V!-|V{U075&d$#J{r>p)`0e!i2xY;k zsj0Wp?R>4?6Kuq6quPLffY;{rBqJp5?(XvU{ORfG=kWR1*Vydy`U_{mFfTBZyyVEo z$gIoi)8zCKYr{8#&BxsFEPKk#-}0Nm<_TuO7;nY%`25o2^o+OSJ32d5Q&haw?!DIT zv(W5IkJ6I6i)>_|sQg0bM8 z!sfugz=5#eQj^qFl+<){bbYSg)#da=Lqv;;i$6X;gMx$1-0HTqwymwLSXWrRy}fX6 zaFddgmABL2>hi|e=x1hUgR9GovCnp*#>}9I2#h|NB(^P`xn^D@Wu92RT2h`|0`1d5Tznj>Uk^rsNk{~vt0*ixs4SqHW zbH$6ZWU^LsAn{*uKZKB<9Q7EyEwKM3|jnIKjUN%m{^M8gjg~UH8aB1IlpNM;rTOFpK;PYfgV&$ujt7}cBij|~9{RD4H zritE^9O}?FL@r7cJ=tGxz?(Umnz}08=4s;1ueBt!!y`7~iU&&l^#ir30wZ2k`bA5V$lXDUL-gr1Wps&6F!{N@jJ4c!;Z5xgD+# zPRg3Zn0UM9x$H9=b$UQz1mgcXk=$1-bA-90pP%29{VJpLKrx+sxxXHOwTh%&@O{Wzl$cFl#_wt*jdr0PlBq| z?GaVAJr91q{IsI_L28U#UJ&CsdB_4s)Ko4mot0E(MIV!|*i3?c_}SXm;^q>zMUnus zo(4ZF&Rk)>@%Lp4z_QB+yvVPYuu-OHSThEUQ%QY(tqCf6bPwB318Gc&==7_fc-y(U zng)J%EfG!T63;HclY)~47E^c_vCe0Jk&(YCR`*#;$WJ}X4Gl<=xO_2RC?eiVDkm6E<+Ue&YUT~aZS z3AM|^8}o6ke@`MLsUUEPgh(St<;oQ}O)Ql)GJUopW{}%@lFRML`L#H^9uCZMBbi%D zijKa-5EeuR4v_vebB)e<#uZe?FeK z`I;m9GHCi^#B8C+9I$xaXh^FqXC7Q`WC~;Ac=`Z(hsbI)s4)Q_*s`$Tpsf%@dYIHI znAAbP19Rq^Dq@qckWL1!tMW>HVye{?8RIyM&q*5bP4t&&eXR9>fPZo0>7I?O#_;pH zO$65m>1E#@XN8@BFZt5s>7KnU;alb6T5CInE4&_nHzjj^WpIi1t%bx=@A5XGr5bVh z%ZVAI71h~)3%UGID|IGu)jRNE8ZJJMu_@8dsbj;5P@q19F}R z`~t~T^-Tzwpf1|Ptc0CXHo0rsebK>h0S(Ql8$xb7-J~jca zNnYyS6=cD0jorf#Mm`Vt2O2)!RThoW@dhU7K4dZreZR0#_x_2r{_1Q{&py!=crR@hy6EdT zMHuXjLA+E;L-XU*+FRa$Z(g=3lP&0YNIt^^y8#B#X7-Eg4IuU|taO_IJL$q?$YScS z8=L7&?96)m4(wP4O`F}pfcC?NbV}0!5~v%%#v&Z)1Yk9gEy1oUdjLM|3cPf>_Pv?v zoO^zM-*z8>Tv9XEc`E_x=g~%h%|`*86lTwu{sn)ul3rlTb_BN}3m3k)k?Sl#3r>@v zIm1@{9B#u_T8VqadYfP)-3jr>S-lOQ5#I^1Bj|d7!Cio_(Z&3Q$Ed0)93+jpGpG<{ zbLd$34!yUR6<#!f}_p=PW>9%G7|;xAEDbl+J~j^sWNk zU05Df0S@?@32WT}CbA)@{{weUDC`3Kd%DCczf`OAV>2#Zidfwa%F^%xliRD57A^*6 zzuO=_ElbsFToe@#&`jBO!B~p(+(nIHF+at)3TN*nt48)>x=%qJRuS zjmSYY!BS`l+tE(NI>g62G_6I;GaNeeyzRktCfc!)=5(*h3j3}LHBUEOizcCEn+%KTouY=l8Y_2OGlwqHL1U{F+7H-e8m0KJ#<*0cbVpT1ehDaPX0A zDBgk!jB4K<_yO`<9l(!MfA_H+&X+6eXkobXX&T7HIb9U0Hk6^osJs`l#7@{+hK4bD z9@ox>BCfV$83gkIzKItn#*l*iY7Pjp9qr zOkZ1eJbK2m945F&-C1weDK5$GW!wufk;hg4xTyEsUBz&I<7fOmZ4PYYauzA9?KIeI z2VSbv>3~`3532gd$2B_MS@r#TahnIfAck%HZeia(_;<_tgnoyMxH@kZL(il9?oCmu ztp=+EB^{mHEGv&CH+LlIZ20?pnsc3FEVpJ z@FQSE%;jJI_tNkG`uj9S8S?VP*e{Qj+!B7_O?i1P+TdT+@~@WGqr3avrR21#zNJD8 zswmwC$!R)(pR{;wAuc~UTa0x!@wn_2`j7wlU-l0BM~4nQyj4O?AGHdCaLZe04P7b- zNK0))AK7Yy7c`B{F(ltw--C?mf8VD=e4x(USS7>fN{3Z{L1R!+ok#aGNN3)xnMZN> z#4B4~`Sbt3gbN=keCI3(Q>eG#Z*TAHc+2^r(CR$Rj^>53DQJNoqN#tAJ;R8mzcpiN z%XZ)Tc@t+9b_}mReDm-bq)B@qC#|>f)kaYP_QsCMTC2f-)+2}BbeK7Nk2cQfP8=>{ z6JC7+1t_abR3Ey9dSLaK(CR`L38vIX7?+>RlGFzTzSrJDs9>)R{pOo7<=d1`)qelii+ zc|`j>i87$?rNmx*4!J7}N#c>T(o@Ly?>Y@dwxJB$hCwo?NJsi`PPK_%Xn;Lz24^W< z&X^?A_sxpIrv-nXMYzOv!cu#Cc3^7x2Z5#4aU;wHe={xcVKVh;fh|jPtkdXBdO&OC z?Nqo`C1+914sf>b*v~c{WdsC@hhc<&mIkk8RFKlo8DUjy5rdpQ7n*uO@wY<}H&XXi zj3?fqMGhEs>?cGO%D_SFgs-LexFE%5id%2^A9M79t1J=I?mUsR=3 zkT#7$A$bSJjMxR)KMo(>@5jAjSkKBJPNiqy1RJ7ILJa920U^J|%zPs=v3(Z9Vx@Hw zSJ-ENJ{NhxlF7?_O6Le{RTl_8THp_nt}J`4ZO6Q(+IG4@u_7=*MsXJ}o8bJy9904! zM=1%$y!Qfz>RXutR4}6Q77hkCd_~1^ngDQEW#DSCn4`sH*BT}jt~CcKeYu87_x>7J z18rusL?;J(U4wURgHMW7iG*~nclComfz?RqiW|l!DD~CFor`~YJSU|F2tI-BL^ET8 z%}8%kip8vx?y*g7j6|nT^kOs)fHI+p(h;*-l2#r2O!d z`GeoZ*=XLjKs{sD?=VD$$~0>^>SaYd%V#JhXRH`5w=hpki(=8v$D`(=YnaKljA`+w z06WW`?O4ZxkZ+#qn9RFCo473G?v-h3x;x9!lo>K}()bBaBxI`c76|?*&xJ5+8Z`z^ zxj3MDdl)j$@GU=%z|cDR_%ohK`AP`!n%3Qy!It+)d(!1LbZ7628uy>}W|AM=(yOw0 zqPn%vtxb%B@9{C)ifGDuT;~^t&%g-nErMq>1fP!Krt`Q~9MX8A;nfZANA(^?U3~zM1pv z)vGK$J-xKFw9hXut1~h_kYD@SYWw!>#r5^}@9*uM-QC??S!5w2SFOkJkKy*)GQRf1 zHUIup+SU9}P++jRQ?`5V-8}Q_*ROw0iQSvP_@UtW^XH%c{w|m1U^s4RYbz?i(6{|& zPFifZe*}YxnE-N z{^`@F?YqzJTK8J{EbE8;+t$6#F`Io{PT5+950pfA-_0xAeRs~hdFO6#&wu{sPfZ#N zO9Q)w4BzLkudnaixpU_C_xI1=ygAbzn6U3|()s-B>+8yokB-*-{PgttP37|}2jr6? zr&WG_cJ|MYkIDOLf2)C#EKuF6tE+*!f$6ZXxU$j`nA(|`4iwI_tF`+5Hx8IA&TabR z)lQoPNGNT)TgvbmgHmW_WZhC{V6Fgq7?e3iDf$G#6ZK1LW-V4!`04;Gwi!HK{an^L HB{Ts5gh-*z diff --git a/thirdparty/jquery-validate/demo/milk/users.php b/thirdparty/jquery-validate/demo/milk/users.php deleted file mode 100644 index 4fef967f1..000000000 --- a/thirdparty/jquery-validate/demo/milk/users.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/users.phps b/thirdparty/jquery-validate/demo/milk/users.phps deleted file mode 100644 index dfe4c8e9c..000000000 --- a/thirdparty/jquery-validate/demo/milk/users.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/multipart/index.html b/thirdparty/jquery-validate/demo/multipart/index.html deleted file mode 100644 index 2fc5973d6..000000000 --- a/thirdparty/jquery-validate/demo/multipart/index.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - -jQuery accordion form with validation - - - - - - - - - - - - - - - -
-
- -

Help me Buy and Sell a House

-

This form is quick & easy to complete - in only 3 steps!

-
- - -
    -
  • -
    -
    Step 1 of 3 -
    *Required Field
    -

    Tell us about the property you're buying

    -   No:      Yes: -
    -
    -
    -
    - -
    -
    -
    -
    -
  • -
  • - - -
    -
    Step 2 of 3 -
    *Required Field
    -

    Tell us about the property you're selling

    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
  • -
  • - - -
    -
    Step 3 of 3 -
    *Required Field
    -

    Tell us about yourself

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

    This is a sample form, no information is sent anywhere.

    -
    -
    -
    -
  • -
-
- -
-
- - - diff --git a/thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js b/thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js deleted file mode 100644 index 9ba3ecfa1..000000000 --- a/thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) 2007 Josh Bush (digitalbush.com) - * - * 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. - */ - -/* - * Version: 1.0 - * Release: 2007-07-25 - */ -(function($) { - //Helper Functions for Caret positioning - function getCaretPosition(ctl){ - var res = {begin: 0, end: 0 }; - if (ctl.setSelectionRange){ - res.begin = ctl.selectionStart; - res.end = ctl.selectionEnd; - }else if (document.selection && document.selection.createRange){ - var range = document.selection.createRange(); - res.begin = 0 - range.duplicate().moveStart('character', -100000); - res.end = res.begin + range.text.length; - } - return res; - }; - - function setCaretPosition(ctl, pos){ - if(ctl.setSelectionRange){ - ctl.focus(); - ctl.setSelectionRange(pos,pos); - }else if (ctl.createTextRange){ - var range = ctl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - }; - - //Predefined character definitions - var charMap={ - '9':"[0-9]", - 'a':"[A-Za-z]", - '*':"[A-Za-z0-9]" - }; - - //Helper method to inject character definitions - $.mask={ - addPlaceholder : function(c,r){ - charMap[c]=r; - } - }; - - //Main Method - $.fn.mask = function(mask,settings) { - settings = $.extend({ - placeholder: "_", - completed: null - }, settings); - - //Build Regex for format validation - var reString="^"; - for(var i=0;i 16 && k < 32 ) || (k > 32 && k < 41)); - - //delete selection before proceeding - if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){ - clearBuffer(pos.begin,pos.end); - } - //backspace and delete get special treatment - if(k==8){//backspace - while(pos.begin-->=0){ - if(!locked[pos.begin]){ - buffer[pos.begin]=settings.placeholder; - if($.browser.opera){ - //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character. - writeBuffer(pos.begin); - setCaretPosition(this,pos.begin+1); - }else{ - writeBuffer(); - setCaretPosition(this,pos.begin); - } - return false; - } - } - }else if(k==46){//delete - clearBuffer(pos.begin,pos.begin+1); - writeBuffer(); - setCaretPosition(this,pos.begin); - return false; - }else if (k==27){ - clearBuffer(0,mask.length); - writeBuffer(); - setCaretPosition(this,0); - return false; - } - - }); - - input.keypress(function(e){ - if(ignore){ - ignore=false; - return; - } - e=e||window.event; - var k=e.charCode||e.keyCode||e.which; - - var pos=getCaretPosition(this); - var caretPos=pos.begin; - - if(e.ctrlKey || e.altKey){//Ignore - return true; - }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters - while(pos.begin=buffer.length) - settings.completed.call(input); - else - setCaretPosition(this,caretPos); - - return false; - }); - - /*Helper Methods*/ - function clearBuffer(start,end){ - for(var i=start;i").addClass("ui-icon " + o.icons.header).prependTo(this.headers); - this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected); - - // IE7-/Win - Extra vertical space in lists fixed - if ($.browser.msie) { - this.element.find('a').css('zoom', '1'); - } - - this.resize(); - - //ARIA - this.element.attr('role','tablist'); - - this.headers - .attr('role','tab') - .bind('keydown', function(event) { return self._keydown(event); }) - .next() - .attr('role','tabpanel'); - - this.headers - .not(this.active || "") - .attr('aria-expanded','false') - .attr("tabIndex", "-1") - .next() - .hide(); - - // make sure at least one header is in the tab order - if (!this.active.length) { - this.headers.eq(0).attr('tabIndex','0'); - } else { - this.active - .attr('aria-expanded','true') - .attr('tabIndex', '0'); - } - - // only need links in taborder for Safari - if (!$.browser.safari) - this.headers.find('a').attr('tabIndex','-1'); - - if (o.event) { - this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); }); - } - - }, - - destroy: function() { - var o = this.options; - - this.element - .removeClass("ui-accordion ui-widget ui-helper-reset") - .removeAttr("role") - .unbind('.accordion') - .removeData('accordion'); - - this.headers - .unbind(".accordion") - .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top") - .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex"); - - this.headers.find("a").removeAttr("tabindex"); - this.headers.children(".ui-icon").remove(); - var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active"); - if (o.autoHeight || o.fillHeight) { - contents.css("height", ""); - } - }, - - _setData: function(key, value) { - if(key == 'alwaysOpen') { key = 'collapsible'; value = !value; } - $.widget.prototype._setData.apply(this, arguments); - }, - - _keydown: function(event) { - - var o = this.options, keyCode = $.ui.keyCode; - - if (o.disabled || event.altKey || event.ctrlKey) - return; - - var length = this.headers.length; - var currentIndex = this.headers.index(event.target); - var toFocus = false; - - switch(event.keyCode) { - case keyCode.RIGHT: - case keyCode.DOWN: - toFocus = this.headers[(currentIndex + 1) % length]; - break; - case keyCode.LEFT: - case keyCode.UP: - toFocus = this.headers[(currentIndex - 1 + length) % length]; - break; - case keyCode.SPACE: - case keyCode.ENTER: - return this._clickHandler({ target: event.target }, event.target); - } - - if (toFocus) { - $(event.target).attr('tabIndex','-1'); - $(toFocus).attr('tabIndex','0'); - toFocus.focus(); - return false; - } - - return true; - - }, - - resize: function() { - - var o = this.options, maxHeight; - - if (o.fillSpace) { - - if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); } - maxHeight = this.element.parent().height(); - if($.browser.msie) { this.element.parent().css('overflow', defOverflow); } - - this.headers.each(function() { - maxHeight -= $(this).outerHeight(); - }); - - var maxPadding = 0; - this.headers.next().each(function() { - maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height()); - }).height(Math.max(0, maxHeight - maxPadding)) - .css('overflow', 'auto'); - - } else if ( o.autoHeight ) { - maxHeight = 0; - this.headers.next().each(function() { - maxHeight = Math.max(maxHeight, $(this).outerHeight()); - }).height(maxHeight); - } - - }, - - activate: function(index) { - // call clickHandler with custom event - var active = this._findActive(index)[0]; - this._clickHandler({ target: active }, active); - }, - - _findActive: function(selector) { - return selector - ? typeof selector == "number" - ? this.headers.filter(":eq(" + selector + ")") - : this.headers.not(this.headers.not(selector)) - : selector === false - ? $([]) - : this.headers.filter(":eq(0)"); - }, - - _clickHandler: function(event, target) { - - var o = this.options; - if (o.disabled) return false; - - // called only when using activate(false) to close all parts programmatically - if (!event.target && o.collapsible) { - this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all") - .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header); - this.active.next().addClass('ui-accordion-content-active'); - var toHide = this.active.next(), - data = { - options: o, - newHeader: $([]), - oldHeader: o.active, - newContent: $([]), - oldContent: toHide - }, - toShow = (this.active = $([])); - this._toggle(toShow, toHide, data); - return false; - } - - // get the click target - var clicked = $(event.currentTarget || target); - var clickedIsActive = clicked[0] == this.active[0]; - - // if animations are still active, or the active header is the target, ignore click - if (this.running || (!o.collapsible && clickedIsActive)) { - return false; - } - - // switch classes - this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all") - .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header); - this.active.next().addClass('ui-accordion-content-active'); - if (!clickedIsActive) { - clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top") - .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected); - clicked.next().addClass('ui-accordion-content-active'); - } - - // find elements to show and hide - var toShow = clicked.next(), - toHide = this.active.next(), - data = { - options: o, - newHeader: clickedIsActive && o.collapsible ? $([]) : clicked, - oldHeader: this.active, - newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'), - oldContent: toHide.find('> *') - }, - down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] ); - - this.active = clickedIsActive ? $([]) : clicked; - this._toggle(toShow, toHide, data, clickedIsActive, down); - - return false; - - }, - - _toggle: function(toShow, toHide, data, clickedIsActive, down) { - - var o = this.options, self = this; - - this.toShow = toShow; - this.toHide = toHide; - this.data = data; - - var complete = function() { if(!self) return; return self._completed.apply(self, arguments); }; - - // trigger changestart event - this._trigger("changestart", null, this.data); - - // count elements to animate - this.running = toHide.size() === 0 ? toShow.size() : toHide.size(); - - if (o.animated) { - - var animOptions = {}; - - if ( o.collapsible && clickedIsActive ) { - animOptions = { - toShow: $([]), - toHide: toHide, - complete: complete, - down: down, - autoHeight: o.autoHeight || o.fillSpace - }; - } else { - animOptions = { - toShow: toShow, - toHide: toHide, - complete: complete, - down: down, - autoHeight: o.autoHeight || o.fillSpace - }; - } - - if (!o.proxied) { - o.proxied = o.animated; - } - - if (!o.proxiedDuration) { - o.proxiedDuration = o.duration; - } - - o.animated = $.isFunction(o.proxied) ? - o.proxied(animOptions) : o.proxied; - - o.duration = $.isFunction(o.proxiedDuration) ? - o.proxiedDuration(animOptions) : o.proxiedDuration; - - var animations = $.ui.accordion.animations, - duration = o.duration, - easing = o.animated; - - if (!animations[easing]) { - animations[easing] = function(options) { - this.slide(options, { - easing: easing, - duration: duration || 700 - }); - }; - } - - animations[easing](animOptions); - - } else { - - if (o.collapsible && clickedIsActive) { - toShow.toggle(); - } else { - toHide.hide(); - toShow.show(); - } - - complete(true); - - } - - toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur(); - toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus(); - - }, - - _completed: function(cancel) { - - var o = this.options; - - this.running = cancel ? 0 : --this.running; - if (this.running) return; - - if (o.clearStyle) { - this.toShow.add(this.toHide).css({ - height: "", - overflow: "" - }); - } - - this._trigger('change', null, this.data); - } - -}); - - -$.extend($.ui.accordion, { - version: "1.7.1", - defaults: { - active: null, - alwaysOpen: true, //deprecated, use collapsible - animated: 'slide', - autoHeight: true, - clearStyle: false, - collapsible: false, - event: "click", - fillSpace: false, - header: "> li > :first-child,> :not(li):even", - icons: { - header: "ui-icon-triangle-1-e", - headerSelected: "ui-icon-triangle-1-s" - }, - navigation: false, - navigationFilter: function() { - return this.href.toLowerCase() == location.href.toLowerCase(); - } - }, - animations: { - slide: function(options, additions) { - options = $.extend({ - easing: "swing", - duration: 300 - }, options, additions); - if ( !options.toHide.size() ) { - options.toShow.animate({height: "show"}, options); - return; - } - if ( !options.toShow.size() ) { - options.toHide.animate({height: "hide"}, options); - return; - } - var overflow = options.toShow.css('overflow'), - percentDone, - showProps = {}, - hideProps = {}, - fxAttrs = [ "height", "paddingTop", "paddingBottom" ], - originalWidth; - // fix width before calculating height of hidden element - var s = options.toShow; - originalWidth = s[0].style.width; - s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) ); - - $.each(fxAttrs, function(i, prop) { - hideProps[prop] = 'hide'; - - var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/); - showProps[prop] = { - value: parts[1], - unit: parts[2] || 'px' - }; - }); - options.toShow.css({ height: 0, overflow: 'hidden' }).show(); - options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{ - step: function(now, settings) { - // only calculate the percent when animating height - // IE gets very inconsistent results when animating elements - // with small values, which is common for padding - if (settings.prop == 'height') { - percentDone = (settings.now - settings.start) / (settings.end - settings.start); - } - - options.toShow[0].style[settings.prop] = - (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit; - }, - duration: options.duration, - easing: options.easing, - complete: function() { - if ( !options.autoHeight ) { - options.toShow.css("height", ""); - } - options.toShow.css("width", originalWidth); - options.toShow.css({overflow: overflow}); - options.complete(); - } - }); - }, - bounceslide: function(options) { - this.slide(options, { - easing: options.down ? "easeOutBounce" : "swing", - duration: options.down ? 1000 : 200 - }); - }, - easeslide: function(options) { - this.slide(options, { - easing: "easeinout", - duration: 700 - }); - } - } -}); - -})(jQuery); diff --git a/thirdparty/jquery-validate/demo/multipart/js/ui.core.js b/thirdparty/jquery-validate/demo/multipart/js/ui.core.js deleted file mode 100644 index c528421b7..000000000 --- a/thirdparty/jquery-validate/demo/multipart/js/ui.core.js +++ /dev/null @@ -1,519 +0,0 @@ -/* - * jQuery UI 1.7.1 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI - */ -;jQuery.ui || (function($) { - -var _remove = $.fn.remove, - isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9); - -//Helper functions and ui object -$.ui = { - version: "1.7.1", - - // $.ui.plugin is deprecated. Use the proxy pattern instead. - plugin: { - add: function(module, option, set) { - var proto = $.ui[module].prototype; - for(var i in set) { - proto.plugins[i] = proto.plugins[i] || []; - proto.plugins[i].push([option, set[i]]); - } - }, - call: function(instance, name, args) { - var set = instance.plugins[name]; - if(!set || !instance.element[0].parentNode) { return; } - - for (var i = 0; i < set.length; i++) { - if (instance.options[set[i][0]]) { - set[i][1].apply(instance.element, args); - } - } - } - }, - - contains: function(a, b) { - return document.compareDocumentPosition - ? a.compareDocumentPosition(b) & 16 - : a !== b && a.contains(b); - }, - - hasScroll: function(el, a) { - - //If overflow is hidden, the element might have extra content, but the user wants to hide it - if ($(el).css('overflow') == 'hidden') { return false; } - - var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop', - has = false; - - if (el[scroll] > 0) { return true; } - - // TODO: determine which cases actually cause this to happen - // if the element doesn't have the scroll set, see if it's possible to - // set the scroll - el[scroll] = 1; - has = (el[scroll] > 0); - el[scroll] = 0; - return has; - }, - - isOverAxis: function(x, reference, size) { - //Determines when x coordinate is over "b" element axis - return (x > reference) && (x < (reference + size)); - }, - - isOver: function(y, x, top, left, height, width) { - //Determines when x, y coordinates is over "b" element - return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); - }, - - keyCode: { - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - NUMPAD_ADD: 107, - NUMPAD_DECIMAL: 110, - NUMPAD_DIVIDE: 111, - NUMPAD_ENTER: 108, - NUMPAD_MULTIPLY: 106, - NUMPAD_SUBTRACT: 109, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SHIFT: 16, - SPACE: 32, - TAB: 9, - UP: 38 - } -}; - -// WAI-ARIA normalization -if (isFF2) { - var attr = $.attr, - removeAttr = $.fn.removeAttr, - ariaNS = "http://www.w3.org/2005/07/aaa", - ariaState = /^aria-/, - ariaRole = /^wairole:/; - - $.attr = function(elem, name, value) { - var set = value !== undefined; - - return (name == 'role' - ? (set - ? attr.call(this, elem, name, "wairole:" + value) - : (attr.apply(this, arguments) || "").replace(ariaRole, "")) - : (ariaState.test(name) - ? (set - ? elem.setAttributeNS(ariaNS, - name.replace(ariaState, "aaa:"), value) - : attr.call(this, elem, name.replace(ariaState, "aaa:"))) - : attr.apply(this, arguments))); - }; - - $.fn.removeAttr = function(name) { - return (ariaState.test(name) - ? this.each(function() { - this.removeAttributeNS(ariaNS, name.replace(ariaState, "")); - }) : removeAttr.call(this, name)); - }; -} - -//jQuery plugins -$.fn.extend({ - remove: function() { - // Safari has a native remove event which actually removes DOM elements, - // so we have to use triggerHandler instead of trigger (#3037). - $("*", this).add(this).each(function() { - $(this).triggerHandler("remove"); - }); - return _remove.apply(this, arguments ); - }, - - enableSelection: function() { - return this - .attr('unselectable', 'off') - .css('MozUserSelect', '') - .unbind('selectstart.ui'); - }, - - disableSelection: function() { - return this - .attr('unselectable', 'on') - .css('MozUserSelect', 'none') - .bind('selectstart.ui', function() { return false; }); - }, - - scrollParent: function() { - var scrollParent; - if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { - scrollParent = this.parents().filter(function() { - return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); - }).eq(0); - } else { - scrollParent = this.parents().filter(function() { - return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); - }).eq(0); - } - - return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; - } -}); - - -//Additional selectors -$.extend($.expr[':'], { - data: function(elem, i, match) { - return !!$.data(elem, match[3]); - }, - - focusable: function(element) { - var nodeName = element.nodeName.toLowerCase(), - tabIndex = $.attr(element, 'tabindex'); - return (/input|select|textarea|button|object/.test(nodeName) - ? !element.disabled - : 'a' == nodeName || 'area' == nodeName - ? element.href || !isNaN(tabIndex) - : !isNaN(tabIndex)) - // the element and all of its ancestors must be visible - // the browser may report that the area is hidden - && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length; - }, - - tabbable: function(element) { - var tabIndex = $.attr(element, 'tabindex'); - return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable'); - } -}); - - -// $.widget is a factory to create jQuery plugins -// taking some boilerplate code out of the plugin code -function getter(namespace, plugin, method, args) { - function getMethods(type) { - var methods = $[namespace][plugin][type] || []; - return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods); - } - - var methods = getMethods('getter'); - if (args.length == 1 && typeof args[0] == 'string') { - methods = methods.concat(getMethods('getterSetter')); - } - return ($.inArray(method, methods) != -1); -} - -$.widget = function(name, prototype) { - var namespace = name.split(".")[0]; - name = name.split(".")[1]; - - // create plugin method - $.fn[name] = function(options) { - var isMethodCall = (typeof options == 'string'), - args = Array.prototype.slice.call(arguments, 1); - - // prevent calls to internal methods - if (isMethodCall && options.substring(0, 1) == '_') { - return this; - } - - // handle getter methods - if (isMethodCall && getter(namespace, name, options, args)) { - var instance = $.data(this[0], name); - return (instance ? instance[options].apply(instance, args) - : undefined); - } - - // handle initialization and non-getter methods - return this.each(function() { - var instance = $.data(this, name); - - // constructor - (!instance && !isMethodCall && - $.data(this, name, new $[namespace][name](this, options))._init()); - - // method call - (instance && isMethodCall && $.isFunction(instance[options]) && - instance[options].apply(instance, args)); - }); - }; - - // create widget constructor - $[namespace] = $[namespace] || {}; - $[namespace][name] = function(element, options) { - var self = this; - - this.namespace = namespace; - this.widgetName = name; - this.widgetEventPrefix = $[namespace][name].eventPrefix || name; - this.widgetBaseClass = namespace + '-' + name; - - this.options = $.extend({}, - $.widget.defaults, - $[namespace][name].defaults, - $.metadata && $.metadata.get(element)[name], - options); - - this.element = $(element) - .bind('setData.' + name, function(event, key, value) { - if (event.target == element) { - return self._setData(key, value); - } - }) - .bind('getData.' + name, function(event, key) { - if (event.target == element) { - return self._getData(key); - } - }) - .bind('remove', function() { - return self.destroy(); - }); - }; - - // add widget prototype - $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype); - - // TODO: merge getter and getterSetter properties from widget prototype - // and plugin prototype - $[namespace][name].getterSetter = 'option'; -}; - -$.widget.prototype = { - _init: function() {}, - destroy: function() { - this.element.removeData(this.widgetName) - .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled') - .removeAttr('aria-disabled'); - }, - - option: function(key, value) { - var options = key, - self = this; - - if (typeof key == "string") { - if (value === undefined) { - return this._getData(key); - } - options = {}; - options[key] = value; - } - - $.each(options, function(key, value) { - self._setData(key, value); - }); - }, - _getData: function(key) { - return this.options[key]; - }, - _setData: function(key, value) { - this.options[key] = value; - - if (key == 'disabled') { - this.element - [value ? 'addClass' : 'removeClass']( - this.widgetBaseClass + '-disabled' + ' ' + - this.namespace + '-state-disabled') - .attr("aria-disabled", value); - } - }, - - enable: function() { - this._setData('disabled', false); - }, - disable: function() { - this._setData('disabled', true); - }, - - _trigger: function(type, event, data) { - var callback = this.options[type], - eventName = (type == this.widgetEventPrefix - ? type : this.widgetEventPrefix + type); - - event = $.Event(event); - event.type = eventName; - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if (event.originalEvent) { - for (var i = $.event.props.length, prop; i;) { - prop = $.event.props[--i]; - event[prop] = event.originalEvent[prop]; - } - } - - this.element.trigger(event, data); - - return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false - || event.isDefaultPrevented()); - } -}; - -$.widget.defaults = { - disabled: false -}; - - -/** Mouse Interaction Plugin **/ - -$.ui.mouse = { - _mouseInit: function() { - var self = this; - - this.element - .bind('mousedown.'+this.widgetName, function(event) { - return self._mouseDown(event); - }) - .bind('click.'+this.widgetName, function(event) { - if(self._preventClickEvent) { - self._preventClickEvent = false; - event.stopImmediatePropagation(); - return false; - } - }); - - // Prevent text selection in IE - if ($.browser.msie) { - this._mouseUnselectable = this.element.attr('unselectable'); - this.element.attr('unselectable', 'on'); - } - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind('.'+this.widgetName); - - // Restore text selection in IE - ($.browser.msie - && this.element.attr('unselectable', this._mouseUnselectable)); - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - // TODO: figure out why we have to use originalEvent - event.originalEvent = event.originalEvent || {}; - if (event.originalEvent.mouseHandled) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var self = this, - btnIsLeft = (event.which == 1), - elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - self.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return self._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return self._mouseUp(event); - }; - $(document) - .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - // preventDefault() is used to prevent the selection of text here - - // however, in Safari, this causes select boxes not to be selectable - // anymore, so this fix is needed - ($.browser.safari || event.preventDefault()); - - event.originalEvent.mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.browser.msie && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - this._preventClickEvent = (event.target == this._mouseDownEvent.target); - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(event) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overridden by extending plugin - _mouseStart: function(event) {}, - _mouseDrag: function(event) {}, - _mouseStop: function(event) {}, - _mouseCapture: function(event) { return true; } -}; - -$.ui.mouse.defaults = { - cancel: null, - distance: 1, - delay: 0 -}; - -})(jQuery); diff --git a/thirdparty/jquery-validate/demo/multipart/style.css b/thirdparty/jquery-validate/demo/multipart/style.css deleted file mode 100644 index fbf08c24f..000000000 --- a/thirdparty/jquery-validate/demo/multipart/style.css +++ /dev/null @@ -1,705 +0,0 @@ -/******************************************** - AUTHOR: Erwin Aligam - WEBSITE: http://www.styleshout.com/ - TEMPLATE NAME: Techmania 1.0 - TEMPLATE CODE: S-0003 - VERSION: 1.1 - *******************************************/ - /******************************************** - HTML ELEMENTS -********************************************/ /* Top elements */ - /** { margin:0; padding: 0; }*/ -body { - background-color: #000; - color: #555; - font: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif; - text-align: center; - margin: 15px 0; -} - -/* links */ -a { - color: #213540; - background: inherit; - text-decoration: none; -} - -a:hover { - color: #3e4255; - text-decoration: underline; - background: inherit; -} - -/* headers */ -h1,h2,h3 { - font-family: 'Trebuchet MS', Arial, sans-serif; - font-weight: bold; -} - -h1 { - font-size: 1.5em; - margin: 10px 15px; -} - -h2 { - font-size: 1.3em; - text-transform: uppercase; - color: #339900; - margin: 10px 15px; -} - -h3 { - font-size: 1.1em; - color: #333; - margin: 16px 0 0 18px; -} - -h1,h2,h3 { - padding: 0; -} - -p { - line-height: 1.4em; - padding: 0 15px; -} - -p.error { - color: #CC0033; -} - -ul,ol { - margin: 10px 6px; - padding: 0 15px; - color: #006699; -} - -ul span,ol span { - color: #666666; -} - -/* images */ -img { - border: 2px solid #CCC; -} - -img.float-right { - margin: 5px 0px 10px 10px; -} - -img.float-left { - margin: 5px 10px 10px 0px; -} - -code { - margin: 5px 0; - padding: 10px; - text-align: left; - display: block; - overflow: auto; - font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace; - /* white-space: pre; */ - background: #FAFAFA; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; -} - -acronym { - cursor: help; - border-bottom: 1px solid #777; -} - -blockquote { - margin: 15px; - padding: 0 0 0 32px; - background: #FAFAFA url(quote.gif) no-repeat 5px 10px !important; - background-position: 8px 10px; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; - font-weight: bold; -} - -/* form elements */ -fieldset { - margin: 12px 12px 18px; - padding-left: 6px; - border: 1px solid #004080; - color: #006699; -} - -fieldset fieldset { - border: 1px solid #9ea190; - margin: 17px 14px; -} - -form { - margin: 10px 15px; - padding: 0; -} - -label { - font-weight: bold; - margin: 5px 3px 0 0; - width: 160px; - text-align: right; - float: left; -} - -legend { - font-size: 1.2em; - padding: 0 12px; - font-weight: 900; - background-color: #F9F9F9; -} - -fieldset fieldset legend { - font-size: 1em; - color: #1a2129; - padding: 0 18px; - margin-left: 75px; -} - -input { - padding: 3px; - margin: 4px 0; - border: 1px solid #CFCED3; - font: normal 1em Verdana, sans-serif; - color: #777; -} - -textarea { - width: 400px; - padding: 4px; - font: normal 1em Verdana, sans-serif; - border: 1px solid #eee; - height: 100px; - display: block; - color: #777; -} - -input.button { - margin: 0; - font: bold 12px Arial, Sans-serif; - border: 1px solid #EAEAEA; - padding: 3px 4px; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - color: #333; /* color: #339900; */ - cursor: pointer; -} - -input.submitbutton { - background-color: #006699; - color: #FFF; - background-image: none; - font-weight: 900; - border: 1px solid #EAEAEA; - margin: 0 0 0 200px; -} - -/* search */ -#sidebar #search { - background: #f2f2f2; - margin: 0 15px; - padding: 5px 0; -} - -#sidebar #search img { - vertical-align: bottom; -} - -#sidebar #search .textbox { - background: #FFF url(input.png) no-repeat top left; - border: 1px solid #EAEAEA; - font-size: 11px; - padding: 3px; - width: 110px; -} - -#sidebar #search input.searchbutton { - margin: 0; - font: bold 100% Arial, Sans-serif; - border: 1px solid #CCC; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - padding: 1px; - height: 25px; - color: #333; - width: 55px; -} - -/***************************** - LAYOUT -******************************/ -#wrap { - margin: 0 auto; - padding: 0; - text-align: left; - background-color: #FFF; - width: 790px; -} - -#content-wrap { - clear: both; - margin: 0; - padding: 0; - width: 790px; -} - -/* header */ -#header { - position: relative; - clear: left; - width: 790px; - height: 137px; - margin: 0; - padding: 0; - background: #000 url(headerbg.jpg) no-repeat left bottom; -} - -#header h1#logo-text { - float: right; - margin: 39px 58px 0 0; - padding: 0; - font: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif; - letter-spacing: -2px; - color: #FFF; - text-transform: none; - /* change the values of top and right to adjust the position of the logo*/ - top: 35px; - right: 30px; -} - -#header h2#slogan { - float: right; - margin: 0 38px 0 0; - padding: 0; - font: bold 1.5em 'Trebuchet MS', Arial, Sans-serif; - text-transform: none; - letter-spacing: 1px; - color: #FFF; - clear: both; - text-align: right; -} - -#header h1#logo-text span { - color: #CFCED3; -} - -/* menu tabs */ -#header #header-tabs { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 25px; - background: #000; - font: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif; -} - -#header-tabs ul { - margin: 0; - padding: 2px 0px 0px 0px; - list-style: none; -} - -#header-tabs li { - display: inline; - margin: 0; - padding: 0; -} - -#header-tabs a { - float: left; - background: url(tableft.gif) no-repeat left top; - margin: 0; - padding: 0 0 0 4px; - text-decoration: none; -} - -#header-tabs a span { - float: left; - display: block; - background: url(tabright.gif) no-repeat right top; - padding: 7px 15px 4px 8px; - color: #CCC; -} - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#header-tabs a span { - float: none; -} - -/* End IE5-Mac hack */ -#header-tabs a:hover span { - color: #FFF; -} - -#header-tabs a:hover { - background-position: 0% -42px; -} - -#header-tabs a:hover span { - background-position: 100% -42px; -} - -#header-tabs #current a { - background-position: 0% -42px; -} - -#header-tabs #current a span { - background-position: 100% -42px; - color: #FFF; -} - -/* main content */ -#main { - width: 748px; - margin: 0; - padding: 8px 16px; - background-color: #F9F9F9; - border-left: 5px solid #000; - border-right: 5px solid #000; -} - -#main h1 { - padding: 8px 0 3px 25px; - text-transform: none; - border-bottom: 2px solid #f2f2f2; - color: #339900; -} - -/* sidebar */ -#sidebar { /* float: right; - width: 245px; - margin: 0 0 10px 0; padding: 0; - background-color: inherit; */ - display: none; -} - -#sidebar h1 { - padding: 8px 0px 3px 25px; - background: url(square_arrow.gif) no-repeat 0% .7em; - text-transform: none; - color: #339900; -} - -#sidebar ul.sidemenu { - list-style: none; - margin: 10px 15px; - padding: 0; -} - -#sidebar ul.sidemenu li { - margin-bottom: 1px; - border: 1px solid #f2f2f2; -} - -#sidebar ul.sidemenu a { - display: block; - font-weight: bold; - color: #333; - text-decoration: none; - padding: 2px 5px 2px 10px; - background: #f2f2f2; - border-left: 5px solid #CCC; - min-height: 18px; -} - -* html body #sidebar ul.sidemenu a { - height: 18px; -} - -#sidebar ul.sidemenu a:hover { - padding: 2px 5px 2px 10px; - background: #f2f2f2; - color: #339900; - border-left: 5px solid #72A545; -} - -/* footer */ -#footer { - clear: both; - height: 40px; - color: #CCC; - background: #000; - margin: 0; - font-size: 92%; -} - -#footer a { - text-decoration: none; - font-weight: bold; - color: #FFF; -} - -#footer #footer-left { - width: 68%; - float: left; - text-align: left; - margin: 0; - padding: 10px; -} - -#footer #footer-right { - width: 25%; - float: right; - text-align: right; - margin: 0; - padding: 10px; -} - -/* alignment classes */ -.float-left { - float: left; -} - -.float-right { - float: right; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -/* additional classes */ -.clear { - clear: both; -} - -.hide { - display: none; -} - -.gray { - color: #CCC; -} - -.comments { - color: #333; - background: #FFF; - text-align: right; - border-top: 1px dashed #EFF0F1; - border-bottom: 1px dashed #EFF0F1; - padding: 5px 0; - margin-top: 20px; -} - -html { - min-height: 100.1%; -} - -/* ------ one ------------*/ -body .mainText { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; -} - -#demoText h1,.mainText h1 { - font-size: 130%; - color: #0099FF; - text-decoration: none; - font-family: Arial, Helvetica, sans-serif; - margin: 5px 4px 5px 24px; - background: none; - padding: 0; - border: none; - text-transform: capitalize; -} - -.mainText h2 { - font-size: 110%; - color: #000033; - font-family: Arial, Helvetica, sans-serif; - text-decoration: none; - background: none; - margin: 4px 32px 6px 22px; - text-transform: capitalize; -} - -.mainText h3 { - font-size: 120%; - font-weight: 900; - margin: 14px 0 0 0; - text-align: center; - color: #000033; -} - -.mainText table { - width: 95%; - border: 1px solid #0099FF; - border-collapse: collapse; - margin: 18px 7px; -} - -.mainText table td { - background-color: #99CCFF; - color: #000033; - padding: 4px; -} - -.mainText table th { - background-color: #000033; - color: #99CCFF; - padding: 4px; -} - -.mainText .linkPar a { - color: #000033; - text-decoration: underline; -} - -.mainText .linkPar a:hover { - color: #660033; - text-decoration: none; - font-weight: 900; -} - -.pusher { - cursor: pointer; - padding: 3px 10px 3px 22px; - font-weight: 900; - font-size: 14px; -} - -/* ------------- form specific styles are here -------------- */ -fieldset { - margin: 0; - border: 1px solid #C3DE00; - padding: 10px; - /*border:none; -padding:0;*/ - color: #7563A5; -} - -legend { - background-color: #FFFFFF; - text-align: center; - color: #097981; - padding: 0 12px; -} - -label { - text-align: right; - width: 298px; - border-right: 1px dotted #099; - padding-right: 5px; - margin: 0 0 8px 0; - float: left; - clear: left; - display: block; - color: #7563A5; -} - -label.checkbox,label.textarea { - border: none; -} - -label.lgfield { - border: none; - text-align: center; - clear: both; - float: none; - width: 100%; -} - -fieldset input,fieldset select,fieldset textarea { - margin-left: 10px; - margin-bottom: 8px; -} - -select.longfield { - margin: 0 0 0 115px; -} - -input [type="radio"],input [type="checkbox"] { - margin: 2px 0 0 4px; -} - -textarea { - width: 250px; - float: left; -} - -/*Get Help Form Styles*/ -p.formDisclaimer { - text-align: center; - margin: 32px 24px 12px 0; - font-style: italic; -} - -div.buttonWrapper { - margin: 28px 0 14px 0; - clear: both; - text-align: center; -} - -.formspacer { - height: 1em; - clear: both; -} - -.hideField { - display: none; -} - -.pushOpen { - height: 18em; -} - -/* ----- error message for field validation ----- */ -#stepForm label.warning { - text-align: left; - width: auto; - padding: 0; - margin: 0 0 0 10px; - float: none; - clear: none; - display: inline; - color: #CC3366; - font-size: 10px; - border: none; - border-top: 1px dotted #CC3366; -} - -div.requiredNotice { - width: 140px; - float: right; - margin: 0 24px 0 0; - padding: 0; -} - -h3.stepHeader { - text-align: left; - font-size: 16px; - font-weight: bold; - margin: 0 0 24px 24px; - color: #676cac; -} - -ul#stepForm,ul#stepForm li { - margin: 0; - padding: 0; -} - -ul#stepForm li { - list-style: none; -} - -/* Form Buttons */ -input.submitbutton,.nextbutton,.prevbutton { - width: 100px; - height: 40px; - background-color: #663399; - padding: 4px; - border: 1px solid #339933; - cursor: pointer; - text-align: center; - color: #FFFFFF; - margin: 7px; -} - -input.submitbutton { - background-color: #006699; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html b/thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html deleted file mode 100644 index f8e128b27..000000000 --- a/thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - -

jQuery Validation Plugin Demo

-
- -
-
- Validating a form with a radio and checkbox buttons -
- Gender - - - -
-
- Family - - - - -
-

- - -
- -

-
- Spam - - - - -
-

- -

-
-
- -
-

Some tests with selects

-

-
- -

- -

-
- -

- -

-
- -

- -

-
- -

- -

-
- -Back to main page - -
- - - - diff --git a/thirdparty/jquery-validate/demo/tabs/index.html b/thirdparty/jquery-validate/demo/tabs/index.html deleted file mode 100644 index fe58499d2..000000000 --- a/thirdparty/jquery-validate/demo/tabs/index.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - -jQuery UI tabs integration demo - - - - - - - - - - - - - - -
- -
- -
-

- - -

-

- - -

-

- - -

-

- - -

-
-
-

- - -

-

- - -

-

- - - - -

-
-
-

- - -

-

- - -

-

- - -

-
-
- - -
- - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/themerollered.html b/thirdparty/jquery-validate/demo/themerollered.html deleted file mode 100644 index fe58a1afc..000000000 --- a/thirdparty/jquery-validate/demo/themerollered.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - -jQuery validation plug-in - ThemeRolldered demo - - - - - - - - -
-
- Please provide your name, email address (won't be published) and a comment -

- - -

- - -

-

- - -

-

- - -

-

- -

-
-
- -
-
- Validating a complete form -

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-
- Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo - - - - -
-

- -

-
-
- - - - - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/tinymce/index.html b/thirdparty/jquery-validate/demo/tinymce/index.html deleted file mode 100644 index 54ac852e6..000000000 --- a/thirdparty/jquery-validate/demo/tinymce/index.html +++ /dev/null @@ -1,76 +0,0 @@ - - - -jQuery Validation plugin: integration with TinyMCE - - - - - - - - - - -
-

TinyMCE and Validation Plugin integration example

- - - - -
- - - - -
- -
- - - diff --git a/thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js b/thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js deleted file mode 100644 index d19fb53f7..000000000 --- a/thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/tinymce/themes/simple/img/icons.gif b/thirdparty/jquery-validate/demo/tinymce/themes/simple/img/icons.gif deleted file mode 100644 index 16af141ff0eea376a889b1e8d28e9c1cacaaab16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1440 zcmV;R1z-9{Nk%w1VaNa!0QUd@Ib*`7v&H}b0P*i`B{WZ*I4YI8{iDPCZ*XyWj;?N! z&ooP8CcKTM%}ImAk&d@bUef&=iA% zhPA3sm56OYcjMRI^s}jof~E0n!SIozxs`y)bZpaM%~elOt(xIz_1F@`xREtxwxO@X zElsNLx;f_MIwnTOux@bk@5r<-;@s){f~fMSskU>S&vlpdmZGk)n^Ks084*pfMo5}`Y)@uBrt7q^ z_xb)XxI@^-XhLVQWPPfUtMQSg&Xb6UQhU2=S3pa1!Lhs1Kwz1)!P59aI6r5pthLM4 zE-ud4`aC>8zybolqcQ$sRq*)W>+kl^)!br%x2LJkVv+Dui1Oh7|6z>ag023Luhg%= z;=sbh)RP30t>V}2$H?fg=;-%zOTU8v0MO8l85I$+z}bYP#G9DS_#hs}n3hj*tissz zAwYQh{QX~VkH5&*9YTcu{{H^`{_yYcW|;u|{Qilm^upTyi?sd!nVG)6{{LrW`s5%! zQETJeu@Y0sB3Qy+jGVB@-BWO)C1U{h_4v@?@UEu*S8lPiucH6>|4vxO2|0#LaF@v0 z@ZaCy@c8hkxVXaB{z|fT@U~;Hv$d$T$J*xpqPpE8TH+G^0=vlI+KzIEuZN}B@UYO} z&dtoGp5{=vw)ErQRcDJbQgSxGf8JYL_`X^{uFH_9uqY`f`}_Of)zF}&w4mVd!0r05 zoM3>k!2kdMA^8LW00930EC2ui0LTCo000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVW@EluM+^lPFV4B&kwhfCK?JZW}S8Lq-x8D(>2KU{_0tBn}8A zagb%p1Q&P-6u`78(}*2LRH3FT;{^Z%ooYoWl!#X%K7Tem@Rf*AgGMWAZK^N;uLKrJ zgqs_6Dufyfw<06~AZA3KR{>nO09GJYj!yq2Mo2^;St0-;UpPxp*8_}f6+Z>JE!?&a z+dPb*b~hYDra%-%J`C}|)xna%9$;-yz|zc`Z6DmMS)p07fiENwe4t=jwVQEwY|=zo zxL=@s=&E6Qp)TGXT_1)l*emUVx)m?~6;Hl)c5^2e&KlH&3v877L9rfP;Fp}T4iu?af8AOXd@5C0(U&fK3z8Av u{UxbK=items.length){for(i=0,l=base.length;i=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0,l=base.length-(bp-1);i=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n,xp;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(!t.selectorRe)t.selectorRe=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i;;if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp='';each(v.split(' '),function(v){v=t.selectorRe.exec(v);xp+=v[1]?'//'+v[1]:'//*';if(v[2])xp+="[@id='"+v[2]+"']";if(v[3]){each(v[3].split('.'),function(n){xp+="[@class = '"+n+"' or contains(concat(' ', @class, ' '), ' "+n+" ')]";});}});t.cache[v]=xp;}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext())o.push(n);});return o;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;t.setAttribs(e,a);if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(!is(v,'string')){each(v,function(v,n){t.setStyle(e,n,v);});return;}if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case"shape":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':case'checked':case'disabled':case'readonly':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647||v==='32768')v='';break;case'compact':case'noshade':case'nowrap':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return!e||e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='
'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='
'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/

<\/p>|]+)><\/p>|/gi,' 

');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/

]+)>|

/g,'

');h=h.replace(/<\/p>/g,'
');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x|]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|]+)>/gi,'<$1i$2>');}else if(isIE){h=h.replace(/'/g,''');h=h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,'');}h=h.replace(/]+)\/>|/gi,'');if(s.keep_values){if(/)/g,'\n');s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,'');return s;};h=h.replace(/]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type="text/javascript"';if(b)b='';return''+b+'';});h=h.replace(/]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return''+b+'';});}h=h.replace(//g,'');h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e,n,v;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;n=e.firstChild;v='';if(n){do{v+=n.nodeValue;}while(n.nextSibling);}return v||s;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&';case'"':return'"';case'<':return'<';case'>':return'>';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.get(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;if(e.domLoaded)return;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,element_format:s.element_format,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('','g'),'');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'
');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='
'+o.content+'
';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
[\r\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;if(e){o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;}},save:function(o){var t=this,e=t.getElement(),h,f;if(!e||!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'
');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&(c==91||c==93))||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'']);t.addShortcut('ctrl+7','',['FormatBlock',false,'

']);t.addShortcut('ctrl+8','',['FormatBlock',false,'

']);t.addShortcut('ctrl+9','',['FormatBlock',false,'
']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(tinymce.isMac&&o.ctrl!=e.metaKey)return;else if(!tinymce.isMac&&o.ctrl!=e.ctrlKey)return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function process(no){var n,sp,nl,x;if(!s.inline_styles)return;nl=t.dom.select('font',no);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}};t.onPreProcess.add(function(ed,o){if(o.get)process(o.node);});t.onSetContent.add(function(ed,o){if(o.initial)process(o.node);});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;function isBlock(n){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);};tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else{if(ed.settings.convert_fonts_to_spans)t._applyInlineStyle('span',{style:{fontFamily:v}});else ed.getDoc().execCommand('FontName',false,v);}},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fc,fs;if(s.convert_fonts_to_spans&&v>=1&&v<=7){fs=tinymce.explode(s.font_size_style_values);fc=tinymce.explode(s.font_size_classes);if(fc)v=fc[v-1]||v;else v=fs[v-1]||v;}if(v>=1&&v<=7)ed.getDoc().execCommand('FontSize',false,v);else this._applyInlineStyle('span',{style:{fontSize:v}});},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontSize;if(!v&&(isOpera||isWebKit)){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return v||this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontFamily.replace(/, /g,',').replace(/[\'\"]/g,'').toLowerCase();if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('
');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},ForeColor:function(ui,v){var ed=this.editor;if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{color:v}});return;}else ed.getDoc().execCommand('ForeColor',false,v);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{backgroundColor:val}});return;}function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'

'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!ed.settings.inline_styles&&!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE'));},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),isBlock);eb=dom.getParent(s.getEnd(),isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_applyInlineStyle:function(na,at,op){var t=this,ed=t.editor,dom=ed.dom,bm,lo={},kh;na=na.toUpperCase();if(op&&op.check_classes&&at['class'])op.check_classes.push(at['class']);function replaceFonts(){var bm;each(dom.select(tinymce.isWebKit&&!tinymce.isAir?'span':'font'),function(n){if(n.style.fontFamily=='mceinline'||n.face=='mceinline'){if(!bm)bm=ed.selection.getBookmark();at._mce_new='1';dom.replace(dom.create(na,at),n,1);}});each(dom.select(na),function(n){if(n.getAttribute('_mce_new')){function removeStyle(n){if(n.nodeType==1){each(at.style,function(v,k){dom.setStyle(n,k,'');});if(at['class']&&n.className&&op){each(op.check_classes,function(c){if(dom.hasClass(n,c))dom.removeClass(n,c);});}}};each(dom.select(na,n),removeStyle);if(n.parentNode&&n.parentNode.nodeType==1&&n.parentNode.childNodes.length==1)removeStyle(n.parentNode);dom.getParent(n.parentNode,function(pn){if(pn.nodeType==1){if(at.style){each(at.style,function(v,k){var sv;if(!lo[k]&&(sv=dom.getStyle(pn,k))){if(sv===v)dom.setStyle(n,k,'');lo[k]=1;}});}if(at['class']&&pn.className&&op){each(op.check_classes,function(c){if(dom.hasClass(pn,c))dom.removeClass(n,c);});}}return false;});n.removeAttribute('_mce_new');}});each(dom.select(na).reverse(),function(n){var c=0;each(dom.getAttribs(n),function(an){if(an.nodeName.substring(0,1)!='_'&&dom.getAttrib(n,an.nodeName)!=''){c++;}});if(c==0)dom.remove(n,1);});ed.selection.moveToBookmark(bm);return!!bm;};ed.focus();ed.getDoc().execCommand('FontName',false,'mceinline');replaceFonts();if(kh=t._applyInlineStyle.keyhandler){ed.onKeyUp.remove(kh);ed.onKeyPress.remove(kh);ed.onKeyDown.remove(kh);ed.onSetContent.remove(t._applyInlineStyle.chandler);}if(ed.selection.isCollapsed()){t._pendingStyles=tinymce.extend(t._pendingStyles||{},at.style);t._applyInlineStyle.chandler=ed.onSetContent.add(function(){delete t._pendingStyles;});t._applyInlineStyle.keyhandler=kh=function(e){if(t._pendingStyles){at.style=t._pendingStyles;delete t._pendingStyles;}if(replaceFonts()){ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);}if(e.type=='keyup')ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);};ed.onKeyDown.add(kh);ed.onKeyPress.add(kh);ed.onKeyUp.add(kh);}else t._pendingStyles=0;},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),isBlock);eb=dom.getParent(en||s.getEnd(),isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index','gi');t.rePadd=new RegExp(']+)><\\\/p>|]+)\\\/>|]+)>\\s+<\\\/p>|

<\\\/p>||

\\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp(']+)>[\\s\\u00a0]+<\\\/p>|

[\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp(']+)>( | )<\\\/p>|

( | )<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp(']+)>\\s*
\\s*<\\\/p>|

\\s*
\\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*
\\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2>
');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2>
');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0');o.content=o.content.replace(t.reTrailBr,'');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('
',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i,n,eid;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(r.startContainer.nodeType==1&&(n=r.startContainer.childNodes[r.startOffset])&&n.nodeType==1){eid=n.getAttribute("id");n.setAttribute("id","__mce");}else{if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}else if(!isIE&&(n=ed.dom.get('__mce'))){if(eid)n.setAttribute('id',eid);else n.removeAttribute('id');r=d.createRange();r.setStartBefore(n);r.setEndBefore(n);se.setRng(r);}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch,car;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'
');aft=ed.dom.add(sn,se.element,null,'
');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='
';function appendStyles(e,en){var nl=[],nn,n,i;e.innerHTML='';if(se.keep_styles){n=en;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)){nn=n.cloneNode(false);dom.setAttrib(nn,'id','');nl.push(nn);}}while(n=n.parentNode);}if(nl.length>0){for(i=nl.length-1,nn=e;i>=0;i--)nn=nn.appendChild(nl[i]);nl[0].innerHTML=isOpera?' ':'
';return nl[0];}else e.innerHTML=isOpera?' ':'
';};if(isEmpty(aft))car=appendStyles(aft,en);if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(car||aft):car||aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(yvp.y+vp.h){ed.getWin().scrollTo(0,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

rU3_g;%kS_VQ4eHcUl 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 JG=(bzS!lbIoWJt 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

_W`ghU*fUX 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


(yAQ|pPc^nBfl&b)_k6%+P+t_B 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≦E%MaRY7euc;#Yx2jCt^_YW*&iIB8 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
"; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.innerHTML = "
t
"; - tds = div.getElementsByTagName( "td" ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE < 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( document.defaultView && document.defaultView.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Remove the body element we added - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - } ) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - // Null connected elements to avoid leaks in IE - testElement = fragment = select = opt = body = marginDiv = div = input = null; - - return support; -})(); - -// Keep track of boxModel -jQuery.boxModel = jQuery.support.boxModel; - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, ret, - internalKey = jQuery.expando, - getByName = typeof name === "string", - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ jQuery.expando ] = id = ++jQuery.uuid; - } else { - id = jQuery.expando; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); - } else { - cache[ id ] = jQuery.extend(cache[ id ], name); - } - } - - thisCache = cache[ id ]; - - // Internal jQuery data is stored in a separate object inside the object's data - // cache in order to avoid key collisions between internal data and user-defined - // data - if ( pvt ) { - if ( !thisCache[ internalKey ] ) { - thisCache[ internalKey ] = {}; - } - - thisCache = thisCache[ internalKey ]; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should - // not attempt to inspect the internal events object using jQuery.data, as this - // internal data object is undocumented and subject to change. - if ( name === "events" && !thisCache[name] ) { - return thisCache[ internalKey ] && thisCache[ internalKey ].events; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( getByName ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, - - // Reference to internal data cache key - internalKey = jQuery.expando, - - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; - - if ( thisCache ) { - - // Support interoperable removal of hyphenated or camelcased keys - if ( !thisCache[ name ] ) { - name = jQuery.camelCase( name ); - } - - delete thisCache[ name ]; - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !isEmptyDataObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( pvt ) { - delete cache[ id ][ internalKey ]; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - var internalCache = cache[ id ][ internalKey ]; - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - // Ensure that `cache` is not a window object #10080 - if ( jQuery.support.deleteExpando || !cache.setInterval ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the entire user cache at once because it's faster than - // iterating through each key, but we need to continue to persist internal - // data if it existed - if ( internalCache ) { - cache[ id ] = {}; - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - - cache[ id ][ internalKey ] = internalCache; - - // Otherwise, we need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - } else if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } else { - elem[ jQuery.expando ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var $this = jQuery( this ), - args = [ parts[0], value ]; - - $this.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - $this.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - !jQuery.isNaN( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON -// property to be considered empty objects; this property always exists in -// order to make sure JSON.stringify does not expose internal metadata -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery.data( elem, deferDataKey, undefined, true ); - if ( defer && - ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && - ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery.data( elem, queueDataKey, undefined, true ) && - !jQuery.data( elem, markDataKey, undefined, true ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.resolve(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = (type || "fx") + "mark"; - jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); - if ( count ) { - jQuery.data( elem, key, count, true ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - if ( elem ) { - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type, undefined, true ); - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data), true ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - defer; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { - count++; - tmp.done( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - nodeHook, boolHook; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classNames, i, l, elem, - setClass, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call(this, j, this.className) ); - }); - } - - if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className && classNames.length === 1 ) { - elem.className = value; - - } else { - setClass = " " + elem.className + " "; - - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { - setClass += classNames[ c ] + " "; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classNames, i, l, elem, className, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call(this, j, this.className) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - classNames = (value || "").split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - className = (" " + elem.className + " ").replace( rclass, " " ); - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[ c ] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return undefined; - } - - var isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attrFix: { - // Always normalize to ensure hook usage - tabindex: "tabIndex" - }, - - attr: function( elem, name, value, pass ) { - var nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( !("getAttribute" in elem) ) { - return jQuery.prop( elem, name, value ); - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Normalize the name if needed - if ( notxml ) { - name = jQuery.attrFix[ name ] || name; - - hooks = jQuery.attrHooks[ name ]; - - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) ) { - hooks = boolHook; - - // Use nodeHook if available( IE6/7 ) - } else if ( nodeHook ) { - hooks = nodeHook; - } - } - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return undefined; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, name ) { - var propName; - if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; - - jQuery.attr( elem, name, "" ); - elem.removeAttribute( name ); - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - // Use the value property for back compat - // Use the nodeHook for button elements in IE6/7 (#1954) - value: { - get: function( elem, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.get( elem, name ); - } - return name in elem ? - elem.value : - null; - }, - set: function( elem, value, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return (elem[ name ] = value); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Add the tabindex propHook to attrHooks for back-compat -jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex; - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - // Fall back to attribute presence where some booleans are not supported - var attrNode; - return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = true; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !jQuery.support.getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - // Return undefined if nodeValue is empty string - return ret && ret.nodeValue !== "" ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - ret = document.createAttribute( name ); - elem.setAttributeNode( ret ); - } - return (ret.nodeValue = value + ""); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return (elem.style.cssText = "" + value); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }); -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); - } - } - }); -}); - - - - -var rnamespaces = /\.(.*)$/, - rformElems = /^(?:textarea|input|select)$/i, - rperiod = /\./g, - rspaces = / /g, - rescape = /[^\w\s.|`]/g, - fcleanup = function( nm ) { - return nm.replace(rescape, "\\$&"); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } else if ( !handler ) { - // Fixes bug #7229. Fix recommended by jdalton - return; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery._data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events, - eventHandle = elemData.handle; - - if ( !events ) { - elemData.events = events = {}; - } - - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - if ( !handleObj.guid ) { - handleObj.guid = handler.guid; - } - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } - - var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem, undefined, true ); - } - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Event object or event type - var type = event.type || event, - namespaces = [], - exclusive; - - if ( type.indexOf("!") >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.exclusive = exclusive; - event.namespace = namespaces.join("."); - event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); - - // triggerHandler() and global events don't bubble or run the default action - if ( onlyHandlers || !elem ) { - event.preventDefault(); - event.stopPropagation(); - } - - // Handle a global trigger - if ( !elem ) { - // TODO: Stop taunting the data cache; remove global events and always attach to document - jQuery.each( jQuery.cache, function() { - // internalKey variable is just used to make it easier to find - // and potentially change this stuff later; currently it just - // points to jQuery.expando - var internalKey = jQuery.expando, - internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[ type ] ) { - jQuery.event.trigger( event, data, internalCache.handle.elem ); - } - }); - return; - } - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - event.target = elem; - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data != null ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - var cur = elem, - // IE doesn't like method names with a colon (#3533, #8272) - ontype = type.indexOf(":") < 0 ? "on" + type : ""; - - // Fire event on the current element, then bubble up the DOM tree - do { - var handle = jQuery._data( cur, "handle" ); - - event.currentTarget = cur; - if ( handle ) { - handle.apply( cur, data ); - } - - // Trigger an inline bound script - if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { - event.result = false; - event.preventDefault(); - } - - // Bubble up to document, then to window - cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; - } while ( cur && !event.isPropagationStopped() ); - - // If nobody prevented the default action, do it now - if ( !event.isDefaultPrevented() ) { - var old, - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction)() check here because IE6/7 fails that test. - // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. - try { - if ( ontype && elem[ type ] ) { - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - jQuery.event.triggered = type; - elem[ type ](); - } - } catch ( ieError ) {} - - if ( old ) { - elem[ ontype ] = old; - } - - jQuery.event.triggered = undefined; - } - } - - return event.result; - }, - - handle: function( event ) { - event = jQuery.event.fix( event || window.event ); - // Snapshot the handlers list since a called handler may add/remove events. - var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), - run_all = !event.exclusive && !event.namespace, - args = Array.prototype.slice.call( arguments, 0 ); - - // Use the fix-ed Event rather than the (read-only) native event - args[0] = event; - event.currentTarget = this; - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Triggered event must 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event. - if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - // Fixes #1925 where srcElement might not be defined either - event.target = event.srcElement || document; - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var eventDocument = event.target.ownerDocument || document, - doc = eventDocument.documentElement, - body = eventDocument.body; - - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { - event.which = event.charCode != null ? event.charCode : event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, - liveConvert( handleObj.origType, handleObj.selector ), - jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); - }, - - remove: function( handleObj ) { - jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); - } - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - - // Check if mouse(over|out) are still within the same parent element - var related = event.relatedTarget, - inside = false, - eventType = event.type; - - event.type = event.data; - - if ( related !== this ) { - - if ( related ) { - inside = jQuery.contains( this, related ); - } - - if ( !inside ) { - - jQuery.event.handle.apply( this, arguments ); - - event.type = eventType; - } - } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( !jQuery.nodeName( this, "form" ) ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - // Avoid triggering error on non-existent type attribute in IE VML (#7071) - var elem = e.target, - type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, - type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var changeFilters, - - getVal = function( elem ) { - var type = jQuery.nodeName( elem, "input" ) ? elem.type : "", - val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( jQuery.nodeName( elem, "select" ) ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery._data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery._data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - e.liveFired = undefined; - jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - beforedeactivate: testChange, - - click: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { - testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information - beforeactivate: function( e ) { - var elem = e.target; - jQuery._data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return rformElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return rformElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; - - // Handle when the input is .focus()'d - changeFilters.focus = changeFilters.beforeactivate; -} - -function trigger( type, elem, args ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - // Don't pass args or remember liveFired; they apply to the donor event. - var event = jQuery.extend( {}, args[ 0 ] ); - event.type = type; - event.originalEvent = {}; - event.liveFired = undefined; - jQuery.event.handle.call( elem, event ); - if ( event.isDefaultPrevented() ) { - args[ 0 ].preventDefault(); - } -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - - function handler( donor ) { - // Donor event is always a native one; fix it and switch its type. - // Let focusin/out handler cancel the donor focus/blur event. - var e = jQuery.event.fix( donor ); - e.type = fix; - e.originalEvent = {}; - jQuery.event.trigger( e, null, e.target ); - if ( e.isDefaultPrevented() ) { - donor.preventDefault(); - } - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -}); - -function liveHandler( event ) { - var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, - elems = [], - selectors = [], - events = jQuery._data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) - if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { - return; - } - - if ( event.namespace ) { - namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - close = match[i]; - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { - elem = close.elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - event.type = handleObj.preType; - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - - // Make sure not to accidentally match a child element with the same selector - if ( related && jQuery.contains( elem, related ) ) { - related = elem; - } - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj, level: close.level }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - - if ( maxLevel && match.level > maxLevel ) { - break; - } - - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - ret = match.handleObj.origHandler.apply( match.elem, arguments ); - - if ( ret === false || event.isPropagationStopped() ) { - maxLevel = match.level; - - if ( ret === false ) { - stop = false; - } - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var match, - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var found, item, - filter = Expr.filter[ type ], - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - var first = match[2], - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -Sizzle.getText = function( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( typeof selector === "string" ? - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array - if ( jQuery.isArray( selectors ) ) { - var match, selector, - matches = {}, - level = 1; - - if ( cur && selectors.length ) { - for ( i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[ selector ] ) { - matches[ selector ] = POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[ selector ]; - - if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { - ret.push({ selector: selector, elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -} - - - - -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
", "
" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - col: [ 2, "", "
" ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and " ); - -})(); diff --git a/thirdparty/jquery-validate/lib/jquery.mockjax.js b/thirdparty/jquery-validate/lib/jquery.mockjax.js deleted file mode 100644 index 50ace6011..000000000 --- a/thirdparty/jquery-validate/lib/jquery.mockjax.js +++ /dev/null @@ -1,382 +0,0 @@ -/*! - * MockJax - jQuery Plugin to Mock Ajax requests - * - * Version: 1.4.0 - * Released: 2011-02-04 - * Source: http://github.com/appendto/jquery-mockjax - * Docs: http://enterprisejquery.com/2010/07/mock-your-ajax-requests-with-mockjax-for-rapid-development - * Plugin: mockjax - * Author: Jonathan Sharp (http://jdsharp.com) - * License: MIT,GPL - * - * Copyright (c) 2010 appendTo LLC. - * Dual licensed under the MIT or GPL licenses. - * http://appendto.com/open-source-licenses - */ -(function($) { - var _ajax = $.ajax, - mockHandlers = []; - - function parseXML(xml) { - if ( window['DOMParser'] == undefined && window.ActiveXObject ) { - DOMParser = function() { }; - DOMParser.prototype.parseFromString = function( xmlString ) { - var doc = new ActiveXObject('Microsoft.XMLDOM'); - doc.async = 'false'; - doc.loadXML( xmlString ); - return doc; - }; - } - - try { - var xmlDoc = ( new DOMParser() ).parseFromString( xml, 'text/xml' ); - if ( $.isXMLDoc( xmlDoc ) ) { - var err = $('parsererror', xmlDoc); - if ( err.length == 1 ) { - throw('Error: ' + $(xmlDoc).text() ); - } - } else { - throw('Unable to parse XML'); - } - } catch( e ) { - var msg = ( e.name == undefined ? e : e.name + ': ' + e.message ); - $(document).trigger('xmlParseError', [ msg ]); - return undefined; - } - return xmlDoc; - } - - $.extend({ - ajax: function(origSettings) { - var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings), - mock = false; - // Iterate over our mock handlers (in registration order) until we find - // one that is willing to intercept the request - $.each(mockHandlers, function(k, v) { - if ( !mockHandlers[k] ) { - return; - } - var m = null; - // If the mock was registered with a function, let the function decide if we - // want to mock this request - if ( $.isFunction(mockHandlers[k]) ) { - m = mockHandlers[k](s); - } else { - m = mockHandlers[k]; - // Inspect the URL of the request and check if the mock handler's url - // matches the url for this ajax request - if ( $.isFunction(m.url.test) ) { - // The user provided a regex for the url, test it - if ( !m.url.test( s.url ) ) { - m = null; - } - } else { - // Look for a simple wildcard '*' or a direct URL match - var star = m.url.indexOf('*'); - if ( ( m.url != '*' && m.url != s.url && star == -1 ) || - ( star > -1 && m.url.substr(0, star) != s.url.substr(0, star) ) ) { - // The url we tested did not match the wildcard * - m = null; - } - } - if ( m ) { - // Inspect the data submitted in the request (either POST body or GET query string) - if ( m.data && s.data ) { - var identical = false; - // Deep inspect the identity of the objects - (function ident(mock, live) { - // Test for situations where the data is a querystring (not an object) - if (typeof live === 'string') { - // Querystring may be a regex - identical = $.isFunction( mock.test ) ? mock.test(live) : mock == live; - return identical; - } - $.each(mock, function(k, v) { - if ( live[k] === undefined ) { - identical = false; - return false; - } else { - identical = true; - if ( typeof live[k] == 'object' ) { - return ident(mock[k], live[k]); - } else { - if ( $.isFunction( mock[k].test ) ) { - identical = mock[k].test(live[k]); - } else { - identical = ( mock[k] == live[k] ); - } - return identical; - } - } - }); - })(m.data, s.data); - // They're not identical, do not mock this request - if ( identical == false ) { - m = null; - } - } - // Inspect the request type - if ( m && m.type && m.type != s.type ) { - // The request type doesn't match (GET vs. POST) - m = null; - } - } - } - if ( m ) { - mock = true; - - // Handle console logging - var c = $.extend({}, $.mockjaxSettings, m); - if ( c.log && $.isFunction(c.log) ) { - c.log('MOCK ' + s.type.toUpperCase() + ': ' + s.url, $.extend({}, s)); - } - - var jsre = /=\?(&|$)/, jsc = (new Date()).getTime(); - - // Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here - // because there isn't an easy hook for the cross domain script tag of jsonp - if ( s.dataType === "jsonp" ) { - if ( s.type.toUpperCase() === "GET" ) { - if ( !jsre.test( s.url ) ) { - s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?"; - } - } else if ( !s.data || !jsre.test(s.data) ) { - s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?"; - } - s.dataType = "json"; - } - - // Build temporary JSONP function - if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) { - jsonp = s.jsonpCallback || ("jsonp" + jsc++); - - // Replace the =? sequence both in the query string and the data - if ( s.data ) { - s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1"); - } - - s.url = s.url.replace(jsre, "=" + jsonp + "$1"); - - // We need to make sure - // that a JSONP style response is executed properly - s.dataType = "script"; - - // Handle JSONP-style loading - window[ jsonp ] = window[ jsonp ] || function( tmp ) { - data = tmp; - success(); - complete(); - // Garbage collect - window[ jsonp ] = undefined; - - try { - delete window[ jsonp ]; - } catch(e) {} - - if ( head ) { - head.removeChild( script ); - } - }; - } - - var rurl = /^(\w+:)?\/\/([^\/?#]+)/, - parts = rurl.exec( s.url ), - remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host); - - // Test if we are going to create a script tag (if so, intercept & mock) - if ( s.dataType === "script" && s.type.toUpperCase() === "GET" && remote ) { - // Synthesize the mock request for adding a script tag - var callbackContext = origSettings && origSettings.context || s; - - function success() { - // If a local callback was specified, fire it and pass it the data - if ( s.success ) { - s.success.call( callbackContext, ( m.response ? m.response.toString() : m.responseText || ''), status, {} ); - } - - // Fire the global callback - if ( s.global ) { - trigger( "ajaxSuccess", [{}, s] ); - } - } - - function complete() { - // Process result - if ( s.complete ) { - s.complete.call( callbackContext, {} , status ); - } - - // The request was completed - if ( s.global ) { - trigger( "ajaxComplete", [{}, s] ); - } - - // Handle the global AJAX counter - if ( s.global && ! --jQuery.active ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - - function trigger(type, args) { - (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args); - } - - if ( m.response && $.isFunction(m.response) ) { - m.response(origSettings); - } else { - $.globalEval(m.responseText); - } - success(); - complete(); - return false; - } - mock = _ajax.call($, $.extend(true, {}, origSettings, { - // Mock the XHR object - xhr: function() { - // Extend with our default mockjax settings - m = $.extend({}, $.mockjaxSettings, m); - - if ( m.contentType ) { - m.headers['content-type'] = m.contentType; - } - - // Return our mock xhr object - return { - status: m.status, - readyState: 1, - open: function() { }, - send: function() { - // This is a substitute for < 1.4 which lacks $.proxy - var process = (function(that) { - return function() { - return (function() { - // The request has returned - this.status = m.status; - this.readyState = 4; - - // We have an executable function, call it to give - // the mock handler a chance to update it's data - if ( $.isFunction(m.response) ) { - m.response(origSettings); - } - // Copy over our mock to our xhr object before passing control back to - // jQuery's onreadystatechange callback - if ( s.dataType == 'json' && ( typeof m.responseText == 'object' ) ) { - this.responseText = JSON.stringify(m.responseText); - } else if ( s.dataType == 'xml' ) { - if ( typeof m.responseXML == 'string' ) { - this.responseXML = parseXML(m.responseXML); - } else { - this.responseXML = m.responseXML; - } - } else { - this.responseText = m.responseText; - } - // jQuery < 1.4 doesn't have onreadystate change for xhr - if ( $.isFunction(this.onreadystatechange) ) { - this.onreadystatechange( m.isTimeout ? 'timeout' : undefined ); - } - }).apply(that); - }; - })(this); - - if ( m.proxy ) { - // We're proxying this request and loading in an external file instead - _ajax({ - global: false, - url: m.proxy, - type: m.proxyType, - data: m.data, - dataType: s.dataType, - complete: function(xhr, txt) { - m.responseXML = xhr.responseXML; - m.responseText = xhr.responseText; - this.responseTimer = setTimeout(process, m.responseTime || 0); - } - }); - } else { - // type == 'POST' || 'GET' || 'DELETE' - if ( s.async === false ) { - // TODO: Blocking delay - process(); - } else { - this.responseTimer = setTimeout(process, m.responseTime || 50); - } - } - }, - abort: function() { - clearTimeout(this.responseTimer); - }, - setRequestHeader: function() { }, - getResponseHeader: function(header) { - // 'Last-modified', 'Etag', 'content-type' are all checked by jQuery - if ( m.headers && m.headers[header] ) { - // Return arbitrary headers - return m.headers[header]; - } else if ( header.toLowerCase() == 'last-modified' ) { - return m.lastModified || (new Date()).toString(); - } else if ( header.toLowerCase() == 'etag' ) { - return m.etag || ''; - } else if ( header.toLowerCase() == 'content-type' ) { - return m.contentType || 'text/plain'; - } - }, - getAllResponseHeaders: function() { - var headers = ''; - $.each(m.headers, function(k, v) { - headers += k + ': ' + v + "\n"; - }); - return headers; - } - }; - } - })); - return false; - } - }); - // We don't have a mock request, trigger a normal request - if ( !mock ) { - return _ajax.apply($, arguments); - } else { - return mock; - } - } - }); - - $.mockjaxSettings = { - //url: null, - //type: 'GET', - log: function(msg) { - window['console'] && window.console.log && window.console.log(msg); - }, - status: 200, - responseTime: 500, - isTimeout: false, - contentType: 'text/plain', - response: '', - responseText: '', - responseXML: '', - proxy: '', - proxyType: 'GET', - - lastModified: null, - etag: '', - headers: { - etag: 'IJF@H#@923uf8023hFO@I#H#', - 'content-type' : 'text/plain' - } - }; - - $.mockjax = function(settings) { - var i = mockHandlers.length; - mockHandlers[i] = settings; - return i; - }; - $.mockjaxClear = function(i) { - if ( arguments.length == 1 ) { - mockHandlers[i] = null; - } else { - mockHandlers = []; - } - }; -})(jQuery); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ar.js b/thirdparty/jquery-validate/localization/messages_ar.js index 6df9495f5..e609dbb69 100644 --- a/thirdparty/jquery-validate/localization/messages_ar.js +++ b/thirdparty/jquery-validate/localization/messages_ar.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: AR (Arabic; العربية) */ -(function ($) { - $.extend($.validator.messages, { - required: "هذا الحقل إلزامي", - remote: "يرجى تصحيح هذا الحقل للمتابعة", - email: "رجاء إدخال عنوان بريد إلكتروني صحيح", - url: "رجاء إدخال عنوان موقع إلكتروني صحيح", - date: "رجاء إدخال تاريخ صحيح", - dateISO: "رجاء إدخال تاريخ صحيح (ISO)", - number: "رجاء إدخال عدد بطريقة صحيحة", - digits: "رجاء إدخال أرقام فقط", - creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح", - equalTo: "رجاء إدخال نفس القيمة", - accept: "رجاء إدخال ملف بامتداد موافق عليه", - maxlength: $.validator.format("الحد الأقصى لعدد الحروف هو {0}"), - minlength: $.validator.format("الحد الأدنى لعدد الحروف هو {0}"), - rangelength: $.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"), - range: $.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"), - max: $.validator.format("رجاء إدخال عدد أقل من أو يساوي (0}"), - min: $.validator.format("رجاء إدخال عدد أكبر من أو يساوي (0}") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "هذا الحقل إلزامي", + remote: "يرجى تصحيح هذا الحقل للمتابعة", + email: "رجاء إدخال عنوان بريد إلكتروني صحيح", + url: "رجاء إدخال عنوان موقع إلكتروني صحيح", + date: "رجاء إدخال تاريخ صحيح", + dateISO: "رجاء إدخال تاريخ صحيح (ISO)", + number: "رجاء إدخال عدد بطريقة صحيحة", + digits: "رجاء إدخال أرقام فقط", + creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح", + equalTo: "رجاء إدخال نفس القيمة", + extension: "رجاء إدخال ملف بامتداد موافق عليه", + maxlength: $.validator.format("الحد الأقصى لعدد الحروف هو {0}"), + minlength: $.validator.format("الحد الأدنى لعدد الحروف هو {0}"), + rangelength: $.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"), + range: $.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"), + max: $.validator.format("رجاء إدخال عدد أقل من أو يساوي (0}"), + min: $.validator.format("رجاء إدخال عدد أكبر من أو يساوي (0}") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ar.min.js b/thirdparty/jquery-validate/localization/messages_ar.min.js new file mode 100644 index 000000000..3c72c83ae --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ar.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"هذا الحقل إلزامي",remote:"يرجى تصحيح هذا الحقل للمتابعة",email:"رجاء إدخال عنوان بريد إلكتروني صحيح",url:"رجاء إدخال عنوان موقع إلكتروني صحيح",date:"رجاء إدخال تاريخ صحيح",dateISO:"رجاء إدخال تاريخ صحيح (ISO)",number:"رجاء إدخال عدد بطريقة صحيحة",digits:"رجاء إدخال أرقام فقط",creditcard:"رجاء إدخال رقم بطاقة ائتمان صحيح",equalTo:"رجاء إدخال نفس القيمة",extension:"رجاء إدخال ملف بامتداد موافق عليه",maxlength:a.validator.format("الحد الأقصى لعدد الحروف هو {0}"),minlength:a.validator.format("الحد الأدنى لعدد الحروف هو {0}"),rangelength:a.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"),range:a.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"),max:a.validator.format("رجاء إدخال عدد أقل من أو يساوي (0}"),min:a.validator.format("رجاء إدخال عدد أكبر من أو يساوي (0}")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_bg.js b/thirdparty/jquery-validate/localization/messages_bg.js index 10ba1d322..fea21cf54 100644 --- a/thirdparty/jquery-validate/localization/messages_bg.js +++ b/thirdparty/jquery-validate/localization/messages_bg.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: BG (Bulgarian; български език) */ -(function ($) { - $.extend($.validator.messages, { - required: "Полето е задължително.", - remote: "Моля, въведете правилната стойност.", - email: "Моля, въведете валиден email.", - url: "Моля, въведете валидно URL.", - date: "Моля, въведете валидна дата.", - dateISO: "Моля, въведете валидна дата (ISO).", - number: "Моля, въведете валиден номер.", - digits: "Моля, въведете само цифри", - creditcard: "Моля, въведете валиден номер на кредитна карта.", - equalTo: "Моля, въведете същата стойност отново.", - accept: "Моля, въведете стойност с валидно разширение.", - maxlength: $.validator.format("Моля, въведете повече от {0} символа."), - minlength: $.validator.format("Моля, въведете поне {0} символа."), - rangelength: $.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."), - range: $.validator.format("Моля, въведете стойност между {0} и {1}."), - max: $.validator.format("Моля, въведете стойност по-малка или равна на {0}."), - min: $.validator.format("Моля, въведете стойност по-голяма или равна на {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Полето е задължително.", + remote: "Моля, въведете правилната стойност.", + email: "Моля, въведете валиден email.", + url: "Моля, въведете валидно URL.", + date: "Моля, въведете валидна дата.", + dateISO: "Моля, въведете валидна дата (ISO).", + number: "Моля, въведете валиден номер.", + digits: "Моля, въведете само цифри.", + creditcard: "Моля, въведете валиден номер на кредитна карта.", + equalTo: "Моля, въведете същата стойност отново.", + extension: "Моля, въведете стойност с валидно разширение.", + maxlength: $.validator.format("Моля, въведете повече от {0} символа."), + minlength: $.validator.format("Моля, въведете поне {0} символа."), + rangelength: $.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."), + range: $.validator.format("Моля, въведете стойност между {0} и {1}."), + max: $.validator.format("Моля, въведете стойност по-малка или равна на {0}."), + min: $.validator.format("Моля, въведете стойност по-голяма или равна на {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_bg.min.js b/thirdparty/jquery-validate/localization/messages_bg.min.js new file mode 100644 index 000000000..4fe3f8c44 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_bg.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Полето е задължително.",remote:"Моля, въведете правилната стойност.",email:"Моля, въведете валиден email.",url:"Моля, въведете валидно URL.",date:"Моля, въведете валидна дата.",dateISO:"Моля, въведете валидна дата (ISO).",number:"Моля, въведете валиден номер.",digits:"Моля, въведете само цифри.",creditcard:"Моля, въведете валиден номер на кредитна карта.",equalTo:"Моля, въведете същата стойност отново.",extension:"Моля, въведете стойност с валидно разширение.",maxlength:a.validator.format("Моля, въведете повече от {0} символа."),minlength:a.validator.format("Моля, въведете поне {0} символа."),rangelength:a.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."),range:a.validator.format("Моля, въведете стойност между {0} и {1}."),max:a.validator.format("Моля, въведете стойност по-малка или равна на {0}."),min:a.validator.format("Моля, въведете стойност по-голяма или равна на {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ca.js b/thirdparty/jquery-validate/localization/messages_ca.js index 940c37f54..0b308e162 100644 --- a/thirdparty/jquery-validate/localization/messages_ca.js +++ b/thirdparty/jquery-validate/localization/messages_ca.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: CA (Catalan; català) */ -(function ($) { - $.extend($.validator.messages, { - required: "Aquest camp és obligatori.", - remote: "Si us plau, omple aquest camp.", - email: "Si us plau, escriu una adreça de correu-e vàlida", - url: "Si us plau, escriu una URL vàlida.", - date: "Si us plau, escriu una data vàlida.", - dateISO: "Si us plau, escriu una data (ISO) vàlida.", - number: "Si us plau, escriu un número enter vàlid.", - digits: "Si us plau, escriu només dígits.", - creditcard: "Si us plau, escriu un número de tarjeta vàlid.", - equalTo: "Si us plau, escriu el maateix valor de nou.", - accept: "Si us plau, escriu un valor amb una extensió acceptada.", - maxlength: $.validator.format("Si us plau, no escriguis més de {0} caracters."), - minlength: $.validator.format("Si us plau, no escriguis menys de {0} caracters."), - rangelength: $.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."), - range: $.validator.format("Si us plau, escriu un valor entre {0} i {1}."), - max: $.validator.format("Si us plau, escriu un valor menor o igual a {0}."), - min: $.validator.format("Si us plau, escriu un valor major o igual a {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Aquest camp és obligatori.", + remote: "Si us plau, omple aquest camp.", + email: "Si us plau, escriu una adreça de correu-e vàlida", + url: "Si us plau, escriu una URL vàlida.", + date: "Si us plau, escriu una data vàlida.", + dateISO: "Si us plau, escriu una data (ISO) vàlida.", + number: "Si us plau, escriu un número enter vàlid.", + digits: "Si us plau, escriu només dígits.", + creditcard: "Si us plau, escriu un número de tarjeta vàlid.", + equalTo: "Si us plau, escriu el maateix valor de nou.", + extension: "Si us plau, escriu un valor amb una extensió acceptada.", + maxlength: $.validator.format("Si us plau, no escriguis més de {0} caracters."), + minlength: $.validator.format("Si us plau, no escriguis menys de {0} caracters."), + rangelength: $.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."), + range: $.validator.format("Si us plau, escriu un valor entre {0} i {1}."), + max: $.validator.format("Si us plau, escriu un valor menor o igual a {0}."), + min: $.validator.format("Si us plau, escriu un valor major o igual a {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ca.min.js b/thirdparty/jquery-validate/localization/messages_ca.min.js new file mode 100644 index 000000000..93ad96a35 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ca.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Aquest camp és obligatori.",remote:"Si us plau, omple aquest camp.",email:"Si us plau, escriu una adreça de correu-e vàlida",url:"Si us plau, escriu una URL vàlida.",date:"Si us plau, escriu una data vàlida.",dateISO:"Si us plau, escriu una data (ISO) vàlida.",number:"Si us plau, escriu un número enter vàlid.",digits:"Si us plau, escriu només dígits.",creditcard:"Si us plau, escriu un número de tarjeta vàlid.",equalTo:"Si us plau, escriu el maateix valor de nou.",extension:"Si us plau, escriu un valor amb una extensió acceptada.",maxlength:a.validator.format("Si us plau, no escriguis més de {0} caracters."),minlength:a.validator.format("Si us plau, no escriguis menys de {0} caracters."),rangelength:a.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),range:a.validator.format("Si us plau, escriu un valor entre {0} i {1}."),max:a.validator.format("Si us plau, escriu un valor menor o igual a {0}."),min:a.validator.format("Si us plau, escriu un valor major o igual a {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_cs.js b/thirdparty/jquery-validate/localization/messages_cs.js index 43cc3ad1b..6c27e2b03 100644 --- a/thirdparty/jquery-validate/localization/messages_cs.js +++ b/thirdparty/jquery-validate/localization/messages_cs.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: CS (Czech; čeština, český jazyk) */ -(function ($) { - $.extend($.validator.messages, { - required: "Tento údaj je povinný.", - remote: "Prosím, opravte tento údaj.", - email: "Prosím, zadejte platný e-mail.", - url: "Prosím, zadejte platné URL.", - date: "Prosím, zadejte platné datum.", - dateISO: "Prosím, zadejte platné datum (ISO).", - number: "Prosím, zadejte číslo.", - digits: "Prosím, zadávejte pouze číslice.", - creditcard: "Prosím, zadejte číslo kreditní karty.", - equalTo: "Prosím, zadejte znovu stejnou hodnotu.", - accept: "Prosím, zadejte soubor se správnou příponou.", - maxlength: $.validator.format("Prosím, zadejte nejvíce {0} znaků."), - minlength: $.validator.format("Prosím, zadejte nejméně {0} znaků."), - rangelength: $.validator.format("Prosím, zadejte od {0} do {1} znaků."), - range: $.validator.format("Prosím, zadejte hodnotu od {0} do {1}."), - max: $.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."), - min: $.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Tento údaj je povinný.", + remote: "Prosím, opravte tento údaj.", + email: "Prosím, zadejte platný e-mail.", + url: "Prosím, zadejte platné URL.", + date: "Prosím, zadejte platné datum.", + dateISO: "Prosím, zadejte platné datum (ISO).", + number: "Prosím, zadejte číslo.", + digits: "Prosím, zadávejte pouze číslice.", + creditcard: "Prosím, zadejte číslo kreditní karty.", + equalTo: "Prosím, zadejte znovu stejnou hodnotu.", + extension: "Prosím, zadejte soubor se správnou příponou.", + maxlength: $.validator.format("Prosím, zadejte nejvíce {0} znaků."), + minlength: $.validator.format("Prosím, zadejte nejméně {0} znaků."), + rangelength: $.validator.format("Prosím, zadejte od {0} do {1} znaků."), + range: $.validator.format("Prosím, zadejte hodnotu od {0} do {1}."), + max: $.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."), + min: $.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_cs.min.js b/thirdparty/jquery-validate/localization/messages_cs.min.js new file mode 100644 index 000000000..2c0bdc728 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_cs.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Tento údaj je povinný.",remote:"Prosím, opravte tento údaj.",email:"Prosím, zadejte platný e-mail.",url:"Prosím, zadejte platné URL.",date:"Prosím, zadejte platné datum.",dateISO:"Prosím, zadejte platné datum (ISO).",number:"Prosím, zadejte číslo.",digits:"Prosím, zadávejte pouze číslice.",creditcard:"Prosím, zadejte číslo kreditní karty.",equalTo:"Prosím, zadejte znovu stejnou hodnotu.",extension:"Prosím, zadejte soubor se správnou příponou.",maxlength:a.validator.format("Prosím, zadejte nejvíce {0} znaků."),minlength:a.validator.format("Prosím, zadejte nejméně {0} znaků."),rangelength:a.validator.format("Prosím, zadejte od {0} do {1} znaků."),range:a.validator.format("Prosím, zadejte hodnotu od {0} do {1}."),max:a.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."),min:a.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_da.js b/thirdparty/jquery-validate/localization/messages_da.js index bcceb202e..e862abad4 100644 --- a/thirdparty/jquery-validate/localization/messages_da.js +++ b/thirdparty/jquery-validate/localization/messages_da.js @@ -1,22 +1,30 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: DA (Danish; dansk) */ -(function ($) { - $.extend($.validator.messages, { - required: "Dette felt er påkrævet.", - maxlength: $.validator.format("Indtast højst {0} tegn."), - minlength: $.validator.format("Indtast mindst {0} tegn."), - rangelength: $.validator.format("Indtast mindst {0} og højst {1} tegn."), - email: "Indtast en gyldig email-adresse.", - url: "Indtast en gyldig URL.", - date: "Indtast en gyldig dato.", - number: "Indtast et tal.", - digits: "Indtast kun cifre.", - equalTo: "Indtast den samme værdi igen.", - range: $.validator.format("Angiv en værdi mellem {0} og {1}."), - max: $.validator.format("Angiv en værdi der højst er {0}."), - min: $.validator.format("Angiv en værdi der mindst er {0}."), - creditcard: "Indtast et gyldigt kreditkortnummer." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Dette felt er påkrævet.", + maxlength: $.validator.format("Indtast højst {0} tegn."), + minlength: $.validator.format("Indtast mindst {0} tegn."), + rangelength: $.validator.format("Indtast mindst {0} og højst {1} tegn."), + email: "Indtast en gyldig email-adresse.", + url: "Indtast en gyldig URL.", + date: "Indtast en gyldig dato.", + number: "Indtast et tal.", + digits: "Indtast kun cifre.", + equalTo: "Indtast den samme værdi igen.", + range: $.validator.format("Angiv en værdi mellem {0} og {1}."), + max: $.validator.format("Angiv en værdi der højst er {0}."), + min: $.validator.format("Angiv en værdi der mindst er {0}."), + creditcard: "Indtast et gyldigt kreditkortnummer." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_da.min.js b/thirdparty/jquery-validate/localization/messages_da.min.js new file mode 100644 index 000000000..eb08dfb6e --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_da.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Dette felt er påkrævet.",maxlength:a.validator.format("Indtast højst {0} tegn."),minlength:a.validator.format("Indtast mindst {0} tegn."),rangelength:a.validator.format("Indtast mindst {0} og højst {1} tegn."),email:"Indtast en gyldig email-adresse.",url:"Indtast en gyldig URL.",date:"Indtast en gyldig dato.",number:"Indtast et tal.",digits:"Indtast kun cifre.",equalTo:"Indtast den samme værdi igen.",range:a.validator.format("Angiv en værdi mellem {0} og {1}."),max:a.validator.format("Angiv en værdi der højst er {0}."),min:a.validator.format("Angiv en værdi der mindst er {0}."),creditcard:"Indtast et gyldigt kreditkortnummer."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_de.js b/thirdparty/jquery-validate/localization/messages_de.js index 073853e97..7f5bc8fe8 100644 --- a/thirdparty/jquery-validate/localization/messages_de.js +++ b/thirdparty/jquery-validate/localization/messages_de.js @@ -1,22 +1,30 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: DE (German, Deutsch) */ -(function ($) { - $.extend($.validator.messages, { - required: "Dieses Feld ist ein Pflichtfeld.", - maxlength: $.validator.format("Geben Sie bitte maximal {0} Zeichen ein."), - minlength: $.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."), - rangelength: $.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."), - email: "Geben Sie bitte eine gültige E-Mail Adresse ein.", - url: "Geben Sie bitte eine gültige URL ein.", - date: "Bitte geben Sie ein gültiges Datum ein.", - number: "Geben Sie bitte eine Nummer ein.", - digits: "Geben Sie bitte nur Ziffern ein.", - equalTo: "Bitte denselben Wert wiederholen.", - range: $.validator.format("Geben Sie bitte einen Wert zwischen {0} und {1} ein."), - max: $.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."), - min: $.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."), - creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Dieses Feld ist ein Pflichtfeld.", + maxlength: $.validator.format("Geben Sie bitte maximal {0} Zeichen ein."), + minlength: $.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."), + rangelength: $.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."), + email: "Geben Sie bitte eine gültige E-Mail Adresse ein.", + url: "Geben Sie bitte eine gültige URL ein.", + date: "Bitte geben Sie ein gültiges Datum ein.", + number: "Geben Sie bitte eine Nummer ein.", + digits: "Geben Sie bitte nur Ziffern ein.", + equalTo: "Bitte denselben Wert wiederholen.", + range: $.validator.format("Geben Sie bitte einen Wert zwischen {0} und {1} ein."), + max: $.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."), + min: $.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."), + creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_de.min.js b/thirdparty/jquery-validate/localization/messages_de.min.js new file mode 100644 index 000000000..5b7026895 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_de.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Dieses Feld ist ein Pflichtfeld.",maxlength:a.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),minlength:a.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),rangelength:a.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),email:"Geben Sie bitte eine gültige E-Mail Adresse ein.",url:"Geben Sie bitte eine gültige URL ein.",date:"Bitte geben Sie ein gültiges Datum ein.",number:"Geben Sie bitte eine Nummer ein.",digits:"Geben Sie bitte nur Ziffern ein.",equalTo:"Bitte denselben Wert wiederholen.",range:a.validator.format("Geben Sie bitte einen Wert zwischen {0} und {1} ein."),max:a.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),min:a.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),creditcard:"Geben Sie bitte eine gültige Kreditkarten-Nummer ein."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_el.js b/thirdparty/jquery-validate/localization/messages_el.js index 6cd5a1de4..5758f56fa 100644 --- a/thirdparty/jquery-validate/localization/messages_el.js +++ b/thirdparty/jquery-validate/localization/messages_el.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: EL (Greek; ελληνικά) */ -(function ($) { - $.extend($.validator.messages, { - required: "Αυτό το πεδίο είναι υποχρεωτικό.", - remote: "Παρακαλώ διορθώστε αυτό το πεδίο.", - email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.", - url: "Παρακαλώ εισάγετε ένα έγκυρο URL.", - date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.", - dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).", - number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.", - digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.", - creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.", - equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.", - accept: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.", - maxlength: $.validator.format("Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες."), - minlength: $.validator.format("Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες."), - rangelength: $.validator.format("Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων."), - range: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}."), - max: $.validator.format("Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}."), - min: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Αυτό το πεδίο είναι υποχρεωτικό.", + remote: "Παρακαλώ διορθώστε αυτό το πεδίο.", + email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.", + url: "Παρακαλώ εισάγετε ένα έγκυρο URL.", + date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.", + dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).", + number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.", + digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.", + creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.", + equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.", + extension: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.", + maxlength: $.validator.format("Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες."), + minlength: $.validator.format("Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες."), + rangelength: $.validator.format("Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων."), + range: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}."), + max: $.validator.format("Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}."), + min: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_el.min.js b/thirdparty/jquery-validate/localization/messages_el.min.js new file mode 100644 index 000000000..d3b05fd6b --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_el.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Αυτό το πεδίο είναι υποχρεωτικό.",remote:"Παρακαλώ διορθώστε αυτό το πεδίο.",email:"Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",url:"Παρακαλώ εισάγετε ένα έγκυρο URL.",date:"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",dateISO:"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",number:"Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",digits:"Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",creditcard:"Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",equalTo:"Παρακαλώ εισάγετε την ίδια τιμή ξανά.",extension:"Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",maxlength:a.validator.format("Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες."),minlength:a.validator.format("Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες."),rangelength:a.validator.format("Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων."),range:a.validator.format("Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}."),max:a.validator.format("Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}."),min:a.validator.format("Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_es.js b/thirdparty/jquery-validate/localization/messages_es.js index 3a30eee8f..bf37c17a0 100644 --- a/thirdparty/jquery-validate/localization/messages_es.js +++ b/thirdparty/jquery-validate/localization/messages_es.js @@ -1,25 +1,36 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: ES (Spanish; Español) */ -(function ($) { - $.extend($.validator.messages, { - required: "Este campo es obligatorio.", - remote: "Por favor, rellena este campo.", - email: "Por favor, escribe una dirección de correo válida", - url: "Por favor, escribe una URL válida.", - date: "Por favor, escribe una fecha válida.", - dateISO: "Por favor, escribe una fecha (ISO) válida.", - number: "Por favor, escribe un número entero válido.", - digits: "Por favor, escribe sólo dígitos.", - creditcard: "Por favor, escribe un número de tarjeta válido.", - equalTo: "Por favor, escribe el mismo valor de nuevo.", - accept: "Por favor, escribe un valor con una extensión aceptada.", - maxlength: $.validator.format("Por favor, no escribas más de {0} caracteres."), - minlength: $.validator.format("Por favor, no escribas menos de {0} caracteres."), - rangelength: $.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."), - range: $.validator.format("Por favor, escribe un valor entre {0} y {1}."), - max: $.validator.format("Por favor, escribe un valor menor o igual a {0}."), - min: $.validator.format("Por favor, escribe un valor mayor o igual a {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Este campo es obligatorio.", + remote: "Por favor, rellena este campo.", + email: "Por favor, escribe una dirección de correo válida.", + url: "Por favor, escribe una URL válida.", + date: "Por favor, escribe una fecha válida.", + dateISO: "Por favor, escribe una fecha (ISO) válida.", + number: "Por favor, escribe un número válido.", + digits: "Por favor, escribe sólo dígitos.", + creditcard: "Por favor, escribe un número de tarjeta válido.", + equalTo: "Por favor, escribe el mismo valor de nuevo.", + extension: "Por favor, escribe un valor con una extensión aceptada.", + maxlength: $.validator.format("Por favor, no escribas más de {0} caracteres."), + minlength: $.validator.format("Por favor, no escribas menos de {0} caracteres."), + rangelength: $.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."), + range: $.validator.format("Por favor, escribe un valor entre {0} y {1}."), + max: $.validator.format("Por favor, escribe un valor menor o igual a {0}."), + min: $.validator.format("Por favor, escribe un valor mayor o igual a {0}."), + nifES: "Por favor, escribe un NIF válido.", + nieES: "Por favor, escribe un NIE válido.", + cifES: "Por favor, escribe un CIF válido." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_es.min.js b/thirdparty/jquery-validate/localization/messages_es.min.js new file mode 100644 index 000000000..99d07fac7 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_es.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Este campo es obligatorio.",remote:"Por favor, rellena este campo.",email:"Por favor, escribe una dirección de correo válida.",url:"Por favor, escribe una URL válida.",date:"Por favor, escribe una fecha válida.",dateISO:"Por favor, escribe una fecha (ISO) válida.",number:"Por favor, escribe un número válido.",digits:"Por favor, escribe sólo dígitos.",creditcard:"Por favor, escribe un número de tarjeta válido.",equalTo:"Por favor, escribe el mismo valor de nuevo.",extension:"Por favor, escribe un valor con una extensión aceptada.",maxlength:a.validator.format("Por favor, no escribas más de {0} caracteres."),minlength:a.validator.format("Por favor, no escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),range:a.validator.format("Por favor, escribe un valor entre {0} y {1}."),max:a.validator.format("Por favor, escribe un valor menor o igual a {0}."),min:a.validator.format("Por favor, escribe un valor mayor o igual a {0}."),nifES:"Por favor, escribe un NIF válido.",nieES:"Por favor, escribe un NIE válido.",cifES:"Por favor, escribe un CIF válido."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_es_AR.js b/thirdparty/jquery-validate/localization/messages_es_AR.js new file mode 100644 index 000000000..c7279e47d --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_es_AR.js @@ -0,0 +1,37 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: ES (Spanish; Español) + * Region: AR (Argentina) + */ +$.extend($.validator.messages, { + required: "Este campo es obligatorio.", + remote: "Por favor, completá este campo.", + email: "Por favor, escribí una dirección de correo válida.", + url: "Por favor, escribí una URL válida.", + date: "Por favor, escribí una fecha válida.", + dateISO: "Por favor, escribí una fecha (ISO) válida.", + number: "Por favor, escribí un número entero válido.", + digits: "Por favor, escribí sólo dígitos.", + creditcard: "Por favor, escribí un número de tarjeta válido.", + equalTo: "Por favor, escribí el mismo valor de nuevo.", + extension: "Por favor, escribí un valor con una extensión aceptada.", + maxlength: $.validator.format("Por favor, no escribas más de {0} caracteres."), + minlength: $.validator.format("Por favor, no escribas menos de {0} caracteres."), + rangelength: $.validator.format("Por favor, escribí un valor entre {0} y {1} caracteres."), + range: $.validator.format("Por favor, escribí un valor entre {0} y {1}."), + max: $.validator.format("Por favor, escribí un valor menor o igual a {0}."), + min: $.validator.format("Por favor, escribí un valor mayor o igual a {0}."), + nifES: "Por favor, escribí un NIF válido.", + nieES: "Por favor, escribí un NIE válido.", + cifES: "Por favor, escribí un CIF válido." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_es_AR.min.js b/thirdparty/jquery-validate/localization/messages_es_AR.min.js new file mode 100644 index 000000000..e13bf5c2e --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_es_AR.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Este campo es obligatorio.",remote:"Por favor, completá este campo.",email:"Por favor, escribí una dirección de correo válida.",url:"Por favor, escribí una URL válida.",date:"Por favor, escribí una fecha válida.",dateISO:"Por favor, escribí una fecha (ISO) válida.",number:"Por favor, escribí un número entero válido.",digits:"Por favor, escribí sólo dígitos.",creditcard:"Por favor, escribí un número de tarjeta válido.",equalTo:"Por favor, escribí el mismo valor de nuevo.",extension:"Por favor, escribí un valor con una extensión aceptada.",maxlength:a.validator.format("Por favor, no escribas más de {0} caracteres."),minlength:a.validator.format("Por favor, no escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribí un valor entre {0} y {1} caracteres."),range:a.validator.format("Por favor, escribí un valor entre {0} y {1}."),max:a.validator.format("Por favor, escribí un valor menor o igual a {0}."),min:a.validator.format("Por favor, escribí un valor mayor o igual a {0}."),nifES:"Por favor, escribí un NIF válido.",nieES:"Por favor, escribí un NIE válido.",cifES:"Por favor, escribí un CIF válido."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_et.js b/thirdparty/jquery-validate/localization/messages_et.js index aaa26777f..0dd93cd2e 100644 --- a/thirdparty/jquery-validate/localization/messages_et.js +++ b/thirdparty/jquery-validate/localization/messages_et.js @@ -1,23 +1,31 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: ET (Estonian; eesti, eesti keel) */ -(function ($) { - $.extend($.validator.messages, { - required: "See väli peab olema täidetud.", - maxlength: $.validator.format("Palun sisestage vähem kui {0} tähemärki."), - minlength: $.validator.format("Palun sisestage vähemalt {0} tähemärki."), - rangelength: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki."), - email: "Palun sisestage korrektne e-maili aadress.", - url: "Palun sisestage korrektne URL.", - date: "Palun sisestage korrektne kuupäev.", - dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).", - number: "Palun sisestage korrektne number.", - digits: "Palun sisestage ainult numbreid.", - equalTo: "Palun sisestage sama väärtus uuesti.", - range: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1}."), - max: $.validator.format("Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}."), - min: $.validator.format("Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}."), - creditcard: "Palun sisestage korrektne krediitkaardi number." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "See väli peab olema täidetud.", + maxlength: $.validator.format("Palun sisestage vähem kui {0} tähemärki."), + minlength: $.validator.format("Palun sisestage vähemalt {0} tähemärki."), + rangelength: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki."), + email: "Palun sisestage korrektne e-maili aadress.", + url: "Palun sisestage korrektne URL.", + date: "Palun sisestage korrektne kuupäev.", + dateISO: "Palun sisestage korrektne kuupäev (YYYY-MM-DD).", + number: "Palun sisestage korrektne number.", + digits: "Palun sisestage ainult numbreid.", + equalTo: "Palun sisestage sama väärtus uuesti.", + range: $.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1}."), + max: $.validator.format("Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}."), + min: $.validator.format("Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}."), + creditcard: "Palun sisestage korrektne krediitkaardi number." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_et.min.js b/thirdparty/jquery-validate/localization/messages_et.min.js new file mode 100644 index 000000000..6657a5547 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_et.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"See väli peab olema täidetud.",maxlength:a.validator.format("Palun sisestage vähem kui {0} tähemärki."),minlength:a.validator.format("Palun sisestage vähemalt {0} tähemärki."),rangelength:a.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki."),email:"Palun sisestage korrektne e-maili aadress.",url:"Palun sisestage korrektne URL.",date:"Palun sisestage korrektne kuupäev.",dateISO:"Palun sisestage korrektne kuupäev (YYYY-MM-DD).",number:"Palun sisestage korrektne number.",digits:"Palun sisestage ainult numbreid.",equalTo:"Palun sisestage sama väärtus uuesti.",range:a.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1}."),max:a.validator.format("Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}."),min:a.validator.format("Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}."),creditcard:"Palun sisestage korrektne krediitkaardi number."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_eu.js b/thirdparty/jquery-validate/localization/messages_eu.js index 8f02f1b22..a9b07773e 100644 --- a/thirdparty/jquery-validate/localization/messages_eu.js +++ b/thirdparty/jquery-validate/localization/messages_eu.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: EU (Basque; euskara, euskera) */ -(function ($) { - $.extend($.validator.messages, { - required: "Eremu hau beharrezkoa da.", - remote: "Mesedez, bete eremu hau.", - email: "Mesedez, idatzi baliozko posta helbide bat.", - url: "Mesedez, idatzi baliozko URL bat.", - date: "Mesedez, idatzi baliozko data bat.", - dateISO: "Mesedez, idatzi baliozko (ISO) data bat.", - number: "Mesedez, idatzi baliozko zenbaki oso bat.", - digits: "Mesedez, idatzi digituak soilik.", - creditcard: "Mesedez, idatzi baliozko txartel zenbaki bat.", - equalTo: "Mesedez, idatzi berdina berriro ere.", - accept: "Mesedez, idatzi onartutako luzapena duen balio bat.", - maxlength: $.validator.format("Mesedez, ez idatzi {0} karaktere baino gehiago."), - minlength: $.validator.format("Mesedez, ez idatzi {0} karaktere baino gutxiago."), - rangelength: $.validator.format("Mesedez, idatzi {0} eta {1} karaktere arteko balio bat."), - range: $.validator.format("Mesedez, idatzi {0} eta {1} arteko balio bat."), - max: $.validator.format("Mesedez, idatzi {0} edo txikiagoa den balio bat."), - min: $.validator.format("Mesedez, idatzi {0} edo handiagoa den balio bat.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Eremu hau beharrezkoa da.", + remote: "Mesedez, bete eremu hau.", + email: "Mesedez, idatzi baliozko posta helbide bat.", + url: "Mesedez, idatzi baliozko URL bat.", + date: "Mesedez, idatzi baliozko data bat.", + dateISO: "Mesedez, idatzi baliozko (ISO) data bat.", + number: "Mesedez, idatzi baliozko zenbaki oso bat.", + digits: "Mesedez, idatzi digituak soilik.", + creditcard: "Mesedez, idatzi baliozko txartel zenbaki bat.", + equalTo: "Mesedez, idatzi berdina berriro ere.", + extension: "Mesedez, idatzi onartutako luzapena duen balio bat.", + maxlength: $.validator.format("Mesedez, ez idatzi {0} karaktere baino gehiago."), + minlength: $.validator.format("Mesedez, ez idatzi {0} karaktere baino gutxiago."), + rangelength: $.validator.format("Mesedez, idatzi {0} eta {1} karaktere arteko balio bat."), + range: $.validator.format("Mesedez, idatzi {0} eta {1} arteko balio bat."), + max: $.validator.format("Mesedez, idatzi {0} edo txikiagoa den balio bat."), + min: $.validator.format("Mesedez, idatzi {0} edo handiagoa den balio bat.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_eu.min.js b/thirdparty/jquery-validate/localization/messages_eu.min.js new file mode 100644 index 000000000..1d580066c --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_eu.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Eremu hau beharrezkoa da.",remote:"Mesedez, bete eremu hau.",email:"Mesedez, idatzi baliozko posta helbide bat.",url:"Mesedez, idatzi baliozko URL bat.",date:"Mesedez, idatzi baliozko data bat.",dateISO:"Mesedez, idatzi baliozko (ISO) data bat.",number:"Mesedez, idatzi baliozko zenbaki oso bat.",digits:"Mesedez, idatzi digituak soilik.",creditcard:"Mesedez, idatzi baliozko txartel zenbaki bat.",equalTo:"Mesedez, idatzi berdina berriro ere.",extension:"Mesedez, idatzi onartutako luzapena duen balio bat.",maxlength:a.validator.format("Mesedez, ez idatzi {0} karaktere baino gehiago."),minlength:a.validator.format("Mesedez, ez idatzi {0} karaktere baino gutxiago."),rangelength:a.validator.format("Mesedez, idatzi {0} eta {1} karaktere arteko balio bat."),range:a.validator.format("Mesedez, idatzi {0} eta {1} arteko balio bat."),max:a.validator.format("Mesedez, idatzi {0} edo txikiagoa den balio bat."),min:a.validator.format("Mesedez, idatzi {0} edo handiagoa den balio bat.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_fa.js b/thirdparty/jquery-validate/localization/messages_fa.js index 38163525c..eb7d33673 100644 --- a/thirdparty/jquery-validate/localization/messages_fa.js +++ b/thirdparty/jquery-validate/localization/messages_fa.js @@ -1,25 +1,36 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: FA (Persian; فارسی) */ -(function ($) { - $.extend($.validator.messages, { - required: "تکمیل این فیلد اجباری است.", - remote: "لطفا این فیلد را تصحیح کنید.", - email: ".لطفا یک ایمیل صحیح وارد کنید", - url: "لطفا آدرس صحیح وارد کنید.", - date: "لطفا یک تاریخ صحیح وارد کنید", - dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).", - number: "لطفا عدد صحیح وارد کنید.", - digits: "لطفا تنها رقم وارد کنید", - creditcard: "لطفا کریدیت کارت صحیح وارد کنید.", - equalTo: "لطفا مقدار برابری وارد کنید", - accept: "لطفا مقداری وارد کنید که ", - maxlength: $.validator.format("لطفا بیشتر از {0} حرف وارد نکنید."), - minlength: $.validator.format("لطفا کمتر از {0} حرف وارد نکنید."), - rangelength: $.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."), - range: $.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."), - max: $.validator.format("لطفا مقداری کمتر از {0} حرف وارد کنید."), - min: $.validator.format("لطفا مقداری بیشتر از {0} حرف وارد کنید.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "تکمیل این فیلد اجباری است.", + remote: "لطفا این فیلد را تصحیح کنید.", + email: ".لطفا یک ایمیل صحیح وارد کنید", + url: "لطفا آدرس صحیح وارد کنید.", + date: "لطفا یک تاریخ صحیح وارد کنید", + dateFA: "لطفا یک تاریخ صحیح وارد کنید", + dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).", + number: "لطفا عدد صحیح وارد کنید.", + digits: "لطفا تنها رقم وارد کنید", + creditcard: "لطفا کریدیت کارت صحیح وارد کنید.", + equalTo: "لطفا مقدار برابری وارد کنید", + extension: "لطفا مقداری وارد کنید که ", + maxlength: $.validator.format("لطفا بیشتر از {0} حرف وارد نکنید."), + minlength: $.validator.format("لطفا کمتر از {0} حرف وارد نکنید."), + rangelength: $.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."), + range: $.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."), + max: $.validator.format("لطفا مقداری کمتر از {0} حرف وارد کنید."), + min: $.validator.format("لطفا مقداری بیشتر از {0} حرف وارد کنید."), + minWords: $.validator.format("لطفا حداقل {0} کلمه وارد کنید."), + maxWords: $.validator.format("لطفا حداکثر {0} کلمه وارد کنید.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_fa.min.js b/thirdparty/jquery-validate/localization/messages_fa.min.js new file mode 100644 index 000000000..23fba9256 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_fa.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"تکمیل این فیلد اجباری است.",remote:"لطفا این فیلد را تصحیح کنید.",email:".لطفا یک ایمیل صحیح وارد کنید",url:"لطفا آدرس صحیح وارد کنید.",date:"لطفا یک تاریخ صحیح وارد کنید",dateFA:"لطفا یک تاریخ صحیح وارد کنید",dateISO:"لطفا تاریخ صحیح وارد کنید (ISO).",number:"لطفا عدد صحیح وارد کنید.",digits:"لطفا تنها رقم وارد کنید",creditcard:"لطفا کریدیت کارت صحیح وارد کنید.",equalTo:"لطفا مقدار برابری وارد کنید",extension:"لطفا مقداری وارد کنید که ",maxlength:a.validator.format("لطفا بیشتر از {0} حرف وارد نکنید."),minlength:a.validator.format("لطفا کمتر از {0} حرف وارد نکنید."),rangelength:a.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),range:a.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),max:a.validator.format("لطفا مقداری کمتر از {0} حرف وارد کنید."),min:a.validator.format("لطفا مقداری بیشتر از {0} حرف وارد کنید."),minWords:a.validator.format("لطفا حداقل {0} کلمه وارد کنید."),maxWords:a.validator.format("لطفا حداکثر {0} کلمه وارد کنید.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_fi.js b/thirdparty/jquery-validate/localization/messages_fi.js index a1fc03c5b..14861286e 100644 --- a/thirdparty/jquery-validate/localization/messages_fi.js +++ b/thirdparty/jquery-validate/localization/messages_fi.js @@ -1,23 +1,31 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: FI (Finnish; suomi, suomen kieli) */ -(function ($) { - $.extend($.validator.messages, { - required: "Tämä kenttä on pakollinen.", - email: "Syötä oikea sähköpostiosoite.", - url: "Syötä oikea URL osoite.", - date: "Syötä oike päivämäärä.", - dateISO: "Syötä oike päivämäärä (VVVV-MM-DD).", - number: "Syötä numero.", - creditcard: "Syötä voimassa oleva luottokorttinumero.", - digits: "Syötä pelkästään numeroita.", - equalTo: "Syötä sama arvo uudestaan.", - maxlength: $.validator.format("Voit syöttää enintään {0} merkkiä."), - minlength: $.validator.format("Vähintään {0} merkkiä."), - rangelength: $.validator.format("Syötä vähintään {0} ja enintään {1} merkkiä."), - range: $.validator.format("Syötä arvo {0} ja {1} väliltä."), - max: $.validator.format("Syötä arvo joka on pienempi tai yhtä suuri kuin {0}."), - min: $.validator.format("Syötä arvo joka on yhtä suuri tai suurempi kuin {0}.") - }); -}(jQuery)); +$.extend($.validator.messages, { + required: "Tämä kenttä on pakollinen.", + email: "Syötä oikea sähköpostiosoite.", + url: "Syötä oikea URL osoite.", + date: "Syötä oike päivämäärä.", + dateISO: "Syötä oike päivämäärä (VVVV-MM-DD).", + number: "Syötä numero.", + creditcard: "Syötä voimassa oleva luottokorttinumero.", + digits: "Syötä pelkästään numeroita.", + equalTo: "Syötä sama arvo uudestaan.", + maxlength: $.validator.format("Voit syöttää enintään {0} merkkiä."), + minlength: $.validator.format("Vähintään {0} merkkiä."), + rangelength: $.validator.format("Syötä vähintään {0} ja enintään {1} merkkiä."), + range: $.validator.format("Syötä arvo {0} ja {1} väliltä."), + max: $.validator.format("Syötä arvo joka on pienempi tai yhtä suuri kuin {0}."), + min: $.validator.format("Syötä arvo joka on yhtä suuri tai suurempi kuin {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_fi.min.js b/thirdparty/jquery-validate/localization/messages_fi.min.js new file mode 100644 index 000000000..e8a372a43 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_fi.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Tämä kenttä on pakollinen.",email:"Syötä oikea sähköpostiosoite.",url:"Syötä oikea URL osoite.",date:"Syötä oike päivämäärä.",dateISO:"Syötä oike päivämäärä (VVVV-MM-DD).",number:"Syötä numero.",creditcard:"Syötä voimassa oleva luottokorttinumero.",digits:"Syötä pelkästään numeroita.",equalTo:"Syötä sama arvo uudestaan.",maxlength:a.validator.format("Voit syöttää enintään {0} merkkiä."),minlength:a.validator.format("Vähintään {0} merkkiä."),rangelength:a.validator.format("Syötä vähintään {0} ja enintään {1} merkkiä."),range:a.validator.format("Syötä arvo {0} ja {1} väliltä."),max:a.validator.format("Syötä arvo joka on pienempi tai yhtä suuri kuin {0}."),min:a.validator.format("Syötä arvo joka on yhtä suuri tai suurempi kuin {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_fr.js b/thirdparty/jquery-validate/localization/messages_fr.js index c976ff460..4091a0119 100644 --- a/thirdparty/jquery-validate/localization/messages_fr.js +++ b/thirdparty/jquery-validate/localization/messages_fr.js @@ -1,47 +1,59 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: FR (French; français) */ -(function ($) { - $.extend($.validator.messages, { - required: "Ce champ est obligatoire.", - remote: "Veuillez corriger ce champ.", - email: "Veuillez fournir une adresse électronique valide.", - url: "Veuillez fournir une adresse URL valide.", - date: "Veuillez fournir une date valide.", - dateISO: "Veuillez fournir une date valide (ISO).", - number: "Veuillez fournir un numéro valide.", - digits: "Veuillez fournir seulement des chiffres.", - creditcard: "Veuillez fournir un numéro de carte de crédit valide.", - equalTo: "Veuillez fournir encore la même valeur.", - accept: "Veuillez fournir une valeur avec une extension valide.", - maxlength: $.validator.format("Veuillez fournir au plus {0} caractères."), - minlength: $.validator.format("Veuillez fournir au moins {0} caractères."), - rangelength: $.validator.format("Veuillez fournir une valeur qui contient entre {0} et {1} caractères."), - range: $.validator.format("Veuillez fournir une valeur entre {0} et {1}."), - max: $.validator.format("Veuillez fournir une valeur inférieur ou égal à {0}."), - min: $.validator.format("Veuillez fournir une valeur supérieur ou égal à {0}."), - maxWords: $.validator.format("Veuillez fournir au plus {0} mots."), - minWords: $.validator.format("Veuillez fournir au moins {0} mots."), - rangeWords: $.validator.format("Veuillez fournir entre {0} et {1} mots."), - letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.", - alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages", - lettersonly: "Veuillez fournir seulement des lettres.", - nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.", - ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.", - integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.", - vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).", - dateITA: "Veuillez fournir une date valide.", - time: "Veuillez fournir une heure valide entre 00:00 et 23:59.", - phoneUS: "Veuillez fournir un numéro de téléphone valide.", - phoneUK: "Veuillez fournir un numéro de téléphone valide.", - mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.", - strippedminlength: $.validator.format("Veuillez fournir au moins {0} caractères."), - email2: "Veuillez fournir une adresse électronique valide.", - url2: "Veuillez fournir une adresse URL valide.", - creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.", - ipv4: "Veuillez fournir une adresse IP v4 valide.", - ipv6: "Veuillez fournir une adresse IP v6 valide.", - require_from_group: "Veuillez fournir au moins {0} de ces champs." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Ce champ est obligatoire.", + remote: "Veuillez corriger ce champ.", + email: "Veuillez fournir une adresse électronique valide.", + url: "Veuillez fournir une adresse URL valide.", + date: "Veuillez fournir une date valide.", + dateISO: "Veuillez fournir une date valide (ISO).", + number: "Veuillez fournir un numéro valide.", + digits: "Veuillez fournir seulement des chiffres.", + creditcard: "Veuillez fournir un numéro de carte de crédit valide.", + equalTo: "Veuillez fournir encore la même valeur.", + extension: "Veuillez fournir une valeur avec une extension valide.", + maxlength: $.validator.format("Veuillez fournir au plus {0} caractères."), + minlength: $.validator.format("Veuillez fournir au moins {0} caractères."), + rangelength: $.validator.format("Veuillez fournir une valeur qui contient entre {0} et {1} caractères."), + range: $.validator.format("Veuillez fournir une valeur entre {0} et {1}."), + max: $.validator.format("Veuillez fournir une valeur inférieure ou égale à {0}."), + min: $.validator.format("Veuillez fournir une valeur supérieure ou égale à {0}."), + maxWords: $.validator.format("Veuillez fournir au plus {0} mots."), + minWords: $.validator.format("Veuillez fournir au moins {0} mots."), + rangeWords: $.validator.format("Veuillez fournir entre {0} et {1} mots."), + letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.", + alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages.", + lettersonly: "Veuillez fournir seulement des lettres.", + nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.", + ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.", + integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.", + vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).", + dateITA: "Veuillez fournir une date valide.", + time: "Veuillez fournir une heure valide entre 00:00 et 23:59.", + phoneUS: "Veuillez fournir un numéro de téléphone valide.", + phoneUK: "Veuillez fournir un numéro de téléphone valide.", + mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.", + strippedminlength: $.validator.format("Veuillez fournir au moins {0} caractères."), + email2: "Veuillez fournir une adresse électronique valide.", + url2: "Veuillez fournir une adresse URL valide.", + creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.", + ipv4: "Veuillez fournir une adresse IP v4 valide.", + ipv6: "Veuillez fournir une adresse IP v6 valide.", + require_from_group: "Veuillez fournir au moins {0} de ces champs.", + nifES: "Veuillez fournir un numéro NIF valide.", + nieES: "Veuillez fournir un numéro NIE valide.", + cifES: "Veuillez fournir un numéro CIF valide.", + postalCodeCA: "Veuillez fournir un code postal valide.", +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_fr.min.js b/thirdparty/jquery-validate/localization/messages_fr.min.js new file mode 100644 index 000000000..a7c4ad6c7 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_fr.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Ce champ est obligatoire.",remote:"Veuillez corriger ce champ.",email:"Veuillez fournir une adresse électronique valide.",url:"Veuillez fournir une adresse URL valide.",date:"Veuillez fournir une date valide.",dateISO:"Veuillez fournir une date valide (ISO).",number:"Veuillez fournir un numéro valide.",digits:"Veuillez fournir seulement des chiffres.",creditcard:"Veuillez fournir un numéro de carte de crédit valide.",equalTo:"Veuillez fournir encore la même valeur.",extension:"Veuillez fournir une valeur avec une extension valide.",maxlength:a.validator.format("Veuillez fournir au plus {0} caractères."),minlength:a.validator.format("Veuillez fournir au moins {0} caractères."),rangelength:a.validator.format("Veuillez fournir une valeur qui contient entre {0} et {1} caractères."),range:a.validator.format("Veuillez fournir une valeur entre {0} et {1}."),max:a.validator.format("Veuillez fournir une valeur inférieure ou égale à {0}."),min:a.validator.format("Veuillez fournir une valeur supérieure ou égale à {0}."),maxWords:a.validator.format("Veuillez fournir au plus {0} mots."),minWords:a.validator.format("Veuillez fournir au moins {0} mots."),rangeWords:a.validator.format("Veuillez fournir entre {0} et {1} mots."),letterswithbasicpunc:"Veuillez fournir seulement des lettres et des signes de ponctuation.",alphanumeric:"Veuillez fournir seulement des lettres, nombres, espaces et soulignages.",lettersonly:"Veuillez fournir seulement des lettres.",nowhitespace:"Veuillez ne pas inscrire d'espaces blancs.",ziprange:"Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",integer:"Veuillez fournir un nombre non décimal qui est positif ou négatif.",vinUS:"Veuillez fournir un numéro d'identification du véhicule (VIN).",dateITA:"Veuillez fournir une date valide.",time:"Veuillez fournir une heure valide entre 00:00 et 23:59.",phoneUS:"Veuillez fournir un numéro de téléphone valide.",phoneUK:"Veuillez fournir un numéro de téléphone valide.",mobileUK:"Veuillez fournir un numéro de téléphone mobile valide.",strippedminlength:a.validator.format("Veuillez fournir au moins {0} caractères."),email2:"Veuillez fournir une adresse électronique valide.",url2:"Veuillez fournir une adresse URL valide.",creditcardtypes:"Veuillez fournir un numéro de carte de crédit valide.",ipv4:"Veuillez fournir une adresse IP v4 valide.",ipv6:"Veuillez fournir une adresse IP v6 valide.",require_from_group:"Veuillez fournir au moins {0} de ces champs.",nifES:"Veuillez fournir un numéro NIF valide.",nieES:"Veuillez fournir un numéro NIE valide.",cifES:"Veuillez fournir un numéro CIF valide.",postalCodeCA:"Veuillez fournir un code postal valide."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_gl.js b/thirdparty/jquery-validate/localization/messages_gl.js new file mode 100644 index 000000000..a36f6090a --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_gl.js @@ -0,0 +1,38 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: GL (Galician; Galego) + */ +(function($) { + $.extend($.validator.messages, { + required: "Este campo é obrigatorio.", + remote: "Por favor, cubre este campo.", + email: "Por favor, escribe unha dirección de correo válida.", + url: "Por favor, escribe unha URL válida.", + date: "Por favor, escribe unha data válida.", + dateISO: "Por favor, escribe unha data (ISO) válida.", + number: "Por favor, escribe un número válido.", + digits: "Por favor, escribe só díxitos.", + creditcard: "Por favor, escribe un número de tarxeta válido.", + equalTo: "Por favor, escribe o mesmo valor de novo.", + extension: "Por favor, escribe un valor cunha extensión aceptada.", + maxlength: $.validator.format("Por favor, non escribas máis de {0} caracteres."), + minlength: $.validator.format("Por favor, non escribas menos de {0} caracteres."), + rangelength: $.validator.format("Por favor, escribe un valor entre {0} e {1} caracteres."), + range: $.validator.format("Por favor, escribe un valor entre {0} e {1}."), + max: $.validator.format("Por favor, escribe un valor menor ou igual a {0}."), + min: $.validator.format("Por favor, escribe un valor maior ou igual a {0}."), + nifES: "Por favor, escribe un NIF válido.", + nieES: "Por favor, escribe un NIE válido.", + cifES: "Por favor, escribe un CIF válido." + }); +}(jQuery)); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_gl.min.js b/thirdparty/jquery-validate/localization/messages_gl.min.js new file mode 100644 index 000000000..abdb95450 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_gl.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(){!function(a){a.extend(a.validator.messages,{required:"Este campo é obrigatorio.",remote:"Por favor, cubre este campo.",email:"Por favor, escribe unha dirección de correo válida.",url:"Por favor, escribe unha URL válida.",date:"Por favor, escribe unha data válida.",dateISO:"Por favor, escribe unha data (ISO) válida.",number:"Por favor, escribe un número válido.",digits:"Por favor, escribe só díxitos.",creditcard:"Por favor, escribe un número de tarxeta válido.",equalTo:"Por favor, escribe o mesmo valor de novo.",extension:"Por favor, escribe un valor cunha extensión aceptada.",maxlength:a.validator.format("Por favor, non escribas máis de {0} caracteres."),minlength:a.validator.format("Por favor, non escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribe un valor entre {0} e {1} caracteres."),range:a.validator.format("Por favor, escribe un valor entre {0} e {1}."),max:a.validator.format("Por favor, escribe un valor menor ou igual a {0}."),min:a.validator.format("Por favor, escribe un valor maior ou igual a {0}."),nifES:"Por favor, escribe un NIF válido.",nieES:"Por favor, escribe un NIE válido.",cifES:"Por favor, escribe un CIF válido."})}(jQuery)}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_he.js b/thirdparty/jquery-validate/localization/messages_he.js index 373feee7f..b50beb0e8 100644 --- a/thirdparty/jquery-validate/localization/messages_he.js +++ b/thirdparty/jquery-validate/localization/messages_he.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: HE (Hebrew; עברית) */ -(function ($) { - $.extend($.validator.messages, { - required: "השדה הזה הינו שדה חובה", - remote: "נא לתקן שדה זה", - email: "נא למלא כתובת דוא\"ל חוקית", - url: "נא למלא כתובת אינטרנט חוקית", - date: "נא למלא תאריך חוקי", - dateISO: "נא למלא תאריך חוקי (ISO)", - number: "נא למלא מספר", - digits: "נא למלא רק מספרים", - creditcard: "נא למלא מספר כרטיס אשראי חוקי", - equalTo: "נא למלא את אותו ערך שוב", - accept: "נא למלא ערך עם סיומת חוקית", - maxlength: $.validator.format(".נא לא למלא יותר מ- {0} תווים"), - minlength: $.validator.format("נא למלא לפחות {0} תווים"), - rangelength: $.validator.format("נא למלא ערך בין {0} ל- {1} תווים"), - range: $.validator.format("נא למלא ערך בין {0} ל- {1}"), - max: $.validator.format("נא למלא ערך קטן או שווה ל- {0}"), - min: $.validator.format("נא למלא ערך גדול או שווה ל- {0}") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "השדה הזה הינו שדה חובה", + remote: "נא לתקן שדה זה", + email: "נא למלא כתובת דוא\"ל חוקית", + url: "נא למלא כתובת אינטרנט חוקית", + date: "נא למלא תאריך חוקי", + dateISO: "נא למלא תאריך חוקי (ISO)", + number: "נא למלא מספר", + digits: "נא למלא רק מספרים", + creditcard: "נא למלא מספר כרטיס אשראי חוקי", + equalTo: "נא למלא את אותו ערך שוב", + extension: "נא למלא ערך עם סיומת חוקית", + maxlength: $.validator.format(".נא לא למלא יותר מ- {0} תווים"), + minlength: $.validator.format("נא למלא לפחות {0} תווים"), + rangelength: $.validator.format("נא למלא ערך בין {0} ל- {1} תווים"), + range: $.validator.format("נא למלא ערך בין {0} ל- {1}"), + max: $.validator.format("נא למלא ערך קטן או שווה ל- {0}"), + min: $.validator.format("נא למלא ערך גדול או שווה ל- {0}") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_he.min.js b/thirdparty/jquery-validate/localization/messages_he.min.js new file mode 100644 index 000000000..fffab7d69 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_he.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"השדה הזה הינו שדה חובה",remote:"נא לתקן שדה זה",email:'נא למלא כתובת דוא"ל חוקית',url:"נא למלא כתובת אינטרנט חוקית",date:"נא למלא תאריך חוקי",dateISO:"נא למלא תאריך חוקי (ISO)",number:"נא למלא מספר",digits:"נא למלא רק מספרים",creditcard:"נא למלא מספר כרטיס אשראי חוקי",equalTo:"נא למלא את אותו ערך שוב",extension:"נא למלא ערך עם סיומת חוקית",maxlength:a.validator.format(".נא לא למלא יותר מ- {0} תווים"),minlength:a.validator.format("נא למלא לפחות {0} תווים"),rangelength:a.validator.format("נא למלא ערך בין {0} ל- {1} תווים"),range:a.validator.format("נא למלא ערך בין {0} ל- {1}"),max:a.validator.format("נא למלא ערך קטן או שווה ל- {0}"),min:a.validator.format("נא למלא ערך גדול או שווה ל- {0}")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_hr.js b/thirdparty/jquery-validate/localization/messages_hr.js old mode 100755 new mode 100644 index 895ae2dca..792ac4481 --- a/thirdparty/jquery-validate/localization/messages_hr.js +++ b/thirdparty/jquery-validate/localization/messages_hr.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: HR (Croatia; hrvatski jezik) */ -(function ($) { - $.extend($.validator.messages, { - required: "Ovo polje je obavezno.", - remote: "Ovo polje treba popraviti.", - email: "Unesite ispravnu e-mail adresu.", - url: "Unesite ispravan URL.", - date: "Unesite ispravan datum.", - dateISO: "Unesite ispravan datum (ISO).", - number: "Unesite ispravan broj.", - digits: "Unesite samo brojeve.", - creditcard: "Unesite ispravan broj kreditne kartice.", - equalTo: "Unesite ponovo istu vrijednost.", - accept: "Unesite vrijednost sa ispravnom ekstenzijom.", - maxlength: $.validator.format("Maksimalni broj znakova je {0} ."), - minlength: $.validator.format("Minimalni broj znakova je {0} ."), - rangelength: $.validator.format("Unesite vrijednost između {0} i {1} znakova."), - range: $.validator.format("Unesite vrijednost između {0} i {1}."), - max: $.validator.format("Unesite vrijednost manju ili jednaku {0}."), - min: $.validator.format("Unesite vrijednost veću ili jednaku {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Ovo polje je obavezno.", + remote: "Ovo polje treba popraviti.", + email: "Unesite ispravnu e-mail adresu.", + url: "Unesite ispravan URL.", + date: "Unesite ispravan datum.", + dateISO: "Unesite ispravan datum (ISO).", + number: "Unesite ispravan broj.", + digits: "Unesite samo brojeve.", + creditcard: "Unesite ispravan broj kreditne kartice.", + equalTo: "Unesite ponovo istu vrijednost.", + extension: "Unesite vrijednost sa ispravnom ekstenzijom.", + maxlength: $.validator.format("Maksimalni broj znakova je {0} ."), + minlength: $.validator.format("Minimalni broj znakova je {0} ."), + rangelength: $.validator.format("Unesite vrijednost između {0} i {1} znakova."), + range: $.validator.format("Unesite vrijednost između {0} i {1}."), + max: $.validator.format("Unesite vrijednost manju ili jednaku {0}."), + min: $.validator.format("Unesite vrijednost veću ili jednaku {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_hr.min.js b/thirdparty/jquery-validate/localization/messages_hr.min.js new file mode 100644 index 000000000..7e937e603 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_hr.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Ovo polje je obavezno.",remote:"Ovo polje treba popraviti.",email:"Unesite ispravnu e-mail adresu.",url:"Unesite ispravan URL.",date:"Unesite ispravan datum.",dateISO:"Unesite ispravan datum (ISO).",number:"Unesite ispravan broj.",digits:"Unesite samo brojeve.",creditcard:"Unesite ispravan broj kreditne kartice.",equalTo:"Unesite ponovo istu vrijednost.",extension:"Unesite vrijednost sa ispravnom ekstenzijom.",maxlength:a.validator.format("Maksimalni broj znakova je {0} ."),minlength:a.validator.format("Minimalni broj znakova je {0} ."),rangelength:a.validator.format("Unesite vrijednost između {0} i {1} znakova."),range:a.validator.format("Unesite vrijednost između {0} i {1}."),max:a.validator.format("Unesite vrijednost manju ili jednaku {0}."),min:a.validator.format("Unesite vrijednost veću ili jednaku {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_hu.js b/thirdparty/jquery-validate/localization/messages_hu.js index cd73fc3ee..735bc3b68 100644 --- a/thirdparty/jquery-validate/localization/messages_hu.js +++ b/thirdparty/jquery-validate/localization/messages_hu.js @@ -1,24 +1,32 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: HU (Hungarian; Magyar) */ -(function ($) { - $.extend($.validator.messages, { - required: "Kötelező megadni.", - maxlength: $.validator.format("Legfeljebb {0} karakter hosszú legyen."), - minlength: $.validator.format("Legalább {0} karakter hosszú legyen."), - rangelength: $.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."), - email: "Érvényes e-mail címnek kell lennie.", - url: "Érvényes URL-nek kell lennie.", - date: "Dátumnak kell lennie.", - number: "Számnak kell lennie.", - digits: "Csak számjegyek lehetnek.", - equalTo: "Meg kell egyeznie a két értéknek.", - range: $.validator.format("{0} és {1} közé kell esnie."), - max: $.validator.format("Nem lehet nagyobb, mint {0}."), - min: $.validator.format("Nem lehet kisebb, mint {0}."), - creditcard: "Érvényes hitelkártyaszámnak kell lennie.", - remote: "Kérem javítsa ki ezt a mezőt.", - dateISO: "Kérem írjon be egy érvényes dátumot (ISO)." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Kötelező megadni.", + maxlength: $.validator.format("Legfeljebb {0} karakter hosszú legyen."), + minlength: $.validator.format("Legalább {0} karakter hosszú legyen."), + rangelength: $.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."), + email: "Érvényes e-mail címnek kell lennie.", + url: "Érvényes URL-nek kell lennie.", + date: "Dátumnak kell lennie.", + number: "Számnak kell lennie.", + digits: "Csak számjegyek lehetnek.", + equalTo: "Meg kell egyeznie a két értéknek.", + range: $.validator.format("{0} és {1} közé kell esnie."), + max: $.validator.format("Nem lehet nagyobb, mint {0}."), + min: $.validator.format("Nem lehet kisebb, mint {0}."), + creditcard: "Érvényes hitelkártyaszámnak kell lennie.", + remote: "Kérem javítsa ki ezt a mezőt.", + dateISO: "Kérem írjon be egy érvényes dátumot (ISO)." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_hu.min.js b/thirdparty/jquery-validate/localization/messages_hu.min.js new file mode 100644 index 000000000..05f05f357 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_hu.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Kötelező megadni.",maxlength:a.validator.format("Legfeljebb {0} karakter hosszú legyen."),minlength:a.validator.format("Legalább {0} karakter hosszú legyen."),rangelength:a.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."),email:"Érvényes e-mail címnek kell lennie.",url:"Érvényes URL-nek kell lennie.",date:"Dátumnak kell lennie.",number:"Számnak kell lennie.",digits:"Csak számjegyek lehetnek.",equalTo:"Meg kell egyeznie a két értéknek.",range:a.validator.format("{0} és {1} közé kell esnie."),max:a.validator.format("Nem lehet nagyobb, mint {0}."),min:a.validator.format("Nem lehet kisebb, mint {0}."),creditcard:"Érvényes hitelkártyaszámnak kell lennie.",remote:"Kérem javítsa ki ezt a mezőt.",dateISO:"Kérem írjon be egy érvényes dátumot (ISO)."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_id.js b/thirdparty/jquery-validate/localization/messages_id.js new file mode 100644 index 000000000..48f7b9ada --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_id.js @@ -0,0 +1,32 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: ID (Indonesia; Indonesian) + */ +$.extend($.validator.messages, { + required: "Kolom ini diperlukan.", + remote: "Harap benarkan kolom ini.", + email: "Silakan masukkan format email yang benar.", + url: "Silakan masukkan format URL yang benar.", + date: "Silakan masukkan format tanggal yang benar.", + dateISO: "Silakan masukkan format tanggal(ISO) yang benar.", + number: "Silakan masukkan angka yang benar.", + digits: "Harap masukan angka saja.", + creditcard: "Harap masukkan format kartu kredit yang benar.", + equalTo: "Harap masukkan nilai yg sama dengan sebelumnya.", + maxlength: $.validator.format("Input dibatasi hanya {0} karakter."), + minlength: $.validator.format("Input tidak kurang dari {0} karakter."), + rangelength: $.validator.format("Panjang karakter yg diizinkan antara {0} dan {1} karakter."), + range: $.validator.format("Harap masukkan nilai antara {0} dan {1}."), + max: $.validator.format("Harap masukkan nilai lebih kecil atau sama dengan {0}."), + min: $.validator.format("Harap masukkan nilai lebih besar atau sama dengan {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_id.min.js b/thirdparty/jquery-validate/localization/messages_id.min.js new file mode 100644 index 000000000..96a0aa79f --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_id.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Kolom ini diperlukan.",remote:"Harap benarkan kolom ini.",email:"Silakan masukkan format email yang benar.",url:"Silakan masukkan format URL yang benar.",date:"Silakan masukkan format tanggal yang benar.",dateISO:"Silakan masukkan format tanggal(ISO) yang benar.",number:"Silakan masukkan angka yang benar.",digits:"Harap masukan angka saja.",creditcard:"Harap masukkan format kartu kredit yang benar.",equalTo:"Harap masukkan nilai yg sama dengan sebelumnya.",maxlength:a.validator.format("Input dibatasi hanya {0} karakter."),minlength:a.validator.format("Input tidak kurang dari {0} karakter."),rangelength:a.validator.format("Panjang karakter yg diizinkan antara {0} dan {1} karakter."),range:a.validator.format("Harap masukkan nilai antara {0} dan {1}."),max:a.validator.format("Harap masukkan nilai lebih kecil atau sama dengan {0}."),min:a.validator.format("Harap masukkan nilai lebih besar atau sama dengan {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_is.js b/thirdparty/jquery-validate/localization/messages_is.js new file mode 100644 index 000000000..00948d4f3 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_is.js @@ -0,0 +1,31 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: IS (Icelandic; íslenska) + */ +$.extend($.validator.messages, { + required: "Þessi reitur er nauðsynlegur.", + remote: "Lagaðu þennan reit.", + maxlength: $.validator.format("Sláðu inn mest {0} stafi."), + minlength: $.validator.format("Sláðu inn minnst {0} stafi."), + rangelength: $.validator.format("Sláðu inn minnst {0} og mest {1} stafi."), + email: "Sláðu inn gilt netfang.", + url: "Sláðu inn gilda vefslóð.", + date: "Sláðu inn gilda dagsetningu.", + number: "Sláðu inn tölu.", + digits: "Sláðu inn tölustafi eingöngu.", + equalTo: "Sláðu sama gildi inn aftur.", + range: $.validator.format("Sláðu inn gildi milli {0} og {1}."), + max: $.validator.format("Sláðu inn gildi sem er minna en eða jafnt og {0}."), + min: $.validator.format("Sláðu inn gildi sem er stærra en eða jafnt og {0}."), + creditcard: "Sláðu inn gilt greiðslukortanúmer." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_is.min.js b/thirdparty/jquery-validate/localization/messages_is.min.js new file mode 100644 index 000000000..b6b8e0df4 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_is.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Þessi reitur er nauðsynlegur.",remote:"Lagaðu þennan reit.",maxlength:a.validator.format("Sláðu inn mest {0} stafi."),minlength:a.validator.format("Sláðu inn minnst {0} stafi."),rangelength:a.validator.format("Sláðu inn minnst {0} og mest {1} stafi."),email:"Sláðu inn gilt netfang.",url:"Sláðu inn gilda vefslóð.",date:"Sláðu inn gilda dagsetningu.",number:"Sláðu inn tölu.",digits:"Sláðu inn tölustafi eingöngu.",equalTo:"Sláðu sama gildi inn aftur.",range:a.validator.format("Sláðu inn gildi milli {0} og {1}."),max:a.validator.format("Sláðu inn gildi sem er minna en eða jafnt og {0}."),min:a.validator.format("Sláðu inn gildi sem er stærra en eða jafnt og {0}."),creditcard:"Sláðu inn gilt greiðslukortanúmer."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_it.js b/thirdparty/jquery-validate/localization/messages_it.js index 19323b0f5..7fbee3b29 100644 --- a/thirdparty/jquery-validate/localization/messages_it.js +++ b/thirdparty/jquery-validate/localization/messages_it.js @@ -1,25 +1,36 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: IT (Italian; Italiano) */ -(function ($) { - $.extend($.validator.messages, { - required: "Campo obbligatorio.", - remote: "Controlla questo campo.", - email: "Inserisci un indirizzo email valido.", - url: "Inserisci un indirizzo web valido.", - date: "Inserisci una data valida.", - dateISO: "Inserisci una data valida (ISO).", - number: "Inserisci un numero valido.", - digits: "Inserisci solo numeri.", - creditcard: "Inserisci un numero di carta di credito valido.", - equalTo: "Il valore non corrisponde.", - accept: "Inserisci un valore con un'estensione valida.", - maxlength: $.validator.format("Non inserire più di {0} caratteri."), - minlength: $.validator.format("Inserisci almeno {0} caratteri."), - rangelength: $.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."), - range: $.validator.format("Inserisci un valore compreso tra {0} e {1}."), - max: $.validator.format("Inserisci un valore minore o uguale a {0}."), - min: $.validator.format("Inserisci un valore maggiore o uguale a {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Campo obbligatorio.", + remote: "Controlla questo campo.", + email: "Inserisci un indirizzo email valido.", + url: "Inserisci un indirizzo web valido.", + date: "Inserisci una data valida.", + dateISO: "Inserisci una data valida (ISO).", + number: "Inserisci un numero valido.", + digits: "Inserisci solo numeri.", + creditcard: "Inserisci un numero di carta di credito valido.", + equalTo: "Il valore non corrisponde.", + extension: "Inserisci un valore con un'estensione valida.", + maxlength: $.validator.format("Non inserire più di {0} caratteri."), + minlength: $.validator.format("Inserisci almeno {0} caratteri."), + rangelength: $.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."), + range: $.validator.format("Inserisci un valore compreso tra {0} e {1}."), + max: $.validator.format("Inserisci un valore minore o uguale a {0}."), + min: $.validator.format("Inserisci un valore maggiore o uguale a {0}."), + nifES: "Inserisci un NIF valido.", + nieES: "Inserisci un NIE valido.", + cifES: "Inserisci un CIF valido." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_it.min.js b/thirdparty/jquery-validate/localization/messages_it.min.js new file mode 100644 index 000000000..0668d83f4 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_it.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Campo obbligatorio.",remote:"Controlla questo campo.",email:"Inserisci un indirizzo email valido.",url:"Inserisci un indirizzo web valido.",date:"Inserisci una data valida.",dateISO:"Inserisci una data valida (ISO).",number:"Inserisci un numero valido.",digits:"Inserisci solo numeri.",creditcard:"Inserisci un numero di carta di credito valido.",equalTo:"Il valore non corrisponde.",extension:"Inserisci un valore con un'estensione valida.",maxlength:a.validator.format("Non inserire più di {0} caratteri."),minlength:a.validator.format("Inserisci almeno {0} caratteri."),rangelength:a.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."),range:a.validator.format("Inserisci un valore compreso tra {0} e {1}."),max:a.validator.format("Inserisci un valore minore o uguale a {0}."),min:a.validator.format("Inserisci un valore maggiore o uguale a {0}."),nifES:"Inserisci un NIF valido.",nieES:"Inserisci un NIE valido.",cifES:"Inserisci un CIF valido."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ja.js b/thirdparty/jquery-validate/localization/messages_ja.js index cb060c9c1..3eed43d35 100644 --- a/thirdparty/jquery-validate/localization/messages_ja.js +++ b/thirdparty/jquery-validate/localization/messages_ja.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: JA (Japanese; 日本語) */ -(function ($) { - $.extend($.validator.messages, { - required: "このフィールドは必須です。", - remote: "このフィールドを修正してください。", - email: "有効なEメールアドレスを入力してください。", - url: "有効なURLを入力してください。", - date: "有効な日付を入力してください。", - dateISO: "有効な日付(ISO)を入力してください。", - number: "有効な数字を入力してください。", - digits: "数字のみを入力してください。", - creditcard: "有効なクレジットカード番号を入力してください。", - equalTo: "同じ値をもう一度入力してください。", - accept: "有効な拡張子を含む値を入力してください。", - maxlength: $.format("{0} 文字以内で入力してください。"), - minlength: $.format("{0} 文字以上で入力してください。"), - rangelength: $.format("{0} 文字から {1} 文字までの値を入力してください。"), - range: $.format("{0} から {1} までの値を入力してください。"), - max: $.format("{0} 以下の値を入力してください。"), - min: $.format("{0} 以上の値を入力してください。") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "このフィールドは必須です。", + remote: "このフィールドを修正してください。", + email: "有効なEメールアドレスを入力してください。", + url: "有効なURLを入力してください。", + date: "有効な日付を入力してください。", + dateISO: "有効な日付(ISO)を入力してください。", + number: "有効な数字を入力してください。", + digits: "数字のみを入力してください。", + creditcard: "有効なクレジットカード番号を入力してください。", + equalTo: "同じ値をもう一度入力してください。", + extension: "有効な拡張子を含む値を入力してください。", + maxlength: $.validator.format("{0} 文字以内で入力してください。"), + minlength: $.validator.format("{0} 文字以上で入力してください。"), + rangelength: $.validator.format("{0} 文字から {1} 文字までの値を入力してください。"), + range: $.validator.format("{0} から {1} までの値を入力してください。"), + max: $.validator.format("{0} 以下の値を入力してください。"), + min: $.validator.format("{0} 以上の値を入力してください。") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ja.min.js b/thirdparty/jquery-validate/localization/messages_ja.min.js new file mode 100644 index 000000000..33bdad815 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ja.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"このフィールドは必須です。",remote:"このフィールドを修正してください。",email:"有効なEメールアドレスを入力してください。",url:"有効なURLを入力してください。",date:"有効な日付を入力してください。",dateISO:"有効な日付(ISO)を入力してください。",number:"有効な数字を入力してください。",digits:"数字のみを入力してください。",creditcard:"有効なクレジットカード番号を入力してください。",equalTo:"同じ値をもう一度入力してください。",extension:"有効な拡張子を含む値を入力してください。",maxlength:a.validator.format("{0} 文字以内で入力してください。"),minlength:a.validator.format("{0} 文字以上で入力してください。"),rangelength:a.validator.format("{0} 文字から {1} 文字までの値を入力してください。"),range:a.validator.format("{0} から {1} までの値を入力してください。"),max:a.validator.format("{0} 以下の値を入力してください。"),min:a.validator.format("{0} 以上の値を入力してください。")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ka.js b/thirdparty/jquery-validate/localization/messages_ka.js index 319363e4d..494ec9183 100644 --- a/thirdparty/jquery-validate/localization/messages_ka.js +++ b/thirdparty/jquery-validate/localization/messages_ka.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: KA (Georgian; ქართული) */ -(function ($) { - $.extend($.validator.messages, { - required: "ამ ველის შევსება აუცილებელია.", - remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.", - email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.", - url: "გთხოვთ მიუთითოთ კორექტული URL.", - date: "გთხოვთ მიუთითოთ კორექტული თარიღი.", - dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.", - number: "გთხოვთ მიუთითოთ ციფრი.", - digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.", - creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.", - equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.", - accept: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.", - maxlength: $.validator.format("დასაშვებია არაუმეტეს {0} სიმბოლო."), - minlength: $.validator.format("აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო."), - rangelength: $.validator.format("ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე."), - range: $.validator.format("გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე."), - max: $.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს."), - min: $.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "ამ ველის შევსება აუცილებელია.", + remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.", + email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.", + url: "გთხოვთ მიუთითოთ კორექტული URL.", + date: "გთხოვთ მიუთითოთ კორექტული თარიღი.", + dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.", + number: "გთხოვთ მიუთითოთ ციფრი.", + digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.", + creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.", + equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.", + extension: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.", + maxlength: $.validator.format("დასაშვებია არაუმეტეს {0} სიმბოლო."), + minlength: $.validator.format("აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო."), + rangelength: $.validator.format("ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე."), + range: $.validator.format("გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე."), + max: $.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს."), + min: $.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ka.min.js b/thirdparty/jquery-validate/localization/messages_ka.min.js new file mode 100644 index 000000000..3161f14ce --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ka.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"ამ ველის შევსება აუცილებელია.",remote:"გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",email:"გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",url:"გთხოვთ მიუთითოთ კორექტული URL.",date:"გთხოვთ მიუთითოთ კორექტული თარიღი.",dateISO:"გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",number:"გთხოვთ მიუთითოთ ციფრი.",digits:"გთხოვთ მიუთითოთ მხოლოდ ციფრები.",creditcard:"გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",equalTo:"გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",extension:"გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",maxlength:a.validator.format("დასაშვებია არაუმეტეს {0} სიმბოლო."),minlength:a.validator.format("აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო."),rangelength:a.validator.format("ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე."),range:a.validator.format("გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე."),max:a.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს."),min:a.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_kk.js b/thirdparty/jquery-validate/localization/messages_kk.js index dd9276fb5..17c8b83ab 100644 --- a/thirdparty/jquery-validate/localization/messages_kk.js +++ b/thirdparty/jquery-validate/localization/messages_kk.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: KK (Kazakh; қазақ тілі) */ -(function ($) { - $.extend($.validator.messages, { - required: "Бұл өрісті міндетті түрде толтырыңыз.", - remote: "Дұрыс мағына енгізуіңізді сұраймыз.", - email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.", - url: "Нақты URL-ды енгізуіңізді сұраймыз.", - date: "Нақты URL-ды енгізуіңізді сұраймыз.", - dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.", - number: "Күнді енгізуіңізді сұраймыз.", - digits: "Тек қана сандарды енгізуіңізді сұраймыз.", - creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.", - equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.", - accept: "Файлдың кеңейтуін дұрыс таңдаңыз.", - maxlength: $.format("Ұзындығы {0} символдан көр болмасын."), - minlength: $.format("Ұзындығы {0} символдан аз болмасын."), - rangelength: $.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз."), - range: $.format("Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз."), - max: $.format("{0} аз немесе тең санын енгізуіңіді сұраймыз."), - min: $.format("{0} көп немесе тең санын енгізуіңізді сұраймыз.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Бұл өрісті міндетті түрде толтырыңыз.", + remote: "Дұрыс мағына енгізуіңізді сұраймыз.", + email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.", + url: "Нақты URL-ды енгізуіңізді сұраймыз.", + date: "Нақты URL-ды енгізуіңізді сұраймыз.", + dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.", + number: "Күнді енгізуіңізді сұраймыз.", + digits: "Тек қана сандарды енгізуіңізді сұраймыз.", + creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.", + equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.", + extension: "Файлдың кеңейтуін дұрыс таңдаңыз.", + maxlength: $.validator.format("Ұзындығы {0} символдан көр болмасын."), + minlength: $.validator.format("Ұзындығы {0} символдан аз болмасын."), + rangelength: $.validator.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз."), + range: $.validator.format("Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз."), + max: $.validator.format("{0} аз немесе тең санын енгізуіңіді сұраймыз."), + min: $.validator.format("{0} көп немесе тең санын енгізуіңізді сұраймыз.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_kk.min.js b/thirdparty/jquery-validate/localization/messages_kk.min.js new file mode 100644 index 000000000..47d7f4e4c --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_kk.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Бұл өрісті міндетті түрде толтырыңыз.",remote:"Дұрыс мағына енгізуіңізді сұраймыз.",email:"Нақты электронды поштаңызды енгізуіңізді сұраймыз.",url:"Нақты URL-ды енгізуіңізді сұраймыз.",date:"Нақты URL-ды енгізуіңізді сұраймыз.",dateISO:"Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",number:"Күнді енгізуіңізді сұраймыз.",digits:"Тек қана сандарды енгізуіңізді сұраймыз.",creditcard:"Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",equalTo:"Осы мәнді қайта енгізуіңізді сұраймыз.",extension:"Файлдың кеңейтуін дұрыс таңдаңыз.",maxlength:a.validator.format("Ұзындығы {0} символдан көр болмасын."),minlength:a.validator.format("Ұзындығы {0} символдан аз болмасын."),rangelength:a.validator.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз."),range:a.validator.format("Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз."),max:a.validator.format("{0} аз немесе тең санын енгізуіңіді сұраймыз."),min:a.validator.format("{0} көп немесе тең санын енгізуіңізді сұраймыз.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ko.js b/thirdparty/jquery-validate/localization/messages_ko.js new file mode 100644 index 000000000..f6b535591 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ko.js @@ -0,0 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: KO (Korean; 한국어) + */ +$.extend($.validator.messages, { + required: "필수 항목입니다.", + remote: "항목을 수정하세요.", + email: "유효하지 않은 E-Mail주소입니다.", + url: "유효하지 않은 URL입니다.", + date: "올바른 날짜를 입력하세요.", + dateISO: "올바른 날짜(ISO)를 입력하세요.", + number: "유효한 숫자가 아닙니다.", + digits: "숫자만 입력 가능합니다.", + creditcard: "신용카드 번호가 바르지 않습니다.", + equalTo: "같은 값을 다시 입력하세요.", + extension: "올바른 확장자가 아닙니다.", + maxlength: $.validator.format("{0}자를 넘을 수 없습니다. "), + minlength: $.validator.format("{0}자 이상 입력하세요."), + rangelength: $.validator.format("문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요."), + range: $.validator.format("{0} 에서 {1} 사이의 값을 입력하세요."), + max: $.validator.format("{0} 이하의 값을 입력하세요."), + min: $.validator.format("{0} 이상의 값을 입력하세요.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ko.min.js b/thirdparty/jquery-validate/localization/messages_ko.min.js new file mode 100644 index 000000000..bffef8b2f --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ko.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"필수 항목입니다.",remote:"항목을 수정하세요.",email:"유효하지 않은 E-Mail주소입니다.",url:"유효하지 않은 URL입니다.",date:"올바른 날짜를 입력하세요.",dateISO:"올바른 날짜(ISO)를 입력하세요.",number:"유효한 숫자가 아닙니다.",digits:"숫자만 입력 가능합니다.",creditcard:"신용카드 번호가 바르지 않습니다.",equalTo:"같은 값을 다시 입력하세요.",extension:"올바른 확장자가 아닙니다.",maxlength:a.validator.format("{0}자를 넘을 수 없습니다. "),minlength:a.validator.format("{0}자 이상 입력하세요."),rangelength:a.validator.format("문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요."),range:a.validator.format("{0} 에서 {1} 사이의 값을 입력하세요."),max:a.validator.format("{0} 이하의 값을 입력하세요."),min:a.validator.format("{0} 이상의 값을 입력하세요.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_lt.js b/thirdparty/jquery-validate/localization/messages_lt.js index 856aaeb8b..df17a1ed3 100644 --- a/thirdparty/jquery-validate/localization/messages_lt.js +++ b/thirdparty/jquery-validate/localization/messages_lt.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: LT (Lithuanian; lietuvių kalba) */ -(function ($) { - $.extend($.validator.messages, { - required: "Šis laukas yra privalomas.", - remote: "Prašau pataisyti šį lauką.", - email: "Prašau įvesti teisingą elektroninio pašto adresą.", - url: "Prašau įvesti teisingą URL.", - date: "Prašau įvesti teisingą datą.", - dateISO: "Prašau įvesti teisingą datą (ISO).", - number: "Prašau įvesti teisingą skaičių.", - digits: "Prašau naudoti tik skaitmenis.", - creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.", - equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.", - accept: "Prašau įvesti reikšmę su teisingu plėtiniu.", - maxlength: $.format("Prašau įvesti ne daugiau kaip {0} simbolių."), - minlength: $.format("Prašau įvesti bent {0} simbolius."), - rangelength: $.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."), - range: $.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."), - max: $.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."), - min: $.format("Prašau įvesti reikšmę didesnę arba lygią {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Šis laukas yra privalomas.", + remote: "Prašau pataisyti šį lauką.", + email: "Prašau įvesti teisingą elektroninio pašto adresą.", + url: "Prašau įvesti teisingą URL.", + date: "Prašau įvesti teisingą datą.", + dateISO: "Prašau įvesti teisingą datą (ISO).", + number: "Prašau įvesti teisingą skaičių.", + digits: "Prašau naudoti tik skaitmenis.", + creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.", + equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.", + extension: "Prašau įvesti reikšmę su teisingu plėtiniu.", + maxlength: $.validator.format("Prašau įvesti ne daugiau kaip {0} simbolių."), + minlength: $.validator.format("Prašau įvesti bent {0} simbolius."), + rangelength: $.validator.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."), + range: $.validator.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."), + max: $.validator.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."), + min: $.validator.format("Prašau įvesti reikšmę didesnę arba lygią {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_lt.min.js b/thirdparty/jquery-validate/localization/messages_lt.min.js new file mode 100644 index 000000000..1cb76cbfa --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_lt.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Šis laukas yra privalomas.",remote:"Prašau pataisyti šį lauką.",email:"Prašau įvesti teisingą elektroninio pašto adresą.",url:"Prašau įvesti teisingą URL.",date:"Prašau įvesti teisingą datą.",dateISO:"Prašau įvesti teisingą datą (ISO).",number:"Prašau įvesti teisingą skaičių.",digits:"Prašau naudoti tik skaitmenis.",creditcard:"Prašau įvesti teisingą kreditinės kortelės numerį.",equalTo:"Prašau įvestį tą pačią reikšmę dar kartą.",extension:"Prašau įvesti reikšmę su teisingu plėtiniu.",maxlength:a.validator.format("Prašau įvesti ne daugiau kaip {0} simbolių."),minlength:a.validator.format("Prašau įvesti bent {0} simbolius."),rangelength:a.validator.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."),range:a.validator.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."),max:a.validator.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."),min:a.validator.format("Prašau įvesti reikšmę didesnę arba lygią {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_lv.js b/thirdparty/jquery-validate/localization/messages_lv.js index 959a9759c..ade1b88f0 100644 --- a/thirdparty/jquery-validate/localization/messages_lv.js +++ b/thirdparty/jquery-validate/localization/messages_lv.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: LV (Latvian; latviešu valoda) */ -(function ($) { - $.extend($.validator.messages, { - required: "Šis lauks ir obligāts.", - remote: "Lūdzu, pārbaudiet šo lauku.", - email: "Lūdzu, ievadiet derīgu e-pasta adresi.", - url: "Lūdzu, ievadiet derīgu URL adresi.", - date: "Lūdzu, ievadiet derīgu datumu.", - dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).", - number: "Lūdzu, ievadiet derīgu numuru.", - digits: "Lūdzu, ievadiet tikai ciparus.", - creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.", - equalTo: "Lūdzu, ievadiet to pašu vēlreiz.", - accept: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.", - maxlength: $.validator.format("Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes."), - minlength: $.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."), - rangelength: $.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."), - range: $.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."), - max: $.validator.format("Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}."), - min: $.validator.format("Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Šis lauks ir obligāts.", + remote: "Lūdzu, pārbaudiet šo lauku.", + email: "Lūdzu, ievadiet derīgu e-pasta adresi.", + url: "Lūdzu, ievadiet derīgu URL adresi.", + date: "Lūdzu, ievadiet derīgu datumu.", + dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).", + number: "Lūdzu, ievadiet derīgu numuru.", + digits: "Lūdzu, ievadiet tikai ciparus.", + creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.", + equalTo: "Lūdzu, ievadiet to pašu vēlreiz.", + extension: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.", + maxlength: $.validator.format("Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes."), + minlength: $.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."), + rangelength: $.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."), + range: $.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."), + max: $.validator.format("Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}."), + min: $.validator.format("Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_lv.min.js b/thirdparty/jquery-validate/localization/messages_lv.min.js new file mode 100644 index 000000000..9e2c83d44 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_lv.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Šis lauks ir obligāts.",remote:"Lūdzu, pārbaudiet šo lauku.",email:"Lūdzu, ievadiet derīgu e-pasta adresi.",url:"Lūdzu, ievadiet derīgu URL adresi.",date:"Lūdzu, ievadiet derīgu datumu.",dateISO:"Lūdzu, ievadiet derīgu datumu (ISO).",number:"Lūdzu, ievadiet derīgu numuru.",digits:"Lūdzu, ievadiet tikai ciparus.",creditcard:"Lūdzu, ievadiet derīgu kredītkartes numuru.",equalTo:"Lūdzu, ievadiet to pašu vēlreiz.",extension:"Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",maxlength:a.validator.format("Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes."),minlength:a.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."),rangelength:a.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."),range:a.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."),max:a.validator.format("Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}."),min:a.validator.format("Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_my.js b/thirdparty/jquery-validate/localization/messages_my.js index 95fe7270f..9de974abb 100644 --- a/thirdparty/jquery-validate/localization/messages_my.js +++ b/thirdparty/jquery-validate/localization/messages_my.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: MY (Malay; Melayu) */ -(function ($) { - $.extend($.validator.messages, { - required: "Medan ini diperlukan.", - remote: "Sila betulkan medan ini.", - email: "Sila masukkan alamat emel yang betul.", - url: "Sila masukkan URL yang betul.", - date: "Sila masukkan tarikh yang betul.", - dateISO: "Sila masukkan tarikh(ISO) yang betul.", - number: "Sila masukkan nombor yang betul.", - digits: "Sila masukkan nilai digit sahaja.", - creditcard: "Sila masukkan nombor kredit kad yang betul.", - equalTo: "Sila masukkan nilai yang sama semula.", - accept: "Sila masukkan nilai yang telah diterima.", - maxlength: $.validator.format("Sila masukkan nilai tidak lebih dari {0} aksara."), - minlength: $.validator.format("Sila masukkan nilai sekurang-kurangnya {0} aksara."), - rangelength: $.validator.format("Sila masukkan panjang nilai antara {0} dan {1} aksara."), - range: $.validator.format("Sila masukkan nilai antara {0} dan {1} aksara."), - max: $.validator.format("Sila masukkan nilai yang kurang atau sama dengan {0}."), - min: $.validator.format("Sila masukkan nilai yang lebih atau sama dengan {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Medan ini diperlukan.", + remote: "Sila betulkan medan ini.", + email: "Sila masukkan alamat emel yang betul.", + url: "Sila masukkan URL yang betul.", + date: "Sila masukkan tarikh yang betul.", + dateISO: "Sila masukkan tarikh(ISO) yang betul.", + number: "Sila masukkan nombor yang betul.", + digits: "Sila masukkan nilai digit sahaja.", + creditcard: "Sila masukkan nombor kredit kad yang betul.", + equalTo: "Sila masukkan nilai yang sama semula.", + extension: "Sila masukkan nilai yang telah diterima.", + maxlength: $.validator.format("Sila masukkan nilai tidak lebih dari {0} aksara."), + minlength: $.validator.format("Sila masukkan nilai sekurang-kurangnya {0} aksara."), + rangelength: $.validator.format("Sila masukkan panjang nilai antara {0} dan {1} aksara."), + range: $.validator.format("Sila masukkan nilai antara {0} dan {1} aksara."), + max: $.validator.format("Sila masukkan nilai yang kurang atau sama dengan {0}."), + min: $.validator.format("Sila masukkan nilai yang lebih atau sama dengan {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_my.min.js b/thirdparty/jquery-validate/localization/messages_my.min.js new file mode 100644 index 000000000..0b4d79742 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_my.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Medan ini diperlukan.",remote:"Sila betulkan medan ini.",email:"Sila masukkan alamat emel yang betul.",url:"Sila masukkan URL yang betul.",date:"Sila masukkan tarikh yang betul.",dateISO:"Sila masukkan tarikh(ISO) yang betul.",number:"Sila masukkan nombor yang betul.",digits:"Sila masukkan nilai digit sahaja.",creditcard:"Sila masukkan nombor kredit kad yang betul.",equalTo:"Sila masukkan nilai yang sama semula.",extension:"Sila masukkan nilai yang telah diterima.",maxlength:a.validator.format("Sila masukkan nilai tidak lebih dari {0} aksara."),minlength:a.validator.format("Sila masukkan nilai sekurang-kurangnya {0} aksara."),rangelength:a.validator.format("Sila masukkan panjang nilai antara {0} dan {1} aksara."),range:a.validator.format("Sila masukkan nilai antara {0} dan {1} aksara."),max:a.validator.format("Sila masukkan nilai yang kurang atau sama dengan {0}."),min:a.validator.format("Sila masukkan nilai yang lebih atau sama dengan {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_nl.js b/thirdparty/jquery-validate/localization/messages_nl.js index 39f335d7a..cdba38125 100644 --- a/thirdparty/jquery-validate/localization/messages_nl.js +++ b/thirdparty/jquery-validate/localization/messages_nl.js @@ -1,35 +1,43 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: NL (Dutch; Nederlands, Vlaams) */ -(function ($) { - $.extend($.validator.messages, { - required: "Dit is een verplicht veld.", - remote: "Controleer dit veld.", - email: "Vul hier een geldig e-mailadres in.", - url: "Vul hier een geldige URL in.", - date: "Vul hier een geldige datum in.", - dateISO: "Vul hier een geldige datum in (ISO-formaat).", - number: "Vul hier een geldig getal in.", - digits: "Vul hier alleen getallen in.", - creditcard: "Vul hier een geldig creditcardnummer in.", - equalTo: "Vul hier dezelfde waarde in.", - accept: "Vul hier een waarde in met een geldige extensie.", - maxlength: $.validator.format("Vul hier maximaal {0} tekens in."), - minlength: $.validator.format("Vul hier minimaal {0} tekens in."), - rangelength: $.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."), - range: $.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."), - max: $.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."), - min: $.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}."), +$.extend($.validator.messages, { + required: "Dit is een verplicht veld.", + remote: "Controleer dit veld.", + email: "Vul hier een geldig e-mailadres in.", + url: "Vul hier een geldige URL in.", + date: "Vul hier een geldige datum in.", + dateISO: "Vul hier een geldige datum in (ISO-formaat).", + number: "Vul hier een geldig getal in.", + digits: "Vul hier alleen getallen in.", + creditcard: "Vul hier een geldig creditcardnummer in.", + equalTo: "Vul hier dezelfde waarde in.", + extension: "Vul hier een waarde in met een geldige extensie.", + maxlength: $.validator.format("Vul hier maximaal {0} tekens in."), + minlength: $.validator.format("Vul hier minimaal {0} tekens in."), + rangelength: $.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."), + range: $.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."), + max: $.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."), + min: $.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}."), + + // for validations in additional-methods.js + iban: "Vul hier een geldig IBAN in.", + dateNL: "Vul hier een geldige datum in.", + phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.", + mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.", + postalcodeNL: "Vul hier een geldige postcode in.", + bankaccountNL: "Vul hier een geldig bankrekeningnummer in.", + giroaccountNL: "Vul hier een geldig gironummer in.", + bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in." +}); - // for validations in additional-methods.js - iban: "Vul hier een geldig IBAN in.", - dateNL: "Vul hier een geldige datum in.", - phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.", - mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.", - postalcodeNL: "Vul hier een geldige postcode in.", - bankaccountNL: "Vul hier een geldig bankrekeningnummer in.", - giroaccountNL: "Vul hier een geldig gironummer in.", - bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in." - }); -}(jQuery)); \ No newline at end of file +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_nl.min.js b/thirdparty/jquery-validate/localization/messages_nl.min.js new file mode 100644 index 000000000..2c4c57650 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_nl.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Dit is een verplicht veld.",remote:"Controleer dit veld.",email:"Vul hier een geldig e-mailadres in.",url:"Vul hier een geldige URL in.",date:"Vul hier een geldige datum in.",dateISO:"Vul hier een geldige datum in (ISO-formaat).",number:"Vul hier een geldig getal in.",digits:"Vul hier alleen getallen in.",creditcard:"Vul hier een geldig creditcardnummer in.",equalTo:"Vul hier dezelfde waarde in.",extension:"Vul hier een waarde in met een geldige extensie.",maxlength:a.validator.format("Vul hier maximaal {0} tekens in."),minlength:a.validator.format("Vul hier minimaal {0} tekens in."),rangelength:a.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),range:a.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),max:a.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),min:a.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}."),iban:"Vul hier een geldig IBAN in.",dateNL:"Vul hier een geldige datum in.",phoneNL:"Vul hier een geldig Nederlands telefoonnummer in.",mobileNL:"Vul hier een geldig Nederlands mobiel telefoonnummer in.",postalcodeNL:"Vul hier een geldige postcode in.",bankaccountNL:"Vul hier een geldig bankrekeningnummer in.",giroaccountNL:"Vul hier een geldig gironummer in.",bankorgiroaccountNL:"Vul hier een geldig bank- of gironummer in."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_no.js b/thirdparty/jquery-validate/localization/messages_no.js index 9ba6d2f5b..308b715a7 100644 --- a/thirdparty/jquery-validate/localization/messages_no.js +++ b/thirdparty/jquery-validate/localization/messages_no.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: NO (Norwegian; Norsk) */ -(function ($) { - $.extend($.validator.messages, { - required: "Dette feltet er obligatorisk.", - maxlength: $.validator.format("Maksimalt {0} tegn."), - minlength: $.validator.format("Minimum {0} tegn."), - rangelength: $.validator.format("Angi minimum {0} og maksimum {1} tegn."), - email: "Oppgi en gyldig epostadresse.", - url: "Angi en gyldig URL.", - date: "Angi en gyldig dato.", - dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).", - dateSE: "Angi en gyldig dato.", - number: "Angi et gyldig nummer.", - numberSE: "Angi et gyldig nummer.", - digits: "Skriv kun tall.", - equalTo: "Skriv samme verdi igjen.", - range: $.validator.format("Angi en verdi mellom {0} og {1}."), - max: $.validator.format("Angi en verdi som er mindre eller lik {0}."), - min: $.validator.format("Angi en verdi som er større eller lik {0}."), - creditcard: "Angi et gyldig kredittkortnummer." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Dette feltet er obligatorisk.", + maxlength: $.validator.format("Maksimalt {0} tegn."), + minlength: $.validator.format("Minimum {0} tegn."), + rangelength: $.validator.format("Angi minimum {0} og maksimum {1} tegn."), + email: "Oppgi en gyldig epostadresse.", + url: "Angi en gyldig URL.", + date: "Angi en gyldig dato.", + dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).", + dateSE: "Angi en gyldig dato.", + number: "Angi et gyldig nummer.", + numberSE: "Angi et gyldig nummer.", + digits: "Skriv kun tall.", + equalTo: "Skriv samme verdi igjen.", + range: $.validator.format("Angi en verdi mellom {0} og {1}."), + max: $.validator.format("Angi en verdi som er mindre eller lik {0}."), + min: $.validator.format("Angi en verdi som er større eller lik {0}."), + creditcard: "Angi et gyldig kredittkortnummer." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_no.min.js b/thirdparty/jquery-validate/localization/messages_no.min.js new file mode 100644 index 000000000..ff1f85d52 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_no.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Dette feltet er obligatorisk.",maxlength:a.validator.format("Maksimalt {0} tegn."),minlength:a.validator.format("Minimum {0} tegn."),rangelength:a.validator.format("Angi minimum {0} og maksimum {1} tegn."),email:"Oppgi en gyldig epostadresse.",url:"Angi en gyldig URL.",date:"Angi en gyldig dato.",dateISO:"Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",dateSE:"Angi en gyldig dato.",number:"Angi et gyldig nummer.",numberSE:"Angi et gyldig nummer.",digits:"Skriv kun tall.",equalTo:"Skriv samme verdi igjen.",range:a.validator.format("Angi en verdi mellom {0} og {1}."),max:a.validator.format("Angi en verdi som er mindre eller lik {0}."),min:a.validator.format("Angi en verdi som er større eller lik {0}."),creditcard:"Angi et gyldig kredittkortnummer."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_pl.js b/thirdparty/jquery-validate/localization/messages_pl.js index fcf2f6df8..453ba7727 100644 --- a/thirdparty/jquery-validate/localization/messages_pl.js +++ b/thirdparty/jquery-validate/localization/messages_pl.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: PL (Polish; język polski, polszczyzna) */ -(function ($) { - $.extend($.validator.messages, { - required: "To pole jest wymagane.", - remote: "Proszę o wypełnienie tego pola.", - email: "Proszę o podanie prawidłowego adresu email.", - url: "Proszę o podanie prawidłowego URL.", - date: "Proszę o podanie prawidłowej daty.", - dateISO: "Proszę o podanie prawidłowej daty (ISO).", - number: "Proszę o podanie prawidłowej liczby.", - digits: "Proszę o podanie samych cyfr.", - creditcard: "Proszę o podanie prawidłowej karty kredytowej.", - equalTo: "Proszę o podanie tej samej wartości ponownie.", - accept: "Proszę o podanie wartości z prawidłowym rozszerzeniem.", - maxlength: $.validator.format("Proszę o podanie nie więcej niż {0} znaków."), - minlength: $.validator.format("Proszę o podanie przynajmniej {0} znaków."), - rangelength: $.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."), - range: $.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."), - max: $.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."), - min: $.validator.format("Proszę o podanie wartości większej bądź równej {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "To pole jest wymagane.", + remote: "Proszę o wypełnienie tego pola.", + email: "Proszę o podanie prawidłowego adresu email.", + url: "Proszę o podanie prawidłowego URL.", + date: "Proszę o podanie prawidłowej daty.", + dateISO: "Proszę o podanie prawidłowej daty (ISO).", + number: "Proszę o podanie prawidłowej liczby.", + digits: "Proszę o podanie samych cyfr.", + creditcard: "Proszę o podanie prawidłowej karty kredytowej.", + equalTo: "Proszę o podanie tej samej wartości ponownie.", + extension: "Proszę o podanie wartości z prawidłowym rozszerzeniem.", + maxlength: $.validator.format("Proszę o podanie nie więcej niż {0} znaków."), + minlength: $.validator.format("Proszę o podanie przynajmniej {0} znaków."), + rangelength: $.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."), + range: $.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."), + max: $.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."), + min: $.validator.format("Proszę o podanie wartości większej bądź równej {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_pl.min.js b/thirdparty/jquery-validate/localization/messages_pl.min.js new file mode 100644 index 000000000..e35ad9a50 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_pl.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"To pole jest wymagane.",remote:"Proszę o wypełnienie tego pola.",email:"Proszę o podanie prawidłowego adresu email.",url:"Proszę o podanie prawidłowego URL.",date:"Proszę o podanie prawidłowej daty.",dateISO:"Proszę o podanie prawidłowej daty (ISO).",number:"Proszę o podanie prawidłowej liczby.",digits:"Proszę o podanie samych cyfr.",creditcard:"Proszę o podanie prawidłowej karty kredytowej.",equalTo:"Proszę o podanie tej samej wartości ponownie.",extension:"Proszę o podanie wartości z prawidłowym rozszerzeniem.",maxlength:a.validator.format("Proszę o podanie nie więcej niż {0} znaków."),minlength:a.validator.format("Proszę o podanie przynajmniej {0} znaków."),rangelength:a.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."),range:a.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."),max:a.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."),min:a.validator.format("Proszę o podanie wartości większej bądź równej {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_pt_BR.js b/thirdparty/jquery-validate/localization/messages_pt_BR.js index dd9434802..71b1ef830 100644 --- a/thirdparty/jquery-validate/localization/messages_pt_BR.js +++ b/thirdparty/jquery-validate/localization/messages_pt_BR.js @@ -1,26 +1,37 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: PT (Portuguese; português) * Region: BR (Brazil) */ -(function ($) { - $.extend($.validator.messages, { - required: "Este campo é requerido.", - remote: "Por favor, corrija este campo.", - email: "Por favor, forneça um endereço eletrônico válido.", - url: "Por favor, forneça uma URL válida.", - date: "Por favor, forneça uma data válida.", - dateISO: "Por favor, forneça uma data válida (ISO).", - number: "Por favor, forneça um número válido.", - digits: "Por favor, forneça somente dígitos.", - creditcard: "Por favor, forneça um cartão de crédito válido.", - equalTo: "Por favor, forneça o mesmo valor novamente.", - accept: "Por favor, forneça um valor com uma extensão válida.", - maxlength: $.validator.format("Por favor, forneça não mais que {0} caracteres."), - minlength: $.validator.format("Por favor, forneça ao menos {0} caracteres."), - rangelength: $.validator.format("Por favor, forneça um valor entre {0} e {1} caracteres de comprimento."), - range: $.validator.format("Por favor, forneça um valor entre {0} e {1}."), - max: $.validator.format("Por favor, forneça um valor menor ou igual a {0}."), - min: $.validator.format("Por favor, forneça um valor maior ou igual a {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Este campo é requerido.", + remote: "Por favor, corrija este campo.", + email: "Por favor, forneça um endereço de email válido.", + url: "Por favor, forneça uma URL válida.", + date: "Por favor, forneça uma data válida.", + dateISO: "Por favor, forneça uma data válida (ISO).", + number: "Por favor, forneça um número válido.", + digits: "Por favor, forneça somente dígitos.", + creditcard: "Por favor, forneça um cartão de crédito válido.", + equalTo: "Por favor, forneça o mesmo valor novamente.", + extension: "Por favor, forneça um valor com uma extensão válida.", + maxlength: $.validator.format("Por favor, forneça não mais que {0} caracteres."), + minlength: $.validator.format("Por favor, forneça ao menos {0} caracteres."), + rangelength: $.validator.format("Por favor, forneça um valor entre {0} e {1} caracteres de comprimento."), + range: $.validator.format("Por favor, forneça um valor entre {0} e {1}."), + max: $.validator.format("Por favor, forneça um valor menor ou igual a {0}."), + min: $.validator.format("Por favor, forneça um valor maior ou igual a {0}."), + nifES: "Por favor, forneça um NIF válido.", + nieES: "Por favor, forneça um NIE válido.", + cifEE: "Por favor, forneça um CIF válido." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_pt_BR.min.js b/thirdparty/jquery-validate/localization/messages_pt_BR.min.js new file mode 100644 index 000000000..c97c99278 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_pt_BR.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Este campo é requerido.",remote:"Por favor, corrija este campo.",email:"Por favor, forneça um endereço de email válido.",url:"Por favor, forneça uma URL válida.",date:"Por favor, forneça uma data válida.",dateISO:"Por favor, forneça uma data válida (ISO).",number:"Por favor, forneça um número válido.",digits:"Por favor, forneça somente dígitos.",creditcard:"Por favor, forneça um cartão de crédito válido.",equalTo:"Por favor, forneça o mesmo valor novamente.",extension:"Por favor, forneça um valor com uma extensão válida.",maxlength:a.validator.format("Por favor, forneça não mais que {0} caracteres."),minlength:a.validator.format("Por favor, forneça ao menos {0} caracteres."),rangelength:a.validator.format("Por favor, forneça um valor entre {0} e {1} caracteres de comprimento."),range:a.validator.format("Por favor, forneça um valor entre {0} e {1}."),max:a.validator.format("Por favor, forneça um valor menor ou igual a {0}."),min:a.validator.format("Por favor, forneça um valor maior ou igual a {0}."),nifES:"Por favor, forneça um NIF válido.",nieES:"Por favor, forneça um NIE válido.",cifEE:"Por favor, forneça um CIF válido."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_pt_PT.js b/thirdparty/jquery-validate/localization/messages_pt_PT.js index 41b239e33..4c2a7826a 100644 --- a/thirdparty/jquery-validate/localization/messages_pt_PT.js +++ b/thirdparty/jquery-validate/localization/messages_pt_PT.js @@ -1,26 +1,37 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: PT (Portuguese; português) * Region: PT (Portugal) */ -(function ($) { - $.extend($.validator.messages, { - required: "Campo de preenchimento obrigatório.", - remote: "Por favor, corrija este campo.", - email: "Por favor, introduza um endereço eletrónico válido.", - url: "Por favor, introduza um URL válido.", - date: "Por favor, introduza uma data válida.", - dateISO: "Por favor, introduza uma data válida (ISO).", - number: "Por favor, introduza um número válido.", - digits: "Por favor, introduza apenas dígitos.", - creditcard: "Por favor, introduza um número de cartão de crédito válido.", - equalTo: "Por favor, introduza de novo o mesmo valor.", - accept: "Por favor, introduza um ficheiro com uma extensão válida.", - maxlength: $.validator.format("Por favor, não introduza mais do que {0} caracteres."), - minlength: $.validator.format("Por favor, introduza pelo menos {0} caracteres."), - rangelength: $.validator.format("Por favor, introduza entre {0} e {1} caracteres."), - range: $.validator.format("Por favor, introduza um valor entre {0} e {1}."), - max: $.validator.format("Por favor, introduza um valor menor ou igual a {0}."), - min: $.validator.format("Por favor, introduza um valor maior ou igual a {0}.") - }); -}(jQuery)); +$.extend($.validator.messages, { + required: "Campo de preenchimento obrigatório.", + remote: "Por favor, corrija este campo.", + email: "Por favor, introduza um endereço eletrónico válido.", + url: "Por favor, introduza um URL válido.", + date: "Por favor, introduza uma data válida.", + dateISO: "Por favor, introduza uma data válida (ISO).", + number: "Por favor, introduza um número válido.", + digits: "Por favor, introduza apenas dígitos.", + creditcard: "Por favor, introduza um número de cartão de crédito válido.", + equalTo: "Por favor, introduza de novo o mesmo valor.", + extension: "Por favor, introduza um ficheiro com uma extensão válida.", + maxlength: $.validator.format("Por favor, não introduza mais do que {0} caracteres."), + minlength: $.validator.format("Por favor, introduza pelo menos {0} caracteres."), + rangelength: $.validator.format("Por favor, introduza entre {0} e {1} caracteres."), + range: $.validator.format("Por favor, introduza um valor entre {0} e {1}."), + max: $.validator.format("Por favor, introduza um valor menor ou igual a {0}."), + min: $.validator.format("Por favor, introduza um valor maior ou igual a {0}."), + nifES: "Por favor, introduza um NIF válido.", + nieES: "Por favor, introduza um NIE válido.", + cifES: "Por favor, introduza um CIF válido." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_pt_PT.min.js b/thirdparty/jquery-validate/localization/messages_pt_PT.min.js new file mode 100644 index 000000000..7afed83f4 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_pt_PT.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Campo de preenchimento obrigatório.",remote:"Por favor, corrija este campo.",email:"Por favor, introduza um endereço eletrónico válido.",url:"Por favor, introduza um URL válido.",date:"Por favor, introduza uma data válida.",dateISO:"Por favor, introduza uma data válida (ISO).",number:"Por favor, introduza um número válido.",digits:"Por favor, introduza apenas dígitos.",creditcard:"Por favor, introduza um número de cartão de crédito válido.",equalTo:"Por favor, introduza de novo o mesmo valor.",extension:"Por favor, introduza um ficheiro com uma extensão válida.",maxlength:a.validator.format("Por favor, não introduza mais do que {0} caracteres."),minlength:a.validator.format("Por favor, introduza pelo menos {0} caracteres."),rangelength:a.validator.format("Por favor, introduza entre {0} e {1} caracteres."),range:a.validator.format("Por favor, introduza um valor entre {0} e {1}."),max:a.validator.format("Por favor, introduza um valor menor ou igual a {0}."),min:a.validator.format("Por favor, introduza um valor maior ou igual a {0}."),nifES:"Por favor, introduza um NIF válido.",nieES:"Por favor, introduza um NIE válido.",cifES:"Por favor, introduza um CIF válido."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ro.js b/thirdparty/jquery-validate/localization/messages_ro.js index 6286f80f7..be77eabcb 100644 --- a/thirdparty/jquery-validate/localization/messages_ro.js +++ b/thirdparty/jquery-validate/localization/messages_ro.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: RO (Romanian, limba română) */ -(function ($) { - $.extend($.validator.messages, { - required: "Acest câmp este obligatoriu.", - remote: "Te rugăm să completezi acest câmp.", - email: "Te rugăm să introduci o adresă de email validă", - url: "Te rugăm sa introduci o adresă URL validă.", - date: "Te rugăm să introduci o dată corectă.", - dateISO: "Te rugăm să introduci o dată (ISO) corectă.", - number: "Te rugăm să introduci un număr întreg valid.", - digits: "Te rugăm să introduci doar cifre.", - creditcard: "Te rugăm să introduci un numar de carte de credit valid.", - equalTo: "Te rugăm să reintroduci valoarea.", - accept: "Te rugăm să introduci o valoare cu o extensie validă.", - maxlength: $.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."), - minlength: $.validator.format("Te rugăm să introduci cel puțin {0} caractere."), - rangelength: $.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."), - range: $.validator.format("Te rugăm să introduci o valoare între {0} și {1}."), - max: $.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."), - min: $.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Acest câmp este obligatoriu.", + remote: "Te rugăm să completezi acest câmp.", + email: "Te rugăm să introduci o adresă de email validă", + url: "Te rugăm sa introduci o adresă URL validă.", + date: "Te rugăm să introduci o dată corectă.", + dateISO: "Te rugăm să introduci o dată (ISO) corectă.", + number: "Te rugăm să introduci un număr întreg valid.", + digits: "Te rugăm să introduci doar cifre.", + creditcard: "Te rugăm să introduci un numar de carte de credit valid.", + equalTo: "Te rugăm să reintroduci valoarea.", + extension: "Te rugăm să introduci o valoare cu o extensie validă.", + maxlength: $.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."), + minlength: $.validator.format("Te rugăm să introduci cel puțin {0} caractere."), + rangelength: $.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."), + range: $.validator.format("Te rugăm să introduci o valoare între {0} și {1}."), + max: $.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."), + min: $.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ro.min.js b/thirdparty/jquery-validate/localization/messages_ro.min.js new file mode 100644 index 000000000..e49c37a35 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ro.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Acest câmp este obligatoriu.",remote:"Te rugăm să completezi acest câmp.",email:"Te rugăm să introduci o adresă de email validă",url:"Te rugăm sa introduci o adresă URL validă.",date:"Te rugăm să introduci o dată corectă.",dateISO:"Te rugăm să introduci o dată (ISO) corectă.",number:"Te rugăm să introduci un număr întreg valid.",digits:"Te rugăm să introduci doar cifre.",creditcard:"Te rugăm să introduci un numar de carte de credit valid.",equalTo:"Te rugăm să reintroduci valoarea.",extension:"Te rugăm să introduci o valoare cu o extensie validă.",maxlength:a.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."),minlength:a.validator.format("Te rugăm să introduci cel puțin {0} caractere."),rangelength:a.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."),range:a.validator.format("Te rugăm să introduci o valoare între {0} și {1}."),max:a.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."),min:a.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ru.js b/thirdparty/jquery-validate/localization/messages_ru.js index 46dc78168..896827bf2 100644 --- a/thirdparty/jquery-validate/localization/messages_ru.js +++ b/thirdparty/jquery-validate/localization/messages_ru.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: RU (Russian; русский язык) */ -(function ($) { - $.extend($.validator.messages, { - required: "Это поле необходимо заполнить.", - remote: "Пожалуйста, введите правильное значение.", - email: "Пожалуйста, введите корректный адрес электронной почты.", - url: "Пожалуйста, введите корректный URL.", - date: "Пожалуйста, введите корректную дату.", - dateISO: "Пожалуйста, введите корректную дату в формате ISO.", - number: "Пожалуйста, введите число.", - digits: "Пожалуйста, вводите только цифры.", - creditcard: "Пожалуйста, введите правильный номер кредитной карты.", - equalTo: "Пожалуйста, введите такое же значение ещё раз.", - accept: "Пожалуйста, выберите файл с правильным расширением.", - maxlength: $.validator.format("Пожалуйста, введите не больше {0} символов."), - minlength: $.validator.format("Пожалуйста, введите не меньше {0} символов."), - rangelength: $.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."), - range: $.validator.format("Пожалуйста, введите число от {0} до {1}."), - max: $.validator.format("Пожалуйста, введите число, меньшее или равное {0}."), - min: $.validator.format("Пожалуйста, введите число, большее или равное {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Это поле необходимо заполнить.", + remote: "Пожалуйста, введите правильное значение.", + email: "Пожалуйста, введите корректный адрес электронной почты.", + url: "Пожалуйста, введите корректный URL.", + date: "Пожалуйста, введите корректную дату.", + dateISO: "Пожалуйста, введите корректную дату в формате ISO.", + number: "Пожалуйста, введите число.", + digits: "Пожалуйста, вводите только цифры.", + creditcard: "Пожалуйста, введите правильный номер кредитной карты.", + equalTo: "Пожалуйста, введите такое же значение ещё раз.", + extension: "Пожалуйста, выберите файл с правильным расширением.", + maxlength: $.validator.format("Пожалуйста, введите не больше {0} символов."), + minlength: $.validator.format("Пожалуйста, введите не меньше {0} символов."), + rangelength: $.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."), + range: $.validator.format("Пожалуйста, введите число от {0} до {1}."), + max: $.validator.format("Пожалуйста, введите число, меньшее или равное {0}."), + min: $.validator.format("Пожалуйста, введите число, большее или равное {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_ru.min.js b/thirdparty/jquery-validate/localization/messages_ru.min.js new file mode 100644 index 000000000..9f5175699 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_ru.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Это поле необходимо заполнить.",remote:"Пожалуйста, введите правильное значение.",email:"Пожалуйста, введите корректный адрес электронной почты.",url:"Пожалуйста, введите корректный URL.",date:"Пожалуйста, введите корректную дату.",dateISO:"Пожалуйста, введите корректную дату в формате ISO.",number:"Пожалуйста, введите число.",digits:"Пожалуйста, вводите только цифры.",creditcard:"Пожалуйста, введите правильный номер кредитной карты.",equalTo:"Пожалуйста, введите такое же значение ещё раз.",extension:"Пожалуйста, выберите файл с правильным расширением.",maxlength:a.validator.format("Пожалуйста, введите не больше {0} символов."),minlength:a.validator.format("Пожалуйста, введите не меньше {0} символов."),rangelength:a.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."),range:a.validator.format("Пожалуйста, введите число от {0} до {1}."),max:a.validator.format("Пожалуйста, введите число, меньшее или равное {0}."),min:a.validator.format("Пожалуйста, введите число, большее или равное {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_si.js b/thirdparty/jquery-validate/localization/messages_si.js index 0c280e80d..8e04a9d5a 100644 --- a/thirdparty/jquery-validate/localization/messages_si.js +++ b/thirdparty/jquery-validate/localization/messages_si.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: SI (Slovenian) */ -(function ($) { - $.extend($.validator.messages, { - required: "To polje je obvezno.", - remote: "Vpis v tem polju ni v pravi obliki.", - email: "Prosimo, vnesite pravi email naslov.", - url: "Prosimo, vnesite pravi URL.", - date: "Prosimo, vnesite pravi datum.", - dateISO: "Prosimo, vnesite pravi datum (ISO).", - number: "Prosimo, vnesite pravo številko.", - digits: "Prosimo, vnesite samo številke.", - creditcard: "Prosimo, vnesite pravo številko kreditne kartice.", - equalTo: "Prosimo, ponovno vnesite enako vsebino.", - accept: "Prosimo, vnesite vsebino z pravo končnico.", - maxlength: $.validator.format("Prosimo, da ne vnašate več kot {0} znakov."), - minlength: $.validator.format("Prosimo, vnesite vsaj {0} znakov."), - rangelength: $.validator.format("Prosimo, vnesite od {0} do {1} znakov."), - range: $.validator.format("Prosimo, vnesite vrednost med {0} in {1}."), - max: $.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."), - min: $.validator.format("Prosimo, vnesite vrednost večjo ali enako {0}.") - }); -}(jQuery)); +$.extend($.validator.messages, { + required: "To polje je obvezno.", + remote: "Vpis v tem polju ni v pravi obliki.", + email: "Prosimo, vnesite pravi email naslov.", + url: "Prosimo, vnesite pravi URL.", + date: "Prosimo, vnesite pravi datum.", + dateISO: "Prosimo, vnesite pravi datum (ISO).", + number: "Prosimo, vnesite pravo številko.", + digits: "Prosimo, vnesite samo številke.", + creditcard: "Prosimo, vnesite pravo številko kreditne kartice.", + equalTo: "Prosimo, ponovno vnesite enako vsebino.", + extension: "Prosimo, vnesite vsebino z pravo končnico.", + maxlength: $.validator.format("Prosimo, da ne vnašate več kot {0} znakov."), + minlength: $.validator.format("Prosimo, vnesite vsaj {0} znakov."), + rangelength: $.validator.format("Prosimo, vnesite od {0} do {1} znakov."), + range: $.validator.format("Prosimo, vnesite vrednost med {0} in {1}."), + max: $.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."), + min: $.validator.format("Prosimo, vnesite vrednost večjo ali enako {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_si.min.js b/thirdparty/jquery-validate/localization/messages_si.min.js new file mode 100644 index 000000000..23fb4ca78 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_si.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"To polje je obvezno.",remote:"Vpis v tem polju ni v pravi obliki.",email:"Prosimo, vnesite pravi email naslov.",url:"Prosimo, vnesite pravi URL.",date:"Prosimo, vnesite pravi datum.",dateISO:"Prosimo, vnesite pravi datum (ISO).",number:"Prosimo, vnesite pravo številko.",digits:"Prosimo, vnesite samo številke.",creditcard:"Prosimo, vnesite pravo številko kreditne kartice.",equalTo:"Prosimo, ponovno vnesite enako vsebino.",extension:"Prosimo, vnesite vsebino z pravo končnico.",maxlength:a.validator.format("Prosimo, da ne vnašate več kot {0} znakov."),minlength:a.validator.format("Prosimo, vnesite vsaj {0} znakov."),rangelength:a.validator.format("Prosimo, vnesite od {0} do {1} znakov."),range:a.validator.format("Prosimo, vnesite vrednost med {0} in {1}."),max:a.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."),min:a.validator.format("Prosimo, vnesite vrednost večjo ali enako {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sk.js b/thirdparty/jquery-validate/localization/messages_sk.js index bc6340abf..a45cd760f 100644 --- a/thirdparty/jquery-validate/localization/messages_sk.js +++ b/thirdparty/jquery-validate/localization/messages_sk.js @@ -1,22 +1,30 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: SK (Slovak; slovenčina, slovenský jazyk) */ -(function ($) { - $.extend($.validator.messages, { - required: "Povinné zadať.", - maxlength: $.validator.format("Maximálne {0} znakov."), - minlength: $.validator.format("Minimálne {0} znakov."), - rangelength: $.validator.format("Minimálne {0} a Maximálne {0} znakov."), - email: "E-mailová adresa musí byť platná.", - url: "URL musí byť platný.", - date: "Musí byť dátum.", - number: "Musí byť číslo.", - digits: "Môže obsahovať iba číslice.", - equalTo: "Dva hodnoty sa musia rovnať.", - range: $.validator.format("Musí byť medzi {0} a {1}."), - max: $.validator.format("Nemôže byť viac ako{0}."), - min: $.validator.format("Nemôže byť menej ako{0}."), - creditcard: "Číslo platobnej karty musí byť platné." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Povinné zadať.", + maxlength: $.validator.format("Maximálne {0} znakov."), + minlength: $.validator.format("Minimálne {0} znakov."), + rangelength: $.validator.format("Minimálne {0} a Maximálne {0} znakov."), + email: "E-mailová adresa musí byť platná.", + url: "URL musí byť platný.", + date: "Musí byť dátum.", + number: "Musí byť číslo.", + digits: "Môže obsahovať iba číslice.", + equalTo: "Dva hodnoty sa musia rovnať.", + range: $.validator.format("Musí byť medzi {0} a {1}."), + max: $.validator.format("Nemôže byť viac ako{0}."), + min: $.validator.format("Nemôže byť menej ako{0}."), + creditcard: "Číslo platobnej karty musí byť platné." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sk.min.js b/thirdparty/jquery-validate/localization/messages_sk.min.js new file mode 100644 index 000000000..36ed3e7b8 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_sk.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Povinné zadať.",maxlength:a.validator.format("Maximálne {0} znakov."),minlength:a.validator.format("Minimálne {0} znakov."),rangelength:a.validator.format("Minimálne {0} a Maximálne {0} znakov."),email:"E-mailová adresa musí byť platná.",url:"URL musí byť platný.",date:"Musí byť dátum.",number:"Musí byť číslo.",digits:"Môže obsahovať iba číslice.",equalTo:"Dva hodnoty sa musia rovnať.",range:a.validator.format("Musí byť medzi {0} a {1}."),max:a.validator.format("Nemôže byť viac ako{0}."),min:a.validator.format("Nemôže byť menej ako{0}."),creditcard:"Číslo platobnej karty musí byť platné."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sl.js b/thirdparty/jquery-validate/localization/messages_sl.js index fa53d6d72..6eb9e0b21 100644 --- a/thirdparty/jquery-validate/localization/messages_sl.js +++ b/thirdparty/jquery-validate/localization/messages_sl.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Language: SL (Slovenian; slovenski jezik) */ -(function ($) { - $.extend($.validator.messages, { - required: "To polje je obvezno.", - remote: "Prosimo popravite to polje.", - email: "Prosimo vnesite veljaven email naslov.", - url: "Prosimo vnesite veljaven URL naslov.", - date: "Prosimo vnesite veljaven datum.", - dateISO: "Prosimo vnesite veljaven ISO datum.", - number: "Prosimo vnesite veljavno število.", - digits: "Prosimo vnesite samo števila.", - creditcard: "Prosimo vnesite veljavno številko kreditne kartice.", - equalTo: "Prosimo ponovno vnesite vrednost.", - accept: "Prosimo vnesite vrednost z veljavno končnico.", - maxlength: $.validator.format("Prosimo vnesite največ {0} znakov."), - minlength: $.validator.format("Prosimo vnesite najmanj {0} znakov."), - rangelength: $.validator.format("Prosimo vnesite najmanj {0} in največ {1} znakov."), - range: $.validator.format("Prosimo vnesite vrednost med {0} in {1}."), - max: $.validator.format("Prosimo vnesite vrednost manjše ali enako {0}."), - min: $.validator.format("Prosimo vnesite vrednost večje ali enako {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "To polje je obvezno.", + remote: "Prosimo popravite to polje.", + email: "Prosimo vnesite veljaven email naslov.", + url: "Prosimo vnesite veljaven URL naslov.", + date: "Prosimo vnesite veljaven datum.", + dateISO: "Prosimo vnesite veljaven ISO datum.", + number: "Prosimo vnesite veljavno število.", + digits: "Prosimo vnesite samo števila.", + creditcard: "Prosimo vnesite veljavno številko kreditne kartice.", + equalTo: "Prosimo ponovno vnesite vrednost.", + extension: "Prosimo vnesite vrednost z veljavno končnico.", + maxlength: $.validator.format("Prosimo vnesite največ {0} znakov."), + minlength: $.validator.format("Prosimo vnesite najmanj {0} znakov."), + rangelength: $.validator.format("Prosimo vnesite najmanj {0} in največ {1} znakov."), + range: $.validator.format("Prosimo vnesite vrednost med {0} in {1}."), + max: $.validator.format("Prosimo vnesite vrednost manjše ali enako {0}."), + min: $.validator.format("Prosimo vnesite vrednost večje ali enako {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sl.min.js b/thirdparty/jquery-validate/localization/messages_sl.min.js new file mode 100644 index 000000000..eb495b57e --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_sl.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"To polje je obvezno.",remote:"Prosimo popravite to polje.",email:"Prosimo vnesite veljaven email naslov.",url:"Prosimo vnesite veljaven URL naslov.",date:"Prosimo vnesite veljaven datum.",dateISO:"Prosimo vnesite veljaven ISO datum.",number:"Prosimo vnesite veljavno število.",digits:"Prosimo vnesite samo števila.",creditcard:"Prosimo vnesite veljavno številko kreditne kartice.",equalTo:"Prosimo ponovno vnesite vrednost.",extension:"Prosimo vnesite vrednost z veljavno končnico.",maxlength:a.validator.format("Prosimo vnesite največ {0} znakov."),minlength:a.validator.format("Prosimo vnesite najmanj {0} znakov."),rangelength:a.validator.format("Prosimo vnesite najmanj {0} in največ {1} znakov."),range:a.validator.format("Prosimo vnesite vrednost med {0} in {1}."),max:a.validator.format("Prosimo vnesite vrednost manjše ali enako {0}."),min:a.validator.format("Prosimo vnesite vrednost večje ali enako {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sr.js b/thirdparty/jquery-validate/localization/messages_sr.js index 73b5ec7ae..e268be820 100644 --- a/thirdparty/jquery-validate/localization/messages_sr.js +++ b/thirdparty/jquery-validate/localization/messages_sr.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: SR (Serbian; српски језик) */ -(function ($) { - $.extend($.validator.messages, { - required: "Поље је обавезно.", - remote: "Средите ово поље.", - email: "Унесите исправну и-мејл адресу", - url: "Унесите исправан URL.", - date: "Унесите исправан датум.", - dateISO: "Унесите исправан датум (ISO).", - number: "Унесите исправан број.", - digits: "Унесите само цифе.", - creditcard: "Унесите исправан број кредитне картице.", - equalTo: "Унесите исту вредност поново.", - accept: "Унесите вредност са одговарајућом екстензијом.", - maxlength: $.validator.format("Унесите мање од {0}карактера."), - minlength: $.validator.format("Унесите барем {0} карактера."), - rangelength: $.validator.format("Унесите вредност дугачку између {0} и {1} карактера."), - range: $.validator.format("Унесите вредност између {0} и {1}."), - max: $.validator.format("Унесите вредност мању или једнаку {0}."), - min: $.validator.format("Унесите вредност већу или једнаку {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Поље је обавезно.", + remote: "Средите ово поље.", + email: "Унесите исправну и-мејл адресу.", + url: "Унесите исправан URL.", + date: "Унесите исправан датум.", + dateISO: "Унесите исправан датум (ISO).", + number: "Унесите исправан број.", + digits: "Унесите само цифе.", + creditcard: "Унесите исправан број кредитне картице.", + equalTo: "Унесите исту вредност поново.", + extension: "Унесите вредност са одговарајућом екстензијом.", + maxlength: $.validator.format("Унесите мање од {0} карактера."), + minlength: $.validator.format("Унесите барем {0} карактера."), + rangelength: $.validator.format("Унесите вредност дугачку између {0} и {1} карактера."), + range: $.validator.format("Унесите вредност између {0} и {1}."), + max: $.validator.format("Унесите вредност мању или једнаку {0}."), + min: $.validator.format("Унесите вредност већу или једнаку {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sr.min.js b/thirdparty/jquery-validate/localization/messages_sr.min.js new file mode 100644 index 000000000..ca08986ee --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_sr.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Поље је обавезно.",remote:"Средите ово поље.",email:"Унесите исправну и-мејл адресу.",url:"Унесите исправан URL.",date:"Унесите исправан датум.",dateISO:"Унесите исправан датум (ISO).",number:"Унесите исправан број.",digits:"Унесите само цифе.",creditcard:"Унесите исправан број кредитне картице.",equalTo:"Унесите исту вредност поново.",extension:"Унесите вредност са одговарајућом екстензијом.",maxlength:a.validator.format("Унесите мање од {0} карактера."),minlength:a.validator.format("Унесите барем {0} карактера."),rangelength:a.validator.format("Унесите вредност дугачку између {0} и {1} карактера."),range:a.validator.format("Унесите вредност између {0} и {1}."),max:a.validator.format("Унесите вредност мању или једнаку {0}."),min:a.validator.format("Унесите вредност већу или једнаку {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sr_lat.js b/thirdparty/jquery-validate/localization/messages_sr_lat.js new file mode 100644 index 000000000..3c14afc4b --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_sr_lat.js @@ -0,0 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: SR (Serbian - Latin alphabet; srpski jezik - latinica) + */ +$.extend($.validator.messages, { + required: "Polje je obavezno.", + remote: "Sredite ovo polje.", + email: "Unesite ispravnu i-mejl adresu", + url: "Unesite ispravan URL.", + date: "Unesite ispravan datum.", + dateISO: "Unesite ispravan datum (ISO).", + number: "Unesite ispravan broj.", + digits: "Unesite samo cife.", + creditcard: "Unesite ispravan broj kreditne kartice.", + equalTo: "Unesite istu vrednost ponovo.", + extension: "Unesite vrednost sa odgovarajućom ekstenzijom.", + maxlength: $.validator.format("Unesite manje od {0} karaktera."), + minlength: $.validator.format("Unesite barem {0} karaktera."), + rangelength: $.validator.format("Unesite vrednost dugačku između {0} i {1} karaktera."), + range: $.validator.format("Unesite vrednost između {0} i {1}."), + max: $.validator.format("Unesite vrednost manju ili jednaku {0}."), + min: $.validator.format("Unesite vrednost veću ili jednaku {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sr_lat.min.js b/thirdparty/jquery-validate/localization/messages_sr_lat.min.js new file mode 100644 index 000000000..d67cd7b46 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_sr_lat.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Polje je obavezno.",remote:"Sredite ovo polje.",email:"Unesite ispravnu i-mejl adresu",url:"Unesite ispravan URL.",date:"Unesite ispravan datum.",dateISO:"Unesite ispravan datum (ISO).",number:"Unesite ispravan broj.",digits:"Unesite samo cife.",creditcard:"Unesite ispravan broj kreditne kartice.",equalTo:"Unesite istu vrednost ponovo.",extension:"Unesite vrednost sa odgovarajućom ekstenzijom.",maxlength:a.validator.format("Unesite manje od {0} karaktera."),minlength:a.validator.format("Unesite barem {0} karaktera."),rangelength:a.validator.format("Unesite vrednost dugačku između {0} i {1} karaktera."),range:a.validator.format("Unesite vrednost između {0} i {1}."),max:a.validator.format("Unesite vrednost manju ili jednaku {0}."),min:a.validator.format("Unesite vrednost veću ili jednaku {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sv.js b/thirdparty/jquery-validate/localization/messages_sv.js index 2f94467d0..758c8a728 100644 --- a/thirdparty/jquery-validate/localization/messages_sv.js +++ b/thirdparty/jquery-validate/localization/messages_sv.js @@ -1,23 +1,31 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: SV (Swedish; Svenska) */ -(function ($) { - $.extend($.validator.messages, { - required: "Detta fält är obligatoriskt.", - maxlength: $.validator.format("Du får ange högst {0} tecken."), - minlength: $.validator.format("Du måste ange minst {0} tecken."), - rangelength: $.validator.format("Ange minst {0} och max {1} tecken."), - email: "Ange en korrekt e-postadress.", - url: "Ange en korrekt URL.", - date: "Ange ett korrekt datum.", - dateISO: "Ange ett korrekt datum (&ARING;&ARING;&ARING;&ARING;-MM-DD).", - number: "Ange ett korrekt nummer.", - digits: "Ange endast siffror.", - equalTo: "Ange samma värde igen.", - range: $.validator.format("Ange ett värde mellan {0} och {1}."), - max: $.validator.format("Ange ett värde som är mindre eller lika med {0}."), - min: $.validator.format("Ange ett värde som är större eller lika med {0}."), - creditcard: "Ange ett korrekt kreditkortsnummer." - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Detta fält är obligatoriskt.", + maxlength: $.validator.format("Du får ange högst {0} tecken."), + minlength: $.validator.format("Du måste ange minst {0} tecken."), + rangelength: $.validator.format("Ange minst {0} och max {1} tecken."), + email: "Ange en korrekt e-postadress.", + url: "Ange en korrekt URL.", + date: "Ange ett korrekt datum.", + dateISO: "Ange ett korrekt datum (ÅÅÅÅ-MM-DD).", + number: "Ange ett korrekt nummer.", + digits: "Ange endast siffror.", + equalTo: "Ange samma värde igen.", + range: $.validator.format("Ange ett värde mellan {0} och {1}."), + max: $.validator.format("Ange ett värde som är mindre eller lika med {0}."), + min: $.validator.format("Ange ett värde som är större eller lika med {0}."), + creditcard: "Ange ett korrekt kreditkortsnummer." +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_sv.min.js b/thirdparty/jquery-validate/localization/messages_sv.min.js new file mode 100644 index 000000000..282e63373 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_sv.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Detta fält är obligatoriskt.",maxlength:a.validator.format("Du får ange högst {0} tecken."),minlength:a.validator.format("Du måste ange minst {0} tecken."),rangelength:a.validator.format("Ange minst {0} och max {1} tecken."),email:"Ange en korrekt e-postadress.",url:"Ange en korrekt URL.",date:"Ange ett korrekt datum.",dateISO:"Ange ett korrekt datum (ÅÅÅÅ-MM-DD).",number:"Ange ett korrekt nummer.",digits:"Ange endast siffror.",equalTo:"Ange samma värde igen.",range:a.validator.format("Ange ett värde mellan {0} och {1}."),max:a.validator.format("Ange ett värde som är mindre eller lika med {0}."),min:a.validator.format("Ange ett värde som är större eller lika med {0}."),creditcard:"Ange ett korrekt kreditkortsnummer."})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_th.js b/thirdparty/jquery-validate/localization/messages_th.js index f3b023556..e354e50ab 100644 --- a/thirdparty/jquery-validate/localization/messages_th.js +++ b/thirdparty/jquery-validate/localization/messages_th.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: TH (Thai; ไทย) */ -(function ($) { - $.extend($.validator.messages, { - required: "โปรดระบุ", - remote: "โปรดแก้ไขให้ถูกต้อง", - email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง", - url: "โปรดระบุ URL ที่ถูกต้อง", - date: "โปรดระบุวันที่ ที่ถูกต้อง", - dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).", - number: "โปรดระบุทศนิยมที่ถูกต้อง", - digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง", - creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง", - equalTo: "โปรดระบุค่าเดิมอีกครั้ง", - accept: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง", - maxlength: $.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"), - minlength: $.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"), - rangelength: $.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"), - range: $.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"), - max: $.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"), - min: $.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "โปรดระบุ", + remote: "โปรดแก้ไขให้ถูกต้อง", + email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง", + url: "โปรดระบุ URL ที่ถูกต้อง", + date: "โปรดระบุวันที่ ที่ถูกต้อง", + dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).", + number: "โปรดระบุทศนิยมที่ถูกต้อง", + digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง", + creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง", + equalTo: "โปรดระบุค่าเดิมอีกครั้ง", + extension: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง", + maxlength: $.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"), + minlength: $.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"), + rangelength: $.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"), + range: $.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"), + max: $.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"), + min: $.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_th.min.js b/thirdparty/jquery-validate/localization/messages_th.min.js new file mode 100644 index 000000000..090dcbd36 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_th.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"โปรดระบุ",remote:"โปรดแก้ไขให้ถูกต้อง",email:"โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",url:"โปรดระบุ URL ที่ถูกต้อง",date:"โปรดระบุวันที่ ที่ถูกต้อง",dateISO:"โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",number:"โปรดระบุทศนิยมที่ถูกต้อง",digits:"โปรดระบุจำนวนเต็มที่ถูกต้อง",creditcard:"โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",equalTo:"โปรดระบุค่าเดิมอีกครั้ง",extension:"โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",maxlength:a.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"),minlength:a.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"),rangelength:a.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"),range:a.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"),max:a.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"),min:a.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_tj.js b/thirdparty/jquery-validate/localization/messages_tj.js new file mode 100644 index 000000000..67e1e2ca4 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_tj.js @@ -0,0 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Translated default messages for the jQuery validation plugin. + * Locale: TJ (Tajikistan; Забони тоҷикӣ) + */ +$.extend($.validator.messages, { + required: "Ворид кардани ин филд маҷбури аст.", + remote: "Илтимос, маълумоти саҳеҳ ворид кунед.", + email: "Илтимос, почтаи электронии саҳеҳ ворид кунед.", + url: "Илтимос, URL адреси саҳеҳ ворид кунед.", + date: "Илтимос, таърихи саҳеҳ ворид кунед.", + dateISO: "Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.", + number: "Илтимос, рақамҳои саҳеҳ ворид кунед.", + digits: "Илтимос, танҳо рақам ворид кунед.", + creditcard: "Илтимос, кредит карди саҳеҳ ворид кунед.", + equalTo: "Илтимос, миқдори баробар ворид кунед.", + extension: "Илтимос, қофияи файлро дуруст интихоб кунед", + maxlength: $.validator.format("Илтимос, бештар аз {0} рамз ворид накунед."), + minlength: $.validator.format("Илтимос, камтар аз {0} рамз ворид накунед."), + rangelength: $.validator.format("Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед."), + range: $.validator.format("Илтимос, аз {0} то {1} рақам зиёд ворид кунед."), + max: $.validator.format("Илтимос, бештар аз {0} рақам ворид накунед."), + min: $.validator.format("Илтимос, камтар аз {0} рақам ворид накунед.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_tj.min.js b/thirdparty/jquery-validate/localization/messages_tj.min.js new file mode 100644 index 000000000..986183f7e --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_tj.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Ворид кардани ин филд маҷбури аст.",remote:"Илтимос, маълумоти саҳеҳ ворид кунед.",email:"Илтимос, почтаи электронии саҳеҳ ворид кунед.",url:"Илтимос, URL адреси саҳеҳ ворид кунед.",date:"Илтимос, таърихи саҳеҳ ворид кунед.",dateISO:"Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.",number:"Илтимос, рақамҳои саҳеҳ ворид кунед.",digits:"Илтимос, танҳо рақам ворид кунед.",creditcard:"Илтимос, кредит карди саҳеҳ ворид кунед.",equalTo:"Илтимос, миқдори баробар ворид кунед.",extension:"Илтимос, қофияи файлро дуруст интихоб кунед",maxlength:a.validator.format("Илтимос, бештар аз {0} рамз ворид накунед."),minlength:a.validator.format("Илтимос, камтар аз {0} рамз ворид накунед."),rangelength:a.validator.format("Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед."),range:a.validator.format("Илтимос, аз {0} то {1} рақам зиёд ворид кунед."),max:a.validator.format("Илтимос, бештар аз {0} рақам ворид накунед."),min:a.validator.format("Илтимос, камтар аз {0} рақам ворид накунед.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_tr.js b/thirdparty/jquery-validate/localization/messages_tr.js index 1c412180a..1d4c55ed4 100644 --- a/thirdparty/jquery-validate/localization/messages_tr.js +++ b/thirdparty/jquery-validate/localization/messages_tr.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: TR (Turkish; Türkçe) */ -(function ($) { - $.extend($.validator.messages, { - required: "Bu alanın doldurulması zorunludur.", - remote: "Lütfen bu alanı düzeltin.", - email: "Lütfen geçerli bir e-posta adresi giriniz.", - url: "Lütfen geçerli bir web adresi (URL) giriniz.", - date: "Lütfen geçerli bir tarih giriniz.", - dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)", - number: "Lütfen geçerli bir sayı giriniz.", - digits: "Lütfen sadece sayısal karakterler giriniz.", - creditcard: "Lütfen geçerli bir kredi kartı giriniz.", - equalTo: "Lütfen aynı değeri tekrar giriniz.", - accept: "Lütfen geçerli uzantıya sahip bir değer giriniz.", - maxlength: $.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."), - minlength: $.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."), - rangelength: $.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."), - range: $.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."), - max: $.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."), - min: $.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Bu alanın doldurulması zorunludur.", + remote: "Lütfen bu alanı düzeltin.", + email: "Lütfen geçerli bir e-posta adresi giriniz.", + url: "Lütfen geçerli bir web adresi (URL) giriniz.", + date: "Lütfen geçerli bir tarih giriniz.", + dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)", + number: "Lütfen geçerli bir sayı giriniz.", + digits: "Lütfen sadece sayısal karakterler giriniz.", + creditcard: "Lütfen geçerli bir kredi kartı giriniz.", + equalTo: "Lütfen aynı değeri tekrar giriniz.", + extension: "Lütfen geçerli uzantıya sahip bir değer giriniz.", + maxlength: $.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."), + minlength: $.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."), + rangelength: $.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."), + range: $.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."), + max: $.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."), + min: $.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_tr.min.js b/thirdparty/jquery-validate/localization/messages_tr.min.js new file mode 100644 index 000000000..ee9642ff1 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_tr.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Bu alanın doldurulması zorunludur.",remote:"Lütfen bu alanı düzeltin.",email:"Lütfen geçerli bir e-posta adresi giriniz.",url:"Lütfen geçerli bir web adresi (URL) giriniz.",date:"Lütfen geçerli bir tarih giriniz.",dateISO:"Lütfen geçerli bir tarih giriniz(ISO formatında)",number:"Lütfen geçerli bir sayı giriniz.",digits:"Lütfen sadece sayısal karakterler giriniz.",creditcard:"Lütfen geçerli bir kredi kartı giriniz.",equalTo:"Lütfen aynı değeri tekrar giriniz.",extension:"Lütfen geçerli uzantıya sahip bir değer giriniz.",maxlength:a.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."),minlength:a.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."),rangelength:a.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."),range:a.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."),max:a.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."),min:a.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_uk.js b/thirdparty/jquery-validate/localization/messages_uk.js index cdea494b1..ecb855ccd 100644 --- a/thirdparty/jquery-validate/localization/messages_uk.js +++ b/thirdparty/jquery-validate/localization/messages_uk.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: UK (Ukrainian; українська мова) */ -(function ($) { - $.extend($.validator.messages, { - required: "Це поле необхідно заповнити.", - remote: "Будь ласка, введіть правильне значення.", - email: "Будь ласка, введіть коректну адресу електронної пошти.", - url: "Будь ласка, введіть коректний URL.", - date: "Будь ласка, введіть коректну дату.", - dateISO: "Будь ласка, введіть коректну дату у форматі ISO.", - number: "Будь ласка, введіть число.", - digits: "Вводите потрібно лише цифри.", - creditcard: "Будь ласка, введіть правильний номер кредитної карти.", - equalTo: "Будь ласка, введіть таке ж значення ще раз.", - accept: "Будь ласка, виберіть файл з правильним розширенням.", - maxlength: $.validator.format("Будь ласка, введіть не більше {0} символів."), - minlength: $.validator.format("Будь ласка, введіть не менше {0} символів."), - rangelength: $.validator.format("Будь ласка, введіть значення довжиною від {0} до {1} символів."), - range: $.validator.format("Будь ласка, введіть число від {0} до {1}."), - max: $.validator.format("Будь ласка, введіть число, менше або рівно {0}."), - min: $.validator.format("Будь ласка, введіть число, більше або рівно {0}.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Це поле необхідно заповнити.", + remote: "Будь ласка, введіть правильне значення.", + email: "Будь ласка, введіть коректну адресу електронної пошти.", + url: "Будь ласка, введіть коректний URL.", + date: "Будь ласка, введіть коректну дату.", + dateISO: "Будь ласка, введіть коректну дату у форматі ISO.", + number: "Будь ласка, введіть число.", + digits: "Вводите потрібно лише цифри.", + creditcard: "Будь ласка, введіть правильний номер кредитної карти.", + equalTo: "Будь ласка, введіть таке ж значення ще раз.", + extension: "Будь ласка, виберіть файл з правильним розширенням.", + maxlength: $.validator.format("Будь ласка, введіть не більше {0} символів."), + minlength: $.validator.format("Будь ласка, введіть не менше {0} символів."), + rangelength: $.validator.format("Будь ласка, введіть значення довжиною від {0} до {1} символів."), + range: $.validator.format("Будь ласка, введіть число від {0} до {1}."), + max: $.validator.format("Будь ласка, введіть число, менше або рівно {0}."), + min: $.validator.format("Будь ласка, введіть число, більше або рівно {0}.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_uk.min.js b/thirdparty/jquery-validate/localization/messages_uk.min.js new file mode 100644 index 000000000..1c671fb30 --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_uk.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Це поле необхідно заповнити.",remote:"Будь ласка, введіть правильне значення.",email:"Будь ласка, введіть коректну адресу електронної пошти.",url:"Будь ласка, введіть коректний URL.",date:"Будь ласка, введіть коректну дату.",dateISO:"Будь ласка, введіть коректну дату у форматі ISO.",number:"Будь ласка, введіть число.",digits:"Вводите потрібно лише цифри.",creditcard:"Будь ласка, введіть правильний номер кредитної карти.",equalTo:"Будь ласка, введіть таке ж значення ще раз.",extension:"Будь ласка, виберіть файл з правильним розширенням.",maxlength:a.validator.format("Будь ласка, введіть не більше {0} символів."),minlength:a.validator.format("Будь ласка, введіть не менше {0} символів."),rangelength:a.validator.format("Будь ласка, введіть значення довжиною від {0} до {1} символів."),range:a.validator.format("Будь ласка, введіть число від {0} до {1}."),max:a.validator.format("Будь ласка, введіть число, менше або рівно {0}."),min:a.validator.format("Будь ласка, введіть число, більше або рівно {0}.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_vi.js b/thirdparty/jquery-validate/localization/messages_vi.js index fd5f2b5d5..f37b00e84 100644 --- a/thirdparty/jquery-validate/localization/messages_vi.js +++ b/thirdparty/jquery-validate/localization/messages_vi.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: VI (Vietnamese; Tiếng Việt) */ -(function ($) { - $.extend($.validator.messages, { - required: "Hãy nhập.", - remote: "Hãy sửa cho đúng.", - email: "Hãy nhập email.", - url: "Hãy nhập URL.", - date: "Hãy nhập ngày.", - dateISO: "Hãy nhập ngày (ISO).", - number: "Hãy nhập số.", - digits: "Hãy nhập chữ số.", - creditcard: "Hãy nhập số thẻ tín dụng.", - equalTo: "Hãy nhập thêm lần nữa.", - accept: "Phần mở rộng không đúng.", - maxlength: $.format("Hãy nhập từ {0} kí tự trở xuống."), - minlength: $.format("Hãy nhập từ {0} kí tự trở lên."), - rangelength: $.format("Hãy nhập từ {0} đến {1} kí tự."), - range: $.format("Hãy nhập từ {0} đến {1}."), - max: $.format("Hãy nhập từ {0} trở xuống."), - min: $.format("Hãy nhập từ {1} trở lên.") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "Hãy nhập.", + remote: "Hãy sửa cho đúng.", + email: "Hãy nhập email.", + url: "Hãy nhập URL.", + date: "Hãy nhập ngày.", + dateISO: "Hãy nhập ngày (ISO).", + number: "Hãy nhập số.", + digits: "Hãy nhập chữ số.", + creditcard: "Hãy nhập số thẻ tín dụng.", + equalTo: "Hãy nhập thêm lần nữa.", + extension: "Phần mở rộng không đúng.", + maxlength: $.validator.format("Hãy nhập từ {0} kí tự trở xuống."), + minlength: $.validator.format("Hãy nhập từ {0} kí tự trở lên."), + rangelength: $.validator.format("Hãy nhập từ {0} đến {1} kí tự."), + range: $.validator.format("Hãy nhập từ {0} đến {1}."), + max: $.validator.format("Hãy nhập từ {0} trở xuống."), + min: $.validator.format("Hãy nhập từ {1} trở lên.") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_vi.min.js b/thirdparty/jquery-validate/localization/messages_vi.min.js new file mode 100644 index 000000000..b174f20bc --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_vi.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Hãy nhập.",remote:"Hãy sửa cho đúng.",email:"Hãy nhập email.",url:"Hãy nhập URL.",date:"Hãy nhập ngày.",dateISO:"Hãy nhập ngày (ISO).",number:"Hãy nhập số.",digits:"Hãy nhập chữ số.",creditcard:"Hãy nhập số thẻ tín dụng.",equalTo:"Hãy nhập thêm lần nữa.",extension:"Phần mở rộng không đúng.",maxlength:a.validator.format("Hãy nhập từ {0} kí tự trở xuống."),minlength:a.validator.format("Hãy nhập từ {0} kí tự trở lên."),rangelength:a.validator.format("Hãy nhập từ {0} đến {1} kí tự."),range:a.validator.format("Hãy nhập từ {0} đến {1}."),max:a.validator.format("Hãy nhập từ {0} trở xuống."),min:a.validator.format("Hãy nhập từ {1} trở lên.")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_zh.js b/thirdparty/jquery-validate/localization/messages_zh.js index 2c4d5c308..a4e121cfd 100644 --- a/thirdparty/jquery-validate/localization/messages_zh.js +++ b/thirdparty/jquery-validate/localization/messages_zh.js @@ -1,25 +1,33 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語) */ -(function ($) { - $.extend($.validator.messages, { - required: "必选字段", - remote: "请修正该字段", - email: "请输入正确格式的电子邮件", - url: "请输入合法的网址", - date: "请输入合法的日期", - dateISO: "请输入合法的日期 (ISO).", - number: "请输入合法的数字", - digits: "只能输入整数", - creditcard: "请输入合法的信用卡号", - equalTo: "请再次输入相同的值", - accept: "请输入拥有合法后缀名的字符串", - maxlength: $.validator.format("请输入一个长度最多是 {0} 的字符串"), - minlength: $.validator.format("请输入一个长度最少是 {0} 的字符串"), - rangelength: $.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"), - range: $.validator.format("请输入一个介于 {0} 和 {1} 之间的值"), - max: $.validator.format("请输入一个最大为 {0} 的值"), - min: $.validator.format("请输入一个最小为 {0} 的值") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "必须填写", + remote: "请修正此栏位", + email: "请输入有效的电子邮件", + url: "请输入有效的网址", + date: "请输入有效的日期", + dateISO: "请输入有效的日期 (YYYY-MM-DD)", + number: "请输入正确的数字", + digits: "只可输入数字", + creditcard: "请输入有效的信用卡号码", + equalTo: "你的输入不相同", + extension: "请输入有效的后缀", + maxlength: $.validator.format("最多 {0} 个字"), + minlength: $.validator.format("最少 {0} 个字"), + rangelength: $.validator.format("请输入长度为 {0} 至 {1} 之間的字串"), + range: $.validator.format("请输入 {0} 至 {1} 之间的数值"), + max: $.validator.format("请输入不大于 {0} 的数值"), + min: $.validator.format("请输入不小于 {0} 的数值") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_zh.min.js b/thirdparty/jquery-validate/localization/messages_zh.min.js new file mode 100644 index 000000000..e2d57afcc --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_zh.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"必须填写",remote:"请修正此栏位",email:"请输入有效的电子邮件",url:"请输入有效的网址",date:"请输入有效的日期",dateISO:"请输入有效的日期 (YYYY-MM-DD)",number:"请输入正确的数字",digits:"只可输入数字",creditcard:"请输入有效的信用卡号码",equalTo:"你的输入不相同",extension:"请输入有效的后缀",maxlength:a.validator.format("最多 {0} 个字"),minlength:a.validator.format("最少 {0} 个字"),rangelength:a.validator.format("请输入长度为 {0} 至 {1} 之間的字串"),range:a.validator.format("请输入 {0} 至 {1} 之间的数值"),max:a.validator.format("请输入不大于 {0} 的数值"),min:a.validator.format("请输入不小于 {0} 的数值")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_zh_TW.js b/thirdparty/jquery-validate/localization/messages_zh_TW.js index ec0a2ffbc..fc86be39a 100644 --- a/thirdparty/jquery-validate/localization/messages_zh_TW.js +++ b/thirdparty/jquery-validate/localization/messages_zh_TW.js @@ -1,26 +1,34 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Translated default messages for the jQuery validation plugin. * Locale: ZH (Chinese; 中文 (Zhōngwén), 汉语, 漢語) * Region: TW (Taiwan) */ -(function ($) { - $.extend($.validator.messages, { - required: "必填", - remote: "請修正此欄位", - email: "請輸入正確的電子信箱", - url: "請輸入合法的URL", - date: "請輸入合法的日期", - dateISO: "請輸入合法的日期 (ISO).", - number: "請輸入數字", - digits: "請輸入整數", - creditcard: "請輸入合法的信用卡號碼", - equalTo: "請重複輸入一次", - accept: "請輸入有效的後缀字串", - maxlength: $.validator.format("請輸入長度不大於{0} 的字串"), - minlength: $.validator.format("請輸入長度不小於 {0} 的字串"), - rangelength: $.validator.format("請輸入長度介於 {0} 和 {1} 之間的字串"), - range: $.validator.format("請輸入介於 {0} 和 {1} 之間的數值"), - max: $.validator.format("請輸入不大於 {0} 的數值"), - min: $.validator.format("請輸入不小於 {0} 的數值") - }); -}(jQuery)); \ No newline at end of file +$.extend($.validator.messages, { + required: "必須填寫", + remote: "請修正此欄位", + email: "請輸入有效的電子郵件", + url: "請輸入有效的網址", + date: "請輸入有效的日期", + dateISO: "請輸入有效的日期 (YYYY-MM-DD)", + number: "請輸入正確的數值", + digits: "只可輸入數字", + creditcard: "請輸入有效的信用卡號碼", + equalTo: "請重複輸入一次", + extension: "請輸入有效的後綴", + maxlength: $.validator.format("最多 {0} 個字"), + minlength: $.validator.format("最少 {0} 個字"), + rangelength: $.validator.format("請輸入長度為 {0} 至 {1} 之間的字串"), + range: $.validator.format("請輸入 {0} 至 {1} 之間的數值"), + max: $.validator.format("請輸入不大於 {0} 的數值"), + min: $.validator.format("請輸入不小於 {0} 的數值") +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/messages_zh_TW.min.js b/thirdparty/jquery-validate/localization/messages_zh_TW.min.js new file mode 100644 index 000000000..042c1d6dd --- /dev/null +++ b/thirdparty/jquery-validate/localization/messages_zh_TW.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"必須填寫",remote:"請修正此欄位",email:"請輸入有效的電子郵件",url:"請輸入有效的網址",date:"請輸入有效的日期",dateISO:"請輸入有效的日期 (YYYY-MM-DD)",number:"請輸入正確的數值",digits:"只可輸入數字",creditcard:"請輸入有效的信用卡號碼",equalTo:"請重複輸入一次",extension:"請輸入有效的後綴",maxlength:a.validator.format("最多 {0} 個字"),minlength:a.validator.format("最少 {0} 個字"),rangelength:a.validator.format("請輸入長度為 {0} 至 {1} 之間的字串"),range:a.validator.format("請輸入 {0} 至 {1} 之間的數值"),max:a.validator.format("請輸入不大於 {0} 的數值"),min:a.validator.format("請輸入不小於 {0} 的數值")})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_de.js b/thirdparty/jquery-validate/localization/methods_de.js index 3e8ac8437..470133ed5 100644 --- a/thirdparty/jquery-validate/localization/methods_de.js +++ b/thirdparty/jquery-validate/localization/methods_de.js @@ -1,12 +1,22 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Localized default methods for the jQuery validation plugin. * Locale: DE */ -jQuery.extend(jQuery.validator.methods, { +$.extend($.validator.methods, { date: function(value, element) { return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value); }, number: function(value, element) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); } -}); \ No newline at end of file +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_de.min.js b/thirdparty/jquery-validate/localization/methods_de.min.js new file mode 100644 index 000000000..ed82e74ef --- /dev/null +++ b/thirdparty/jquery-validate/localization/methods_de.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(a)}})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_es_CL.js b/thirdparty/jquery-validate/localization/methods_es_CL.js new file mode 100644 index 000000000..16446e44e --- /dev/null +++ b/thirdparty/jquery-validate/localization/methods_es_CL.js @@ -0,0 +1,22 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + +/* + * Localized default methods for the jQuery validation plugin. + * Locale: ES_CL + */ +$.extend($.validator.methods, { + date: function(value, element) { + return this.optional(element) || /^\d\d?\-\d\d?\-\d\d\d?\d?$/.test(value); + }, + number: function(value, element) { + return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value); + } +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_es_CL.min.js b/thirdparty/jquery-validate/localization/methods_es_CL.min.js new file mode 100644 index 000000000..ec7d4b305 --- /dev/null +++ b/thirdparty/jquery-validate/localization/methods_es_CL.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\-\d\d?\-\d\d\d?\d?$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(a)}})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_nl.js b/thirdparty/jquery-validate/localization/methods_nl.js index 450041b14..91e0d8c52 100644 --- a/thirdparty/jquery-validate/localization/methods_nl.js +++ b/thirdparty/jquery-validate/localization/methods_nl.js @@ -1,9 +1,19 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Localized default methods for the jQuery validation plugin. * Locale: NL */ -jQuery.extend(jQuery.validator.methods, { +$.extend($.validator.methods, { date: function(value, element) { return this.optional(element) || /^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test(value); } -}); \ No newline at end of file +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_nl.min.js b/thirdparty/jquery-validate/localization/methods_nl.min.js new file mode 100644 index 000000000..5c0e4deb9 --- /dev/null +++ b/thirdparty/jquery-validate/localization/methods_nl.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test(a)}})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_pt.js b/thirdparty/jquery-validate/localization/methods_pt.js index 21879d3bb..d06ccec84 100644 --- a/thirdparty/jquery-validate/localization/methods_pt.js +++ b/thirdparty/jquery-validate/localization/methods_pt.js @@ -1,9 +1,19 @@ +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + define( ["jquery", "../jquery.validate"], factory ); + } else { + factory( jQuery ); + } +}(function( $ ) { + /* * Localized default methods for the jQuery validation plugin. * Locale: PT_BR */ -jQuery.extend(jQuery.validator.methods, { +$.extend($.validator.methods, { date: function(value, element) { return this.optional(element) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(value); } -}); \ No newline at end of file +}); + +})); \ No newline at end of file diff --git a/thirdparty/jquery-validate/localization/methods_pt.min.js b/thirdparty/jquery-validate/localization/methods_pt.min.js new file mode 100644 index 000000000..460a1a5e0 --- /dev/null +++ b/thirdparty/jquery-validate/localization/methods_pt.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.12.1pre - 5/22/2014 + * http://jqueryvalidation.org/ + * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):a(jQuery)}(function(a){a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(a)}})}); \ No newline at end of file diff --git a/thirdparty/jquery-validate/package.json b/thirdparty/jquery-validate/package.json deleted file mode 100644 index ac8dbd8dc..000000000 --- a/thirdparty/jquery-validate/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "jquery-validation", - "title": "jQuery Validation Plugin", - "description": "Form validation made easy", - "version": "1.12.0pre", - "homepage": "https://github.com/jzaefferer/jquery-validation", - "author": { - "name": "Jörn Zaefferer", - "email": "joern.zaefferer@gmail.com", - "url": "http://bassistance.de" - }, - "repository": { - "type": "git", - "url": "git://github.com/jzaefferer/jquery-validation.git" - }, - "bugs": { - "url": "https://github.com/jzaefferer/jquery-validation/issues" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/MIT" - } - ], - "scripts": { - "test": "grunt jshint qunit" - }, - "dependencies": {}, - "devDependencies": { - "grunt": "0.4.x", - "grunt-contrib-qunit": "~0.2.0", - "grunt-contrib-jshint": "~0.2.0", - "grunt-contrib-uglify": "~0.1.1", - "grunt-contrib-concat": "~0.1.3", - "grunt-zipstream": "~0.2.2" - }, - "keywords": [ - "forms", - "validation", - "validate" - ] -} diff --git a/thirdparty/jquery-validate/test/events.html b/thirdparty/jquery-validate/test/events.html deleted file mode 100644 index eba81b006..000000000 --- a/thirdparty/jquery-validate/test/events.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - -
-
- A simple comment form with submit validation and default messages -

- - -

- - -

-

- - -

-

- - -

-

- -

-
-
- - - - - diff --git a/thirdparty/jquery-validate/test/firebug/errorIcon.png b/thirdparty/jquery-validate/test/firebug/errorIcon.png deleted file mode 100644 index 2d75261bb675f5f878a9ca549340d11694287ea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 457 zcmV;)0XF`LP)5Ui~H0X8YDC6$Gxpb|xtYf@N==`2Jc z7Ah8ji(kR7VtwakC$}D$g(o{ZGjC>QZ;f+~bR8H|#%4hcOnLVm*j;w6MZq#Egs5(a zc4lEugK?iQ0QcYtDcH902T2xS;XcvY8O)TA|L_Qo0dkkJVlXBT;dmV(QXWLO$HEed zt}ftbg3DK{l45N>4BPBOtRiE?7^^l0JFaL_w@cLT6E&N;kZtyH3~NT_jk(q5@35sP zaxP8XaIwukAMZ)K?GhDNr$f|e@AO4;e+3u-uo^Lr*!;%I00000NkvXXu0mjfj3mDh diff --git a/thirdparty/jquery-validate/test/firebug/firebug.css b/thirdparty/jquery-validate/test/firebug/firebug.css deleted file mode 100644 index 1f041c4da..000000000 --- a/thirdparty/jquery-validate/test/firebug/firebug.css +++ /dev/null @@ -1,209 +0,0 @@ - -html, body { - margin: 0; - background: #FFFFFF; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - overflow: hidden; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.toolbar { - height: 14px; - border-top: 1px solid ThreeDHighlight; - border-bottom: 1px solid ThreeDShadow; - padding: 2px 6px; - background: ThreeDFace; -} - -.toolbarRight { - position: absolute; - top: 4px; - right: 6px; -} - -#log { - overflow: auto; - position: absolute; - left: 0; - width: 100%; -} - -#commandLine { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 18px; - border: none; - border-top: 1px solid ThreeDShadow; -} - -/************************************************************************************************/ - -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; -} - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - font-family: Monaco, monospace; - color: red; - white-space: pre; -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - font-family: Monaco, monospace; - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; -} - -/************************************************************************************************/ - -.logRow-info, -.logRow-error, -.logRow-warning { - background: #FFFFFF no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png); -} - -.errorMessage { - vertical-align: top; - color: #FF0000; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ - -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - margin-left: 16px; -} - -.nodeTag { - color: blue; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText, -.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; -} - -.nodeComment { - color: DarkGreen; -} - -/************************************************************************************************/ - -.propertyNameCell { - vertical-align: top; -} - -.propertyName { - font-weight: bold; -} diff --git a/thirdparty/jquery-validate/test/firebug/firebug.html b/thirdparty/jquery-validate/test/firebug/firebug.html deleted file mode 100644 index 861e63932..000000000 --- a/thirdparty/jquery-validate/test/firebug/firebug.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - Firebug - - - - -
- Clear - - Close - -
-
- - - - - diff --git a/thirdparty/jquery-validate/test/firebug/firebug.js b/thirdparty/jquery-validate/test/firebug/firebug.js deleted file mode 100644 index eb853b824..000000000 --- a/thirdparty/jquery-validate/test/firebug/firebug.js +++ /dev/null @@ -1,672 +0,0 @@ - -if (!("console" in window) || !("firebug" in console)) { -(function() -{ - window.console = - { - log: function() - { - logFormatted(arguments, ""); - }, - - debug: function() - { - logFormatted(arguments, "debug"); - }, - - info: function() - { - logFormatted(arguments, "info"); - }, - - warn: function() - { - logFormatted(arguments, "warning"); - }, - - error: function() - { - logFormatted(arguments, "error"); - }, - - assert: function(truth, message) - { - if (!truth) - { - var args = []; - for (var i = 1; i < arguments.length; ++i) - args.push(arguments[i]); - - logFormatted(args.length ? args : ["Assertion Failure"], "error"); - throw message ? message : "Assertion Failure"; - } - }, - - dir: function(object) - { - var html = []; - - var pairs = []; - for (var name in object) - { - try - { - pairs.push([name, object[name]]); - } - catch (exc) - { - } - } - - pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; }); - - html.push(''); - for (var i = 0; i < pairs.length; ++i) - { - var name = pairs[i][0], value = pairs[i][1]; - - html.push('', - '', ''); - } - html.push('
', - escapeHTML(name), ''); - appendObject(value, html); - html.push('
'); - - logRow(html, "dir"); - }, - - dirxml: function(node) - { - var html = []; - - appendNode(node, html); - logRow(html, "dirxml"); - }, - - group: function() - { - logRow(arguments, "group", pushGroup); - }, - - groupEnd: function() - { - logRow(arguments, "", popGroup); - }, - - time: function(name) - { - timeMap[name] = (new Date()).getTime(); - }, - - timeEnd: function(name) - { - if (name in timeMap) - { - var delta = (new Date()).getTime() - timeMap[name]; - logFormatted([name+ ":", delta+"ms"]); - delete timeMap[name]; - } - }, - - count: function() - { - this.warn(["count() not supported."]); - }, - - trace: function() - { - this.warn(["trace() not supported."]); - }, - - profile: function() - { - this.warn(["profile() not supported."]); - }, - - profileEnd: function() - { - }, - - clear: function() - { - consoleBody.innerHTML = ""; - }, - - open: function() - { - toggleConsole(true); - }, - - close: function() - { - if (frameVisible) - toggleConsole(); - } - }; - - // ******************************************************************************************** - - var consoleFrame = null; - var consoleBody = null; - var commandLine = null; - - var frameVisible = false; - var messageQueue = []; - var groupStack = []; - var timeMap = {}; - - var clPrefix = ">>> "; - - var isFirefox = navigator.userAgent.indexOf("Firefox") != -1; - var isIE = navigator.userAgent.indexOf("MSIE") != -1; - var isOpera = navigator.userAgent.indexOf("Opera") != -1; - var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1; - - // ******************************************************************************************** - - function toggleConsole(forceOpen) - { - frameVisible = forceOpen || !frameVisible; - if (consoleFrame) - consoleFrame.style.visibility = frameVisible ? "visible" : "hidden"; - else - waitForBody(); - } - - function focusCommandLine() - { - toggleConsole(true); - if (commandLine) - commandLine.focus(); - } - - function waitForBody() - { - if (document.body) - createFrame(); - else - setTimeout(waitForBody, 200); - } - - function createFrame() - { - if (consoleFrame) - return; - - window.onFirebugReady = function(doc) - { - window.onFirebugReady = null; - - var toolbar = doc.getElementById("toolbar"); - toolbar.onmousedown = onSplitterMouseDown; - - commandLine = doc.getElementById("commandLine"); - addEvent(commandLine, "keydown", onCommandLineKeyDown); - - addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown); - - consoleBody = doc.getElementById("log"); - layout(); - flush(); - } - - var baseURL = getFirebugURL(); - - consoleFrame = document.createElement("iframe"); - consoleFrame.setAttribute("src", baseURL+"/firebug.html"); - consoleFrame.setAttribute("frameBorder", "0"); - consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden"); - consoleFrame.style.zIndex = "2147483647"; - consoleFrame.style.position = "fixed"; - consoleFrame.style.width = "100%"; - consoleFrame.style.left = "0"; - consoleFrame.style.bottom = "0"; - consoleFrame.style.height = "200px"; - document.body.appendChild(consoleFrame); - } - - function getFirebugURL() - { - var scripts = document.getElementsByTagName("script"); - for (var i = 0; i < scripts.length; ++i) - { - if (scripts[i].src.indexOf("firebug.js") != -1) - { - var lastSlash = scripts[i].src.lastIndexOf("/"); - return scripts[i].src.substr(0, lastSlash); - } - } - } - - function evalCommandLine() - { - var text = commandLine.value; - commandLine.value = ""; - - logRow([clPrefix, text], "command"); - - var value; - try - { - value = eval(text); - } - catch (exc) - { - } - - console.log(value); - } - - function layout() - { - var toolbar = consoleBody.ownerDocument.getElementById("toolbar"); - var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight); - consoleBody.style.top = toolbar.offsetHeight + "px"; - consoleBody.style.height = height + "px"; - - commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px"; - } - - function logRow(message, className, handler) - { - if (consoleBody) - writeMessage(message, className, handler); - else - { - messageQueue.push([message, className, handler]); - waitForBody(); - } - } - - function flush() - { - var queue = messageQueue; - messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - writeMessage(queue[i][0], queue[i][1], queue[i][2]); - } - - function writeMessage(message, className, handler) - { - var isScrolledToBottom = - consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight; - - if (!handler) - handler = writeRow; - - handler(message, className); - - if (isScrolledToBottom) - consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight; - } - - function appendRow(row) - { - var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody; - container.appendChild(row); - } - - function writeRow(message, className) - { - var row = consoleBody.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - appendRow(row); - } - - function pushGroup(message, className) - { - logFormatted(message, className); - - var groupRow = consoleBody.ownerDocument.createElement("div"); - groupRow.className = "logGroup"; - var groupRowBox = consoleBody.ownerDocument.createElement("div"); - groupRowBox.className = "logGroupBox"; - groupRow.appendChild(groupRowBox); - appendRow(groupRowBox); - groupStack.push(groupRowBox); - } - - function popGroup() - { - groupStack.pop(); - } - - // ******************************************************************************************** - - function logFormatted(objects, className) - { - var html = []; - - var format = objects[0]; - var objIndex = 0; - - if (typeof(format) != "string") - { - format = ""; - objIndex = -1; - } - - var parts = parseFormat(format); - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - part.appender(object, html); - } - else - appendText(part, html); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - if (typeof(object) == "string") - appendText(object, html); - else - appendObject(object, html); - } - - logRow(html, className); - } - - function parseFormat(format) - { - var parts = []; - - var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/; - var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat}; - - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - var type = m[8] ? m[8] : m[5]; - var appender = type in appenderMap ? appenderMap[type] : appendObject; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({appender: appender, precision: precision}); - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - - return parts; - } - - function escapeHTML(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function objectToString(object) - { - try - { - return object+""; - } - catch (exc) - { - return null; - } - } - - // ******************************************************************************************** - - function appendText(object, html) - { - html.push(escapeHTML(objectToString(object))); - } - - function appendNull(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendString(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - } - - function appendInteger(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendFloat(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendFunction(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - } - - function appendObject(object, html) - { - try - { - if (object == undefined) - appendNull("undefined", html); - else if (object == null) - appendNull("null", html); - else if (typeof object == "string") - appendString(object, html); - else if (typeof object == "number") - appendInteger(object, html); - else if (typeof object == "function") - appendFunction(object, html); - else if (object.nodeType == 1) - appendSelector(object, html); - else if (typeof object == "object") - appendObjectFormatted(object, html); - else - appendText(object, html); - } - catch (exc) - { - } - } - - function appendObjectFormatted(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - } - - function appendSelector(object, html) - { - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - } - - function appendNode(node, html) - { - if (node.nodeType == 1) - { - html.push( - '
', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified) - continue; - - html.push(' ', attr.nodeName.toLowerCase(), - '="', escapeHTML(attr.nodeValue), - '"') - } - - if (node.firstChild) - { - html.push('>
'); - - for (var child = node.firstChild; child; child = child.nextSibling) - appendNode(child, html); - - html.push('
</', - node.nodeName.toLowerCase(), '>
'); - } - else - html.push('/>

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 z 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 IdgcHBf1d>Ca"; - - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName( "tbody" ).length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName( "link" ).length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains it's value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - div.innerHTML = ""; - - // Figure out if the W3C box model works as expected - div.style.width = div.style.paddingLeft = "1px"; - - body = document.getElementsByTagName( "body" )[ 0 ]; - // We use our own, invisible, body unless the body is already present - // in which case we use a div (#9239) - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - jQuery.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - support.boxModel = div.offsetWidth === 2; - - if ( "zoom" in div.style ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "

'); - } - else if (node.nodeType == 3) - { - html.push('
', escapeHTML(node.nodeValue), - '
'); - } - } - - // ******************************************************************************************** - - function addEvent(object, name, handler) - { - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); - } - - function removeEvent(object, name, handler) - { - if (document.all) - object.detachEvent("on"+name, handler); - else - object.removeEventListener(name, handler, false); - } - - function cancelEvent(event) - { - if (document.all) - event.cancelBubble = true; - else - event.stopPropagation(); - } - - function onError(msg, href, lineNo) - { - var html = []; - - var lastSlash = href.lastIndexOf("/"); - var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1); - - html.push( - '', msg, '', - '' - ); - - logRow(html, "error"); - }; - - function onKeyDown(event) - { - if (event.keyCode == 123) - toggleConsole(); - else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey - && (event.metaKey || event.ctrlKey)) - focusCommandLine(); - else - return; - - cancelEvent(event); - } - - function onSplitterMouseDown(event) - { - if (isSafari || isOpera) - return; - - addEvent(document, "mousemove", onSplitterMouseMove); - addEvent(document, "mouseup", onSplitterMouseUp); - - for (var i = 0; i < frames.length; ++i) - { - addEvent(frames[i].document, "mousemove", onSplitterMouseMove); - addEvent(frames[i].document, "mouseup", onSplitterMouseUp); - } - } - - function onSplitterMouseMove(event) - { - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - var clientY = event.clientY; - if (win != win.parent) - clientY += win.frameElement ? win.frameElement.offsetTop : 0; - - var height = consoleFrame.offsetTop + consoleFrame.clientHeight; - var y = height - clientY; - - consoleFrame.style.height = y + "px"; - layout(); - } - - function onSplitterMouseUp(event) - { - removeEvent(document, "mousemove", onSplitterMouseMove); - removeEvent(document, "mouseup", onSplitterMouseUp); - - for (var i = 0; i < frames.length; ++i) - { - removeEvent(frames[i].document, "mousemove", onSplitterMouseMove); - removeEvent(frames[i].document, "mouseup", onSplitterMouseUp); - } - } - - function onCommandLineKeyDown(event) - { - if (event.keyCode == 13) - evalCommandLine(); - else if (event.keyCode == 27) - commandLine.value = ""; - } - - window.onerror = onError; - addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown); - - if (document.documentElement.getAttribute("debug") == "true") - toggleConsole(true); -})(); -} diff --git a/thirdparty/jquery-validate/test/firebug/firebugx.js b/thirdparty/jquery-validate/test/firebug/firebugx.js deleted file mode 100644 index 5a467fc14..000000000 --- a/thirdparty/jquery-validate/test/firebug/firebugx.js +++ /dev/null @@ -1,10 +0,0 @@ - -if (!("console" in window) || !("firebug" in console)) -{ - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", - "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; - - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {} -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/test/firebug/infoIcon.png b/thirdparty/jquery-validate/test/firebug/infoIcon.png deleted file mode 100644 index da1e5334c19375c7855e04792661bf2cc15b7e14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmV+n0`vWeP)k!W#MOQK{ljl)GVz=%0?7rtE9wY7Lo;JgN;%aBBhkF zup$d#AvGJB@i#x7d!6%U9&aT1>bvKh+xgD9@4TZarC_79XA_3Y)u z4jj;IA&G`4T$SEtNOwJyD9b09DTwq1MCN*%!X+xO|0N{Rs4^;&b|i*sHEGPq;n|zOEfbH<6(;%L`k^mT)7z~ywlRx3h4?$ zl>}*o?-02Jb-IWCddBfMi57}>wIB`^Hlv*vh?pjx5|0aenzD001sDKWl9*QR=`djc O0000X+Z1;#G+8)`#`)nwDij+1|+};(+Jd*z{tojUrGNrgOti&26irp z_}33i3=gldFg&}%ydKD%4m4mlSOTPRRTp>8w%MHj-#%jkasQt=!|=bOgW><(yI^TB zesYWX|At9i|AA_qz?K0SLTh@t|9^bL1XtwZ!T_=ktQjT-!jEsTfHbZKahQM#GSy9g zGw=!jV;}@%)c=6I5d!peNPt)%qXt$R0@A3+&Ho=o(%2Y6D=A@WxvV2T-}@x_m?j12e;Kn75?FIa%Y*5~(_)p>;wfs>Yo>SSa9R12cEf^3|A z?HDV=w@(OLSFdJZ*t3U$;p|ydO|Ks_Gd#G$auApZ7BB&cJHLN2R-V|*!SL$`L^DVe z48y>e_e>0@wy}el)6tV$3kUcAYBiJJ3`|`A816m!$KYVc!0_$`6T_P)%nWzVvoQSm z#aIlqs1HRWRI?%|K>)EC$csSy9f(f>@eyb`{RmSF5MTfvB)oWs%O|`50000 - - - jQuery - Validation Test Suite - - - - - - - - - - - - - -

- jQuery Validation Plugin Test Suite - jQuery 1.6.4 - jQuery 1.7.2 - jQuery 1.8.3 - jQuery 1.9.0 - jQuery Latest (git) -

-
-
-

-
-

-
    - - - -
    -

    See this blog entry for more information.

    -

    - Here are some links in a normal paragraph: Google, - Google Groups. - This link has class="blog": - diveintomark - -

    -
    -

    Everything inside the red border is inside a div with id="foo".

    -

    This is a normal link: Yahoo

    -

    This link has class="blog": Simon Willison's Weblog

    - -
    -

    Try them out:

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

        -
        - -
        - -
          - -
          - - - - - - -
            -
          -
          - -
          - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
          - -
          - - - - - - - -
          - -
          - - - -
          - -
          -
          - - -
          -
          - -
          - -
          - -
          - -
          - -
          - -
          - -
          - - - - -
          - -
          - - -
          - -
          - - - - - - - - - - - - - -
          - -
          - - - - - -
          -
          - - - diff --git a/thirdparty/jquery-validate/test/jquery.js b/thirdparty/jquery-validate/test/jquery.js deleted file mode 100644 index e0f4119ab..000000000 --- a/thirdparty/jquery-validate/test/jquery.js +++ /dev/null @@ -1,25 +0,0 @@ -(function() { - -var parts = document.location.search.slice( 1 ).split( "&" ), - length = parts.length, - i = 0, - current, - version = "1.9.0", - file = "http://code.jquery.com/jquery-git.js"; - -for ( ; i < length; i++ ) { - current = parts[ i ].split( "=" ); - if ( current[ 0 ] === "jquery" ) { - version = current[ 1 ]; - break; - } -} - -if (version != "git") { - file = "../lib/jquery-" + version + ".js"; -} - - -document.write( "" ); - -})(); diff --git a/thirdparty/jquery-validate/test/large.html b/thirdparty/jquery-validate/test/large.html deleted file mode 100644 index 9e8a0e85d..000000000 --- a/thirdparty/jquery-validate/test/large.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - -
          -
          - A simple comment form with submit validation and default messages -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - - -

          - - -

          -

          - - -

          -

          - - -

          -

          - -

          -
          -
          - - - diff --git a/thirdparty/jquery-validate/test/messages.js b/thirdparty/jquery-validate/test/messages.js deleted file mode 100644 index ae7715cc7..000000000 --- a/thirdparty/jquery-validate/test/messages.js +++ /dev/null @@ -1,62 +0,0 @@ -module("messages"); - -test("predefined message not overwritten by addMethod(a, b, undefined)", function() { - var message = "my custom message"; - $.validator.messages.custom = message; - $.validator.addMethod("custom", function() {}); - deepEqual(message, $.validator.messages.custom); - delete $.validator.messages.custom; - delete $.validator.methods.custom; -}); - -test("group error messages", function() { - $.validator.addClassRules({ - requiredDateRange: {required:true, date:true, dateRange:true} - }); - $.validator.addMethod("dateRange", function() { - return new Date($("#fromDate").val()) < new Date($("#toDate").val()); - }, "Please specify a correct date range."); - var form = $("#dateRangeForm"); - form.validate({ - groups: { - dateRange: "fromDate toDate" - }, - errorPlacement: function(error) { - form.find(".errorContainer").append(error); - } - }); - ok( !form.valid() ); - equal( 1, form.find(".errorContainer *").length ); - equal( "Please enter a valid date.", form.find(".errorContainer label.error").text() ); - - $("#fromDate").val("12/03/2006"); - $("#toDate").val("12/01/2006"); - ok( !form.valid() ); - equal( "Please specify a correct date range.", form.find(".errorContainer label.error").text() ); - - $("#toDate").val("12/04/2006"); - ok( form.valid() ); - ok( form.find(".errorContainer label.error").is(":hidden") ); -}); - -test("read messages from metadata", function() { - var form = $("#testForm9"); - form.validate(); - var e = $("#testEmail9"); - e.valid(); - equal( form.find("label").text(), "required" ); - e.val("bla").valid(); - equal( form.find("label").text(), "email" ); -}); - - -test("read messages from metadata, with meta option specified, but no metadata in there", function() { - var form = $("#testForm1clean"); - form.validate({ - meta: "validate", - rules: { - firstname: "required" - } - }); - ok(!form.valid(), "not valid"); -}); diff --git a/thirdparty/jquery-validate/test/methods.js b/thirdparty/jquery-validate/test/methods.js deleted file mode 100644 index fac4813da..000000000 --- a/thirdparty/jquery-validate/test/methods.js +++ /dev/null @@ -1,945 +0,0 @@ -(function($) { - -function methodTest( methodName ) { - var v = jQuery("#form").validate(); - var method = $.validator.methods[methodName]; - var element = $("#firstname")[0]; - return function(value, param) { - element.value = value; - return method.call( v, value, element, param ); - }; -} - -module("methods"); - -test("default messages", function() { - var m = $.validator.methods; - $.each(m, function(key) { - ok( jQuery.validator.messages[key], key + " has a default message." ); - }); -}); - -test("digit", function() { - var method = methodTest("digits"); - ok( method( "123" ), "Valid digits" ); - ok(!method( "123.000" ), "Invalid digits" ); - ok(!method( "123.000,00" ), "Invalid digits" ); - ok(!method( "123.0.0,0" ), "Invalid digits" ); - ok(!method( "x123" ), "Invalid digits" ); - ok(!method( "100.100,0,0" ), "Invalid digits" ); -}); - -test("url", function() { - var method = methodTest("url"); - ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" ); - ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" ); - ok( method( "http://192.168.8.5" ), "Valid IP Address" ); - ok(!method( "http://192.168.8." ), "Invalid IP Address" ); - ok(!method( "http://bassistance" ), "Invalid url" ); // valid - ok(!method( "http://bassistance." ), "Invalid url" ); // valid - ok(!method( "http://bassistance,de" ), "Invalid url" ); - ok(!method( "http://bassistance;de" ), "Invalid url" ); - ok(!method( "http://.bassistancede" ), "Invalid url" ); - ok(!method( "bassistance.de" ), "Invalid url" ); -}); - -test("url2 (tld optional)", function() { - var method = methodTest("url2"); - ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" ); - ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" ); - ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" ); - ok( method( "http://192.168.8.5" ), "Valid IP Address" ); - ok(!method( "http://192.168.8." ), "Invalid IP Address" ); - ok( method( "http://bassistance" ), "Invalid url" ); - ok( method( "http://bassistance." ), "Invalid url" ); - ok(!method( "http://bassistance,de" ), "Invalid url" ); - ok(!method( "http://bassistance;de" ), "Invalid url" ); - ok(!method( "http://.bassistancede" ), "Invalid url" ); - ok(!method( "bassistance.de" ), "Invalid url" ); -}); - -test("email", function() { - var method = methodTest("email"); - ok( method( "name@domain.tld" ), "Valid email" ); - ok( method( "name@domain.tl" ), "Valid email" ); - ok( method( "bart+bart@tokbox.com" ), "Valid email" ); - ok( method( "bart+bart@tokbox.travel" ), "Valid email" ); - ok( method( "n@d.tld" ), "Valid email" ); - ok( method( "ole@føtex.dk"), "Valid email" ); - ok( method( "jörn@bassistance.de"), "Valid email" ); - ok( method( "bla.blu@g.mail.com"), "Valid email" ); - ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" ); - ok( method( "\"Scott González\"@example.com" ), "Valid email" ); - ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label - ok(!method( "name" ), "Invalid email" ); - ok(!method( "name@" ), "Invalid email" ); - ok(!method( "name@domain" ), "Invalid email" ); - ok(!method( "name.@domain.tld" ), "Invalid email" ); - ok(!method( "name,@domain.tld" ), "Invalid email" ); - ok(!method( "name;@domain.tld" ), "Invalid email" ); - ok(!method( "name;@domain.tld." ), "Invalid email" ); -}); - -test("email2 (tld optional)", function() { - var method = methodTest("email2"); - ok( method( "name@domain.tld" ), "Valid email" ); - ok( method( "name@domain.tl" ), "Valid email" ); - ok( method( "bart+bart@tokbox.com" ), "Valid email" ); - ok( method( "bart+bart@tokbox.travel" ), "Valid email" ); - ok( method( "n@d.tld" ), "Valid email" ); - ok( method( "ole@føtex.dk"), "Valid email" ); - ok( method( "jörn@bassistance.de"), "Valid email" ); - ok( method( "bla.blu@g.mail.com"), "Valid email" ); - ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" ); - ok( method( "\"Scott González\"@example.com" ), "Valid email" ); - ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label - ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label - ok(!method( "name" ), "Invalid email" ); - ok(!method( "name@" ), "Invalid email" ); - ok( method( "name@domain" ), "Invalid email" ); - ok(!method( "name.@domain.tld" ), "Invalid email" ); - ok(!method( "name,@domain.tld" ), "Invalid email" ); - ok(!method( "name;@domain.tld" ), "Invalid email" ); -}); - -test("number", function() { - var method = methodTest("number"); - ok( method( "123" ), "Valid number" ); - ok( method( "-123" ), "Valid number" ); - ok( method( "123,000" ), "Valid number" ); - ok( method( "-123,000" ), "Valid number" ); - ok( method( "123,000.00" ), "Valid number" ); - ok( method( "-123,000.00" ), "Valid number" ); - ok(!method( "123.000,00" ), "Invalid number" ); - ok(!method( "123.0.0,0" ), "Invalid number" ); - ok(!method( "x123" ), "Invalid number" ); - ok(!method( "100.100,0,0" ), "Invalid number" ); - - ok( method( "" ), "Blank is valid" ); - ok( method( "123" ), "Valid decimal" ); - ok( method( "123000" ), "Valid decimal" ); - ok( method( "123000.12" ), "Valid decimal" ); - ok( method( "-123000.12" ), "Valid decimal" ); - ok( method( "123.000" ), "Valid decimal" ); - ok( method( "123,000.00" ), "Valid decimal" ); - ok( method( "-123,000.00" ), "Valid decimal" ); - ok( method( ".100" ), "Valid decimal" ); - ok(!method( "1230,000.00" ), "Invalid decimal" ); - ok(!method( "123.0.0,0" ), "Invalid decimal" ); - ok(!method( "x123" ), "Invalid decimal" ); - ok(!method( "100.100,0,0" ), "Invalid decimal" ); -}); - -/* disabled for now, need to figure out how to test localized methods -test("numberDE", function() { - var method = methodTest("numberDE"); - ok( method( "123" ), "Valid numberDE" ); - ok( method( "-123" ), "Valid numberDE" ); - ok( method( "123.000" ), "Valid numberDE" ); - ok( method( "-123.000" ), "Valid numberDE" ); - ok( method( "123.000,00" ), "Valid numberDE" ); - ok( method( "-123.000,00" ), "Valid numberDE" ); - ok(!method( "123,000.00" ), "Invalid numberDE" ); - ok(!method( "123,0,0.0" ), "Invalid numberDE" ); - ok(!method( "x123" ), "Invalid numberDE" ); - ok(!method( "100,100.0.0" ), "Invalid numberDE" ); - - ok( method( "" ), "Blank is valid" ); - ok( method( "123" ), "Valid decimalDE" ); - ok( method( "123000" ), "Valid decimalDE" ); - ok( method( "123000,12" ), "Valid decimalDE" ); - ok( method( "-123000,12" ), "Valid decimalDE" ); - ok( method( "123.000" ), "Valid decimalDE" ); - ok( method( "123.000,00" ), "Valid decimalDE" ); - ok( method( "-123.000,00" ), "Valid decimalDE" ) - ok(!method( "123.0.0,0" ), "Invalid decimalDE" ); - ok(!method( "x123" ), "Invalid decimalDE" ); - ok(!method( "100,100.0.0" ), "Invalid decimalDE" ); -}); -*/ - -test("date", function() { - var method = methodTest("date"); - ok( method( "06/06/1990" ), "Valid date" ); - ok( method( "6/6/06" ), "Valid date" ); - ok(!method( "1990x-06-06" ), "Invalid date" ); -}); - -test("dateISO", function() { - var method = methodTest("dateISO"); - ok( method( "1990-06-06" ), "Valid date" ); - ok( method( "1990/06/06" ), "Valid date" ); - ok( method( "1990-6-6" ), "Valid date" ); - ok( method( "1990/6/6" ), "Valid date" ); - ok(!method( "1990-106-06" ), "Invalid date" ); - ok(!method( "190-06-06" ), "Invalid date" ); -}); - -/* disabled for now, need to figure out how to test localized methods -test("dateDE", function() { - var method = methodTest("dateDE"); - ok( method( "03.06.1984" ), "Valid dateDE" ); - ok( method( "3.6.84" ), "Valid dateDE" ); - ok(!method( "6-6-06" ), "Invalid dateDE" ); - ok(!method( "1990-06-06" ), "Invalid dateDE" ); - ok(!method( "06/06/1990" ), "Invalid dateDE" ); - ok(!method( "6/6/06" ), "Invalid dateDE" ); -}); -*/ - -test("required", function() { - var v = jQuery("#form").validate(), - method = $.validator.methods.required, - e = $('#text1, #text1b, #hidden2, #select1, #select2'); - ok( method.call( v, e[0].value, e[0]), "Valid text input" ); - ok(!method.call( v, e[1].value, e[1]), "Invalid text input" ); - ok(!method.call( v, e[1].value, e[2]), "Invalid text input" ); - - ok(!method.call( v, e[2].value, e[3]), "Invalid select" ); - ok( method.call( v, e[3].value, e[4]), "Valid select" ); - - e = $('#area1, #area2, #pw1, #pw2'); - ok( method.call( v, e[0].value, e[0]), "Valid textarea" ); - ok(!method.call( v, e[1].value, e[1]), "Invalid textarea" ); - ok( method.call( v, e[2].value, e[2]), "Valid password input" ); - ok(!method.call( v, e[3].value, e[3]), "Invalid password input" ); - - e = $('#radio1, #radio2, #radio3'); - ok(!method.call( v, e[0].value, e[0]), "Invalid radio" ); - ok( method.call( v, e[1].value, e[1]), "Valid radio" ); - ok( method.call( v, e[2].value, e[2]), "Valid radio" ); - - e = $('#check1, #check2'); - ok( method.call( v, e[0].value, e[0]), "Valid checkbox" ); - ok(!method.call( v, e[1].value, e[1]), "Invalid checkbox" ); - - e = $('#select1, #select2, #select3, #select4'); - ok(!method.call( v, e[0].value, e[0]), "Invalid select" ); - ok( method.call( v, e[1].value, e[1]), "Valid select" ); - ok( method.call( v, e[2].value, e[2]), "Valid select" ); - ok( method.call( v, e[3].value, e[3]), "Valid select" ); -}); - -test("required with dependencies", function() { - var v = jQuery("#form").validate(), - method = $.validator.methods.required, - e = $('#hidden2, #select1, #area2, #radio1, #check2'); - ok( method.call( v, e[0].value, e[0], "asffsaa" ), "Valid text input due to dependency not met" ); - ok(!method.call( v, e[0].value, e[0], "input" ), "Invalid text input" ); - ok( method.call( v, e[0].value, e[0], function() { return false; }), "Valid text input due to dependency not met" ); - ok(!method.call( v, e[0].value, e[0], function() { return true; }), "Invalid text input" ); - ok( method.call( v, e[1].value, e[1], "asfsfa" ), "Valid select due to dependency not met" ); - ok(!method.call( v, e[1].value, e[1], "input" ), "Invalid select" ); - ok( method.call( v, e[2].value, e[2], "asfsafsfa" ), "Valid textarea due to dependency not met" ); - ok(!method.call( v, e[2].value, e[2], "input" ), "Invalid textarea" ); - ok( method.call( v, e[3].value, e[3], "asfsafsfa" ), "Valid radio due to dependency not met" ); - ok(!method.call( v, e[3].value, e[3], "input" ), "Invalid radio" ); - ok( method.call( v, e[4].value, e[4], "asfsafsfa" ), "Valid checkbox due to dependency not met" ); - ok(!method.call( v, e[4].value, e[4], "input" ), "Invalid checkbox" ); -}); - -test("minlength", function() { - var v = jQuery("#form").validate(), - method = $.validator.methods.minlength, - param = 2, - e = $('#text1, #text1c, #text2, #text3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); - ok( method.call( v, e[3].value, e[3], param), "Valid text input" ); - - e = $('#check1, #check2, #check3'); - ok(!method.call( v, e[0].value, e[0], param), "Valid checkbox" ); - ok( method.call( v, e[1].value, e[1], param), "Valid checkbox" ); - ok( method.call( v, e[2].value, e[2], param), "Invalid checkbox" ); - - e = $('#select1, #select2, #select3, #select4, #select5'); - ok(method.call( v, e[0].value, e[0], param), "Valid select " + e[0].id ); - ok(!method.call( v, e[1].value, e[1], param), "Invalid select " + e[1].id ); - ok( method.call( v, e[2].value, e[2], param), "Valid select " + e[2].id ); - ok( method.call( v, e[3].value, e[3], param), "Valid select " + e[3].id ); - ok( method.call( v, e[4].value, e[4], param), "Valid select " + e[4].id ); -}); - -test("maxlength", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.maxlength, - param = 4, - e = $('#text1, #text2, #text3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); - - e = $('#check1, #check2, #check3'); - ok( method.call( v, e[0].value, e[0], param), "Valid checkbox" ); - ok( method.call( v, e[1].value, e[1], param), "Invalid checkbox" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid checkbox" ); - - e = $('#select1, #select2, #select3, #select4'); - ok( method.call( v, e[0].value, e[0], param), "Valid select" ); - ok( method.call( v, e[1].value, e[1], param), "Valid select" ); - ok( method.call( v, e[2].value, e[2], param), "Valid select" ); - ok(!method.call( v, e[3].value, e[3], param), "Invalid select" ); -}); - -test("rangelength", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.rangelength, - param = [2, 4], - e = $('#text1, #text2, #text3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); -}); - -test("min", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.min, - param = 8, - e = $('#value1, #value2, #value3'); - ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok( method.call( v, e[2].value, e[2], param), "Valid text input" ); -}); - -test("max", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.max, - param = 12, - e = $('#value1, #value2, #value3'); - ok( method.call( v, e[0].value, e[0], param), "Valid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); -}); - -test("range", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.range, - param = [4,12], - e = $('#value1, #value2, #value3'); - ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" ); - ok( method.call( v, e[1].value, e[1], param), "Valid text input" ); - ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" ); -}); - -test("equalTo", function() { - var v = jQuery("#form").validate(); - var method = $.validator.methods.equalTo, - e = $('#text1, #text2'); - ok( method.call( v, "Test", e[0], "#text1" ), "Text input" ); - ok( method.call( v, "T", e[1], "#text2" ), "Another one" ); -}); - -test("creditcard", function() { - var method = methodTest("creditcard"); - ok( method( "446-667-651" ), "Valid creditcard number" ); - ok( method( "446 667 651" ), "Valid creditcard number" ); - ok(!method( "asdf" ), "Invalid creditcard number" ); -}); - -test("extension", function() { - var method = methodTest("extension"); - ok( method( "picture.gif" ), "Valid default accept type" ); - ok( method( "picture.jpg" ), "Valid default accept type" ); - ok( method( "picture.jpeg" ), "Valid default accept type" ); - ok( method( "picture.png" ), "Valid default accept type" ); - ok(!method( "picture.pgn" ), "Invalid default accept type" ); - - var v = jQuery("#form").validate(); - method = function(value, param) { - return $.validator.methods.extension.call(v, value, $('#text1')[0], param); - }; - ok( method( "picture.doc", "doc" ), "Valid custom accept type" ); - ok( method( "picture.pdf", "doc|pdf" ), "Valid custom accept type" ); - ok( method( "picture.pdf", "pdf|doc" ), "Valid custom accept type" ); - ok(!method( "picture.pdf", "doc" ), "Invalid custom accept type" ); - ok(!method( "picture.doc", "pdf" ), "Invalid custom accept type" ); - - ok( method( "picture.pdf", "doc,pdf" ), "Valid custom accept type, comma seperated" ); - ok( method( "picture.pdf", "pdf,doc" ), "Valid custom accept type, comma seperated" ); - ok(!method( "picture.pdf", "gop,top" ), "Invalid custom accept type, comma seperated" ); -}); - -test("remote", function() { - expect(7); - stop(); - var e = $("#username"); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: "users.php" - } - }, - messages: { - username: { - required: "Please", - remote: jQuery.validator.format("{0} in use") - } - }, - submitHandler: function() { - ok( false, "submitHandler may never be called when validating only elements"); - } - }); - $(document).ajaxStop(function() { - $(document).unbind("ajaxStop"); - equal( 1, v.size(), "There must be one error" ); - equal( "Peter in use", v.errorList[0].message ); - - $(document).ajaxStop(function() { - $(document).unbind("ajaxStop"); - equal( 1, v.size(), "There must be one error" ); - equal( "Peter2 in use", v.errorList[0].message ); - start(); - }); - e.val("Peter2"); - strictEqual( v.element(e), true, "new value, new request; dependency-mismatch considered as valid though" ); - }); - strictEqual( v.element(e), false, "invalid element, nothing entered yet" ); - e.val("Peter"); - strictEqual( v.element(e), true, "still invalid, because remote validation must block until it returns; dependency-mismatch considered as valid though" ); -}); - -test("remote, customized ajax options", function() { - expect(2); - stop(); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: { - url: "users.php", - type: "POST", - beforeSend: function(request, settings) { - deepEqual(settings.type, "POST"); - deepEqual(settings.data, "username=asdf&email=email.com"); - }, - data: { - email: function() { - return "email.com"; - } - }, - complete: function() { - start(); - } - } - } - } - }); - $("#username").val("asdf"); - $("#userForm").valid(); -}); - - -test("remote extensions", function() { - expect(5); - stop(); - var e = $("#username"); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: "users2.php" - } - }, - messages: { - username: { - required: "Please" - } - }, - submitHandler: function() { - ok( false, "submitHandler may never be called when validating only elements"); - } - }); - $(document).ajaxStop(function() { - $(document).unbind("ajaxStop"); - equal( 1, v.size(), "There must be one error" ); - equal( v.errorList[0].message, "asdf is already taken, please try something else" ); - v.element(e); - equal( v.errorList[0].message, "asdf is already taken, please try something else", "message doesn't change on revalidation" ); - start(); - }); - strictEqual( v.element(e), false, "invalid element, nothing entered yet" ); - e.val("asdf"); - strictEqual( v.element(e), true, "still invalid, because remote validation must block until it returns; dependency-mismatch considered as valid though" ); -}); - -test("remote radio correct value sent", function() { - expect(1); - stop(); - var e = $("#testForm10Radio2"); - e.attr('checked', 'checked'); - var v = $("#testForm10").validate({ - rules: { - testForm10Radio: { - required: true, - remote: { - url: "echo.php", - dataType: "json", - success: function(data) { - equal( data['testForm10Radio'], '2', ' correct radio value sent' ); - start(); - } - } - } - } - }); - - v.element(e); -}); - -test("remote reset clear old value", function() { - expect(1); - stop(); - var e = $("#username"); - var v = $("#userForm").validate({ - rules: { - username: { - required: true, - remote: { - url: "echo.php", - dataFilter: function(data) { - var json = JSON.parse(data); - if(json.username === 'asdf') { - return "\"asdf is already taken\""; - } - return "\"" + true + "\""; - } - } - } - } - }); - $(document).ajaxStop(function() { - var waitTimeout; - - $(document).unbind("ajaxStop"); - - - $(document).ajaxStop(function() { - clearTimeout(waitTimeout); - ok( true, "Remote request sent to server" ); - start(); - }); - - - v.resetForm(); - e.val("asdf"); - waitTimeout = setTimeout(function() { - ok( false, "Remote server did not get request"); - start(); - }, 200); - v.element(e); - }); - e.val("asdf"); - v.element(e); -}); - -module("additional methods"); - -test("phone (us)", function() { - var method = methodTest("phoneUS"); - ok( method( "1(212)-999-2345" ), "Valid us phone number" ); - ok( method( "212 999 2344" ), "Valid us phone number" ); - ok( method( "212-999-0983" ), "Valid us phone number" ); - ok(!method( "111-123-5434" ), "Invalid us phone number" ); - ok(!method( "212 123 4567" ), "Invalid us phone number" ); -}); - -test("phoneUK", function() { - var method = methodTest("phoneUK"); - ok( method( "07222 555555" ), "Valid UK Phone Number" ); - ok( method( "(07222) 555555" ), "Valid UK Phone Number" ); - ok( method( "+44 7222 555 555" ), "Valid UK Phone Number" ); - ok(!method( "7222 555555" ), "Invalid UK Phone Number" ); - ok(!method( "+44 07222 555555" ), "Invalid UK Phone Number" ); -}); - -test("mobileUK", function() { - var method = methodTest("mobileUK"); - ok( method( "07734234323" ), "Valid UK Mobile Number" ); - ok( method( "+447734234323" ), "Valid UK Mobile Number" ); - ok(!method( "07034234323" ), "Invalid UK Mobile Number" ); - ok(!method( "0753423432" ), "Invalid UK Mobile Number" ); - ok(!method( "07604234323" ), "Invalid UK Mobile Number" ); - ok(!method( "077342343234" ), "Invalid UK Mobile Number" ); - ok(!method( "044342343234" ), "Invalid UK Mobile Number" ); - ok(!method( "+44753423432" ), "Invalid UK Mobile Number" ); - ok(!method( "+447604234323" ), "Invalid UK Mobile Number" ); - ok(!method( "+4477342343234" ), "Invalid UK Mobile Number" ); - ok(!method( "+4444342343234" ), "Invalid UK Mobile Number" ); -}); - -test("dateITA", function() { - var method = methodTest("dateITA"); - ok( method( "01/01/1900" ), "Valid date ITA" ); - ok(!method( "01/13/1990" ), "Invalid date ITA" ); - ok(!method( "01.01.1900" ), "Invalid date ITA" ); - ok(!method( "01/01/199" ), "Invalid date ITA" ); -}); - -test("iban", function() { - var method = methodTest("iban"); - ok( method( "NL20INGB0001234567"), "Valid IBAN"); - ok( method( "DE68 2105 0170 0012 3456 78"), "Valid IBAN"); - ok( method( "NL20 INGB0001234567"), "Valid IBAN: invalid spacing"); - ok( method( "NL20 INGB 00 0123 4567"), "Valid IBAN: invalid spacing"); - ok( method( "XX40INGB000123456712341234"), "Valid (more or less) IBAN: unknown country, but checksum OK"); - - ok(!method( "NL20INGB000123456"), "Invalid IBAN: too short"); - ok(!method( "NL20INGB00012345678"), "Invalid IBAN: too long"); - ok(!method( "NL20INGB0001234566"), "Invalid IBAN: checksum incorrect"); - ok(!method( "DE68 2105 0170 0012 3456 7"), "Invalid IBAN: too short"); - ok(!method( "DE68 2105 0170 0012 3456 789"), "Invalid IBAN: too long"); - ok(!method( "DE68 2105 0170 0012 3456 79"), "Invalid IBAN: checksum incorrect"); - - ok(!method( "NL54INGB00012345671234"), "Invalid IBAN too long, BUT CORRECT CHECKSUM"); - ok(!method( "XX00INGB000123456712341234"), "Invalid IBAN: unknown country and checksum incorrect"); - - // sample IBANs for different countries - ok( method( "AL47 2121 1009 0000 0002 3569 8741"), "Valid IBAN - AL"); - ok( method( "AD12 0001 2030 2003 5910 0100"), "Valid IBAN - AD"); - ok( method( "AT61 1904 3002 3457 3201"), "Valid IBAN - AT"); - ok( method( "AZ21 NABZ 0000 0000 1370 1000 1944"), "Valid IBAN - AZ"); - ok( method( "BH67 BMAG 0000 1299 1234 56"), "Valid IBAN - BH"); - ok( method( "BE62 5100 0754 7061"), "Valid IBAN - BE"); - ok( method( "BA39 1290 0794 0102 8494"), "Valid IBAN - BA"); - ok( method( "BG80 BNBG 9661 1020 3456 78"), "Valid IBAN - BG"); - ok( method( "HR12 1001 0051 8630 0016 0"), "Valid IBAN - HR"); - ok( method( "CH93 0076 2011 6238 5295 7"), "Valid IBAN - CH"); - ok( method( "CY17 0020 0128 0000 0012 0052 7600"), "Valid IBAN - CY"); - ok( method( "CZ65 0800 0000 1920 0014 5399"), "Valid IBAN - CZ"); - ok( method( "DK50 0040 0440 1162 43"), "Valid IBAN - DK"); - ok( method( "EE38 2200 2210 2014 5685"), "Valid IBAN - EE"); - ok( method( "FO97 5432 0388 8999 44"), "Valid IBAN - FO"); - ok( method( "FI21 1234 5600 0007 85"), "Valid IBAN - FI"); - ok( method( "FR14 2004 1010 0505 0001 3M02 606"), "Valid IBAN - FR"); - ok( method( "GE29 NB00 0000 0101 9049 17"), "Valid IBAN - GE"); - ok( method( "DE89 3704 0044 0532 0130 00"), "Valid IBAN - DE"); - ok( method( "GI75 NWBK 0000 0000 7099 453"), "Valid IBAN - GI"); - ok( method( "GR16 0110 1250 0000 0001 2300 695"), "Valid IBAN - GR"); - ok( method( "GL56 0444 9876 5432 10"), "Valid IBAN - GL"); - ok( method( "HU42 1177 3016 1111 1018 0000 0000"), "Valid IBAN - HU"); - ok( method( "IS14 0159 2600 7654 5510 7303 39"), "Valid IBAN - IS"); - ok( method( "IE29 AIBK 9311 5212 3456 78"), "Valid IBAN - IE"); - ok( method( "IL62 0108 0000 0009 9999 999"), "Valid IBAN - IL"); - ok( method( "IT40 S054 2811 1010 0000 0123 456"), "Valid IBAN - IT"); - ok( method( "LV80 BANK 0000 4351 9500 1"), "Valid IBAN - LV"); - ok( method( "LB62 0999 0000 0001 0019 0122 9114"), "Valid IBAN - LB"); - ok( method( "LI21 0881 0000 2324 013A A"), "Valid IBAN - LI"); - ok( method( "LT12 1000 0111 0100 1000"), "Valid IBAN - LT"); - ok( method( "LU28 0019 4006 4475 0000"), "Valid IBAN - LU"); - ok( method( "MK07 2501 2000 0058 984"), "Valid IBAN - MK"); - ok( method( "MT84 MALT 0110 0001 2345 MTLC AST0 01S"), "Valid IBAN - MT"); - ok( method( "MU17 BOMM 0101 1010 3030 0200 000M UR"), "Valid IBAN - MU"); - ok( method( "MD24 AG00 0225 1000 1310 4168"), "Valid IBAN - MD"); - ok( method( "MC93 2005 2222 1001 1223 3M44 555"), "Valid IBAN - MC"); - ok( method( "ME25 5050 0001 2345 6789 51"), "Valid IBAN - ME"); - ok( method( "NL39 RABO 0300 0652 64"), "Valid IBAN - NL"); - ok( method( "NO93 8601 1117 947"), "Valid IBAN - NO"); - ok( method( "PK36 SCBL 0000 0011 2345 6702"), "Valid IBAN - PK"); - ok( method( "PL60 1020 1026 0000 0422 7020 1111"), "Valid IBAN - PL"); - ok( method( "PT50 0002 0123 1234 5678 9015 4"), "Valid IBAN - PT"); - ok( method( "RO49 AAAA 1B31 0075 9384 0000"), "Valid IBAN - RO"); - ok( method( "SM86 U032 2509 8000 0000 0270 100"), "Valid IBAN - SM"); - ok( method( "SA03 8000 0000 6080 1016 7519"), "Valid IBAN - SA"); - ok( method( "RS35 2600 0560 1001 6113 79"), "Valid IBAN - RS"); - ok( method( "SK31 1200 0000 1987 4263 7541"), "Valid IBAN - SK"); - ok( method( "SI56 1910 0000 0123 438"), "Valid IBAN - SI"); - ok( method( "ES80 2310 0001 1800 0001 2345"), "Valid IBAN - ES"); - ok( method( "SE35 5000 0000 0549 1000 0003"), "Valid IBAN - SE"); - ok( method( "CH93 0076 2011 6238 5295 7"), "Valid IBAN - CH"); - ok( method( "TN59 1000 6035 1835 9847 8831"), "Valid IBAN - TN"); - ok( method( "TR33 0006 1005 1978 6457 8413 26"), "Valid IBAN - TR"); - ok( method( "AE07 0331 2345 6789 0123 456"), "Valid IBAN - AE"); - ok( method( "GB29 NWBK 6016 1331 9268 19"), "Valid IBAN - GB"); -}); - -test("dateNL", function() { - var method = methodTest("dateNL"); - ok( method( "01-01-1900" ), "Valid date NL" ); - ok( method( "01.01.1900" ), "Valid date NL" ); - ok( method( "01/01/1900" ), "Valid date NL" ); - ok( method( "01-01-00" ), "Valid date NL" ); - ok( method( "1-01-1900" ), "Valid date NL" ); - ok( method( "10-10-1900" ), "Valid date NL" ); - ok(!method( "0-01-1900" ), "Invalid date NL" ); - ok(!method( "00-01-1900" ), "Invalid date NL" ); - ok(!method( "35-01-1990" ), "Invalid date NL" ); - ok(!method( "01.01.190" ), "Invalid date NL" ); -}); - -test("phoneNL", function() { - var method = methodTest("phoneNL"); - ok( method( "0701234567"), "Valid phone NL"); - ok( method( "0687654321"), "Valid phone NL"); - ok( method( "020-1234567"), "Valid phone NL"); - ok( method( "020 - 12 34 567"), "Valid phone NL"); - ok( method( "010-2345678"), "Valid phone NL"); - ok( method( "+3120-1234567"), "Valid phone NL"); - ok( method( "+31(0)10-2345678"), "Valid phone NL"); - ok(!method( "020-123456"), "Invalid phone NL: too short"); - ok(!method( "020-12345678"), "Invalid phone NL: too long"); - ok(!method( "-0201234567"), "Invalid phone NL"); - ok(!method( "+310201234567"), "Invalid phone NL: no 0 after +31 allowed"); -}); - -test("mobileNL", function() { - var method = methodTest("mobileNL"); - ok( method( "0612345678"), "Valid NL Mobile Number"); - ok( method( "06-12345678"), "Valid NL Mobile Number"); - ok( method( "06-12 345 678"), "Valid NL Mobile Number"); - ok( method( "+316-12345678"), "Valid NL Mobile Number"); - ok( method( "+31(0)6-12345678"), "Valid NL Mobile Number"); - ok(!method( "abcdefghij"), "Invalid NL Mobile Number: text"); - ok(!method( "0123456789"), "Invalid NL Mobile Number: should start with 06"); - ok(!method( "0823456789"), "Invalid NL Mobile Number: should start with 06"); - ok(!method( "06-1234567"), "Invalid NL Mobile Number: too short"); - ok(!method( "06-123456789"), "Invalid NL Mobile Number: too long"); - ok(!method( "-0612345678"), "Invalid NL Mobile Number"); - ok(!method( "+310612345678"), "Invalid NL Mobile Number: no 0 after +31 allowed"); -}); - -test("postalcodeNL", function() { - var method = methodTest("postalcodeNL"); - ok( method( "1234AB"), "Valid NL Postal Code"); - ok( method( "1234ab"), "Valid NL Postal Code"); - ok( method( "1234 AB"), "Valid NL Postal Code"); - ok( method( "6789YZ"), "Valid NL Postal Code"); - ok(!method( "123AA"), "Invalid NL Postal Code: not enough digits"); - ok(!method( "12345ZZ"), "Invalid NL Postal Code: too many digits"); - ok(!method( "1234 AA"), "Invalid NL Postal Code: too many spaces"); - ok(!method( "AA1234"), "Invalid NL Postal Code"); - ok(!method( "1234-AA"), "Invalid NL Postal Code"); -}); - -test("bankaccountNL", function() { - var method = methodTest("bankaccountNL"); - ok( method( "755490975"), "Valid NL bank account"); - ok( method( "75 54 90 975"), "Valid NL bank account"); - ok( method( "123456789"), "Valid NL bank account"); - ok( method( "12 34 56 789"), "Valid NL bank account"); - ok(!method( "12 3456789"), "Valid NL bank account: inconsistent spaces"); - ok(!method( "123 45 67 89"), "Valid NL bank account: incorrect spaces"); - ok(!method( "755490971"), "Invalid NL bank account"); - ok(!method( "755490973"), "Invalid NL bank account"); - ok(!method( "755490979"), "Invalid NL bank account"); - ok(!method( "123456781"), "Invalid NL bank account"); - ok(!method( "123456784"), "Invalid NL bank account"); - ok(!method( "123456788"), "Invalid NL bank account"); -}); - -test("giroaccountNL", function() { - var method = methodTest("giroaccountNL"); - ok( method( "123"), "Valid NL giro account"); - ok( method( "1234567"), "Valid NL giro account"); - ok(!method( "123456788"), "Invalid NL giro account"); -}); - -test("bankorgiroaccountNL", function() { - var method = methodTest("bankorgiroaccountNL"); - ok( method( "123"), "Valid NL giro account"); - ok( method( "1234567"), "Valid NL giro account"); - ok( method( "123456789"), "Valid NL bank account"); - ok(!method( "12345678"), "Invalid NL bank or giro account"); - ok(!method( "123456788"), "Invalid NL bank or giro account"); -}); - -test("time", function() { - var method = methodTest("time"); - ok( method( "00:00" ), "Valid time, lower bound" ); - ok( method( "23:59" ), "Valid time, upper bound" ); - ok(!method( "12" ), "Invalid time" ); - ok(!method( "29:59" ), "Invalid time" ); - ok(!method( "00:60" ), "Invalid time" ); - ok(!method( "24:60" ), "Invalid time" ); - ok(!method( "24:00" ), "Invalid time" ); - ok(!method( "30:00" ), "Invalid time" ); - ok(!method( "29:59" ), "Invalid time" ); - ok(!method( "120:00" ), "Invalid time" ); - ok(!method( "12:001" ), "Invalid time" ); - ok(!method( "12:00a" ), "Invalid time" ); -}); - -test("time12h", function() { - var method = methodTest("time12h"); - ok( method( "12:00 AM" ), "Valid time, lower bound, am" ); - ok( method( "11:59 AM" ), "Valid time, upper bound, am" ); - ok( method( "12:00AM" ), "Valid time, no space, am" ); - ok( method( "12:00PM" ), "Valid time, no space, pm" ); - ok( method( "12:00 PM" ), "Valid time, lower bound, pm" ); - ok( method( "11:59 PM" ), "Valid time, upper bound, pm" ); - ok( method( "11:59 am" ), "Valid time, also accept lowercase" ); - ok( method( "11:59 pm" ), "Valid time, also accept lowercase" ); - ok( method( "1:59 pm" ), "Valid time, single hour, no leading 0" ); - ok( method( "01:59 pm" ), "Valid time, single hour, leading 0" ); - ok(!method( "12:00" ), "Invalid time" ); - ok(!method( "9" ), "Invalid time" ); - ok(!method( "9 am"), "Invalid time" ); - ok(!method( "12:61 am" ), "Invalid time" ); - ok(!method( "13:00 am" ), "Invalid time" ); - ok(!method( "00:00 am" ), "Invalid time" ); -}); - -test("minWords", function() { - var method = methodTest("minWords"); - ok( method( "hello worlds", 2 ), "plain text, valid" ); - ok( method( "hello world", 2 ), "html, valid" ); - ok(!method( "hello", 2 ), "plain text, invalid" ); - ok(!method( "world", 2 ), "html, invalid" ); - ok(!method( "world
          ", 2 ), "html, invalid" ); -}); - -test("maxWords", function() { - var method = methodTest("maxWords"); - ok( method( "hello", 2 ), "plain text, valid" ); - ok( method( "world", 2 ), "html, valid" ); - ok( method( "world
          ", 2 ), "html, valid" ); - ok( method( "hello worlds", 2 ), "plain text, valid" ); - ok( method( "hello world", 2 ), "html, valid" ); - ok(!method( "hello 123 world", 2 ), "plain text, invalid" ); - ok(!method( "hello 123 world", 2 ), "html, invalid" ); -}); - -test("rangeWords", function() { - var method = methodTest("rangeWords"); - ok( method( "hello", [0, 2] ), "plain text, valid" ); - ok( method( "hello worlds", [0, 2] ), "plain text, valid" ); - ok( method( "hello world", [0, 2] ), "html, valid" ); - ok(!method( "hello worlds what is up", [0, 2] ), "plain text, invalid" ); - ok(!method( "Hello world hello", [0, 2] ), "html, invalid" ); -}); - -test("pattern", function() { - var method = methodTest("pattern"); - ok( method( "AR1004", "AR\\d{4}" ), "Correct format for the given RegExp" ); - ok( method( "AR1004", /^AR\d{4}$/ ), "Correct format for the given RegExp" ); - ok(!method( "BR1004", /^AR\d{4}$/ ), "Invalid format for the given RegExp" ); -}); - -function testCardTypeByNumber(number, cardname, expected) { - $("#cardnumber").val(number); - var actual = $("#ccform").valid(); - equal(actual, expected, $.format("Expect card number {0} to validate to {1}, actually validated to ", number, expected)); -} - -test('creditcardtypes, all', function() { - $("#ccform").validate({ - rules: { - cardnumber: { - creditcard: true, - creditcardtypes: { - all: true - } - } - } - }); - - testCardTypeByNumber( "4111-1111-1111-1111", "VISA", true ); - testCardTypeByNumber( "5111-1111-1111-1118", "MasterCard", true ); - testCardTypeByNumber( "6111-1111-1111-1116", "Discover", true ); - testCardTypeByNumber( "3400-0000-0000-009", "AMEX", true ); - - testCardTypeByNumber( "4111-1111-1111-1110", "VISA", false ); - testCardTypeByNumber( "5432-1111-1111-1111", "MasterCard", false ); - testCardTypeByNumber( "6611-6611-6611-6611", "Discover", false ); - testCardTypeByNumber( "3777-7777-7777-7777", "AMEX", false ); -}); - -test('creditcardtypes, visa', function() { - $("#ccform").validate({ - rules: { - cardnumber: { - creditcard: true, - creditcardtypes: { - visa: true - } - } - } - }); - - testCardTypeByNumber( "4111-1111-1111-1111", "VISA", true ); - testCardTypeByNumber( "5111-1111-1111-1118", "MasterCard", false ); - testCardTypeByNumber( "6111-1111-1111-1116", "Discover", false ); - testCardTypeByNumber( "3400-0000-0000-009", "AMEX", false ); -}); - -test('creditcardtypes, mastercard', function() { - $("#ccform").validate({ - rules: { - cardnumber: { - creditcard: true, - creditcardtypes: { - mastercard: true - } - } - } - }); - - testCardTypeByNumber( "5111-1111-1111-1118", "MasterCard", true ); - testCardTypeByNumber( "6111-1111-1111-1116", "Discover", false ); - testCardTypeByNumber( "3400-0000-0000-009", "AMEX", false ); - testCardTypeByNumber( "4111-1111-1111-1111", "VISA", false ); -}); - -function fillFormWithValuesAndExpect(formSelector, inputValues, expected) { - for (var i=0; i < inputValues.length; i++) { - $(formSelector + ' input:eq(' + i + ')').val(inputValues[i]); - } - var actual = $(formSelector).valid(); - equal(actual, expected, $.format("Filled inputs of form '{0}' with {1} values ({2})", formSelector, inputValues.length, inputValues.toString())); - -} - -test('require_from_group', function() { - $("#productInfo").validate({ - rules: { - partnumber: {require_from_group: [2,".productInfo"]}, - description: {require_from_group: [2,".productInfo"]}, - discount: {require_from_group: [2,".productInfo"]} - } - }); - - fillFormWithValuesAndExpect('#productInfo', [], false); - fillFormWithValuesAndExpect('#productInfo', [123], false); - $('#productInfo input[type="checkbox"]').attr('checked', 'checked'); - fillFormWithValuesAndExpect('#productInfo', [123], true); - $('#productInfo input[type="checkbox"]').removeAttr('checked'); - fillFormWithValuesAndExpect('#productInfo', [123, 'widget'], true); - fillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true); - fillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true); -}); - -test('skip_or_fill_minimum', function() { - $("#productInfo").validate({ - rules: { - partnumber: {skip_or_fill_minimum: [2,".productInfo"]}, - description: {skip_or_fill_minimum: [2,".productInfo"]}, - color: {skip_or_fill_minimum: [2,".productInfo"]} - } - }); - - fillFormWithValuesAndExpect('#productInfo', [], true); - fillFormWithValuesAndExpect('#productInfo', [123], false); - fillFormWithValuesAndExpect('#productInfo', [123, 'widget'], true); - fillFormWithValuesAndExpect('#productInfo', [123, 'widget', 'red'], true); -}); - -test("zipcodeUS", function() { - var method = methodTest("zipcodeUS"); - ok( method( "12345" ), "Valid zip" ); - ok( method( "12345-2345" ), "Valid zip" ); - ok(!method( "1" ), "Invalid zip" ); - ok(!method( "1234" ), "Invalid zip" ); - ok(!method( "123-23" ), "Invalid zip" ); - ok(!method( "12345-43" ), "Invalid zip" ); -}); - -})(jQuery); diff --git a/thirdparty/jquery-validate/test/qunit/qunit.css b/thirdparty/jquery-validate/test/qunit/qunit.css deleted file mode 100644 index 55970e006..000000000 --- a/thirdparty/jquery-validate/test/qunit/qunit.css +++ /dev/null @@ -1,235 +0,0 @@ -/** - * QUnit v1.10.0 - A JavaScript Unit Testing Framework - * - * http://qunitjs.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -/** Font Family and Sizes */ - -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; -} - -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } -#qunit-tests { font-size: smaller; } - - -/** Resets */ - -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { - margin: 0; - padding: 0; -} - - -/** Header */ - -#qunit-header { - padding: 0.5em 0 0.5em 1em; - - color: #8699a4; - background-color: #0d3349; - - font-size: 1.5em; - line-height: 1em; - font-weight: normal; - - border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - -webkit-border-top-right-radius: 5px; - -webkit-border-top-left-radius: 5px; -} - -#qunit-header a { - text-decoration: none; - color: #c2ccd1; -} - -#qunit-header a:hover, -#qunit-header a:focus { - color: #fff; -} - -#qunit-testrunner-toolbar label { - display: inline-block; - padding: 0 .5em 0 .1em; -} - -#qunit-banner { - height: 5px; -} - -#qunit-testrunner-toolbar { - padding: 0.5em 0 0.5em 2em; - color: #5E740B; - background-color: #eee; - overflow: hidden; -} - -#qunit-userAgent { - padding: 0.5em 0 0.5em 2.5em; - background-color: #2b81af; - color: #fff; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} - -#qunit-modulefilter-container { - float: right; -} - -/** Tests: Pass/Fail */ - -#qunit-tests { - list-style-position: inside; -} - -#qunit-tests li { - padding: 0.4em 0.5em 0.4em 2.5em; - border-bottom: 1px solid #fff; - list-style-position: inside; -} - -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { - display: none; -} - -#qunit-tests li strong { - cursor: pointer; -} - -#qunit-tests li a { - padding: 0.5em; - color: #c2ccd1; - text-decoration: none; -} -#qunit-tests li a:hover, -#qunit-tests li a:focus { - color: #000; -} - -#qunit-tests ol { - margin-top: 0.5em; - padding: 0.5em; - - background-color: #fff; - - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; -} - -#qunit-tests table { - border-collapse: collapse; - margin-top: .2em; -} - -#qunit-tests th { - text-align: right; - vertical-align: top; - padding: 0 .5em 0 0; -} - -#qunit-tests td { - vertical-align: top; -} - -#qunit-tests pre { - margin: 0; - white-space: pre-wrap; - word-wrap: break-word; -} - -#qunit-tests del { - background-color: #e0f2be; - color: #374e0c; - text-decoration: none; -} - -#qunit-tests ins { - background-color: #ffcaca; - color: #500; - text-decoration: none; -} - -/*** Test Counts */ - -#qunit-tests b.counts { color: black; } -#qunit-tests b.passed { color: #5E740B; } -#qunit-tests b.failed { color: #710909; } - -#qunit-tests li li { - padding: 5px; - background-color: #fff; - border-bottom: none; - list-style-position: inside; -} - -/*** Passing Styles */ - -#qunit-tests li li.pass { - color: #3c510c; - background-color: #fff; - border-left: 10px solid #C6E746; -} - -#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } -#qunit-tests .pass .test-name { color: #366097; } - -#qunit-tests .pass .test-actual, -#qunit-tests .pass .test-expected { color: #999999; } - -#qunit-banner.qunit-pass { background-color: #C6E746; } - -/*** Failing Styles */ - -#qunit-tests li li.fail { - color: #710909; - background-color: #fff; - border-left: 10px solid #EE5757; - white-space: pre; -} - -#qunit-tests > li:last-child { - border-radius: 0 0 5px 5px; - -moz-border-radius: 0 0 5px 5px; - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; -} - -#qunit-tests .fail { color: #000000; background-color: #EE5757; } -#qunit-tests .fail .test-name, -#qunit-tests .fail .module-name { color: #000000; } - -#qunit-tests .fail .test-actual { color: #EE5757; } -#qunit-tests .fail .test-expected { color: green; } - -#qunit-banner.qunit-fail { background-color: #EE5757; } - - -/** Result */ - -#qunit-testresult { - padding: 0.5em 0.5em 0.5em 2.5em; - - color: #2b81af; - background-color: #D2E0E6; - - border-bottom: 1px solid white; -} -#qunit-testresult .module-name { - font-weight: bold; -} - -/** Fixture */ - -#qunit-fixture { - position: absolute; - top: -10000px; - left: -10000px; - width: 1000px; - height: 1000px; -} diff --git a/thirdparty/jquery-validate/test/qunit/qunit.js b/thirdparty/jquery-validate/test/qunit/qunit.js deleted file mode 100644 index d4f17b5ae..000000000 --- a/thirdparty/jquery-validate/test/qunit/qunit.js +++ /dev/null @@ -1,1977 +0,0 @@ -/** - * QUnit v1.10.0 - A JavaScript Unit Testing Framework - * - * http://qunitjs.com - * - * Copyright 2012 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -(function( window ) { - -var QUnit, - config, - onErrorFnPrev, - testId = 0, - fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""), - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - // Keep a local reference to Date (GH-283) - Date = window.Date, - defined = { - setTimeout: typeof window.setTimeout !== "undefined", - sessionStorage: (function() { - var x = "qunit-test-string"; - try { - sessionStorage.setItem( x, x ); - sessionStorage.removeItem( x ); - return true; - } catch( e ) { - return false; - } - }()) -}; - -function Test( settings ) { - extend( this, settings ); - this.assertions = []; - this.testNumber = ++Test.count; -} - -Test.count = 0; - -Test.prototype = { - init: function() { - var a, b, li, - tests = id( "qunit-tests" ); - - if ( tests ) { - b = document.createElement( "strong" ); - b.innerHTML = this.name; - - // `a` initialized at top of scope - a = document.createElement( "a" ); - a.innerHTML = "Rerun"; - a.href = QUnit.url({ testNumber: this.testNumber }); - - li = document.createElement( "li" ); - li.appendChild( b ); - li.appendChild( a ); - li.className = "running"; - li.id = this.id = "qunit-test-output" + testId++; - - tests.appendChild( li ); - } - }, - setup: function() { - if ( this.module !== config.previousModule ) { - if ( config.previousModule ) { - runLoggingCallbacks( "moduleDone", QUnit, { - name: config.previousModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - }); - } - config.previousModule = this.module; - config.moduleStats = { all: 0, bad: 0 }; - runLoggingCallbacks( "moduleStart", QUnit, { - name: this.module - }); - } else if ( config.autorun ) { - runLoggingCallbacks( "moduleStart", QUnit, { - name: this.module - }); - } - - config.current = this; - - this.testEnvironment = extend({ - setup: function() {}, - teardown: function() {} - }, this.moduleTestEnvironment ); - - runLoggingCallbacks( "testStart", QUnit, { - name: this.testName, - module: this.module - }); - - // allow utility functions to access the current test environment - // TODO why?? - QUnit.current_testEnvironment = this.testEnvironment; - - if ( !config.pollution ) { - saveGlobal(); - } - if ( config.notrycatch ) { - this.testEnvironment.setup.call( this.testEnvironment ); - return; - } - try { - this.testEnvironment.setup.call( this.testEnvironment ); - } catch( e ) { - QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) ); - } - }, - run: function() { - config.current = this; - - var running = id( "qunit-testresult" ); - - if ( running ) { - running.innerHTML = "Running:
          " + this.name; - } - - if ( this.async ) { - QUnit.stop(); - } - - if ( config.notrycatch ) { - this.callback.call( this.testEnvironment, QUnit.assert ); - return; - } - - try { - this.callback.call( this.testEnvironment, QUnit.assert ); - } catch( e ) { - QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) ); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if ( config.blocking ) { - QUnit.start(); - } - } - }, - teardown: function() { - config.current = this; - if ( config.notrycatch ) { - this.testEnvironment.teardown.call( this.testEnvironment ); - return; - } else { - try { - this.testEnvironment.teardown.call( this.testEnvironment ); - } catch( e ) { - QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) ); - } - } - checkPollution(); - }, - finish: function() { - config.current = this; - if ( config.requireExpects && this.expected == null ) { - QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack ); - } else if ( this.expected != null && this.expected != this.assertions.length ) { - QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack ); - } else if ( this.expected == null && !this.assertions.length ) { - QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack ); - } - - var assertion, a, b, i, li, ol, - test = this, - good = 0, - bad = 0, - tests = id( "qunit-tests" ); - - config.stats.all += this.assertions.length; - config.moduleStats.all += this.assertions.length; - - if ( tests ) { - ol = document.createElement( "ol" ); - - for ( i = 0; i < this.assertions.length; i++ ) { - assertion = this.assertions[i]; - - li = document.createElement( "li" ); - li.className = assertion.result ? "pass" : "fail"; - li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" ); - ol.appendChild( li ); - - if ( assertion.result ) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - // store result when possible - if ( QUnit.config.reorder && defined.sessionStorage ) { - if ( bad ) { - sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad ); - } else { - sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName ); - } - } - - if ( bad === 0 ) { - ol.style.display = "none"; - } - - // `b` initialized at top of scope - b = document.createElement( "strong" ); - b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; - - addEvent(b, "click", function() { - var next = b.nextSibling.nextSibling, - display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function( e ) { - var target = e && e.target ? e.target : window.event.srcElement; - if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { - target = target.parentNode; - } - if ( window.location && target.nodeName.toLowerCase() === "strong" ) { - window.location = QUnit.url({ testNumber: test.testNumber }); - } - }); - - // `li` initialized at top of scope - li = id( this.id ); - li.className = bad ? "fail" : "pass"; - li.removeChild( li.firstChild ); - a = li.firstChild; - li.appendChild( b ); - li.appendChild ( a ); - li.appendChild( ol ); - - } else { - for ( i = 0; i < this.assertions.length; i++ ) { - if ( !this.assertions[i].result ) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - runLoggingCallbacks( "testDone", QUnit, { - name: this.testName, - module: this.module, - failed: bad, - passed: this.assertions.length - bad, - total: this.assertions.length - }); - - QUnit.reset(); - - config.current = undefined; - }, - - queue: function() { - var bad, - test = this; - - synchronize(function() { - test.init(); - }); - function run() { - // each of these can by async - synchronize(function() { - test.setup(); - }); - synchronize(function() { - test.run(); - }); - synchronize(function() { - test.teardown(); - }); - synchronize(function() { - test.finish(); - }); - } - - // `bad` initialized at top of scope - // defer when previous test run passed, if storage is available - bad = QUnit.config.reorder && defined.sessionStorage && - +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName ); - - if ( bad ) { - run(); - } else { - synchronize( run, true ); - } - } -}; - -// Root QUnit object. -// `QUnit` initialized at top of scope -QUnit = { - - // call on start of module test to prepend name to all tests - module: function( name, testEnvironment ) { - config.currentModule = name; - config.currentModuleTestEnvironment = testEnvironment; - config.modules[name] = true; - }, - - asyncTest: function( testName, expected, callback ) { - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - - QUnit.test( testName, expected, callback, true ); - }, - - test: function( testName, expected, callback, async ) { - var test, - name = "" + escapeInnerText( testName ) + ""; - - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - - if ( config.currentModule ) { - name = "" + config.currentModule + ": " + name; - } - - test = new Test({ - name: name, - testName: testName, - expected: expected, - async: async, - callback: callback, - module: config.currentModule, - moduleTestEnvironment: config.currentModuleTestEnvironment, - stack: sourceFromStacktrace( 2 ) - }); - - if ( !validTest( test ) ) { - return; - } - - test.queue(); - }, - - // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - expect: function( asserts ) { - if (arguments.length === 1) { - config.current.expected = asserts; - } else { - return config.current.expected; - } - }, - - start: function( count ) { - config.semaphore -= count || 1; - // don't start until equal number of stop-calls - if ( config.semaphore > 0 ) { - return; - } - // ignore if start is called more often then stop - if ( config.semaphore < 0 ) { - config.semaphore = 0; - } - // A slight delay, to avoid any current callbacks - if ( defined.setTimeout ) { - window.setTimeout(function() { - if ( config.semaphore > 0 ) { - return; - } - if ( config.timeout ) { - clearTimeout( config.timeout ); - } - - config.blocking = false; - process( true ); - }, 13); - } else { - config.blocking = false; - process( true ); - } - }, - - stop: function( count ) { - config.semaphore += count || 1; - config.blocking = true; - - if ( config.testTimeout && defined.setTimeout ) { - clearTimeout( config.timeout ); - config.timeout = window.setTimeout(function() { - QUnit.ok( false, "Test timed out" ); - config.semaphore = 1; - QUnit.start(); - }, config.testTimeout ); - } - } -}; - -// Asssert helpers -// All of these must call either QUnit.push() or manually do: -// - runLoggingCallbacks( "log", .. ); -// - config.current.assertions.push({ .. }); -QUnit.assert = { - /** - * Asserts rough true-ish result. - * @name ok - * @function - * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - */ - ok: function( result, msg ) { - if ( !config.current ) { - throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) ); - } - result = !!result; - - var source, - details = { - module: config.current.module, - name: config.current.testName, - result: result, - message: msg - }; - - msg = escapeInnerText( msg || (result ? "okay" : "failed" ) ); - msg = "" + msg + ""; - - if ( !result ) { - source = sourceFromStacktrace( 2 ); - if ( source ) { - details.source = source; - msg += "
          Source:
          " + escapeInnerText( source ) + "
          "; - } - } - runLoggingCallbacks( "log", QUnit, details ); - config.current.assertions.push({ - result: result, - message: msg - }); - }, - - /** - * Assert that the first two arguments are equal, with an optional message. - * Prints out both actual and expected values. - * @name equal - * @function - * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" ); - */ - equal: function( actual, expected, message ) { - QUnit.push( expected == actual, actual, expected, message ); - }, - - /** - * @name notEqual - * @function - */ - notEqual: function( actual, expected, message ) { - QUnit.push( expected != actual, actual, expected, message ); - }, - - /** - * @name deepEqual - * @function - */ - deepEqual: function( actual, expected, message ) { - QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); - }, - - /** - * @name notDeepEqual - * @function - */ - notDeepEqual: function( actual, expected, message ) { - QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); - }, - - /** - * @name strictEqual - * @function - */ - strictEqual: function( actual, expected, message ) { - QUnit.push( expected === actual, actual, expected, message ); - }, - - /** - * @name notStrictEqual - * @function - */ - notStrictEqual: function( actual, expected, message ) { - QUnit.push( expected !== actual, actual, expected, message ); - }, - - throws: function( block, expected, message ) { - var actual, - ok = false; - - // 'expected' is optional - if ( typeof expected === "string" ) { - message = expected; - expected = null; - } - - config.current.ignoreGlobalErrors = true; - try { - block.call( config.current.testEnvironment ); - } catch (e) { - actual = e; - } - config.current.ignoreGlobalErrors = false; - - if ( actual ) { - // we don't want to validate thrown error - if ( !expected ) { - ok = true; - // expected is a regexp - } else if ( QUnit.objectType( expected ) === "regexp" ) { - ok = expected.test( actual ); - // expected is a constructor - } else if ( actual instanceof expected ) { - ok = true; - // expected is a validation function which returns true is validation passed - } else if ( expected.call( {}, actual ) === true ) { - ok = true; - } - - QUnit.push( ok, actual, null, message ); - } else { - QUnit.pushFailure( message, null, 'No exception was thrown.' ); - } - } -}; - -/** - * @deprecate since 1.8.0 - * Kept assertion helpers in root for backwards compatibility - */ -extend( QUnit, QUnit.assert ); - -/** - * @deprecated since 1.9.0 - * Kept global "raises()" for backwards compatibility - */ -QUnit.raises = QUnit.assert.throws; - -/** - * @deprecated since 1.0.0, replaced with error pushes since 1.3.0 - * Kept to avoid TypeErrors for undefined methods. - */ -QUnit.equals = function() { - QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" ); -}; -QUnit.same = function() { - QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" ); -}; - -// We want access to the constructor's prototype -(function() { - function F() {} - F.prototype = QUnit; - QUnit = new F(); - // Make F QUnit's constructor so that we can add to the prototype later - QUnit.constructor = F; -}()); - -/** - * Config object: Maintain internal state - * Later exposed as QUnit.config - * `config` initialized at top of scope - */ -config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true, - - // when enabled, show only failing tests - // gets persisted through sessionStorage and can be changed in UI via checkbox - hidepassed: false, - - // by default, run previously failed tests first - // very useful in combination with "Hide passed tests" checked - reorder: true, - - // by default, modify document.title when suite is done - altertitle: true, - - // when enabled, all tests must call expect() - requireExpects: false, - - // add checkboxes that are persisted in the query-string - // when enabled, the id is set to `true` as a `QUnit.config` property - urlConfig: [ - { - id: "noglobals", - label: "Check for Globals", - tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings." - }, - { - id: "notrycatch", - label: "No try-catch", - tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings." - } - ], - - // Set of all modules. - modules: {}, - - // logging callback queues - begin: [], - done: [], - log: [], - testStart: [], - testDone: [], - moduleStart: [], - moduleDone: [] -}; - -// Initialize more QUnit.config and QUnit.urlParams -(function() { - var i, - location = window.location || { search: "", protocol: "file:" }, - params = location.search.slice( 1 ).split( "&" ), - length = params.length, - urlParams = {}, - current; - - if ( params[ 0 ] ) { - for ( i = 0; i < length; i++ ) { - current = params[ i ].split( "=" ); - current[ 0 ] = decodeURIComponent( current[ 0 ] ); - // allow just a key to turn on a flag, e.g., test.html?noglobals - current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; - urlParams[ current[ 0 ] ] = current[ 1 ]; - } - } - - QUnit.urlParams = urlParams; - - // String search anywhere in moduleName+testName - config.filter = urlParams.filter; - - // Exact match of the module name - config.module = urlParams.module; - - config.testNumber = parseInt( urlParams.testNumber, 10 ) || null; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = location.protocol === "file:"; -}()); - -// Export global variables, unless an 'exports' object exists, -// in that case we assume we're in CommonJS (dealt with on the bottom of the script) -if ( typeof exports === "undefined" ) { - extend( window, QUnit ); - - // Expose QUnit object - window.QUnit = QUnit; -} - -// Extend QUnit object, -// these after set here because they should not be exposed as global functions -extend( QUnit, { - config: config, - - // Initialize the configuration options - init: function() { - extend( config, { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date(), - updateRate: 1000, - blocking: false, - autostart: true, - autorun: false, - filter: "", - queue: [], - semaphore: 0 - }); - - var tests, banner, result, - qunit = id( "qunit" ); - - if ( qunit ) { - qunit.innerHTML = - "

          " + escapeInnerText( document.title ) + "

          " + - "

          " + - "
          " + - "

          " + - "
            "; - } - - tests = id( "qunit-tests" ); - banner = id( "qunit-banner" ); - result = id( "qunit-testresult" ); - - if ( tests ) { - tests.innerHTML = ""; - } - - if ( banner ) { - banner.className = ""; - } - - if ( result ) { - result.parentNode.removeChild( result ); - } - - if ( tests ) { - result = document.createElement( "p" ); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore( result, tests ); - result.innerHTML = "Running...
             "; - } - }, - - // Resets the test setup. Useful for tests that modify the DOM. - reset: function() { - var fixture = id( "qunit-fixture" ); - if ( fixture ) { - fixture.innerHTML = config.fixture; - } - }, - - // Trigger an event on an element. - // @example triggerEvent( document.body, "click" ); - triggerEvent: function( elem, type, event ) { - if ( document.createEvent ) { - event = document.createEvent( "MouseEvents" ); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - - elem.dispatchEvent( event ); - } else if ( elem.fireEvent ) { - elem.fireEvent( "on" + type ); - } - }, - - // Safe object type checking - is: function( type, obj ) { - return QUnit.objectType( obj ) == type; - }, - - objectType: function( obj ) { - if ( typeof obj === "undefined" ) { - return "undefined"; - // consider: typeof null === object - } - if ( obj === null ) { - return "null"; - } - - var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || ""; - - switch ( type ) { - case "Number": - if ( isNaN(obj) ) { - return "nan"; - } - return "number"; - case "String": - case "Boolean": - case "Array": - case "Date": - case "RegExp": - case "Function": - return type.toLowerCase(); - } - if ( typeof obj === "object" ) { - return "object"; - } - return undefined; - }, - - push: function( result, actual, expected, message ) { - if ( !config.current ) { - throw new Error( "assertion outside test context, was " + sourceFromStacktrace() ); - } - - var output, source, - details = { - module: config.current.module, - name: config.current.testName, - result: result, - message: message, - actual: actual, - expected: expected - }; - - message = escapeInnerText( message ) || ( result ? "okay" : "failed" ); - message = "" + message + ""; - output = message; - - if ( !result ) { - expected = escapeInnerText( QUnit.jsDump.parse(expected) ); - actual = escapeInnerText( QUnit.jsDump.parse(actual) ); - output += ""; - - if ( actual != expected ) { - output += ""; - output += ""; - } - - source = sourceFromStacktrace(); - - if ( source ) { - details.source = source; - output += ""; - } - - output += "
            Expected:
            " + expected + "
            Result:
            " + actual + "
            Diff:
            " + QUnit.diff( expected, actual ) + "
            Source:
            " + escapeInnerText( source ) + "
            "; - } - - runLoggingCallbacks( "log", QUnit, details ); - - config.current.assertions.push({ - result: !!result, - message: output - }); - }, - - pushFailure: function( message, source, actual ) { - if ( !config.current ) { - throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) ); - } - - var output, - details = { - module: config.current.module, - name: config.current.testName, - result: false, - message: message - }; - - message = escapeInnerText( message ) || "error"; - message = "" + message + ""; - output = message; - - output += ""; - - if ( actual ) { - output += ""; - } - - if ( source ) { - details.source = source; - output += ""; - } - - output += "
            Result:
            " + escapeInnerText( actual ) + "
            Source:
            " + escapeInnerText( source ) + "
            "; - - runLoggingCallbacks( "log", QUnit, details ); - - config.current.assertions.push({ - result: false, - message: output - }); - }, - - url: function( params ) { - params = extend( extend( {}, QUnit.urlParams ), params ); - var key, - querystring = "?"; - - for ( key in params ) { - if ( !hasOwn.call( params, key ) ) { - continue; - } - querystring += encodeURIComponent( key ) + "=" + - encodeURIComponent( params[ key ] ) + "&"; - } - return window.location.pathname + querystring.slice( 0, -1 ); - }, - - extend: extend, - id: id, - addEvent: addEvent - // load, equiv, jsDump, diff: Attached later -}); - -/** - * @deprecated: Created for backwards compatibility with test runner that set the hook function - * into QUnit.{hook}, instead of invoking it and passing the hook function. - * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here. - * Doing this allows us to tell if the following methods have been overwritten on the actual - * QUnit object. - */ -extend( QUnit.constructor.prototype, { - - // Logging callbacks; all receive a single argument with the listed properties - // run test/logs.html for any related changes - begin: registerLoggingCallback( "begin" ), - - // done: { failed, passed, total, runtime } - done: registerLoggingCallback( "done" ), - - // log: { result, actual, expected, message } - log: registerLoggingCallback( "log" ), - - // testStart: { name } - testStart: registerLoggingCallback( "testStart" ), - - // testDone: { name, failed, passed, total } - testDone: registerLoggingCallback( "testDone" ), - - // moduleStart: { name } - moduleStart: registerLoggingCallback( "moduleStart" ), - - // moduleDone: { name, failed, passed, total } - moduleDone: registerLoggingCallback( "moduleDone" ) -}); - -if ( typeof document === "undefined" || document.readyState === "complete" ) { - config.autorun = true; -} - -QUnit.load = function() { - runLoggingCallbacks( "begin", QUnit, {} ); - - // Initialize the config, saving the execution queue - var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, moduleFilter, - numModules = 0, - moduleFilterHtml = "", - urlConfigHtml = "", - oldconfig = extend( {}, config ); - - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - len = config.urlConfig.length; - - for ( i = 0; i < len; i++ ) { - val = config.urlConfig[i]; - if ( typeof val === "string" ) { - val = { - id: val, - label: val, - tooltip: "[no tooltip available]" - }; - } - config[ val.id ] = QUnit.urlParams[ val.id ]; - urlConfigHtml += ""; - } - - moduleFilterHtml += ""; - - // `userAgent` initialized at top of scope - userAgent = id( "qunit-userAgent" ); - if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; - } - - // `banner` initialized at top of scope - banner = id( "qunit-header" ); - if ( banner ) { - banner.innerHTML = "" + banner.innerHTML + " "; - } - - // `toolbar` initialized at top of scope - toolbar = id( "qunit-testrunner-toolbar" ); - if ( toolbar ) { - // `filter` initialized at top of scope - filter = document.createElement( "input" ); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - - addEvent( filter, "click", function() { - var tmp, - ol = document.getElementById( "qunit-tests" ); - - if ( filter.checked ) { - ol.className = ol.className + " hidepass"; - } else { - tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; - ol.className = tmp.replace( / hidepass /, " " ); - } - if ( defined.sessionStorage ) { - if (filter.checked) { - sessionStorage.setItem( "qunit-filter-passed-tests", "true" ); - } else { - sessionStorage.removeItem( "qunit-filter-passed-tests" ); - } - } - }); - - if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) { - filter.checked = true; - // `ol` initialized at top of scope - ol = document.getElementById( "qunit-tests" ); - ol.className = ol.className + " hidepass"; - } - toolbar.appendChild( filter ); - - // `label` initialized at top of scope - label = document.createElement( "label" ); - label.setAttribute( "for", "qunit-filter-pass" ); - label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." ); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild( label ); - - urlConfigCheckboxes = document.createElement( 'span' ); - urlConfigCheckboxes.innerHTML = urlConfigHtml; - addEvent( urlConfigCheckboxes, "change", function( event ) { - var params = {}; - params[ event.target.name ] = event.target.checked ? true : undefined; - window.location = QUnit.url( params ); - }); - toolbar.appendChild( urlConfigCheckboxes ); - - if (numModules > 1) { - moduleFilter = document.createElement( 'span' ); - moduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' ); - moduleFilter.innerHTML = moduleFilterHtml; - addEvent( moduleFilter, "change", function() { - var selectBox = moduleFilter.getElementsByTagName("select")[0], - selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value); - - window.location = QUnit.url( { module: ( selectedModule === "" ) ? undefined : selectedModule } ); - }); - toolbar.appendChild(moduleFilter); - } - } - - // `main` initialized at top of scope - main = id( "qunit-fixture" ); - if ( main ) { - config.fixture = main.innerHTML; - } - - if ( config.autostart ) { - QUnit.start(); - } -}; - -addEvent( window, "load", QUnit.load ); - -// `onErrorFnPrev` initialized at top of scope -// Preserve other handlers -onErrorFnPrev = window.onerror; - -// Cover uncaught exceptions -// Returning true will surpress the default browser handler, -// returning false will let it run. -window.onerror = function ( error, filePath, linerNr ) { - var ret = false; - if ( onErrorFnPrev ) { - ret = onErrorFnPrev( error, filePath, linerNr ); - } - - // Treat return value as window.onerror itself does, - // Only do our handling if not surpressed. - if ( ret !== true ) { - if ( QUnit.config.current ) { - if ( QUnit.config.current.ignoreGlobalErrors ) { - return true; - } - QUnit.pushFailure( error, filePath + ":" + linerNr ); - } else { - QUnit.test( "global failure", extend( function() { - QUnit.pushFailure( error, filePath + ":" + linerNr ); - }, { validTest: validTest } ) ); - } - return false; - } - - return ret; -}; - -function done() { - config.autorun = true; - - // Log the last module results - if ( config.currentModule ) { - runLoggingCallbacks( "moduleDone", QUnit, { - name: config.currentModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - }); - } - - var i, key, - banner = id( "qunit-banner" ), - tests = id( "qunit-tests" ), - runtime = +new Date() - config.started, - passed = config.stats.all - config.stats.bad, - html = [ - "Tests completed in ", - runtime, - " milliseconds.
            ", - "", - passed, - " tests of ", - config.stats.all, - " passed, ", - config.stats.bad, - " failed." - ].join( "" ); - - if ( banner ) { - banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" ); - } - - if ( tests ) { - id( "qunit-testresult" ).innerHTML = html; - } - - if ( config.altertitle && typeof document !== "undefined" && document.title ) { - // show ✖ for good, ✔ for bad suite result in title - // use escape sequences in case file gets loaded with non-utf-8-charset - document.title = [ - ( config.stats.bad ? "\u2716" : "\u2714" ), - document.title.replace( /^[\u2714\u2716] /i, "" ) - ].join( " " ); - } - - // clear own sessionStorage items if all tests passed - if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) { - // `key` & `i` initialized at top of scope - for ( i = 0; i < sessionStorage.length; i++ ) { - key = sessionStorage.key( i++ ); - if ( key.indexOf( "qunit-test-" ) === 0 ) { - sessionStorage.removeItem( key ); - } - } - } - - // scroll back to top to show results - if ( window.scrollTo ) { - window.scrollTo(0, 0); - } - - runLoggingCallbacks( "done", QUnit, { - failed: config.stats.bad, - passed: passed, - total: config.stats.all, - runtime: runtime - }); -} - -/** @return Boolean: true if this test should be ran */ -function validTest( test ) { - var include, - filter = config.filter && config.filter.toLowerCase(), - module = config.module && config.module.toLowerCase(), - fullName = (test.module + ": " + test.testName).toLowerCase(); - - // Internally-generated tests are always valid - if ( test.callback && test.callback.validTest === validTest ) { - delete test.callback.validTest; - return true; - } - - if ( config.testNumber ) { - return test.testNumber === config.testNumber; - } - - if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) { - return false; - } - - if ( !filter ) { - return true; - } - - include = filter.charAt( 0 ) !== "!"; - if ( !include ) { - filter = filter.slice( 1 ); - } - - // If the filter matches, we need to honour include - if ( fullName.indexOf( filter ) !== -1 ) { - return include; - } - - // Otherwise, do the opposite - return !include; -} - -// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions) -// Later Safari and IE10 are supposed to support error.stack as well -// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack -function extractStacktrace( e, offset ) { - offset = offset === undefined ? 3 : offset; - - var stack, include, i, regex; - - if ( e.stacktrace ) { - // Opera - return e.stacktrace.split( "\n" )[ offset + 3 ]; - } else if ( e.stack ) { - // Firefox, Chrome - stack = e.stack.split( "\n" ); - if (/^error$/i.test( stack[0] ) ) { - stack.shift(); - } - if ( fileName ) { - include = []; - for ( i = offset; i < stack.length; i++ ) { - if ( stack[ i ].indexOf( fileName ) != -1 ) { - break; - } - include.push( stack[ i ] ); - } - if ( include.length ) { - return include.join( "\n" ); - } - } - return stack[ offset ]; - } else if ( e.sourceURL ) { - // Safari, PhantomJS - // hopefully one day Safari provides actual stacktraces - // exclude useless self-reference for generated Error objects - if ( /qunit.js$/.test( e.sourceURL ) ) { - return; - } - // for actual exceptions, this is useful - return e.sourceURL + ":" + e.line; - } -} -function sourceFromStacktrace( offset ) { - try { - throw new Error(); - } catch ( e ) { - return extractStacktrace( e, offset ); - } -} - -function escapeInnerText( s ) { - if ( !s ) { - return ""; - } - s = s + ""; - return s.replace( /[\&<>]/g, function( s ) { - switch( s ) { - case "&": return "&"; - case "<": return "<"; - case ">": return ">"; - default: return s; - } - }); -} - -function synchronize( callback, last ) { - config.queue.push( callback ); - - if ( config.autorun && !config.blocking ) { - process( last ); - } -} - -function process( last ) { - function next() { - process( last ); - } - var start = new Date().getTime(); - config.depth = config.depth ? config.depth + 1 : 1; - - while ( config.queue.length && !config.blocking ) { - if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) { - config.queue.shift()(); - } else { - window.setTimeout( next, 13 ); - break; - } - } - config.depth--; - if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { - done(); - } -} - -function saveGlobal() { - config.pollution = []; - - if ( config.noglobals ) { - for ( var key in window ) { - // in Opera sometimes DOM element ids show up here, ignore them - if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) { - continue; - } - config.pollution.push( key ); - } - } -} - -function checkPollution( name ) { - var newGlobals, - deletedGlobals, - old = config.pollution; - - saveGlobal(); - - newGlobals = diff( config.pollution, old ); - if ( newGlobals.length > 0 ) { - QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") ); - } - - deletedGlobals = diff( old, config.pollution ); - if ( deletedGlobals.length > 0 ) { - QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") ); - } -} - -// returns a new Array with the elements that are in a but not in b -function diff( a, b ) { - var i, j, - result = a.slice(); - - for ( i = 0; i < result.length; i++ ) { - for ( j = 0; j < b.length; j++ ) { - if ( result[i] === b[j] ) { - result.splice( i, 1 ); - i--; - break; - } - } - } - return result; -} - -function extend( a, b ) { - for ( var prop in b ) { - if ( b[ prop ] === undefined ) { - delete a[ prop ]; - - // Avoid "Member not found" error in IE8 caused by setting window.constructor - } else if ( prop !== "constructor" || a !== window ) { - a[ prop ] = b[ prop ]; - } - } - - return a; -} - -function addEvent( elem, type, fn ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, fn, false ); - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, fn ); - } else { - fn(); - } -} - -function id( name ) { - return !!( typeof document !== "undefined" && document && document.getElementById ) && - document.getElementById( name ); -} - -function registerLoggingCallback( key ) { - return function( callback ) { - config[key].push( callback ); - }; -} - -// Supports deprecated method of completely overwriting logging callbacks -function runLoggingCallbacks( key, scope, args ) { - //debugger; - var i, callbacks; - if ( QUnit.hasOwnProperty( key ) ) { - QUnit[ key ].call(scope, args ); - } else { - callbacks = config[ key ]; - for ( i = 0; i < callbacks.length; i++ ) { - callbacks[ i ].call( scope, args ); - } - } -} - -// Test for equality any JavaScript type. -// Author: Philippe Rathé -QUnit.equiv = (function() { - - // Call the o related callback with the given arguments. - function bindCallbacks( o, callbacks, args ) { - var prop = QUnit.objectType( o ); - if ( prop ) { - if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) { - return callbacks[ prop ].apply( callbacks, args ); - } else { - return callbacks[ prop ]; // or undefined - } - } - } - - // the real equiv function - var innerEquiv, - // stack to decide between skip/abort functions - callers = [], - // stack to avoiding loops from circular referencing - parents = [], - - getProto = Object.getPrototypeOf || function ( obj ) { - return obj.__proto__; - }, - callbacks = (function () { - - // for string, boolean, number and null - function useStrictEquality( b, a ) { - if ( b instanceof a.constructor || a instanceof b.constructor ) { - // to catch short annotaion VS 'new' annotation of a - // declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string": useStrictEquality, - "boolean": useStrictEquality, - "number": useStrictEquality, - "null": useStrictEquality, - "undefined": useStrictEquality, - - "nan": function( b ) { - return isNaN( b ); - }, - - "date": function( b, a ) { - return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf(); - }, - - "regexp": function( b, a ) { - return QUnit.objectType( b ) === "regexp" && - // the regex itself - a.source === b.source && - // and its modifers - a.global === b.global && - // (gmi) ... - a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline && - a.sticky === b.sticky; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function": function() { - var caller = callers[callers.length - 1]; - return caller !== Object && typeof caller !== "undefined"; - }, - - "array": function( b, a ) { - var i, j, len, loop; - - // b could be an object literal here - if ( QUnit.objectType( b ) !== "array" ) { - return false; - } - - len = a.length; - if ( len !== b.length ) { - // safe and faster - return false; - } - - // track reference to avoid circular references - parents.push( a ); - for ( i = 0; i < len; i++ ) { - loop = false; - for ( j = 0; j < parents.length; j++ ) { - if ( parents[j] === a[i] ) { - loop = true;// dont rewalk array - } - } - if ( !loop && !innerEquiv(a[i], b[i]) ) { - parents.pop(); - return false; - } - } - parents.pop(); - return true; - }, - - "object": function( b, a ) { - var i, j, loop, - // Default to true - eq = true, - aProperties = [], - bProperties = []; - - // comparing constructors is more strict than using - // instanceof - if ( a.constructor !== b.constructor ) { - // Allow objects with no prototype to be equivalent to - // objects with Object as their constructor. - if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) || - ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) { - return false; - } - } - - // stack constructor before traversing properties - callers.push( a.constructor ); - // track reference to avoid circular references - parents.push( a ); - - for ( i in a ) { // be strict: don't ensures hasOwnProperty - // and go deep - loop = false; - for ( j = 0; j < parents.length; j++ ) { - if ( parents[j] === a[i] ) { - // don't go down the same path twice - loop = true; - } - } - aProperties.push(i); // collect a's properties - - if (!loop && !innerEquiv( a[i], b[i] ) ) { - eq = false; - break; - } - } - - callers.pop(); // unstack, we are done - parents.pop(); - - for ( i in b ) { - bProperties.push( i ); // collect b's properties - } - - // Ensures identical properties name - return eq && innerEquiv( aProperties.sort(), bProperties.sort() ); - } - }; - }()); - - innerEquiv = function() { // can take multiple arguments - var args = [].slice.apply( arguments ); - if ( args.length < 2 ) { - return true; // end transition - } - - return (function( a, b ) { - if ( a === b ) { - return true; // catch the most you can - } else if ( a === null || b === null || typeof a === "undefined" || - typeof b === "undefined" || - QUnit.objectType(a) !== QUnit.objectType(b) ) { - return false; // don't lose time with error prone cases - } else { - return bindCallbacks(a, callbacks, [ b, a ]); - } - - // apply transition with (1..n) arguments - }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) ); - }; - - return innerEquiv; -}()); - -/** - * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | - * http://flesler.blogspot.com Licensed under BSD - * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 - * - * @projectDescription Advanced and extensible data dumping for Javascript. - * @version 1.0.0 - * @author Ariel Flesler - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} - */ -QUnit.jsDump = (function() { - function quote( str ) { - return '"' + str.toString().replace( /"/g, '\\"' ) + '"'; - } - function literal( o ) { - return o + ""; - } - function join( pre, arr, post ) { - var s = jsDump.separator(), - base = jsDump.indent(), - inner = jsDump.indent(1); - if ( arr.join ) { - arr = arr.join( "," + s + inner ); - } - if ( !arr ) { - return pre + post; - } - return [ pre, inner + arr, base + post ].join(s); - } - function array( arr, stack ) { - var i = arr.length, ret = new Array(i); - this.up(); - while ( i-- ) { - ret[i] = this.parse( arr[i] , undefined , stack); - } - this.down(); - return join( "[", ret, "]" ); - } - - var reName = /^function (\w+)/, - jsDump = { - parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance - stack = stack || [ ]; - var inStack, res, - parser = this.parsers[ type || this.typeOf(obj) ]; - - type = typeof parser; - inStack = inArray( obj, stack ); - - if ( inStack != -1 ) { - return "recursion(" + (inStack - stack.length) + ")"; - } - //else - if ( type == "function" ) { - stack.push( obj ); - res = parser.call( this, obj, stack ); - stack.pop(); - return res; - } - // else - return ( type == "string" ) ? parser : this.parsers.error; - }, - typeOf: function( obj ) { - var type; - if ( obj === null ) { - type = "null"; - } else if ( typeof obj === "undefined" ) { - type = "undefined"; - } else if ( QUnit.is( "regexp", obj) ) { - type = "regexp"; - } else if ( QUnit.is( "date", obj) ) { - type = "date"; - } else if ( QUnit.is( "function", obj) ) { - type = "function"; - } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) { - type = "window"; - } else if ( obj.nodeType === 9 ) { - type = "document"; - } else if ( obj.nodeType ) { - type = "node"; - } else if ( - // native arrays - toString.call( obj ) === "[object Array]" || - // NodeList objects - ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) ) - ) { - type = "array"; - } else { - type = typeof obj; - } - return type; - }, - separator: function() { - return this.multiline ? this.HTML ? "
            " : "\n" : this.HTML ? " " : " "; - }, - indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing - if ( !this.multiline ) { - return ""; - } - var chr = this.indentChar; - if ( this.HTML ) { - chr = chr.replace( /\t/g, " " ).replace( / /g, " " ); - } - return new Array( this._depth_ + (extra||0) ).join(chr); - }, - up: function( a ) { - this._depth_ += a || 1; - }, - down: function( a ) { - this._depth_ -= a || 1; - }, - setParser: function( name, parser ) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote: quote, - literal: literal, - join: join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers: { - window: "[Window]", - document: "[Document]", - error: "[ERROR]", //when no parser is found, shouldn"t happen - unknown: "[Unknown]", - "null": "null", - "undefined": "undefined", - "function": function( fn ) { - var ret = "function", - name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE - - if ( name ) { - ret += " " + name; - } - ret += "( "; - - ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" ); - return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" ); - }, - array: array, - nodelist: array, - "arguments": array, - object: function( map, stack ) { - var ret = [ ], keys, key, val, i; - QUnit.jsDump.up(); - if ( Object.keys ) { - keys = Object.keys( map ); - } else { - keys = []; - for ( key in map ) { - keys.push( key ); - } - } - keys.sort(); - for ( i = 0; i < keys.length; i++ ) { - key = keys[ i ]; - val = map[ key ]; - ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) ); - } - QUnit.jsDump.down(); - return join( "{", ret, "}" ); - }, - node: function( node ) { - var a, val, - open = QUnit.jsDump.HTML ? "<" : "<", - close = QUnit.jsDump.HTML ? ">" : ">", - tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for ( a in QUnit.jsDump.DOMAttrs ) { - val = node[ QUnit.jsDump.DOMAttrs[a] ]; - if ( val ) { - ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" ); - } - } - return ret + close + open + "/" + tag + close; - }, - functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function - var args, - l = fn.length; - - if ( !l ) { - return ""; - } - - args = new Array(l); - while ( l-- ) { - args[l] = String.fromCharCode(97+l);//97 is 'a' - } - return " " + args.join( ", " ) + " "; - }, - key: quote, //object calls it internally, the key part of an item in a map - functionCode: "[code]", //function calls it internally, it's the content of the function - attribute: quote, //node calls it internally, it's an html attribute value - string: quote, - date: quote, - regexp: literal, //regex - number: literal, - "boolean": literal - }, - DOMAttrs: { - //attributes to dump from nodes, name=>realName - id: "id", - name: "name", - "class": "className" - }, - HTML: false,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar: " ",//indentation unit - multiline: true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; -}()); - -// from Sizzle.js -function getText( elems ) { - var i, elem, - ret = ""; - - for ( i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -} - -// from jquery.js -function inArray( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; -} - -/* - * Javascript Diff Algorithm - * By John Resig (http://ejohn.org/) - * Modified by Chu Alan "sprite" - * - * Released under the MIT license. - * - * More Info: - * http://ejohn.org/projects/javascript-diff-algorithm/ - * - * Usage: QUnit.diff(expected, actual) - * - * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick brown fox jumped jumps over" - */ -QUnit.diff = (function() { - function diff( o, n ) { - var i, - ns = {}, - os = {}; - - for ( i = 0; i < n.length; i++ ) { - if ( ns[ n[i] ] == null ) { - ns[ n[i] ] = { - rows: [], - o: null - }; - } - ns[ n[i] ].rows.push( i ); - } - - for ( i = 0; i < o.length; i++ ) { - if ( os[ o[i] ] == null ) { - os[ o[i] ] = { - rows: [], - n: null - }; - } - os[ o[i] ].rows.push( i ); - } - - for ( i in ns ) { - if ( !hasOwn.call( ns, i ) ) { - continue; - } - if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) { - n[ ns[i].rows[0] ] = { - text: n[ ns[i].rows[0] ], - row: os[i].rows[0] - }; - o[ os[i].rows[0] ] = { - text: o[ os[i].rows[0] ], - row: ns[i].rows[0] - }; - } - } - - for ( i = 0; i < n.length - 1; i++ ) { - if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null && - n[ i + 1 ] == o[ n[i].row + 1 ] ) { - - n[ i + 1 ] = { - text: n[ i + 1 ], - row: n[i].row + 1 - }; - o[ n[i].row + 1 ] = { - text: o[ n[i].row + 1 ], - row: i + 1 - }; - } - } - - for ( i = n.length - 1; i > 0; i-- ) { - if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null && - n[ i - 1 ] == o[ n[i].row - 1 ]) { - - n[ i - 1 ] = { - text: n[ i - 1 ], - row: n[i].row - 1 - }; - o[ n[i].row - 1 ] = { - text: o[ n[i].row - 1 ], - row: i - 1 - }; - } - } - - return { - o: o, - n: n - }; - } - - return function( o, n ) { - o = o.replace( /\s+$/, "" ); - n = n.replace( /\s+$/, "" ); - - var i, pre, - str = "", - out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ), - oSpace = o.match(/\s+/g), - nSpace = n.match(/\s+/g); - - if ( oSpace == null ) { - oSpace = [ " " ]; - } - else { - oSpace.push( " " ); - } - - if ( nSpace == null ) { - nSpace = [ " " ]; - } - else { - nSpace.push( " " ); - } - - if ( out.n.length === 0 ) { - for ( i = 0; i < out.o.length; i++ ) { - str += "" + out.o[i] + oSpace[i] + ""; - } - } - else { - if ( out.n[0].text == null ) { - for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) { - str += "" + out.o[n] + oSpace[n] + ""; - } - } - - for ( i = 0; i < out.n.length; i++ ) { - if (out.n[i].text == null) { - str += "" + out.n[i] + nSpace[i] + ""; - } - else { - // `pre` initialized at top of scope - pre = ""; - - for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) { - pre += "" + out.o[n] + oSpace[n] + ""; - } - str += " " + out.n[i].text + nSpace[i] + pre; - } - } - } - - return str; - }; -}()); - -// for CommonJS enviroments, export everything -if ( typeof exports !== "undefined" ) { - extend(exports, QUnit); -} - -// get at whatever the global object is, like window in browsers -}( (function() {return this;}.call()) )); diff --git a/thirdparty/jquery-validate/test/rules.js b/thirdparty/jquery-validate/test/rules.js deleted file mode 100644 index 8caba421f..000000000 --- a/thirdparty/jquery-validate/test/rules.js +++ /dev/null @@ -1,273 +0,0 @@ -module("rules"); - -test("rules() - internal - input", function() { - var element = $('#firstname'); - var v = $('#testForm1').validate(); - deepEqual( element.rules(), { required: true, minlength: 2 } ); -}); - -test("rules(), ignore method:false", function() { - var element = $('#firstnamec'); - var v = $('#testForm1clean').validate({ - rules: { - firstname: { required: false, minlength: 2 } - } - }); - deepEqual( element.rules(), { minlength: 2 } ); -}); - -test("rules() HTML5 required (no value)", function() { - var element = $('#testForm11text1'); - var v = $('#testForm11').validate(); - deepEqual( element.rules(), { required: true } ); -}); - -test("rules() - internal - select", function() { - var element = $('#meal'); - var v = $('#testForm3').validate(); - deepEqual( element.rules(), {required: true} ); -}); - -test("rules() - external", function() { - var element = $('#text1'); - var v = $('#form').validate({ - rules: { - action: {date: true, min: 5} - } - }); - deepEqual( element.rules(), {date: true, min: 5} ); -}); - -test("rules() - external - complete form", function() { - expect(1); - - var methods = $.extend({}, $.validator.methods); - var messages = $.extend({}, $.validator.messages); - - $.validator.addMethod("verifyTest", function() { - ok( true, "method executed" ); - return true; - }); - var v = $('#form').validate({ - rules: { - action: {verifyTest: true} - } - }); - v.form(); - - $.validator.methods = methods; - $.validator.messages = messages; -}); - -test("rules() - internal - input", function() { - var element = $('#form8input'); - var v = $('#testForm8').validate(); - deepEqual( element.rules(), {required: true, number: true, rangelength: [2, 8]}); -}); - -test("rules(), merge min/max to range, minlength/maxlength to rangelength", function() { - jQuery.validator.autoCreateRanges = true; - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - min: 5, - max: 12 - }, - lastname: { - minlength: 2, - maxlength: 8 - } - } - }); - deepEqual( $("#firstnamec").rules(), {range: [5, 12]}); - - deepEqual( $("#lastnamec").rules(), {rangelength: [2, 8]} ); - jQuery.validator.autoCreateRanges = false; -}); - -test("rules(), guarantee that required is at front", function() { - $("#testForm1").validate(); - var v = $("#v2").validate(); - $("#subformRequired").validate(); - function flatRules(element) { - var result = []; - jQuery.each($(element).rules(), function(key, value) { result.push(key); }); - return result.join(" "); - } - equal( "required minlength", flatRules("#firstname") ); - equal( "required minlength maxlength", flatRules("#v2-i6") ); - equal( "required maxlength", flatRules("#co_name") ); - - QUnit.reset(); - jQuery.validator.autoCreateRanges = true; - v = $("#v2").validate(); - equal( "required rangelength", flatRules("#v2-i6") ); - - $("#subformRequired").validate({ - rules: { - co_name: "required" - } - }); - $("#co_name").removeClass(); - equal( "required maxlength", flatRules("#co_name") ); - jQuery.validator.autoCreateRanges = false; -}); - -test("rules(), evaluate dynamic parameters", function() { - expect(2); - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - min: function(element) { - equal( $("#firstnamec")[0], element ); - return 12; - } - } - } - }); - deepEqual( $("#firstnamec").rules(), {min:12}); -}); - -test("rules(), class and attribute combinations", function() { - - $.validator.addMethod("customMethod1", function() { - return false; - }, ""); - $.validator.addMethod("customMethod2", function() { - return false; - }, ""); - var v = $("#v2").validate({ - rules: { - 'v2-i7': { - required: true, - minlength: 2, - customMethod: true - } - } - }); - deepEqual( $("#v2-i1").rules(), { required: true }); - deepEqual( $("#v2-i2").rules(), { required: true, email: true }); - deepEqual( $("#v2-i3").rules(), { url: true }); - deepEqual( $("#v2-i4").rules(), { required: true, minlength: 2 }); - deepEqual( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" }); - jQuery.validator.autoCreateRanges = true; - deepEqual( $("#v2-i5").rules(), { required: true, customMethod1: "123", rangelength: [2, 5] }); - deepEqual( $("#v2-i6").rules(), { required: true, customMethod2: true, rangelength: [2, 5] }); - jQuery.validator.autoCreateRanges = false; - deepEqual( $("#v2-i7").rules(), { required: true, minlength: 2, customMethod: true }); - - delete $.validator.methods.customMethod1; - delete $.validator.messages.customMethod1; - delete $.validator.methods.customMethod2; - delete $.validator.messages.customMethod2; -}); - -test("rules(), dependency checks", function() { - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - min: { - param: 5, - depends: function(el) { - return (/^a/).test($(el).val()); - } - } - }, - lastname: { - max: { - param: 12 - }, - email: { - depends: function() { return true; } - } - } - } - }); - - var rules = $("#firstnamec").rules(); - equal( 0, v.objectLength(rules) ); - - $("#firstnamec").val('ab'); - deepEqual( $("#firstnamec").rules(), {min:5}); - - deepEqual( $("#lastnamec").rules(), {max:12, email:true}); -}); - -test("rules(), add and remove", function() { - $.validator.addMethod("customMethod1", function() { - return false; - }, ""); - $("#v2").validate(); - var removedAttrs = $("#v2-i5").removeClass("required").removeAttrs("minlength maxlength"); - deepEqual( $("#v2-i5").rules(), { customMethod1: "123" }); - - $("#v2-i5").addClass("required").attr(removedAttrs); - deepEqual( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" }); - - $("#v2-i5").addClass("email").attr({min: 5}); - deepEqual( $("#v2-i5").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: "5", customMethod1: "123" }); - - $("#v2-i5").removeClass("required email").removeAttrs("minlength maxlength customMethod1 min"); - deepEqual( $("#v2-i5").rules(), {}); - - delete $.validator.methods.customMethod1; - delete $.validator.messages.customMethod1; -}); - -test("rules(), add and remove static rules", function() { - var v = $("#testForm1clean").validate({ - rules: { - firstname: "required date" - } - }); - deepEqual( $("#firstnamec").rules(), { required: true, date: true } ); - - $("#firstnamec").rules("remove", "date"); - deepEqual( $("#firstnamec").rules(), { required: true } ); - $("#firstnamec").rules("add", "email"); - deepEqual( $("#firstnamec").rules(), { required: true, email: true } ); - - $("#firstnamec").rules("remove", "required"); - deepEqual( $("#firstnamec").rules(), { email: true } ); - - deepEqual( $("#firstnamec").rules("remove"), { email: true } ); - deepEqual( $("#firstnamec").rules(), { } ); - - $("#firstnamec").rules("add", "required email"); - deepEqual( $("#firstnamec").rules(), { required: true, email: true } ); - - - deepEqual( $("#lastnamec").rules(), {} ); - $("#lastnamec").rules("add", "required"); - $("#lastnamec").rules("add", { - minlength: 2 - }); - deepEqual( $("#lastnamec").rules(), { required: true, minlength: 2 } ); - - - var removedRules = $("#lastnamec").rules("remove", "required email"); - deepEqual( $("#lastnamec").rules(), { minlength: 2 } ); - $("#lastnamec").rules("add", removedRules); - deepEqual( $("#lastnamec").rules(), { required: true, minlength: 2 } ); -}); - -test("rules(), add messages", function() { - $("#firstnamec").attr("title", null); - var v = $("#testForm1clean").validate({ - rules: { - firstname: "required" - } - }); - $("#testForm1clean").valid(); - $("#firstnamec").valid(); - deepEqual( v.settings.messages.firstname, undefined ); - - $("#firstnamec").rules("add", { - messages: { - required: "required" - } - }); - - $("#firstnamec").valid(); - deepEqual( v.errorList[0] && v.errorList[0].message, "required" ); -}); diff --git a/thirdparty/jquery-validate/test/selects/index.html b/thirdparty/jquery-validate/test/selects/index.html deleted file mode 100644 index fae8127ae..000000000 --- a/thirdparty/jquery-validate/test/selects/index.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - - -Fun with jQuery - - - - - - - - - - - -Mission: - - -CODE - - - - - -
            - - - - - diff --git a/thirdparty/jquery-validate/test/tabs.html b/thirdparty/jquery-validate/test/tabs.html deleted file mode 100644 index 06f1022cd..000000000 --- a/thirdparty/jquery-validate/test/tabs.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - - - - -
            - -
            - -
            -
            - A simple comment form with submit validation and default messages -

            - - -

            - - -

            -

            - - -

            -

            - - -

            -
            - -
            -
            - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. -
            -
            - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. - Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. -
            -
            -

            - -

            - -
            - - - diff --git a/thirdparty/jquery-validate/test/test.js b/thirdparty/jquery-validate/test/test.js deleted file mode 100644 index cdfa3edb2..000000000 --- a/thirdparty/jquery-validate/test/test.js +++ /dev/null @@ -1,1453 +0,0 @@ -if ( window.sessionStorage ) { - sessionStorage.clear(); -} -jQuery.validator.defaults.debug = true; -$.mockjaxSettings.log = $.noop; - -$.mockjax({ - url: "form.php?user=Peter&password=foobar", - responseText: 'Hi Peter, welcome back.', - responseStatus: 200, - responseTime: 1 -}); -$.mockjax({ - url: "users.php", - data: { username: /Peter2?|asdf/}, - responseText: 'false', - responseStatus: 200, - responseTime: 1 -}); -$.mockjax({ - url: "users2.php", - data: { username: "asdf"}, - responseText: '"asdf is already taken, please try something else"', - responseStatus: 200, - responseTime: 1 -}); -$.mockjax({ - url: "echo.php", - response: function(data) { - this.responseText = JSON.stringify(data.data); - }, - responseTime: 100 -}); - -module("validator"); - -test("Constructor", function() { - var v1 = $("#testForm1").validate(); - var v2 = $("#testForm1").validate(); - equal( v1, v2, "Calling validate() multiple times must return the same validator instance" ); - equal( v1.elements().length, 3, "validator elements" ); -}); - -test("validate() without elements, with non-form elements", 0, function() { - $("#doesntexist").validate(); -}); - -test("valid() plugin method", function() { - var form = $("#userForm"); - form.validate(); - ok ( !form.valid(), "Form isn't valid yet" ); - var input = $("#username"); - ok ( !input.valid(), "Input isn't valid either" ); - input.val("Hello world"); - ok ( form.valid(), "Form is now valid" ); - ok ( input.valid(), "Input is valid, too" ); -}); - -test("valid() plugin method", function() { - var form = $("#testForm1"); - form.validate(); - var inputs = form.find("input"); - ok( !inputs.valid(), "all invalid" ); - inputs.not(":first").val("ok"); - strictEqual( inputs.valid(), false, "just one invalid" ); - inputs.val("ok"); - strictEqual( inputs.valid(), true, "all valid" ); -}); - -test("valid() plugin method, special handling for checkable groups", function() { - // rule is defined on first checkbox, must apply to others, too - var checkable = $("#checkable2"); - ok( !checkable.valid(), "must be invalid, not checked yet" ); - checkable.attr("checked", true); - ok( checkable.valid(), "valid, is now checked" ); - checkable.attr("checked", false); - ok( !checkable.valid(), "invalid again" ); - $("#checkable3").attr("checked", true); - ok( checkable.valid(), "valid, third box is checked" ); -}); - -test("addMethod", function() { - expect( 3 ); - $.validator.addMethod("hi", function(value) { - return value === "hi"; - }, "hi me too"); - var method = $.validator.methods.hi, - e = $('#text1')[0]; - ok( !method(e.value, e), "Invalid" ); - e.value = "hi"; - ok( method(e.value, e), "Invalid" ); - ok( jQuery.validator.messages.hi === "hi me too", "Check custom message" ); -}); - -test("addMethod2", function() { - expect( 4 ); - $.validator.addMethod("complicatedPassword", function(value, element, param) { - return this.optional(element) || /\D/.test(value) && /\d/.test(value); - }, "Your password must contain at least one number and one letter"); - var v = jQuery("#form").validate({ - rules: { - action: { complicatedPassword: true } - } - }); - var rule = $.validator.methods.complicatedPassword, - e = $('#text1')[0]; - e.value = ""; - strictEqual( v.element(e), true, "Rule is optional, valid" ); - equal( 0, v.size() ); - e.value = "ko"; - ok( !v.element(e), "Invalid, doesn't contain one of the required characters" ); - e.value = "ko1"; - ok( v.element(e) ); -}); - -test("form(): simple", function() { - expect( 2 ); - var form = $('#testForm1')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $('#firstname').val("hi"); - $('#lastname').val("hi"); - ok( v.form(), 'Valid form' ); -}); - -test("form(): checkboxes: min/required", function() { - expect( 3 ); - var form = $('#testForm6')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $('#form6check1').attr("checked", true); - ok( !v.form(), 'Invalid form' ); - $('#form6check2').attr("checked", true); - ok( v.form(), 'Valid form' ); -}); - -test("form(): radio buttons: required", function () { - expect( 6 ); - var form = $('#testForm10')[0]; - - var v = $(form).validate({ rules: { testForm10Radio: "required"} }); - ok(!v.form(), 'Invalid Form'); - equal($('#testForm10Radio1').attr('class'), 'error'); - equal($('#testForm10Radio2').attr('class'), 'error'); - - $('#testForm10Radio2').attr("checked", true); - ok(v.form(), 'Valid form'); - - equal($('#testForm10Radio1').attr('class'), 'valid'); - equal($('#testForm10Radio2').attr('class'), 'valid'); -}); - -test("form(): selects: min/required", function() { - expect( 3 ); - var form = $('#testForm7')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $("#optionxa").attr("selected", true); - ok( !v.form(), 'Invalid form' ); - $("#optionxb").attr("selected", true); - ok( v.form(), 'Valid form' ); -}); - -test("form(): with equalTo", function() { - expect( 2 ); - var form = $('#testForm5')[0]; - var v = $(form).validate(); - ok( !v.form(), 'Invalid form' ); - $('#x1, #x2').val("hi"); - ok( v.form(), 'Valid form' ); -}); - -test("form(): with equalTo and onfocusout=false", function() { - expect( 4 ); - var form = $('#testForm5')[0]; - var v = $(form).validate({ - onfocusout: false, - showErrors: function() { - ok(true, 'showErrors should only be called twice'); - this.defaultShowErrors(); - } - }); - $('#x1, #x2').val("hi"); - ok( v.form(), 'Valid form' ); - $('#x2').val('not equal').blur(); - ok( !v.form(), 'Invalid form' ); -}); - - -test("check(): simple", function() { - expect( 3 ); - var element = $('#firstname')[0]; - var v = $('#testForm1').validate(); - ok( v.size() === 0, 'No errors yet' ); - v.check(element); - ok( v.size() === 1, 'error exists' ); - v.errorList = []; - $('#firstname').val("hi"); - v.check(element); - ok( v.size() === 0, 'No more errors' ); -}); - -test("hide(): input", function() { - expect( 3 ); - var errorLabel = $('#errorFirstname'); - var element = $('#firstname')[0]; - element.value ="bla"; - var v = $('#testForm1').validate(); - errorLabel.show(); - ok( errorLabel.is(":visible"), "Error label visible before validation" ); - ok( v.element(element) ); - ok( errorLabel.is(":hidden"), "Error label not visible after validation" ); -}); - -test("hide(): radio", function() { - expect( 2 ); - var errorLabel = $('#agreeLabel'); - var element = $('#agb')[0]; - element.checked = true; - var v = $('#testForm2').validate({ errorClass: "xerror" }); - errorLabel.show(); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - v.element(element); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); -}); - -test("hide(): errorWrapper", function() { - expect(2); - var errorLabel = $('#errorWrapper'); - var element = $('#meal')[0]; - element.selectedIndex = 1; - - errorLabel.show(); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - var v = $('#testForm3').validate({ wrapper: "li", errorLabelContainer: $("#errorContainer") }); - v.element(element); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); -}); - -test("hide(): container", function() { - expect(4); - var errorLabel = $('#errorContainer'); - var element = $('#testForm3')[0]; - var v = $('#testForm3').validate({ errorWrapper: "li", errorContainer: $("#errorContainer") }); - v.form(); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - $('#meal')[0].selectedIndex = 1; - v.form(); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); - $('#meal')[0].selectedIndex = -1; - v.element("#meal"); - ok( errorLabel.is(":visible"), "Error label visible after validation" ); - $('#meal')[0].selectedIndex = 1; - v.element("#meal"); - ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" ); -}); - -test("valid()", function() { - expect(4); - var errorList = [{name:"meal",message:"foo", element:$("#meal")[0]}]; - var v = $('#testForm3').validate(); - ok( v.valid(), "No errors, must be valid" ); - v.errorList = errorList; - ok( !v.valid(), "One error, must be invalid" ); - QUnit.reset(); - v = $('#testForm3').validate({ submitHandler: function() { - ok( false, "Submit handler was called" ); - }}); - ok( v.valid(), "No errors, must be valid and returning true, even with the submit handler" ); - v.errorList = errorList; - ok( !v.valid(), "One error, must be invalid, no call to submit handler" ); -}); - -test("submitHandler keeps submitting button", function() { - $("#userForm").validate({ - debug: true, - submitHandler: function(form) { - // dunno how to test this better; this tests the implementation that uses a hidden input - var hidden = $(form).find("input:hidden")[0]; - deepEqual(hidden.value, button.value); - deepEqual(hidden.name, button.name); - } - }); - $("#username").val("bla"); - var button = $("#userForm :submit")[0]; - var event = $.Event("click"); - event.preventDefault(); - $.event.trigger(event, null, button); - $("#userForm").submit(); -}); - -test("showErrors()", function() { - expect( 4 ); - var errorLabel = $('#errorFirstname').hide(); - var element = $('#firstname')[0]; - var v = $('#testForm1').validate(); - ok( errorLabel.is(":hidden") ); - equal( 0, $("label.error[for=lastname]").size() ); - v.showErrors({"firstname": "required", "lastname": "bla"}); - equal( true, errorLabel.is(":visible") ); - equal( true, $("label.error[for=lastname]").is(":visible") ); -}); - -test("showErrors(), allow empty string and null as default message", function() { - $("#userForm").validate({ - rules: { - username: { - required: true, - minlength: 3 - } - }, - messages: { - username: { - required: "", - minlength: "too short" - } - } - }); - ok( !$("#username").valid() ); - equal( "", $("label.error[for=username]").text() ); - - $("#username").val("ab"); - ok( !$("#username").valid() ); - equal( "too short", $("label.error[for=username]").text() ); - - $("#username").val("abc"); - ok( $("#username").valid() ); - ok( $("label.error[for=username]").is(":hidden") ); -}); - -test("showErrors() - external messages", function() { - expect( 4 ); - var methods = $.extend({}, $.validator.methods); - var messages = $.extend({}, $.validator.messages); - $.validator.addMethod("foo", function() { return false; }); - $.validator.addMethod("bar", function() { return false; }); - equal( 0, $("#testForm4 label.error[for=f1]").size() ); - equal( 0, $("#testForm4 label.error[for=f2]").size() ); - var form = $('#testForm4')[0]; - var v = $(form).validate({ - messages: { - f1: "Please!", - f2: "Wohoo!" - } - }); - v.form(); - equal( $("#testForm4 label.error[for=f1]").text(), "Please!" ); - equal( $("#testForm4 label.error[for=f2]").text(), "Wohoo!" ); - - $.validator.methods = methods; - $.validator.messages = messages; -}); - -test("showErrors() - custom handler", function() { - expect(5); - var v = $('#testForm1').validate({ - showErrors: function(errorMap, errorList) { - equal( v, this ); - equal( v.errorList, errorList ); - equal( v.errorMap, errorMap ); - equal( "buga", errorMap.firstname ); - equal( "buga", errorMap.lastname ); - } - }); - v.form(); -}); - -test("option: (un)highlight, default", function() { - $("#testForm1").validate(); - var e = $("#firstname"); - ok( !e.hasClass("error") ); - ok( !e.hasClass("valid") ); - e.valid(); - ok( e.hasClass("error") ); - ok( !e.hasClass("valid") ); - e.val("hithere").valid(); - ok( !e.hasClass("error") ); - ok( e.hasClass("valid") ); -}); - -test("option: (un)highlight, nothing", function() { - expect(3); - $("#testForm1").validate({ - highlight: false, - unhighlight: false - }); - var e = $("#firstname"); - ok( !e.hasClass("error") ); - e.valid(); - ok( !e.hasClass("error") ); - e.valid(); - ok( !e.hasClass("error") ); -}); - -test("option: (un)highlight, custom", function() { - expect(5); - $("#testForm1clean").validate({ - highlight: function(element, errorClass) { - equal( "invalid", errorClass ); - $(element).hide(); - }, - unhighlight: function(element, errorClass) { - equal( "invalid", errorClass ); - $(element).show(); - }, - errorClass: "invalid", - rules: { - firstname: "required" - } - }); - var e = $("#firstnamec"); - ok( e.is(":visible") ); - e.valid(); - ok( !e.is(":visible") ); - e.val("hithere").valid(); - ok( e.is(":visible") ); -}); - -test("option: (un)highlight, custom2", function() { - expect(6); - $("#testForm1").validate({ - highlight: function(element, errorClass) { - $(element).addClass(errorClass); - $(element.form).find("label[for=" + element.id + "]").addClass(errorClass); - }, - unhighlight: function(element, errorClass) { - $(element).removeClass(errorClass); - $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass); - }, - errorClass: "invalid" - }); - var e = $("#firstname"); - var l = $("#errorFirstname"); - ok( !e.is(".invalid") ); - ok( !l.is(".invalid") ); - e.valid(); - ok( e.is(".invalid") ); - ok( l.is(".invalid") ); - e.val("hithere").valid(); - ok( !e.is(".invalid") ); - ok( !l.is(".invalid") ); -}); - -test("option: focusCleanup default false", function() { - var form = $("#userForm"); - form.validate(); - form.valid(); - ok( form.is(":has(label.error[for=username]:visible)")); - $("#username").focus(); - ok( form.is(":has(label.error[for=username]:visible)")); -}); - -test("option: focusCleanup true", function() { - var form = $("#userForm"); - form.validate({ - focusCleanup: true - }); - form.valid(); - ok( form.is(":has(label.error[for=username]:visible)") ); - $("#username").focus().trigger("focusin"); - ok( !form.is(":has(label.error[for=username]:visible)") ); -}); - -test("option: focusCleanup with wrapper", function() { - var form = $("#userForm"); - form.validate({ - focusCleanup: true, - wrapper: "span" - }); - form.valid(); - ok( form.is(":has(span:visible:has(label.error[for=username]))") ); - $("#username").focus().trigger("focusin"); - ok( !form.is(":has(span:visible:has(label.error[for=username]))") ); -}); - -test("option: errorClass with multiple classes", function() { - var form = $("#userForm"); - form.validate({ - focusCleanup: true, - wrapper: "span", - errorClass: "error error1" - }); - form.valid(); - ok( form.is(":has(span:visible:has(label.error[for=username]))") ); - ok( form.is(":has(span:visible:has(label.error1[for=username]))") ); - $("#username").focus().trigger("focusin"); - ok( !form.is(":has(span:visible:has(label.error[for=username]))") ); - ok( !form.is(":has(span:visible:has(label.error1[for=username]))") ); -}); - -test("elements() order", function() { - var container = $("#orderContainer"); - var v = $("#elementsOrder").validate({ - errorLabelContainer: container, - wrap: "li" - }); - deepEqual( v.elements().map(function() { - return $(this).attr("id"); - }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "elements must be in document order" ); - v.form(); - deepEqual( container.children().map(function() { - return $(this).attr("for"); - }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "labels in error container must be in document order" ); -}); - -test("defaultMessage(), empty title is ignored", function() { - var v = $("#userForm").validate(); - equal( "This field is required.", v.defaultMessage($("#username")[0], "required") ); -}); - -test("formatAndAdd", function() { - expect(4); - var v = $("#form").validate(); - var fakeElement = { form: $("#form")[0], name: "bar" }; - v.formatAndAdd(fakeElement, {method: "maxlength", parameters: 2}); - equal( "Please enter no more than 2 characters.", v.errorList[0].message ); - equal( "bar", v.errorList[0].element.name ); - - v.formatAndAdd(fakeElement, {method: "range", parameters:[2,4]}); - equal( "Please enter a value between 2 and 4.", v.errorList[1].message ); - - v.formatAndAdd(fakeElement, {method: "range", parameters:[0,4]}); - equal( "Please enter a value between 0 and 4.", v.errorList[2].message ); -}); - -test("formatAndAdd2", function() { - expect(3); - var v = $("#form").validate(); - var fakeElement = { form: $("#form")[0], name: "bar" }; - jQuery.validator.messages.test1 = function(param, element) { - equal( v, this ); - equal( 0, param ); - return "element " + element.name + " is not valid"; - }; - v.formatAndAdd(fakeElement, {method: "test1", parameters: 0}); - equal( "element bar is not valid", v.errorList[0].message ); -}); - -test("formatAndAdd, auto detect substitution string", function() { - var v = $("#testForm1clean").validate({ - rules: { - firstname: { - required: true, - rangelength: [5, 10] - } - }, - messages: { - firstname: { - rangelength: "at least ${0}, up to {1}" - } - } - }); - $("#firstnamec").val("abc"); - v.form(); - equal( "at least 5, up to 10", v.errorList[0].message ); -}); - -test("error containers, simple", function() { - expect(14); - var container = $("#simplecontainer"); - var v = $("#form").validate({ - errorLabelContainer: container, - showErrors: function() { - container.find("h3").html( jQuery.validator.format("There are {0} errors in your form.", this.size()) ); - this.defaultShowErrors(); - } - }); - - v.prepareForm(); - ok( v.valid(), "form is valid" ); - equal( 0, container.find("label").length, "There should be no error labels" ); - equal( "", container.find("h3").html() ); - - v.prepareForm(); - v.errorList = [{message:"bar", element: {name:"foo"}}, {message: "necessary", element: {name:"required"}}]; - ok( !v.valid(), "form is not valid after adding errors manually" ); - v.showErrors(); - equal( container.find("label").length, 2, "There should be two error labels" ); - ok( container.is(":visible"), "Check that the container is visible" ); - container.find("label").each(function() { - ok( $(this).is(":visible"), "Check that each label is visible" ); - }); - equal( "There are 2 errors in your form.", container.find("h3").html() ); - - v.prepareForm(); - ok( v.valid(), "form is valid after a reset" ); - v.showErrors(); - equal( container.find("label").length, 2, "There should still be two error labels" ); - ok( container.is(":hidden"), "Check that the container is hidden" ); - container.find("label").each(function() { - ok( $(this).is(":hidden"), "Check that each label is hidden" ); - }); -}); - -test("error containers, with labelcontainer I", function() { - expect(16); - var container = $("#container"), - labelcontainer = $("#labelcontainer"); - var v = $("#form").validate({ - errorContainer: container, - errorLabelContainer: labelcontainer, - wrapper: "li" - }); - - ok( v.valid(), "form is valid" ); - equal( 0, container.find("label").length, "There should be no error labels in the container" ); - equal( 0, labelcontainer.find("label").length, "There should be no error labels in the labelcontainer" ); - equal( 0, labelcontainer.find("li").length, "There should be no lis labels in the labelcontainer" ); - - v.errorList = [{message:"bar", element: {name:"foo"}}, {name: "required", message: "necessary", element: {name:"required"}}]; - ok( !v.valid(), "form is not valid after adding errors manually" ); - v.showErrors(); - equal( 0, container.find("label").length, "There should be no error label in the container" ); - equal( 2, labelcontainer.find("label").length, "There should be two error labels in the labelcontainer" ); - equal( 2, labelcontainer.find("li").length, "There should be two error lis in the labelcontainer" ); - ok( container.is(":visible"), "Check that the container is visible" ); - ok( labelcontainer.is(":visible"), "Check that the labelcontainer is visible" ); - var labels = labelcontainer.find("label").each(function() { - ok( $(this).is(":visible"), "Check that each label is visible1" ); - equal( "li", $(this).parent()[0].tagName.toLowerCase(), "Check that each label is wrapped in an li" ); - ok( $(this).parent("li").is(":visible"), "Check that each parent li is visible" ); - }); -}); - -test("errorcontainer, show/hide only on submit", function() { - expect(14); - var container = $("#container"); - var labelContainer = $("#labelcontainer"); - var v = $("#testForm1").bind("invalid-form.validate", function() { - ok( true, "invalid-form event triggered called" ); - }).validate({ - errorContainer: container, - errorLabelContainer: labelContainer, - showErrors: function() { - container.html( jQuery.validator.format("There are {0} errors in your form.", this.numberOfInvalids()) ); - ok( true, "showErrors called" ); - this.defaultShowErrors(); - } - }); - equal( "", container.html(), "must be empty" ); - equal( "", labelContainer.html(), "must be empty" ); - // validate whole form, both showErrors and invalidHandler must be called once - // preferably invalidHandler first, showErrors second - ok( !v.form(), "invalid form" ); - equal( 2, labelContainer.find("label").length ); - equal( "There are 2 errors in your form.", container.html() ); - ok( labelContainer.is(":visible"), "must be visible" ); - ok( container.is(":visible"), "must be visible" ); - - $("#firstname").val("hix").keyup(); - $("#testForm1").triggerHandler("keyup", [jQuery.event.fix({ type: "keyup", target: $("#firstname")[0] })]); - equal( 1, labelContainer.find("label:visible").length ); - equal( "There are 1 errors in your form.", container.html() ); - - $("#lastname").val("abc"); - ok( v.form(), "Form now valid, trigger showErrors but not invalid-form" ); -}); - -test("option invalidHandler", function() { - expect(1); - var v = $("#testForm1clean").validate({ - invalidHandler: function() { - ok( true, "invalid-form event triggered called" ); - start(); - } - }); - $("#usernamec").val("asdf").rules("add", { required: true, minlength: 5 }); - stop(); - $("#testForm1clean").submit(); -}); - -test("findByName()", function() { - deepEqual( new $.validator({}, document.getElementById("form")).findByName(document.getElementById("radio1").name).get(), $("#form").find("[name=radio1]").get() ); -}); - -test("focusInvalid()", function() { - // TODO when using custom focusin, this is triggered just once - // TODO when using 1.4 focusin, triggered twice; fix once not testing against 1.3 anymore - // expect(1); - var inputs = $("#testForm1 input").focus(function() { - equal( inputs[0], this, "focused first element" ); - }); - var v = $("#testForm1").validate(); - v.form(); - v.focusInvalid(); -}); - -test("findLastActive()", function() { - expect(3); - var v = $("#testForm1").validate(); - ok( !v.findLastActive() ); - v.form(); - v.focusInvalid(); - equal( v.findLastActive(), $("#firstname")[0] ); - var lastActive = $("#lastname").trigger("focus").trigger("focusin")[0]; - equal( v.lastActive, lastActive ); -}); - -test("validating multiple checkboxes with 'required'", function() { - expect(3); - var checkboxes = $("#form input[name=check3]").prop("checked", false); - equal(checkboxes.size(), 5); - var v = $("#form").validate({ - rules: { - check3: "required" - } - }); - v.form(); - equal(v.size(), 1); - checkboxes.filter(":last").prop("checked", true); - v.form(); - equal(v.size(), 0); -}); - -test("dynamic form", function() { - var counter = 0; - function add() { - $("").appendTo("#testForm2"); - } - function errors(expected, message) { - equal(expected, v.size(), message ); - } - var v = $("#testForm2").validate(); - v.form(); - errors(1); - add(); - v.form(); - errors(2); - add(); - v.form(); - errors(3); - $("#testForm2 input[name=list1]").remove(); - v.form(); - errors(2); - add(); - v.form(); - errors(3); - $("#testForm2 input[name^=list]").remove(); - v.form(); - errors(1); - $("#agb").attr("disabled", true); - v.form(); - errors(0); - $("#agb").attr("disabled", false); - v.form(); - errors(1); -}); - -test("idOrName()", function() { - expect(4); - var v = $("#testForm1").validate(); - equal( "form8input", v.idOrName( $("#form8input")[0] ) ); - equal( "check", v.idOrName( $("#form6check1")[0] ) ); - equal( "agree", v.idOrName( $("#agb")[0] ) ); - equal( "button", v.idOrName( $("#form :button")[0] ) ); -}); - -test("resetForm()", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - var v = $("#testForm1").validate(); - v.form(); - errors(2); - $("#firstname").val("hiy"); - v.resetForm(); - errors(0); - equal("", $("#firstname").val(), "form plugin is included, therefor resetForm must also reset inputs, not only errors"); -}); - -test("message from title", function() { - var v = $("#withTitle").validate(); - v.checkForm(); - equal(v.errorList[0].message, "fromtitle", "title not used"); -}); - -test("ignoreTitle", function() { - var v = $("#withTitle").validate({ignoreTitle:true}); - v.checkForm(); - equal(v.errorList[0].message, $.validator.messages["required"], "title used when it should have been ignored"); -}); - -test("ajaxSubmit", function() { - expect(1); - stop(); - $("#user").val("Peter"); - $("#password").val("foobar"); - jQuery("#signupForm").validate({ - submitHandler: function(form) { - jQuery(form).ajaxSubmit({ - success: function(response) { - equal("Hi Peter, welcome back.", response); - start(); - } - }); - } - }); - jQuery("#signupForm").triggerHandler("submit"); -}); - -test("validating groups settings parameter", function() { - var form = $("
            "); - var validate = form.validate({ - groups: { - arrayGroup: ["input one", "input-two", "input three"], - stringGroup: "input-four input-five input-six" - } - }); - equal(validate.groups["input one"], "arrayGroup"); - equal(validate.groups["input-two"], "arrayGroup"); - equal(validate.groups["input three"], "arrayGroup"); - equal(validate.groups["input-four"], "stringGroup"); - equal(validate.groups["input-five"], "stringGroup"); - equal(validate.groups["input-six"], "stringGroup"); -}); - -test('bypassing validation on form submission',function () { - var form = $("#bypassValidation"); - var normalSubmission = $("form#bypassValidation :input[id=normalSubmit]"); - var bypassSubmitWithCancel = $("form#bypassValidation :input[id=bypassSubmitWithCancel]"); - var bypassSubmitWithNoValidate1 = $("form#bypassValidation :input[id=bypassSubmitWithNoValidate1]"); - var bypassSubmitWithNoValidate2 = $("form#bypassValidation :input[id=bypassSubmitWithNoValidate2]"); - - var $v = form.validate({ - debug : true - }); - - bypassSubmitWithCancel.click(); - equal($v.numberOfInvalids(), 0, "Validation was bypassed using CSS 'cancel' class."); - $v.resetForm(); - - bypassSubmitWithNoValidate1.click(); - equal($v.numberOfInvalids(), 0, "Validation was bypassed using blank 'formnovalidate' attribute."); - $v.resetForm(); - - bypassSubmitWithNoValidate2.click(); - equal($v.numberOfInvalids(), 0, "Validation was bypassed using 'formnovalidate=\"formnovalidate\"' attribute."); - $v.resetForm(); - - normalSubmission.click(); - equal($v.numberOfInvalids(), 1, "Validation failed correctly"); -}); - - -module("misc"); - -test("success option", function() { - expect(7); - equal( "", $("#firstname").val() ); - var v = $("#testForm1").validate({ - success: "valid" - }); - var label = $("#testForm1 label"); - ok( label.is(".error") ); - ok( !label.is(".valid") ); - v.form(); - ok( label.is(".error") ); - ok( !label.is(".valid") ); - $("#firstname").val("hi"); - v.form(); - ok( label.is(".error") ); - ok( label.is(".valid") ); -}); - -test("success option2", function() { - expect(5); - equal( "", $("#firstname").val() ); - var v = $("#testForm1").validate({ - success: "valid" - }); - var label = $("#testForm1 label"); - ok( label.is(".error") ); - ok( !label.is(".valid") ); - $("#firstname").val("hi"); - v.form(); - ok( label.is(".error") ); - ok( label.is(".valid") ); -}); - -test("success option3", function() { - expect(5); - equal( "", $("#firstname").val() ); - $("#errorFirstname").remove(); - var v = $("#testForm1").validate({ - success: "valid" - }); - equal( 0, $("#testForm1 label").size() ); - $("#firstname").val("hi"); - v.form(); - var labels = $("#testForm1 label"); - equal( 3, labels.size() ); - ok( labels.eq(0).is(".valid") ); - ok( !labels.eq(1).is(".valid") ); -}); - -test("successlist", function() { - var v = $("#form").validate({ success: "xyz" }); - v.form(); - equal(0, v.successList.length); -}); - -test("success isn't called for optional elements", function() { - expect(4); - equal( "", $("#firstname").removeAttr("data-rule-required").removeAttr("data-rule-minlength").val() ); - $("#something").remove(); - $("#lastname").remove(); - $("#errorFirstname").remove(); - var v = $("#testForm1").validate({ - success: function() { - ok( false, "don't call success for optional elements!" ); - }, - rules: { - firstname: "email" - } - }); - equal( 0, $("#testForm1 label").size() ); - v.form(); - equal( 0, $("#testForm1 label").size() ); - $("#firstname").valid(); - equal( 0, $("#testForm1 label").size() ); -}); - -test("success callback with element", function() { - expect(1); - var v = $("#userForm").validate({ - success: function( label, element ) { - equal( element, $('#username').get(0) ); - } - }); - $("#username").val("hi"); - v.form(); -}); - -test("all rules are evaluated even if one returns a dependency-mistmatch", function() { - expect(6); - equal( "", $("#firstname").removeAttr("data-rule-required").removeAttr("data-rule-minlength").val() ); - $("#lastname").remove(); - $("#errorFirstname").remove(); - $.validator.addMethod("custom1", function() { - ok( true, "custom method must be evaluated" ); - return true; - }, ""); - var v = $("#testForm1").validate({ - rules: { - firstname: {email:true, custom1: true} - } - }); - equal( 0, $("#testForm1 label").size() ); - v.form(); - equal( 0, $("#testForm1 label").size() ); - $("#firstname").valid(); - equal( 0, $("#testForm1 label").size() ); - - delete $.validator.methods.custom1; - delete $.validator.messages.custom1; -}); - -test("messages", function() { - var m = jQuery.validator.messages; - equal( "Please enter no more than 0 characters.", m.maxlength(0) ); - equal( "Please enter at least 1 characters.", m.minlength(1) ); - equal( "Please enter a value between 1 and 2 characters long.", m.rangelength([1, 2]) ); - equal( "Please enter a value less than or equal to 1.", m.max(1) ); - equal( "Please enter a value greater than or equal to 0.", m.min(0) ); - equal( "Please enter a value between 1 and 2.", m.range([1, 2]) ); -}); - -test("jQuery.validator.format", function() { - equal( "Please enter a value between 0 and 1.", jQuery.validator.format("Please enter a value between {0} and {1}.", 0, 1) ); - equal( "0 is too fast! Enter a value smaller then 0 and at least -15", jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}", 0, -15) ); - var template = jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}"); - equal( "0 is too fast! Enter a value smaller then 0 and at least -15", template(0, -15) ); - template = jQuery.validator.format("Please enter a value between {0} and {1}."); - equal( "Please enter a value between 1 and 2.", template([1, 2]) ); - equal( $.validator.format("{0}", "$0"), "$0" ); -}); - -test("option: ignore", function() { - var v = $("#testForm1").validate({ - ignore: "[name=lastname]" - }); - v.form(); - equal( 1, v.size() ); -}); - -test("option: subformRequired", function() { - jQuery.validator.addMethod("billingRequired", function(value, element) { - if ($("#bill_to_co").is(":checked")) { - return $(element).parents("#subform").length; - } - return !this.optional(element); - }, ""); - var v = $("#subformRequired").validate(); - v.form(); - equal( 1, v.size() ); - $("#bill_to_co").attr("checked", false); - v.form(); - equal( 2, v.size() ); - - delete $.validator.methods.billingRequired; - delete $.validator.messages.billingRequired; -}); - -module("expressions"); - -test("expression: :blank", function() { - var e = $("#lastname")[0]; - equal( 1, $(e).filter(":blank").length ); - e.value = " "; - equal( 1, $(e).filter(":blank").length ); - e.value = " "; - equal( 1, $(e).filter(":blank").length ); - e.value= " a "; - equal( 0, $(e).filter(":blank").length ); -}); - -test("expression: :filled", function() { - var e = $("#lastname")[0]; - equal( 0, $(e).filter(":filled").length ); - e.value = " "; - equal( 0, $(e).filter(":filled").length ); - e.value = " "; - equal( 0, $(e).filter(":filled").length ); - e.value= " a "; - equal( 1, $(e).filter(":filled").length ); -}); - -test("expression: :unchecked", function() { - var e = $("#check2")[0]; - equal( 1, $(e).filter(":unchecked").length ); - e.checked = true; - equal( 0, $(e).filter(":unchecked").length ); - e.checked = false; - equal( 1, $(e).filter(":unchecked").length ); -}); - -module("events"); - -test("validate on blur", function() { - function errors(expected, message) { - equal(v.size(), expected, message ); - } - function labels(expected) { - equal(v.errors().filter(":visible").size(), expected); - } - function blur(target) { - target.trigger("blur").trigger("focusout"); - } - $("#errorFirstname").hide(); - var e = $("#firstname"); - var v = $("#testForm1").validate(); - $("#something").val(""); - blur(e); - errors(0, "No value yet, required is skipped on blur"); - labels(0); - e.val("h"); - blur(e); - errors(1, "Required was ignored, but as something was entered, check other rules, minlength isn't met"); - labels(1); - e.val("hh"); - blur(e); - errors(0, "All is fine"); - labels(0); - e.val(""); - v.form(); - errors(3, "Submit checks all rules, both fields invalid"); - labels(3); - blur(e); - errors(1, "Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error" ); - labels(3); - e.val("h"); - blur(e); - errors(1, "Entering a single character fulfills required, but not minlength: 2, still invalid"); - labels(3); - e.val("hh"); - blur(e); - errors(0, "Both required and minlength are met, no errors left"); - labels(2); -}); - -test("validate on keyup", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - function keyup(target) { - target.trigger("keyup"); - } - var e = $("#firstname"); - var v = $("#testForm1").validate(); - keyup(e); - errors(0, "No value, no errors"); - e.val("a"); - keyup(e); - errors(0, "Value, but not invalid"); - e.val(""); - v.form(); - errors(2, "Both invalid"); - keyup(e); - errors(1, "Only one field validated, still invalid"); - e.val("hh"); - keyup(e); - errors(0, "Not invalid anymore"); - e.val("h"); - keyup(e); - errors(1, "Field didn't loose focus, so validate again, invalid"); - e.val("hh"); - keyup(e); - errors(0, "Valid"); -}); - -test("validate on not keyup, only blur", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - var e = $("#firstname"); - var v = $("#testForm1").validate({ - onkeyup: false - }); - errors(0); - e.val("a"); - e.trigger("keyup"); - e.keyup(); - errors(0); - e.trigger("blur").trigger("focusout"); - errors(1); -}); - -test("validate on keyup and blur", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - var e = $("#firstname"); - var v = $("#testForm1").validate(); - errors(0); - e.val("a"); - e.trigger("keyup"); - errors(0); - e.trigger("blur").trigger("focusout"); - errors(1); -}); - -test("validate email on keyup and blur", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - var e = $("#firstname"); - var v = $("#testForm1").validate(); - v.form(); - errors(2); - e.val("a"); - e.trigger("keyup"); - errors(1); - e.val("aa"); - e.trigger("keyup"); - errors(0); -}); - -test("validate checkbox on click", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e = $("#check2"); - var v = $("#form").validate({ - rules: { - check2: "required" - } - }); - trigger(e); - errors(0); - trigger(e); - equal( false, v.form() ); - errors(1); - trigger(e); - errors(0); - trigger(e); - errors(1); -}); - -test("validate multiple checkbox on click", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e1 = $("#check1").attr("checked", false); - var e2 = $("#check1b"); - var v = $("#form").validate({ - rules: { - check: { - required: true, - minlength: 2 - } - } - }); - trigger(e1); - trigger(e2); - errors(0); - trigger(e2); - equal( false, v.form() ); - errors(1); - trigger(e2); - errors(0); - trigger(e2); - errors(1); -}); - -test("correct checkbox receives the error", function(){ - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e1 = $("#check1").attr("checked", false); - var e2 = $("#check1b").attr("checked", false); - var v = $("#form").find('[type=checkbox]').attr('checked', false).end().validate({ - rules:{ - check: { - required: true, - minlength: 2 - } - } - }); - equal(false, v.form()); - trigger(e1); - equal(false, v.form()); - ok(v.errorList[0].element.id === v.currentElements[0].id, "the proper checkbox has the error AND is present in currentElements"); -}); - -test("validate radio on click", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - function trigger(element) { - element.click(); - // triggered click event screws up checked-state in 1.4 - element.valid(); - } - var e1 = $("#radio1"); - var e2 = $("#radio1a"); - var v = $("#form").validate({ - rules: { - radio1: "required" - } - }); - errors(0); - equal( false, v.form() ); - errors(1); - trigger(e2); - errors(0); - trigger(e1); - errors(0); -}); - -test("validate input with no type attribute, defaulting to text", function() { - function errors(expected, message) { - equal(expected, v.size(), message ); - } - var v = $("#testForm12").validate(); - var e = $("#testForm12text"); - errors(0); - e.valid(); - errors(1); - e.val('test'); - e.trigger('keyup'); - errors(0); -}); - -test("ignore hidden elements", function(){ - var form = $('#userForm'); - var validate = form.validate({ - rules:{ - "username": "required" - } - }); - form.get(0).reset(); - ok(! validate.form(), "form should be initially invalid"); - $('#userForm [name=username]').hide(); - ok(validate.form(), "hidden elements should be ignored by default"); -}); - -test("ignore hidden elements at start", function(){ - var form = $('#userForm'); - var validate = form.validate({ - rules:{ - "username": "required" - } - }); - form.get(0).reset(); - $('#userForm [name=username]').hide(); - ok(validate.form(), "hidden elements should be ignored by default"); - $('#userForm [name=username]').show(); - ok(! validate.form(), "form should be invalid when required element is visible"); -}); - -test("Specify error messages through data attributes", function() { - var form = $('#dataMessages'); - var name = $('#dataMessagesName'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#dataMessages label'); - equal( label.text(), "You must enter a value here", "Correct error label" ); -}); - -test("Updates pre-existing label if has error class", function() { - var form = $('#updateLabel'), - input = $('#updateLabelInput'), - label = $('#targetLabel'), - v = form.validate(), - labelsBefore = form.find('label').length, - labelsAfter; - - input.val(''); - input.valid(); - labelsAfter = form.find('label').length; - - // label was updated - equal( label.text(), input.attr('data-msg-required') ); - // new label wasn't created - equal( labelsBefore, labelsAfter ); -}); - -test("Min date set by attribute", function() { - var form = $('#ranges'); - var name = $('#minDateInvalid'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "Please enter a value greater than or equal to 2012-12-21.", "Correct error label" ); -}); - -test("Max date set by attribute", function() { - var form = $('#ranges'); - var name = $('#maxDateInvalid'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "Please enter a value less than or equal to 2012-12-21.", "Correct error label" ); -}); - -test("Min and Max date set by attributes greater", function() { - var form = $('#ranges'); - var name = $('#rangeDateInvalidGreater'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "Please enter a value less than or equal to 2013-01-21.", "Correct error label" ); -}); - -test("Min and Max date set by attributes less", function() { - var form = $('#ranges'); - var name = $('#rangeDateInvalidLess'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "Please enter a value greater than or equal to 2012-11-21.", "Correct error label" ); -}); - -test("Min date set by attribute valid", function() { - var form = $('#ranges'); - var name = $('#minDateValid'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "", "Correct error label" ); -}); - -test("Max date set by attribute valid", function() { - var form = $('#ranges'); - var name = $('#maxDateValid'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "", "Correct error label" ); -}); - -test("Min and Max date set by attributes valid", function() { - var form = $('#ranges'); - var name = $('#rangeDateValid'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "", "Correct error label" ); -}); - -test("Min and Max strings set by attributes greater", function() { - var form = $('#ranges'); - var name = $('#rangeTextInvalidGreater'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "Please enter a value less than or equal to YYY.", "Correct error label" ); -}); - -test("Min and Max strings set by attributes less", function() { - var form = $('#ranges'); - var name = $('#rangeTextInvalidLess'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "Please enter a value greater than or equal to BBB.", "Correct error label" ); -}); - -test("Min and Max strings set by attributes valid", function() { - var form = $('#ranges'); - var name = $('#rangeTextValid'); - var v = form.validate(); - - form.get(0).reset(); - name.valid(); - - var label = $('#ranges label'); - equal( label.text(), "", "Correct error label" ); -}); - - diff --git a/thirdparty/jquery-validate/todo b/thirdparty/jquery-validate/todo deleted file mode 100644 index 65038cc97..000000000 --- a/thirdparty/jquery-validate/todo +++ /dev/null @@ -1,161 +0,0 @@ -- consider a field-validator object that encapsulates a single element and all methods working on it -- document min/max/range methods for checkboxes/selects - -/** - * Return false, if the element is - * - * - some kind of text input and its value is too short - * - * - a set of checkboxes has not enough boxes checked - * - * - a select and has not enough options selected - * - * Works with all kind of text inputs, checkboxes and select. - * - * @example - * @desc Declares an optional input element with at least 5 characters (or none at all). - * - * @example - * @desc Declares an input element that must have at least 5 characters. - * - * @example
            - * Spam - * - * - * - * - *
            - * @desc Specifies a group of checkboxes. To validate, at least two checkboxes must be selected. - * - * @param Number min - * @name jQuery.validator.methods.minLength - * @type Boolean - * @cat Plugins/Validate/Methods - */ - - /** - * Return false, if the element is - * - * - some kind of text input and its value is too short or too long - * - * - a set of checkboxes has not enough or too many boxes checked - * - * - a select and has not enough or too many options selected - * - * Works with all kind of text inputs, checkboxes and selects. - * - * @example - * @desc Declares an optional input element with at least 3 and at most 5 characters (or none at all). - * - * @example - * @desc Declares an input element that must have at least 3 and at most 5 characters. - * - * @example - * @desc Specifies a select that must have at least two but no more than three options selected. - * - * @param Array min/max - * @name jQuery.validator.methods.rangeLength - * @type Boolean - * @cat Plugins/Validate/Methods - */ - -- document numberOfInvalids and hideErrors - -/** - * Returns the number of invalid elements in the form. - * - * @example $("#myform").validate({ - * showErrors: function() { - * $("#summary").html("Your form contains " + this.numberOfInvalids() + " errors, see details below."); - * this.defaultShowErrors(); - * } - * }); - * @desc Specifies a custom showErrors callback that updates the number of invalid elements each - * time the form or a single element is validated. - * - * @name jQuery.validator.prototype.numberOfInvalids - * @type Number - */ - - /** - * Hides all error messages in this form. - * - * @example var validator = $("#myform").validate(); - * $(".cancel").click(function() { - * validator.hideErrors(); - * }); - * @desc Specifies a custom showErrors callback that updates the number of invalid elements each - * time the form or a single element is validated. - * - * @name jQuery.validator.prototype.hideErrors - */ - -- css references - - http://test5.caribmedia.com/CSS/Secrets/members/michiel/floating-forms.html - - http://paularmstrongdesigns.com/projects/awesomeform/ - - http://dnevnikeklektika.com/uni-form/ - -- consider validation on page load, disabling required-checks -- completely rework showErrors: manually settings errors is currently extremely flawed and utterly useless, eg. errors disappear if some other validation is triggered - -- document focusInvalid() -- document validation lifecycle: setup (add event handlers), run validation (prepare form, validate elements, display errors/submit form) - -> show where the user can hook in via callbacks - -- AND dependency: specify multiple expressions as an array - -- add custom events for form and elements instead of more callbacks (additional options/callbacks) - - beforeValidation: Callback, called before doing any validation - - beforeSubmit: Callback, called before submitting the form (default submit or calling submitHandler, if specified) - -- animations!! -- ajax validation: - - in combination with autocomplete (mustmatch company name, fill out address details, validate required) - - validate zip code in comparison to address, if match and state is missing, fill out state -- strong password check/integration: http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/ - -- stop firefox password manager to popup before validation - check mozilla bug tracker? - -- overload addMethod with a Option-variant: -$.validator.addMethod({ - name: "custom", - message: "blablabla", - parameteres: false, - handler: function() { ... } -}); - - Examples: - - wordpress comment form, make it a drop-in method - - ajaxForm() integration - - ajaxSubmit with rules-option, more/less options to ajaxSubmit - - watermark integration http://digitalbush.com/projects/watermark-input-plugin - - datepicker integration - - timepicker integration ( http://labs.perifer.se/timedatepicker/ ) - - integration with CakePHP ( https://trac.cakephp.org/ticket/2359 ) - - integration with tabs: http://www.netix.sk/forms/test.html - - integration with rich-text-editors (FCKEditor, Codepress) - http://www.fyneworks.com/jquery/FCKEditor/ - -2.0 ---- -- attachValidation, removeValidation, validate (with UI), valid (without UI) -- (re)move current addMethod implementation -- move rules plugin option -- move metadata support -- make validate method chainable - -> provide an accessor for the validator if necessary at all -- move a few default methods to additions, eg. dateXXX, creditcard, definitely accept diff --git a/thirdparty/jquery-validate/validation.jquery.json b/thirdparty/jquery-validate/validation.jquery.json deleted file mode 100644 index f353e60b2..000000000 --- a/thirdparty/jquery-validate/validation.jquery.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "validation", - "title": "jQuery Validation", - "description": "Form validation made easy. Validate a simple comment form with inline rules, or a complex signup form with powerful remote checks.", - "keywords": [ - "forms", - "validation", - "validate" - ], - "version": "1.12.0pre", - "author": { - "name": "Jörn Zaefferer", - "email": "joern.zaefferer@gmail.com", - "url": "http://bassistance.de" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/MIT" - } - ], - "bugs": "https://github.com/jzaefferer/jquery-validation/issues", - "homepage": "https://github.com/jzaefferer/jquery-validation", - "docs": "http://docs.jquery.com/Plugins/Validation", - "download": "http://bassistance.de/jquery-plugins/jquery-plugin-validation/", - "dependencies": { - "jquery": ">=1.4.4" - } -} \ No newline at end of file