From 67cf280f32ef0822b873f94f3dd103eb7101c737 Mon Sep 17 00:00:00 2001 From: zsloan Date: Thu, 11 Feb 2016 17:06:07 +0000 Subject: Updated jquery validation plugin, now works in IE Fixed a couple minor html syntax erors in login_user.html and base.html Changed export button on correlation page to csvHtml5, but still has problem with commas in fields being interpreted as a new column --- .../new/packages/ValidationPlugin/Gruntfile.js | 186 + .../static/new/packages/ValidationPlugin/README.md | 42 +- .../new/packages/ValidationPlugin/changelog.txt | 337 - .../demo/ajaxSubmit-integration-demo.html | 90 + .../ValidationPlugin/demo/captcha/captcha.js | 27 + .../demo/captcha/fonts/Anorexia.ttf | Bin 0 -> 14300 bytes .../ValidationPlugin/demo/captcha/image_req.php | 6 + .../demo/captcha/images/button.png | Bin 0 -> 1546 bytes .../ValidationPlugin/demo/captcha/images/image.php | 33 + .../ValidationPlugin/demo/captcha/index.php | 77 + .../ValidationPlugin/demo/captcha/newsession.php | 12 + .../ValidationPlugin/demo/captcha/process.php | 14 + .../ValidationPlugin/demo/captcha/rand.php | 11 + .../ValidationPlugin/demo/captcha/style.css | 140 + .../packages/ValidationPlugin/demo/css/cmxform.css | 46 + .../ValidationPlugin/demo/css/cmxformTemplate.css | 55 + .../packages/ValidationPlugin/demo/css/core.css | 21 + .../packages/ValidationPlugin/demo/css/reset.css | 61 + .../packages/ValidationPlugin/demo/css/screen.css | 11 + .../demo/custom-messages-data-demo.html | 66 + .../ValidationPlugin/demo/custom-methods-demo.html | 118 + .../ValidationPlugin/demo/dynamic-totals.html | 142 + .../ValidationPlugin/demo/errorcontainer-demo.html | 152 + .../demo/errors-within-labels.html | 91 + .../packages/ValidationPlugin/demo/file_input.html | 47 + .../packages/ValidationPlugin/demo/images/bg.gif | Bin 0 -> 1175 bytes .../ValidationPlugin/demo/images/checked.gif | Bin 0 -> 220 bytes .../demo/images/cmxform-divider.gif | Bin 0 -> 43 bytes .../demo/images/cmxform-fieldset.gif | Bin 0 -> 314 bytes .../ValidationPlugin/demo/images/loading.gif | Bin 0 -> 418 bytes .../ValidationPlugin/demo/images/unchecked.gif | Bin 0 -> 223 bytes .../new/packages/ValidationPlugin/demo/index.html | 244 + .../ValidationPlugin/demo/jquerymobile.html | 77 + .../ValidationPlugin/demo/login/images/bg.gif | Bin 0 -> 89 bytes .../ValidationPlugin/demo/login/images/header1.jpg | Bin 0 -> 442 bytes .../ValidationPlugin/demo/login/images/page.gif | Bin 0 -> 664 bytes .../demo/login/images/required_star.gif | Bin 0 -> 121 bytes .../ValidationPlugin/demo/login/index.html | 69 + .../ValidationPlugin/demo/login/screen.css | 457 + .../demo/marketo/images/backRequiredGray.gif | Bin 0 -> 137 bytes .../demo/marketo/images/back_green-fade.gif | Bin 0 -> 2421 bytes .../demo/marketo/images/back_nav_blue.gif | Bin 0 -> 1668 bytes .../ValidationPlugin/demo/marketo/images/blank.gif | Bin 0 -> 799 bytes .../demo/marketo/images/button-submit.gif | Bin 0 -> 4527 bytes .../demo/marketo/images/favicon.ico | Bin 0 -> 1150 bytes .../ValidationPlugin/demo/marketo/images/help.png | Bin 0 -> 1615 bytes .../demo/marketo/images/left-nav-callout-long.png | Bin 0 -> 1381 bytes .../demo/marketo/images/login-sprite.gif | Bin 0 -> 2017 bytes .../demo/marketo/images/logo_marketo.gif | Bin 0 -> 8363 bytes .../ValidationPlugin/demo/marketo/images/sf.png | Bin 0 -> 3745 bytes .../demo/marketo/images/step1-24.gif | Bin 0 -> 1357 bytes .../demo/marketo/images/step2-24.gif | Bin 0 -> 1355 bytes .../demo/marketo/images/step3-24.gif | Bin 0 -> 1362 bytes .../demo/marketo/images/tab-sprite.gif | Bin 0 -> 4710 bytes .../demo/marketo/images/tab_green.gif | Bin 0 -> 1652 bytes .../ValidationPlugin/demo/marketo/images/time.png | Bin 0 -> 793 bytes .../demo/marketo/images/toggle.gif | Bin 0 -> 845 bytes .../demo/marketo/images/warning.gif | Bin 0 -> 234 bytes .../ValidationPlugin/demo/marketo/index.html | 292 + .../demo/marketo/jquery.maskedinput.js | 338 + .../ValidationPlugin/demo/marketo/mktSignup.js | 133 + .../ValidationPlugin/demo/marketo/step2.htm | 326 + .../ValidationPlugin/demo/marketo/stylesheet.css | 1179 +++ .../new/packages/ValidationPlugin/demo/milk/bg.gif | Bin 0 -> 73 bytes .../packages/ValidationPlugin/demo/milk/index.html | 250 + .../ValidationPlugin/demo/milk/left_white.png | Bin 0 -> 538 bytes .../packages/ValidationPlugin/demo/milk/milk.css | 236 + .../packages/ValidationPlugin/demo/milk/milk.png | Bin 0 -> 5121 bytes .../ValidationPlugin/demo/milk/right_white.png | Bin 0 -> 1579 bytes .../ValidationPlugin/demo/multipart/index.html | 468 + .../ValidationPlugin/demo/multipart/style.css | 705 ++ .../demo/radio-checkbox-select-demo.html | 132 + .../ValidationPlugin/demo/requirejs/app.js | 9 + .../ValidationPlugin/demo/requirejs/index.html | 56 + .../packages/ValidationPlugin/demo/site-demos.css | 16 + .../ValidationPlugin/demo/themerollered.html | 235 + .../ValidationPlugin/demo/tinymce/index.html | 69 + .../demo/tinymce/themes/simple/editor_template.js | 1 + .../demo/tinymce/themes/simple/img/icons.gif | Bin 0 -> 1440 bytes .../demo/tinymce/themes/simple/langs/en.js | 11 + .../tinymce/themes/simple/skins/default/ui.css | 32 + .../ValidationPlugin/demo/tinymce/tiny_mce.js | 1 + .../ValidationPlugin/demo/tinymce4/index.html | 71 + .../ValidationPlugin/dist/additional-methods.js | 1157 ++- .../dist/additional-methods.min.js | 8 +- .../ValidationPlugin/dist/jquery.validate.js | 1386 +-- .../ValidationPlugin/dist/jquery.validate.min.js | 8 +- .../dist/localization/messages_ar.js | 33 + .../dist/localization/messages_ar.min.js | 4 + .../dist/localization/messages_bg.js | 33 + .../dist/localization/messages_bg.min.js | 4 + .../dist/localization/messages_bn_BD.js | 33 + .../dist/localization/messages_bn_BD.min.js | 4 + .../dist/localization/messages_ca.js | 33 + .../dist/localization/messages_ca.min.js | 4 + .../dist/localization/messages_cs.js | 33 + .../dist/localization/messages_cs.min.js | 4 + .../dist/localization/messages_da.js | 30 + .../dist/localization/messages_da.min.js | 4 + .../dist/localization/messages_de.js | 30 + .../dist/localization/messages_de.min.js | 4 + .../dist/localization/messages_el.js | 33 + .../dist/localization/messages_el.min.js | 4 + .../dist/localization/messages_es.js | 36 + .../dist/localization/messages_es.min.js | 4 + .../dist/localization/messages_es_AR.js | 37 + .../dist/localization/messages_es_AR.min.js | 4 + .../dist/localization/messages_es_PE.js | 37 + .../dist/localization/messages_es_PE.min.js | 4 + .../dist/localization/messages_et.js | 31 + .../dist/localization/messages_et.min.js | 4 + .../dist/localization/messages_eu.js | 33 + .../dist/localization/messages_eu.min.js | 4 + .../dist/localization/messages_fa.js | 36 + .../dist/localization/messages_fa.min.js | 4 + .../dist/localization/messages_fi.js | 31 + .../dist/localization/messages_fi.min.js | 4 + .../dist/localization/messages_fr.js | 59 + .../dist/localization/messages_fr.min.js | 4 + .../dist/localization/messages_ge.js | 33 + .../dist/localization/messages_ge.min.js | 4 + .../dist/localization/messages_gl.js | 38 + .../dist/localization/messages_gl.min.js | 4 + .../dist/localization/messages_he.js | 33 + .../dist/localization/messages_he.min.js | 4 + .../dist/localization/messages_hr.js | 33 + .../dist/localization/messages_hr.min.js | 4 + .../dist/localization/messages_hu.js | 32 + .../dist/localization/messages_hu.min.js | 4 + .../dist/localization/messages_hy_AM.js | 33 + .../dist/localization/messages_hy_AM.min.js | 4 + .../dist/localization/messages_id.js | 32 + .../dist/localization/messages_id.min.js | 4 + .../dist/localization/messages_is.js | 31 + .../dist/localization/messages_is.min.js | 4 + .../dist/localization/messages_it.js | 37 + .../dist/localization/messages_it.min.js | 4 + .../dist/localization/messages_ja.js | 33 + .../dist/localization/messages_ja.min.js | 4 + .../dist/localization/messages_ka.js | 33 + .../dist/localization/messages_ka.min.js | 4 + .../dist/localization/messages_kk.js | 33 + .../dist/localization/messages_kk.min.js | 4 + .../dist/localization/messages_ko.js | 33 + .../dist/localization/messages_ko.min.js | 4 + .../dist/localization/messages_lt.js | 33 + .../dist/localization/messages_lt.min.js | 4 + .../dist/localization/messages_lv.js | 33 + .../dist/localization/messages_lv.min.js | 4 + .../dist/localization/messages_my.js | 33 + .../dist/localization/messages_my.min.js | 4 + .../dist/localization/messages_nl.js | 43 + .../dist/localization/messages_nl.min.js | 4 + .../dist/localization/messages_no.js | 33 + .../dist/localization/messages_no.min.js | 4 + .../dist/localization/messages_pl.js | 33 + .../dist/localization/messages_pl.min.js | 4 + .../dist/localization/messages_pt_BR.js | 39 + .../dist/localization/messages_pt_BR.min.js | 4 + .../dist/localization/messages_pt_PT.js | 37 + .../dist/localization/messages_pt_PT.min.js | 4 + .../dist/localization/messages_ro.js | 33 + .../dist/localization/messages_ro.min.js | 4 + .../dist/localization/messages_ru.js | 33 + .../dist/localization/messages_ru.min.js | 4 + .../dist/localization/messages_si.js | 33 + .../dist/localization/messages_si.min.js | 4 + .../dist/localization/messages_sk.js | 30 + .../dist/localization/messages_sk.min.js | 4 + .../dist/localization/messages_sl.js | 33 + .../dist/localization/messages_sl.min.js | 4 + .../dist/localization/messages_sr.js | 33 + .../dist/localization/messages_sr.min.js | 4 + .../dist/localization/messages_sr_lat.js | 33 + .../dist/localization/messages_sr_lat.min.js | 4 + .../dist/localization/messages_sv.js | 31 + .../dist/localization/messages_sv.min.js | 4 + .../dist/localization/messages_th.js | 33 + .../dist/localization/messages_th.min.js | 4 + .../dist/localization/messages_tj.js | 33 + .../dist/localization/messages_tj.min.js | 4 + .../dist/localization/messages_tr.js | 34 + .../dist/localization/messages_tr.min.js | 4 + .../dist/localization/messages_uk.js | 33 + .../dist/localization/messages_uk.min.js | 4 + .../dist/localization/messages_vi.js | 33 + .../dist/localization/messages_vi.min.js | 4 + .../dist/localization/messages_zh.js | 33 + .../dist/localization/messages_zh.min.js | 4 + .../dist/localization/messages_zh_TW.js | 34 + .../dist/localization/messages_zh_TW.min.js | 4 + .../dist/localization/methods_de.js | 22 + .../dist/localization/methods_de.min.js | 4 + .../dist/localization/methods_es_CL.js | 22 + .../dist/localization/methods_es_CL.min.js | 4 + .../dist/localization/methods_fi.js | 22 + .../dist/localization/methods_fi.min.js | 4 + .../dist/localization/methods_nl.js | 19 + .../dist/localization/methods_nl.min.js | 4 + .../dist/localization/methods_pt.js | 19 + .../dist/localization/methods_pt.min.js | 4 + .../static/new/packages/ValidationPlugin/grunt.js | 100 - .../packages/ValidationPlugin/lib/jquery-1.11.1.js | 10308 +++++++++++++++++++ .../packages/ValidationPlugin/lib/jquery-1.3.2.js | 4376 -------- .../packages/ValidationPlugin/lib/jquery-1.4.2.js | 6240 ----------- .../packages/ValidationPlugin/lib/jquery-1.4.4.js | 7179 ------------- .../packages/ValidationPlugin/lib/jquery-1.5.2.js | 8374 --------------- .../packages/ValidationPlugin/lib/jquery-1.6.1.js | 8936 ---------------- .../packages/ValidationPlugin/lib/jquery-1.7.2.js | 0 .../packages/ValidationPlugin/lib/jquery-1.8.3.js | 9472 +++++++++++++++++ .../packages/ValidationPlugin/lib/jquery-1.9.1.js | 9597 +++++++++++++++++ .../packages/ValidationPlugin/lib/jquery.form.js | 1686 +-- .../new/packages/ValidationPlugin/lib/jquery.js | 4383 +------- .../ValidationPlugin/lib/jquery.metadata.js | 122 - .../ValidationPlugin/lib/jquery.mockjax.js | 838 +- .../ValidationPlugin/lib/jquery.simulate.js | 314 + .../new/packages/ValidationPlugin/lib/require.js | 36 + .../ValidationPlugin/localization/messages_ar.js | 24 - .../ValidationPlugin/localization/messages_bg.js | 23 - .../ValidationPlugin/localization/messages_ca.js | 23 - .../ValidationPlugin/localization/messages_cs.js | 23 - .../ValidationPlugin/localization/messages_da.js | 20 - .../ValidationPlugin/localization/messages_de.js | 20 - .../ValidationPlugin/localization/messages_el.js | 24 - .../ValidationPlugin/localization/messages_es.js | 23 - .../ValidationPlugin/localization/messages_et.js | 21 - .../ValidationPlugin/localization/messages_eu.js | 23 - .../ValidationPlugin/localization/messages_fa.js | 23 - .../ValidationPlugin/localization/messages_fi.js | 21 - .../ValidationPlugin/localization/messages_fr.js | 44 - .../ValidationPlugin/localization/messages_he.js | 23 - .../ValidationPlugin/localization/messages_hr.js | 23 - .../ValidationPlugin/localization/messages_hu.js | 20 - .../ValidationPlugin/localization/messages_it.js | 23 - .../ValidationPlugin/localization/messages_ja.js | 23 - .../ValidationPlugin/localization/messages_ka.js | 23 - .../ValidationPlugin/localization/messages_kk.js | 23 - .../ValidationPlugin/localization/messages_lt.js | 23 - .../ValidationPlugin/localization/messages_lv.js | 23 - .../ValidationPlugin/localization/messages_nl.js | 23 - .../ValidationPlugin/localization/messages_no.js | 23 - .../ValidationPlugin/localization/messages_pl.js | 23 - .../localization/messages_pt_BR.js | 24 - .../localization/messages_pt_PT.js | 24 - .../ValidationPlugin/localization/messages_ro.js | 23 - .../ValidationPlugin/localization/messages_ru.js | 23 - .../ValidationPlugin/localization/messages_si.js | 23 - .../ValidationPlugin/localization/messages_sk.js | 20 - .../ValidationPlugin/localization/messages_sl.js | 23 - .../ValidationPlugin/localization/messages_sr.js | 23 - .../ValidationPlugin/localization/messages_sv.js | 21 - .../ValidationPlugin/localization/messages_th.js | 23 - .../ValidationPlugin/localization/messages_tr.js | 23 - .../ValidationPlugin/localization/messages_uk.js | 23 - .../ValidationPlugin/localization/messages_vi.js | 23 - .../ValidationPlugin/localization/messages_zh.js | 23 - .../localization/messages_zh_TW.js | 24 - .../ValidationPlugin/localization/methods_de.js | 12 - .../ValidationPlugin/localization/methods_nl.js | 9 - .../ValidationPlugin/localization/methods_pt.js | 9 - .../new/packages/ValidationPlugin/package.json | 90 +- .../ValidationPlugin/src/additional/accept.js | 33 + .../ValidationPlugin/src/additional/additional.js | 24 + .../src/additional/alphanumeric.js | 3 + .../src/additional/bankaccountNL.js | 25 + .../src/additional/bankorgiroaccountNL.js | 5 + .../ValidationPlugin/src/additional/bic.js | 16 + .../ValidationPlugin/src/additional/cifES.js | 61 + .../ValidationPlugin/src/additional/cpfBR.js | 57 + .../src/additional/creditcardtypes.js | 69 + .../ValidationPlugin/src/additional/currency.js | 41 + .../ValidationPlugin/src/additional/dateFA.js | 3 + .../ValidationPlugin/src/additional/dateITA.js | 39 + .../ValidationPlugin/src/additional/dateNL.js | 3 + .../ValidationPlugin/src/additional/extension.js | 5 + .../src/additional/giroaccountNL.js | 6 + .../ValidationPlugin/src/additional/iban.js | 122 + .../ValidationPlugin/src/additional/integer.js | 3 + .../ValidationPlugin/src/additional/ipv4.js | 3 + .../ValidationPlugin/src/additional/ipv6.js | 3 + .../ValidationPlugin/src/additional/lettersonly.js | 3 + .../src/additional/letterswithbasicpunc.js | 3 + .../ValidationPlugin/src/additional/mobileNL.js | 3 + .../ValidationPlugin/src/additional/mobileUK.js | 13 + .../ValidationPlugin/src/additional/nieES.js | 34 + .../ValidationPlugin/src/additional/nifES.js | 25 + .../ValidationPlugin/src/additional/notEqualTo.js | 3 + .../src/additional/nowhitespace.js | 3 + .../ValidationPlugin/src/additional/pattern.js | 22 + .../ValidationPlugin/src/additional/phoneNL.js | 6 + .../ValidationPlugin/src/additional/phoneUK.js | 13 + .../ValidationPlugin/src/additional/phoneUS.js | 21 + .../ValidationPlugin/src/additional/phonesUK.js | 14 + .../src/additional/postalCodeCA.js | 16 + .../src/additional/postalcodeBR.js | 11 + .../src/additional/postalcodeIT.js | 4 + .../src/additional/postalcodeNL.js | 3 + .../ValidationPlugin/src/additional/postcodeUK.js | 4 + .../src/additional/require_from_group.js | 37 + .../src/additional/skip_or_fill_minimum.js | 43 + .../ValidationPlugin/src/additional/statesUS.js | 58 + .../src/additional/strippedminlength.js | 4 + .../ValidationPlugin/src/additional/time.js | 3 + .../ValidationPlugin/src/additional/time12h.js | 3 + .../ValidationPlugin/src/additional/url2.js | 4 + .../ValidationPlugin/src/additional/vinUS.js | 54 + .../ValidationPlugin/src/additional/zipcodeUS.js | 3 + .../ValidationPlugin/src/additional/ziprange.js | 3 + .../new/packages/ValidationPlugin/src/ajax.js | 33 + .../new/packages/ValidationPlugin/src/core.js | 1346 +++ .../src/localization/messages_ar.js | 23 + .../src/localization/messages_bg.js | 23 + .../src/localization/messages_bn_BD.js | 23 + .../src/localization/messages_ca.js | 23 + .../src/localization/messages_cs.js | 23 + .../src/localization/messages_da.js | 20 + .../src/localization/messages_de.js | 20 + .../src/localization/messages_el.js | 23 + .../src/localization/messages_es.js | 26 + .../src/localization/messages_es_AR.js | 27 + .../src/localization/messages_es_PE.js | 27 + .../src/localization/messages_et.js | 21 + .../src/localization/messages_eu.js | 23 + .../src/localization/messages_fa.js | 26 + .../src/localization/messages_fi.js | 21 + .../src/localization/messages_fr.js | 49 + .../src/localization/messages_ge.js | 23 + .../src/localization/messages_gl.js | 28 + .../src/localization/messages_he.js | 23 + .../src/localization/messages_hr.js | 23 + .../src/localization/messages_hu.js | 22 + .../src/localization/messages_hy_AM.js | 23 + .../src/localization/messages_id.js | 22 + .../src/localization/messages_is.js | 21 + .../src/localization/messages_it.js | 27 + .../src/localization/messages_ja.js | 23 + .../src/localization/messages_ka.js | 23 + .../src/localization/messages_kk.js | 23 + .../src/localization/messages_ko.js | 23 + .../src/localization/messages_lt.js | 23 + .../src/localization/messages_lv.js | 23 + .../src/localization/messages_my.js | 23 + .../src/localization/messages_nl.js | 33 + .../src/localization/messages_no.js | 23 + .../src/localization/messages_pl.js | 23 + .../src/localization/messages_pt_BR.js | 29 + .../src/localization/messages_pt_PT.js | 27 + .../src/localization/messages_ro.js | 23 + .../src/localization/messages_ru.js | 23 + .../src/localization/messages_si.js | 23 + .../src/localization/messages_sk.js | 20 + .../src/localization/messages_sl.js | 23 + .../src/localization/messages_sr.js | 23 + .../src/localization/messages_sr_lat.js | 23 + .../src/localization/messages_sv.js | 21 + .../src/localization/messages_th.js | 23 + .../src/localization/messages_tj.js | 23 + .../src/localization/messages_tr.js | 24 + .../src/localization/messages_uk.js | 23 + .../src/localization/messages_vi.js | 23 + .../src/localization/messages_zh.js | 23 + .../src/localization/messages_zh_TW.js | 24 + .../src/localization/methods_de.js | 12 + .../src/localization/methods_es_CL.js | 12 + .../src/localization/methods_fi.js | 12 + .../src/localization/methods_nl.js | 9 + .../src/localization/methods_pt.js | 9 + .../new/packages/ValidationPlugin/test/aria.js | 83 + .../ValidationPlugin/test/error-placement.js | 358 + .../new/packages/ValidationPlugin/test/events.html | 71 - .../ValidationPlugin/test/firebug/errorIcon.png | Bin 457 -> 0 bytes .../ValidationPlugin/test/firebug/firebug.css | 209 - .../ValidationPlugin/test/firebug/firebug.html | 23 - .../ValidationPlugin/test/firebug/firebug.js | 672 -- .../ValidationPlugin/test/firebug/firebugx.js | 10 - .../ValidationPlugin/test/firebug/infoIcon.png | Bin 524 -> 0 bytes .../ValidationPlugin/test/firebug/warningIcon.png | Bin 516 -> 0 bytes .../new/packages/ValidationPlugin/test/index.html | 651 +- .../new/packages/ValidationPlugin/test/jquery.js | 25 - .../new/packages/ValidationPlugin/test/large.html | 188 - .../new/packages/ValidationPlugin/test/messages.js | 29 +- .../new/packages/ValidationPlugin/test/methods.js | 1094 +- .../packages/ValidationPlugin/test/qunit/qunit.css | 176 +- .../packages/ValidationPlugin/test/qunit/qunit.js | 4947 ++++++--- .../new/packages/ValidationPlugin/test/rules.js | 170 +- .../ValidationPlugin/test/selects/index.html | 436 - .../new/packages/ValidationPlugin/test/tabs.html | 78 - .../new/packages/ValidationPlugin/test/test.js | 2335 +++-- wqflask/wqflask/templates/base.html | 5 +- wqflask/wqflask/templates/correlation_page.html | 20 +- .../wqflask/templates/new_security/login_user.html | 1 - 391 files changed, 52322 insertions(+), 47734 deletions(-) create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/README.md delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/changelog.txt create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/ajaxSubmit-integration-demo.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/captcha.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/fonts/Anorexia.ttf create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/image_req.php create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/button.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/image.php create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/index.php create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/newsession.php create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/process.php create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/rand.php create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/style.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-messages-data-demo.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errors-within-labels.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/file_input.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/bg.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/checked.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-divider.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-fieldset.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/loading.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/unchecked.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/jquerymobile.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/bg.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/header1.jpg create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/page.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/required_star.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/screen.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/backRequiredGray.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_green-fade.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_nav_blue.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/blank.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/button-submit.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/favicon.ico create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/help.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/left-nav-callout-long.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/login-sprite.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/logo_marketo.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/sf.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step1-24.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step2-24.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step3-24.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab-sprite.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab_green.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/time.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/toggle.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/warning.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/jquery.maskedinput.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/mktSignup.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/step2.htm create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/stylesheet.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/left_white.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/right_white.png create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/style.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/radio-checkbox-select-demo.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/site-demos.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/themerollered.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/editor_template.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/img/icons.gif create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/langs/en.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/skins/default/ui.css create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/tiny_mce.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce4/index.html mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.min.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/jquery.validate.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/jquery.validate.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ar.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ar.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_bg.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_bg.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_bn_BD.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_bn_BD.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ca.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ca.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_cs.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_cs.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_da.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_da.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_de.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_de.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_el.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_el.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_es.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_es.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_es_AR.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_es_AR.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_es_PE.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_es_PE.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_et.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_et.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_eu.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_eu.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_fa.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_fa.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_fi.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_fi.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_fr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_fr.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ge.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ge.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_gl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_gl.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_he.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_he.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_hr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_hr.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_hu.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_hu.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_hy_AM.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_hy_AM.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_id.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_id.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_is.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_is.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_it.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_it.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ja.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ja.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ka.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ka.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_kk.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_kk.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ko.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ko.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_lt.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_lt.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_lv.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_lv.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_my.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_my.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_nl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_nl.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_no.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_no.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_pl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_pl.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_pt_BR.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_pt_BR.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_pt_PT.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_pt_PT.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ro.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ro.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ru.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_ru.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_si.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_si.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sk.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sk.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sl.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sr.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sr_lat.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sr_lat.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sv.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_sv.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_th.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_th.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_tj.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_tj.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_tr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_tr.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_uk.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_uk.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_vi.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_vi.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_zh.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_zh.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_zh_TW.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/messages_zh_TW.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_de.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_de.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_es_CL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_es_CL.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_fi.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_fi.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_nl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_nl.min.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_pt.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/dist/localization/methods_pt.min.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/grunt.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.11.1.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.3.2.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.4.2.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.4.4.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.5.2.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.6.1.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.7.2.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.8.3.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.9.1.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.form.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.metadata.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.mockjax.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.simulate.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/require.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_ar.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_bg.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_ca.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_cs.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_da.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_de.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_el.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_es.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_et.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_eu.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_fa.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_fi.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_fr.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_he.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_hr.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_hu.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_it.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_ja.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_ka.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_kk.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_lt.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_lv.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_nl.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_no.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_pl.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_pt_BR.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_pt_PT.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_ro.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_ru.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_si.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_sk.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_sl.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_sr.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_sv.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_th.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_tr.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_uk.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_vi.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_zh.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/messages_zh_TW.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/methods_de.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/methods_nl.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/localization/methods_pt.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/package.json create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/accept.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/additional.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/alphanumeric.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/bankaccountNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/bankorgiroaccountNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/bic.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/cifES.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/cpfBR.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/creditcardtypes.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/currency.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/dateFA.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/dateITA.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/dateNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/extension.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/giroaccountNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/iban.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/integer.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/ipv4.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/ipv6.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/lettersonly.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/letterswithbasicpunc.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/mobileNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/mobileUK.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/nieES.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/nifES.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/notEqualTo.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/nowhitespace.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/pattern.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phoneNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phoneUK.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phoneUS.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phonesUK.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalCodeCA.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalcodeBR.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalcodeIT.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalcodeNL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postcodeUK.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/require_from_group.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/skip_or_fill_minimum.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/statesUS.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/strippedminlength.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/time.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/time12h.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/url2.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/vinUS.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/zipcodeUS.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/ziprange.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/ajax.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/core.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ar.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_bg.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_bn_BD.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ca.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_cs.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_da.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_de.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_el.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_es.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_es_AR.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_es_PE.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_et.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_eu.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_fa.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_fi.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_fr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ge.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_gl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_he.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_hr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_hu.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_hy_AM.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_id.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_is.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_it.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ja.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ka.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_kk.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ko.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_lt.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_lv.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_my.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_nl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_no.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_pl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_pt_BR.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_pt_PT.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ro.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ru.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_si.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sk.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sr_lat.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sv.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_th.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_tj.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_tr.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_uk.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_vi.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_zh.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_zh_TW.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_de.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_es_CL.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_fi.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_nl.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_pt.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/aria.js create mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/error-placement.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/events.html delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/errorIcon.png delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/firebug.css delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/firebug.html delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/firebug.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/firebugx.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/infoIcon.png delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/firebug/warningIcon.png mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/index.html delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/jquery.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/large.html mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/messages.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/methods.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/qunit/qunit.css mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/qunit/qunit.js mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/rules.js delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/selects/index.html delete mode 100755 wqflask/wqflask/static/new/packages/ValidationPlugin/test/tabs.html mode change 100755 => 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/test.js diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js new file mode 100644 index 00000000..f6e42d02 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js @@ -0,0 +1,186 @@ +/*jshint node:true*/ +module.exports = function(grunt) { + +"use strict"; + +var banner, + umdStart, + umdMiddle, + umdEnd, + umdStandardDefine, + umdAdditionalDefine, + umdLocalizationDefine; + +banner = "/*!\n" + + " * jQuery Validation Plugin v<%= pkg.version %>\n" + + " *\n" + + " * <%= pkg.homepage %>\n" + + " *\n" + + " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" + + " * Released under the <%= _.pluck(pkg.licenses, 'type').join(', ') %> license\n" + + " */\n"; + +// define UMD wrapper variables + +umdStart = "(function( factory ) {\n" + + "\tif ( typeof define === \"function\" && define.amd ) {\n"; + +umdMiddle = "\t} else {\n" + + "\t\tfactory( jQuery );\n" + + "\t}\n" + + "}(function( $ ) {\n\n"; + +umdEnd = "\n}));"; + +umdStandardDefine = "\t\tdefine( [\"jquery\"], factory );\n"; +umdAdditionalDefine = "\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n"; +umdLocalizationDefine = "\t\tdefine( [\"jquery\", \"../jquery.validate\"], factory );\n"; + +grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + concat: { + // used to copy to dist folder + dist: { + options: { + banner: banner + + umdStart + + umdStandardDefine + + umdMiddle, + footer: umdEnd + }, + files: { + "dist/jquery.validate.js": [ "src/core.js", "src/*.js" ] + } + }, + extra: { + options: { + banner: banner + + umdStart + + umdAdditionalDefine + + umdMiddle, + footer: umdEnd + }, + files: { + "dist/additional-methods.js": [ "src/additional/additional.js", "src/additional/*.js" ] + } + } + }, + uglify: { + options: { + preserveComments: false, + banner: "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " + + "<%= grunt.template.today('m/d/yyyy') %>\n" + + " * <%= pkg.homepage %>\n" + + " * Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" + + " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n" + }, + dist: { + files: { + "dist/additional-methods.min.js": "dist/additional-methods.js", + "dist/jquery.validate.min.js": "dist/jquery.validate.js" + } + }, + all: { + expand: true, + cwd: "dist/localization", + src: "**/*.js", + dest: "dist/localization", + ext: ".min.js" + } + }, + compress: { + dist: { + options: { + mode: "zip", + level: 1, + archive: "dist/<%= pkg.name %>-<%= pkg.version %>.zip", + pretty: true + }, + src: [ + "changelog.txt", + "demo/**/*.*", + "dist/**/*.js", + "Gruntfile.js", + "lib/**/*.*", + "package.json", + "README.md", + "src/**/*.*", + "test/**/*.*" + ] + } + }, + qunit: { + files: "test/index.html" + }, + jshint: { + options: { + jshintrc: true + }, + core: { + src: "src/**/*.js" + }, + test: { + src: "test/*.js" + }, + grunt: { + src: "Gruntfile.js" + } + }, + watch: { + options: { + atBegin: true + }, + src: { + files: "<%= jshint.core.src %>", + tasks: [ + "concat" + ] + } + }, + jscs: { + all: [ "<%= jshint.core.src %>", "<%= jshint.test.src %>", "<%= jshint.grunt.src %>" ] + }, + copy: { + dist: { + options: { + // append UMD wrapper + process: function( content ) { + return umdStart + umdLocalizationDefine + umdMiddle + content + umdEnd; + } + }, + src: "src/localization/*", + dest: "dist/localization", + expand: true, + flatten: true, + filter: "isFile" + } + }, + replace: { + dist: { + src: "dist/**/*.min.js", + overwrite: true, + replacements: [ + { + from: "./jquery.validate", + to: "./jquery.validate.min" + } + ] + } + } +}); + +grunt.loadNpmTasks("grunt-contrib-jshint"); +grunt.loadNpmTasks("grunt-contrib-qunit"); +grunt.loadNpmTasks("grunt-contrib-uglify"); +grunt.loadNpmTasks("grunt-contrib-concat"); +grunt.loadNpmTasks("grunt-contrib-compress"); +grunt.loadNpmTasks("grunt-contrib-watch"); +grunt.loadNpmTasks("grunt-jscs"); +grunt.loadNpmTasks("grunt-contrib-copy"); +grunt.loadNpmTasks("grunt-text-replace"); + +grunt.registerTask("default", [ "concat", "copy", "jscs", "jshint", "qunit" ]); +grunt.registerTask("release", [ "default", "uglify", "replace", "compress" ]); +grunt.registerTask("start", [ "concat", "watch" ]); + +}; diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/README.md b/wqflask/wqflask/static/new/packages/ValidationPlugin/README.md old mode 100755 new mode 100644 index 28a0bec9..4b9a33e8 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/README.md +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/README.md @@ -1,10 +1,15 @@ -[jQuery Validation Plugin](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) - Form validation made easy +[jQuery Validation Plugin](http://jqueryvalidation.org/) - Form validation made easy ================================ +[![Build Status](https://secure.travis-ci.org/jzaefferer/jquery-validation.png)](http://travis-ci.org/jzaefferer/jquery-validation) +[![devDependency Status](https://david-dm.org/jzaefferer/jquery-validation/dev-status.png?theme=shields.io)](https://david-dm.org/jzaefferer/jquery-validation#info=devDependencies) + 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. @@ -12,6 +17,20 @@ You can find the plan for how to spend the money on the [pledgie page](http://pl ## Getting Started +### Downloading the prebuilt files + +Prebuilt files can be downloaded from http://jqueryvalidation.org/ + +### Downloading the latest changes + +The unreleased development files can be obtained by: + + 1. [Downloading](https://github.com/jzaefferer/jquery-validation/archive/master.zip) or Forking this repository + 2. [Setup the build](CONTRIBUTING.md#build-setup) + 3. Run `grunt` to create the built files in the "dist" directory + +### Including it on your page + Include jQuery and the plugin on a page. Then select a form to validate and call the `validate` method. ```html @@ -19,21 +38,28 @@ Include jQuery and the plugin on a page. Then select a form to validate and call - + ``` -For more information on how to setup a rules and customizations, [check the documentation](http://docs.jquery.com/Plugins/Validation). +Alternatively include jQuery and the plugin via requirejs in your module. + +```js +define(["jquery", "jquery.validate"], function( $ ) { + $("form").validate(); +}); +``` + +For more information on how to setup a rules and customizations, [check the documentation](http://jqueryvalidation.org/documentation/). -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/grunt). +## Reporting issues and contributing code -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. +See the [Contributing Guidelines](CONTRIBUTING.md) for details. -If you've wrote a patch for some bug listed on http://plugins.jquery.com/project/issues/validate, please provide a link to that issue in your commit message. +**IMPORTANT NOTE ABOUT EMAIL VALIDATION**. As of version 1.12.0 this plugin is using the same regular expression that the [HTML5 specification suggests for browsers to use](https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address). We will follow their lead and use the same check. If you think the specification is wrong, please report the issue to them. If you have different requirements, consider [using a custom method](http://jqueryvalidation.org/jQuery.validator.addMethod/). ## License -Copyright (c) 2012 Jörn Zaefferer +Copyright © Jörn Zaefferer
Licensed under the MIT license. diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/changelog.txt b/wqflask/wqflask/static/new/packages/ValidationPlugin/changelog.txt deleted file mode 100755 index 89171539..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/changelog.txt +++ /dev/null @@ -1,337 +0,0 @@ -1.10.0 / 2012-09-07 -=================== - - * Corrected French strings for nowhitespace, phoneUS, phoneUK and mobileUK based upon community feedback. - * rename files for language_REGION according to the standard ISO_3166-1 (http://en.wikipedia.org/wiki/ISO_3166-1), for Taiwan tha language is Chinese (zh) and the region is Taiwan (TW) - * Optimise RegEx patterns, especially for UK phone numbers. - * Add Language Name for each file, rename the language code according to the standard ISO 639 for Estonian, Georgian, Ukrainian and Chinese (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) - * Added croatian (HR) localization - * Existing French translations were edited and French translations for the additional methods were added. - * Merged in changes for specifying custom error messages in data attributes - * Updated UK Mobile phone number regex for new numbers. Fixes #154 - * Add element to success call with test. Fixes #60 - * Fixed regex for time additional method. Fixes #131 - * resetForm now clears old previousValue on form elements. Fixes #312 - * Added checkbox test to require_from_group and changed require_from_group to use elementValue. Fixes #359 - * Fixed dataFilter response issues in jQuery 1.5.2+. Fixes #405 - * Added jQuery Mobile demo. Fixes #249 - * Deoptimize findByName for correctness. Fixes #82 - $.validator.prototype.findByName breaks in IE7 - * Added US zip code support and test. Fixes #90 - * Changed lastElement to lastActive in keyup, skip validation on tab or empty element. Fixes #244 - * Removed number stripping from stripHtml. Fixes #2 - * Fixed invalid count on invalid to valid remote validation. Fixes #286 - * Add link to file_input to demo index - * Moved old accept method to extension additional-method, added new accept method to handle standard browser mimetype filtering. Fixes #287 and supersedes #369 - * Disables blur event when onfocusout is set to false. Test added. - * Fixed value issue for radio buttons and checkboxes. Fixes #363 - * Added test for rangeWords and fixed regex and bounds in method. Fixes #308 - * Fixed TinyMCE Demo and added link on demo page. Fixes #382 - * Changed localization message for min/max. Fixes #273 - * Added pseudo selector for text input types to fix issue with default empty type attribute. Added tests and some test markup. Fixes #217 - * Fixed delegate bug for dynamic-totals demo. Fixes #51 - * Fix incorrect message for alphanumeric validator - * Removed incorrect false check on required attribute - * required attribute fix for non-html5 browsers. Fixes #301 - * Added methods "require_from_group" and "skip_or_fill_minimum" - * Use correct iso code for swedish - * Updated demo HTML files to use HTML5 doctype - * Fixed regex issue for decimals without leading zeroes. Added new methods test. Fixes #41 - * Introduce a elementValue method that normalizes only string values (don't touch array value of multi-select). Fixes #116 - * Support for dynamically added submit buttons, and updated test case. Uses validateDelegate. Code from PR #9 - * Fix bad double quote in test fixtures - * Fix maxWords method to include the upper bound, not exclude it. Fixes #284 - * Fixed grammar error in german range validator message. Fixes #315 - * Fixed handling of multiple class names for errorClass option. Test by Max Lynch. Fixes #280 - * Fix jQuery.format usage, should be $.validator.format. Fixes #329 - * Methods for 'all' UK phone numbers + UK postcodes - * Pattern method: Convert string param to RegExp. Fixes issue #223 - * grammar error in german localization file - * Added Estonian localization for messages - * Improve tooltip handling on themerollered demo - * Add type="text" to input fields without type attribute to please qSA - * Update themerollered demo to use tooltip to show errors as overlay. - * Update themerollered demo to use latest jQuery UI (along with newer jQuery version). Move code around to speed up page load. - * Fixed min error message broken in Japanese. - * Update form plugin to latest version. Enhance the ajaxSubmit demo. - * Drop dateDE and numberDE methods from classRuleSettings, leftover from moving those to localized methods - * Passing submit event to submitHandler callback - * Fixed #219 - Fix valid() on elements with dependency-callback or dependency-expression. - * Improve build to remove dist dir to ensure only the current release gets zipped up - -1.9.0 ---- -* Added Basque (EU) localization -* Added Slovenian (SL) localization -* Fixed issue #127 - Finnish translations has one : instead of ; -* Fixed Russian localization, minor syntax issue -* Added in support for HTML5 input types, fixes #97 -* Improved HTML5 support by setting novalidate attribute on the form, and reading the type attribute. -* Fixed showLabel() removing all classes from error element. Remove only settings.validClass. Fixes #151. -* Added 'pattern' to additional-methods to validate against arbitraty regular expressions. -* Improved email method to not allow the dot at the end (valid by RFC, but unwanted here). Fixes #143 -* Fixed swedish and norwedian translations, min/max messages got switched. Fixes #181 -* Fixed #184 - resetForm: should unset lastElement -* Fixed #71 - improve existing time method and add time12h method for 12h am/pm time format -* Fixed #177 - Fix validation of a single radio or checkbox input -* Fixed #189 - :hidden elements are now ignored by default -* Fixed #194 - Required as attribute fails if jQuery>=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 compability with jQuery 1.5.1, while maintaining backwards-compability - -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 compability with jQuery 1.4.2, while maintaining backwards-compability - -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 (fomerly 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 intergration 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 compability 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 propery: 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 compability -* 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 paramter (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 comptible 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 facilate 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 compability with AIR - -1.2.1 ------ - -* Bundled delegeate 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 additionals 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() plguin 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 completey 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 prefering 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 dependecy 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/ajaxSubmit-integration-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/ajaxSubmit-integration-demo.html new file mode 100644 index 00000000..207f9adf --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/ajaxSubmit-integration-demo.html @@ -0,0 +1,90 @@ + + + + + Test for jQuery validate() plugin + + + + + + + + + +

jQuery Validation Plugin Demo

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

+ + +

+

+ + +

+

+ +

+
+
+
Please login!
+
+ + Back to main page +
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/captcha.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/captcha.js new file mode 100644 index 00000000..f3429c2a --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/captcha.js @@ -0,0 +1,27 @@ +$(function(){ + $("body").on("click", "#refreshimg", 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/fonts/Anorexia.ttf b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/fonts/Anorexia.ttf new file mode 100644 index 00000000..453eeb00 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/fonts/Anorexia.ttf differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/image_req.php b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/image_req.php new file mode 100644 index 00000000..574171bb --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/image_req.php @@ -0,0 +1,6 @@ +Captcha image'; + +?> diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/button.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/button.png new file mode 100644 index 00000000..7ef79de5 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/button.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/image.php b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/image.php new file mode 100644 index 00000000..e3bfb481 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/image.php @@ -0,0 +1,33 @@ + + + + + + AJAX CAPTCHA + + + + + + + +

AJAX CAPTCHA

+
+
+
Captcha image
+ + + +
+
+

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

+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/newsession.php b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/newsession.php new file mode 100644 index 00000000..36ff45e2 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/newsession.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/process.php b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/process.php new file mode 100644 index 00000000..24fe3a8b --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/process.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/rand.php b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/rand.php new file mode 100644 index 00000000..88b595e7 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/rand.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/style.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/style.css new file mode 100644 index 00000000..c0bbe5f9 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/style.css @@ -0,0 +1,140 @@ +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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css new file mode 100644 index 00000000..120f5a47 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css @@ -0,0 +1,46 @@ +/********************************** + +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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css new file mode 100644 index 00000000..ac52f71b --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css @@ -0,0 +1,55 @@ +/********************************** + +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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css new file mode 100644 index 00000000..84494e87 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css @@ -0,0 +1,21 @@ +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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css new file mode 100644 index 00000000..5c376b37 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css @@ -0,0 +1,61 @@ +/********************************** + +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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css new file mode 100644 index 00000000..840f572b --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css @@ -0,0 +1,11 @@ +/********************************** + +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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-messages-data-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-messages-data-demo.html new file mode 100644 index 00000000..461f21e8 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-messages-data-demo.html @@ -0,0 +1,66 @@ + + + + + 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html new file mode 100644 index 00000000..5b3ef14d --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html @@ -0,0 +1,118 @@ + + + + + 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html new file mode 100644 index 00000000..fe04dc6a --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html @@ -0,0 +1,142 @@ + + + + + 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html new file mode 100644 index 00000000..23f50771 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html @@ -0,0 +1,152 @@ + + + + + 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. + +
  6. +
  7. + +
  8. +
  9. + +
  10. +
+
+
+
+ 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errors-within-labels.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errors-within-labels.html new file mode 100644 index 00000000..7c28a1af --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errors-within-labels.html @@ -0,0 +1,91 @@ + + + + +Test for jQuery validate() plugin + + + + + + + + + + + + + +

jQuery Validation Plugin Demo

+
+ +

Errors use spans placed within existing label element

+ +
+
+ Login Form +

+ + +

+

+ + +

+

+ +

+
+
+ + Back to main page + +
+ + + + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/file_input.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/file_input.html new file mode 100644 index 00000000..f92814da --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/file_input.html @@ -0,0 +1,47 @@ + + + + + jQuery validation plug-in - comment form example + + + + + + + + +
+
+ Select the indicated type of files? +

+ + +

+

+ + +

+

+ + +

+

+ + +

+

+ + +

+

+ +

+
+
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/bg.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/bg.gif new file mode 100644 index 00000000..846add07 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/bg.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/checked.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/checked.gif new file mode 100644 index 00000000..5e33a78d Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/checked.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-divider.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-divider.gif new file mode 100644 index 00000000..718a977c Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-divider.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-fieldset.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-fieldset.gif new file mode 100644 index 00000000..9c48ea4b Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-fieldset.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/loading.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/loading.gif new file mode 100644 index 00000000..93c46a6c Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/loading.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/unchecked.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/unchecked.gif new file mode 100644 index 00000000..06ecaba1 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/unchecked.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html new file mode 100644 index 00000000..e03a81a2 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html @@ -0,0 +1,244 @@ + + + + + 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/jquerymobile.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/jquerymobile.html new file mode 100644 index 00000000..44e77ec4 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/jquerymobile.html @@ -0,0 +1,77 @@ + + + + + My Page + + + + + + + + +
+
+

Welcome

+
+
+
+
+ + +
+
+ + +
+ +
+
+
+ + + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/bg.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/bg.gif new file mode 100644 index 00000000..12662a47 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/bg.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/header1.jpg b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/header1.jpg new file mode 100644 index 00000000..70986716 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/header1.jpg differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/page.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/page.gif new file mode 100644 index 00000000..1717731b Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/page.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/required_star.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/required_star.gif new file mode 100644 index 00000000..e4c16ebf Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/required_star.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/index.html new file mode 100644 index 00000000..013a71ec --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/index.html @@ -0,0 +1,69 @@ + + + + + Login Form with Email Password Link + + + + + + +
+ +
+

+
+
+ User details +
    +
  • + + + +
  • +
  • + + +
  • +
  • + +
  • +
+
+
+ +
+
+
+
+
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/screen.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/screen.css new file mode 100644 index 00000000..e023a533 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/screen.css @@ -0,0 +1,457 @@ +/******************************************************************************* +******************************************************************************** +** +* - GENERAL +* +* - PAGE CONTAINERS +* +* - HEADER +* +* - CONTENT +** +******************************************************************************** + ******************************************************************************/ + + + + +/* GENERAL ------------------------------------------------------------------ */ + + html + { + height: 100%; + } + + /* Zero default margin & padding around common elements */ + body, dd, dl, dt, form, h1, h2, h3, h4, h5, h6, ul, ol, li, p + { + margin: 0; + border: none; + padding: 0; + } + + body + { + height: 100%; + background-color: #333333; + background-image: url(images/bg.gif); + background-position: 0% 0; + color: #000000; + line-height: 1.5; + font-family: Arial, Helvetica, sans-serif; + font-size: 62.5%; + text-align: center; + overflow:auto; + } + + a:link + { + color: #003399; + } + + a:visited + { + color: #B266B2; + } + + a:hover + { + text-decoration: none; + } + + + + + /* PAGE CONTAINERS ---------------------------------------------------------- */ + + #page + { + width: 636px; + w\idth: 600px; + min-height: 100%; + margin: 17px auto; + padding: 0 18px; + background-image: url(images/page.gif); + background-repeat: repeat-y; + text-align: left; + } + + * html #page + { + height: 100%; + } + + + + + /* HEADER ------------------------------------------------------------------- */ + + #header + { + height: 90px; + background-color: #B2DD32; + background-image: url(images/header1.jpg); + background-repeat: repeat-x; + } + + h1 + { + padding: 0 35px; + font-size: 2.2em; + font-weight: normal; + line-height: 82px; + } + + + + + /* CONTENT ------------------------------------------------------------------ */ + + #content + { + padding: 0 25px; + } + + p + { + font-size:1.1em; + margin-top: 1.5em; + } + + form + { + margin-top: 1.5em; + } + + + + /*** MASTER FORM WIDTHS - CUSTOMIZE THIS TO CHANGE THE FORM LAYOUT ***/ + + /* + form width: 550px + left column: 190px / 180px + 10px padding + mid column: 200px + right column: 160px + */ + + form{ + width:550px !important; + } + + fieldset.submit + { + padding-left: 190px !important; + } + + form label{ + padding:0px 10px; + width: 160px; + } + + form label.error, + form input.submit + { + margin-left:180px !important; + } + + form fieldset fieldset label.error + { + margin-left:0px !important; + width:200px !important; + } + + + form .centered{ + margin-left:180px !important; + width:200px !important; + } + + form .text, + form .button, + form .group, + form .control, + form .submit, + form textarea, + form select + { + width: 200px !important; + } + + + + +/*** FIELDSETS AND LEGENDS ***/ + + form{ + width:550px; + margin-bottom:25px; + clear:both; + } + + form fieldset + { + margin: 0 0 1.5em 0; + padding: 0 0 10px 0px; + + border: 1px solid #BFBAB0; + + background-color: #F2EFE9; + background-image: url(images/fieldset_gradient.jpg); + background-repeat: repeat-x; + + background-color: #fff; + background-image: url(images/fieldset-gradient-02.jpg); + background-position:bottom; + + float: left; + clear: both; + width: 100%; + + } + + form fieldset.submit + { + padding: 0px 10px 10px 190px; + border-style: none; + + background-color: transparent; + background-image: none; + + float: none; + width: auto; + + } + + form legend + { + color: #000000; + + font-size:1.3em; + font-weight: bold; + font-variant:small-caps; + + margin-left: 1em; + padding:0px 5px; + } + + form fieldset p{ + margin:10px 0px 0px 10px; + } + +/*** FORM BLOCKS ***/ + + form ul + { + padding:5px 10px; + list-style: none; + } + + form li + { + width: 100%; + + padding:5px 0px 10px 0; + border-top:1px dotted #ccc; + + display:block; + float: left; + clear: left; + } + + form li:first-child + { + border:none; + } + + +/*** FORM BLOCK ELEMENTS ***/ + + form label + { + padding:0px 10px; + width: 160px; + float: left; + } + + form .error{ + color: #c00; + } + + form label.error + { + color: #c00; + + font-size: 100%; + font-weight: bold; + font-variant:small-caps; + + width:308px; + display: none; + + margin:8px 0px 0px 180px; + padding:3px 0px 0px 5px; + border-top:1px dotted #ccc; + + clear:both; + } + + form label.info{ + font-size: 100%; + font-weight: bold; + font-variant:small-caps; + + margin:8px 0px 0px 180px; + padding:3px 0px 0px 5px; + } + + form fieldset fieldset, + form .group + { + width:200px; + + margin: 0; + border:none; + + background:none; + + float:left; + clear: none; + + } + + form fieldset fieldset label + { + width:auto !important; + white-space:nowrap; + padding:0px; + margin:0px; + display:block; + clear:both; + } + + form label label.error{ + margin-left:0px; + } + + form label.centered{ + padding:0px 0px; + width:200px !important; + } + + /* see also the error class at the foot of the page */ + + form fieldset fieldset label.spaced + { + margin-bottom:3px; + } + +/*** FORM ELEMENT COLUMNS ***/ + + .col-1, + fieldset fieldset.col-1 label + { + width:100%; + } + + .col-2, + fieldset fieldset.col-2 label + { + width:50%; + } + + .col-3, + fieldset fieldset.col-3 label + { + width:33%; + } + + .col-4, + fieldset fieldset.col-4 label + { + width:25%; + } + + + + +/*** FORM ELEMENTS ***/ + + form input.submit{ + margin:10px 0px 10px 180px; + padding:0px 2px; + } + + form input, textarea, select, + form label + { + font-size:1.1em; + line-height:1.6em; + } + + form input, textarea, select + { + font-family: Verdana, Arial, Helvetica, sans-serif; + } + + form .input[type="text"], + form textarea + { + padding:1px; + } + + form .input[type="radio"], + form .input[type="checkbox"] + { + margin:0px; + padding:0px; + position:relative; + top:3px; + } + +/*** SUPPORTING CLASSES ***/ + + form label.required{ + background-image:url(images/required_star.gif); + background-position:right; + background-repeat:no-repeat; + } + + form span.required{ + padding-right:15px; + } + + form .clean + { + border:none; + } + + form .info{ + padding-top:0.5em; + font-size:80%; + line-height:100%; + color:#aaa; + } + + form .indent{ + padding:2px 20px; + width:auto !important; + white-space:nowrap; + padding-left: 25px !important; + } + + form label.disabled{ + color:#aaa; + } + + form .highlight{ + background-color:#e2e2e2; + } + + .off{ + display:none !important; + } + + .clear{ + clear:both; + } + \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/backRequiredGray.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/backRequiredGray.gif new file mode 100644 index 00000000..61d29adf Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/backRequiredGray.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_green-fade.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_green-fade.gif new file mode 100644 index 00000000..30774527 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_green-fade.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_nav_blue.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_nav_blue.gif new file mode 100644 index 00000000..3d3da3a8 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_nav_blue.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/blank.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/blank.gif new file mode 100644 index 00000000..3b042d8b Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/blank.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/button-submit.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/button-submit.gif new file mode 100644 index 00000000..54d291cd Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/button-submit.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/favicon.ico b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/favicon.ico new file mode 100644 index 00000000..0f57c530 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/favicon.ico differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/help.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/help.png new file mode 100644 index 00000000..73817ffb Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/help.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/left-nav-callout-long.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/left-nav-callout-long.png new file mode 100644 index 00000000..c5b8fad7 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/left-nav-callout-long.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/login-sprite.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/login-sprite.gif new file mode 100644 index 00000000..799b1960 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/login-sprite.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/logo_marketo.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/logo_marketo.gif new file mode 100644 index 00000000..62663bca Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/logo_marketo.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/sf.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/sf.png new file mode 100644 index 00000000..962bf2a5 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/sf.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step1-24.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step1-24.gif new file mode 100644 index 00000000..9ddf1e36 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step1-24.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step2-24.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step2-24.gif new file mode 100644 index 00000000..bada27f1 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step2-24.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step3-24.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step3-24.gif new file mode 100644 index 00000000..8a45393f Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step3-24.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab-sprite.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab-sprite.gif new file mode 100644 index 00000000..048b9b00 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab-sprite.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab_green.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab_green.gif new file mode 100644 index 00000000..ef1c0847 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab_green.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/time.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/time.png new file mode 100644 index 00000000..911da3f1 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/time.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/toggle.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/toggle.gif new file mode 100644 index 00000000..ad1bf0fa Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/toggle.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/warning.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/warning.gif new file mode 100644 index 00000000..60da04c2 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/warning.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/index.html new file mode 100644 index 00000000..ad7af92e --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/index.html @@ -0,0 +1,292 @@ + + + + + Subscription Signup | Marketo + + + + + + + + + +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +

Step 1 of 2

+

+

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+

Login Information

+
+ + + +
+ + + +
+ + + +
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+ + + + +
+
+ + + +
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/jquery.maskedinput.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/jquery.maskedinput.js new file mode 100644 index 00000000..cd54339a --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/jquery.maskedinput.js @@ -0,0 +1,338 @@ +/* + Masked Input plugin for jQuery + Copyright (c) 2007-2013 Josh Bush (digitalbush.com) + Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) + Version: 1.3.1 +*/ +(function($) { + function getPasteEvent() { + var el = document.createElement('input'), + name = 'onpaste'; + el.setAttribute(name, ''); + return (typeof el[name] === 'function')?'paste':'input'; +} + +var pasteEventName = getPasteEvent() + ".mask", + ua = navigator.userAgent, + iPhone = /iphone/i.test(ua), + android=/android/i.test(ua), + caretTimeoutId; + +$.mask = { + //Predefined character definitions + definitions: { + '9': "[0-9]", + 'a': "[A-Za-z]", + '*': "[A-Za-z0-9]" + }, + dataName: "rawMaskFn", + placeholder: '_', +}; + +$.fn.extend({ + //Helper Function for Caret positioning + caret: function(begin, end) { + var range; + + if (this.length === 0 || this.is(":hidden")) { + return; + } + + if (typeof begin == 'number') { + end = (typeof end === 'number') ? end : begin; + return this.each(function() { + if (this.setSelectionRange) { + this.setSelectionRange(begin, end); + } else if (this.createTextRange) { + range = this.createTextRange(); + range.collapse(true); + range.moveEnd('character', end); + range.moveStart('character', begin); + range.select(); + } + }); + } else { + if (this[0].setSelectionRange) { + begin = this[0].selectionStart; + end = this[0].selectionEnd; + } else if (document.selection && document.selection.createRange) { + range = document.selection.createRange(); + begin = 0 - range.duplicate().moveStart('character', -100000); + end = begin + range.text.length; + } + return { begin: begin, end: end }; + } + }, + unmask: function() { + return this.trigger("unmask"); + }, + mask: function(mask, settings) { + var input, + defs, + tests, + partialPosition, + firstNonMaskPos, + len; + + if (!mask && this.length > 0) { + input = $(this[0]); + return input.data($.mask.dataName)(); + } + settings = $.extend({ + placeholder: $.mask.placeholder, // Load default placeholder + completed: null + }, settings); + + + defs = $.mask.definitions; + tests = []; + partialPosition = len = mask.length; + firstNonMaskPos = null; + + $.each(mask.split(""), function(i, c) { + if (c == '?') { + len--; + partialPosition = i; + } else if (defs[c]) { + tests.push(new RegExp(defs[c])); + if (firstNonMaskPos === null) { + firstNonMaskPos = tests.length - 1; + } + } else { + tests.push(null); + } + }); + + return this.trigger("unmask").each(function() { + var input = $(this), + buffer = $.map( + mask.split(""), + function(c, i) { + if (c != '?') { + return defs[c] ? settings.placeholder : c; + } + }), + focusText = input.val(); + + function seekNext(pos) { + while (++pos < len && !tests[pos]); + return pos; + } + + function seekPrev(pos) { + while (--pos >= 0 && !tests[pos]); + return pos; + } + + function shiftL(begin,end) { + var i, + j; + + if (begin<0) { + return; + } + + for (i = begin, j = seekNext(end); i < len; i++) { + if (tests[i]) { + if (j < len && tests[i].test(buffer[j])) { + buffer[i] = buffer[j]; + buffer[j] = settings.placeholder; + } else { + break; + } + + j = seekNext(j); + } + } + writeBuffer(); + input.caret(Math.max(firstNonMaskPos, begin)); + } + + function shiftR(pos) { + var i, + c, + j, + t; + + for (i = pos, c = settings.placeholder; i < len; i++) { + if (tests[i]) { + j = seekNext(i); + t = buffer[i]; + buffer[i] = c; + if (j < len && tests[j].test(t)) { + c = t; + } else { + break; + } + } + } + } + + function keydownEvent(e) { + var k = e.which, + pos, + begin, + end; + + //backspace, delete, and escape get special treatment + if (k === 8 || k === 46 || (iPhone && k === 127)) { + pos = input.caret(); + begin = pos.begin; + end = pos.end; + + if (end - begin === 0) { + begin=k!==46?seekPrev(begin):(end=seekNext(begin-1)); + end=k===46?seekNext(end):end; + } + clearBuffer(begin, end); + shiftL(begin, end - 1); + + e.preventDefault(); + } else if (k == 27) {//escape + input.val(focusText); + input.caret(0, checkVal()); + e.preventDefault(); + } + } + + function keypressEvent(e) { + var k = e.which, + pos = input.caret(), + p, + c, + next; + + if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore + return; + } else if (k) { + if (pos.end - pos.begin !== 0){ + clearBuffer(pos.begin, pos.end); + shiftL(pos.begin, pos.end-1); + } + + p = seekNext(pos.begin - 1); + if (p < len) { + c = String.fromCharCode(k); + if (tests[p].test(c)) { + shiftR(p); + + buffer[p] = c; + writeBuffer(); + next = seekNext(p); + + if(android){ + setTimeout($.proxy($.fn.caret,input,next),0); + }else{ + input.caret(next); + } + + if (settings.completed && next >= len) { + settings.completed.call(input); + } + } + } + e.preventDefault(); + } + } + + function clearBuffer(start, end) { + var i; + for (i = start; i < end && i < len; i++) { + if (tests[i]) { + buffer[i] = settings.placeholder; + } + } + } + + function writeBuffer() { input.val(buffer.join('')); } + + function checkVal(allow) { + //try to place characters where they belong + var test = input.val(), + lastMatch = -1, + i, + c; + + for (i = 0, pos = 0; i < len; i++) { + if (tests[i]) { + buffer[i] = settings.placeholder; + while (pos++ < test.length) { + c = test.charAt(pos - 1); + if (tests[i].test(c)) { + buffer[i] = c; + lastMatch = i; + break; + } + } + if (pos > test.length) { + break; + } + } else if (buffer[i] === test.charAt(pos) && i !== partialPosition) { + pos++; + lastMatch = i; + } + } + if (allow) { + writeBuffer(); + } else if (lastMatch + 1 < partialPosition) { + input.val(""); + clearBuffer(0, len); + } else { + writeBuffer(); + input.val(input.val().substring(0, lastMatch + 1)); + } + return (partialPosition ? i : firstNonMaskPos); + } + + input.data($.mask.dataName,function(){ + return $.map(buffer, function(c, i) { + return tests[i]&&c!=settings.placeholder ? c : null; + }).join(''); + }); + + if (!input.attr("readonly")) + input + .one("unmask", function() { + input + .unbind(".mask") + .removeData($.mask.dataName); + }) + .bind("focus.mask", function() { + clearTimeout(caretTimeoutId); + var pos, + moveCaret; + + focusText = input.val(); + pos = checkVal(); + + caretTimeoutId = setTimeout(function(){ + writeBuffer(); + if (pos == mask.length) { + input.caret(0, pos); + } else { + input.caret(pos); + } + }, 10); + }) + .bind("blur.mask", function() { + checkVal(); + if (input.val() != focusText) + input.change(); + }) + .bind("keydown.mask", keydownEvent) + .bind("keypress.mask", keypressEvent) + .bind(pasteEventName, function() { + setTimeout(function() { + var pos=checkVal(true); + input.caret(pos); + if (settings.completed && pos == input.val().length) + settings.completed.call(input); + }, 0); + }); + checkVal(); //Perform initial check for existing values + }); + } +}); + + +})(jQuery); \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/mktSignup.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/mktSignup.js new file mode 100644 index 00000000..3b95146e --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/mktSignup.js @@ -0,0 +1,133 @@ +$(document).ready(function(){ + $.mockjax({ + url: "emails.action", + response: function(settings) { + var email = settings.data.email, + emails = ["glen@marketo.com", "george@bush.gov", "me@god.com", "aboutface@cooper.com", "steam@valve.com", "bill@gates.com"]; + this.responseText = "true"; + if ( $.inArray( email, emails ) !== -1 ) { + this.responseText = "false"; + } + }, + responseTime: 500 + }); + + jQuery.validator.addMethod("password", function( value, element ) { + var result = this.optional(element) || value.length >= 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"); + + $("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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/step2.htm b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/step2.htm new file mode 100644 index 00000000..c8b1a7df --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/step2.htm @@ -0,0 +1,326 @@ + + + + + Subscription Signup | Marketo + + + + + + + + + +
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +

Step 2 of 2

+

Billing Information

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Billing Address: +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+
+ + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + +
+
+
Credit Card Type: + +
Expiration: + + +
+ + + +
+ + + +
+
+ + +
+
+
+
+
+
+
+ +
+
+ + + + +
+
+ + + +
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/stylesheet.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/stylesheet.css new file mode 100644 index 00000000..cdee65f9 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/stylesheet.css @@ -0,0 +1,1179 @@ +:-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; +} diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif new file mode 100644 index 00000000..2c7c3587 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/index.html new file mode 100644 index 00000000..d2f57d03 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/index.html @@ -0,0 +1,250 @@ + + + + + Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team + + + + + + + +

jQuery Validation Plugin Demo

+
+
+ +
+
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + +
+ + + + + + +
+
  +
+ + +
+ +
+ + + +
+
+
+
+
+
+
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/left_white.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/left_white.png new file mode 100644 index 00000000..b889960c Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/left_white.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.css new file mode 100644 index 00000000..d5f128bf --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.css @@ -0,0 +1,236 @@ +/* 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png new file mode 100644 index 00000000..b5e71515 Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/right_white.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/right_white.png new file mode 100644 index 00000000..393bbe2b Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/right_white.png differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/index.html new file mode 100644 index 00000000..b6988d3e --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/index.html @@ -0,0 +1,468 @@ + + + + + jQuery accordion form with validation + + + + + + + + +
+
+

+ Help meBuy 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/style.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/style.css new file mode 100644 index 00000000..fbf08c24 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/style.css @@ -0,0 +1,705 @@ +/******************************************** + 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/radio-checkbox-select-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/radio-checkbox-select-demo.html new file mode 100644 index 00000000..74e0e61b --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/radio-checkbox-select-demo.html @@ -0,0 +1,132 @@ + + + + + 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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js new file mode 100644 index 00000000..b3641273 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js @@ -0,0 +1,9 @@ +require(["jquery", "../../dist/jquery.validate"], function($) { + + $.validator.setDefaults({ + submitHandler: function() { alert("submitted!"); } + }); + + // validate the comment form when it is submitted + $("#commentForm").validate(); +}); \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/index.html new file mode 100644 index 00000000..04f61fcf --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/index.html @@ -0,0 +1,56 @@ + + + + + jQuery validation plug-in - requirejs 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 +

+ + +

+

+ + +

+

+ + +

+

+ + +

+

+ +

+
+
+ + + +
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/site-demos.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/site-demos.css new file mode 100644 index 00000000..21b90f65 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/site-demos.css @@ -0,0 +1,16 @@ +#field { margin-left: .5em; float: left; } +#field, label { float: left; font-family: Arial, Helvetica, sans-serif; font-size: small; } +br { clear: both; } +input { border: 1px solid black; margin-bottom: .5em; } +input.error { border: 1px solid red; } +label.error { + background: url('images/unchecked.gif') no-repeat; + padding-left: 16px; + margin-left: .3em; +} +label.valid { + background: url('images/checked.gif') no-repeat; + display: block; + width: 16px; + height: 16px; +} \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/themerollered.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/themerollered.html new file mode 100644 index 00000000..450c5c77 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/themerollered.html @@ -0,0 +1,235 @@ + + + + + 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 + + + + +
+

+ +

+
+
+ + + + + + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html new file mode 100644 index 00000000..7d354126 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html @@ -0,0 +1,69 @@ + + + + + jQuery Validation plugin: integration with TinyMCE + + + + + + + +
+

TinyMCE and Validation Plugin integration example

+ + +
+ + +
+ +
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/editor_template.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/editor_template.js new file mode 100644 index 00000000..d19fb53f --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/editor_template.js @@ -0,0 +1 @@ +(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/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/img/icons.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/img/icons.gif new file mode 100644 index 00000000..16af141f Binary files /dev/null and b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/img/icons.gif differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/langs/en.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/langs/en.js new file mode 100644 index 00000000..6f095311 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/langs/en.js @@ -0,0 +1,11 @@ +tinyMCE.addI18n('en.simple',{ +bold_desc:"Bold (Ctrl+B)", +italic_desc:"Italic (Ctrl+I)", +underline_desc:"Underline (Ctrl+U)", +striketrough_desc:"Strikethrough", +bullist_desc:"Unordered list", +numlist_desc:"Ordered list", +undo_desc:"Undo (Ctrl+Z)", +redo_desc:"Redo (Ctrl+Y)", +cleanup_desc:"Cleanup messy code" +}); \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/skins/default/ui.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/skins/default/ui.css new file mode 100644 index 00000000..32feae62 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/skins/default/ui.css @@ -0,0 +1,32 @@ +/* Reset */ +.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} + +/* Containers */ +.defaultSimpleSkin {position:relative} +.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;} +.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;} +.defaultSimpleSkin .mceToolbar {height:24px;} + +/* Layout */ +.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px} +.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} + +/* Button */ +.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px} +.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} +.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0} +.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} + +/* Separator */ +.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px} + +/* Theme */ +.defaultSimpleSkin span.mce_bold {background-position:0 0} +.defaultSimpleSkin span.mce_italic {background-position:-60px 0} +.defaultSimpleSkin span.mce_underline {background-position:-140px 0} +.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0} +.defaultSimpleSkin span.mce_undo {background-position:-160px 0} +.defaultSimpleSkin span.mce_redo {background-position:-100px 0} +.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0} +.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} +.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0} diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/tiny_mce.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/tiny_mce.js new file mode 100644 index 00000000..55aba6e3 --- /dev/null +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/tiny_mce.js @@ -0,0 +1 @@ +var tinymce={majorVersion:'3',minorVersion:'2.1.1',releaseDate:'2008-11-27',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;t.isAir=/adobeair/i.test(ua);if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i=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,y + + + + jQuery Validation plugin: integration with TinyMCE + + + + + + + +

+

TinyMCE4 and Validation Plugin integration example

+ + +
+ + +
+ +
+ + diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.js old mode 100755 new mode 100644 index 801d0b7f..df41fbd4 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.js +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.js @@ -1,246 +1,257 @@ -/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012 -* https://github.com/jzaefferer/jquery-validation -* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */ - /*! - * jQuery Validation Plugin 1.10.0 - * - * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ - * http://docs.jquery.com/Plugins/Validation + * jQuery Validation Plugin v1.14.0 * - * Copyright (c) 2006 - 2011 Jörn Zaefferer + * http://jqueryvalidation.org/ * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html + * Copyright (c) 2015 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"); +// 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("alphanumeric", function(value, element) { - return this.optional(element) || /^\w+$/i.test(value); -}, "Letters, numbers, and underscores only please"); + // Element is optional + if (optionalValue) { + return optionalValue; + } -jQuery.validator.addMethod("lettersonly", function(value, element) { - return this.optional(element) || /^[a-z]+$/i.test(value); -}, "Letters only please"); + if ($(element).attr("type") === "file") { + // If we are using a wildcard, make it regex friendly + typeParam = typeParam.replace(/\*/g, ".*"); -jQuery.validator.addMethod("nowhitespace", function(value, element) { - return this.optional(element) || /^\S+$/i.test(value); -}, "No white space 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]; -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"); + // Grab the mimetype from the loaded file, verify it matches + if (!file.type.match(new RegExp( "\\.?(" + typeParam + ")$", "i"))) { + return false; + } + } + } + } -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"); + // Either return true because we've validated each file, or because the + // browser does not support element.files and the FileList feature + return true; +}, $.validator.format("Please enter a value with a valid mimetype.")); -jQuery.validator.addMethod("integer", function(value, element) { - return this.optional(element) || /^-?\d+$/.test(value); -}, "A positive or negative non-decimal number please"); +$.validator.addMethod("alphanumeric", function(value, element) { + return this.optional(element) || /^\w+$/i.test(value); +}, "Letters, numbers, and underscores only please"); -/** - * 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 +/* + * Dutch bank account numbers (not 'giro' numbers) have 9 digits + * and pass the '11 check'. + * We accept the notation with spaces, as that is common. + * acceptable: 123456789 or 12 34 56 789 */ -jQuery.validator.addMethod("vinUS", function(v) { - if (v.length != 17) { - return false; +$.validator.addMethod("bankaccountNL", function(value, element) { + if (this.optional(element)) { + return true; } - 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; - } - } - } - rs += d; + if (!(/^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test(value))) { + return false; } - cd = rs % 11; - if (cd == 10) { - cd = "X"; + // now '11 check' + var account = value.replace(/ /g, ""), // remove spaces + sum = 0, + len = account.length, + pos, factor, digit; + for ( pos = 0; pos < len; pos++ ) { + factor = len - pos; + digit = account.substring(pos, pos + 1); + sum = sum + factor * digit; } - if (cd == cdv) { - return true; - } - return false; -}, "The specified vehicle identification number (VIN) is invalid."); + return sum % 11 === 0; +}, "Please specify a valid bank account number"); + +$.validator.addMethod("bankorgiroaccountNL", function(value, element) { + return this.optional(element) || + ($.validator.methods.bankaccountNL.call(this, value, element)) || + ($.validator.methods.giroaccountNL.call(this, value, element)); +}, "Please specify a valid bank or giro account number"); /** - * 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 + * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity. * - * @example - * @desc Declares an optional input element whose value must be a valid date. + * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional) * - * @name jQuery.validator.methods.dateITA - * @type Boolean - * @cat Plugins/Validate/Methods + * BIC definition in detail: + * - First 4 characters - bank code (only letters) + * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters) + * - Next 2 characters - location code (letters and digits) + * a. shall not start with '0' or '1' + * b. second character must be a letter ('O' is not allowed) or one of the following digits ('0' for test (therefore not allowed), '1' for passive participant and '2' for active participant) + * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits) */ -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"); +$.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("dateNL", function(value, element) { - return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value); -}, "Vul hier een geldige datum in."); +/* + * 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("time", function(value, element) { - return this.optional(element) || /^([0-1]\d|2[0-3]):([0-5]\d)$/.test(value); -}, "Please enter a valid time, between 00:00 and 23:59"); -jQuery.validator.addMethod("time12h", function(value, element) { - return this.optional(element) || /^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))$/i.test(value); -}, "Please enter a valid time, between 00:00 am and 12:00 pm"); + var num = [], + controlDigit, sum, i, count, tmp, secondDigit; -/** - * 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 + value = value.toUpperCase(); + + // 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; + } + + 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 ) ); + } + + return false; + +}, "Please specify a valid CIF number." ); + +/* + * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number. + * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation. */ -jQuery.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]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); -}, "Please specify a valid phone number"); +$.validator.addMethod("cpfBR", function(value) { + // Removing special characters from value + value = value.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g, ""); -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{5}\)?\s?\d{4,5})|(?:\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3}))|(?:\d{3}\)?\s?\d{3}\s?\d{3,4})|(?:\d{2}\)?\s?\d{4}\s?\d{4}))$/); -}, 'Please specify a valid phone number'); + // Checking value to have 11 digits only + if (value.length !== 11) { + return false; + } -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 sum = 0, + firstCN, secondCN, checkResult, i; + + firstCN = parseInt(value.substring(9, 10), 10); + secondCN = parseInt(value.substring(10, 11), 10); + + checkResult = function(sum, cn) { + var result = (sum * 10) % 11; + if ((result === 10) || (result === 11)) {result = 0;} + return (result === cn); + }; + + // Checking for dump data + if (value === "" || + value === "00000000000" || + value === "11111111111" || + value === "22222222222" || + value === "33333333333" || + value === "44444444444" || + value === "55555555555" || + value === "66666666666" || + value === "77777777777" || + value === "88888888888" || + value === "99999999999" + ) { + return false; + } -//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 with ^((?:00\s?|\+)(44)\s?)?\(?0?(?:\)\s?)?([1-9]\d{1,4}\)?[\d\s]+) -// Extract $2 and set $prefix to '+44' if $2 is '44' otherwise set $prefix to '0' -// Extract $3 and remove spaces and parentheses. Phone number is combined $2 and $3. -// 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_UK_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'); + // Step 1 - using first Check Number: + for ( i = 1; i <= 9; i++ ) { + sum = sum + parseInt(value.substring(i - 1, i), 10) * (11 - i); + } -// 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")); + // If first Check Number (CN) is valid, move to Step 2 - using second Check Number: + if ( checkResult(sum, firstCN) ) { + sum = 0; + for ( i = 1; i <= 10; i++ ) { + sum = sum + parseInt(value.substring(i - 1, i), 10) * (12 - i); + } + return checkResult(sum, secondCN); + } + 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); +}, "Please specify a valid CPF number"); -// 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); - -// 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) { - if (/[^0-9-]+/.test(value)) { +/* 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; } @@ -248,48 +259,56 @@ jQuery.validator.addMethod("creditcardtypes", function(value, element, param) { var validTypes = 0x0000; - if (param.mastercard) + if (param.mastercard) { validTypes |= 0x0001; - if (param.visa) + } + if (param.visa) { validTypes |= 0x0002; - if (param.amex) + } + if (param.amex) { validTypes |= 0x0004; - if (param.dinersclub) + } + if (param.dinersclub) { validTypes |= 0x0008; - if (param.enroute) + } + if (param.enroute) { validTypes |= 0x0010; - if (param.discover) + } + if (param.discover) { validTypes |= 0x0020; - if (param.jcb) + } + if (param.jcb) { validTypes |= 0x0040; - if (param.unknown) + } + if (param.unknown) { validTypes |= 0x0080; - if (param.all) + } + if (param.all) { validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080; - + } if (validTypes & 0x0001 && /^(5[12345])/.test(value)) { //mastercard - return value.length == 16; + return value.length === 16; } if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa - return value.length == 16; + return value.length === 16; } if (validTypes & 0x0004 && /^(3[47])/.test(value)) { //amex - return value.length == 15; + return value.length === 15; } if (validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test(value)) { //dinersclub - return value.length == 14; + return value.length === 14; } if (validTypes & 0x0010 && /^(2(014|149))/.test(value)) { //enroute - return value.length == 15; + return value.length === 15; } if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover - return value.length == 16; + return value.length === 16; } if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb - return value.length == 16; + return value.length === 16; } if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb - return value.length == 15; + return value.length === 15; } if (validTypes & 0x0080) { //unknown return true; @@ -297,67 +316,500 @@ 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) { - 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); +/** + * 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"); + +$.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); +}, $.validator.messages.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(Date.UTC(aaaa, mm - 1, gg, 12, 0, 0, 0)); + if ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth () === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) { + check = true; + } else { + check = false; + } + } else { + check = false; + } + return this.optional(element) || check; +}, $.validator.messages.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); +}, $.validator.messages.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; + + // 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) { - 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); +$.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." ); + +jQuery.validator.addMethod( "notEqualTo", function( value, element, param ) { + return this.optional(element) || !$.validator.methods.equalTo.call( this, value, element, param ); +}, "Please enter a different value, values must not be the same." ); + +$.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 + */ +$.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" ); + +/* +* Valida CEPs do brasileiros: +* +* Formatos aceitos: +* 99999-999 +* 99.999-999 +* 99999999 +*/ +$.validator.addMethod("postalcodeBR", function(cep_value, element) { + return this.optional(element) || /^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test( cep_value ); +}, "Informe um CEP válido."); + +/* 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, @@ -365,73 +817,182 @@ 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; +$.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.")); - numberRequired = options[0]; - selector = options[1]; - var numberFilled = $(selector, element.form).filter(function() { - return validator.elementValue(this); - }).length; - var valid = numberFilled >= numberRequired || numberFilled === 0; +/* Validates US States and/or Territories by @jdforsythe + * Can be case insensitive or require capitalization - default is case insensitive + * Can include US Territories or not - default does not + * Can include US Military postal abbreviations (AA, AE, AP) - default does not + * + * Note: "States" always includes DC (District of Colombia) + * + * Usage examples: + * + * This is the default - case insensitive, no territories, no military zones + * stateInput: { + * caseSensitive: false, + * includeTerritories: false, + * includeMilitary: false + * } + * + * Only allow capital letters, no territories, no military zones + * stateInput: { + * caseSensitive: false + * } + * + * Case insensitive, include territories but not military zones + * stateInput: { + * includeTerritories: true + * } + * + * Only allow capital letters, include territories and military zones + * stateInput: { + * caseSensitive: true, + * includeTerritories: true, + * includeMilitary: true + * } + * + * + * + */ - if(!$(element).data('being_validated')) { - var fields = $(selector, element.form); - fields.data('being_validated', true); - fields.valid(); - fields.data('being_validated', false); +$.validator.addMethod("stateUS", function(value, element, options) { + var isDefault = typeof options === "undefined", + caseSensitive = ( isDefault || typeof options.caseSensitive === "undefined" ) ? false : options.caseSensitive, + includeTerritories = ( isDefault || typeof options.includeTerritories === "undefined" ) ? false : options.includeTerritories, + includeMilitary = ( isDefault || typeof options.includeMilitary === "undefined" ) ? false : options.includeMilitary, + regex; + + if (!includeTerritories && !includeMilitary) { + regex = "^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; + } else if (includeTerritories && includeMilitary) { + regex = "^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; + } else if (includeTerritories) { + regex = "^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$"; + } else { + regex = "^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$"; } - return valid; -}, jQuery.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 incase we have multiple types we can accept - var typeParam = typeof param === "string" ? param.replace(/,/g, '|') : "image/*", - optionalValue = this.optional(element), - i, file; + regex = caseSensitive ? new RegExp(regex) : new RegExp(regex, "i"); + return this.optional(element) || regex.test(value); +}, +"Please specify a valid state"); - // Element is optional - if(optionalValue) { - return optionalValue; - } +// 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")); - if($(element).attr("type") === "file") { - // If we are using a wildcard, make it regex friendly - typeParam = typeParam.replace("*", ".*"); +$.validator.addMethod("time", function(value, element) { + return this.optional(element) || /^([01]\d|2[0-3]|[0-9])(:[0-5]\d){1,2}$/.test(value); +}, "Please enter a valid time, between 00:00 and 23:59"); - // 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]; +$.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"); - // Grab the mimtype from the loaded file, verify it matches - if(!file.type.match(new RegExp( ".?(" + typeParam + ")$", "i"))) { - return false; +// 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); + +/** + * 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/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.min.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.min.js old mode 100755 new mode 100644 index 60533e43..b63c3ca1 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.min.js +++ b/wqflask/wqflask/static/new/packages/ValidationPlugin/dist/additional-methods.min.js @@ -1,4 +1,4 @@ -/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012 -* https://github.com/jzaefferer/jquery-validation -* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT, GPL */ -(function(){function a(a){return a.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ").replace(/[.(),;:!?%#$'"_+=\/-]*/g,"")}jQuery.validator.addMethod("maxWords",function(b,c,d){return this.optional(c)||a(b).match(/\b\w+\b/g).length<=d},jQuery.validator.format("Please enter {0} words or less.")),jQuery.validator.addMethod("minWords",function(b,c,d){return this.optional(c)||a(b).match(/\b\w+\b/g).length>=d},jQuery.validator.format("Please enter at least {0} words.")),jQuery.validator.addMethod("rangeWords",function(b,c,d){var e=a(b),f=/\b\w+\b/g;return this.optional(c)||e.match(f).length>=d[0]&&e.match(f).length<=d[1]},jQuery.validator.format("Please enter between {0} and {1} words."))})(),jQuery.validator.addMethod("letterswithbasicpunc",function(a,b){return this.optional(b)||/^[a-z\-.,()'\"\s]+$/i.test(a)},"Letters or punctuation only please"),jQuery.validator.addMethod("alphanumeric",function(a,b){return this.optional(b)||/^\w+$/i.test(a)},"Letters, numbers, and underscores only please"),jQuery.validator.addMethod("lettersonly",function(a,b){return this.optional(b)||/^[a-z]+$/i.test(a)},"Letters only please"),jQuery.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please"),jQuery.validator.addMethod("ziprange",function(a,b){return this.optional(b)||/^90[2-5]\d\{2\}-\d{4}$/.test(a)},"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx"),jQuery.validator.addMethod("zipcodeUS",function(a,b){return this.optional(b)||/\d{5}-\d{4}$|^\d{5}$/.test(a)},"The specified US ZIP Code is invalid"),jQuery.validator.addMethod("integer",function(a,b){return this.optional(b)||/^-?\d+$/.test(a)},"A positive or negative non-decimal number please"),jQuery.validator.addMethod("vinUS",function(a){if(a.length!=17)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;b<17;b++){e=j[b],d=a.slice(b,b+1),b==8&&(g=d);if(!isNaN(d))d*=e;else for(c=0;c9&&a.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number"),jQuery.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{5}\)?\s?\d{4,5})|(?:\d{4}\)?\s?(?:\d{5}|\d{3}\s?\d{3}))|(?:\d{3}\)?\s?\d{3}\s?\d{3,4})|(?:\d{2}\)?\s?\d{4}\s?\d{4}))$/)},"Please specify a valid phone number"),jQuery.validator.addMethod("mobileUK",function(a,b){return a=a.replace(/\s+|-/g,""),this.optional(b)||a.length>9&&a.match(/^(?:(?:(?:00\s?|\+)44\s?|0)7(?:[45789]\d{2}|624)\s?\d{3}\s?\d{3})$/)},"Please specify a valid mobile number"),jQuery.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(?:[45789]\d{8}|624\d{6})))$/)},"Please specify a valid uk phone number"),jQuery.validator.addMethod("postcodeUK",function(a,b){return a=a.toUpperCase().replace(/\s+/g,""),this.optional(b)||a.match(/^([^QZ][^IJZ]{0,1}\d{1,2})(\d[^CIKMOV]{2})$/)||a.match(/^([^QV]\d[ABCDEFGHJKSTUW])(\d[^CIKMOV]{2})$/)||a.match(/^([^QV][^IJZ]\d[ABEHMNPRVWXY])(\d[^CIKMOV]{2})$/)||a.match(/^(GIR)(0AA)$/)||a.match(/^(BFPO)(\d{1,4})$/)||a.match(/^(BFPO)(C\/O\d{1,3})$/)},"Please specify a valid postcode"),jQuery.validator.addMethod("strippedminlength",function(a,b,c){return jQuery(a).text().length>=c},jQuery.validator.format("Please enter at least {0} characters")),jQuery.validator.addMethod("email2",function(a,b,c){return this.optional(b)||/^((([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(a)},jQuery.validator.messages.email),jQuery.validator.addMethod("url2",function(a,b,c){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)},jQuery.validator.messages.url),jQuery.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),d&1&&/^(5[12345])/.test(a)?a.length==16:d&2&&/^(4)/.test(a)?a.length==16:d&4&&/^(3[47])/.test(a)?a.length==15:d&8&&/^(3(0[012345]|[68]))/.test(a)?a.length==14:d&16&&/^(2(014|149))/.test(a)?a.length==15:d&32&&/^(6011)/.test(a)?a.length==16:d&64&&/^(3)/.test(a)?a.length==16:d&64&&/^(2131|1800)/.test(a)?a.length==15:d&128?!0:!1},"Please enter a valid credit card number."),jQuery.validator.addMethod("ipv4",function(a,b,c){return this.optional(b)||/^(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(a)},"Please enter a valid IP v4 address."),jQuery.validator.addMethod("ipv6",function(a,b,c){return this.optional(b)||/^((([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(a)},"Please enter a valid IP v6 address."),jQuery.validator.addMethod("pattern",function(a,b,c){return this.optional(b)?!0:(typeof c=="string"&&(c=new RegExp("^(?:"+c+")$")),c.test(a))},"Invalid format."),jQuery.validator.addMethod("require_from_group",function(a,b,c){var d=this,e=c[1],f=$(e,b.form).filter(function(){return d.elementValue(this)}).length>=c[0];if(!$(b).data("being_validated")){var g=$(e,b.form);g.data("being_validated",!0),g.valid(),g.data("being_validated",!1)}return f},jQuery.format("Please fill at least {0} of these fields.")),jQuery.validator.addMethod("skip_or_fill_minimum",function(a,b,c){var d=this;numberRequired=c[0],selector=c[1];var e=$(selector,b.form).filter(function(){return d.elementValue(this)}).length,f=e>=numberRequired||e===0;if(!$(b).data("being_validated")){var g=$(selector,b.form);g.data("being_validated",!0),g.valid(),g.data("being_validated",!1)}return f},jQuery.format("Please either skip these fields or fill at least {0} of them.")),jQuery.validator.addMethod("accept",function(a,b,c){var d=typeof c=="string"?c.replace(/,/g,"|"):"image/*",e=this.optional(b),f,g;if(e)return e;if($(b).attr("type")==="file"){d=d.replace("*",".*");if(b.files&&b.files.length)for(f=0;f]*?>/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("cpfBR",function(a){if(a=a.replace(/([~!@#$%^&*()_+=`{}\[\]\-|\\:;'<>,.\/? ])+/g,""),11!==a.length)return!1;var b,c,d,e,f=0;if(b=parseInt(a.substring(9,10),10),c=parseInt(a.substring(10,11),10),d=function(a,b){var c=10*a%11;return(10===c||11===c)&&(c=0),c===b},""===a||"00000000000"===a||"11111111111"===a||"22222222222"===a||"33333333333"===a||"44444444444"===a||"55555555555"===a||"66666666666"===a||"77777777777"===a||"88888888888"===a||"99999999999"===a)return!1;for(e=1;9>=e;e++)f+=parseInt(a.substring(e-1,e),10)*(11-e);if(d(f,b)){for(f=0,e=1;10>=e;e++)f+=parseInt(a.substring(e-1,e),10)*(12-e);return d(f,c)}return!1},"Please specify a valid CPF 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"),a.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)},a.validator.messages.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(Date.UTC(f,e-1,d,12,0,0,0)),h=g.getUTCFullYear()===f&&g.getUTCMonth()===e-1&&g.getUTCDate()===d?!0:!1):h=!1,this.optional(b)||h},a.validator.messages.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)},a.validator.messages.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(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."),jQuery.validator.addMethod("notEqualTo",function(b,c,d){return this.optional(c)||!a.validator.methods.equalTo.call(this,b,c,d)},"Please enter a different value, values must not be the same."),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"),a.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("postalcodeBR",function(a,b){return this.optional(b)||/^\d{2}.\d{3}-\d{3}?$|^\d{5}-?\d{3}?$/.test(a)},"Informe um CEP válido."),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("stateUS",function(a,b,c){var d,e="undefined"==typeof c,f=e||"undefined"==typeof c.caseSensitive?!1:c.caseSensitive,g=e||"undefined"==typeof c.includeTerritories?!1:c.includeTerritories,h=e||"undefined"==typeof c.includeMilitary?!1:c.includeMilitary;return d=g||h?g&&h?"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":g?"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$":"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$":"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$",d=f?new RegExp(d):new RegExp(d,"i"),this.optional(b)||d.test(a)},"Please specify a valid state"),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-9])(:[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