From c9a4c0970b4d6f626fd9eeba048322b22eb601c1 Mon Sep 17 00:00:00 2001 From: Pjotr Prins Date: Fri, 6 Apr 2018 11:33:16 +0000 Subject: Removing use ValidationPlugin. See https://github.com/genenetwork/genenetwork2/issues/310 --- .../new/packages/ValidationPlugin/Gruntfile.js | 186 - .../static/new/packages/ValidationPlugin/README.md | 65 - .../demo/ajaxSubmit-integration-demo.html | 90 - .../ValidationPlugin/demo/captcha/captcha.js | 27 - .../demo/captcha/fonts/Anorexia.ttf | Bin 14300 -> 0 bytes .../ValidationPlugin/demo/captcha/image_req.php | 6 - .../demo/captcha/images/button.png | Bin 1546 -> 0 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 1175 -> 0 bytes .../ValidationPlugin/demo/images/checked.gif | Bin 220 -> 0 bytes .../demo/images/cmxform-divider.gif | Bin 43 -> 0 bytes .../demo/images/cmxform-fieldset.gif | Bin 314 -> 0 bytes .../ValidationPlugin/demo/images/loading.gif | Bin 418 -> 0 bytes .../ValidationPlugin/demo/images/unchecked.gif | Bin 223 -> 0 bytes .../new/packages/ValidationPlugin/demo/index.html | 244 - .../ValidationPlugin/demo/jquerymobile.html | 77 - .../ValidationPlugin/demo/login/images/bg.gif | Bin 89 -> 0 bytes .../ValidationPlugin/demo/login/images/header1.jpg | Bin 442 -> 0 bytes .../ValidationPlugin/demo/login/images/page.gif | Bin 664 -> 0 bytes .../demo/login/images/required_star.gif | Bin 121 -> 0 bytes .../ValidationPlugin/demo/login/index.html | 69 - .../ValidationPlugin/demo/login/screen.css | 457 - .../demo/marketo/images/backRequiredGray.gif | Bin 137 -> 0 bytes .../demo/marketo/images/back_green-fade.gif | Bin 2421 -> 0 bytes .../demo/marketo/images/back_nav_blue.gif | Bin 1668 -> 0 bytes .../ValidationPlugin/demo/marketo/images/blank.gif | Bin 799 -> 0 bytes .../demo/marketo/images/button-submit.gif | Bin 4527 -> 0 bytes .../demo/marketo/images/favicon.ico | Bin 1150 -> 0 bytes .../ValidationPlugin/demo/marketo/images/help.png | Bin 1615 -> 0 bytes .../demo/marketo/images/left-nav-callout-long.png | Bin 1381 -> 0 bytes .../demo/marketo/images/login-sprite.gif | Bin 2017 -> 0 bytes .../demo/marketo/images/logo_marketo.gif | Bin 8363 -> 0 bytes .../ValidationPlugin/demo/marketo/images/sf.png | Bin 3745 -> 0 bytes .../demo/marketo/images/step1-24.gif | Bin 1357 -> 0 bytes .../demo/marketo/images/step2-24.gif | Bin 1355 -> 0 bytes .../demo/marketo/images/step3-24.gif | Bin 1362 -> 0 bytes .../demo/marketo/images/tab-sprite.gif | Bin 4710 -> 0 bytes .../demo/marketo/images/tab_green.gif | Bin 1652 -> 0 bytes .../ValidationPlugin/demo/marketo/images/time.png | Bin 793 -> 0 bytes .../demo/marketo/images/toggle.gif | Bin 845 -> 0 bytes .../demo/marketo/images/warning.gif | Bin 234 -> 0 bytes .../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 73 -> 0 bytes .../packages/ValidationPlugin/demo/milk/index.html | 250 - .../ValidationPlugin/demo/milk/left_white.png | Bin 538 -> 0 bytes .../packages/ValidationPlugin/demo/milk/milk.css | 236 - .../packages/ValidationPlugin/demo/milk/milk.png | Bin 5121 -> 0 bytes .../ValidationPlugin/demo/milk/right_white.png | Bin 1579 -> 0 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 1440 -> 0 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 - .../packages/ValidationPlugin/lib/jquery-1.11.1.js | 10308 ------------------- .../packages/ValidationPlugin/lib/jquery-1.7.2.js | 9404 ----------------- .../packages/ValidationPlugin/lib/jquery-1.8.3.js | 9472 ----------------- .../packages/ValidationPlugin/lib/jquery-1.9.1.js | 9597 ----------------- .../packages/ValidationPlugin/lib/jquery.form.js | 1121 -- .../new/packages/ValidationPlugin/lib/jquery.js | 27 - .../ValidationPlugin/lib/jquery.mockjax.js | 598 -- .../ValidationPlugin/lib/jquery.simulate.js | 314 - .../new/packages/ValidationPlugin/lib/require.js | 36 - .../new/packages/ValidationPlugin/package.json | 57 - .../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/index.html | 375 - .../new/packages/ValidationPlugin/test/messages.js | 69 - .../new/packages/ValidationPlugin/test/methods.js | 1225 --- .../packages/ValidationPlugin/test/qunit/qunit.css | 291 - .../packages/ValidationPlugin/test/qunit/qunit.js | 3828 ------- .../new/packages/ValidationPlugin/test/rules.js | 307 - .../new/packages/ValidationPlugin/test/test.js | 1853 ---- .../wqflask/templates/new_security/login_user.html | 4 + 208 files changed, 4 insertions(+), 59816 deletions(-) delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/README.md delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/ajaxSubmit-integration-demo.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/captcha.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/fonts/Anorexia.ttf delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/image_req.php delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/button.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/image.php delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/index.php delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/newsession.php delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/process.php delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/rand.php delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/style.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-messages-data-demo.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errors-within-labels.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/file_input.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/bg.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/checked.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-divider.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-fieldset.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/loading.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/unchecked.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/jquerymobile.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/bg.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/header1.jpg delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/page.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/required_star.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/screen.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/backRequiredGray.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_green-fade.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_nav_blue.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/blank.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/button-submit.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/favicon.ico delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/help.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/left-nav-callout-long.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/login-sprite.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/logo_marketo.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/sf.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step1-24.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step2-24.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step3-24.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab-sprite.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab_green.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/time.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/toggle.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/warning.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/jquery.maskedinput.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/mktSignup.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/step2.htm delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/stylesheet.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/left_white.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/right_white.png delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/style.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/radio-checkbox-select-demo.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/site-demos.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/themerollered.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/editor_template.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/img/icons.gif delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/langs/en.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/skins/default/ui.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/tiny_mce.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce4/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.11.1.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.7.2.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.8.3.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.9.1.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.form.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.mockjax.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery.simulate.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/lib/require.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/package.json delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/accept.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/additional.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/alphanumeric.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/bankaccountNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/bankorgiroaccountNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/bic.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/cifES.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/cpfBR.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/creditcardtypes.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/currency.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/dateFA.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/dateITA.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/dateNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/extension.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/giroaccountNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/iban.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/integer.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/ipv4.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/ipv6.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/lettersonly.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/letterswithbasicpunc.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/mobileNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/mobileUK.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/nieES.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/nifES.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/notEqualTo.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/nowhitespace.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/pattern.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phoneNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phoneUK.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phoneUS.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/phonesUK.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalCodeCA.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalcodeBR.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalcodeIT.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postalcodeNL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/postcodeUK.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/require_from_group.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/skip_or_fill_minimum.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/statesUS.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/strippedminlength.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/time.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/time12h.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/url2.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/vinUS.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/zipcodeUS.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/additional/ziprange.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/ajax.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/core.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ar.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_bg.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_bn_BD.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ca.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_cs.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_da.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_de.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_el.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_es.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_es_AR.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_es_PE.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_et.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_eu.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_fa.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_fi.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_fr.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ge.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_gl.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_he.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_hr.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_hu.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_hy_AM.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_id.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_is.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_it.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ja.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ka.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_kk.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ko.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_lt.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_lv.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_my.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_nl.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_no.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_pl.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_pt_BR.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_pt_PT.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ro.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_ru.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_si.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sk.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sl.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sr.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sr_lat.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_sv.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_th.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_tj.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_tr.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_uk.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_vi.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_zh.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/messages_zh_TW.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_de.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_es_CL.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_fi.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_nl.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/src/localization/methods_pt.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/aria.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/error-placement.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/index.html delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/messages.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/methods.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/qunit/qunit.css delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/qunit/qunit.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/rules.js delete mode 100644 wqflask/wqflask/static/new/packages/ValidationPlugin/test/test.js (limited to 'wqflask') diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js deleted file mode 100644 index f6e42d02..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/Gruntfile.js +++ /dev/null @@ -1,186 +0,0 @@ -/*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 deleted file mode 100644 index 4b9a33e8..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/README.md +++ /dev/null @@ -1,65 +0,0 @@ -[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. - -You can find the plan for how to spend the money on the [pledgie page](http://pledgie.com/campaigns/18159). - -## 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 -
- -
- - - -``` - -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/). - -## Reporting issues and contributing code - -See the [Contributing Guidelines](CONTRIBUTING.md) for details. - -**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 © Jörn Zaefferer
-Licensed under the MIT license. 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 deleted file mode 100644 index 207f9adf..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/ajaxSubmit-integration-demo.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - 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 deleted file mode 100644 index f3429c2a..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/captcha.js +++ /dev/null @@ -1,27 +0,0 @@ -$(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 deleted file mode 100644 index 453eeb00..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/fonts/Anorexia.ttf and /dev/null 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 deleted file mode 100644 index 574171bb..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/image_req.php +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 7ef79de5..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/button.png and /dev/null 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 deleted file mode 100644 index e3bfb481..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/images/image.php +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - 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 deleted file mode 100644 index 36ff45e2..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/newsession.php +++ /dev/null @@ -1,12 +0,0 @@ - \ 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 deleted file mode 100644 index 24fe3a8b..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/process.php +++ /dev/null @@ -1,14 +0,0 @@ - \ 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 deleted file mode 100644 index 88b595e7..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/rand.php +++ /dev/null @@ -1,11 +0,0 @@ - \ 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 deleted file mode 100644 index c0bbe5f9..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/captcha/style.css +++ /dev/null @@ -1,140 +0,0 @@ -body { - margin: 3% 5%; - padding: 0; - background-color: #fff; - color: #333; - font: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif; -} - -a:link, a:visited { - background-color: #fff; - color: #333; - text-decoration: underline; -} - -a:hover, a:focus, a:active { - background-color: #ffb; - color: #454545; - text-decoration: underline; -} - -h1 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.5em Helvetica, Arial, Verdana, Sans-serif; -} - -h2 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.3em Helvetica, Arial, Verdana, Sans-serif; -} - -h3 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.2em Helvetica, Arial, Verdana, Sans-serif; -} - -table { - margin: 0; - padding: 0; - width: 100%; -} - -table th { - border: 1px solid #ddd; - font-weight: bold; - text-align: left; - padding: 1%; -} - -table td { - border: 1px solid #ddd; - padding: 1%; -} - -dl, dt, dd { - margin: 0; - padding: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - border: 1px solid #ddd; - margin: 0% 0% 2% 0%; - padding: 2%; -} - -fieldset legend { - margin: 0; - padding: 0 4px; - background-color: inherit; - color: #333; -} - -code { - font: 1em "Courier New", Courier, Monospace; -} - -pre code { - font: 1.1em "Courier New", Courier, Monospace; - border-bottom: 1px solid #eee; -} - -img { - border: 1px solid #eee; -} - -p#statusgreen { - font-size: 1.2em; - background-color: #fff; - color: #0a0; -} - -p#statusred { - font-size: 1.2em; - background-color: #fff; - color: #a00; -} - -fieldset label { - display: block; -} - -fieldset label.error { - color: red; -} - -fieldset label.valid { - color: green; -} - -fieldset div#captchaimage { - float: left; - margin-right: 15px; -} - -fieldset input#captcha { - width: 25%; - border: 1px solid #ddd; - padding: 2px; -} - -fieldset input#submit { - display: block; - margin: 2% 0% 0% 0%; -} \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css deleted file mode 100644 index 120f5a47..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxform.css +++ /dev/null @@ -1,46 +0,0 @@ -/********************************** - -Name: cmxform Styles - -***********************************/ -form.cmxform { - width: 370px; - font-size: 1.0em; - color: #333; -} - -form.cmxform legend { - padding-left: 0; -} - -form.cmxform legend, form.cmxform label { - color: #333; -} - -form.cmxform fieldset { - border: none; - border-top: 1px solid #C9DCA6; - background: url(../images/cmxform-fieldset.gif) left bottom repeat-x; - background-color: #F8FDEF; -} - -form.cmxform fieldset fieldset { - background: none; -} - -form.cmxform fieldset p, form.cmxform fieldset fieldset { - padding: 5px 10px 7px; - background: url(../images/cmxform-divider.gif) left bottom repeat-x; -} - -form.cmxform label.error, label.error { - /* remove the next line when you have trouble in IE6 with labels in list */ - color: red; - font-style: italic -} -div.error { display: none; } -input { border: 1px solid black; } -input.checkbox { border: none } -input:focus { border: 1px dotted black; } -input.error { border: 1px dotted red; } -form.cmxform .gray * { color: gray; } \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css deleted file mode 100644 index ac52f71b..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/cmxformTemplate.css +++ /dev/null @@ -1,55 +0,0 @@ -/********************************** - -Use: cmxform template - -***********************************/ -form.cmxform fieldset { - margin-bottom: 10px; -} - -form.cmxform legend { - padding: 0 2px; - font-weight: bold; - _margin: 0 -7px; /* IE Win */ -} - -form.cmxform label { - display: inline-block; - line-height: 1.8; - vertical-align: top; - cursor: hand; -} - -form.cmxform fieldset p { - list-style: none; - padding: 5px; - margin: 0; -} - -form.cmxform fieldset fieldset { - border: none; - margin: 3px 0 0; -} - -form.cmxform fieldset fieldset legend { - padding: 0 0 5px; - font-weight: normal; -} - -form.cmxform fieldset fieldset label { - display: block; - width: auto; -} - -form.cmxform label { width: 100px; } /* Width of labels */ -form.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */ -form.cmxform label.error { - margin-left: 103px; - width: 220px; -} - -form.cmxform input.submit { - margin-left: 103px; -} - -/*\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */ \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css deleted file mode 100644 index 84494e87..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/core.css +++ /dev/null @@ -1,21 +0,0 @@ -body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif } -body { margin: 0; padding: 0; font-size: small; color: #333 } -h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 } -h1 { font-size: large } -#main { padding: 1em; } -#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc; - background: url(../images/bg.gif) repeat-x; text-align: center } -#banner a { color: white; } - -p { margin: 10px 0; } - -li { margin-left: 10px; } - -h3 { margin: 1em 0 0; } - -h1 { font-size: 2em; } -h2 { font-size: 1.8em; } -h3 { font-size: 1.6em; } -h4 { font-size: 1.4em; } -h5 { font-size: 1.2em; } - diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css deleted file mode 100644 index 5c376b37..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/reset.css +++ /dev/null @@ -1,61 +0,0 @@ -/********************************** - -Use: Reset Styles for all browsers - -***********************************/ - -body, p, blockquote { - margin: 0; - padding: 0; -} - -a img, iframe { border: none; } - -/* Headers -------------------------------*/ - -h1, h2, h3, h4, h5, h6 { - margin: 0; - padding: 0; - font-size: 100%; -} - -/* Lists -------------------------------*/ - -ul, ol, dl, li, dt, dd { - margin: 0; - padding: 0; -} - -/* Links -------------------------------*/ - -a, a:link {} -a:visited {} -a:hover {} -a:active {} - -/* Forms -------------------------------*/ - -form, fieldset { - margin: 0; - padding: 0; -} - -fieldset { border: 1px solid #000; } - -legend { - padding: 0; - color: #000; -} - -input, textarea, select { - margin: 0; - padding: 1px; - font-size: 100%; - font-family: inherit; -} - -select { padding: 0; } \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css deleted file mode 100644 index 840f572b..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/css/screen.css +++ /dev/null @@ -1,11 +0,0 @@ -/********************************** - -Use: Main Screen Import - -***********************************/ - -@import "reset.css"; -@import "core.css"; - -@import "cmxformTemplate.css"; -@import "cmxform.css"; \ No newline at end of file diff --git a/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 deleted file mode 100644 index 461f21e8..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-messages-data-demo.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - jQuery validation plug-in - comment form example - - - - - - - -

jQuery Validation Plugin Demo

-
-

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

- -
-
- Please enter your email address -

- - -

-

- -

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

- - -

-

- -

-
-
- Back to main page -
- - diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html deleted file mode 100644 index 5b3ef14d..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/custom-methods-demo.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Test for jQuery validate() plugin - - - - - - - -

jQuery Validation Plugin Demo

-
-
-

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

Your form contains tons of errors! Please try again.

-

Back to main page

-
- - diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html deleted file mode 100644 index fe04dc6a..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/dynamic-totals.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - jQuery validation plug-in - dynamic forms demo - - - - - - - -

jQuery Validation Plugin Demo

-
- -
-

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

Your form contains tons of errors! Please try again.

-

Back to main page -

-
- - diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html deleted file mode 100644 index 23f50771..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errorcontainer-demo.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - Test for jQuery validate() plugin - - - - - - - - -

jQuery Validation Plugin Demo

-
-
-
- Login Form -

- - -

-

- - -

-
-
-

- -

-
-
- -
-

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

-
    -
  1. - -
  2. -
  3. - -
  4. -
  5. - -
  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 deleted file mode 100644 index 7c28a1af..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/errors-within-labels.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -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 deleted file mode 100644 index f92814da..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/file_input.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 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 deleted file mode 100644 index 846add07..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/bg.gif and /dev/null 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 deleted file mode 100644 index 5e33a78d..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/checked.gif and /dev/null 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 deleted file mode 100644 index 718a977c..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-divider.gif and /dev/null 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 deleted file mode 100644 index 9c48ea4b..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/cmxform-fieldset.gif and /dev/null 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 deleted file mode 100644 index 93c46a6c..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/loading.gif and /dev/null 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 deleted file mode 100644 index 06ecaba1..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/images/unchecked.gif and /dev/null differ diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html deleted file mode 100644 index e03a81a2..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/index.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - 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 deleted file mode 100644 index 44e77ec4..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/jquerymobile.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - 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 deleted file mode 100644 index 12662a47..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/bg.gif and /dev/null 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 deleted file mode 100644 index 70986716..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/header1.jpg and /dev/null 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 deleted file mode 100644 index 1717731b..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/page.gif and /dev/null 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 deleted file mode 100644 index e4c16ebf..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/images/required_star.gif and /dev/null 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 deleted file mode 100644 index 013a71ec..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - 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 deleted file mode 100644 index e023a533..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/login/screen.css +++ /dev/null @@ -1,457 +0,0 @@ -/******************************************************************************* -******************************************************************************** -** -* - 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 deleted file mode 100644 index 61d29adf..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/backRequiredGray.gif and /dev/null 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 deleted file mode 100644 index 30774527..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_green-fade.gif and /dev/null 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 deleted file mode 100644 index 3d3da3a8..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/back_nav_blue.gif and /dev/null 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 deleted file mode 100644 index 3b042d8b..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/blank.gif and /dev/null 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 deleted file mode 100644 index 54d291cd..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/button-submit.gif and /dev/null 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 deleted file mode 100644 index 0f57c530..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/favicon.ico and /dev/null 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 deleted file mode 100644 index 73817ffb..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/help.png and /dev/null 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 deleted file mode 100644 index c5b8fad7..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/left-nav-callout-long.png and /dev/null 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 deleted file mode 100644 index 799b1960..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/login-sprite.gif and /dev/null 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 deleted file mode 100644 index 62663bca..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/logo_marketo.gif and /dev/null 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 deleted file mode 100644 index 962bf2a5..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/sf.png and /dev/null 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 deleted file mode 100644 index 9ddf1e36..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step1-24.gif and /dev/null 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 deleted file mode 100644 index bada27f1..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step2-24.gif and /dev/null 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 deleted file mode 100644 index 8a45393f..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/step3-24.gif and /dev/null 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 deleted file mode 100644 index 048b9b00..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab-sprite.gif and /dev/null 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 deleted file mode 100644 index ef1c0847..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/tab_green.gif and /dev/null 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 deleted file mode 100644 index 911da3f1..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/time.png and /dev/null 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 deleted file mode 100644 index ad1bf0fa..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/toggle.gif and /dev/null 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 deleted file mode 100644 index 60da04c2..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/images/warning.gif and /dev/null 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 deleted file mode 100644 index ad7af92e..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/index.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - 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 deleted file mode 100644 index cd54339a..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/jquery.maskedinput.js +++ /dev/null @@ -1,338 +0,0 @@ -/* - 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 deleted file mode 100644 index 3b95146e..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/mktSignup.js +++ /dev/null @@ -1,133 +0,0 @@ -$(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 deleted file mode 100644 index c8b1a7df..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/step2.htm +++ /dev/null @@ -1,326 +0,0 @@ - - - - - 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 deleted file mode 100644 index cdee65f9..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/marketo/stylesheet.css +++ /dev/null @@ -1,1179 +0,0 @@ -:-moz-any-link :focus { - outline: none; -} - -:focus { - -moz-outline-style: none; - outline: none; -} - -body { - font-size: 80%; - margin: 0; - padding: 0; - font-family: tahoma, geneva, sans-serif; - background-color: #000000; -} - -a { - color: #0653AB; - outline: 0px; - text-decoration: none; -} - -a:hover { - outline: 0px; - text-decoration: underline; -} - -img { - border: 0px; -} - -/* s1.0 - Page Containers */ -#letterbox { - margin: 10px auto; - width: 883px; - background-color: #364158; - border: 8px solid #D4D4D4; - padding: 1px 1px 10px 1px; -} - -#header-background { - background: url(images/back_nav_blue.gif) repeat-x; - margin: 0px auto; - padding: 0px; - height: 73px; - width: 883px; - border-top: 4px solid #CCEAFE; - border-bottom: 4px solid #D4D4D4; -} - -#page-container { - width: 866px; - margin: 0px auto; - margin-top: 33px; /* pad from top menu to actions buts*/ - margin-bottom: -11px; - padding-top: 8px; - padding-bottom: 8px; - background-color: #D4D4D4; /* light grey*/ - border-right: 1px solid #464646; -} - -#page-content-inner { - width: 849px; - margin: 0px auto; - border-top: 1px solid #9F9FA0; - border-left: 1px solid #A2A09A; - background-color: #F4F1E9; - position: relative; -} - -#page-content-inner #col-left { - width: 210px; - float: left; - background-color: #F4F1E9; -} - -#page-content-inner #col-main { - width: 639px; - background-color: #ffffff; - position: absolute; - right: 0px; - top: 0px; -} - -#footer-container { - width: 866px; - position: relative; - left: 8px; - padding: 2px 0px 10px 0px; - background-color: #D4D4D4; /* light grey*/ -} - -/* s2.0 - Global navigation bar */ -.nav-global-container { - width: 880px; - margin: 0px auto; - position: relative; -} - -* html .nav-global-container { /* ie6 fix*/ - margin-bottom: -6px; -} - -.login { - position: absolute; - right: 20px; - text-align: center; -} - -.login a,.login a span { - display: block; - height: 18px; - font-size: 11px; - background: url(images/login-sprite.gif) right -5px no-repeat; - text-decoration: none; - font-weight: bold; - padding: 5px 10px 5px 10px; - position: relative; -} - -.login a:hover { - color: #000000; - text-decoration: underline; -} - -div.login a span { - background-position: left -105px; - width: 4px; - position: absolute; - top: 0px; - left: 0px; - padding: 5px 0px 5px 0px;; -} - -div.login a:hover span { - -} - -.logo { - float: left; - margin: 0px 0px -5px 0px; /* neg marging for ie6 */ -} - -.logo img { - border: 0px; - margin-left: -1px; -} - -.nav-global { - float: left; - width: 645px; - margin: 40px 0px 0px 40px; - background-color: transparent; -} - -.nav-global ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-global li { - float: left; - white-space: nowrap; -} - -div.nav-global li a,div.nav-global li a span { - background-image: url(images/tab-sprite.gif); - background-position: right 100px; - background-repeat: no-repeat; - height: 32px; - color: #666666; - text-decoration: none; - font: bold 16px 'trebuchet ms'; - margin-right: 15px; - display: block; - position: relative; - padding: 7px 15px 0px 15px; -} - -div.nav-global li a:hover { - background-position: right 0px; - color: #333333; -} - -div.nav-global li a:hover span { - background-position: left -100px; - display: block !important; -} - -div.nav-global li a span { - background-position: left 150px; - width: 4px; - position: absolute; - left: 0px; - top: 0px; - padding: 7px 0px 0px 0px; -} - -body.safari div.nav-global li a span { - display: none; -} - -div.nav-global li a.on,div.nav-global li a.on:hover { - background-position: right -55px; - color: #FFFFFF; -} - -div.nav-global li a.on span,div.nav-global li a.on:hover span { - background-position: left -155px; - display: block !important; -} - -div.action-container { - position: relative; - top: -45px; - cursor: pointer; -} - -div.action-icon-container { - position: absolute; - top: -17px; - left: -17px; - z-index: 10; - width: 100px; - height: 100px; - overflow: hidden; -} - -div.action-icon { - border: 0px; - position: absolute; - top: -0px; - left: 0px; -} - -div.action-button-container { - height: 106px; - width: 180px; - overflow: hidden; - position: absolute; - top: 0px; - left: 0px; - z-index: 5; -} - -img.action-icon { - border: 0px; - position: absolute; - top: 0px; - left: 0px; - z-index: 0 -} - -div.action-text { - z-index: 20; - color: #FFFFFF; - position: absolute; - left: 40px; - top: 12px; - font: 14px tahoma, geneva; - padding-top: 30px; -} - -div.bigbuttons { - top: -20px; -} - -div.action-header { - z-index: 21; - position: absolute; - left: 40px; - top: 10px; -} - -div.action-header b { - font: bold 17px tahoma, geneva; - display: block; - margin-bottom: 10px; - color: #0b2c89; - position: absolute; - top: 0px; - left: 0px; - width: 130px; -} - -div.action-header b.shadow { - top: 1px; - left: 1px; - color: #d5d5d5; -} - -img.action-button { - position: relative; -} - -div.hover img.action-button { - top: -131px; -} - -div.on img.action-button { - top: -261px; -} - -/* s3.0 - top of content Action Buttons */ -.action-buttons { - width: 100%; /* ie6 requires */ -} - -.action-buttons ul { - position: relative; - padding: 0px; -} - -.action-buttons li { - position: relative; /* ie6 fix */ - float: left; - list-style: none; - text-align: center; - line-height: 16px; - margin: -61px 0px 0px 0px; -} - -.action-home li { - margin: -49px 0px 0px 0px; -} - -.action-buttons a { - display: block; - height: 110px; - width: 175px; - padding: 14px 0px 0px 25px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; -} - -.action-buttons li span { - color: #053880; - line-height: 47px; - font-size: 17px; -} - -div.action-bottom { - margin: 15px 0px 10px 0px; - float: left; -} - -div.action-bottom a { - height: 61px; - width: 178px; - border: 0px; - background: url(images/action-bottom.gif) no-repeat 0px 0px; - color: #0b2c89; - float: left; - position: relative; - font: bold 17px tahoma, geneva; - text-decoration: none; - margin-right: 10px; -} - -div.action-bottom a span { - position: absolute; - top: 15px; - left: 40px; -} - -div.action-bottom a span.shadow { - top: 16px; - left: 41px; - color: #d4d4d4; -} - -.line-grey { - background: url(images/line-grey.gif) 0 0 repeat-x; - height: 2px; - margin: 8px 25px 20px 0; -} - -/* s4.0 - Home Hero Area */ -.hero-background { - position: relative; - width: 880px; - background: url(images/back_home-hero.jpg) 10px 0px no-repeat; - height: 211px; - margin: -20px 0px 45px 0px; -} - -.hero-text { - float: right; - width: 626px; - margin-top: 26px; -} - -.hero-text a { /* Sign Up Now Button */ - padding: 5px 32px 0px 0px; - float: right; -} - -.hero-text h1 { - font-size: 2.3em; - line-height: 1.2em; - color: #333333; - font-family: Trebuchet MS; - margin: 12px 0px 10px 10px; -} - -.hero-text h2 { - margin: 0px; - font-weight: normal; - font-size: 1.35em; - margin: 5px 0px 13px 10px -} - -/* s4.1 - Home Left Header tab */ -.col-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 30px; - width: 166px; - text-align: center; - color: #ffffff; - font: 20px 'trebuchet ms'; - padding-top: 2px; - margin-top: -41px; - margin-left: 20px; - line-height: 29px; - margin-bottom: 8px; - display: block; -} - -.col-left-header-tab a { - color: #FFFFFF; -} - -.callout-green { - background: url(images/back_green-fade.gif) 0 0 repeat-x; - font-size: 1.2em; - padding: 10px 15px 20px 13px; - color: #303B52; - line-height: 1.4em; -} - -/* s4.2 - Home Left Quote */ -.callout-tan { - color: #666666; -} - -.callout-tan h1 { - background: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y; - font-size: 1.1em; - text-align: center; - margin: 0px; - padding: 11px 5px 11px 2px; - color: #333333; -} - -.callout-tan p { - margin: 0px; - margin-top: 5px; - line-height: 1.4em; - padding: 5px 10px 7px 13px; -} - -.callout-tan p img { - float: left; - margin: 5px 10px 5px 0px; -} - -.callout-tan div { - text-align: left; - padding: 5px 10px 7px 0px; - font-weight: bold; -} - -/* s4.3 - purple home boxes */ -.box-purple { - background: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x; - border-left: 1px solid #ffffff; - color: #333333; - width: 581px; - padding: 10px 15px 20px 15px; -} - -div.box-purple a { - -} - -.box-purple h1 { - font-size: 1.5em; - margin: 10px 0px -15px 0px; -} - -.box-purple li { - margin: 0px 0px 0px -23px; - line-height: 1.6em; - font-size: 1em; -} - -.box-purple div { - padding: 0px 0px 0px 110px; -} - -.icon-text01 { - background-image: url(images/icon_search-engine-market.png); - background-repeat: no-repeat; -} - -* html .icon-text01 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_search-engine-market.png", - sizingMethod = "crop"); -} - -.icon-text02 { - background: url(images/icon_landing-pages.png) 0 0 no-repeat; -} - -* html .icon-text02 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_landing-pages.png", sizingMethod = - "crop"); -} - -.icon-text03 { - background: url(images/icon_salesforce.png) 0 0 no-repeat; -} - -* html .icon-text03 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_salesforce.png", sizingMethod = - "crop"); -} - -/* s4.4 - news home boxes */ -.callout-news { - color: #555555; - float: left; - width: 49%; - margin: 10px 1px 0px 0px; - padding-bottom: 20px; - text-align: left; -} - -.line-news-r { - border-right: 1px solid #D4D4D4; -} - -.callout-news h1 { - background-color: #EEEEEE; - font-size: 1.2em; - margin: 0px; - padding: 11px 5px 11px 15px; - color: #333333; -} - -.callout-news p { - margin: 10px 0px 0px 10px; - padding: 0px 10px 7px 20px; - background: url(images/news.gif) no-repeat left 1px; -} - -.callout-news p a { - -} - -.callout-news ul { - list-style-type: none; - padding: 0; - margin: 10px 0 0 10px; -} - -.callout-news li { - background: url(images/icon_news.gif) no-repeat left 2px; - padding: 0px 5px 5px 20px; -} - -.callout-news li a { - display: block; - margin-bottom: 5px; -} - -.callout-news div { - text-align: right; -} - -#scrollup { - position: relative; - overflow: hidden; - height: 440px; - width: 200px -} - -.headline { - position: absolute; - top: 600px; - left: 5px; - height: 585px; - width: 190px; - font: normal 12px tahoma, geneva !important; -} - -div.more { - margin: 5px 0px 0px 0px; - padding: 0px 10px 0px 0px; - letter-spacing: inherit; -} - -div.more a { - background: transparent url(images/arrow_r-blue.gif) no-repeat right 2px - ; - font-weight: bold; - padding: 0px 20px 0px 0px; - font-weight: bold; - text-decoration: none; -} - -div.more a:hover { - text-decoration: underline; -} - -/* sX.0 - Left Nav */ -.nav-left-back { - background: url(images/back_nav_side.gif) 0 0 repeat-x; -} - -div.empty { - background: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x; -} - -div.empty div.callout-green { - -} - -.nav-left { - padding-top: 12px; - /*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/ - width: 210px; -} - -.nav-left ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-left li a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; - border-top: 1px solid #B3D38D; - border-bottom: 1px solid #7CA84E; - border-left: 1px solid #97B973; - padding: 6px 0px 0px 20px; -} - -.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover { - color: #4C6F28; - background-color: #F4F1E9; -} - -.nav-left a.open { - background-image: url(images/arrow_d-green.gif); - background-repeat: no-repeat; - background-position: 6px 11px; -} - -.nav-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 32px; - width: 166px; - text-align: center; - color: #ffffff; - margin: -41px 0px 0px 22px; - line-height: 22px; - margin-bottom: 8px; - display: block; -} - -div.empty div.nav-left-header-tab { - background: url(images/tab_green2.gif) 0 0 no-repeat; -} - -.nav-left a.active { - /* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */ - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #F4F1E9; - color: #4C6F28; - border-top: 1px solid #D1E5BB; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #DADADA; - padding: 6px 0px 0px 20px; -} - -#nav-left-sub a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #D6E8C4; - color: #4C6F28; - border-top: 1px solid #D6E8C4; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 1px solid #8DBE5A; - padding: 6px 0px 0px 30px; -} - -* html #nav-left-sub { /* ie6 fix */ - margin-top: -1px; -} - -*+html #nav-left-sub { /* ie7 fix */ - margin-top: -1px; -} - -#nav-left-sub a.active-page { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #ffffff; - color: #666666; - border-top: 0px solid #7CA84E; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 0px solid #8DBE5A; - padding: 6px 0px 0px 30px; - cursor: default; /* turns off hand icon for link */ -} - -/* sX.0 - Main Content */ -.main-content { - color: #666666; - position: absolute; - right: 20px; - padding-top: 20px; - width: 585px; - padding-bottom: 20px; -} - -div.main-content div.main-content { - -} - -.main-content h1 { - color: #5890D1; - font-size: 1.9em; - font-family: Trebuchet MS; - border-bottom: 1px solid #cccccc; - margin: 0px 10px 0px 0px; -} - -.main-content h2 { - color: #666666; - font-size: 1.3em; - font-weight: normal; - margin: 10px 10px 5px 0px; -} - -.main-content p { - margin: 10px 10px 10px 0px; - line-height: 1.55em; -} - -/* sX.1 - Main Content Sub Styles */ -.sub-grey { - border-top: 1px solid #D4D4D4; - border-bottom: 1px solid #D4D4D4; - background-color: #F4F4F4; - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -.sub-white { - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -img.screen-grab-r { - margin-right: -8px; - text-align: right; - padding: 0px 0px 0px 10px; -} - -div.main-content a.screenshot { - float: right; - padding: 10px 10px 0px 0px -} - -.content-foot { - border-top: 1px solid #D4D4D4; - font-size: .9em; - line-height: 1.45em; - margin: 10px 20px 0px 0px; - padding: 10px 10px 30px 0px; -} - -div.main-content ul { - position: relative; - left: -25px; -} - -div.main-content li { - margin-bottom: 5px; - list-style-type: disc -} - -div.main-content li a { - color: #6A6CB0; -} - -/* sX.0 - Footer */ -div.footer { - color: #666666; - font-size: .85em; - font-weight: normal; - height: 18px; - margin: 0px auto; - font-family: Tahoma, Geneva, sans-serif; - margin-top: 10px; -} - -.footer ul { - list-style-type: none; -} - -.footer li { - float: left; - border-right: 1px solid #666666; - padding: 0px 7px 0px 7px; - margin-top: 3px; -} - -.footer a { - color: #666666; - text-decoration: none; -} - -.footer a:hover { - color: #0653AB; - text-decoration: none; -} - -.footer li.line-off { - border-right: 0px solid #ffffff; -} - -div.footer strong { - font-weight: normal; -} - -/* sX.0 - General Colors */ -.line-grey,.line-grey-tier { - border-top: 1px solid #A3A3A2; -} - -.line-grey-tier { - padding-bottom: 25px; -} - -.bottom { - height: 10px; -} - -div.p10bottom { - padding-bottom: 10px; -} - -.clear { - clear: both; -} - -table.grid { - background: #EEEEEE; -} - -table.grid th { - background-color: #F4F4F4; -} - -table.grid td { - background-color: #FFFFFF; -} - -div.buttonSubmit { - position: relative; -} - -div.buttonSubmit input,div.buttonSubmit span { - height: 36px; - position: relative; - background-image: url(images/button-submit.gif); - background-repeat: no-repeat; - background-position: right 0px; - float: left; - color: #FFFFFF; - font-weight: bold; - padding: 0px 15px 2px 15px; - margin: 20px 0px 20px 0px; - border: 0px; - cursor: pointer; - z-index: 5; -} - -div.buttonSubmit input { - width: auto; -} - -div.buttonSubmit span { - width: 4px; - position: absolute; - left: 0px; - top: 0px; - background-position: left -36px; - padding: 0px 0px 0px 0px; - z-index: 10; -} - -body.safari div.buttonSubmit span { - display: none -} - -div.buttonSubmitHover input { - background-position: right -72px; -} - -div.buttonSubmitHover span { - background-position: left -108px; -} - -a.demoLink { - padding: 1px 10px 0px 17px; - height: 24px; - background: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px; - display: block; - float: left; -} - -div.callout-tan a { - background: none; - color: #0653AB; - margin: auto; - display: block; -} - -div.callout-tan a:hover { - background: none; - color: #0653AB; -} - -label.error { - display: block; - color: red; - font-style: italic; - font-weight: normal; -} - -input.error { - border: 2px solid red; -} - -p.demoBlock { - border-bottom: 1px solid #DDDDDD; - padding-bottom: 10px; -} - -div.left-nav-callout { - height: 200px; - width: 190px; - top: 55px; - left: 5px; - position: relative; - padding-left: 9px; - padding-top: 13px; -} - -div.left-nav-callout img.png { - position: absolute; - z-index: 0; - top: 0px; - left: 0px; -} - -div.left-nav-callout h6 { - font: bold 14px tahoma, geneva; - color: #333333; - height: 36px; - padding-left: 5px; - margin: 0px; - position: relative; - z-index: 10; -} - -div.left-nav-callout a { - background: url(images/monitor24.gif) no-repeat 0px center; - padding: 5px 0px 5px 30px; - display: block; - font: bold 12px tahoma, geneva; - color: #336699; - margin-bottom: 5px; - position: relative; - z-index: 10; - width: 140px; -} - -form table td { - padding: 5px; -} - -form table input { - width: 200px; - padding: 3px; - margin: 0px; -} - -textarea { - width: 400px -} - -td.label { - width: 150px; -} - -tr.required td.label { - font-weight: bold; - background: url(/images/forms/backRequiredGray.gif) no-repeat right - center; -} - -div.subTableDiv { - width: 500px; -} - -div.subTableDiv td.label { - width: 135px; -} - -ul#homeBlog li div.description { - display: none; -} - -td.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select { - border: 2px solid red; - background-color: #FFFFD5; - margin: 0px; - color: red; -} - -tr td.field div.formError { - display: none; - color: #FF0000; -} - -tr.errorRow td.field div.formError { - display: block; - font-weight: normal; -} - -div.error { - color: red; -} - -div.error a { - color: #336699; - font-size: 12px; - text-decoration: underline -} - -div.tooltip { - position: absolute; - left: 30px; - bottom: 0px; - display: none; /* in case javascript is disabled */ - width: 170px; - background-color: #F4F1E9; - z-index: 100; - padding: 10px; - border: 1px solid #CCCCCC; -} - -div.offerbox { - width: 125px; - float: left; - position: relative; -} - -div.offerbox h3 { - font: bold 17px tahoma, geneva; - color: #333333; - height: 55px; - margin: 0px auto; - text-align: center; -} - -div.offerbox h4 { - height: 100px; - font: normal 13px tahoma, geneva; - margin: 0px; -} - -div.offerbox h5 { - font: bold 14px tahoma, geneva; - margin: 0px; - height: 55px; -} - -div.offerbox h5 small { - float: left; - font-weight: normal; - font-size: 10px; -} - -div.offerbox div.learnmore { - padding-left: 25px; -} - -div#marketoEditions { - background: url(images/buynowBack.gif) no-repeat; - width: 584px; - height: 376px; - float: left; - position: relative; - margin-bottom: 10px; -} - -div.offerHeader { - background: #0D8BBD; - position: absolute; - top: 20px; - width: 266px; - height: 34px; - border: 1px solid #e1e4e2; -} - -div.offerHeader span { - font: 20px 'trebuchet ms'; - color: #FFFFFF; - position: absolute; - left: 0px; - top: 0px; -} - -div.offerHeader span.shadow { - font: 20px 'trebuchet ms'; - color: #333333; - position: absolute; -} - -div.offerbox div.buttonSubmit { - margin: 5px 0px 0px 10px; -} - -div.footerAddress { - position: absolute; - bottom: 30px; - left: 20px; - color: #666666; - font-size: 11px; - display: none; -} diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif deleted file mode 100644 index 2c7c3587..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/bg.gif and /dev/null 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 deleted file mode 100644 index d2f57d03..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/index.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - 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 deleted file mode 100644 index b889960c..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/left_white.png and /dev/null 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 deleted file mode 100644 index d5f128bf..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.css +++ /dev/null @@ -1,236 +0,0 @@ -/* GENERAL ELEMENTS */ - -* { margin: 0; padding: 0; } - -body, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; } -body { color: #333; background-color: #fff; text-align: center; } - -a:link { color:#0060BF; text-decoration: underline; } -a:visited { color:#0060BF; text-decoration: underline; } -a:active { color:#0060BF; text-decoration: underline; } -a:hover { color:#000000; text-decoration: underline; } - -h1, h2, h3, h4, h5, h6 { font-family: "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; } -h1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; } -h2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; } -h3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; } -h4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; } -h5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; } -h6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; } - -img { border: 0px; } - -p { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; } -li > p { margin-top: 0.2em; } -pre { font-family: monospace; font-size: 1.0em; } -strong, b { font-weight: bold; } - -/* PAGE ELEMENTS */ - -/* Content */ - -#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ } -.content { margin-left: 4.5em; margin-right: 4.5em; } -.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; } -.content ol.terms li { margin-bottom: 1em; } - -/* Header */ - -#header { padding-bottom: 10em; } -#headerlogo { float: left; } -#headerlogo img { width: 188px; height: 83px; } -#headernav { float: right; } - -label { font-weight: bold; } -#reminders label { font-weight: normal; } - -table.tabbedtable { padding-left: 3em; } -table.tabbedtable td { padding-bottom: 5px; } -table.tabbedtable label { text-align: right; padding-right: 9px; } -.hiddenlabel { visibility: hidden; } -.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; } -.largelinkwrap { padding-top: 10px; padding-bottom: 10px; } - - - -#signuptab { - float:left; - width:100%; - background:#fff url("bg.gif") repeat-x bottom; - font-size: 1.0em; - line-height: normal; -} -#signuptab ul { - margin:0; - padding: 0px 10px 0px 10px; - list-style:none; -} -#signuptab li { - float:left; - background:url("left_white.png") no-repeat left top; - margin:0; - padding:0 3px 0 9px; - border-bottom:1px solid #CACACA; -} -#signuptab a { - float:left; - display:block; - width:.1em; - background:url("right_white.png") no-repeat right top; - padding:2px 15px 0px 6px; - text-decoration:none; - font-weight:bold; - color:#fff; - white-space: nowrap; -} -#signuptab > ul a {width:auto;} -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#signuptab a {float:none;} -/* End IE5-Mac hack */ -#signuptab a:hover { - color:#333; -} -#signuptab #signupcurrent { - background-position:0 -150px; - border-width:0; -} -#signuptab #signupcurrent a { - background-position:100% -150px; - padding-bottom:1px; - color:#000; -} -#signuptab li:hover, #signuptab li:hover a { - background-position:0% -150px; - color:#000; -} -#signuptab li:hover a { - background-position:100% -150px; -} - -/* Signup box */ - -#signupbox { - width: 100%; - text-align: center; - margin: 0em auto; -} - -#signupwrap { - border: 1px solid #CACACA; - border-top: 0; - text-align: left; - padding: 35px 10px 20px 30px; - clear: both; -} - -/* Unsupported browsers */ - -.orange_rbcontent { padding: 0.4em; } -.orange_rbroundbox { width: 100%; } - -#unsupported { - font-weight: bold; - text-align: left; -} - -/*#content { - padding-top: 15px; -}*/ - -/* Signup form */ - -#signupform table { - border-spacing: 0px; - border-collapse: collapse; - empty-cells: show; -} - -#signupform .label { - padding-top: 2px; - padding-right: 8px; - vertical-align: top; - text-align: right; - width: 125px; - white-space: nowrap; -} - -#signupform .field { - padding-bottom: 10px; - white-space: nowrap; -} - -#signupform .status { - padding-top: 2px; - padding-left: 8px; - vertical-align: top; - width: 246px; - white-space: nowrap; -} - -#signupform .textfield { - width: 150px; -} - -#signupform label.error { - background:url("../images/unchecked.gif") no-repeat 0px 0px; - padding-left: 16px; - padding-bottom: 2px; - font-weight: bold; - color: #EA5200; -} - -#signupform label.checked { - background:url("../images/checked.gif") no-repeat 0px 0px; -} - -#signupform .success_msg { - font-weight: bold; - color: #0060BF; - margin-left: 19px; -} - -#signupform #dateformatStatus, #signupform #termsStatus { - margin-left: 6px; -} - -#signupform #dateformat_eu { - vertical-align: middle; -} - -#signupform #ldateformat_eu { - font-weight: normal; - vertical-align: middle; -} - -#signupform #dateformat_am { - vertical-align: middle; -} - -#signupform #ldateformat_am { - font-weight: normal; - vertical-align: middle; -} - -#signupform #termswrap { - float: left; -} - -#signupform #terms { - vertical-align: middle; - float: left; - display: block; - margin-right: 5px; -} - -#signupform #lterms { - font-weight: normal; - vertical-align: middle; - float: left; - display: block; - width: 350px; - white-space: normal; -} - -#signupform #lsignupsubmit { - visibility: hidden; -} \ No newline at end of file diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png deleted file mode 100644 index b5e71515..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/milk.png and /dev/null 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 deleted file mode 100644 index 393bbe2b..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/milk/right_white.png and /dev/null 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 deleted file mode 100644 index b6988d3e..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/index.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - - 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 deleted file mode 100644 index fbf08c24..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/multipart/style.css +++ /dev/null @@ -1,705 +0,0 @@ -/******************************************** - AUTHOR: Erwin Aligam - WEBSITE: http://www.styleshout.com/ - TEMPLATE NAME: Techmania 1.0 - TEMPLATE CODE: S-0003 - VERSION: 1.1 - *******************************************/ - /******************************************** - HTML ELEMENTS -********************************************/ /* Top elements */ - /** { margin:0; padding: 0; }*/ -body { - background-color: #000; - color: #555; - font: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif; - text-align: center; - margin: 15px 0; -} - -/* links */ -a { - color: #213540; - background: inherit; - text-decoration: none; -} - -a:hover { - color: #3e4255; - text-decoration: underline; - background: inherit; -} - -/* headers */ -h1,h2,h3 { - font-family: 'Trebuchet MS', Arial, sans-serif; - font-weight: bold; -} - -h1 { - font-size: 1.5em; - margin: 10px 15px; -} - -h2 { - font-size: 1.3em; - text-transform: uppercase; - color: #339900; - margin: 10px 15px; -} - -h3 { - font-size: 1.1em; - color: #333; - margin: 16px 0 0 18px; -} - -h1,h2,h3 { - padding: 0; -} - -p { - line-height: 1.4em; - padding: 0 15px; -} - -p.error { - color: #CC0033; -} - -ul,ol { - margin: 10px 6px; - padding: 0 15px; - color: #006699; -} - -ul span,ol span { - color: #666666; -} - -/* images */ -img { - border: 2px solid #CCC; -} - -img.float-right { - margin: 5px 0px 10px 10px; -} - -img.float-left { - margin: 5px 10px 10px 0px; -} - -code { - margin: 5px 0; - padding: 10px; - text-align: left; - display: block; - overflow: auto; - font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace; - /* white-space: pre; */ - background: #FAFAFA; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; -} - -acronym { - cursor: help; - border-bottom: 1px solid #777; -} - -blockquote { - margin: 15px; - padding: 0 0 0 32px; - background: #FAFAFA url(quote.gif) no-repeat 5px 10px !important; - background-position: 8px 10px; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; - font-weight: bold; -} - -/* form elements */ -fieldset { - margin: 12px 12px 18px; - padding-left: 6px; - border: 1px solid #004080; - color: #006699; -} - -fieldset fieldset { - border: 1px solid #9ea190; - margin: 17px 14px; -} - -form { - margin: 10px 15px; - padding: 0; -} - -label { - font-weight: bold; - margin: 5px 3px 0 0; - width: 160px; - text-align: right; - float: left; -} - -legend { - font-size: 1.2em; - padding: 0 12px; - font-weight: 900; - background-color: #F9F9F9; -} - -fieldset fieldset legend { - font-size: 1em; - color: #1a2129; - padding: 0 18px; - margin-left: 75px; -} - -input { - padding: 3px; - margin: 4px 0; - border: 1px solid #CFCED3; - font: normal 1em Verdana, sans-serif; - color: #777; -} - -textarea { - width: 400px; - padding: 4px; - font: normal 1em Verdana, sans-serif; - border: 1px solid #eee; - height: 100px; - display: block; - color: #777; -} - -input.button { - margin: 0; - font: bold 12px Arial, Sans-serif; - border: 1px solid #EAEAEA; - padding: 3px 4px; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - color: #333; /* color: #339900; */ - cursor: pointer; -} - -input.submitbutton { - background-color: #006699; - color: #FFF; - background-image: none; - font-weight: 900; - border: 1px solid #EAEAEA; - margin: 0 0 0 200px; -} - -/* search */ -#sidebar #search { - background: #f2f2f2; - margin: 0 15px; - padding: 5px 0; -} - -#sidebar #search img { - vertical-align: bottom; -} - -#sidebar #search .textbox { - background: #FFF url(input.png) no-repeat top left; - border: 1px solid #EAEAEA; - font-size: 11px; - padding: 3px; - width: 110px; -} - -#sidebar #search input.searchbutton { - margin: 0; - font: bold 100% Arial, Sans-serif; - border: 1px solid #CCC; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - padding: 1px; - height: 25px; - color: #333; - width: 55px; -} - -/***************************** - LAYOUT -******************************/ -#wrap { - margin: 0 auto; - padding: 0; - text-align: left; - background-color: #FFF; - width: 790px; -} - -#content-wrap { - clear: both; - margin: 0; - padding: 0; - width: 790px; -} - -/* header */ -#header { - position: relative; - clear: left; - width: 790px; - height: 137px; - margin: 0; - padding: 0; - background: #000 url(headerbg.jpg) no-repeat left bottom; -} - -#header h1#logo-text { - float: right; - margin: 39px 58px 0 0; - padding: 0; - font: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif; - letter-spacing: -2px; - color: #FFF; - text-transform: none; - /* change the values of top and right to adjust the position of the logo*/ - top: 35px; - right: 30px; -} - -#header h2#slogan { - float: right; - margin: 0 38px 0 0; - padding: 0; - font: bold 1.5em 'Trebuchet MS', Arial, Sans-serif; - text-transform: none; - letter-spacing: 1px; - color: #FFF; - clear: both; - text-align: right; -} - -#header h1#logo-text span { - color: #CFCED3; -} - -/* menu tabs */ -#header #header-tabs { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 25px; - background: #000; - font: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif; -} - -#header-tabs ul { - margin: 0; - padding: 2px 0px 0px 0px; - list-style: none; -} - -#header-tabs li { - display: inline; - margin: 0; - padding: 0; -} - -#header-tabs a { - float: left; - background: url(tableft.gif) no-repeat left top; - margin: 0; - padding: 0 0 0 4px; - text-decoration: none; -} - -#header-tabs a span { - float: left; - display: block; - background: url(tabright.gif) no-repeat right top; - padding: 7px 15px 4px 8px; - color: #CCC; -} - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#header-tabs a span { - float: none; -} - -/* End IE5-Mac hack */ -#header-tabs a:hover span { - color: #FFF; -} - -#header-tabs a:hover { - background-position: 0% -42px; -} - -#header-tabs a:hover span { - background-position: 100% -42px; -} - -#header-tabs #current a { - background-position: 0% -42px; -} - -#header-tabs #current a span { - background-position: 100% -42px; - color: #FFF; -} - -/* main content */ -#main { - width: 748px; - margin: 0; - padding: 8px 16px; - background-color: #F9F9F9; - border-left: 5px solid #000; - border-right: 5px solid #000; -} - -#main h1 { - padding: 8px 0 3px 25px; - text-transform: none; - border-bottom: 2px solid #f2f2f2; - color: #339900; -} - -/* sidebar */ -#sidebar { /* float: right; - width: 245px; - margin: 0 0 10px 0; padding: 0; - background-color: inherit; */ - display: none; -} - -#sidebar h1 { - padding: 8px 0px 3px 25px; - background: url(square_arrow.gif) no-repeat 0% .7em; - text-transform: none; - color: #339900; -} - -#sidebar ul.sidemenu { - list-style: none; - margin: 10px 15px; - padding: 0; -} - -#sidebar ul.sidemenu li { - margin-bottom: 1px; - border: 1px solid #f2f2f2; -} - -#sidebar ul.sidemenu a { - display: block; - font-weight: bold; - color: #333; - text-decoration: none; - padding: 2px 5px 2px 10px; - background: #f2f2f2; - border-left: 5px solid #CCC; - min-height: 18px; -} - -* html body #sidebar ul.sidemenu a { - height: 18px; -} - -#sidebar ul.sidemenu a:hover { - padding: 2px 5px 2px 10px; - background: #f2f2f2; - color: #339900; - border-left: 5px solid #72A545; -} - -/* footer */ -#footer { - clear: both; - height: 40px; - color: #CCC; - background: #000; - margin: 0; - font-size: 92%; -} - -#footer a { - text-decoration: none; - font-weight: bold; - color: #FFF; -} - -#footer #footer-left { - width: 68%; - float: left; - text-align: left; - margin: 0; - padding: 10px; -} - -#footer #footer-right { - width: 25%; - float: right; - text-align: right; - margin: 0; - padding: 10px; -} - -/* alignment classes */ -.float-left { - float: left; -} - -.float-right { - float: right; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -/* additional classes */ -.clear { - clear: both; -} - -.hide { - display: none; -} - -.gray { - color: #CCC; -} - -.comments { - color: #333; - background: #FFF; - text-align: right; - border-top: 1px dashed #EFF0F1; - border-bottom: 1px dashed #EFF0F1; - padding: 5px 0; - margin-top: 20px; -} - -html { - min-height: 100.1%; -} - -/* ------ one ------------*/ -body .mainText { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; -} - -#demoText h1,.mainText h1 { - font-size: 130%; - color: #0099FF; - text-decoration: none; - font-family: Arial, Helvetica, sans-serif; - margin: 5px 4px 5px 24px; - background: none; - padding: 0; - border: none; - text-transform: capitalize; -} - -.mainText h2 { - font-size: 110%; - color: #000033; - font-family: Arial, Helvetica, sans-serif; - text-decoration: none; - background: none; - margin: 4px 32px 6px 22px; - text-transform: capitalize; -} - -.mainText h3 { - font-size: 120%; - font-weight: 900; - margin: 14px 0 0 0; - text-align: center; - color: #000033; -} - -.mainText table { - width: 95%; - border: 1px solid #0099FF; - border-collapse: collapse; - margin: 18px 7px; -} - -.mainText table td { - background-color: #99CCFF; - color: #000033; - padding: 4px; -} - -.mainText table th { - background-color: #000033; - color: #99CCFF; - padding: 4px; -} - -.mainText .linkPar a { - color: #000033; - text-decoration: underline; -} - -.mainText .linkPar a:hover { - color: #660033; - text-decoration: none; - font-weight: 900; -} - -.pusher { - cursor: pointer; - padding: 3px 10px 3px 22px; - font-weight: 900; - font-size: 14px; -} - -/* ------------- form specific styles are here -------------- */ -fieldset { - margin: 0; - border: 1px solid #C3DE00; - padding: 10px; - /*border:none; -padding:0;*/ - color: #7563A5; -} - -legend { - background-color: #FFFFFF; - text-align: center; - color: #097981; - padding: 0 12px; -} - -label { - text-align: right; - width: 298px; - border-right: 1px dotted #099; - padding-right: 5px; - margin: 0 0 8px 0; - float: left; - clear: left; - display: block; - color: #7563A5; -} - -label.checkbox,label.textarea { - border: none; -} - -label.lgfield { - border: none; - text-align: center; - clear: both; - float: none; - width: 100%; -} - -fieldset input,fieldset select,fieldset textarea { - margin-left: 10px; - margin-bottom: 8px; -} - -select.longfield { - margin: 0 0 0 115px; -} - -input [type="radio"],input [type="checkbox"] { - margin: 2px 0 0 4px; -} - -textarea { - width: 250px; - float: left; -} - -/*Get Help Form Styles*/ -p.formDisclaimer { - text-align: center; - margin: 32px 24px 12px 0; - font-style: italic; -} - -div.buttonWrapper { - margin: 28px 0 14px 0; - clear: both; - text-align: center; -} - -.formspacer { - height: 1em; - clear: both; -} - -.hideField { - display: none; -} - -.pushOpen { - height: 18em; -} - -/* ----- error message for field validation ----- */ -#stepForm label.warning { - text-align: left; - width: auto; - padding: 0; - margin: 0 0 0 10px; - float: none; - clear: none; - display: inline; - color: #CC3366; - font-size: 10px; - border: none; - border-top: 1px dotted #CC3366; -} - -div.requiredNotice { - width: 140px; - float: right; - margin: 0 24px 0 0; - padding: 0; -} - -h3.stepHeader { - text-align: left; - font-size: 16px; - font-weight: bold; - margin: 0 0 24px 24px; - color: #676cac; -} - -ul#stepForm,ul#stepForm li { - margin: 0; - padding: 0; -} - -ul#stepForm li { - list-style: none; -} - -/* Form Buttons */ -input.submitbutton,.nextbutton,.prevbutton { - width: 100px; - height: 40px; - background-color: #663399; - padding: 4px; - border: 1px solid #339933; - cursor: pointer; - text-align: center; - color: #FFFFFF; - margin: 7px; -} - -input.submitbutton { - background-color: #006699; -} \ No newline at end of file diff --git a/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 deleted file mode 100644 index 74e0e61b..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/radio-checkbox-select-demo.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - Test for jQuery validate() plugin - - - - - - - -

jQuery Validation Plugin Demo

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

- - -
- -

-
- Spam - - - - -
-

- -

-
-
-
-

Some tests with selects

-

- -
- -

-

- -
- -

-

- -
- -

-

- -
- -

-

- -

-
- Back to main page -
- - diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js deleted file mode 100644 index b3641273..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/app.js +++ /dev/null @@ -1,9 +0,0 @@ -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 deleted file mode 100644 index 04f61fcf..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/requirejs/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - 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 deleted file mode 100644 index 21b90f65..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/site-demos.css +++ /dev/null @@ -1,16 +0,0 @@ -#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 deleted file mode 100644 index 450c5c77..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/themerollered.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - jQuery validation plug-in - ThemeRolldered demo - - - - -
-
- Please provide your name, email address (won't be published) and a comment -

- - -

- - -

-

- - -

-

- - -

-

- -

-
-
-
-
- Validating a complete form -

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

-

- - -

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

- -

-
-
- - - - - - diff --git a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html b/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html deleted file mode 100644 index 7d354126..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - 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 deleted file mode 100644 index d19fb53f..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/editor_template.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file diff --git a/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 deleted file mode 100644 index 16af141f..00000000 Binary files a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/img/icons.gif and /dev/null 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 deleted file mode 100644 index 6f095311..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/langs/en.js +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 32feae62..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/themes/simple/skins/default/ui.css +++ /dev/null @@ -1,32 +0,0 @@ -/* 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 deleted file mode 100644 index 55aba6e3..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/demo/tinymce/tiny_mce.js +++ /dev/null @@ -1 +0,0 @@ -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/lib/jquery-1.11.1.js b/wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.11.1.js deleted file mode 100644 index d4b67f7e..00000000 --- a/wqflask/wqflask/static/new/packages/ValidationPlugin/lib/jquery-1.11.1.js +++ /dev/null @@ -1,10308 +0,0 @@ -/*! - * jQuery JavaScript Library v1.11.1 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-05-01T17:42Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var deletedIds = []; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.11.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( support.ownLast ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v1.10.19 - * http://sizzlejs.com/ - * - * Copyright 2013 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-04-18 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + -(new Date()), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - strundefined = typeof undefined, - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf if we can't use a native one - indexOf = arr.indexOf || function( elem ) { - var i = 0, - len = this.length; - for ( ; i < len; i++ ) { - if ( this[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { - return []; - } - - if ( documentIsHTML && !seed ) { - - // Shortcuts - if ( (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType === 9 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== strundefined && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, - doc = node ? node.ownerDocument || node : preferredDoc, - parent = doc.defaultView; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - - // Support tests - documentIsHTML = !isXML( doc ); - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", function() { - setDocument(); - }, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", function() { - setDocument(); - }); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Check if getElementsByClassName can be trusted - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { - div.innerHTML = "
"; - - // Support: Safari<4 - // Catch class over-caching - div.firstChild.className = "i"; - // Support: Opera<10 - // Catch gEBCN failure to find non-leading classes - return div.getElementsByClassName("i").length === 2; - }); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== strundefined && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== strundefined ) { - return context.getElementsByTagName( tag ); - } - } : - function( tag, context ) { - var elem, - tmp = [], - i = 0, - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - div.innerHTML = ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowclip^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch(e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf.call( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf.call( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome<14 -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.unique( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !(--remaining) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - - -var strundefined = typeof undefined; - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownLast = i !== "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery(function() { - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -}); - - - - -(function() { - var div = document.createElement( "div" ); - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( elem ) { - var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute("classid") === noData; -}; - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[0], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data( this, key, value ); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; -}; -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - // Minified: var a,b,c - var input = document.createElement( "input" ), - div = document.createElement( "div" ), - fragment = document.createDocumentFragment(); - - // Setup - div.innerHTML = "
a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - div.innerHTML = ""; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - support.noCloneEvent = true; - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } -})(); - - -(function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) - for ( i in { submit: true, change: true, focusin: true }) { - eventName = "on" + i; - - if ( !(support[ i + "Bubbles" ] = eventName in window) ) { - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - col: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!support.noCloneEvent || !support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - deletedIds.push( id ); - } - } - } - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[i], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "