From d9022f63880ce039446fba8364f68e656b7bf4cb Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 3 May 2012 13:01:35 +0200 Subject: Update to MediaWiki 1.19.0 --- resources/Resources.php | 455 ++- resources/jquery.effects/jquery.effects.blind.js | 12 +- resources/jquery.effects/jquery.effects.bounce.js | 12 +- resources/jquery.effects/jquery.effects.clip.js | 12 +- resources/jquery.effects/jquery.effects.core.js | 131 +- resources/jquery.effects/jquery.effects.drop.js | 12 +- resources/jquery.effects/jquery.effects.explode.js | 10 +- resources/jquery.effects/jquery.effects.fade.js | 32 + resources/jquery.effects/jquery.effects.fold.js | 12 +- .../jquery.effects/jquery.effects.highlight.js | 10 +- resources/jquery.effects/jquery.effects.pulsate.js | 10 +- resources/jquery.effects/jquery.effects.scale.js | 14 +- resources/jquery.effects/jquery.effects.shake.js | 12 +- resources/jquery.effects/jquery.effects.slide.js | 14 +- .../jquery.effects/jquery.effects.transfer.js | 10 +- resources/jquery.tipsy/jquery.tipsy.css | 17 +- resources/jquery.tipsy/jquery.tipsy.js | 17 +- .../jquery.ui/i18n/jquery.ui.datepicker-af.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-ar.js | 17 +- .../jquery.ui/i18n/jquery.ui.datepicker-az.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-bg.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-bs.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-cs.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-da.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-de.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-el.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-en-GB.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-eo.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-et.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-eu.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-fa.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-fo.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-fr.js | 24 +- .../jquery.ui/i18n/jquery.ui.datepicker-gl.js | 23 + .../jquery.ui/i18n/jquery.ui.datepicker-he.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-hr.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-hu.js | 14 +- .../jquery.ui/i18n/jquery.ui.datepicker-ja.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-kk.js | 23 + .../jquery.ui/i18n/jquery.ui.datepicker-lb.js | 23 + .../jquery.ui/i18n/jquery.ui.datepicker-mk.js | 23 + .../jquery.ui/i18n/jquery.ui.datepicker-ml.js | 23 + .../jquery.ui/i18n/jquery.ui.datepicker-nl.js | 6 +- .../jquery.ui/i18n/jquery.ui.datepicker-no.js | 38 +- .../jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js | 6 +- .../jquery.ui/i18n/jquery.ui.datepicker-pt.js | 22 + .../jquery.ui/i18n/jquery.ui.datepicker-rm.js | 21 + .../jquery.ui/i18n/jquery.ui.datepicker-ro.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-ru.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-sk.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-sq.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-sr.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-sv.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-ta.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-th.js | 4 +- .../jquery.ui/i18n/jquery.ui.datepicker-uk.js | 3 +- .../jquery.ui/i18n/jquery.ui.datepicker-vi.js | 2 +- .../jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js | 2 +- resources/jquery.ui/jquery.ui.accordion.js | 14 +- resources/jquery.ui/jquery.ui.autocomplete.js | 16 +- resources/jquery.ui/jquery.ui.button.js | 103 +- resources/jquery.ui/jquery.ui.core.js | 52 +- resources/jquery.ui/jquery.ui.datepicker.js | 335 ++- resources/jquery.ui/jquery.ui.dialog.js | 45 +- resources/jquery.ui/jquery.ui.draggable.js | 106 +- resources/jquery.ui/jquery.ui.droppable.js | 17 +- resources/jquery.ui/jquery.ui.mouse.js | 18 +- resources/jquery.ui/jquery.ui.position.js | 54 +- resources/jquery.ui/jquery.ui.progressbar.js | 5 +- resources/jquery.ui/jquery.ui.resizable.js | 40 +- resources/jquery.ui/jquery.ui.selectable.js | 13 +- resources/jquery.ui/jquery.ui.slider.js | 62 +- resources/jquery.ui/jquery.ui.sortable.js | 31 +- resources/jquery.ui/jquery.ui.tabs.js | 4 +- resources/jquery.ui/jquery.ui.widget.js | 32 +- .../themes/default/images/ui-anim_basic_16x16.gif | Bin 1553 -> 0 bytes .../default/images/ui-bg_flat_55_fbf9ee_40x100.png | Bin 182 -> 0 bytes .../default/images/ui-bg_flat_65_ffffff_40x100.png | Bin 178 -> 0 bytes .../default/images/ui-bg_flat_75_cccccc_40x100.png | Bin 180 -> 0 bytes .../default/images/ui-bg_flat_75_dadada_40x100.png | Bin 180 -> 0 bytes .../default/images/ui-bg_flat_75_e6e6e6_40x100.png | Bin 180 -> 0 bytes .../default/images/ui-bg_flat_95_fef1ec_40x100.png | Bin 182 -> 0 bytes .../default/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../default/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../default/images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../default/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../default/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../default/images/ui-icons_222222_256x240.png | Bin 4369 -> 4369 bytes .../default/images/ui-icons_2e83ff_256x240.png | Bin 5355 -> 4369 bytes .../default/images/ui-icons_454545_256x240.png | Bin 4369 -> 4369 bytes .../default/images/ui-icons_888888_256x240.png | Bin 4369 -> 4369 bytes .../default/images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 4369 bytes .../themes/default/jquery.ui.accordion.css | 17 +- .../themes/default/jquery.ui.autocomplete.css | 23 +- .../jquery.ui/themes/default/jquery.ui.button.css | 25 +- .../jquery.ui/themes/default/jquery.ui.core.css | 23 +- .../themes/default/jquery.ui.datepicker.css | 37 +- .../jquery.ui/themes/default/jquery.ui.dialog.css | 20 +- .../themes/default/jquery.ui.progressbar.css | 13 +- .../themes/default/jquery.ui.resizable.css | 13 +- .../themes/default/jquery.ui.selectable.css | 13 +- .../jquery.ui/themes/default/jquery.ui.slider.css | 11 +- .../jquery.ui/themes/default/jquery.ui.tabs.css | 11 +- .../jquery.ui/themes/default/jquery.ui.theme.css | 83 +- .../themes/vector/images/button-disabled-green.png | Bin 126 -> 1033 bytes .../themes/vector/images/button-down-green.png | Bin 170 -> 1042 bytes .../themes/vector/images/button-off-green.png | Bin 216 -> 1035 bytes .../themes/vector/images/button-over-green.png | Bin 216 -> 1035 bytes .../themes/vector/jquery.ui.datepicker.css | 2 +- .../jquery.ui/themes/vector/jquery.ui.dialog.css | 2 +- .../images/jquery.arrowSteps.divider-ltr.png | Bin 0 -> 307 bytes .../images/jquery.arrowSteps.divider-rtl.png | Bin 0 -> 310 bytes .../jquery/images/jquery.arrowSteps.head-ltr.png | Bin 0 -> 939 bytes .../jquery/images/jquery.arrowSteps.head-rtl.png | Bin 0 -> 1006 bytes .../jquery/images/jquery.arrowSteps.tail-ltr.png | Bin 0 -> 338 bytes .../jquery/images/jquery.arrowSteps.tail-rtl.png | Bin 0 -> 485 bytes resources/jquery/images/marker.png | Bin 0 -> 652 bytes resources/jquery/images/mask.png | Bin 0 -> 2020 bytes resources/jquery/images/spinner.gif | Bin 0 -> 4648 bytes resources/jquery/images/wheel.png | Bin 0 -> 11733 bytes resources/jquery/jquery.arrowSteps.css | 45 + resources/jquery/jquery.arrowSteps.js | 81 + resources/jquery/jquery.autoEllipsis.js | 8 +- resources/jquery/jquery.byteLimit.js | 61 +- resources/jquery/jquery.checkboxShiftClick.js | 6 +- resources/jquery/jquery.client.js | 34 +- resources/jquery/jquery.collapsibleTabs.js | 10 +- resources/jquery/jquery.color.js | 8 +- resources/jquery/jquery.cycle.all.js | 1529 ++++++++++ resources/jquery/jquery.expandableField.js | 2 +- resources/jquery/jquery.farbtastic.css | 54 + resources/jquery/jquery.farbtastic.js | 286 ++ resources/jquery/jquery.footHovzer.css | 6 + resources/jquery/jquery.footHovzer.js | 45 + resources/jquery/jquery.form.js | 310 +- resources/jquery/jquery.js | 3168 +++++++++++--------- resources/jquery/jquery.makeCollapsible.js | 52 +- resources/jquery/jquery.messageBox.js | 20 +- resources/jquery/jquery.mockjax.js | 382 +++ resources/jquery/jquery.mw-jump.js | 15 + resources/jquery/jquery.mwExtension.js | 121 + resources/jquery/jquery.mwPrototypes.js | 120 - resources/jquery/jquery.placeholder.js | 4 +- resources/jquery/jquery.qunit.completenessTest.js | 36 +- resources/jquery/jquery.qunit.css | 21 +- resources/jquery/jquery.qunit.js | 783 +++-- resources/jquery/jquery.spinner.css | 12 + resources/jquery/jquery.spinner.js | 44 + resources/jquery/jquery.suggestions.css | 13 +- resources/jquery/jquery.suggestions.js | 150 +- resources/jquery/jquery.tabIndex.js | 8 +- resources/jquery/jquery.tablesorter.css | 12 +- resources/jquery/jquery.tablesorter.js | 15 +- resources/jquery/jquery.textSelection.js | 116 +- resources/jquery/jquery.validate.js | 1166 +++++++ resources/jquery/jquery.xmldom.js | 46 + .../mediawiki.action/mediawiki.action.edit.js | 165 +- .../mediawiki.action/mediawiki.action.history.js | 135 +- .../mediawiki.action.view.dblClickEdit.js | 12 + .../mediawiki.action.view.metadata.js | 2 +- .../mediawiki.action.watch.ajax.js | 271 +- resources/mediawiki.api/mediawiki.api.category.js | 105 + resources/mediawiki.api/mediawiki.api.edit.js | 119 + resources/mediawiki.api/mediawiki.api.js | 224 ++ resources/mediawiki.api/mediawiki.api.parse.js | 31 + .../mediawiki.api/mediawiki.api.titleblacklist.js | 51 + resources/mediawiki.api/mediawiki.api.watch.js | 58 + resources/mediawiki.language/languages/cs.js | 2 - resources/mediawiki.language/languages/lt.js | 3 +- resources/mediawiki.language/languages/mk.js | 2 +- resources/mediawiki.language/languages/se.js | 10 +- resources/mediawiki.language/languages/sma.js | 11 +- resources/mediawiki.language/mediawiki.language.js | 30 +- .../mediawiki.page/images/AJAXCategorySprite.png | Bin 384 -> 0 bytes .../mediawiki.page.ajaxCategories.css | 64 - resources/mediawiki.page/mediawiki.page.ready.js | 2 +- resources/mediawiki.page/mediawiki.page.startup.js | 14 +- .../mediawiki.special.changeemail.css | 17 + .../mediawiki.special.changeemail.js | 40 + .../mediawiki.special.changeslist.css | 9 +- .../mediawiki.special.javaScriptTest.js | 33 + .../mediawiki.special.movePage.js | 2 +- .../mediawiki.special.preferences.css | 21 - .../mediawiki.special.preferences.js | 43 +- .../mediawiki.special.recentchanges.js | 8 +- .../mediawiki.special/mediawiki.special.search.css | 10 +- .../mediawiki.special/mediawiki.special.search.js | 4 +- .../mediawiki.special/mediawiki.special.upload.js | 83 +- resources/mediawiki/mediawiki.Uri.js | 327 +- resources/mediawiki/mediawiki.debug.css | 185 ++ resources/mediawiki/mediawiki.debug.init.js | 3 + resources/mediawiki/mediawiki.debug.js | 351 +++ resources/mediawiki/mediawiki.feedback.css | 9 + resources/mediawiki/mediawiki.feedback.js | 242 ++ resources/mediawiki/mediawiki.feedback.spinner.gif | Bin 0 -> 1108 bytes resources/mediawiki/mediawiki.htmlform.js | 6 +- resources/mediawiki/mediawiki.jqueryMsg.js | 685 +++++ resources/mediawiki/mediawiki.jqueryMsg.peg | 76 + resources/mediawiki/mediawiki.js | 2342 ++++++++------- resources/mediawiki/mediawiki.log.js | 95 +- resources/mediawiki/mediawiki.user.js | 12 +- resources/mediawiki/mediawiki.util.js | 410 +-- 205 files changed, 12536 insertions(+), 4935 deletions(-) create mode 100644 resources/jquery.effects/jquery.effects.fade.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-gl.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-lb.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-mk.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-ml.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-pt.js create mode 100644 resources/jquery.ui/i18n/jquery.ui.datepicker-rm.js delete mode 100644 resources/jquery.ui/themes/default/images/ui-anim_basic_16x16.gif delete mode 100644 resources/jquery.ui/themes/default/images/ui-bg_flat_55_fbf9ee_40x100.png delete mode 100644 resources/jquery.ui/themes/default/images/ui-bg_flat_65_ffffff_40x100.png delete mode 100644 resources/jquery.ui/themes/default/images/ui-bg_flat_75_cccccc_40x100.png delete mode 100644 resources/jquery.ui/themes/default/images/ui-bg_flat_75_dadada_40x100.png delete mode 100644 resources/jquery.ui/themes/default/images/ui-bg_flat_75_e6e6e6_40x100.png delete mode 100644 resources/jquery.ui/themes/default/images/ui-bg_flat_95_fef1ec_40x100.png create mode 100644 resources/jquery.ui/themes/default/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 resources/jquery.ui/themes/default/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 resources/jquery.ui/themes/default/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 resources/jquery.ui/themes/default/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 resources/jquery.ui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 resources/jquery.ui/themes/default/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 resources/jquery/images/jquery.arrowSteps.divider-ltr.png create mode 100644 resources/jquery/images/jquery.arrowSteps.divider-rtl.png create mode 100644 resources/jquery/images/jquery.arrowSteps.head-ltr.png create mode 100644 resources/jquery/images/jquery.arrowSteps.head-rtl.png create mode 100644 resources/jquery/images/jquery.arrowSteps.tail-ltr.png create mode 100644 resources/jquery/images/jquery.arrowSteps.tail-rtl.png create mode 100644 resources/jquery/images/marker.png create mode 100644 resources/jquery/images/mask.png create mode 100644 resources/jquery/images/spinner.gif create mode 100644 resources/jquery/images/wheel.png create mode 100644 resources/jquery/jquery.arrowSteps.css create mode 100644 resources/jquery/jquery.arrowSteps.js create mode 100644 resources/jquery/jquery.cycle.all.js create mode 100644 resources/jquery/jquery.farbtastic.css create mode 100644 resources/jquery/jquery.farbtastic.js create mode 100644 resources/jquery/jquery.footHovzer.css create mode 100644 resources/jquery/jquery.footHovzer.js create mode 100644 resources/jquery/jquery.mockjax.js create mode 100644 resources/jquery/jquery.mw-jump.js create mode 100644 resources/jquery/jquery.mwExtension.js delete mode 100644 resources/jquery/jquery.mwPrototypes.js create mode 100644 resources/jquery/jquery.spinner.css create mode 100644 resources/jquery/jquery.spinner.js create mode 100644 resources/jquery/jquery.validate.js create mode 100644 resources/jquery/jquery.xmldom.js create mode 100644 resources/mediawiki.action/mediawiki.action.view.dblClickEdit.js create mode 100644 resources/mediawiki.api/mediawiki.api.category.js create mode 100644 resources/mediawiki.api/mediawiki.api.edit.js create mode 100644 resources/mediawiki.api/mediawiki.api.js create mode 100644 resources/mediawiki.api/mediawiki.api.parse.js create mode 100644 resources/mediawiki.api/mediawiki.api.titleblacklist.js create mode 100644 resources/mediawiki.api/mediawiki.api.watch.js delete mode 100644 resources/mediawiki.page/images/AJAXCategorySprite.png delete mode 100644 resources/mediawiki.page/mediawiki.page.ajaxCategories.css create mode 100644 resources/mediawiki.special/mediawiki.special.changeemail.css create mode 100644 resources/mediawiki.special/mediawiki.special.changeemail.js create mode 100644 resources/mediawiki.special/mediawiki.special.javaScriptTest.js delete mode 100644 resources/mediawiki.special/mediawiki.special.preferences.css create mode 100644 resources/mediawiki/mediawiki.debug.css create mode 100644 resources/mediawiki/mediawiki.debug.init.js create mode 100644 resources/mediawiki/mediawiki.debug.js create mode 100644 resources/mediawiki/mediawiki.feedback.css create mode 100644 resources/mediawiki/mediawiki.feedback.js create mode 100644 resources/mediawiki/mediawiki.feedback.spinner.gif create mode 100644 resources/mediawiki/mediawiki.jqueryMsg.js create mode 100644 resources/mediawiki/mediawiki.jqueryMsg.peg (limited to 'resources') diff --git a/resources/Resources.php b/resources/Resources.php index 940d646d..ca64263a 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -2,7 +2,7 @@ return array( - /* Special resources who have their own classes */ + /* Special modules who have their own classes */ 'site' => array( 'class' => 'ResourceLoaderSiteModule' ), 'noscript' => array( 'class' => 'ResourceLoaderNoscriptModule' ), @@ -10,19 +10,35 @@ return array( 'user' => array( 'class' => 'ResourceLoaderUserModule' ), 'user.groups' => array( 'class' => 'ResourceLoaderUserGroupsModule' ), 'user.options' => array( 'class' => 'ResourceLoaderUserOptionsModule' ), + 'user.cssprefs' => array( 'class' => 'ResourceLoaderUserCSSPrefsModule' ), 'user.tokens' => array( 'class' => 'ResourceLoaderUserTokensModule' ), 'filepage' => array( 'class' => 'ResourceLoaderFilePageModule' ), /* Skins */ - 'skins.vector' => array( - 'styles' => array( 'vector/screen.css' => array( 'media' => 'screen' ) ), - 'scripts' => 'vector/vector.js', + 'skins.chick' => array( + 'styles' => array( 'chick/main.css' => array( 'media' => 'screen, handheld' ) ), + 'remoteBasePath' => $GLOBALS['wgStylePath'], + 'localBasePath' => $GLOBALS['wgStyleDirectory'], + ), + 'skins.cologneblue' => array( + 'styles' => array( 'cologneblue/screen.css' => array( 'media' => 'screen' ) ), + 'remoteBasePath' => $GLOBALS['wgStylePath'], + 'localBasePath' => $GLOBALS['wgStyleDirectory'], + ), + 'skins.modern' => array( + 'styles' => array( + 'modern/main.css' => array( 'media' => 'screen' ), + 'modern/print.css' => array( 'media' => 'print' ), + ), 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], ), 'skins.monobook' => array( 'styles' => array( + 'common/commonElements.css' => array( 'media' => 'screen' ), + 'common/commonContent.css' => array( 'media' => 'screen' ), + 'common/commonInterface.css' => array( 'media' => 'screen' ), 'monobook/main.css' => array( 'media' => 'screen' ), ), 'remoteBasePath' => $GLOBALS['wgStylePath'], @@ -30,6 +46,9 @@ return array( ), 'skins.archlinux' => array( 'styles' => array( + 'common/commonElements.css' => array( 'media' => 'screen' ), + 'common/commonContent.css' => array( 'media' => 'screen' ), + 'common/commonInterface.css' => array( 'media' => 'screen' ), 'archlinux/main.css' => array( 'media' => 'screen' ), 'archlinux/archnavbar.css' => array( 'media' => 'screen' ), 'archlinux/arch.css' => array( 'media' => 'screen' ), @@ -38,36 +57,29 @@ return array( 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], ), + 'skins.nostalgia' => array( + 'styles' => array( 'nostalgia/screen.css' => array( 'media' => 'screen' ) ), + 'remoteBasePath' => $GLOBALS['wgStylePath'], + 'localBasePath' => $GLOBALS['wgStyleDirectory'], + ), 'skins.simple' => array( 'styles' => array( 'simple/main.css' => array( 'media' => 'screen' ) ), 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], ), - 'skins.chick' => array( - 'styles' => array( 'chick/main.css' => array( 'media' => 'screen,handheld' ) ), + 'skins.standard' => array( + 'styles' => array( 'common/wikistandard.css' => array( 'media' => 'screen' ) ), 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], ), - 'skins.modern' => array( + 'skins.vector' => array( 'styles' => array( - 'modern/main.css' => array( 'media' => 'screen' ), - 'modern/print.css' => array( 'media' => 'print' ), + 'common/commonElements.css' => array( 'media' => 'screen' ), + 'common/commonContent.css' => array( 'media' => 'screen' ), + 'common/commonInterface.css' => array( 'media' => 'screen' ), + 'vector/screen.css' => array( 'media' => 'screen' ), ), - 'remoteBasePath' => $GLOBALS['wgStylePath'], - 'localBasePath' => $GLOBALS['wgStyleDirectory'], - ), - 'skins.cologneblue' => array( - 'styles' => array( 'cologneblue/screen.css' => array( 'media' => 'screen' ) ), - 'remoteBasePath' => $GLOBALS['wgStylePath'], - 'localBasePath' => $GLOBALS['wgStyleDirectory'], - ), - 'skins.nostalgia' => array( - 'styles' => array( 'nostalgia/screen.css' => array( 'media' => 'screen' ) ), - 'remoteBasePath' => $GLOBALS['wgStylePath'], - 'localBasePath' => $GLOBALS['wgStyleDirectory'], - ), - 'skins.standard' => array( - 'styles' => array( 'common/wikistandard.css' => array( 'media' => 'screen' ) ), + 'scripts' => 'vector/vector.js', 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], ), @@ -76,17 +88,21 @@ return array( 'jquery' => array( 'scripts' => 'resources/jquery/jquery.js', - 'debugRaw' => false + 'debugRaw' => false, ), /* jQuery Plugins */ - 'jquery.async' => array( - 'scripts' => 'resources/jquery/jquery.async.js', - ), 'jquery.appear' => array( 'scripts' => 'resources/jquery/jquery.appear.js', ), + 'jquery.arrowSteps' => array( + 'scripts' => 'resources/jquery/jquery.arrowSteps.js', + 'styles' => 'resources/jquery/jquery.arrowSteps.css', + ), + 'jquery.async' => array( + 'scripts' => 'resources/jquery/jquery.async.js', + ), 'jquery.autoEllipsis' => array( 'scripts' => 'resources/jquery/jquery.autoEllipsis.js', 'dependencies' => 'jquery.highlightText', @@ -107,13 +123,13 @@ return array( 'jquery.collapsibleTabs' => array( 'scripts' => 'resources/jquery/jquery.collapsibleTabs.js', ), - 'jquery.colorUtil' => array( - 'scripts' => 'resources/jquery/jquery.colorUtil.js', - ), 'jquery.color' => array( 'scripts' => 'resources/jquery/jquery.color.js', 'dependencies' => 'jquery.colorUtil', ), + 'jquery.colorUtil' => array( + 'scripts' => 'resources/jquery/jquery.colorUtil.js', + ), 'jquery.cookie' => array( 'scripts' => 'resources/jquery/jquery.cookie.js', ), @@ -124,6 +140,15 @@ return array( 'scripts' => 'resources/jquery/jquery.expandableField.js', 'dependencies' => 'jquery.delayedBind', ), + 'jquery.farbtastic' => array( + 'scripts' => 'resources/jquery/jquery.farbtastic.js', + 'styles' => 'resources/jquery/jquery.farbtastic.css', + 'dependencies' => 'jquery.colorUtil', + ), + 'jquery.footHovzer' => array( + 'scripts' => 'resources/jquery/jquery.footHovzer.js', + 'styles' => 'resources/jquery/jquery.footHovzer.css', + ), 'jquery.form' => array( 'scripts' => 'resources/jquery/jquery.form.js', ), @@ -136,13 +161,6 @@ return array( 'jquery.hoverIntent' => array( 'scripts' => 'resources/jquery/jquery.hoverIntent.js', ), - 'jquery.messageBox' => array( - 'scripts' => 'resources/jquery/jquery.messageBox.js', - 'styles' => 'resources/jquery/jquery.messageBox.css', - ), - 'jquery.placeholder' => array( - 'scripts' => 'resources/jquery/jquery.placeholder.js', - ), 'jquery.json' => array( 'scripts' => 'resources/jquery/jquery.json.js', ), @@ -154,12 +172,34 @@ return array( 'styles' => 'resources/jquery/jquery.makeCollapsible.css', 'messages' => array( 'collapsible-expand', 'collapsible-collapse' ), ), - 'jquery.mwPrototypes' => array( - 'scripts' => 'resources/jquery/jquery.mwPrototypes.js', + 'jquery.messageBox' => array( + 'scripts' => 'resources/jquery/jquery.messageBox.js', + 'styles' => 'resources/jquery/jquery.messageBox.css', + ), + 'jquery.mockjax' => array( + 'scripts' => 'resources/jquery/jquery.mockjax.js', + ), + 'jquery.mw-jump' => array( + 'scripts' => 'resources/jquery/jquery.mw-jump.js', + ), + 'jquery.mwExtension' => array( + 'scripts' => 'resources/jquery/jquery.mwExtension.js', + ), + 'jquery.placeholder' => array( + 'scripts' => 'resources/jquery/jquery.placeholder.js', ), 'jquery.qunit' => array( 'scripts' => 'resources/jquery/jquery.qunit.js', 'styles' => 'resources/jquery/jquery.qunit.css', + 'position' => 'top', + ), + 'jquery.qunit.completenessTest' => array( + 'scripts' => 'resources/jquery/jquery.qunit.completenessTest.js', + 'dependencies' => 'jquery.qunit', + ), + 'jquery.spinner' => array( + 'scripts' => 'resources/jquery/jquery.spinner.js', + 'styles' => 'resources/jquery/jquery.spinner.css', ), 'jquery.suggestions' => array( 'scripts' => 'resources/jquery/jquery.suggestions.js', @@ -177,6 +217,15 @@ return array( 'jquery.textSelection' => array( 'scripts' => 'resources/jquery/jquery.textSelection.js', ), + 'jquery.validate' => array( + 'scripts' => 'resources/jquery/jquery.validate.js', + ), + 'jquery.xmldom' => array( + 'scripts' => 'resources/jquery/jquery.xmldom.js', + ), + + /* jQuery Tipsy */ + 'jquery.tipsy' => array( 'scripts' => 'resources/jquery.tipsy/jquery.tipsy.js', 'styles' => 'resources/jquery.tipsy/jquery.tipsy.css', @@ -305,6 +354,7 @@ return array( 'fo' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-fo.js', 'fr-ch' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js', 'fr' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-fr.js', + 'gl' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-gl.js', 'he' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-he.js', 'hr' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-hr.js', 'hu' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-hu.js', @@ -313,14 +363,20 @@ return array( 'is' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-is.js', 'it' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-it.js', 'ja' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js', + 'kk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js', 'ko' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ko.js', + 'lb' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-lb.js', 'lt' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-lt.js', 'lv' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-lv.js', + 'mk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-mk.js', + 'ml' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ml.js', 'ms' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ms.js', 'nl' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-nl.js', 'no' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-no.js', 'pl' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-pl.js', + 'pt' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-pt.js', 'pt-br' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js', + 'rm' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-rm.js', 'ro' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ro.js', 'ru' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ru.js', 'sk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-sk.js', @@ -415,6 +471,11 @@ return array( 'dependencies' => 'jquery.effects.core', 'group' => 'jquery.ui', ), + 'jquery.effects.fade' => array( + 'scripts' => 'resources/jquery.effects/jquery.effects.fade.js', + 'dependencies' => 'jquery.effects.core', + 'group' => 'jquery.ui', + ), 'jquery.effects.fold' => array( 'scripts' => 'resources/jquery.effects/jquery.effects.fold.js', 'dependencies' => 'jquery.effects.core', @@ -458,48 +519,113 @@ return array( 'debugScripts' => 'resources/mediawiki/mediawiki.log.js', 'debugRaw' => false, ), - 'mediawiki.Title' => array( - 'scripts' => 'resources/mediawiki/mediawiki.Title.js', + 'mediawiki.api' => array( + 'scripts' => 'resources/mediawiki.api/mediawiki.api.js', 'dependencies' => 'mediawiki.util', ), - 'mediawiki.Uri' => array( - 'scripts' => 'resources/mediawiki/mediawiki.Uri.js', + 'mediawiki.api.category' => array( + 'scripts' => 'resources/mediawiki.api/mediawiki.api.category.js', + 'dependencies' => array( + 'mediawiki.api', + 'mediawiki.Title' + ), + ), + 'mediawiki.api.edit' => array( + 'scripts' => 'resources/mediawiki.api/mediawiki.api.edit.js', + 'dependencies' => array( + 'mediawiki.api', + 'mediawiki.Title' + ), + ), + 'mediawiki.api.parse' => array( + 'scripts' => 'resources/mediawiki.api/mediawiki.api.parse.js', + 'dependencies' => 'mediawiki.api', + ), + 'mediawiki.api.titleblacklist' => array( + 'scripts' => 'resources/mediawiki.api/mediawiki.api.titleblacklist.js', + 'dependencies' => array( + 'mediawiki.api', + 'mediawiki.Title' + ), + ), + 'mediawiki.api.watch' => array( + 'scripts' => 'resources/mediawiki.api/mediawiki.api.watch.js', + 'dependencies' => array('mediawiki.api', 'mediawiki.user'), + ), + 'mediawiki.debug' => array( + 'scripts' => 'resources/mediawiki/mediawiki.debug.js', + 'styles' => 'resources/mediawiki/mediawiki.debug.css', + 'dependencies' => 'jquery.footHovzer', + 'position' => 'bottom', + ), + 'mediawiki.debug.init' => array( + 'scripts' => 'resources/mediawiki/mediawiki.debug.init.js', + 'dependencies' => 'mediawiki.debug', + // Uses a custom mw.config variable that is set in debughtml, + // must be loaded on the bottom + 'position' => 'bottom', + ), + 'mediawiki.feedback' => array( + 'scripts' => 'resources/mediawiki/mediawiki.feedback.js', + 'styles' => 'resources/mediawiki/mediawiki.feedback.css', + 'dependencies' => array( + 'mediawiki.api.edit', + 'mediawiki.Title', + 'mediawiki.jqueryMsg', + 'jquery.ui.dialog', + ), + 'messages' => array( + 'feedback-bugornote', + 'feedback-subject', + 'feedback-message', + 'feedback-cancel', + 'feedback-submit', + 'feedback-adding', + 'feedback-error1', + 'feedback-error2', + 'feedback-error3', + 'feedback-thanks', + 'feedback-close', + 'feedback-bugcheck', + 'feedback-bugnew', + ), ), 'mediawiki.htmlform' => array( 'scripts' => 'resources/mediawiki/mediawiki.htmlform.js', ), + 'mediawiki.Title' => array( + 'scripts' => 'resources/mediawiki/mediawiki.Title.js', + 'dependencies' => 'mediawiki.util', + ), + 'mediawiki.Uri' => array( + 'scripts' => 'resources/mediawiki/mediawiki.Uri.js', + ), 'mediawiki.user' => array( 'scripts' => 'resources/mediawiki/mediawiki.user.js', 'dependencies' => array( 'jquery.cookie', ), ), - 'mediawiki.page.startup' => array( - 'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js', - 'dependencies' => array( - 'jquery.client', - ), - 'position' => 'top', - ), - 'mediawiki.page.ready' => array( - 'scripts' => 'resources/mediawiki.page/mediawiki.page.ready.js', - 'dependencies' => array( - 'jquery.checkboxShiftClick', - 'jquery.makeCollapsible', - 'jquery.placeholder', - ), - ), 'mediawiki.util' => array( 'scripts' => 'resources/mediawiki/mediawiki.util.js', 'dependencies' => array( 'jquery.client', 'jquery.cookie', 'jquery.messageBox', - 'jquery.mwPrototypes', + 'jquery.mwExtension', ), + 'messages' => array( 'showtoc', 'hidetoc' ), + 'position' => 'top', // For $wgPreloadJavaScriptMwUtil ), - 'mediawiki.libs.jpegmeta' => array( - 'scripts' => 'resources/mediawiki.libs/mediawiki.libs.jpegmeta.js', + + /* MediaWiki Action */ + + 'mediawiki.action.edit' => array( + 'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.js', + 'dependencies' => array( + 'jquery.textSelection', + 'jquery.byteLimit', + ), ), 'mediawiki.action.history' => array( 'scripts' => 'resources/mediawiki.action/mediawiki.action.history.js', @@ -510,22 +636,26 @@ return array( 'styles' => 'resources/mediawiki.action/mediawiki.action.history.diff.css', 'group' => 'mediawiki.action.history', ), - 'mediawiki.action.edit' => array( - 'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.js', - 'dependencies' => array( - 'jquery.textSelection', - 'jquery.byteLimit', + 'mediawiki.action.view.dblClickEdit' => array( + 'scripts' => 'resources/mediawiki.action/mediawiki.action.view.dblClickEdit.js', + 'dependencies' => 'mediawiki.util', + ), + 'mediawiki.action.view.metadata' => array( + 'scripts' => 'resources/mediawiki.action/mediawiki.action.view.metadata.js', + 'messages' => array( + 'metadata-expand', + 'metadata-collapse', ), ), 'mediawiki.action.view.rightClickEdit' => array( 'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js', ), - 'mediawiki.action.view.metadata' => array( - 'scripts' => 'resources/mediawiki.action/mediawiki.action.view.metadata.js', - 'messages' => array( 'metadata-expand', 'metadata-collapse' ), - ), 'mediawiki.action.watch.ajax' => array( 'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js', + 'dependencies' => array( + 'mediawiki.api.watch', + 'mediawiki.util', + ), 'messages' => array( 'watch', 'unwatch', @@ -537,53 +667,7 @@ return array( ), ), - /* Special pages */ - - 'mediawiki.special' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.js', - 'styles' => 'resources/mediawiki.special/mediawiki.special.css', - ), - 'mediawiki.special.preferences' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.preferences.js', - 'styles' => 'resources/mediawiki.special/mediawiki.special.preferences.css', - 'messages' => array( 'email-address-validity-valid', 'email-address-validity-invalid' ), - ), - 'mediawiki.special.changeslist' => array( - 'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css', - 'dependencies' => array( 'jquery.makeCollapsible' ), - ), - 'mediawiki.special.search' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js', - 'styles' => 'resources/mediawiki.special/mediawiki.special.search.css', - ), - 'mediawiki.special.block' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js', - ), - 'mediawiki.special.undelete' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js', - ), - 'mediawiki.special.movePage' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.movePage.js', - 'dependencies' => 'jquery.byteLimit', - ), - 'mediawiki.special.recentchanges' => array( - 'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js', - 'dependencies' => array( 'mediawiki.special' ), - 'position' => 'top', - ), - 'mediawiki.special.upload' => array( - // @TODO: merge in remainder of mediawiki.legacy.upload - 'scripts' => 'resources/mediawiki.special/mediawiki.special.upload.js', - 'messages' => array( - 'widthheight', - 'size-bytes', - 'size-kilobytes', - 'size-megabytes', - 'size-gigabytes', - 'largefileserver', - ), - 'dependencies' => array( 'mediawiki.libs.jpegmeta' ), - ), + /* MediaWiki Language */ 'mediawiki.language' => array( 'scripts' => 'resources/mediawiki.language/mediawiki.language.js', @@ -638,13 +722,132 @@ return array( ), ), - /* mediawiki Legacy */ + 'mediawiki.jqueryMsg' => array( + 'dependencies' => array( 'mediawiki.language', 'mediawiki.util' ), + 'scripts' => 'resources/mediawiki/mediawiki.jqueryMsg.js' + ), + + /* MediaWiki Libs */ + + 'mediawiki.libs.jpegmeta' => array( + 'scripts' => 'resources/mediawiki.libs/mediawiki.libs.jpegmeta.js', + ), + + /* MediaWiki Page */ + + 'mediawiki.page.ready' => array( + 'scripts' => 'resources/mediawiki.page/mediawiki.page.ready.js', + 'dependencies' => array( + 'jquery.checkboxShiftClick', + 'jquery.makeCollapsible', + 'jquery.placeholder', + 'jquery.mw-jump', + 'mediawiki.util', + ), + ), + 'mediawiki.page.startup' => array( + 'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js', + 'dependencies' => array( + 'jquery.client', + 'mediawiki.util', + ), + 'position' => 'top', + ), + + + /* MediaWiki Special pages */ + + 'mediawiki.special' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.js', + 'styles' => 'resources/mediawiki.special/mediawiki.special.css', + ), + 'mediawiki.special.block' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js', + 'dependencies' => array( + 'mediawiki.util', + ), + ), + 'mediawiki.special.changeemail' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.changeemail.js', + 'styles' => 'resources/mediawiki.special/mediawiki.special.changeemail.css', + 'dependencies' => array( + 'mediawiki.util', + ), + 'messages' => array( + 'email-address-validity-valid', + 'email-address-validity-invalid', + ), + ), + 'mediawiki.special.changeslist' => array( + 'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css', + 'dependencies' => array( 'jquery.makeCollapsible' ), + ), + 'mediawiki.special.movePage' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.movePage.js', + 'dependencies' => 'jquery.byteLimit', + ), + 'mediawiki.special.preferences' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.preferences.js', + ), + 'mediawiki.special.recentchanges' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js', + 'dependencies' => array( 'mediawiki.special' ), + 'position' => 'top', + ), + 'mediawiki.special.search' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js', + 'styles' => 'resources/mediawiki.special/mediawiki.special.search.css', + ), + 'mediawiki.special.undelete' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js', + ), + 'mediawiki.special.upload' => array( + // @TODO: merge in remainder of mediawiki.legacy.upload + 'scripts' => 'resources/mediawiki.special/mediawiki.special.upload.js', + 'messages' => array( + 'widthheight', + 'size-bytes', + 'size-kilobytes', + 'size-megabytes', + 'size-gigabytes', + 'largefileserver', + ), + 'dependencies' => array( 'mediawiki.libs.jpegmeta', 'mediawiki.util' ), + ), + 'mediawiki.special.javaScriptTest' => array( + 'scripts' => 'resources/mediawiki.special/mediawiki.special.javaScriptTest.js', + 'messages' => array_merge( Skin::getSkinNameMessages(), array( + 'colon-separator', + 'javascripttest-pagetext-skins', + ) ), + 'dependencies' => array( 'jquery.qunit' ), + 'position' => 'top', + ), + + /* MediaWiki Tests */ + + 'mediawiki.tests.qunit.testrunner' => array( + 'scripts' => 'tests/qunit/data/testrunner.js', + 'dependencies' => array( + 'jquery.qunit', + 'jquery.qunit.completenessTest', + 'mediawiki.page.startup', + 'mediawiki.page.ready', + ), + 'position' => 'top', + ), + + /* MediaWiki Legacy */ 'mediawiki.legacy.ajax' => array( 'scripts' => 'common/ajax.js', 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], - 'dependencies' => 'mediawiki.legacy.wikibits', + 'dependencies' => array( + 'mediawiki.util', + 'mediawiki.legacy.wikibits', + ), + 'position' => 'top', // Temporary hack for legacy support ), 'mediawiki.legacy.commonPrint' => array( 'styles' => array( 'common/commonPrint.css' => array( 'media' => 'print' ) ), @@ -685,6 +888,7 @@ return array( 'mediawiki.legacy.wikibits', 'jquery.byteLimit', ), + 'position' => 'top', ), 'mediawiki.legacy.shared' => array( 'styles' => array( 'common/shared.css' => array( 'media' => 'screen' ) ), @@ -700,14 +904,19 @@ return array( 'scripts' => 'common/upload.js', 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], - 'dependencies' => 'mediawiki.legacy.wikibits', + 'dependencies' => array( + 'mediawiki.legacy.wikibits', + 'mediawiki.util', + ), ), 'mediawiki.legacy.wikibits' => array( 'scripts' => 'common/wikibits.js', 'remoteBasePath' => $GLOBALS['wgStylePath'], 'localBasePath' => $GLOBALS['wgStyleDirectory'], - 'dependencies' => 'mediawiki.language', - 'messages' => array( 'showtoc', 'hidetoc' ), + 'dependencies' => array( + 'mediawiki.util', + ), + 'position' => 'top', ), 'mediawiki.legacy.wikiprintable' => array( 'styles' => array( 'common/wikiprintable.css' => array( 'media' => 'print' ) ), diff --git a/resources/jquery.effects/jquery.effects.blind.js b/resources/jquery.effects/jquery.effects.blind.js index d9a3b06b..2ecbbed3 100644 --- a/resources/jquery.effects/jquery.effects.blind.js +++ b/resources/jquery.effects/jquery.effects.blind.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Blind 1.8.2 + * jQuery UI Effects Blind 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Blind * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.blind = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left']; + var el = $(this), props = ['position','top','bottom','left','right']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode diff --git a/resources/jquery.effects/jquery.effects.bounce.js b/resources/jquery.effects/jquery.effects.bounce.js index 010585bf..f8e44730 100644 --- a/resources/jquery.effects/jquery.effects.bounce.js +++ b/resources/jquery.effects/jquery.effects.bounce.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Bounce 1.8.2 + * jQuery UI Effects Bounce 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Bounce * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.bounce = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left']; + var el = $(this), props = ['position','top','bottom','left','right']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode diff --git a/resources/jquery.effects/jquery.effects.clip.js b/resources/jquery.effects/jquery.effects.clip.js index 796ba89e..74845c08 100644 --- a/resources/jquery.effects/jquery.effects.clip.js +++ b/resources/jquery.effects/jquery.effects.clip.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Clip 1.8.2 + * jQuery UI Effects Clip 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Clip * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.clip = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left','height','width']; + var el = $(this), props = ['position','top','bottom','left','right','height','width']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode diff --git a/resources/jquery.effects/jquery.effects.core.js b/resources/jquery.effects/jquery.effects.core.js index 4589fe21..7f568964 100644 --- a/resources/jquery.effects/jquery.effects.core.js +++ b/resources/jquery.effects/jquery.effects.core.js @@ -1,13 +1,13 @@ /* - * jQuery UI Effects 1.8.2 + * jQuery UI Effects 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/ */ -;jQuery.effects || (function($) { +;jQuery.effects || (function($, undefined) { $.effects = {}; @@ -19,7 +19,7 @@ $.effects = {}; // override the animation for color styles $.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', - 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], + 'borderRightColor', 'borderTopColor', 'borderColor', 'color', 'outlineColor'], function(i, attr) { $.fx.step[attr] = function(fx) { if (!fx.colorInit) { @@ -52,7 +52,7 @@ function getRGB(color) { return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)]; // Look for rgb(num%,num%,num%) - if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)%\s*,\s*([0-9]+(?:\.[0-9]+)?)%\s*\)/.exec(color)) + if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55]; // Look for #a0b1c2 @@ -231,13 +231,12 @@ $.effects.animateClass = function(value, duration, easing, callback) { easing = null; } - return this.each(function() { - + return this.queue(function() { var that = $(this), originalStyleAttr = that.attr('style') || ' ', originalStyle = filterStyles(getElementStyles.call(this)), newStyle, - className = that.attr('className'); + className = that.attr('class'); $.each(classAnimationActions, function(i, action) { if (value[action]) { @@ -245,20 +244,26 @@ $.effects.animateClass = function(value, duration, easing, callback) { } }); newStyle = filterStyles(getElementStyles.call(this)); - that.attr('className', className); - - that.animate(styleDifference(originalStyle, newStyle), duration, easing, function() { - $.each(classAnimationActions, function(i, action) { - if (value[action]) { that[action + 'Class'](value[action]); } - }); - // work around bug in IE by clearing the cssText before setting it - if (typeof that.attr('style') == 'object') { - that.attr('style').cssText = ''; - that.attr('style').cssText = originalStyleAttr; - } else { - that.attr('style', originalStyleAttr); + that.attr('class', className); + + that.animate(styleDifference(originalStyle, newStyle), { + queue: false, + duration: duration, + easing: easing, + complete: function() { + $.each(classAnimationActions, function(i, action) { + if (value[action]) { that[action + 'Class'](value[action]); } + }); + // work around bug in IE by clearing the cssText before setting it + if (typeof that.attr('style') == 'object') { + that.attr('style').cssText = ''; + that.attr('style').cssText = originalStyleAttr; + } else { + that.attr('style', originalStyleAttr); + } + if (callback) { callback.apply(this, arguments); } + $.dequeue( this ); } - if (callback) { callback.apply(this, arguments); } }); }); }; @@ -301,7 +306,7 @@ $.fn.extend({ /******************************************************************************/ $.extend($.effects, { - version: "1.8.2", + version: "1.8.17", // Saves a set of properties in a data storage save: function(element, set) { @@ -362,9 +367,16 @@ $.extend($.effects, { border: 'none', margin: 0, padding: 0 - }); + }), + active = document.activeElement; element.wrap(wrapper); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually loose the reference to the wrapped element // transfer positioning properties to the wrapper @@ -382,15 +394,25 @@ $.extend($.effects, { props[pos] = 'auto'; } }); - element.css({position: 'relative', top: 0, left: 0 }); + element.css({position: 'relative', top: 0, left: 0, right: 'auto', bottom: 'auto' }); } return wrapper.css(props).show(); }, removeWrapper: function(element) { - if (element.parent().is('.ui-effects-wrapper')) - return element.parent().replaceWith(element); + var parent, + active = document.activeElement; + + if (element.parent().is('.ui-effects-wrapper')) { + parent = element.parent().replaceWith(element); + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + return parent; + } + return element; }, @@ -418,44 +440,72 @@ function _normalizeArguments(effect, options, speed, callback) { speed = null; options = {}; } - if ($.isFunction(speed)) { - callback = speed; - speed = null; - } - if (typeof options == 'number' || $.fx.speeds[options]) { + if (typeof options == 'number' || $.fx.speeds[options]) { callback = speed; speed = options; options = {}; } + if ($.isFunction(speed)) { + callback = speed; + speed = null; + } options = options || {}; speed = speed || options.duration; speed = $.fx.off ? 0 : typeof speed == 'number' - ? speed : $.fx.speeds[speed] || $.fx.speeds._default; + ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default; callback = callback || options.complete; return [effect, options, speed, callback]; } +function standardSpeed( speed ) { + // valid standard speeds + if ( !speed || typeof speed === "number" || $.fx.speeds[ speed ] ) { + return true; + } + + // invalid strings - treat as "normal" speed + if ( typeof speed === "string" && !$.effects[ speed ] ) { + return true; + } + + return false; +} + $.fn.extend({ effect: function(effect, options, speed, callback) { var args = _normalizeArguments.apply(this, arguments), - // TODO: make effects takes actual parameters instead of a hash + // TODO: make effects take actual parameters instead of a hash args2 = { options: args[1], duration: args[2], callback: args[3] }, + mode = args2.options.mode, effectMethod = $.effects[effect]; - return effectMethod && !$.fx.off ? effectMethod.call(this, args2) : this; + if ( $.fx.off || !effectMethod ) { + // delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args2.duration, args2.callback ); + } else { + return this.each(function() { + if ( args2.callback ) { + args2.callback.call( this ); + } + }); + } + } + + return effectMethod.call(this, args2); }, _show: $.fn.show, show: function(speed) { - if (!speed || typeof speed == 'number' || $.fx.speeds[speed]) { + if ( standardSpeed( speed ) ) { return this._show.apply(this, arguments); } else { var args = _normalizeArguments.apply(this, arguments); @@ -466,7 +516,7 @@ $.fn.extend({ _hide: $.fn.hide, hide: function(speed) { - if (!speed || typeof speed == 'number' || $.fx.speeds[speed]) { + if ( standardSpeed( speed ) ) { return this._hide.apply(this, arguments); } else { var args = _normalizeArguments.apply(this, arguments); @@ -475,11 +525,10 @@ $.fn.extend({ } }, - // jQuery core overloads toggle and create _toggle + // jQuery core overloads toggle and creates _toggle __toggle: $.fn.toggle, toggle: function(speed) { - if (!speed || typeof speed == 'number' || $.fx.speeds[speed] || - typeof speed == 'boolean' || $.isFunction(speed)) { + if ( standardSpeed( speed ) || typeof speed === "boolean" || $.isFunction( speed ) ) { return this.__toggle.apply(this, arguments); } else { var args = _normalizeArguments.apply(this, arguments); diff --git a/resources/jquery.effects/jquery.effects.drop.js b/resources/jquery.effects/jquery.effects.drop.js index 0059c033..4bbd1087 100644 --- a/resources/jquery.effects/jquery.effects.drop.js +++ b/resources/jquery.effects/jquery.effects.drop.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Drop 1.8.2 + * jQuery UI Effects Drop 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Drop * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.drop = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left','opacity']; + var el = $(this), props = ['position','top','bottom','left','right','opacity']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode diff --git a/resources/jquery.effects/jquery.effects.explode.js b/resources/jquery.effects/jquery.effects.explode.js index 85ba1dcc..2c12fdb4 100644 --- a/resources/jquery.effects/jquery.effects.explode.js +++ b/resources/jquery.effects/jquery.effects.explode.js @@ -1,16 +1,16 @@ /* - * jQuery UI Effects Explode 1.8.2 + * jQuery UI Effects Explode 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Explode * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.explode = function(o) { diff --git a/resources/jquery.effects/jquery.effects.fade.js b/resources/jquery.effects/jquery.effects.fade.js new file mode 100644 index 00000000..bae63661 --- /dev/null +++ b/resources/jquery.effects/jquery.effects.fade.js @@ -0,0 +1,32 @@ +/* + * jQuery UI Effects Fade 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function( $, undefined ) { + +$.effects.fade = function(o) { + return this.queue(function() { + var elem = $(this), + mode = $.effects.setMode(elem, o.options.mode || 'hide'); + + elem.animate({ opacity: mode }, { + queue: false, + duration: o.duration, + easing: o.options.easing, + complete: function() { + (o.callback && o.callback.apply(this, arguments)); + elem.dequeue(); + } + }); + }); +}; + +})(jQuery); diff --git a/resources/jquery.effects/jquery.effects.fold.js b/resources/jquery.effects/jquery.effects.fold.js index 946831bf..8e732739 100644 --- a/resources/jquery.effects/jquery.effects.fold.js +++ b/resources/jquery.effects/jquery.effects.fold.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Fold 1.8.2 + * jQuery UI Effects Fold 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Fold * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.fold = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left']; + var el = $(this), props = ['position','top','bottom','left','right']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'hide'); // Set Mode diff --git a/resources/jquery.effects/jquery.effects.highlight.js b/resources/jquery.effects/jquery.effects.highlight.js index 5e03e9ec..306d515b 100644 --- a/resources/jquery.effects/jquery.effects.highlight.js +++ b/resources/jquery.effects/jquery.effects.highlight.js @@ -1,16 +1,16 @@ /* - * jQuery UI Effects Highlight 1.8.2 + * jQuery UI Effects Highlight 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Highlight * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.highlight = function(o) { return this.queue(function() { diff --git a/resources/jquery.effects/jquery.effects.pulsate.js b/resources/jquery.effects/jquery.effects.pulsate.js index 11c5af13..766690fb 100644 --- a/resources/jquery.effects/jquery.effects.pulsate.js +++ b/resources/jquery.effects/jquery.effects.pulsate.js @@ -1,16 +1,16 @@ /* - * jQuery UI Effects Pulsate 1.8.2 + * jQuery UI Effects Pulsate 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Pulsate * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.pulsate = function(o) { return this.queue(function() { diff --git a/resources/jquery.effects/jquery.effects.scale.js b/resources/jquery.effects/jquery.effects.scale.js index 1efb781a..4cb73822 100644 --- a/resources/jquery.effects/jquery.effects.scale.js +++ b/resources/jquery.effects/jquery.effects.scale.js @@ -1,16 +1,16 @@ /* - * jQuery UI Effects Scale 1.8.2 + * jQuery UI Effects Scale 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Scale * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.puff = function(o) { return this.queue(function() { @@ -84,8 +84,8 @@ $.effects.size = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left','width','height','overflow','opacity']; - var props1 = ['position','top','left','overflow','opacity']; // Always restore + var el = $(this), props = ['position','top','bottom','left','right','width','height','overflow','opacity']; + var props1 = ['position','top','bottom','left','right','overflow','opacity']; // Always restore var props2 = ['width','height','overflow']; // Copy for children var cProps = ['fontSize']; var vProps = ['borderTopWidth', 'borderBottomWidth', 'paddingTop', 'paddingBottom']; diff --git a/resources/jquery.effects/jquery.effects.shake.js b/resources/jquery.effects/jquery.effects.shake.js index 050894b4..b5a7352e 100644 --- a/resources/jquery.effects/jquery.effects.shake.js +++ b/resources/jquery.effects/jquery.effects.shake.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Shake 1.8.2 + * jQuery UI Effects Shake 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Shake * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.shake = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left']; + var el = $(this), props = ['position','top','bottom','left','right']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'effect'); // Set Mode diff --git a/resources/jquery.effects/jquery.effects.slide.js b/resources/jquery.effects/jquery.effects.slide.js index d0719a7f..e41869b9 100644 --- a/resources/jquery.effects/jquery.effects.slide.js +++ b/resources/jquery.effects/jquery.effects.slide.js @@ -1,23 +1,23 @@ /* - * jQuery UI Effects Slide 1.8.2 + * jQuery UI Effects Slide 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Slide * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.slide = function(o) { return this.queue(function() { // Create element - var el = $(this), props = ['position','top','left']; + var el = $(this), props = ['position','top','bottom','left','right']; // Set options var mode = $.effects.setMode(el, o.options.mode || 'show'); // Set Mode @@ -29,7 +29,7 @@ $.effects.slide = function(o) { var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left'; var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg'; var distance = o.options.distance || (ref == 'top' ? el.outerHeight({margin:true}) : el.outerWidth({margin:true})); - if (mode == 'show') el.css(ref, motion == 'pos' ? -distance : distance); // Shift + if (mode == 'show') el.css(ref, motion == 'pos' ? (isNaN(distance) ? "-" + distance : -distance) : distance); // Shift // Animation var animation = {}; diff --git a/resources/jquery.effects/jquery.effects.transfer.js b/resources/jquery.effects/jquery.effects.transfer.js index 4c212ca0..d51b9c43 100644 --- a/resources/jquery.effects/jquery.effects.transfer.js +++ b/resources/jquery.effects/jquery.effects.transfer.js @@ -1,16 +1,16 @@ /* - * jQuery UI Effects Transfer 1.8.2 + * jQuery UI Effects Transfer 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Effects/Transfer * * Depends: * jquery.effects.core.js */ -(function($) { +(function( $, undefined ) { $.effects.transfer = function(o) { return this.queue(function() { diff --git a/resources/jquery.tipsy/jquery.tipsy.css b/resources/jquery.tipsy/jquery.tipsy.css index 2e504c32..3680fbe2 100644 --- a/resources/jquery.tipsy/jquery.tipsy.css +++ b/resources/jquery.tipsy/jquery.tipsy.css @@ -11,7 +11,6 @@ border: solid 1px #a7d7f9; color: black; max-width: 15em; - text-align: left; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; @@ -30,36 +29,36 @@ width: 11px; height: 6px; } -.tipsy-n .tipsy-arrow { +/* @noflip */ .tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; } -.tipsy-nw .tipsy-arrow { +/* @noflip */ .tipsy-nw .tipsy-arrow { top: 1px; left: 10px; } -.tipsy-ne .tipsy-arrow { +/* @noflip */ .tipsy-ne .tipsy-arrow { top: 1px; right: 10px; } -.tipsy-s .tipsy-arrow { +/* @noflip */ .tipsy-s .tipsy-arrow { bottom: 0px; left: 50%; margin-left: -5px; background-position: bottom left; } -.tipsy-sw .tipsy-arrow { +/* @noflip */ .tipsy-sw .tipsy-arrow { bottom: 0px; left: 10px; background-position: bottom left; } -.tipsy-se .tipsy-arrow { +/* @noflip */ .tipsy-se .tipsy-arrow { bottom: 0px; right: 10px; background-position: bottom left; } -.tipsy-e .tipsy-arrow { +/* @noflip */ .tipsy-e .tipsy-arrow { top: 50%; margin-top: -5px; right: 1px; @@ -67,7 +66,7 @@ height: 11px; background-position: top right; } -.tipsy-w .tipsy-arrow { +/* @noflip */ .tipsy-w .tipsy-arrow { top: 50%; margin-top: -5px; left: 0px; diff --git a/resources/jquery.tipsy/jquery.tipsy.js b/resources/jquery.tipsy/jquery.tipsy.js index 7c808734..a9fcec8f 100644 --- a/resources/jquery.tipsy/jquery.tipsy.js +++ b/resources/jquery.tipsy/jquery.tipsy.js @@ -1,10 +1,17 @@ // tipsy, facebook style tooltips for jquery -// version 1.0.0a +// version 1.0.0a* // (c) 2008-2010 jason frame [jason@onehackoranother.com] -// releated under the MIT license +// released under the MIT license + +// * This installation of tipsy includes several local modifications to both Javascript and CSS. +// Please be careful when upgrading. (function($) { - + + function maybeCall(thing, ctx) { + return (typeof thing == 'function') ? (thing.call(ctx)) : thing; + }; + function fixTitle($ele) { if ($ele.attr('title') || typeof($ele.attr('original-title')) != 'string') { $ele.attr('original-title', $ele.attr('title') || '').removeAttr('title'); @@ -71,6 +78,9 @@ } $tip.css(tp).addClass('tipsy-' + gravity); + if (this.options.className) { + $tip.addClass(maybeCall(this.options.className, this.$element[0])); + } if (this.options.fade) { $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity}, 100); @@ -174,6 +184,7 @@ }; $.fn.tipsy.defaults = { + className: null, delayIn: 0, delayOut: 0, fade: true, diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-af.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-af.js index 43fbf6cd..0922ef7a 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-af.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-af.js @@ -1,4 +1,4 @@ -/* Afrikaans initialisation for the jQuery UI date picker plugin. */ +/* Afrikaans initialisation for the jQuery UI date picker plugin. */ /* Written by Renier Pretorius. */ jQuery(function($){ $.datepicker.regional['af'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ar.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ar.js index c799b48d..743a15db 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-ar.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-ar.js @@ -1,6 +1,5 @@ -/* Arabic Translation for jQuery UI date picker plugin. */ -/* Khaled Al Horani -- koko.dw@gmail.com */ -/* خالد الحوراني -- koko.dw@gmail.com */ +/* Arabic Translation for jQuery UI date picker plugin. */ +/* Khaled Alhourani -- me@khaledalhourani.com */ /* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */ jQuery(function($){ $.datepicker.regional['ar'] = { @@ -8,15 +7,15 @@ jQuery(function($){ prevText: '<السابق', nextText: 'التالي>', currentText: 'اليوم', - monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران', + monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'مايو', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], - dayNames: ['السبت', 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة'], - dayNamesShort: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], - dayNamesMin: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], + dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], + dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], weekHeader: 'أسبوع', dateFormat: 'dd/mm/yy', - firstDay: 0, + firstDay: 6, isRTL: true, showMonthAfterYear: false, yearSuffix: ''}; diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-az.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-az.js index b5434057..57802a40 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-az.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-az.js @@ -1,4 +1,4 @@ -/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Jamil Najafov (necefov33@gmail.com). */ jQuery(function($) { $.datepicker.regional['az'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-bg.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-bg.js index b5113f78..c19d20fb 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-bg.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-bg.js @@ -1,4 +1,4 @@ -/* Bulgarian initialisation for the jQuery UI date picker plugin. */ +/* Bulgarian initialisation for the jQuery UI date picker plugin. */ /* Written by Stoyan Kyosev (http://svest.org). */ jQuery(function($){ $.datepicker.regional['bg'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-bs.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-bs.js index 30ab826b..d4dc8b0e 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-bs.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-bs.js @@ -1,4 +1,4 @@ -/* Bosnian i18n for the jQuery UI date picker plugin. */ +/* Bosnian i18n for the jQuery UI date picker plugin. */ /* Written by Kenan Konjo. */ jQuery(function($){ $.datepicker.regional['bs'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-cs.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-cs.js index c3c07ea6..9805bcdb 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-cs.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-cs.js @@ -1,4 +1,4 @@ -/* Czech initialisation for the jQuery UI date picker plugin. */ +/* Czech initialisation for the jQuery UI date picker plugin. */ /* Written by Tomas Muller (tomas@tomas-muller.net). */ jQuery(function($){ $.datepicker.regional['cs'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-da.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-da.js index 4a99a583..176044e1 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-da.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-da.js @@ -1,4 +1,4 @@ -/* Danish initialisation for the jQuery UI date picker plugin. */ +/* Danish initialisation for the jQuery UI date picker plugin. */ /* Written by Jan Christensen ( deletestuff@gmail.com). */ jQuery(function($){ $.datepicker.regional['da'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-de.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-de.js index ac2d516a..166f5371 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-de.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-de.js @@ -1,4 +1,4 @@ -/* German initialisation for the jQuery UI date picker plugin. */ +/* German initialisation for the jQuery UI date picker plugin. */ /* Written by Milian Wolff (mail@milianw.de). */ jQuery(function($){ $.datepicker.regional['de'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-el.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-el.js index 9542769d..6d775f99 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-el.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-el.js @@ -1,4 +1,4 @@ -/* Greek (el) initialisation for the jQuery UI date picker plugin. */ +/* Greek (el) initialisation for the jQuery UI date picker plugin. */ /* Written by Alex Cicovic (http://www.alexcicovic.com) */ jQuery(function($){ $.datepicker.regional['el'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-en-GB.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-en-GB.js index aac7b619..16a096e7 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-en-GB.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-en-GB.js @@ -1,4 +1,4 @@ -/* English/UK initialisation for the jQuery UI date picker plugin. */ +/* English/UK initialisation for the jQuery UI date picker plugin. */ /* Written by Stuart. */ jQuery(function($){ $.datepicker.regional['en-GB'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-eo.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-eo.js index ba571568..6cabc2c4 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-eo.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-eo.js @@ -1,4 +1,4 @@ -/* Esperanto initialisation for the jQuery UI date picker plugin. */ +/* Esperanto initialisation for the jQuery UI date picker plugin. */ /* Written by Olivier M. (olivierweb@ifrance.com). */ jQuery(function($){ $.datepicker.regional['eo'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-et.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-et.js index f97311f3..92f81f63 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-et.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-et.js @@ -1,4 +1,4 @@ -/* Estonian initialisation for the jQuery UI date picker plugin. */ +/* Estonian initialisation for the jQuery UI date picker plugin. */ /* Written by Mart Sõmermaa (mrts.pydev at gmail com). */ jQuery(function($){ $.datepicker.regional['et'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-eu.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-eu.js index 9ba6ee22..bee4bfba 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-eu.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-eu.js @@ -1,4 +1,4 @@ -/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ +/* Euskarako oinarria 'UI date picker' jquery-ko extentsioarentzat */ /* Karrikas-ek itzulia (karrikas@karrikas.com) */ jQuery(function($){ $.datepicker.regional['eu'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-fa.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-fa.js index adb3709f..81de4da4 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-fa.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-fa.js @@ -1,4 +1,4 @@ -/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ +/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ /* Javad Mowlanezhad -- jmowla@gmail.com */ /* Jalali calendar should supported soon! (Its implemented but I have to test it) */ jQuery(function($) { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-fo.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-fo.js index c1436221..8a6cb99c 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-fo.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-fo.js @@ -1,4 +1,4 @@ -/* Faroese initialisation for the jQuery UI date picker plugin */ +/* Faroese initialisation for the jQuery UI date picker plugin */ /* Written by Sverri Mohr Olsen, sverrimo@gmail.com */ jQuery(function($){ $.datepicker.regional['fo'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js index 38212d54..244eacff 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-fr-CH.js @@ -1,4 +1,4 @@ -/* Swiss-French initialisation for the jQuery UI date picker plugin. */ +/* Swiss-French initialisation for the jQuery UI date picker plugin. */ /* Written Martin Voelkle (martin.voelkle@e-tc.ch). */ jQuery(function($){ $.datepicker.regional['fr-CH'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-fr.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-fr.js index 134bda65..7e793639 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-fr.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-fr.js @@ -1,23 +1,25 @@ -/* French initialisation for the jQuery UI date picker plugin. */ -/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood{at}iinet.com.au), + Stéphane Nahmani (sholby@sholby.net), + Stéphane Raimbault */ jQuery(function($){ $.datepicker.regional['fr'] = { closeText: 'Fermer', - prevText: '<Préc', - nextText: 'Suiv>', - currentText: 'Courant', + prevText: 'Précédent', + nextText: 'Suivant', + currentText: 'Aujourd\'hui', monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], - monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', - 'Jul','Aoû','Sep','Oct','Nov','Déc'], + monthNamesShort: ['Janv.','Févr.','Mars','Avril','Mai','Juin', + 'Juil.','Août','Sept.','Oct.','Nov.','Déc.'], dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], - dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], - dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], - weekHeader: 'Sm', + dayNamesShort: ['Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.'], + dayNamesMin: ['D','L','M','M','J','V','S'], + weekHeader: 'Sem.', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['fr']); -}); \ No newline at end of file +}); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-gl.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-gl.js new file mode 100644 index 00000000..278403e8 --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-gl.js @@ -0,0 +1,23 @@ +/* Galician localization for 'UI date picker' jQuery extension. */ +/* Translated by Jorge Barreiro . */ +jQuery(function($){ + $.datepicker.regional['gl'] = { + closeText: 'Pechar', + prevText: '<Ant', + nextText: 'Seg>', + currentText: 'Hoxe', + monthNames: ['Xaneiro','Febreiro','Marzo','Abril','Maio','Xuño', + 'Xullo','Agosto','Setembro','Outubro','Novembro','Decembro'], + monthNamesShort: ['Xan','Feb','Mar','Abr','Mai','Xuñ', + 'Xul','Ago','Set','Out','Nov','Dec'], + dayNames: ['Domingo','Luns','Martes','Mércores','Xoves','Venres','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mér','Xov','Ven','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mé','Xo','Ve','Sá'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['gl']); +}); \ No newline at end of file diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-he.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-he.js index 3b3dc387..88a78668 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-he.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-he.js @@ -1,4 +1,4 @@ -/* Hebrew initialisation for the UI Datepicker extension. */ +/* Hebrew initialisation for the UI Datepicker extension. */ /* Written by Amir Hardon (ahardon at gmail dot com). */ jQuery(function($){ $.datepicker.regional['he'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-hr.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-hr.js index 0285c1aa..1eb3dd92 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-hr.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-hr.js @@ -1,4 +1,4 @@ -/* Croatian i18n for the jQuery UI date picker plugin. */ +/* Croatian i18n for the jQuery UI date picker plugin. */ /* Written by Vjekoslav Nesek. */ jQuery(function($){ $.datepicker.regional['hr'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-hu.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-hu.js index 249e7b0e..b28c268c 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-hu.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-hu.js @@ -2,22 +2,22 @@ /* Written by Istvan Karaszi (jquery@spam.raszi.hu). */ jQuery(function($){ $.datepicker.regional['hu'] = { - closeText: 'bezárás', - prevText: '« vissza', - nextText: 'előre »', + closeText: 'bezár', + prevText: 'vissza', + nextText: 'előre', currentText: 'ma', monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], - dayNames: ['Vasárnap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], + dayNames: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], - weekHeader: 'Hé', - dateFormat: 'yy-mm-dd', + weekHeader: 'Hét', + dateFormat: 'yy.mm.dd.', firstDay: 1, isRTL: false, - showMonthAfterYear: false, + showMonthAfterYear: true, yearSuffix: ''}; $.datepicker.setDefaults($.datepicker.regional['hu']); }); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js index 79cd827c..7eb4268d 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js @@ -1,4 +1,4 @@ -/* Japanese initialisation for the jQuery UI date picker plugin. */ +/* Japanese initialisation for the jQuery UI date picker plugin. */ /* Written by Kentaro SATO (kentaro@ranvis.com). */ jQuery(function($){ $.datepicker.regional['ja'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js new file mode 100644 index 00000000..79e3f248 --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js @@ -0,0 +1,23 @@ +/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['kk'] = { + closeText: 'Жабу', + prevText: '<Алдыңғы', + nextText: 'Келесі>', + currentText: 'Бүгін', + monthNames: ['Қаңтар','Ақпан','Наурыз','Сәуір','Мамыр','Маусым', + 'Шілде','Тамыз','Қыркүйек','Қазан','Қараша','Желтоқсан'], + monthNamesShort: ['Қаң','Ақп','Нау','Сәу','Мам','Мау', + 'Шіл','Там','Қыр','Қаз','Қар','Жел'], + dayNames: ['Жексенбі','Дүйсенбі','Сейсенбі','Сәрсенбі','Бейсенбі','Жұма','Сенбі'], + dayNamesShort: ['жкс','дсн','ссн','срс','бсн','жма','снб'], + dayNamesMin: ['Жк','Дс','Сс','Ср','Бс','Жм','Сн'], + weekHeader: 'Не', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['kk']); +}); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-lb.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-lb.js new file mode 100644 index 00000000..87c79d59 --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-lb.js @@ -0,0 +1,23 @@ +/* Luxembourgish initialisation for the jQuery UI date picker plugin. */ +/* Written by Michel Weimerskirch */ +jQuery(function($){ + $.datepicker.regional['lb'] = { + closeText: 'Fäerdeg', + prevText: 'Zréck', + nextText: 'Weider', + currentText: 'Haut', + monthNames: ['Januar','Februar','Mäerz','Abrëll','Mee','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', + 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], + dayNames: ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], + dayNamesShort: ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'], + dayNamesMin: ['So','Mé','Dë','Më','Do','Fr','Sa'], + weekHeader: 'W', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['lb']); +}); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-mk.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-mk.js new file mode 100644 index 00000000..554ad20b --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-mk.js @@ -0,0 +1,23 @@ +/* Macedonian i18n for the jQuery UI date picker plugin. */ +/* Written by Stojce Slavkovski. */ +jQuery(function($){ + $.datepicker.regional['mk'] = { + closeText: 'Затвори', + prevText: '<', + nextText: '>', + currentText: 'Денес', + monthNames: ['Јануари','Фебруари','Март','Април','Мај','Јуни', + 'Јули','Август','Септември','Октомври','Ноември','Декември'], + monthNamesShort: ['Јан','Феб','Мар','Апр','Мај','Јун', + 'Јул','Авг','Сеп','Окт','Ное','Дек'], + dayNames: ['Недела','Понеделник','Вторник','Среда','Четврток','Петок','Сабота'], + dayNamesShort: ['Нед','Пон','Вто','Сре','Чет','Пет','Саб'], + dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Са'], + weekHeader: 'Сед', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['mk']); +}); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ml.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ml.js new file mode 100644 index 00000000..1e3432c0 --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-ml.js @@ -0,0 +1,23 @@ +/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Saji Nediyanchath (saji89@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ml'] = { + closeText: 'ശരി', + prevText: 'മുന്നത്തെ', + nextText: 'അടുത്തത് ', + currentText: 'ഇന്ന്', + monthNames: ['ജനുവരി','ഫെബ്രുവരി','മാര്‍ച്ച്','ഏപ്രില്‍','മേയ്','ജൂണ്‍', + 'ജൂലൈ','ആഗസ്റ്റ്','സെപ്റ്റംബര്‍','ഒക്ടോബര്‍','നവംബര്‍','ഡിസംബര്‍'], + monthNamesShort: ['ജനു', 'ഫെബ്', 'മാര്‍', 'ഏപ്രി', 'മേയ്', 'ജൂണ്‍', + 'ജൂലാ', 'ആഗ', 'സെപ്', 'ഒക്ടോ', 'നവം', 'ഡിസ'], + dayNames: ['ഞായര്‍', 'തിങ്കള്‍', 'ചൊവ്വ', 'ബുധന്‍', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], + dayNamesShort: ['ഞായ', 'തിങ്ക', 'ചൊവ്വ', 'ബുധ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], + dayNamesMin: ['ഞാ','തി','ചൊ','ബു','വ്യാ','വെ','ശ'], + weekHeader: 'ആ', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['ml']); +}); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-nl.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-nl.js index 663d6bb2..781fe619 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-nl.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-nl.js @@ -1,4 +1,4 @@ -/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Mathias Bynens */ jQuery(function($){ $.datepicker.regional.nl = { @@ -8,13 +8,13 @@ jQuery(function($){ currentText: 'Vandaag', monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], - monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', + monthNamesShort: ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], weekHeader: 'Wk', - dateFormat: 'dd/mm/yy', + dateFormat: 'dd-mm-yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-no.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-no.js index 12b2356b..2507043a 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-no.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-no.js @@ -1,23 +1,23 @@ /* Norwegian initialisation for the jQuery UI date picker plugin. */ /* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ + jQuery(function($){ - $.datepicker.regional['no'] = { - closeText: 'Lukk', - prevText: '«Forrige', - nextText: 'Neste»', - currentText: 'I dag', - monthNames: ['Januar','Februar','Mars','April','Mai','Juni', - 'Juli','August','September','Oktober','November','Desember'], - monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', - 'Jul','Aug','Sep','Okt','Nov','Des'], - dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], - dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], - dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], - weekHeader: 'Uke', - dateFormat: 'yy-mm-dd', - firstDay: 0, - isRTL: false, - showMonthAfterYear: false, - yearSuffix: ''}; - $.datepicker.setDefaults($.datepicker.regional['no']); + $.datepicker.regional['no'] = { + closeText: 'Lukk', + prevText: '«Forrige', + nextText: 'Neste»', + currentText: 'I dag', + monthNames: ['januar','februar','mars','april','mai','juni','juli','august','september','oktober','november','desember'], + monthNamesShort: ['jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des'], + dayNamesShort: ['søn','man','tir','ons','tor','fre','lør'], + dayNames: ['søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag'], + dayNamesMin: ['sø','ma','ti','on','to','fr','lø'], + weekHeader: 'Uke', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: '' + }; + $.datepicker.setDefaults($.datepicker.regional['no']); }); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js index 38818637..3cc8c796 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-pt-BR.js @@ -10,9 +10,9 @@ jQuery(function($){ 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', 'Jul','Ago','Set','Out','Nov','Dez'], - dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'], - dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], - dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 0, diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-pt.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-pt.js new file mode 100644 index 00000000..f09f5aeb --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-pt.js @@ -0,0 +1,22 @@ +/* Portuguese initialisation for the jQuery UI date picker plugin. */ +jQuery(function($){ + $.datepicker.regional['pt'] = { + closeText: 'Fechar', + prevText: '<Anterior', + nextText: 'Seguinte', + currentText: 'Hoje', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], + weekHeader: 'Sem', + dateFormat: 'dd/mm/yy', + firstDay: 0, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['pt']); +}); \ No newline at end of file diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-rm.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-rm.js new file mode 100644 index 00000000..cf03cd4c --- /dev/null +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-rm.js @@ -0,0 +1,21 @@ +/* Romansh initialisation for the jQuery UI date picker plugin. */ +/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */ +jQuery(function($){ + $.datepicker.regional['rm'] = { + closeText: 'Serrar', + prevText: '<Suandant', + nextText: 'Precedent>', + currentText: 'Actual', + monthNames: ['Schaner','Favrer','Mars','Avrigl','Matg','Zercladur', 'Fanadur','Avust','Settember','October','November','December'], + monthNamesShort: ['Scha','Fev','Mar','Avr','Matg','Zer', 'Fan','Avu','Sett','Oct','Nov','Dec'], + dayNames: ['Dumengia','Glindesdi','Mardi','Mesemna','Gievgia','Venderdi','Sonda'], + dayNamesShort: ['Dum','Gli','Mar','Mes','Gie','Ven','Som'], + dayNamesMin: ['Du','Gl','Ma','Me','Gi','Ve','So'], + weekHeader: 'emna', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['rm']); +}); diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ro.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ro.js index 4fe95aea..6b140aff 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-ro.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-ro.js @@ -1,4 +1,4 @@ -/* Romanian initialisation for the jQuery UI date picker plugin. +/* Romanian initialisation for the jQuery UI date picker plugin. * * Written by Edmond L. (ll_edmond@walla.com) * and Ionut G. Stan (ionut.g.stan@gmail.com) diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ru.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ru.js index b8091f9e..50a46135 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-ru.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-ru.js @@ -13,7 +13,7 @@ jQuery(function($){ dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], - weekHeader: 'Не', + weekHeader: 'Нед', dateFormat: 'dd.mm.yy', firstDay: 1, isRTL: false, diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-sk.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-sk.js index 8a6771c1..078d1b0f 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-sk.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-sk.js @@ -10,7 +10,7 @@ jQuery(function($){ 'Júl','August','September','Október','November','December'], monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', 'Júl','Aug','Sep','Okt','Nov','Dec'], - dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], + dayNames: ['Nedeľa','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], weekHeader: 'Ty', diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-sq.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-sq.js index be84104c..21974c56 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-sq.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-sq.js @@ -1,4 +1,4 @@ -/* Albanian initialisation for the jQuery UI date picker plugin. */ +/* Albanian initialisation for the jQuery UI date picker plugin. */ /* Written by Flakron Bytyqi (flakron@gmail.com). */ jQuery(function($){ $.datepicker.regional['sq'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js index 8f8ea5e6..e7a8683e 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-sr-SR.js @@ -1,4 +1,4 @@ -/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ jQuery(function($){ $.datepicker.regional['sr-SR'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-sr.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-sr.js index 49c9b4a3..0bd240e6 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-sr.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-sr.js @@ -1,4 +1,4 @@ -/* Serbian i18n for the jQuery UI date picker plugin. */ +/* Serbian i18n for the jQuery UI date picker plugin. */ /* Written by Dejan Dimić. */ jQuery(function($){ $.datepicker.regional['sr'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-sv.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-sv.js index 8236b62b..e5f549fb 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-sv.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-sv.js @@ -1,4 +1,4 @@ -/* Swedish initialisation for the jQuery UI date picker plugin. */ +/* Swedish initialisation for the jQuery UI date picker plugin. */ /* Written by Anders Ekdahl ( anders@nomadiz.se). */ jQuery(function($){ $.datepicker.regional['sv'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ta.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ta.js index 91116d38..40431ed8 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-ta.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-ta.js @@ -1,4 +1,4 @@ -/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by S A Sureshkumar (saskumar@live.com). */ jQuery(function($){ $.datepicker.regional['ta'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-th.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-th.js index 978500ab..2e5300cf 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-th.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-th.js @@ -1,4 +1,4 @@ -/* Thai initialisation for the jQuery UI date picker plugin. */ +/* Thai initialisation for the jQuery UI date picker plugin. */ /* Written by pipo (pipo@sixhead.com). */ jQuery(function($){ $.datepicker.regional['th'] = { @@ -7,7 +7,7 @@ jQuery(function($){ nextText: 'ถัดไป »', currentText: 'วันนี้', monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', - 'กรกฏาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], + 'กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'], dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'], diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-uk.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-uk.js index 112b40e7..2718f5d1 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-uk.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-uk.js @@ -1,5 +1,6 @@ /* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ /* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ +/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */ jQuery(function($){ $.datepicker.regional['uk'] = { closeText: 'Закрити', @@ -13,7 +14,7 @@ jQuery(function($){ dayNames: ['неділя','понеділок','вівторок','середа','четвер','п’ятниця','субота'], dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], - weekHeader: 'Не', + weekHeader: 'Тиж', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-vi.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-vi.js index 9813a59e..1d8f7bbd 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-vi.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-vi.js @@ -1,4 +1,4 @@ -/* Vietnamese initialisation for the jQuery UI date picker plugin. */ +/* Vietnamese initialisation for the jQuery UI date picker plugin. */ /* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */ jQuery(function($){ $.datepicker.regional['vi'] = { diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js index d211573c..dd51e359 100644 --- a/resources/jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js +++ b/resources/jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js @@ -1,4 +1,4 @@ -/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Chinese initialisation for the jQuery UI date picker plugin. */ /* Written by Ressol (ressol@gmail.com). */ jQuery(function($){ $.datepicker.regional['zh-TW'] = { diff --git a/resources/jquery.ui/jquery.ui.accordion.js b/resources/jquery.ui/jquery.ui.accordion.js index 898160a1..8fa8c0b8 100644 --- a/resources/jquery.ui/jquery.ui.accordion.js +++ b/resources/jquery.ui/jquery.ui.accordion.js @@ -1,5 +1,5 @@ /* - * jQuery UI Accordion 1.8.11 + * jQuery UI Accordion 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -518,7 +518,7 @@ $.widget( "ui.accordion", { }); $.extend( $.ui.accordion, { - version: "1.8.11", + version: "1.8.17", animations: { slide: function( options, additions ) { options = $.extend({ @@ -550,11 +550,11 @@ $.extend( $.ui.accordion, { // fix width before calculating height of hidden element var s = options.toShow; originalWidth = s[0].style.width; - s.width( parseInt( s.parent().width(), 10 ) - - parseInt( s.css( "paddingLeft" ), 10 ) - - parseInt( s.css( "paddingRight" ), 10 ) - - ( parseInt( s.css( "borderLeftWidth" ), 10 ) || 0 ) - - ( parseInt( s.css( "borderRightWidth" ), 10) || 0 ) ); + s.width( s.parent().width() + - parseFloat( s.css( "paddingLeft" ) ) + - parseFloat( s.css( "paddingRight" ) ) + - ( parseFloat( s.css( "borderLeftWidth" ) ) || 0 ) + - ( parseFloat( s.css( "borderRightWidth" ) ) || 0 ) ); $.each( fxAttrs, function( i, prop ) { hideProps[ prop ] = "hide"; diff --git a/resources/jquery.ui/jquery.ui.autocomplete.js b/resources/jquery.ui/jquery.ui.autocomplete.js index 41c13930..48ede20b 100644 --- a/resources/jquery.ui/jquery.ui.autocomplete.js +++ b/resources/jquery.ui/jquery.ui.autocomplete.js @@ -1,5 +1,5 @@ /* - * jQuery UI Autocomplete 1.8.14 + * jQuery UI Autocomplete 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -48,7 +48,7 @@ $.widget( "ui.autocomplete", { "aria-haspopup": "true" }) .bind( "keydown.autocomplete", function( event ) { - if ( self.options.disabled || self.element.attr( "readonly" ) ) { + if ( self.options.disabled || self.element.propAttr( "readOnly" ) ) { return; } @@ -215,6 +215,13 @@ $.widget( "ui.autocomplete", { if ( $.fn.bgiframe ) { this.menu.element.bgiframe(); } + // turning off autocomplete prevents the browser from remembering the + // value when navigating through history, so we re-enable autocomplete + // if the page is unloaded before the widget is destroyed. #7790 + self.beforeunloadHandler = function() { + self.element.removeAttr( "autocomplete" ); + }; + $( window ).bind( "beforeunload", self.beforeunloadHandler ); }, destroy: function() { @@ -225,6 +232,7 @@ $.widget( "ui.autocomplete", { .removeAttr( "aria-autocomplete" ) .removeAttr( "aria-haspopup" ); this.menu.element.remove(); + $( window ).unbind( "beforeunload", this.beforeunloadHandler ); $.Widget.prototype.destroy.call( this ); }, @@ -375,7 +383,9 @@ $.widget( "ui.autocomplete", { _resizeMenu: function() { var ul = this.menu.element; ul.outerWidth( Math.max( - ul.width( "" ).outerWidth(), + // Firefox wraps long text (possibly a rounding bug) + // so we add 1px to avoid the wrapping (#7513) + ul.width( "" ).outerWidth() + 1, this.element.outerWidth() ) ); }, diff --git a/resources/jquery.ui/jquery.ui.button.js b/resources/jquery.ui/jquery.ui.button.js index 9a70a01d..94dce1c3 100644 --- a/resources/jquery.ui/jquery.ui.button.js +++ b/resources/jquery.ui/jquery.ui.button.js @@ -1,5 +1,5 @@ /* - * jQuery UI Button 1.8.11 + * jQuery UI Button 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -13,17 +13,15 @@ */ (function( $, undefined ) { -var lastActive, +var lastActive, startXPos, startYPos, clickDragged, baseClasses = "ui-button ui-widget ui-state-default ui-corner-all", stateClasses = "ui-state-hover ui-state-active ", typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only", - formResetHandler = function( event ) { - $( ":ui-button", event.target.form ).each(function() { - var inst = $( this ).data( "button" ); - setTimeout(function() { - inst.refresh(); - }, 1 ); - }); + formResetHandler = function() { + var buttons = $( this ).find( ":ui-button" ); + setTimeout(function() { + buttons.button( "refresh" ); + }, 1 ); }, radioGroup = function( radio ) { var name = radio.name, @@ -58,7 +56,7 @@ $.widget( "ui.button", { .bind( "reset.button", formResetHandler ); if ( typeof this.options.disabled !== "boolean" ) { - this.options.disabled = this.element.attr( "disabled" ); + this.options.disabled = this.element.propAttr( "disabled" ); } this._determineButtonType(); @@ -96,23 +94,54 @@ $.widget( "ui.button", { } $( this ).removeClass( hoverClass ); }) + .bind( "click.button", function( event ) { + if ( options.disabled ) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + }); + + this.element .bind( "focus.button", function() { // no need to check disabled, focus won't be triggered anyway - $( this ).addClass( focusClass ); + self.buttonElement.addClass( focusClass ); }) .bind( "blur.button", function() { - $( this ).removeClass( focusClass ); + self.buttonElement.removeClass( focusClass ); }); if ( toggleButton ) { this.element.bind( "change.button", function() { + if ( clickDragged ) { + return; + } self.refresh(); }); + // if mouse moves between mousedown and mouseup (drag) set clickDragged flag + // prevents issue where button state changes but checkbox/radio checked state + // does not in Firefox (see ticket #6970) + this.buttonElement + .bind( "mousedown.button", function( event ) { + if ( options.disabled ) { + return; + } + clickDragged = false; + startXPos = event.pageX; + startYPos = event.pageY; + }) + .bind( "mouseup.button", function( event ) { + if ( options.disabled ) { + return; + } + if ( startXPos !== event.pageX || startYPos !== event.pageY ) { + clickDragged = true; + } + }); } if ( this.type === "checkbox" ) { this.buttonElement.bind( "click.button", function() { - if ( options.disabled ) { + if ( options.disabled || clickDragged ) { return false; } $( this ).toggleClass( "ui-state-active" ); @@ -120,11 +149,11 @@ $.widget( "ui.button", { }); } else if ( this.type === "radio" ) { this.buttonElement.bind( "click.button", function() { - if ( options.disabled ) { + if ( options.disabled || clickDragged ) { return false; } $( this ).addClass( "ui-state-active" ); - self.buttonElement.attr( "aria-pressed", true ); + self.buttonElement.attr( "aria-pressed", "true" ); var radio = self.element[ 0 ]; radioGroup( radio ) @@ -133,7 +162,7 @@ $.widget( "ui.button", { return $( this ).button( "widget" )[ 0 ]; }) .removeClass( "ui-state-active" ) - .attr( "aria-pressed", false ); + .attr( "aria-pressed", "false" ); }); } else { this.buttonElement @@ -179,29 +208,26 @@ $.widget( "ui.button", { // $.Widget.prototype._setOptionDisabled so it's easy to proxy and can // be overridden by individual plugins this._setOption( "disabled", options.disabled ); + this._resetButton(); }, _determineButtonType: function() { - + if ( this.element.is(":checkbox") ) { this.type = "checkbox"; + } else if ( this.element.is(":radio") ) { + this.type = "radio"; + } else if ( this.element.is("input") ) { + this.type = "input"; } else { - if ( this.element.is(":radio") ) { - this.type = "radio"; - } else { - if ( this.element.is("input") ) { - this.type = "input"; - } else { - this.type = "button"; - } - } + this.type = "button"; } - + if ( this.type === "checkbox" || this.type === "radio" ) { // we don't search against the document in case the element // is disconnected from the DOM var ancestor = this.element.parents().filter(":last"), - labelSelector = "label[for=" + this.element.attr("id") + "]"; + labelSelector = "label[for='" + this.element.attr("id") + "']"; this.buttonElement = ancestor.find( labelSelector ); if ( !this.buttonElement.length ) { ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(); @@ -246,10 +272,11 @@ $.widget( "ui.button", { $.Widget.prototype._setOption.apply( this, arguments ); if ( key === "disabled" ) { if ( value ) { - this.element.attr( "disabled", true ); + this.element.propAttr( "disabled", true ); } else { - this.element.removeAttr( "disabled" ); + this.element.propAttr( "disabled", false ); } + return; } this._resetButton(); }, @@ -264,22 +291,22 @@ $.widget( "ui.button", { if ( $( this ).is( ":checked" ) ) { $( this ).button( "widget" ) .addClass( "ui-state-active" ) - .attr( "aria-pressed", true ); + .attr( "aria-pressed", "true" ); } else { $( this ).button( "widget" ) .removeClass( "ui-state-active" ) - .attr( "aria-pressed", false ); + .attr( "aria-pressed", "false" ); } }); } else if ( this.type === "checkbox" ) { if ( this.element.is( ":checked" ) ) { this.buttonElement .addClass( "ui-state-active" ) - .attr( "aria-pressed", true ); + .attr( "aria-pressed", "true" ); } else { this.buttonElement .removeClass( "ui-state-active" ) - .attr( "aria-pressed", false ); + .attr( "aria-pressed", "false" ); } } }, @@ -292,7 +319,7 @@ $.widget( "ui.button", { return; } var buttonElement = this.buttonElement.removeClass( typeClasses ), - buttonText = $( "" ) + buttonText = $( "", this.element[0].ownerDocument ) .addClass( "ui-button-text" ) .html( this.options.label ) .appendTo( buttonElement.empty() ) @@ -350,6 +377,8 @@ $.widget( "ui.buttonset", { }, refresh: function() { + var rtl = this.element.css( "direction" ) === "rtl"; + this.buttons = this.element.find( this.options.items ) .filter( ":ui-button" ) .button( "refresh" ) @@ -362,10 +391,10 @@ $.widget( "ui.buttonset", { }) .removeClass( "ui-corner-all ui-corner-left ui-corner-right" ) .filter( ":first" ) - .addClass( "ui-corner-left" ) + .addClass( rtl ? "ui-corner-right" : "ui-corner-left" ) .end() .filter( ":last" ) - .addClass( "ui-corner-right" ) + .addClass( rtl ? "ui-corner-left" : "ui-corner-right" ) .end() .end(); }, diff --git a/resources/jquery.ui/jquery.ui.core.js b/resources/jquery.ui/jquery.ui.core.js index 4589a47e..6d82ff13 100644 --- a/resources/jquery.ui/jquery.ui.core.js +++ b/resources/jquery.ui/jquery.ui.core.js @@ -1,5 +1,5 @@ /*! - * jQuery UI 1.8.11 + * jQuery UI 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -18,7 +18,7 @@ if ( $.ui.version ) { } $.extend( $.ui, { - version: "1.8.11", + version: "1.8.17", keyCode: { ALT: 18, @@ -58,6 +58,8 @@ $.extend( $.ui, { // plugins $.fn.extend({ + propAttr: $.fn.prop || $.fn.attr, + _focus: $.fn.focus, focus: function( delay, fn ) { return typeof delay === "number" ? @@ -174,6 +176,27 @@ $.each( [ "Width", "Height" ], function( i, name ) { }); // selectors +function focusable( element, isTabIndexNotNaN ) { + var nodeName = element.nodeName.toLowerCase(); + if ( "area" === nodeName ) { + var map = element.parentNode, + mapName = map.name, + img; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap=#" + mapName + "]" )[0]; + return !!img && visible( img ); + } + return ( /input|select|textarea|button|object/.test( nodeName ) + ? !element.disabled + : "a" == nodeName + ? element.href || isTabIndexNotNaN + : isTabIndexNotNaN) + // the element and all of its ancestors must be visible + && visible( element ); +} + function visible( element ) { return !$( element ).parents().andSelf().filter(function() { return $.curCSS( this, "visibility" ) === "hidden" || @@ -187,30 +210,13 @@ $.extend( $.expr[ ":" ], { }, focusable: function( element ) { - var nodeName = element.nodeName.toLowerCase(), - tabIndex = $.attr( element, "tabindex" ); - if ( "area" === nodeName ) { - var map = element.parentNode, - mapName = map.name, - img; - if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { - return false; - } - img = $( "img[usemap=#" + mapName + "]" )[0]; - return !!img && visible( img ); - } - return ( /input|select|textarea|button|object/.test( nodeName ) - ? !element.disabled - : "a" == nodeName - ? element.href || !isNaN( tabIndex ) - : !isNaN( tabIndex )) - // the element and all of its ancestors must be visible - && visible( element ); + return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); }, tabbable: function( element ) { - var tabIndex = $.attr( element, "tabindex" ); - return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" ); + var tabIndex = $.attr( element, "tabindex" ), + isTabIndexNaN = isNaN( tabIndex ); + return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); } }); diff --git a/resources/jquery.ui/jquery.ui.datepicker.js b/resources/jquery.ui/jquery.ui.datepicker.js index cad1d58c..bbf59175 100644 --- a/resources/jquery.ui/jquery.ui.datepicker.js +++ b/resources/jquery.ui/jquery.ui.datepicker.js @@ -1,22 +1,22 @@ /* - * jQuery UI Datepicker 1.8.2 + * jQuery UI Datepicker 1.8.17 * - * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license * * http://docs.jquery.com/UI/Datepicker * * Depends: * jquery.ui.core.js */ +(function( $, undefined ) { -(function($) { // hide the namespace - -$.extend($.ui, { datepicker: { version: "1.8.2" } }); +$.extend($.ui, { datepicker: { version: "1.8.17" } }); var PROP_NAME = 'datepicker'; var dpuuid = new Date().getTime(); +var instActive; /* Date picker manager. Use the singleton instance of this class, $.datepicker, to interact with the date picker. @@ -105,15 +105,19 @@ function Datepicker() { altFormat: '', // The date format to use for the alternate field constrainInput: true, // The input is constrained by the current date format showButtonPanel: false, // True to show button panel, false to not show it - autoSize: false // True to size the input for the date format, false to leave as is + autoSize: false, // True to size the input for the date format, false to leave as is + disabled: false // The initial disabled state }; $.extend(this._defaults, this.regional['']); - this.dpDiv = $('
'); + this.dpDiv = bindHover($('
')); } $.extend(Datepicker.prototype, { /* Class name added to elements to indicate already configured with a date picker. */ markerClassName: 'hasDatepicker', + + //Keep track of the maximum number of rows displayed (see #7043) + maxRows: 4, /* Debug logging (if enabled). */ log: function () { @@ -168,13 +172,13 @@ $.extend(Datepicker.prototype, { /* Create a new instance object. */ _newInst: function(target, inline) { - var id = target[0].id.replace(/([^A-Za-z0-9_])/g, '\\\\$1'); // escape jQuery meta chars + var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); // escape jQuery meta chars return {id: id, input: target, // associated target selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection drawMonth: 0, drawYear: 0, // month being drawn inline: inline, // is datepicker inline or not dpDiv: (!inline ? this.dpDiv : // presentation div - $('
'))}; + bindHover($('
')))}; }, /* Attach the date picker to an input field. */ @@ -194,6 +198,10 @@ $.extend(Datepicker.prototype, { }); this._autoSize(inst); $.data(target, PROP_NAME, inst); + //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } }, /* Make attachments based on settings. */ @@ -273,6 +281,13 @@ $.extend(Datepicker.prototype, { this._setDate(inst, this._getDefaultDate(inst), true); this._updateDatepicker(inst); this._updateAlternate(inst); + //If disabled option is true, disable the datepicker before showing it (see ticket #5665) + if( inst.settings.disabled ) { + this._disableDatepicker( target ); + } + // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements + // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height + inst.dpDiv.css( "display", "block" ); }, /* Pop-up the date picker in a "dialog" box. @@ -363,6 +378,8 @@ $.extend(Datepicker.prototype, { else if (nodeName == 'div' || nodeName == 'span') { var inline = $target.children('.' + this._inlineClass); inline.children().removeClass('ui-state-disabled'); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + removeAttr("disabled"); } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value == target ? null : value); }); // delete entry @@ -386,6 +403,8 @@ $.extend(Datepicker.prototype, { else if (nodeName == 'div' || nodeName == 'span') { var inline = $target.children('.' + this._inlineClass); inline.children().addClass('ui-state-disabled'); + inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). + attr("disabled", "disabled"); } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value == target ? null : value); }); // delete entry @@ -444,10 +463,18 @@ $.extend(Datepicker.prototype, { this._hideDatepicker(); } var date = this._getDateDatepicker(target, true); + var minDate = this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); extendRemove(inst.settings, settings); + // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided + if (minDate !== null && settings['dateFormat'] !== undefined && settings['minDate'] === undefined) + inst.settings.minDate = this._formatDate(inst, minDate); + if (maxDate !== null && settings['dateFormat'] !== undefined && settings['maxDate'] === undefined) + inst.settings.maxDate = this._formatDate(inst, maxDate); this._attachments($(target), inst); this._autoSize(inst); - this._setDateDatepicker(target, date); + this._setDate(inst, date); + this._updateAlternate(inst); this._updateDatepicker(inst); } }, @@ -500,10 +527,17 @@ $.extend(Datepicker.prototype, { case 9: $.datepicker._hideDatepicker(); handled = false; break; // hide on tab out - case 13: var sel = $('td.' + $.datepicker._dayOverClass, inst.dpDiv). - add($('td.' + $.datepicker._currentClass, inst.dpDiv)); + case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' + + $.datepicker._currentClass + ')', inst.dpDiv); if (sel[0]) $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); + var onSelect = $.datepicker._get(inst, 'onSelect'); + if (onSelect) { + var dateStr = $.datepicker._formatDate(inst); + + // trigger custom callback + onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); + } else $.datepicker._hideDatepicker(); return false; // don't submit the form @@ -565,7 +599,7 @@ $.extend(Datepicker.prototype, { if ($.datepicker._get(inst, 'constrainInput')) { var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')); var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode); - return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); + return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1); } }, @@ -591,6 +625,7 @@ $.extend(Datepicker.prototype, { }, /* Pop-up the date picker for a given input field. + If false returned from beforeShow event handler do not show. @param input element - the input field attached to the date picker or event - if triggered by focus */ _showDatepicker: function(input) { @@ -602,9 +637,17 @@ $.extend(Datepicker.prototype, { var inst = $.datepicker._getInst(input); if ($.datepicker._curInst && $.datepicker._curInst != inst) { $.datepicker._curInst.dpDiv.stop(true, true); + if ( inst && $.datepicker._datepickerShowing ) { + $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); + } } var beforeShow = $.datepicker._get(inst, 'beforeShow'); - extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {})); + var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; + if(beforeShowSettings === false){ + //false + return; + } + extendRemove(inst.settings, beforeShowSettings); inst.lastVal = null; $.datepicker._lastInput = input; $.datepicker._setDateFromField(inst); @@ -625,6 +668,8 @@ $.extend(Datepicker.prototype, { } var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; $.datepicker._pos = null; + //to avoid flashes on Firefox + inst.dpDiv.empty(); // determine sizing offscreen inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'}); $.datepicker._updateDatepicker(inst); @@ -638,13 +683,15 @@ $.extend(Datepicker.prototype, { var showAnim = $.datepicker._get(inst, 'showAnim'); var duration = $.datepicker._get(inst, 'duration'); var postProcess = function() { - $.datepicker._datepickerShowing = true; - var borders = $.datepicker._getBorders(inst.dpDiv); - inst.dpDiv.find('iframe.ui-datepicker-cover'). // IE6- only - css({left: -borders[0], top: -borders[1], + var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only + if( !! cover.length ){ + var borders = $.datepicker._getBorders(inst.dpDiv); + cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}); + } }; inst.dpDiv.zIndex($(input).zIndex()+1); + $.datepicker._datepickerShowing = true; if ($.effects && $.effects[showAnim]) inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); else @@ -660,44 +707,41 @@ $.extend(Datepicker.prototype, { /* Generate the date picker content. */ _updateDatepicker: function(inst) { var self = this; + self.maxRows = 4; //Reset the max number of rows being displayed (see #7043) var borders = $.datepicker._getBorders(inst.dpDiv); - inst.dpDiv.empty().append(this._generateHTML(inst)) - .find('iframe.ui-datepicker-cover') // IE6- only - .css({left: -borders[0], top: -borders[1], - width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}) - .end() - .find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a') - .bind('mouseout', function(){ - $(this).removeClass('ui-state-hover'); - if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover'); - if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover'); - }) - .bind('mouseover', function(){ - if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) { - $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); - $(this).addClass('ui-state-hover'); - if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover'); - if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover'); - } - }) - .end() - .find('.' + this._dayOverClass + ' a') - .trigger('mouseover') - .end(); + instActive = inst; // for delegate hover events + inst.dpDiv.empty().append(this._generateHTML(inst)); + var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only + if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6 + cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()}) + } + inst.dpDiv.find('.' + this._dayOverClass + ' a').mouseover(); var numMonths = this._getNumberOfMonths(inst); var cols = numMonths[1]; var width = 17; + inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); if (cols > 1) inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em'); - else - inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width(''); inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') + 'Class']('ui-datepicker-multi'); inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') + 'Class']('ui-datepicker-rtl'); if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input && - inst.input.is(':visible') && !inst.input.is(':disabled')) + // #6694 - don't focus the input if it's already focused + // this breaks the change event in IE + inst.input.is(':visible') && !inst.input.is(':disabled') && inst.input[0] != document.activeElement) inst.input.focus(); + // deffered render of the years select (to avoid flashes on Firefox) + if( inst.yearshtml ){ + var origyearshtml = inst.yearshtml; + setTimeout(function(){ + //assure that inst.yearshtml didn't change. + if( origyearshtml === inst.yearshtml && inst.yearshtml ){ + inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml); + } + origyearshtml = inst.yearshtml = null; + }, 0); + } }, /* Retrieve the size of left and top borders for an element. @@ -737,7 +781,7 @@ $.extend(Datepicker.prototype, { _findPos: function(obj) { var inst = this._getInst(obj); var isRTL = this._get(inst, 'isRTL'); - while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) { + while (obj && (obj.type == 'hidden' || obj.nodeType != 1 || $.expr.filters.hidden(obj))) { obj = obj[isRTL ? 'previousSibling' : 'nextSibling']; } var position = $(obj).offset(); @@ -753,9 +797,10 @@ $.extend(Datepicker.prototype, { if (this._datepickerShowing) { var showAnim = this._get(inst, 'showAnim'); var duration = this._get(inst, 'duration'); + var self = this; var postProcess = function() { $.datepicker._tidyDialog(inst); - this._curInst = null; + self._curInst = null; }; if ($.effects && $.effects[showAnim]) inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess); @@ -764,11 +809,11 @@ $.extend(Datepicker.prototype, { (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess); if (!showAnim) postProcess(); + this._datepickerShowing = false; var onClose = this._get(inst, 'onClose'); if (onClose) onClose.apply((inst.input ? inst.input[0] : null), - [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback - this._datepickerShowing = false; + [(inst.input ? inst.input.val() : ''), inst]); this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' }); @@ -790,12 +835,16 @@ $.extend(Datepicker.prototype, { _checkExternalClick: function(event) { if (!$.datepicker._curInst) return; - var $target = $(event.target); - if ($target[0].id != $.datepicker._mainDivId && + + var $target = $(event.target), + inst = $.datepicker._getInst($target[0]); + + if ( ( ( $target[0].id != $.datepicker._mainDivId && $target.parents('#' + $.datepicker._mainDivId).length == 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.hasClass($.datepicker._triggerClass) && - $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI)) + $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || + ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst != inst ) ) $.datepicker._hideDatepicker(); }, @@ -835,7 +884,6 @@ $.extend(Datepicker.prototype, { _selectMonthYear: function(id, select, period) { var target = $(id); var inst = this._getInst(target[0]); - inst._selectingMonthYear = false; inst['selected' + (period == 'M' ? 'Month' : 'Year')] = inst['draw' + (period == 'M' ? 'Month' : 'Year')] = parseInt(select.options[select.selectedIndex].value,10); @@ -843,15 +891,6 @@ $.extend(Datepicker.prototype, { this._adjustDate(target); }, - /* Restore input focus after not changing month/year. */ - _clickMonthYear: function(id) { - var target = $(id); - var inst = this._getInst(target[0]); - if (inst.input && inst._selectingMonthYear && !$.browser.msie) - inst.input.focus(); - inst._selectingMonthYear = !inst._selectingMonthYear; - }, - /* Action for selecting a day. */ _selectDay: function(id, month, year, td) { var target = $(id); @@ -948,6 +987,8 @@ $.extend(Datepicker.prototype, { if (value == '') return null; var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff; + shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort; var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames; var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort; @@ -966,9 +1007,9 @@ $.extend(Datepicker.prototype, { }; // Extract a number from the string value var getNumber = function(match) { - lookAhead(match); + var isDoubled = lookAhead(match); var size = (match == '@' ? 14 : (match == '!' ? 20 : - (match == 'y' ? 4 : (match == 'o' ? 3 : 2)))); + (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2)))); var digits = new RegExp('^\\d{1,' + size + '}'); var num = value.substring(iValue).match(digits); if (!num) @@ -978,14 +1019,24 @@ $.extend(Datepicker.prototype, { }; // Extract a name from the string value and convert to an index var getName = function(match, shortNames, longNames) { - var names = (lookAhead(match) ? longNames : shortNames); - for (var i = 0; i < names.length; i++) { - if (value.substr(iValue, names[i].length) == names[i]) { - iValue += names[i].length; - return i + 1; + var names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { + return [ [k, v] ]; + }).sort(function (a, b) { + return -(a[1].length - b[1].length); + }); + var index = -1; + $.each(names, function (i, pair) { + var name = pair[1]; + if (value.substr(iValue, name.length).toLowerCase() == name.toLowerCase()) { + index = pair[0]; + iValue += name.length; + return false; } - } - throw 'Unknown name at position ' + iValue; + }); + if (index != -1) + return index + 1; + else + throw 'Unknown name at position ' + iValue; }; // Confirm that a literal character matches the string value var checkLiteral = function() { @@ -1042,6 +1093,9 @@ $.extend(Datepicker.prototype, { checkLiteral(); } } + if (iValue < value.length){ + throw "Extra/unparsed characters found in date: " + value.substring(iValue); + } if (year == -1) year = new Date().getFullYear(); else if (year < 100) @@ -1060,7 +1114,7 @@ $.extend(Datepicker.prototype, { } var date = this._daylightSavingAdjust(new Date(year, month - 1, day)); if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day) - throw 'Invalid date'; // E.g. 31/02/* + throw 'Invalid date'; // E.g. 31/02/00 return date; }, @@ -1153,7 +1207,7 @@ $.extend(Datepicker.prototype, { break; case 'o': output += formatNumber('o', - (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3); + Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); break; case 'm': output += formatNumber('m', date.getMonth() + 1, 2); @@ -1298,16 +1352,16 @@ $.extend(Datepicker.prototype, { } return new Date(year, month, day); }; - date = (date == null ? defaultDate : (typeof date == 'string' ? offsetString(date) : - (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date))); - date = (date && date.toString() == 'Invalid Date' ? defaultDate : date); - if (date) { - date.setHours(0); - date.setMinutes(0); - date.setSeconds(0); - date.setMilliseconds(0); + var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) : + (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); + newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate); + if (newDate) { + newDate.setHours(0); + newDate.setMinutes(0); + newDate.setSeconds(0); + newDate.setMilliseconds(0); } - return this._daylightSavingAdjust(date); + return this._daylightSavingAdjust(newDate); }, /* Handle switch to/from daylight saving. @@ -1324,13 +1378,13 @@ $.extend(Datepicker.prototype, { /* Set the date(s) directly. */ _setDate: function(inst, date, noChange) { - var clear = !(date); + var clear = !date; var origMonth = inst.selectedMonth; var origYear = inst.selectedYear; - date = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); - inst.selectedDay = inst.currentDay = date.getDate(); - inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth(); - inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear(); + var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); + inst.selectedDay = inst.currentDay = newDate.getDate(); + inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); + inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange) this._notifyChange(inst); this._adjustInstDate(inst); @@ -1428,6 +1482,7 @@ $.extend(Datepicker.prototype, { var html = ''; for (var row = 0; row < numMonths[0]; row++) { var group = ''; + this.maxRows = 4; for (var col = 0; col < numMonths[1]; col++) { var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); var cornerClass = ' ui-corner-all'; @@ -1462,7 +1517,9 @@ $.extend(Datepicker.prototype, { if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth) inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; - var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate + var curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate + var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) + this.maxRows = numRows; var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows calender += ''; @@ -1532,7 +1589,6 @@ $.extend(Datepicker.prototype, { var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); monthHtml += ''; - for (; year <= endYear; year++) { - html += ''; + if ( !inst.yearshtml ) { + inst.yearshtml = ''; + if (secondary || !changeYear) + html += '' + drawYear + ''; + else { + // determine range of years to display + var years = this._get(inst, 'yearRange').split(':'); + var thisYear = new Date().getFullYear(); + var determineYear = function(value) { + var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + var year = determineYear(years[0]); + var endYear = Math.max(year, determineYear(years[1] || '')); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += ''; + + html += inst.yearshtml; + inst.yearshtml = null; } - html += ''; } html += this._get(inst, 'yearSuffix'); if (showMonthAfterYear) @@ -1599,9 +1660,9 @@ $.extend(Datepicker.prototype, { _restrictMinMax: function(inst, date) { var minDate = this._getMinMaxDate(inst, 'min'); var maxDate = this._getMinMaxDate(inst, 'max'); - date = (minDate && date < minDate ? minDate : date); - date = (maxDate && date > maxDate ? maxDate : date); - return date; + var newDate = (minDate && date < minDate ? minDate : date); + newDate = (maxDate && newDate > maxDate ? maxDate : newDate); + return newDate; }, /* Notify change of month/year. */ @@ -1625,7 +1686,7 @@ $.extend(Datepicker.prototype, { /* Find the number of days in a given month. */ _getDaysInMonth: function(year, month) { - return 32 - new Date(year, month, 32).getDate(); + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); }, /* Find the day of the week of the first of a month. */ @@ -1675,6 +1736,33 @@ $.extend(Datepicker.prototype, { } }); +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a'; + return dpDiv.bind('mouseout', function(event) { + var elem = $( event.target ).closest( selector ); + if ( !elem.length ) { + return; + } + elem.removeClass( "ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover" ); + }) + .bind('mouseover', function(event) { + var elem = $( event.target ).closest( selector ); + if ($.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0]) || + !elem.length ) { + return; + } + elem.parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); + elem.addClass('ui-state-hover'); + if (elem.hasClass('ui-datepicker-prev')) elem.addClass('ui-datepicker-prev-hover'); + if (elem.hasClass('ui-datepicker-next')) elem.addClass('ui-datepicker-next-hover'); + }); +} + /* jQuery extend now ignores nulls! */ function extendRemove(target, props) { $.extend(target, props); @@ -1695,7 +1783,12 @@ function isArray(a) { Object - settings for attaching new datepicker functionality @return jQuery object */ $.fn.datepicker = function(options){ - + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + /* Initialise the date picker. */ if (!$.datepicker.initialized) { $(document).mousedown($.datepicker._checkExternalClick). @@ -1721,7 +1814,7 @@ $.fn.datepicker = function(options){ $.datepicker = new Datepicker(); // singleton instance $.datepicker.initialized = false; $.datepicker.uuid = new Date().getTime(); -$.datepicker.version = "1.8.2"; +$.datepicker.version = "1.8.17"; // Workaround for #4055 // Add another global to avoid noConflict issues with inline event handlers diff --git a/resources/jquery.ui/jquery.ui.dialog.js b/resources/jquery.ui/jquery.ui.dialog.js index f0656a2f..33119af2 100644 --- a/resources/jquery.ui/jquery.ui.dialog.js +++ b/resources/jquery.ui/jquery.ui.dialog.js @@ -1,5 +1,5 @@ /* - * jQuery UI Dialog 1.8.11 + * jQuery UI Dialog 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -37,6 +37,18 @@ var uiDialogClasses = maxWidth: true, minHeight: true, minWidth: true + }, + // support for jQuery 1.3.2 - handle common attrFn methods for dialog + attrFn = $.attrFn || { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true, + click: true }; $.widget("ui.dialog", { @@ -98,7 +110,7 @@ $.widget("ui.dialog", { // setting tabIndex makes the div focusable // setting outline to 0 prevents a border on focus in Mozilla .attr('tabIndex', -1).css('outline', 0).keydown(function(event) { - if (options.closeOnEscape && event.keyCode && + if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) { self.close(event); @@ -294,7 +306,7 @@ $.widget("ui.dialog", { //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed. // http://ui.jquery.com/bugs/ticket/3193 - saveScroll = { scrollTop: self.element.attr('scrollTop'), scrollLeft: self.element.attr('scrollLeft') }; + saveScroll = { scrollTop: self.element.scrollTop(), scrollLeft: self.element.scrollLeft() }; $.ui.dialog.maxZ += 1; self.uiDialog.css('z-index', $.ui.dialog.maxZ); self.element.attr(saveScroll); @@ -317,9 +329,9 @@ $.widget("ui.dialog", { self.moveToTop(true); // prevent tabbing out of modal dialogs - if (options.modal) { - uiDialog.bind('keypress.ui-dialog', function(event) { - if (event.keyCode !== $.ui.keyCode.TAB) { + if ( options.modal ) { + uiDialog.bind( "keydown.ui-dialog", function( event ) { + if ( event.keyCode !== $.ui.keyCode.TAB ) { return; } @@ -376,12 +388,21 @@ $.widget("ui.dialog", { { click: props, text: name } : props; var button = $('') - .attr( props, true ) - .unbind('click') .click(function() { props.click.apply(self.element[0], arguments); }) .appendTo(uiButtonSet); + // can't use .attr( props, true ) with jQuery 1.3.2. + $.each( props, function( key, value ) { + if ( key === "click" ) { + return; + } + if ( key in attrFn ) { + button[ key ]( value ); + } else { + button.attr( key, value ); + } + }); if ($.fn.button) { button.button(); } @@ -681,7 +702,7 @@ $.widget("ui.dialog", { }); $.extend($.ui.dialog, { - version: "1.8.11", + version: "1.8.17", uuid: 0, maxZ: 0, @@ -727,7 +748,7 @@ $.extend($.ui.dialog.overlay, { // allow closing by pressing the escape key $(document).bind('keydown.dialog-overlay', function(event) { - if (dialog.options.closeOnEscape && event.keyCode && + if (dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) { dialog.close(event); @@ -802,8 +823,8 @@ $.extend($.ui.dialog.overlay, { width: function() { var scrollWidth, offsetWidth; - // handle IE 6 - if ($.browser.msie && $.browser.version < 7) { + // handle IE + if ( $.browser.msie ) { scrollWidth = Math.max( document.documentElement.scrollWidth, document.body.scrollWidth diff --git a/resources/jquery.ui/jquery.ui.draggable.js b/resources/jquery.ui/jquery.ui.draggable.js index 5f367616..41aba9d6 100644 --- a/resources/jquery.ui/jquery.ui.draggable.js +++ b/resources/jquery.ui/jquery.ui.draggable.js @@ -1,5 +1,5 @@ /* - * jQuery UI Draggable 1.8.11 + * jQuery UI Draggable 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -79,6 +79,18 @@ $.widget("ui.draggable", $.ui.mouse, { this.handle = this._getHandle(event); if (!this.handle) return false; + + if ( o.iframeFix ) { + $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { + $('
') + .css({ + width: this.offsetWidth+"px", height: this.offsetHeight+"px", + position: "absolute", opacity: "0.001", zIndex: 1000 + }) + .css($(this).offset()) + .appendTo("body"); + }); + } return true; @@ -153,6 +165,10 @@ $.widget("ui.draggable", $.ui.mouse, { this.helper.addClass("ui-draggable-dragging"); this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position + + //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003) + if ( $.ui.ddmanager ) $.ui.ddmanager.dragStart(this, event); + return true; }, @@ -212,6 +228,19 @@ $.widget("ui.draggable", $.ui.mouse, { return false; }, + _mouseUp: function(event) { + if (this.options.iframeFix === true) { + $("div.ui-draggable-iframeFix").each(function() { + this.parentNode.removeChild(this); + }); //Remove frame helpers + } + + //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003) + if( $.ui.ddmanager ) $.ui.ddmanager.dragStop(this, event); + + return $.ui.mouse.prototype._mouseUp.call(this, event); + }, + cancel: function() { if(this.helper.is(".ui-draggable-dragging")) { @@ -241,7 +270,7 @@ $.widget("ui.draggable", $.ui.mouse, { _createHelper: function(event) { var o = this.options; - var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element); + var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone().removeAttr('id') : this.element); if(!helper.parents('body').length) helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo)); @@ -335,23 +364,26 @@ $.widget("ui.draggable", $.ui.mouse, { var o = this.options; if(o.containment == 'parent') o.containment = this.helper[0].parentNode; if(o.containment == 'document' || o.containment == 'window') this.containment = [ - (o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left, - (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top, + o.containment == 'document' ? 0 : $(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, + o.containment == 'document' ? 0 : $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left, (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top ]; if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) { - var ce = $(o.containment)[0]; if(!ce) return; - var co = $(o.containment).offset(); + var c = $(o.containment); + var ce = c[0]; if(!ce) return; + var co = c.offset(); var over = ($(ce).css("overflow") != 'hidden'); this.containment = [ - co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0), - co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0), - co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, - co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0), + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0), + (over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, + (over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom ]; + this.relative_container = c; + } else if(o.containment.constructor == Array) { this.containment = o.containment; } @@ -393,20 +425,32 @@ $.widget("ui.draggable", $.ui.mouse, { */ if(this.originalPosition) { //If we are not dragging yet, we won't check for options - - if(this.containment) { - if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left; - if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top; - if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left; - if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top; + var containment; + if(this.containment) { + if (this.relative_container){ + var co = this.relative_container.offset(); + containment = [ this.containment[0] + co.left, + this.containment[1] + co.top, + this.containment[2] + co.left, + this.containment[3] + co.top ]; + } + else { + containment = this.containment; + } + + if(event.pageX - this.offset.click.left < containment[0]) pageX = containment[0] + this.offset.click.left; + if(event.pageY - this.offset.click.top < containment[1]) pageY = containment[1] + this.offset.click.top; + if(event.pageX - this.offset.click.left > containment[2]) pageX = containment[2] + this.offset.click.left; + if(event.pageY - this.offset.click.top > containment[3]) pageY = containment[3] + this.offset.click.top; } if(o.grid) { - var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; - pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950) + var top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY; + pageY = containment ? (!(top - this.offset.click.top < containment[1] || top - this.offset.click.top > containment[3]) ? top : (!(top - this.offset.click.top < containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; - var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; - pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + var left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX; + pageX = containment ? (!(left - this.offset.click.left < containment[0] || left - this.offset.click.left > containment[2]) ? left : (!(left - this.offset.click.left < containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; } } @@ -461,7 +505,7 @@ $.widget("ui.draggable", $.ui.mouse, { }); $.extend($.ui.draggable, { - version: "1.8.11" + version: "1.8.17" }); $.ui.plugin.add("draggable", "connectToSortable", { @@ -546,7 +590,7 @@ $.ui.plugin.add("draggable", "connectToSortable", { //Now we fake the start of dragging for the sortable instance, //by cloning the list group item, appending it to the sortable and using it as inst.currentItem //We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one) - this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true); + this.instance.currentItem = $(self).clone().removeAttr('id').appendTo(this.instance.element).data("sortable-item", true); this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it this.instance.options.helper = function() { return ui.helper[0]; }; @@ -616,24 +660,6 @@ $.ui.plugin.add("draggable", "cursor", { } }); -$.ui.plugin.add("draggable", "iframeFix", { - start: function(event, ui) { - var o = $(this).data('draggable').options; - $(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() { - $('
') - .css({ - width: this.offsetWidth+"px", height: this.offsetHeight+"px", - position: "absolute", opacity: "0.001", zIndex: 1000 - }) - .css($(this).offset()) - .appendTo("body"); - }); - }, - stop: function(event, ui) { - $("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers - } -}); - $.ui.plugin.add("draggable", "opacity", { start: function(event, ui) { var t = $(ui.helper), o = $(this).data('draggable').options; diff --git a/resources/jquery.ui/jquery.ui.droppable.js b/resources/jquery.ui/jquery.ui.droppable.js index 7d6b8975..afce00aa 100644 --- a/resources/jquery.ui/jquery.ui.droppable.js +++ b/resources/jquery.ui/jquery.ui.droppable.js @@ -1,5 +1,5 @@ /* - * jQuery UI Droppable 1.8.11 + * jQuery UI Droppable 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -147,7 +147,7 @@ $.widget("ui.droppable", { }); $.extend($.ui.droppable, { - version: "1.8.11" + version: "1.8.17" }); $.ui.intersect = function(draggable, droppable, toleranceMode) { @@ -227,7 +227,7 @@ $.ui.ddmanager = { if(!this.options) return; if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) - dropped = dropped || this._drop.call(this, event); + dropped = this._drop.call(this, event) || dropped; if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) { this.isout = 1; this.isover = 0; @@ -238,6 +238,12 @@ $.ui.ddmanager = { return dropped; }, + dragStart: function( draggable, event ) { + //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003) + draggable.element.parents( ":not(body,html)" ).bind( "scroll.droppable", function() { + if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event ); + }); + }, drag: function(draggable, event) { //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse. @@ -279,6 +285,11 @@ $.ui.ddmanager = { } }); + }, + dragStop: function( draggable, event ) { + draggable.element.parents( ":not(body,html)" ).unbind( "scroll.droppable" ); + //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003) + if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event ); } }; diff --git a/resources/jquery.ui/jquery.ui.mouse.js b/resources/jquery.ui/jquery.ui.mouse.js index b8db85ce..6bb65de0 100644 --- a/resources/jquery.ui/jquery.ui.mouse.js +++ b/resources/jquery.ui/jquery.ui.mouse.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Mouse 1.8.11 + * jQuery UI Mouse 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -12,6 +12,11 @@ */ (function( $, undefined ) { +var mouseHandled = false; +$( document ).mouseup( function( e ) { + mouseHandled = false; +}); + $.widget("ui.mouse", { options: { cancel: ':input,option', @@ -44,9 +49,7 @@ $.widget("ui.mouse", { _mouseDown: function(event) { // don't let more than one widget handle mouseStart - // TODO: figure out why we have to use originalEvent - event.originalEvent = event.originalEvent || {}; - if (event.originalEvent.mouseHandled) { return; } + if( mouseHandled ) { return }; // we may have missed mouseup (out of window) (this._mouseStarted && this._mouseUp(event)); @@ -55,7 +58,9 @@ $.widget("ui.mouse", { var self = this, btnIsLeft = (event.which == 1), - elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); + // event.target.nodeName works around a bug in IE 8 with + // disabled inputs (#7620) + elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { return true; } @@ -92,7 +97,8 @@ $.widget("ui.mouse", { .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); event.preventDefault(); - event.originalEvent.mouseHandled = true; + + mouseHandled = true; return true; }, diff --git a/resources/jquery.ui/jquery.ui.position.js b/resources/jquery.ui/jquery.ui.position.js index b66e59ef..8eb30f62 100644 --- a/resources/jquery.ui/jquery.ui.position.js +++ b/resources/jquery.ui/jquery.ui.position.js @@ -1,5 +1,5 @@ /* - * jQuery UI Position 1.8.11 + * jQuery UI Position 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -14,6 +14,7 @@ $.ui = $.ui || {}; var horizontalPositions = /left|center|right/, verticalPositions = /top|center|bottom/, center = "center", + support = {}, _position = $.fn.position, _offset = $.fn.offset; @@ -121,9 +122,11 @@ $.fn.position = function( options ) { position.top -= elemHeight / 2; } - // prevent fractions (see #5280) - position.left = Math.round( position.left ); - position.top = Math.round( position.top ); + // prevent fractions if jQuery version doesn't support them (see #5280) + if ( !support.fractions ) { + position.left = Math.round( position.left ); + position.top = Math.round( position.top ); + } collisionPosition = { left: position.left - marginLeft, @@ -249,4 +252,47 @@ if ( !$.offset.setOffset ) { }; } +// fraction support test (older versions of jQuery don't support fractions) +(function () { + var body = document.getElementsByTagName( "body" )[ 0 ], + div = document.createElement( "div" ), + testElement, testElementParent, testElementStyle, offset, offsetTotal; + + //Create a "fake body" for testing based on method used in jQuery.support + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: "-1000px", + top: "-1000px" + }); + } + for ( var i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || document.documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + div.style.cssText = "position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;"; + + offset = $( div ).offset( function( _, offset ) { + return offset; + }).offset(); + + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + offsetTotal = offset.top + offset.left + ( body ? 2000 : 0 ); + support.fractions = offsetTotal > 21 && offsetTotal < 22; +})(); + }( jQuery )); diff --git a/resources/jquery.ui/jquery.ui.progressbar.js b/resources/jquery.ui/jquery.ui.progressbar.js index c432132a..27bae872 100644 --- a/resources/jquery.ui/jquery.ui.progressbar.js +++ b/resources/jquery.ui/jquery.ui.progressbar.js @@ -1,5 +1,5 @@ /* - * jQuery UI Progressbar 1.8.11 + * jQuery UI Progressbar 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -95,6 +95,7 @@ $.widget( "ui.progressbar", { } this.valueDiv + .toggle( value > this.min ) .toggleClass( "ui-corner-right", value === this.options.max ) .width( percentage.toFixed(0) + "%" ); this.element.attr( "aria-valuenow", value ); @@ -102,7 +103,7 @@ $.widget( "ui.progressbar", { }); $.extend( $.ui.progressbar, { - version: "1.8.11" + version: "1.8.17" }); })( jQuery ); diff --git a/resources/jquery.ui/jquery.ui.resizable.js b/resources/jquery.ui/jquery.ui.resizable.js index 1d1c906e..52b1fc4f 100644 --- a/resources/jquery.ui/jquery.ui.resizable.js +++ b/resources/jquery.ui/jquery.ui.resizable.js @@ -1,5 +1,5 @@ /* - * jQuery UI Resizable 1.8.11 + * jQuery UI Resizable 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -176,10 +176,12 @@ $.widget("ui.resizable", $.ui.mouse, { $(this.element) .addClass("ui-resizable-autohide") .hover(function() { + if (o.disabled) return; $(this).removeClass("ui-resizable-autohide"); self._handles.show(); }, function(){ + if (o.disabled) return; if (!self.resizing) { $(this).addClass("ui-resizable-autohide"); self._handles.hide(); @@ -291,6 +293,8 @@ $.widget("ui.resizable", $.ui.mouse, { // Calculate the attrs that will be change var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff; + // Put this in the mouseDrag handler since the user can start pressing shift while resizing + this._updateVirtualBoundaries(event.shiftKey); if (this._aspectRatio || event.shiftKey) data = this._updateRatio(data, event); @@ -349,6 +353,32 @@ $.widget("ui.resizable", $.ui.mouse, { }, + _updateVirtualBoundaries: function(forceAspectRatio) { + var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b; + + b = { + minWidth: isNumber(o.minWidth) ? o.minWidth : 0, + maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity, + minHeight: isNumber(o.minHeight) ? o.minHeight : 0, + maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity + }; + + if(this._aspectRatio || forceAspectRatio) { + // We want to create an enclosing box whose aspect ration is the requested one + // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension + pMinWidth = b.minHeight * this.aspectRatio; + pMinHeight = b.minWidth / this.aspectRatio; + pMaxWidth = b.maxHeight * this.aspectRatio; + pMaxHeight = b.maxWidth / this.aspectRatio; + + if(pMinWidth > b.minWidth) b.minWidth = pMinWidth; + if(pMinHeight > b.minHeight) b.minHeight = pMinHeight; + if(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth; + if(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight; + } + this._vBoundaries = b; + }, + _updateCache: function(data) { var o = this.options; this.offset = this.helper.offset(); @@ -362,8 +392,8 @@ $.widget("ui.resizable", $.ui.mouse, { var o = this.options, cpos = this.position, csize = this.size, a = this.axis; - if (data.height) data.width = (csize.height * this.aspectRatio); - else if (data.width) data.height = (csize.width / this.aspectRatio); + if (isNumber(data.height)) data.width = (data.height * this.aspectRatio); + else if (isNumber(data.width)) data.height = (data.width / this.aspectRatio); if (a == 'sw') { data.left = cpos.left + (csize.width - data.width); @@ -379,7 +409,7 @@ $.widget("ui.resizable", $.ui.mouse, { _respectSize: function(data, event) { - var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis, + var el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis, ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height), isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height); @@ -519,7 +549,7 @@ $.widget("ui.resizable", $.ui.mouse, { }); $.extend($.ui.resizable, { - version: "1.8.11" + version: "1.8.17" }); /* diff --git a/resources/jquery.ui/jquery.ui.selectable.js b/resources/jquery.ui/jquery.ui.selectable.js index e3b91328..d790ac0d 100644 --- a/resources/jquery.ui/jquery.ui.selectable.js +++ b/resources/jquery.ui/jquery.ui.selectable.js @@ -1,5 +1,5 @@ /* - * jQuery UI Selectable 1.8.11 + * jQuery UI Selectable 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -33,6 +33,7 @@ $.widget("ui.selectable", $.ui.mouse, { var selectees; this.refresh = function() { selectees = $(self.options.filter, self.element[0]); + selectees.addClass("ui-selectee"); selectees.each(function() { var $this = $(this); var pos = $this.offset(); @@ -102,7 +103,7 @@ $.widget("ui.selectable", $.ui.mouse, { this.selectees.filter('.ui-selected').each(function() { var selectee = $.data(this, "selectable-item"); selectee.startselected = true; - if (!event.metaKey) { + if (!event.metaKey && !event.ctrlKey) { selectee.$element.removeClass('ui-selected'); selectee.selected = false; selectee.$element.addClass('ui-unselecting'); @@ -117,7 +118,7 @@ $.widget("ui.selectable", $.ui.mouse, { $(event.target).parents().andSelf().each(function() { var selectee = $.data(this, "selectable-item"); if (selectee) { - var doSelect = !event.metaKey || !selectee.$element.hasClass('ui-selected'); + var doSelect = (!event.metaKey && !event.ctrlKey) || !selectee.$element.hasClass('ui-selected'); selectee.$element .removeClass(doSelect ? "ui-unselecting" : "ui-selected") .addClass(doSelect ? "ui-selecting" : "ui-unselecting"); @@ -187,7 +188,7 @@ $.widget("ui.selectable", $.ui.mouse, { } else { // UNSELECT if (selectee.selecting) { - if (event.metaKey && selectee.startselected) { + if ((event.metaKey || event.ctrlKey) && selectee.startselected) { selectee.$element.removeClass('ui-selecting'); selectee.selecting = false; selectee.$element.addClass('ui-selected'); @@ -206,7 +207,7 @@ $.widget("ui.selectable", $.ui.mouse, { } } if (selectee.selected) { - if (!event.metaKey && !selectee.startselected) { + if (!event.metaKey && !event.ctrlKey && !selectee.startselected) { selectee.$element.removeClass('ui-selected'); selectee.selected = false; @@ -260,7 +261,7 @@ $.widget("ui.selectable", $.ui.mouse, { }); $.extend($.ui.selectable, { - version: "1.8.11" + version: "1.8.17" }); })(jQuery); diff --git a/resources/jquery.ui/jquery.ui.slider.js b/resources/jquery.ui/jquery.ui.slider.js index f02a922f..53fdc42a 100644 --- a/resources/jquery.ui/jquery.ui.slider.js +++ b/resources/jquery.ui/jquery.ui.slider.js @@ -1,5 +1,5 @@ /* - * jQuery UI Slider 1.8.11 + * jQuery UI Slider 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -36,7 +36,11 @@ $.widget( "ui.slider", $.ui.mouse, { _create: function() { var self = this, - o = this.options; + o = this.options, + existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), + handle = "", + handleCount = ( o.values && o.values.length ) || 1, + handles = []; this._keySliding = false; this._mouseSliding = false; @@ -50,57 +54,35 @@ $.widget( "ui.slider", $.ui.mouse, { " ui-slider-" + this.orientation + " ui-widget" + " ui-widget-content" + - " ui-corner-all" ); - - if ( o.disabled ) { - this.element.addClass( "ui-slider-disabled ui-disabled" ); - } + " ui-corner-all" + + ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); this.range = $([]); if ( o.range ) { if ( o.range === true ) { - this.range = $( "
" ); if ( !o.values ) { o.values = [ this._valueMin(), this._valueMin() ]; } if ( o.values.length && o.values.length !== 2 ) { o.values = [ o.values[0], o.values[0] ]; } - } else { - this.range = $( "
" ); - } - - this.range - .appendTo( this.element ) - .addClass( "ui-slider-range" ); - - if ( o.range === "min" || o.range === "max" ) { - this.range.addClass( "ui-slider-range-" + o.range ); } - // note: this isn't the most fittingly semantic framework class for this element, - // but worked best visually with a variety of themes - this.range.addClass( "ui-widget-header" ); - } - - if ( $( ".ui-slider-handle", this.element ).length === 0 ) { - $( "" ) + this.range = $( "
" ) .appendTo( this.element ) - .addClass( "ui-slider-handle" ); + .addClass( "ui-slider-range" + + // note: this isn't the most fittingly semantic framework class for this element, + // but worked best visually with a variety of themes + " ui-widget-header" + + ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); } - if ( o.values && o.values.length ) { - while ( $(".ui-slider-handle", this.element).length < o.values.length ) { - $( "" ) - .appendTo( this.element ) - .addClass( "ui-slider-handle" ); - } + for ( var i = existingHandles.length; i < handleCount; i += 1 ) { + handles.push( handle ); } - this.handles = $( ".ui-slider-handle", this.element ) - .addClass( "ui-state-default" + - " ui-corner-all" ); + this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( self.element ) ); this.handle = this.handles.eq( 0 ); @@ -466,6 +448,7 @@ $.widget( "ui.slider", $.ui.mouse, { this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, 0 ); + return; } return this._value(); @@ -480,6 +463,7 @@ $.widget( "ui.slider", $.ui.mouse, { this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, index ); + return; } if ( arguments.length ) { @@ -518,10 +502,10 @@ $.widget( "ui.slider", $.ui.mouse, { if ( value ) { this.handles.filter( ".ui-state-focus" ).blur(); this.handles.removeClass( "ui-state-hover" ); - this.handles.attr( "disabled", "disabled" ); + this.handles.propAttr( "disabled", true ); this.element.addClass( "ui-disabled" ); } else { - this.handles.removeAttr( "disabled" ); + this.handles.propAttr( "disabled", false ); this.element.removeClass( "ui-disabled" ); } break; @@ -592,7 +576,7 @@ $.widget( "ui.slider", $.ui.mouse, { return this._valueMax(); } var step = ( this.options.step > 0 ) ? this.options.step : 1, - valModStep = (val - this._valueMin()) % step; + valModStep = (val - this._valueMin()) % step, alignValue = val - valModStep; if ( Math.abs(valModStep) * 2 >= step ) { @@ -676,7 +660,7 @@ $.widget( "ui.slider", $.ui.mouse, { }); $.extend( $.ui.slider, { - version: "1.8.11" + version: "1.8.17" }); }(jQuery)); diff --git a/resources/jquery.ui/jquery.ui.sortable.js b/resources/jquery.ui/jquery.ui.sortable.js index 1a06dcae..26ba85f0 100644 --- a/resources/jquery.ui/jquery.ui.sortable.js +++ b/resources/jquery.ui/jquery.ui.sortable.js @@ -1,5 +1,5 @@ /* - * jQuery UI Sortable 1.8.11 + * jQuery UI Sortable 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -50,7 +50,7 @@ $.widget("ui.sortable", $.ui.mouse, { this.refresh(); //Let's determine if the items are being displayed horizontally - this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false; + this.floating = this.items.length ? o.axis === 'x' || (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false; //Let's determine the parent's offset this.offset = this.element.offset(); @@ -62,13 +62,11 @@ $.widget("ui.sortable", $.ui.mouse, { destroy: function() { this.element - .removeClass("ui-sortable ui-sortable-disabled") - .removeData("sortable") - .unbind(".sortable"); + .removeClass("ui-sortable ui-sortable-disabled"); this._mouseDestroy(); for ( var i = this.items.length - 1; i >= 0; i-- ) - this.items[i].item.removeData("sortable-item"); + this.items[i].item.removeData(this.widgetName + "-item"); return this; }, @@ -86,6 +84,7 @@ $.widget("ui.sortable", $.ui.mouse, { }, _mouseCapture: function(event, overrideHandle) { + var that = this; if (this.reverting) { return false; @@ -98,12 +97,12 @@ $.widget("ui.sortable", $.ui.mouse, { //Find out if the clicked node (or one of its parents) is a actual item in this.items var currentItem = null, self = this, nodes = $(event.target).parents().each(function() { - if($.data(this, 'sortable-item') == self) { + if($.data(this, that.widgetName + '-item') == self) { currentItem = $(this); return false; } }); - if($.data(event.target, 'sortable-item') == self) currentItem = $(event.target); + if($.data(event.target, that.widgetName + '-item') == self) currentItem = $(event.target); if(!currentItem) return false; if(this.options.handle && !overrideHandle) { @@ -528,7 +527,7 @@ $.widget("ui.sortable", $.ui.mouse, { for (var i = connectWith.length - 1; i >= 0; i--){ var cur = $(connectWith[i]); for (var j = cur.length - 1; j >= 0; j--){ - var inst = $.data(cur[j], 'sortable'); + var inst = $.data(cur[j], this.widgetName); if(inst && inst != this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not('.ui-sortable-placeholder'), inst]); } @@ -550,7 +549,7 @@ $.widget("ui.sortable", $.ui.mouse, { _removeCurrentsFromItems: function() { - var list = this.currentItem.find(":data(sortable-item)"); + var list = this.currentItem.find(":data(" + this.widgetName + "-item)"); for (var i=0; i < this.items.length; i++) { @@ -576,7 +575,7 @@ $.widget("ui.sortable", $.ui.mouse, { for (var i = connectWith.length - 1; i >= 0; i--){ var cur = $(connectWith[i]); for (var j = cur.length - 1; j >= 0; j--){ - var inst = $.data(cur[j], 'sortable'); + var inst = $.data(cur[j], this.widgetName); if(inst && inst != this && !inst.options.disabled) { queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, { item: this.currentItem }) : $(inst.options.items, inst.element), inst]); this.containers.push(inst); @@ -592,7 +591,7 @@ $.widget("ui.sortable", $.ui.mouse, { for (var j=0, queriesLength = _queries.length; j < queriesLength; j++) { var item = $(_queries[j]); - item.data('sortable-item', targetData); // Data for target checking (mouse manager) + item.data(this.widgetName + '-item', targetData); // Data for target checking (mouse manager) items.push({ item: item, @@ -615,6 +614,10 @@ $.widget("ui.sortable", $.ui.mouse, { for (var i = this.items.length - 1; i >= 0; i--){ var item = this.items[i]; + //We ignore calculating positions of all connected containers when we're not over them + if(item.instance != this.currentContainer && this.currentContainer && item.item[0] != this.currentItem[0]) + continue; + var t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item; if (!fast) { @@ -980,7 +983,7 @@ $.widget("ui.sortable", $.ui.mouse, { // We first have to update the dom position of the actual currentItem // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) - if(!this._noFinalSort && this.currentItem[0].parentNode) this.placeholder.before(this.currentItem); + if(!this._noFinalSort && this.currentItem.parent().length) this.placeholder.before(this.currentItem); this._noFinalSort = null; if(this.helper[0] == this.currentItem[0]) { @@ -1067,7 +1070,7 @@ $.widget("ui.sortable", $.ui.mouse, { }); $.extend($.ui.sortable, { - version: "1.8.11" + version: "1.8.17" }); })(jQuery); diff --git a/resources/jquery.ui/jquery.ui.tabs.js b/resources/jquery.ui/jquery.ui.tabs.js index 3be7ff49..ff7938ce 100644 --- a/resources/jquery.ui/jquery.ui.tabs.js +++ b/resources/jquery.ui/jquery.ui.tabs.js @@ -1,5 +1,5 @@ /* - * jQuery UI Tabs 1.8.11 + * jQuery UI Tabs 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -698,7 +698,7 @@ $.widget( "ui.tabs", { }); $.extend( $.ui.tabs, { - version: "1.8.11" + version: "1.8.17" }); /* diff --git a/resources/jquery.ui/jquery.ui.widget.js b/resources/jquery.ui/jquery.ui.widget.js index b6b1beea..facd77b3 100644 --- a/resources/jquery.ui/jquery.ui.widget.js +++ b/resources/jquery.ui/jquery.ui.widget.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Widget 1.8.11 + * jQuery UI Widget 1.8.17 * * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -14,7 +14,10 @@ if ( $.cleanData ) { var _cleanData = $.cleanData; $.cleanData = function( elems ) { for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - $( elem ).triggerHandler( "remove" ); + try { + $( elem ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} } _cleanData( elems ); }; @@ -25,7 +28,10 @@ if ( $.cleanData ) { if ( !keepData ) { if ( !selector || $.filter( selector, [ this ] ).length ) { $( "*", this ).add( [ this ] ).each(function() { - $( this ).triggerHandler( "remove" ); + try { + $( this ).triggerHandler( "remove" ); + // http://bugs.jquery.com/ticket/8235 + } catch( e ) {} }); } } @@ -233,21 +239,25 @@ $.Widget.prototype = { }, _trigger: function( type, event, data ) { - var callback = this.options[ type ]; + var prop, orig, + callback = this.options[ type ]; + data = data || {}; event = $.Event( event ); event.type = ( type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type ).toLowerCase(); - data = data || {}; + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if ( event.originalEvent ) { - for ( var i = $.event.props.length, prop; i; ) { - prop = $.event.props[ --i ]; - event[ prop ] = event.originalEvent[ prop ]; + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } } } diff --git a/resources/jquery.ui/themes/default/images/ui-anim_basic_16x16.gif b/resources/jquery.ui/themes/default/images/ui-anim_basic_16x16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-anim_basic_16x16.gif and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_flat_55_fbf9ee_40x100.png b/resources/jquery.ui/themes/default/images/ui-bg_flat_55_fbf9ee_40x100.png deleted file mode 100644 index 062f5807..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-bg_flat_55_fbf9ee_40x100.png and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_flat_65_ffffff_40x100.png b/resources/jquery.ui/themes/default/images/ui-bg_flat_65_ffffff_40x100.png deleted file mode 100644 index ac8b229a..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-bg_flat_65_ffffff_40x100.png and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_flat_75_cccccc_40x100.png b/resources/jquery.ui/themes/default/images/ui-bg_flat_75_cccccc_40x100.png deleted file mode 100644 index 5473afff..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-bg_flat_75_cccccc_40x100.png and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_flat_75_dadada_40x100.png b/resources/jquery.ui/themes/default/images/ui-bg_flat_75_dadada_40x100.png deleted file mode 100644 index 7b7b0744..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-bg_flat_75_dadada_40x100.png and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_flat_75_e6e6e6_40x100.png b/resources/jquery.ui/themes/default/images/ui-bg_flat_75_e6e6e6_40x100.png deleted file mode 100644 index 5b4ca1a0..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-bg_flat_75_e6e6e6_40x100.png and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_flat_95_fef1ec_40x100.png b/resources/jquery.ui/themes/default/images/ui-bg_flat_95_fef1ec_40x100.png deleted file mode 100644 index c61aad2e..00000000 Binary files a/resources/jquery.ui/themes/default/images/ui-bg_flat_95_fef1ec_40x100.png and /dev/null differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_glass_55_fbf9ee_1x400.png b/resources/jquery.ui/themes/default/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 00000000..ad3d6346 Binary files /dev/null and b/resources/jquery.ui/themes/default/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_glass_65_ffffff_1x400.png b/resources/jquery.ui/themes/default/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 00000000..42ccba26 Binary files /dev/null and b/resources/jquery.ui/themes/default/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_glass_75_dadada_1x400.png b/resources/jquery.ui/themes/default/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 00000000..5a46b47c Binary files /dev/null and b/resources/jquery.ui/themes/default/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_glass_75_e6e6e6_1x400.png b/resources/jquery.ui/themes/default/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 00000000..86c2baa6 Binary files /dev/null and b/resources/jquery.ui/themes/default/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png b/resources/jquery.ui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 00000000..4443fdc1 Binary files /dev/null and b/resources/jquery.ui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/resources/jquery.ui/themes/default/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 00000000..7c9fa6c6 Binary files /dev/null and b/resources/jquery.ui/themes/default/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-icons_222222_256x240.png b/resources/jquery.ui/themes/default/images/ui-icons_222222_256x240.png index b273ff11..ee039dc0 100644 Binary files a/resources/jquery.ui/themes/default/images/ui-icons_222222_256x240.png and b/resources/jquery.ui/themes/default/images/ui-icons_222222_256x240.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-icons_2e83ff_256x240.png b/resources/jquery.ui/themes/default/images/ui-icons_2e83ff_256x240.png index 84defe6e..45e8928e 100644 Binary files a/resources/jquery.ui/themes/default/images/ui-icons_2e83ff_256x240.png and b/resources/jquery.ui/themes/default/images/ui-icons_2e83ff_256x240.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-icons_454545_256x240.png b/resources/jquery.ui/themes/default/images/ui-icons_454545_256x240.png index 59bd45b9..7ec70d11 100644 Binary files a/resources/jquery.ui/themes/default/images/ui-icons_454545_256x240.png and b/resources/jquery.ui/themes/default/images/ui-icons_454545_256x240.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-icons_888888_256x240.png b/resources/jquery.ui/themes/default/images/ui-icons_888888_256x240.png index 6d02426c..5ba708c3 100644 Binary files a/resources/jquery.ui/themes/default/images/ui-icons_888888_256x240.png and b/resources/jquery.ui/themes/default/images/ui-icons_888888_256x240.png differ diff --git a/resources/jquery.ui/themes/default/images/ui-icons_cd0a0a_256x240.png b/resources/jquery.ui/themes/default/images/ui-icons_cd0a0a_256x240.png index 2ab019b7..7930a558 100644 Binary files a/resources/jquery.ui/themes/default/images/ui-icons_cd0a0a_256x240.png and b/resources/jquery.ui/themes/default/images/ui-icons_cd0a0a_256x240.png differ diff --git a/resources/jquery.ui/themes/default/jquery.ui.accordion.css b/resources/jquery.ui/themes/default/jquery.ui.accordion.css index 8d8a1a6e..e426c762 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.accordion.css +++ b/resources/jquery.ui/themes/default/jquery.ui.accordion.css @@ -1,12 +1,19 @@ -/* Accordion -----------------------------------*/ +/* + * jQuery UI Accordion 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } .ui-accordion .ui-accordion-li-fix { display: inline; } .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -/* IE7-/Win - Fix extra vertical space in lists */ -.ui-accordion a { zoom: 1; } .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; } \ No newline at end of file +.ui-accordion .ui-accordion-content-active { display: block; } diff --git a/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css b/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css index f287dbe9..4613938a 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css +++ b/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css @@ -1,13 +1,26 @@ -/* Autocomplete -----------------------------------*/ +/* + * jQuery UI Autocomplete 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ .ui-autocomplete { position: absolute; cursor: default; } -.ui-autocomplete-loading { background: white /* @embed */ url('images/ui-anim_basic_16x16.gif') right center no-repeat; } /* workarounds */ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ -/* Menu -----------------------------------*/ +/* + * jQuery UI Menu 1.8.17 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ .ui-menu { list-style:none; padding: 2px; diff --git a/resources/jquery.ui/themes/default/jquery.ui.button.css b/resources/jquery.ui/themes/default/jquery.ui.button.css index 47777a42..a7565af8 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.button.css +++ b/resources/jquery.ui/themes/default/jquery.ui.button.css @@ -1,6 +1,12 @@ -/* Button -----------------------------------*/ - +/* + * jQuery UI Button 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ @@ -11,15 +17,17 @@ button.ui-button-icons-only { width: 3.7em; } .ui-button .ui-button-text { display: block; line-height: 1.4; } .ui-button-text-only .ui-button-text { padding: .4em 1em; } .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } /* no icon support for input elements, provide padding by default */ input.ui-button { padding: .4em 1em; } /*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } /*button sets*/ @@ -28,8 +36,3 @@ input.ui-button { padding: .4em 1em; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ - - - - - diff --git a/resources/jquery.ui/themes/default/jquery.ui.core.css b/resources/jquery.ui/themes/default/jquery.ui.core.css index b3e81930..bde176d2 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.core.css +++ b/resources/jquery.ui/themes/default/jquery.ui.core.css @@ -1,20 +1,21 @@ /* -* jQuery UI CSS Framework -* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) -* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. -*/ + * jQuery UI CSS Framework 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } diff --git a/resources/jquery.ui/themes/default/jquery.ui.datepicker.css b/resources/jquery.ui/themes/default/jquery.ui.datepicker.css index 580a2929..6cb5aefc 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.datepicker.css +++ b/resources/jquery.ui/themes/default/jquery.ui.datepicker.css @@ -1,6 +1,13 @@ -/* Datepicker -----------------------------------*/ -.ui-datepicker { width: 17em; padding: .2em .2em 0; } +/* + * jQuery UI Datepicker 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } @@ -32,20 +39,20 @@ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } /* RTL support */ -/* @noflip */ .ui-datepicker-rtl { direction: rtl; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group { float:right; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ .ui-datepicker-cover { diff --git a/resources/jquery.ui/themes/default/jquery.ui.dialog.css b/resources/jquery.ui/themes/default/jquery.ui.dialog.css index f8354642..a5914ff1 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.dialog.css +++ b/resources/jquery.ui/themes/default/jquery.ui.dialog.css @@ -1,13 +1,21 @@ -/* Dialog -----------------------------------*/ +/* + * jQuery UI Dialog 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .5em 1em .3em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .2em 0; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } diff --git a/resources/jquery.ui/themes/default/jquery.ui.progressbar.css b/resources/jquery.ui/themes/default/jquery.ui.progressbar.css index bc0939ec..630fab39 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.progressbar.css +++ b/resources/jquery.ui/themes/default/jquery.ui.progressbar.css @@ -1,4 +1,11 @@ -/* Progressbar -----------------------------------*/ -.ui-progressbar { height:2em; text-align: left; } +/* + * jQuery UI Progressbar 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/resources/jquery.ui/themes/default/jquery.ui.resizable.css b/resources/jquery.ui/themes/default/jquery.ui.resizable.css index 366643b5..582bcb31 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.resizable.css +++ b/resources/jquery.ui/themes/default/jquery.ui.resizable.css @@ -1,7 +1,14 @@ -/* Resizable -----------------------------------*/ +/* + * jQuery UI Resizable 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ .ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } diff --git a/resources/jquery.ui/themes/default/jquery.ui.selectable.css b/resources/jquery.ui/themes/default/jquery.ui.selectable.css index c5d46ce2..b36b8988 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.selectable.css +++ b/resources/jquery.ui/themes/default/jquery.ui.selectable.css @@ -1,3 +1,10 @@ -/* Selectable -----------------------------------*/ -.ui-selectable-helper { border:1px dotted black } +/* + * jQuery UI Selectable 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } diff --git a/resources/jquery.ui/themes/default/jquery.ui.slider.css b/resources/jquery.ui/themes/default/jquery.ui.slider.css index 07c6f4e5..4cc54810 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.slider.css +++ b/resources/jquery.ui/themes/default/jquery.ui.slider.css @@ -1,5 +1,12 @@ -/* Slider -----------------------------------*/ +/* + * jQuery UI Slider 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } diff --git a/resources/jquery.ui/themes/default/jquery.ui.tabs.css b/resources/jquery.ui/themes/default/jquery.ui.tabs.css index 99e16dbd..fb827458 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.tabs.css +++ b/resources/jquery.ui/themes/default/jquery.ui.tabs.css @@ -1,5 +1,12 @@ -/* Tabs -----------------------------------*/ +/* + * jQuery UI Tabs 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } diff --git a/resources/jquery.ui/themes/default/jquery.ui.theme.css b/resources/jquery.ui/themes/default/jquery.ui.theme.css index 7a425f73..d0c93afb 100644 --- a/resources/jquery.ui/themes/default/jquery.ui.theme.css +++ b/resources/jquery.ui/themes/default/jquery.ui.theme.css @@ -1,40 +1,43 @@ - - /* -* jQuery UI CSS Framework -* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) -* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0&bgColorHeader=cccccc&bgTextureHeader=01_flat.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=01_flat.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=01_flat.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=01_flat.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=01_flat.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px -*/ + * jQuery UI CSS Framework 1.8.17 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */ /* Component containers ----------------------------------*/ -.ui-widget { font-family: sans-serif; font-size: 1em; } +.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } .ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa; /* @embed */ background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } -.ui-widget-content a { color: #222222; } -.ui-widget-header { border: 1px solid #aaaaaa; /* @embed */ background: #cccccc url(images/ui-bg_flat_75_cccccc_40x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } -.ui-widget-header a { color: #222222; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } +.ui-widget-content a { color: #222222/*{fcContent}*/; } +.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } +.ui-widget-header a { color: #222222/*{fcHeader}*/; } /* Interaction states ----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; /* @embed */ background: #e6e6e6 url(images/ui-bg_flat_75_e6e6e6_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; /* @embed */ background: #dadada url(images/ui-bg_flat_75_dadada_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; /* @embed */ background: #ffffff url(images/ui-bg_flat_65_ffffff_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; /* @embed */ background: #fbf9ee url(images/ui-bg_flat_55_fbf9ee_40x100.png) 50% 50% repeat-x; color: #363636; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; /* @embed */ background: #fef1ec url(images/ui-bg_flat_95_fef1ec_40x100.png) 50% 50% repeat-x; color: #cd0a0a; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } @@ -43,12 +46,14 @@ ----------------------------------*/ /* states and images */ -.ui-icon { width: 16px; height: 16px; } -.ui-icon, .ui-widget-content .ui-icon, .ui-widget-header .ui-icon { /* @embed */ background-image: url(images/ui-icons_222222_256x240.png); } -.ui-state-default .ui-icon { /* @embed */ background-image: url(images/ui-icons_888888_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-state-active .ui-icon { /* @embed */ background-image: url(images/ui-icons_454545_256x240.png); } -.ui-state-highlight .ui-icon { /* @embed */ background-image: url(images/ui-icons_2e83ff_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { /* @embed */ background-image: url(images/ui-icons_cd0a0a_256x240.png); } +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } @@ -232,17 +237,11 @@ ----------------------------------*/ /* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; } -.ui-corner-tr { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; } -.ui-corner-bl { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; } -.ui-corner-br { -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; } -.ui-corner-top { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; } -.ui-corner-right { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; } -.ui-corner-left { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; } -.ui-corner-all { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } /* Overlays */ -.ui-widget-overlay, .ui-widget-shadow { /* @embed */ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; } -.ui-widget-overlay { opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } \ No newline at end of file +.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } +.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/resources/jquery.ui/themes/vector/images/button-disabled-green.png b/resources/jquery.ui/themes/vector/images/button-disabled-green.png index cde520b5..16209389 100644 Binary files a/resources/jquery.ui/themes/vector/images/button-disabled-green.png and b/resources/jquery.ui/themes/vector/images/button-disabled-green.png differ diff --git a/resources/jquery.ui/themes/vector/images/button-down-green.png b/resources/jquery.ui/themes/vector/images/button-down-green.png index 1e54a0c4..edfd4275 100644 Binary files a/resources/jquery.ui/themes/vector/images/button-down-green.png and b/resources/jquery.ui/themes/vector/images/button-down-green.png differ diff --git a/resources/jquery.ui/themes/vector/images/button-off-green.png b/resources/jquery.ui/themes/vector/images/button-off-green.png index cdf46e7e..c6f5ee4f 100644 Binary files a/resources/jquery.ui/themes/vector/images/button-off-green.png and b/resources/jquery.ui/themes/vector/images/button-off-green.png differ diff --git a/resources/jquery.ui/themes/vector/images/button-over-green.png b/resources/jquery.ui/themes/vector/images/button-over-green.png index 0b8f6ef4..d47eb758 100644 Binary files a/resources/jquery.ui/themes/vector/images/button-over-green.png and b/resources/jquery.ui/themes/vector/images/button-over-green.png differ diff --git a/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css b/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css index 81022250..871bf690 100644 --- a/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css +++ b/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css @@ -1,6 +1,6 @@ /* Datepicker ----------------------------------*/ -.ui-datepicker { width: 17em; padding: .2em .2em 0; } +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } diff --git a/resources/jquery.ui/themes/vector/jquery.ui.dialog.css b/resources/jquery.ui/themes/vector/jquery.ui.dialog.css index 2b19fcdd..cd85f14e 100644 --- a/resources/jquery.ui/themes/vector/jquery.ui.dialog.css +++ b/resources/jquery.ui/themes/vector/jquery.ui.dialog.css @@ -8,7 +8,7 @@ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane button { float: right; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* Customizations */ diff --git a/resources/jquery/images/jquery.arrowSteps.divider-ltr.png b/resources/jquery/images/jquery.arrowSteps.divider-ltr.png new file mode 100644 index 00000000..0de1ae9c Binary files /dev/null and b/resources/jquery/images/jquery.arrowSteps.divider-ltr.png differ diff --git a/resources/jquery/images/jquery.arrowSteps.divider-rtl.png b/resources/jquery/images/jquery.arrowSteps.divider-rtl.png new file mode 100644 index 00000000..f3f06519 Binary files /dev/null and b/resources/jquery/images/jquery.arrowSteps.divider-rtl.png differ diff --git a/resources/jquery/images/jquery.arrowSteps.head-ltr.png b/resources/jquery/images/jquery.arrowSteps.head-ltr.png new file mode 100644 index 00000000..dbcc71b9 Binary files /dev/null and b/resources/jquery/images/jquery.arrowSteps.head-ltr.png differ diff --git a/resources/jquery/images/jquery.arrowSteps.head-rtl.png b/resources/jquery/images/jquery.arrowSteps.head-rtl.png new file mode 100644 index 00000000..760798bf Binary files /dev/null and b/resources/jquery/images/jquery.arrowSteps.head-rtl.png differ diff --git a/resources/jquery/images/jquery.arrowSteps.tail-ltr.png b/resources/jquery/images/jquery.arrowSteps.tail-ltr.png new file mode 100644 index 00000000..61340fa8 Binary files /dev/null and b/resources/jquery/images/jquery.arrowSteps.tail-ltr.png differ diff --git a/resources/jquery/images/jquery.arrowSteps.tail-rtl.png b/resources/jquery/images/jquery.arrowSteps.tail-rtl.png new file mode 100644 index 00000000..dd2d8e8a Binary files /dev/null and b/resources/jquery/images/jquery.arrowSteps.tail-rtl.png differ diff --git a/resources/jquery/images/marker.png b/resources/jquery/images/marker.png new file mode 100644 index 00000000..3929bbb5 Binary files /dev/null and b/resources/jquery/images/marker.png differ diff --git a/resources/jquery/images/mask.png b/resources/jquery/images/mask.png new file mode 100644 index 00000000..b0a4d406 Binary files /dev/null and b/resources/jquery/images/mask.png differ diff --git a/resources/jquery/images/spinner.gif b/resources/jquery/images/spinner.gif new file mode 100644 index 00000000..37d3a43d Binary files /dev/null and b/resources/jquery/images/spinner.gif differ diff --git a/resources/jquery/images/wheel.png b/resources/jquery/images/wheel.png new file mode 100644 index 00000000..97b343d9 Binary files /dev/null and b/resources/jquery/images/wheel.png differ diff --git a/resources/jquery/jquery.arrowSteps.css b/resources/jquery/jquery.arrowSteps.css new file mode 100644 index 00000000..60461032 --- /dev/null +++ b/resources/jquery/jquery.arrowSteps.css @@ -0,0 +1,45 @@ +.arrowSteps { + list-style-type: none; + list-style-image: none; + border: 1px solid #666666; + position: relative; +} + +.arrowSteps li { + float: left; + padding: 0px; + margin: 0px; + border: 0 none; +} + +.arrowSteps li div { + padding: 0.5em; + text-align: center; + white-space: nowrap; + overflow: hidden; +} + +.arrowSteps li.arrow div { + /* @embed */ + background: url(images/jquery.arrowSteps.divider-ltr.png) no-repeat right center; +} + +/* applied to the element preceding the highlighted step */ +.arrowSteps li.arrow.tail div { + /* @embed */ + background: url(images/jquery.arrowSteps.tail-ltr.png) no-repeat right center; +} + +/* this applies to all highlighted, including the last */ +.arrowSteps li.head div { + /* @embed */ + background: url(images/jquery.arrowSteps.head-ltr.png) no-repeat left center; + font-weight: bold; +} + +/* this applies to all highlighted arrows except the last */ +.arrowSteps li.arrow.head div { + /* TODO: eliminate duplication of jquery.arrowSteps.head.png embedding */ + /* @embed */ + background: url(images/jquery.arrowSteps.head-ltr.png) no-repeat right center; +} \ No newline at end of file diff --git a/resources/jquery/jquery.arrowSteps.js b/resources/jquery/jquery.arrowSteps.js new file mode 100644 index 00000000..f9637545 --- /dev/null +++ b/resources/jquery/jquery.arrowSteps.js @@ -0,0 +1,81 @@ +/** + * jQuery arrowSteps plugin + * Copyright Neil Kandalgaonkar, 2010 + * + * This work is licensed under the terms of the GNU General Public License, + * version 2 or later. + * (see http://www.fsf.org/licensing/licenses/gpl.html). + * Derivative works and later versions of the code must be free software + * licensed under the same or a compatible license. + * + * + * DESCRIPTION + * + * Show users their progress through a series of steps, via a row of items that fit + * together like arrows. One item can be highlighted at a time. + * + * + * SYNOPSIS + * + *
    + *
  • Guard!
  • + *
  • Turn!
  • + *
  • Parry!
  • + *
  • Dodge!
  • + *
  • Spin!
  • + *
  • Ha!
  • + *
  • Thrust!
  • + *
+ * + * + * + */ + +( function( $j ) { + $j.fn.arrowSteps = function() { + this.addClass( 'arrowSteps' ); + var $steps = this.find( 'li' ); + + var width = parseInt( 100 / $steps.length, 10 ); + $steps.css( 'width', width + '%' ); + + // every step except the last one has an arrow at the right hand side. Also add in the padding + // for the calculated arrow width. + var arrowWidth = parseInt( this.outerHeight(), 10 ); + $steps.filter( ':not(:last-child)' ).addClass( 'arrow' ) + .find( 'div' ).css( 'padding-right', arrowWidth.toString() + 'px' ); + + this.data( 'arrowSteps', $steps ); + return this; + }; + + $j.fn.arrowStepsHighlight = function( selector ) { + var $steps = this.data( 'arrowSteps' ); + var $previous; + $j.each( $steps, function( i, step ) { + var $step = $j( step ); + if ( $step.is( selector ) ) { + if ($previous) { + $previous.addClass( 'tail' ); + } + $step.addClass( 'head' ); + } else { + $step.removeClass( 'head tail lasthead' ); + } + $previous = $step; + } ); + }; + +} )( jQuery ); diff --git a/resources/jquery/jquery.autoEllipsis.js b/resources/jquery/jquery.autoEllipsis.js index 7d726894..9a5fcc9c 100644 --- a/resources/jquery/jquery.autoEllipsis.js +++ b/resources/jquery/jquery.autoEllipsis.js @@ -25,7 +25,7 @@ $.fn.autoEllipsis = function( options ) { $el.text( $el.data( 'autoEllipsis.originalText' ) ); } } - + // container element - used for measuring against var $container = $el; // trimmable text element - only the text within this element will be trimmed @@ -43,7 +43,7 @@ $.fn.autoEllipsis = function( options ) { .empty() .append( $trimmableText ); } - + var text = $container.text(); var trimmableText = $trimmableText.text(); var w = $container.width(); @@ -81,7 +81,7 @@ $.fn.autoEllipsis = function( options ) { return; } } - + if ( $trimmableText.width() + pw > w ) { switch ( options.position ) { case 'right': @@ -136,7 +136,7 @@ $.fn.autoEllipsis = function( options ) { } else { cache[text][w][options.position] = $container.html(); } - + } ); }; diff --git a/resources/jquery/jquery.byteLimit.js b/resources/jquery/jquery.byteLimit.js index c1d26fc4..10411924 100644 --- a/resources/jquery/jquery.byteLimit.js +++ b/resources/jquery/jquery.byteLimit.js @@ -6,24 +6,54 @@ ( function( $ ) { /** - * Enforces a byte limit to a textbox, so that UTF-8 entries are not arbitrarily truncated. + * Enforces a byte limit to a textbox, so that UTF-8 entries are counted as well, when, for example, + * a databae field has a byte limit rather than a character limit. + * Plugin rationale: Browser has native maxlength for number of characters, this plugin exists to + * limit number of bytes instead. + * + * Can be called with a custom limit (to use that limit instead of the maxlength attribute value), + * a filter function (in case the limit should apply to something other than the exact input value), + * or both. Order of arguments is important! + * + * @context {jQuery} Instance of jQuery for one or more input elements + * @param limit {Number} (optional) Limit to enforce, fallsback to maxLength-attribute, + * called with fetched value as argument. + * @param fn {Function} (optional) Function to call on the input string before assessing the length + * @return {jQuery} The context */ - $.fn.byteLimit = function( limit ) { + $.fn.byteLimit = function( limit, fn ) { + // If the first argument is the function, + // set fn to the first argument's value and ignore the second argument. + if ( $.isFunction( limit ) ) { + fn = limit; + limit = undefined; + } - // Default to current attribute value - if ( limit == null ) { - limit = this.attr( 'maxLength' ); + // Default limit to current attribute value + if ( limit === undefined ) { + limit = this.prop( 'maxLength' ); + } - // If passed, update/set attribute value instead + // Update/set attribute value, but only if there is no callback set. + // If there's a callback set, it's possible that the limit being enforced + // is too low (ie. if the callback would return "Foo" for "User:Foo"). + // Usually this isn't a problem since browsers ignore maxLength when setting + // the value property through JavaScript, but Safari 4 violates that rule, so + // we have to remove or not set the property if we have a callback. + if ( fn == undefined ) { + this.prop( 'maxLength', limit ); } else { - this.attr( 'maxLength', limit ); + this.removeProp( 'maxLength' ); } // Nothing passed and/or empty attribute, return without binding an event. - if ( limit == null ) { + if ( limit === undefined ) { return this; } + // Save function for reference + this.data( 'byteLimit-callback', fn ); + // We've got something, go for it: return this.keypress( function( e ) { // First check to see if this is actually a character key @@ -31,21 +61,22 @@ // Based on key-event info from http://unixpapa.com/js/key.html // jQuery should also normalize e.which to be consistent cross-browser, // however the same check is still needed regardless of jQuery. - + // Note: At the moment, for some older opera versions (~< 10.5) // some special keys won't be recognized (aka left arrow key). // Backspace will be, so not big issue. - + if ( e.which === 0 || e.charCode === 0 || e.which === 8 || e.ctrlKey || e.altKey || e.metaKey ) { return true; //a special key (backspace, etc) so don't interfere. } - - var len = $.byteLength( this.value ); - // Note that keypress returns a character code point, not a keycode. - // However, this may not be super reliable depending on how keys come in... - var charLen = $.byteLength( String.fromCharCode( e.which ) ); + + var val = fn !== undefined ? fn( $( this ).val() ): $( this ).val(), + len = $.byteLength( val ), + // Note that keypress returns a character code point, not a keycode. + // However, this may not be super reliable depending on how keys come in... + charLen = $.byteLength( String.fromCharCode( e.which ) ); if ( ( len + charLen ) > limit ) { e.preventDefault(); diff --git a/resources/jquery/jquery.checkboxShiftClick.js b/resources/jquery/jquery.checkboxShiftClick.js index cfa696d4..0a1d7d7d 100644 --- a/resources/jquery/jquery.checkboxShiftClick.js +++ b/resources/jquery/jquery.checkboxShiftClick.js @@ -16,9 +16,9 @@ $.fn.checkboxShiftClick = function( text ) { if ( prevCheckbox !== null && e.shiftKey ) { // Check or uncheck this one and all in-between checkboxes $box.slice( - Math.min( $box.index( prevCheckbox ), $box.index( e.target ) ), - Math.max( $box.index( prevCheckbox ), $box.index( e.target ) ) + 1 - ).attr( {checked: e.target.checked ? 'checked' : ''} ); + Math.min( $box.index( prevCheckbox ), $box.index( e.target ) ), + Math.max( $box.index( prevCheckbox ), $box.index( e.target ) ) + 1 + ).prop( 'checked', e.target.checked ? true : false ); } // Either way, update the prevCheckbox variable to the one clicked now prevCheckbox = e.target; diff --git a/resources/jquery/jquery.client.js b/resources/jquery/jquery.client.js index 8082fa7d..ae74a324 100644 --- a/resources/jquery/jquery.client.js +++ b/resources/jquery/jquery.client.js @@ -14,7 +14,7 @@ /* Public Methods */ $.client = { - + /** * Get an object containing information about the client. * @@ -37,18 +37,18 @@ } // Use the cached version if possible if ( profileCache[nav.userAgent] === undefined ) { - + /* Configuration */ - + // Name of browsers or layout engines we don't recognize var uk = 'unknown'; // Generic version digit var x = 'x'; // Strings found in user agent strings that need to be conformed - var wildUserAgents = [ 'Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3']; + var wildUserAgents = ['Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3']; // Translations for conforming user agent strings var userAgentTranslations = [ - // Tons of browsers lie about being something they are not + // Tons of browsers lie about being something they are not [/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''], // Chrome lives in the shadow of Safari still ['Chrome Safari', 'Chrome'], @@ -86,9 +86,9 @@ var platforms = ['win', 'mac', 'linux', 'sunos', 'solaris', 'iphone']; // Translations for conforming operating system names var platformTranslations = [['sunos', 'solaris']]; - + /* Methods */ - + // Performs multiple replacements on a string var translate = function( source, translations ) { for ( var i = 0; i < translations.length; i++ ) { @@ -96,9 +96,9 @@ } return source; }; - - /* Pre-processing */ - + + /* Pre-processing */ + var ua = nav.userAgent, match, name = uk, @@ -113,9 +113,9 @@ } // Everything will be in lowercase from now on ua = ua.toLowerCase(); - + /* Extraction */ - + if ( match = new RegExp( '(' + names.join( '|' ) + ')' ).exec( ua ) ) { name = translate( match[1], nameTranslations ); } @@ -131,9 +131,9 @@ if ( match = new RegExp( '(' + versionPrefixes.join( '|' ) + ')' + versionSuffix ).exec( ua ) ) { version = match[3]; } - + /* Edge Cases -- did I mention about how user agent string lie? */ - + // Decode Safari's crazy 400+ version numbers if ( name.match( /safari/ ) && version > 400 ) { version = '2.0'; @@ -143,9 +143,9 @@ version = ua.match( /version\/([0-9\.]*)/i )[1] || 10; } var versionNumber = parseFloat( version, 10 ) || 0.0; - + /* Caching */ - + profileCache[nav.userAgent] = { 'name': name, 'layout': layout, @@ -158,7 +158,7 @@ } return profileCache[nav.userAgent]; }, - + /** * Checks the current browser against a support map object to determine if the browser has been black-listed or * not. If the browser was not configured specifically it is assumed to work. It is assumed that the body diff --git a/resources/jquery/jquery.collapsibleTabs.js b/resources/jquery/jquery.collapsibleTabs.js index b2399727..1784f86a 100644 --- a/resources/jquery/jquery.collapsibleTabs.js +++ b/resources/jquery/jquery.collapsibleTabs.js @@ -7,7 +7,7 @@ if( !this.length ) return this; //merge options into the defaults var $settings = $.extend( {}, $.collapsibleTabs.defaults, options ); - + this.each( function() { var $this = $( this ); // add the element to our array of collapsible managers @@ -20,7 +20,7 @@ $.collapsibleTabs.addData( $( this ) ); } ); } ); - + // if we haven't already bound our resize hanlder, bind it now if( !$.collapsibleTabs.boundEvent ) { $( window ) @@ -70,15 +70,15 @@ $.collapsibleTabs.instances.each( function() { var $this = $( this ), data = $.collapsibleTabs.getSettings( $this ); if( data.shifting ) return; - + // if the two navigations are colliding if( $this.children( data.collapsible ).length > 0 && data.collapseCondition() ) { - + $this.trigger( "beforeTabCollapse" ); // move the element to the dropdown menu $.collapsibleTabs.moveToCollapsed( $this.children( data.collapsible + ':last' ) ); } - + // if there are still moveable items in the dropdown menu, // and there is sufficient space to place them in the tab container if( $( data.collapsedContainer + ' ' + data.collapsible ).length > 0 diff --git a/resources/jquery/jquery.color.js b/resources/jquery/jquery.color.js index b0419428..8a619b5c 100644 --- a/resources/jquery/jquery.color.js +++ b/resources/jquery/jquery.color.js @@ -15,7 +15,7 @@ fx.start = getColor( fx.elem, attr ); fx.end = $.colorUtil.getRGB( fx.end ); } - + fx.elem.style[attr] = 'rgb(' + [ Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0), Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0), @@ -24,7 +24,7 @@ } } ); - + function getColor(elem, attr) { var color; @@ -33,12 +33,12 @@ // Keep going until we find an element that has color, or we hit the body if ( color != '' && color != 'transparent' || $.nodeName(elem, 'body') ) - break; + break; attr = 'backgroundColor'; } while ( elem = elem.parentNode ); return $.colorUtil.getRGB(color); }; - + } )( jQuery ); diff --git a/resources/jquery/jquery.cycle.all.js b/resources/jquery/jquery.cycle.all.js new file mode 100644 index 00000000..d57fb720 --- /dev/null +++ b/resources/jquery/jquery.cycle.all.js @@ -0,0 +1,1529 @@ +/*! + * jQuery Cycle Plugin (with Transition Definitions) + * Examples and documentation at: http://jquery.malsup.com/cycle/ + * Copyright (c) 2007-2010 M. Alsup + * Version: 2.9999 (13-NOV-2011) + * Dual licensed under the MIT and GPL licenses. + * http://jquery.malsup.com/license.html + * Requires: jQuery v1.3.2 or later + */ +;(function($, undefined) { + +var ver = '2.9999'; + +// if $.support is not defined (pre jQuery 1.3) add what I need +if ($.support == undefined) { + $.support = { + opacity: !($.browser.msie) + }; +} + +function debug(s) { + $.fn.cycle.debug && log(s); +} +function log() { + window.console && console.log && console.log('[cycle] ' + Array.prototype.join.call(arguments,' ')); +} +$.expr[':'].paused = function(el) { + return el.cyclePause; +} + + +// the options arg can be... +// a number - indicates an immediate transition should occur to the given slide index +// a string - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc) +// an object - properties to control the slideshow +// +// the arg2 arg can be... +// the name of an fx (only used in conjunction with a numeric value for 'options') +// the value true (only used in first arg == 'resume') and indicates +// that the resume should occur immediately (not wait for next timeout) + +$.fn.cycle = function(options, arg2) { + var o = { s: this.selector, c: this.context }; + + // in 1.3+ we can fix mistakes with the ready state + if (this.length === 0 && options != 'stop') { + if (!$.isReady && o.s) { + log('DOM not ready, queuing slideshow'); + $(function() { + $(o.s,o.c).cycle(options,arg2); + }); + return this; + } + // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready() + log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)')); + return this; + } + + // iterate the matched nodeset + return this.each(function() { + var opts = handleArguments(this, options, arg2); + if (opts === false) + return; + + opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink; + + // stop existing slideshow for this container (if there is one) + if (this.cycleTimeout) + clearTimeout(this.cycleTimeout); + this.cycleTimeout = this.cyclePause = 0; + + var $cont = $(this); + var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children(); + var els = $slides.get(); + + var opts2 = buildOptions($cont, $slides, els, opts, o); + if (opts2 === false) + return; + + if (els.length < 2) { + log('terminating; too few slides: ' + els.length); + return; + } + + var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards); + + // if it's an auto slideshow, kick it off + if (startTime) { + startTime += (opts2.delay || 0); + if (startTime < 10) + startTime = 10; + debug('first timeout: ' + startTime); + this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts.backwards)}, startTime); + } + }); +}; + +function triggerPause(cont, byHover, onPager) { + var opts = $(cont).data('cycle.opts'); + var paused = !!cont.cyclePause; + if (paused && opts.paused) + opts.paused(cont, opts, byHover, onPager); + else if (!paused && opts.resumed) + opts.resumed(cont, opts, byHover, onPager); +} + +// process the args that were passed to the plugin fn +function handleArguments(cont, options, arg2) { + if (cont.cycleStop == undefined) + cont.cycleStop = 0; + if (options === undefined || options === null) + options = {}; + if (options.constructor == String) { + switch(options) { + case 'destroy': + case 'stop': + var opts = $(cont).data('cycle.opts'); + if (!opts) + return false; + cont.cycleStop++; // callbacks look for change + if (cont.cycleTimeout) + clearTimeout(cont.cycleTimeout); + cont.cycleTimeout = 0; + opts.elements && $(opts.elements).stop(); + $(cont).removeData('cycle.opts'); + if (options == 'destroy') + destroy(opts); + return false; + case 'toggle': + cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1; + checkInstantResume(cont.cyclePause, arg2, cont); + triggerPause(cont); + return false; + case 'pause': + cont.cyclePause = 1; + triggerPause(cont); + return false; + case 'resume': + cont.cyclePause = 0; + checkInstantResume(false, arg2, cont); + triggerPause(cont); + return false; + case 'prev': + case 'next': + var opts = $(cont).data('cycle.opts'); + if (!opts) { + log('options not found, "prev/next" ignored'); + return false; + } + $.fn.cycle[options](opts); + return false; + default: + options = { fx: options }; + }; + return options; + } + else if (options.constructor == Number) { + // go to the requested slide + var num = options; + options = $(cont).data('cycle.opts'); + if (!options) { + log('options not found, can not advance slide'); + return false; + } + if (num < 0 || num >= options.elements.length) { + log('invalid slide index: ' + num); + return false; + } + options.nextSlide = num; + if (cont.cycleTimeout) { + clearTimeout(cont.cycleTimeout); + cont.cycleTimeout = 0; + } + if (typeof arg2 == 'string') + options.oneTimeFx = arg2; + go(options.elements, options, 1, num >= options.currSlide); + return false; + } + return options; + + function checkInstantResume(isPaused, arg2, cont) { + if (!isPaused && arg2 === true) { // resume now! + var options = $(cont).data('cycle.opts'); + if (!options) { + log('options not found, can not resume'); + return false; + } + if (cont.cycleTimeout) { + clearTimeout(cont.cycleTimeout); + cont.cycleTimeout = 0; + } + go(options.elements, options, 1, !options.backwards); + } + } +}; + +function removeFilter(el, opts) { + if (!$.support.opacity && opts.cleartype && el.style.filter) { + try { el.style.removeAttribute('filter'); } + catch(smother) {} // handle old opera versions + } +}; + +// unbind event handlers +function destroy(opts) { + if (opts.next) + $(opts.next).unbind(opts.prevNextEvent); + if (opts.prev) + $(opts.prev).unbind(opts.prevNextEvent); + + if (opts.pager || opts.pagerAnchorBuilder) + $.each(opts.pagerAnchors || [], function() { + this.unbind().remove(); + }); + opts.pagerAnchors = null; + if (opts.destroy) // callback + opts.destroy(opts); +}; + +// one-time initialization +function buildOptions($cont, $slides, els, options, o) { + var startingSlideSpecified; + // support metadata plugin (v1.0 and v2.0) + var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {}); + var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null; + if (meta) + opts = $.extend(opts, meta); + if (opts.autostop) + opts.countdown = opts.autostopCount || els.length; + + var cont = $cont[0]; + $cont.data('cycle.opts', opts); + opts.$cont = $cont; + opts.stopCount = cont.cycleStop; + opts.elements = els; + opts.before = opts.before ? [opts.before] : []; + opts.after = opts.after ? [opts.after] : []; + + // push some after callbacks + if (!$.support.opacity && opts.cleartype) + opts.after.push(function() { removeFilter(this, opts); }); + if (opts.continuous) + opts.after.push(function() { go(els,opts,0,!opts.backwards); }); + + saveOriginalOpts(opts); + + // clearType corrections + if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) + clearTypeFix($slides); + + // container requires non-static position so that slides can be position within + if ($cont.css('position') == 'static') + $cont.css('position', 'relative'); + if (opts.width) + $cont.width(opts.width); + if (opts.height && opts.height != 'auto') + $cont.height(opts.height); + + if (opts.startingSlide != undefined) { + opts.startingSlide = parseInt(opts.startingSlide,10); + if (opts.startingSlide >= els.length || opts.startSlide < 0) + opts.startingSlide = 0; // catch bogus input + else + startingSlideSpecified = true; + } + else if (opts.backwards) + opts.startingSlide = els.length - 1; + else + opts.startingSlide = 0; + + // if random, mix up the slide array + if (opts.random) { + opts.randomMap = []; + for (var i = 0; i < els.length; i++) + opts.randomMap.push(i); + opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;}); + if (startingSlideSpecified) { + // try to find the specified starting slide and if found set start slide index in the map accordingly + for ( var cnt = 0; cnt < els.length; cnt++ ) { + if ( opts.startingSlide == opts.randomMap[cnt] ) { + opts.randomIndex = cnt; + } + } + } + else { + opts.randomIndex = 1; + opts.startingSlide = opts.randomMap[1]; + } + } + else if (opts.startingSlide >= els.length) + opts.startingSlide = 0; // catch bogus input + opts.currSlide = opts.startingSlide || 0; + var first = opts.startingSlide; + + // set position and zIndex on all the slides + $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) { + var z; + if (opts.backwards) + z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i; + else + z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i; + $(this).css('z-index', z) + }); + + // make sure first slide is visible + $(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case + removeFilter(els[first], opts); + + // stretch slides + if (opts.fit) { + if (!opts.aspect) { + if (opts.width) + $slides.width(opts.width); + if (opts.height && opts.height != 'auto') + $slides.height(opts.height); + } else { + $slides.each(function(){ + var $slide = $(this); + var ratio = (opts.aspect === true) ? $slide.width()/$slide.height() : opts.aspect; + if( opts.width && $slide.width() != opts.width ) { + $slide.width( opts.width ); + $slide.height( opts.width / ratio ); + } + + if( opts.height && $slide.height() < opts.height ) { + $slide.height( opts.height ); + $slide.width( opts.height * ratio ); + } + }); + } + } + + if (opts.center && ((!opts.fit) || opts.aspect)) { + $slides.each(function(){ + var $slide = $(this); + $slide.css({ + "margin-left": opts.width ? + ((opts.width - $slide.width()) / 2) + "px" : + 0, + "margin-top": opts.height ? + ((opts.height - $slide.height()) / 2) + "px" : + 0 + }); + }); + } + + if (opts.center && !opts.fit && !opts.slideResize) { + $slides.each(function(){ + var $slide = $(this); + $slide.css({ + "margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0, + "margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0 + }); + }); + } + + // stretch container + var reshape = opts.containerResize && !$cont.innerHeight(); + if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9 + var maxw = 0, maxh = 0; + for(var j=0; j < els.length; j++) { + var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight(); + if (!w) w = e.offsetWidth || e.width || $e.attr('width'); + if (!h) h = e.offsetHeight || e.height || $e.attr('height'); + maxw = w > maxw ? w : maxw; + maxh = h > maxh ? h : maxh; + } + if (maxw > 0 && maxh > 0) + $cont.css({width:maxw+'px',height:maxh+'px'}); + } + + var pauseFlag = false; // https://github.com/malsup/cycle/issues/44 + if (opts.pause) + $cont.hover( + function(){ + pauseFlag = true; + this.cyclePause++; + triggerPause(cont, true); + }, + function(){ + pauseFlag && this.cyclePause--; + triggerPause(cont, true); + } + ); + + if (supportMultiTransitions(opts) === false) + return false; + + // apparently a lot of people use image slideshows without height/width attributes on the images. + // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that. + var requeue = false; + options.requeueAttempts = options.requeueAttempts || 0; + $slides.each(function() { + // try to get height/width of each slide + var $el = $(this); + this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0); + this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0); + + if ( $el.is('img') ) { + // sigh.. sniffing, hacking, shrugging... this crappy hack tries to account for what browsers do when + // an image is being downloaded and the markup did not include sizing info (height/width attributes); + // there seems to be some "default" sizes used in this situation + var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete); + var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete); + var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete); + var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete); + // don't requeue for images that are still loading but have a valid size + if (loadingIE || loadingFF || loadingOp || loadingOther) { + if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever + log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH); + setTimeout(function() {$(o.s,o.c).cycle(options)}, opts.requeueTimeout); + requeue = true; + return false; // break each loop + } + else { + log('could not determine size of image: '+this.src, this.cycleW, this.cycleH); + } + } + } + return true; + }); + + if (requeue) + return false; + + opts.cssBefore = opts.cssBefore || {}; + opts.cssAfter = opts.cssAfter || {}; + opts.cssFirst = opts.cssFirst || {}; + opts.animIn = opts.animIn || {}; + opts.animOut = opts.animOut || {}; + + $slides.not(':eq('+first+')').css(opts.cssBefore); + $($slides[first]).css(opts.cssFirst); + + if (opts.timeout) { + opts.timeout = parseInt(opts.timeout,10); + // ensure that timeout and speed settings are sane + if (opts.speed.constructor == String) + opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed,10); + if (!opts.sync) + opts.speed = opts.speed / 2; + + var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250; + while((opts.timeout - opts.speed) < buffer) // sanitize timeout + opts.timeout += opts.speed; + } + if (opts.easing) + opts.easeIn = opts.easeOut = opts.easing; + if (!opts.speedIn) + opts.speedIn = opts.speed; + if (!opts.speedOut) + opts.speedOut = opts.speed; + + opts.slideCount = els.length; + opts.currSlide = opts.lastSlide = first; + if (opts.random) { + if (++opts.randomIndex == els.length) + opts.randomIndex = 0; + opts.nextSlide = opts.randomMap[opts.randomIndex]; + } + else if (opts.backwards) + opts.nextSlide = opts.startingSlide == 0 ? (els.length-1) : opts.startingSlide-1; + else + opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1; + + // run transition init fn + if (!opts.multiFx) { + var init = $.fn.cycle.transitions[opts.fx]; + if ($.isFunction(init)) + init($cont, $slides, opts); + else if (opts.fx != 'custom' && !opts.multiFx) { + log('unknown transition: ' + opts.fx,'; slideshow terminating'); + return false; + } + } + + // fire artificial events + var e0 = $slides[first]; + if (!opts.skipInitializationCallbacks) { + if (opts.before.length) + opts.before[0].apply(e0, [e0, e0, opts, true]); + if (opts.after.length) + opts.after[0].apply(e0, [e0, e0, opts, true]); + } + if (opts.next) + $(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1)}); + if (opts.prev) + $(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0)}); + if (opts.pager || opts.pagerAnchorBuilder) + buildPager(els,opts); + + exposeAddSlide(opts, els); + + return opts; +}; + +// save off original opts so we can restore after clearing state +function saveOriginalOpts(opts) { + opts.original = { before: [], after: [] }; + opts.original.cssBefore = $.extend({}, opts.cssBefore); + opts.original.cssAfter = $.extend({}, opts.cssAfter); + opts.original.animIn = $.extend({}, opts.animIn); + opts.original.animOut = $.extend({}, opts.animOut); + $.each(opts.before, function() { opts.original.before.push(this); }); + $.each(opts.after, function() { opts.original.after.push(this); }); +}; + +function supportMultiTransitions(opts) { + var i, tx, txs = $.fn.cycle.transitions; + // look for multiple effects + if (opts.fx.indexOf(',') > 0) { + opts.multiFx = true; + opts.fxs = opts.fx.replace(/\s*/g,'').split(','); + // discard any bogus effect names + for (i=0; i < opts.fxs.length; i++) { + var fx = opts.fxs[i]; + tx = txs[fx]; + if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) { + log('discarding unknown transition: ',fx); + opts.fxs.splice(i,1); + i--; + } + } + // if we have an empty list then we threw everything away! + if (!opts.fxs.length) { + log('No valid transitions named; slideshow terminating.'); + return false; + } + } + else if (opts.fx == 'all') { // auto-gen the list of transitions + opts.multiFx = true; + opts.fxs = []; + for (p in txs) { + tx = txs[p]; + if (txs.hasOwnProperty(p) && $.isFunction(tx)) + opts.fxs.push(p); + } + } + if (opts.multiFx && opts.randomizeEffects) { + // munge the fxs array to make effect selection random + var r1 = Math.floor(Math.random() * 20) + 30; + for (i = 0; i < r1; i++) { + var r2 = Math.floor(Math.random() * opts.fxs.length); + opts.fxs.push(opts.fxs.splice(r2,1)[0]); + } + debug('randomized fx sequence: ',opts.fxs); + } + return true; +}; + +// provide a mechanism for adding slides after the slideshow has started +function exposeAddSlide(opts, els) { + opts.addSlide = function(newSlide, prepend) { + var $s = $(newSlide), s = $s[0]; + if (!opts.autostopCount) + opts.countdown++; + els[prepend?'unshift':'push'](s); + if (opts.els) + opts.els[prepend?'unshift':'push'](s); // shuffle needs this + opts.slideCount = els.length; + + // add the slide to the random map and resort + if (opts.random) { + opts.randomMap.push(opts.slideCount-1); + opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;}); + } + + $s.css('position','absolute'); + $s[prepend?'prependTo':'appendTo'](opts.$cont); + + if (prepend) { + opts.currSlide++; + opts.nextSlide++; + } + + if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) + clearTypeFix($s); + + if (opts.fit && opts.width) + $s.width(opts.width); + if (opts.fit && opts.height && opts.height != 'auto') + $s.height(opts.height); + s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height(); + s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width(); + + $s.css(opts.cssBefore); + + if (opts.pager || opts.pagerAnchorBuilder) + $.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts); + + if ($.isFunction(opts.onAddSlide)) + opts.onAddSlide($s); + else + $s.hide(); // default behavior + }; +} + +// reset internal state; we do this on every pass in order to support multiple effects +$.fn.cycle.resetState = function(opts, fx) { + fx = fx || opts.fx; + opts.before = []; opts.after = []; + opts.cssBefore = $.extend({}, opts.original.cssBefore); + opts.cssAfter = $.extend({}, opts.original.cssAfter); + opts.animIn = $.extend({}, opts.original.animIn); + opts.animOut = $.extend({}, opts.original.animOut); + opts.fxFn = null; + $.each(opts.original.before, function() { opts.before.push(this); }); + $.each(opts.original.after, function() { opts.after.push(this); }); + + // re-init + var init = $.fn.cycle.transitions[fx]; + if ($.isFunction(init)) + init(opts.$cont, $(opts.elements), opts); +}; + +// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt +function go(els, opts, manual, fwd) { + // opts.busy is true if we're in the middle of an animation + if (manual && opts.busy && opts.manualTrump) { + // let manual transitions requests trump active ones + debug('manualTrump in go(), stopping active transition'); + $(els).stop(true,true); + opts.busy = 0; + } + // don't begin another timeout-based transition if there is one active + if (opts.busy) { + debug('transition active, ignoring new tx request'); + return; + } + + var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide]; + + // stop cycling if we have an outstanding stop request + if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual) + return; + + // check to see if we should stop cycling based on autostop options + if (!manual && !p.cyclePause && !opts.bounce && + ((opts.autostop && (--opts.countdown <= 0)) || + (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) { + if (opts.end) + opts.end(opts); + return; + } + + // if slideshow is paused, only transition on a manual trigger + var changed = false; + if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) { + changed = true; + var fx = opts.fx; + // keep trying to get the slide size if we don't have it yet + curr.cycleH = curr.cycleH || $(curr).height(); + curr.cycleW = curr.cycleW || $(curr).width(); + next.cycleH = next.cycleH || $(next).height(); + next.cycleW = next.cycleW || $(next).width(); + + // support multiple transition types + if (opts.multiFx) { + if (fwd && (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length)) + opts.lastFx = 0; + else if (!fwd && (opts.lastFx == undefined || --opts.lastFx < 0)) + opts.lastFx = opts.fxs.length - 1; + fx = opts.fxs[opts.lastFx]; + } + + // one-time fx overrides apply to: $('div').cycle(3,'zoom'); + if (opts.oneTimeFx) { + fx = opts.oneTimeFx; + opts.oneTimeFx = null; + } + + $.fn.cycle.resetState(opts, fx); + + // run the before callbacks + if (opts.before.length) + $.each(opts.before, function(i,o) { + if (p.cycleStop != opts.stopCount) return; + o.apply(next, [curr, next, opts, fwd]); + }); + + // stage the after callacks + var after = function() { + opts.busy = 0; + $.each(opts.after, function(i,o) { + if (p.cycleStop != opts.stopCount) return; + o.apply(next, [curr, next, opts, fwd]); + }); + if (!p.cycleStop) { + // queue next transition + queueNext(); + } + }; + + debug('tx firing('+fx+'); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide); + + // get ready to perform the transition + opts.busy = 1; + if (opts.fxFn) // fx function provided? + opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent); + else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ? + $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent); + else + $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent); + } + else { + queueNext(); + } + + if (changed || opts.nextSlide == opts.currSlide) { + // calculate the next slide + opts.lastSlide = opts.currSlide; + if (opts.random) { + opts.currSlide = opts.nextSlide; + if (++opts.randomIndex == els.length) { + opts.randomIndex = 0; + opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;}); + } + opts.nextSlide = opts.randomMap[opts.randomIndex]; + if (opts.nextSlide == opts.currSlide) + opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1; + } + else if (opts.backwards) { + var roll = (opts.nextSlide - 1) < 0; + if (roll && opts.bounce) { + opts.backwards = !opts.backwards; + opts.nextSlide = 1; + opts.currSlide = 0; + } + else { + opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1; + opts.currSlide = roll ? 0 : opts.nextSlide+1; + } + } + else { // sequence + var roll = (opts.nextSlide + 1) == els.length; + if (roll && opts.bounce) { + opts.backwards = !opts.backwards; + opts.nextSlide = els.length-2; + opts.currSlide = els.length-1; + } + else { + opts.nextSlide = roll ? 0 : opts.nextSlide+1; + opts.currSlide = roll ? els.length-1 : opts.nextSlide-1; + } + } + } + if (changed && opts.pager) + opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass); + + function queueNext() { + // stage the next transition + var ms = 0, timeout = opts.timeout; + if (opts.timeout && !opts.continuous) { + ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd); + if (opts.fx == 'shuffle') + ms -= opts.speedOut; + } + else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic + ms = 10; + if (ms > 0) + p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.backwards) }, ms); + } +}; + +// invoked after transition +$.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) { + $(pager).each(function() { + $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName); + }); +}; + +// calculate timeout value for current transition +function getTimeout(curr, next, opts, fwd) { + if (opts.timeoutFn) { + // call user provided calc fn + var t = opts.timeoutFn.call(curr,curr,next,opts,fwd); + while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout + t += opts.speed; + debug('calculated timeout: ' + t + '; speed: ' + opts.speed); + if (t !== false) + return t; + } + return opts.timeout; +}; + +// expose next/prev function, caller must pass in state +$.fn.cycle.next = function(opts) { advance(opts,1); }; +$.fn.cycle.prev = function(opts) { advance(opts,0);}; + +// advance slide forward or back +function advance(opts, moveForward) { + var val = moveForward ? 1 : -1; + var els = opts.elements; + var p = opts.$cont[0], timeout = p.cycleTimeout; + if (timeout) { + clearTimeout(timeout); + p.cycleTimeout = 0; + } + if (opts.random && val < 0) { + // move back to the previously display slide + opts.randomIndex--; + if (--opts.randomIndex == -2) + opts.randomIndex = els.length-2; + else if (opts.randomIndex == -1) + opts.randomIndex = els.length-1; + opts.nextSlide = opts.randomMap[opts.randomIndex]; + } + else if (opts.random) { + opts.nextSlide = opts.randomMap[opts.randomIndex]; + } + else { + opts.nextSlide = opts.currSlide + val; + if (opts.nextSlide < 0) { + if (opts.nowrap) return false; + opts.nextSlide = els.length - 1; + } + else if (opts.nextSlide >= els.length) { + if (opts.nowrap) return false; + opts.nextSlide = 0; + } + } + + var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated + if ($.isFunction(cb)) + cb(val > 0, opts.nextSlide, els[opts.nextSlide]); + go(els, opts, 1, moveForward); + return false; +}; + +function buildPager(els, opts) { + var $p = $(opts.pager); + $.each(els, function(i,o) { + $.fn.cycle.createPagerAnchor(i,o,$p,els,opts); + }); + opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass); +}; + +$.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) { + var a; + if ($.isFunction(opts.pagerAnchorBuilder)) { + a = opts.pagerAnchorBuilder(i,el); + debug('pagerAnchorBuilder('+i+', el) returned: ' + a); + } + else + a = ''+(i+1)+''; + + if (!a) + return; + var $a = $(a); + // don't reparent if anchor is in the dom + if ($a.parents('body').length === 0) { + var arr = []; + if ($p.length > 1) { + $p.each(function() { + var $clone = $a.clone(true); + $(this).append($clone); + arr.push($clone[0]); + }); + $a = $(arr); + } + else { + $a.appendTo($p); + } + } + + opts.pagerAnchors = opts.pagerAnchors || []; + opts.pagerAnchors.push($a); + + var pagerFn = function(e) { + e.preventDefault(); + opts.nextSlide = i; + var p = opts.$cont[0], timeout = p.cycleTimeout; + if (timeout) { + clearTimeout(timeout); + p.cycleTimeout = 0; + } + var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated + if ($.isFunction(cb)) + cb(opts.nextSlide, els[opts.nextSlide]); + go(els,opts,1,opts.currSlide < i); // trigger the trans +// return false; // <== allow bubble + } + + if ( /mouseenter|mouseover/i.test(opts.pagerEvent) ) { + $a.hover(pagerFn, function(){/* no-op */} ); + } + else { + $a.bind(opts.pagerEvent, pagerFn); + } + + if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble) + $a.bind('click.cycle', function(){return false;}); // suppress click + + var cont = opts.$cont[0]; + var pauseFlag = false; // https://github.com/malsup/cycle/issues/44 + if (opts.pauseOnPagerHover) { + $a.hover( + function() { + pauseFlag = true; + cont.cyclePause++; + triggerPause(cont,true,true); + }, function() { + pauseFlag && cont.cyclePause--; + triggerPause(cont,true,true); + } + ); + } +}; + +// helper fn to calculate the number of slides between the current and the next +$.fn.cycle.hopsFromLast = function(opts, fwd) { + var hops, l = opts.lastSlide, c = opts.currSlide; + if (fwd) + hops = c > l ? c - l : opts.slideCount - l; + else + hops = c < l ? l - c : l + opts.slideCount - c; + return hops; +}; + +// fix clearType problems in ie6 by setting an explicit bg color +// (otherwise text slides look horrible during a fade transition) +function clearTypeFix($slides) { + debug('applying clearType background-color hack'); + function hex(s) { + s = parseInt(s,10).toString(16); + return s.length < 2 ? '0'+s : s; + }; + function getBg(e) { + for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) { + var v = $.css(e,'background-color'); + if (v && v.indexOf('rgb') >= 0 ) { + var rgb = v.match(/\d+/g); + return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]); + } + if (v && v != 'transparent') + return v; + } + return '#ffffff'; + }; + $slides.each(function() { $(this).css('background-color', getBg(this)); }); +}; + +// reset common props before the next transition +$.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) { + $(opts.elements).not(curr).hide(); + if (typeof opts.cssBefore.opacity == 'undefined') + opts.cssBefore.opacity = 1; + opts.cssBefore.display = 'block'; + if (opts.slideResize && w !== false && next.cycleW > 0) + opts.cssBefore.width = next.cycleW; + if (opts.slideResize && h !== false && next.cycleH > 0) + opts.cssBefore.height = next.cycleH; + opts.cssAfter = opts.cssAfter || {}; + opts.cssAfter.display = 'none'; + $(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0)); + $(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1)); +}; + +// the actual fn for effecting a transition +$.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) { + var $l = $(curr), $n = $(next); + var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut; + $n.css(opts.cssBefore); + if (speedOverride) { + if (typeof speedOverride == 'number') + speedIn = speedOut = speedOverride; + else + speedIn = speedOut = 1; + easeIn = easeOut = null; + } + var fn = function() { + $n.animate(opts.animIn, speedIn, easeIn, function() { + cb(); + }); + }; + $l.animate(opts.animOut, speedOut, easeOut, function() { + $l.css(opts.cssAfter); + if (!opts.sync) + fn(); + }); + if (opts.sync) fn(); +}; + +// transition definitions - only fade is defined here, transition pack defines the rest +$.fn.cycle.transitions = { + fade: function($cont, $slides, opts) { + $slides.not(':eq('+opts.currSlide+')').css('opacity',0); + opts.before.push(function(curr,next,opts) { + $.fn.cycle.commonReset(curr,next,opts); + opts.cssBefore.opacity = 0; + }); + opts.animIn = { opacity: 1 }; + opts.animOut = { opacity: 0 }; + opts.cssBefore = { top: 0, left: 0 }; + } +}; + +$.fn.cycle.ver = function() { return ver; }; + +// override these globally if you like (they are all optional) +$.fn.cycle.defaults = { + activePagerClass: 'activeSlide', // class name used for the active pager link + after: null, // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag) + allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling + animIn: null, // properties that define how the slide animates in + animOut: null, // properties that define how the slide animates out + aspect: false, // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option) + autostop: 0, // true to end slideshow after X transitions (where X == slide count) + autostopCount: 0, // number of transitions (optionally used with autostop to define X) + backwards: false, // true to start slideshow at last slide and move backwards through the stack + before: null, // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag) + center: null, // set to true to have cycle add top/left margin to each slide (use with width and height options) + cleartype: !$.support.opacity, // true if clearType corrections should be applied (for IE) + cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides) + containerResize: 1, // resize container to fit largest slide + continuous: 0, // true to start next transition immediately after current one completes + cssAfter: null, // properties that defined the state of the slide after transitioning out + cssBefore: null, // properties that define the initial state of the slide before transitioning in + delay: 0, // additional delay (in ms) for first transition (hint: can be negative) + easeIn: null, // easing for "in" transition + easeOut: null, // easing for "out" transition + easing: null, // easing method for both in and out transitions + end: null, // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options) + fastOnEvent: 0, // force fast transitions when triggered manually (via pager or prev/next); value == time in ms + fit: 0, // force slides to fit container + fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle') + fxFn: null, // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag) + height: 'auto', // container height (if the 'fit' option is true, the slides will be set to this height as well) + manualTrump: true, // causes manual transition to stop an active transition instead of being ignored + metaAttr: 'cycle',// data- attribute that holds the option data for the slideshow + next: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide + nowrap: 0, // true to prevent slideshow from wrapping + onPagerEvent: null, // callback fn for pager events: function(zeroBasedSlideIndex, slideElement) + onPrevNextEvent: null,// callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement) + pager: null, // element, jQuery object, or jQuery selector string for the element to use as pager container + pagerAnchorBuilder: null, // callback fn for building anchor links: function(index, DOMelement) + pagerEvent: 'click.cycle', // name of event which drives the pager navigation + pause: 0, // true to enable "pause on hover" + pauseOnPagerHover: 0, // true to pause when hovering over pager link + prev: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide + prevNextEvent:'click.cycle',// event which drives the manual transition to the previous or next slide + random: 0, // true for random, false for sequence (not applicable to shuffle fx) + randomizeEffects: 1, // valid when multiple effects are used; true to make the effect sequence random + requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded + requeueTimeout: 250, // ms delay for requeue + rev: 0, // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle) + shuffle: null, // coords for shuffle animation, ex: { top:15, left: 200 } + skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition + slideExpr: null, // expression for selecting slides (if something other than all children is required) + slideResize: 1, // force slide width/height to fixed size before every transition + speed: 1000, // speed of the transition (any valid fx speed value) + speedIn: null, // speed of the 'in' transition + speedOut: null, // speed of the 'out' transition + startingSlide: undefined, // zero-based index of the first slide to be displayed + sync: 1, // true if in/out transitions should occur simultaneously + timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance) + timeoutFn: null, // callback for determining per-slide timeout value: function(currSlideElement, nextSlideElement, options, forwardFlag) + updateActivePagerLink: null, // callback fn invoked to update the active pager link (adds/removes activePagerClass style) + width: null // container width (if the 'fit' option is true, the slides will be set to this width as well) +}; + +})(jQuery); + + +/*! + * jQuery Cycle Plugin Transition Definitions + * This script is a plugin for the jQuery Cycle Plugin + * Examples and documentation at: http://malsup.com/jquery/cycle/ + * Copyright (c) 2007-2010 M. Alsup + * Version: 2.73 + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +(function($) { + +// +// These functions define slide initialization and properties for the named +// transitions. To save file size feel free to remove any of these that you +// don't need. +// +$.fn.cycle.transitions.none = function($cont, $slides, opts) { + opts.fxFn = function(curr,next,opts,after){ + $(next).show(); + $(curr).hide(); + after(); + }; +}; + +// not a cross-fade, fadeout only fades out the top slide +$.fn.cycle.transitions.fadeout = function($cont, $slides, opts) { + $slides.not(':eq('+opts.currSlide+')').css({ display: 'block', 'opacity': 1 }); + opts.before.push(function(curr,next,opts,w,h,rev) { + $(curr).css('zIndex',opts.slideCount + (!rev === true ? 1 : 0)); + $(next).css('zIndex',opts.slideCount + (!rev === true ? 0 : 1)); + }); + opts.animIn.opacity = 1; + opts.animOut.opacity = 0; + opts.cssBefore.opacity = 1; + opts.cssBefore.display = 'block'; + opts.cssAfter.zIndex = 0; +}; + +// scrollUp/Down/Left/Right +$.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) { + $cont.css('overflow','hidden'); + opts.before.push($.fn.cycle.commonReset); + var h = $cont.height(); + opts.cssBefore.top = h; + opts.cssBefore.left = 0; + opts.cssFirst.top = 0; + opts.animIn.top = 0; + opts.animOut.top = -h; +}; +$.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) { + $cont.css('overflow','hidden'); + opts.before.push($.fn.cycle.commonReset); + var h = $cont.height(); + opts.cssFirst.top = 0; + opts.cssBefore.top = -h; + opts.cssBefore.left = 0; + opts.animIn.top = 0; + opts.animOut.top = h; +}; +$.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) { + $cont.css('overflow','hidden'); + opts.before.push($.fn.cycle.commonReset); + var w = $cont.width(); + opts.cssFirst.left = 0; + opts.cssBefore.left = w; + opts.cssBefore.top = 0; + opts.animIn.left = 0; + opts.animOut.left = 0-w; +}; +$.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) { + $cont.css('overflow','hidden'); + opts.before.push($.fn.cycle.commonReset); + var w = $cont.width(); + opts.cssFirst.left = 0; + opts.cssBefore.left = -w; + opts.cssBefore.top = 0; + opts.animIn.left = 0; + opts.animOut.left = w; +}; +$.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) { + $cont.css('overflow','hidden').width(); + opts.before.push(function(curr, next, opts, fwd) { + if (opts.rev) + fwd = !fwd; + $.fn.cycle.commonReset(curr,next,opts); + opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW); + opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW; + }); + opts.cssFirst.left = 0; + opts.cssBefore.top = 0; + opts.animIn.left = 0; + opts.animOut.top = 0; +}; +$.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) { + $cont.css('overflow','hidden'); + opts.before.push(function(curr, next, opts, fwd) { + if (opts.rev) + fwd = !fwd; + $.fn.cycle.commonReset(curr,next,opts); + opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1); + opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH; + }); + opts.cssFirst.top = 0; + opts.cssBefore.left = 0; + opts.animIn.top = 0; + opts.animOut.left = 0; +}; + +// slideX/slideY +$.fn.cycle.transitions.slideX = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $(opts.elements).not(curr).hide(); + $.fn.cycle.commonReset(curr,next,opts,false,true); + opts.animIn.width = next.cycleW; + }); + opts.cssBefore.left = 0; + opts.cssBefore.top = 0; + opts.cssBefore.width = 0; + opts.animIn.width = 'show'; + opts.animOut.width = 0; +}; +$.fn.cycle.transitions.slideY = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $(opts.elements).not(curr).hide(); + $.fn.cycle.commonReset(curr,next,opts,true,false); + opts.animIn.height = next.cycleH; + }); + opts.cssBefore.left = 0; + opts.cssBefore.top = 0; + opts.cssBefore.height = 0; + opts.animIn.height = 'show'; + opts.animOut.height = 0; +}; + +// shuffle +$.fn.cycle.transitions.shuffle = function($cont, $slides, opts) { + var i, w = $cont.css('overflow', 'visible').width(); + $slides.css({left: 0, top: 0}); + opts.before.push(function(curr,next,opts) { + $.fn.cycle.commonReset(curr,next,opts,true,true,true); + }); + // only adjust speed once! + if (!opts.speedAdjusted) { + opts.speed = opts.speed / 2; // shuffle has 2 transitions + opts.speedAdjusted = true; + } + opts.random = 0; + opts.shuffle = opts.shuffle || {left:-w, top:15}; + opts.els = []; + for (i=0; i < $slides.length; i++) + opts.els.push($slides[i]); + + for (i=0; i < opts.currSlide; i++) + opts.els.push(opts.els.shift()); + + // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!) + opts.fxFn = function(curr, next, opts, cb, fwd) { + if (opts.rev) + fwd = !fwd; + var $el = fwd ? $(curr) : $(next); + $(next).css(opts.cssBefore); + var count = opts.slideCount; + $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() { + var hops = $.fn.cycle.hopsFromLast(opts, fwd); + for (var k=0; k < hops; k++) + fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop()); + if (fwd) { + for (var i=0, len=opts.els.length; i < len; i++) + $(opts.els[i]).css('z-index', len-i+count); + } + else { + var z = $(curr).css('z-index'); + $el.css('z-index', parseInt(z,10)+1+count); + } + $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() { + $(fwd ? this : curr).hide(); + if (cb) cb(); + }); + }); + }; + $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 }); +}; + +// turnUp/Down/Left/Right +$.fn.cycle.transitions.turnUp = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,true,false); + opts.cssBefore.top = next.cycleH; + opts.animIn.height = next.cycleH; + opts.animOut.width = next.cycleW; + }); + opts.cssFirst.top = 0; + opts.cssBefore.left = 0; + opts.cssBefore.height = 0; + opts.animIn.top = 0; + opts.animOut.height = 0; +}; +$.fn.cycle.transitions.turnDown = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,true,false); + opts.animIn.height = next.cycleH; + opts.animOut.top = curr.cycleH; + }); + opts.cssFirst.top = 0; + opts.cssBefore.left = 0; + opts.cssBefore.top = 0; + opts.cssBefore.height = 0; + opts.animOut.height = 0; +}; +$.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,false,true); + opts.cssBefore.left = next.cycleW; + opts.animIn.width = next.cycleW; + }); + opts.cssBefore.top = 0; + opts.cssBefore.width = 0; + opts.animIn.left = 0; + opts.animOut.width = 0; +}; +$.fn.cycle.transitions.turnRight = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,false,true); + opts.animIn.width = next.cycleW; + opts.animOut.left = curr.cycleW; + }); + $.extend(opts.cssBefore, { top: 0, left: 0, width: 0 }); + opts.animIn.left = 0; + opts.animOut.width = 0; +}; + +// zoom +$.fn.cycle.transitions.zoom = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,false,false,true); + opts.cssBefore.top = next.cycleH/2; + opts.cssBefore.left = next.cycleW/2; + $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH }); + $.extend(opts.animOut, { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 }); + }); + opts.cssFirst.top = 0; + opts.cssFirst.left = 0; + opts.cssBefore.width = 0; + opts.cssBefore.height = 0; +}; + +// fadeZoom +$.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,false,false); + opts.cssBefore.left = next.cycleW/2; + opts.cssBefore.top = next.cycleH/2; + $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH }); + }); + opts.cssBefore.width = 0; + opts.cssBefore.height = 0; + opts.animOut.opacity = 0; +}; + +// blindX +$.fn.cycle.transitions.blindX = function($cont, $slides, opts) { + var w = $cont.css('overflow','hidden').width(); + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts); + opts.animIn.width = next.cycleW; + opts.animOut.left = curr.cycleW; + }); + opts.cssBefore.left = w; + opts.cssBefore.top = 0; + opts.animIn.left = 0; + opts.animOut.left = w; +}; +// blindY +$.fn.cycle.transitions.blindY = function($cont, $slides, opts) { + var h = $cont.css('overflow','hidden').height(); + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts); + opts.animIn.height = next.cycleH; + opts.animOut.top = curr.cycleH; + }); + opts.cssBefore.top = h; + opts.cssBefore.left = 0; + opts.animIn.top = 0; + opts.animOut.top = h; +}; +// blindZ +$.fn.cycle.transitions.blindZ = function($cont, $slides, opts) { + var h = $cont.css('overflow','hidden').height(); + var w = $cont.width(); + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts); + opts.animIn.height = next.cycleH; + opts.animOut.top = curr.cycleH; + }); + opts.cssBefore.top = h; + opts.cssBefore.left = w; + opts.animIn.top = 0; + opts.animIn.left = 0; + opts.animOut.top = h; + opts.animOut.left = w; +}; + +// growX - grow horizontally from centered 0 width +$.fn.cycle.transitions.growX = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,false,true); + opts.cssBefore.left = this.cycleW/2; + opts.animIn.left = 0; + opts.animIn.width = this.cycleW; + opts.animOut.left = 0; + }); + opts.cssBefore.top = 0; + opts.cssBefore.width = 0; +}; +// growY - grow vertically from centered 0 height +$.fn.cycle.transitions.growY = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,true,false); + opts.cssBefore.top = this.cycleH/2; + opts.animIn.top = 0; + opts.animIn.height = this.cycleH; + opts.animOut.top = 0; + }); + opts.cssBefore.height = 0; + opts.cssBefore.left = 0; +}; + +// curtainX - squeeze in both edges horizontally +$.fn.cycle.transitions.curtainX = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,false,true,true); + opts.cssBefore.left = next.cycleW/2; + opts.animIn.left = 0; + opts.animIn.width = this.cycleW; + opts.animOut.left = curr.cycleW/2; + opts.animOut.width = 0; + }); + opts.cssBefore.top = 0; + opts.cssBefore.width = 0; +}; +// curtainY - squeeze in both edges vertically +$.fn.cycle.transitions.curtainY = function($cont, $slides, opts) { + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,true,false,true); + opts.cssBefore.top = next.cycleH/2; + opts.animIn.top = 0; + opts.animIn.height = next.cycleH; + opts.animOut.top = curr.cycleH/2; + opts.animOut.height = 0; + }); + opts.cssBefore.height = 0; + opts.cssBefore.left = 0; +}; + +// cover - curr slide covered by next slide +$.fn.cycle.transitions.cover = function($cont, $slides, opts) { + var d = opts.direction || 'left'; + var w = $cont.css('overflow','hidden').width(); + var h = $cont.height(); + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts); + if (d == 'right') + opts.cssBefore.left = -w; + else if (d == 'up') + opts.cssBefore.top = h; + else if (d == 'down') + opts.cssBefore.top = -h; + else + opts.cssBefore.left = w; + }); + opts.animIn.left = 0; + opts.animIn.top = 0; + opts.cssBefore.top = 0; + opts.cssBefore.left = 0; +}; + +// uncover - curr slide moves off next slide +$.fn.cycle.transitions.uncover = function($cont, $slides, opts) { + var d = opts.direction || 'left'; + var w = $cont.css('overflow','hidden').width(); + var h = $cont.height(); + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,true,true,true); + if (d == 'right') + opts.animOut.left = w; + else if (d == 'up') + opts.animOut.top = -h; + else if (d == 'down') + opts.animOut.top = h; + else + opts.animOut.left = -w; + }); + opts.animIn.left = 0; + opts.animIn.top = 0; + opts.cssBefore.top = 0; + opts.cssBefore.left = 0; +}; + +// toss - move top slide and fade away +$.fn.cycle.transitions.toss = function($cont, $slides, opts) { + var w = $cont.css('overflow','visible').width(); + var h = $cont.height(); + opts.before.push(function(curr, next, opts) { + $.fn.cycle.commonReset(curr,next,opts,true,true,true); + // provide default toss settings if animOut not provided + if (!opts.animOut.left && !opts.animOut.top) + $.extend(opts.animOut, { left: w*2, top: -h/2, opacity: 0 }); + else + opts.animOut.opacity = 0; + }); + opts.cssBefore.left = 0; + opts.cssBefore.top = 0; + opts.animIn.left = 0; +}; + +// wipe - clip animation +$.fn.cycle.transitions.wipe = function($cont, $slides, opts) { + var w = $cont.css('overflow','hidden').width(); + var h = $cont.height(); + opts.cssBefore = opts.cssBefore || {}; + var clip; + if (opts.clip) { + if (/l2r/.test(opts.clip)) + clip = 'rect(0px 0px '+h+'px 0px)'; + else if (/r2l/.test(opts.clip)) + clip = 'rect(0px '+w+'px '+h+'px '+w+'px)'; + else if (/t2b/.test(opts.clip)) + clip = 'rect(0px '+w+'px 0px 0px)'; + else if (/b2t/.test(opts.clip)) + clip = 'rect('+h+'px '+w+'px '+h+'px 0px)'; + else if (/zoom/.test(opts.clip)) { + var top = parseInt(h/2,10); + var left = parseInt(w/2,10); + clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)'; + } + } + + opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)'; + + var d = opts.cssBefore.clip.match(/(\d+)/g); + var t = parseInt(d[0],10), r = parseInt(d[1],10), b = parseInt(d[2],10), l = parseInt(d[3],10); + + opts.before.push(function(curr, next, opts) { + if (curr == next) return; + var $curr = $(curr), $next = $(next); + $.fn.cycle.commonReset(curr,next,opts,true,true,false); + opts.cssAfter.display = 'block'; + + var step = 1, count = parseInt((opts.speedIn / 13),10) - 1; + (function f() { + var tt = t ? t - parseInt(step * (t/count),10) : 0; + var ll = l ? l - parseInt(step * (l/count),10) : 0; + var bb = b < h ? b + parseInt(step * ((h-b)/count || 1),10) : h; + var rr = r < w ? r + parseInt(step * ((w-r)/count || 1),10) : w; + $next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' }); + (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none'); + })(); + }); + $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 }); + opts.animIn = { left: 0 }; + opts.animOut = { left: 0 }; +}; + +})(jQuery); diff --git a/resources/jquery/jquery.expandableField.js b/resources/jquery/jquery.expandableField.js index ebe29a41..3c65d016 100644 --- a/resources/jquery/jquery.expandableField.js +++ b/resources/jquery/jquery.expandableField.js @@ -1,5 +1,5 @@ /** - * This plugin provides functionallity to expand a text box on focus to double it's current width + * This plugin provides functionality to expand a text box on focus to double it's current width * * Usage: * diff --git a/resources/jquery/jquery.farbtastic.css b/resources/jquery/jquery.farbtastic.css new file mode 100644 index 00000000..1c6428f8 --- /dev/null +++ b/resources/jquery/jquery.farbtastic.css @@ -0,0 +1,54 @@ +/** + * Farbtastic Color Picker 1.2 + * © 2008 Steven Wittens + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +.farbtastic { + position: relative; +} +.farbtastic * { + position: absolute; + cursor: crosshair; +} +.farbtastic, .farbtastic .wheel { + width: 195px; + height: 195px; +} +.farbtastic .color, .farbtastic .overlay { + top: 47px; + left: 47px; + width: 101px; + height: 101px; +} +.farbtastic .wheel { + /* @embed */ + background: url(images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} +.farbtastic .overlay { + /* @embed */ + background: url(images/mask.png) no-repeat; +} +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px 0 0 -8px; + overflow: hidden; + /* @embed */ + background: url(images/marker.png) no-repeat; +} + diff --git a/resources/jquery/jquery.farbtastic.js b/resources/jquery/jquery.farbtastic.js new file mode 100644 index 00000000..18810857 --- /dev/null +++ b/resources/jquery/jquery.farbtastic.js @@ -0,0 +1,286 @@ +/** + * Farbtastic Color Picker 1.2 + * © 2008 Steven Wittens + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +//Adapted to uniform style with jQuery UI widgets and slightly change behavior +//TODO: +// - remove duplicated code by replacing it with jquery.colorUtils and modern jQuery +// - uniform code style + +jQuery.fn.farbtastic = function (callback) { + $.farbtastic(this, callback); + return this; +}; + +jQuery.farbtastic = function (container, callback) { + var container = $(container).get(0); + return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback)); +} + +jQuery._farbtastic = function (container, callback) { + // Store farbtastic object + var fb = this; + + // Insert markup + $(container).html('
'); + $(container).addClass('ui-widget'); + var e = $('.farbtastic', container); + fb.wheel = $('.wheel', container).get(0); + // Dimensions + fb.radius = 84; + fb.square = 100; + fb.width = 194; + + // Fix background PNGs in IE6 + if (navigator.appVersion.match(/MSIE [0-6]\./)) { + $('*', e).each(function () { + if (this.currentStyle.backgroundImage != 'none') { + var image = this.currentStyle.backgroundImage; + image = this.currentStyle.backgroundImage.substring(5, image.length - 2); + $(this).css({ + 'backgroundImage': 'none', + 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')" + }); + } + }); + } + + /** + * Link to the given element(s) or callback. + */ + fb.linkTo = function (callback) { + // Unbind previous nodes + if (typeof fb.callback == 'object') { + $(fb.callback).unbind('keyup', fb.updateValue); + } + + // Reset color + fb.color = null; + + // Bind callback or elements + if (typeof callback == 'function') { + fb.callback = callback; + } + else if (typeof callback == 'object' || typeof callback == 'string') { + fb.callback = $(callback); + fb.callback.bind('keyup', fb.updateValue); + if (fb.callback.get(0).value) { + fb.setColor(fb.callback.get(0).value); + } + } + return this; + } + fb.updateValue = function (event) { + if (this.value != fb.color) { + fb.setColor(this.value); + } + } + + /** + * Change color with HTML syntax #123456 + */ + fb.setColor = function (color) { + var rgb = $.colorUtil.getRGB( color ); + if (fb.color != color && rgb) { + rgb = rgb.slice( 0 ); //make a clone + //TODO: rewrite code so that this is not needed + rgb[0] /= 255; + rgb[1] /= 255; + rgb[2] /= 255; + fb.color = color; + fb.rgb = rgb; + fb.hsl = fb.RGBToHSL(fb.rgb); + fb.updateDisplay(); + } + return this; + } + + /** + * Change color with HSL triplet [0..1, 0..1, 0..1] + */ + fb.setHSL = function (hsl) { + fb.hsl = hsl; + fb.rgb = fb.HSLToRGB(hsl); + fb.color = fb.pack(fb.rgb); + fb.updateDisplay(); + return this; + } + + ///////////////////////////////////////////////////// + + /** + * Retrieve the coordinates of the given event relative to the center + * of the widget. + */ + fb.widgetCoords = function (event) { + var ref = $( fb.wheel ).offset(); + return { + x: event.pageX - ref.left - fb.width / 2, + y: event.pageY - ref.top - fb.width / 2 + }; + } + + /** + * Mousedown handler + */ + fb.mousedown = function (event) { + // Capture mouse + if (!document.dragging) { + $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup); + document.dragging = true; + } + + // Check which area is being dragged + var pos = fb.widgetCoords(event); + fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square; + + // Process + fb.mousemove(event); + return false; + } + + /** + * Mousemove handler + */ + fb.mousemove = function (event) { + // Get coordinates relative to color picker center + var pos = fb.widgetCoords(event); + + // Set new HSL parameters + if (fb.circleDrag) { + var hue = Math.atan2(pos.x, -pos.y) / 6.28; + if (hue < 0) hue += 1; + fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]); + } + else { + var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5)); + var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5)); + fb.setHSL([fb.hsl[0], sat, lum]); + } + return false; + } + + /** + * Mouseup handler + */ + fb.mouseup = function () { + // Uncapture mouse + $(document).unbind('mousemove', fb.mousemove); + $(document).unbind('mouseup', fb.mouseup); + document.dragging = false; + } + + /** + * Update the markers and styles + */ + fb.updateDisplay = function () { + // Markers + var angle = fb.hsl[0] * 6.28; + $('.h-marker', e).css({ + left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px', + top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px' + }); + + $('.sl-marker', e).css({ + left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px', + top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px' + }); + + // Saturation/Luminance gradient + $('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5]))); + + // Linked elements or callback + if (typeof fb.callback == 'object') { + // Set background/foreground color + $(fb.callback).css({ + backgroundColor: fb.color, + color: fb.hsl[2] > 0.5 ? '#000' : '#fff' + }); + + // Change linked value + $(fb.callback).each(function() { + if ( $( this ).val() != fb.color) { + $( this ).val( fb.color ).change(); + } + }); + } + else if (typeof fb.callback == 'function') { + fb.callback.call(fb, fb.color); + } + } + + /* Various color utility functions */ + fb.pack = function (rgb) { + var r = Math.round(rgb[0] * 255); + var g = Math.round(rgb[1] * 255); + var b = Math.round(rgb[2] * 255); + return '#' + (r < 16 ? '0' : '') + r.toString(16) + + (g < 16 ? '0' : '') + g.toString(16) + + (b < 16 ? '0' : '') + b.toString(16); + } + + fb.HSLToRGB = function (hsl) { + var m1, m2, r, g, b; + var h = hsl[0], s = hsl[1], l = hsl[2]; + m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s; + m1 = l * 2 - m2; + return [this.hueToRGB(m1, m2, h+0.33333), + this.hueToRGB(m1, m2, h), + this.hueToRGB(m1, m2, h-0.33333)]; + } + + fb.hueToRGB = function (m1, m2, h) { + h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h); + if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; + if (h * 2 < 1) return m2; + if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6; + return m1; + } + + fb.RGBToHSL = function (rgb) { + var min, max, delta, h, s, l; + var r = rgb[0], g = rgb[1], b = rgb[2]; + min = Math.min(r, Math.min(g, b)); + max = Math.max(r, Math.max(g, b)); + delta = max - min; + l = (min + max) / 2; + s = 0; + if (l > 0 && l < 1) { + s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l)); + } + h = 0; + if (delta > 0) { + if (max == r && max != g) h += (g - b) / delta; + if (max == g && max != b) h += (2 + (b - r) / delta); + if (max == b && max != r) h += (4 + (r - g) / delta); + h /= 6; + } + return [h, s, l]; + } + + // Install mousedown handler (the others are set on the document on-demand) + $('*', e).mousedown(fb.mousedown); + + // Init color + fb.setColor('#000000'); + + // Set linked elements/callback + if (callback) { + fb.linkTo(callback); + } +} diff --git a/resources/jquery/jquery.footHovzer.css b/resources/jquery/jquery.footHovzer.css new file mode 100644 index 00000000..77d9514c --- /dev/null +++ b/resources/jquery/jquery.footHovzer.css @@ -0,0 +1,6 @@ +#jquery-foot-hovzer { + position: fixed; + bottom: 0; + width: 100%; + z-index: 1000; +} diff --git a/resources/jquery/jquery.footHovzer.js b/resources/jquery/jquery.footHovzer.js new file mode 100644 index 00000000..56fc32d4 --- /dev/null +++ b/resources/jquery/jquery.footHovzer.js @@ -0,0 +1,45 @@ +/** + * Utility to stack stuff in an overlay fixed on the bottom of the page. + * + * Usage: + * + * var hovzer = $.getFootHovzer(); + * hovzer.$.append( $myCollection ); + * hovzer.update(); + * + * + * @author Timo Tijhof, 2012 + */ +( function ( $ ) { + var $hovzer, footHovzer, prevHeight, newHeight; + + function getHovzer() { + if ( $hovzer === undefined ) { + $hovzer = $( '
' ).appendTo( 'body' ); + } + return $hovzer; + } + + footHovzer = { + update: function () { + var $body; + + $body = $( 'body' ); + if ( prevHeight === undefined ) { + prevHeight = getHovzer().outerHeight( /*includeMargin=*/true ); + $body.css( 'paddingBottom', '+=' + prevHeight + 'px' ); + } else { + newHeight = getHovzer().outerHeight( true ); + $body.css( 'paddingBottom', ( parseFloat( $body.css( 'paddingBottom' ) ) - prevHeight ) + newHeight ); + + prevHeight = newHeight; + } + } + }; + + $.getFootHovzer = function () { + footHovzer.$ = getHovzer(); + return footHovzer; + }; + +}( jQuery ) ); diff --git a/resources/jquery/jquery.form.js b/resources/jquery/jquery.form.js index 53c078f9..fdcdd15a 100644 --- a/resources/jquery/jquery.form.js +++ b/resources/jquery/jquery.form.js @@ -1,6 +1,6 @@ /*! * jQuery Form Plugin - * version: 2.52 (07-DEC-2010) + * version: 2.84 (12-AUG-2011) * @requires jQuery v1.3.2 or later * * Examples and documentation at: http://malsup.com/jquery/form/ @@ -8,7 +8,7 @@ * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ -(function($) { +;(function($) { /* Usage Note: @@ -49,22 +49,26 @@ $.fn.ajaxSubmit = function(options) { log('ajaxSubmit: skipping submit process - no element selected'); return this; } + + var method, action, url, $form = this; if (typeof options == 'function') { options = { success: options }; } - var action = this.attr('action'); - var url = (typeof action === 'string') ? $.trim(action) : ''; + method = this.attr('method'); + action = this.attr('action'); + url = (typeof action === 'string') ? $.trim(action) : ''; + url = url || window.location.href || ''; if (url) { // clean url (don't include hash vaue) url = (url.match(/^([^#]+)/)||[])[1]; } - url = url || window.location.href || ''; options = $.extend(true, { url: url, - type: this.attr('method') || 'GET', + success: $.ajaxSettings.success, + type: method || 'GET', iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' }, options); @@ -87,7 +91,7 @@ $.fn.ajaxSubmit = function(options) { if (options.data) { options.extraData = options.data; for (n in options.data) { - if(options.data[n] instanceof Array) { + if( $.isArray(options.data[n]) ) { for (var k in options.data[n]) { a.push( { name: n, value: options.data[n][k] } ); } @@ -123,7 +127,7 @@ $.fn.ajaxSubmit = function(options) { options.data = q; // data is the query string for 'post' } - var $form = this, callbacks = []; + var callbacks = []; if (options.resetForm) { callbacks.push(function() { $form.resetForm(); }); } @@ -161,14 +165,20 @@ $.fn.ajaxSubmit = function(options) { // hack to fix Safari hang (thanks to Tim Molendijk for this) // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d if (options.closeKeepAlive) { - $.get(options.closeKeepAlive, fileUpload); + $.get(options.closeKeepAlive, function() { fileUpload(a); }); } else { - fileUpload(); + fileUpload(a); } } else { - $.ajax(options); + // IE7 massage (see issue 57) + if ($.browser.msie && method == 'get') { + var ieMeth = $form[0].getAttribute('method'); + if (typeof ieMeth === 'string') + options.type = ieMeth; + } + $.ajax(options); } // fire 'notify' event @@ -177,8 +187,17 @@ $.fn.ajaxSubmit = function(options) { // private function for handling file uploads (hat tip to YAHOO!) - function fileUpload() { - var form = $form[0]; + function fileUpload(a) { + var form = $form[0], el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle; + var useProp = !!$.fn.prop; + + if (a) { + // ensure that every serialized input is still enabled + for (i=0; i < a.length; i++) { + el = $(form[a[i].name]); + el[ useProp ? 'prop' : 'attr' ]('disabled', false); + } + } if ($(':input[name=submit],:input[id=submit]', form).length) { // if there is an input with a name or id of 'submit' then we won't be @@ -187,23 +206,25 @@ $.fn.ajaxSubmit = function(options) { return; } - var s = $.extend(true, {}, $.ajaxSettings, options); + s = $.extend(true, {}, $.ajaxSettings, options); s.context = s.context || s; - var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id; - window[fn] = function() { - var f = $io.data('form-plugin-onload'); - if (f) { - f(); - window[fn] = undefined; - try { delete window[fn]; } catch(e){} - } - }; - var $io = $('